chatgpt后台 用户管理和套餐管理

This commit is contained in:
xielue 2023-05-23 12:37:57 +08:00
parent 019366ab58
commit 130edc8f39
9 changed files with 804 additions and 28 deletions

View File

@ -226,14 +226,25 @@ export default {
return;
}
let delParms = {};
let url = this.options.actions.delete;
if (url.indexOf('batchDelete') != -1) {
delParms = {
ids: ids
}
} else {
delParms = {
id: ids[0]
}
}
this.$mk.confirm('您确定要删除吗?').then(type => { //
if (type == 'confirm') { //
this.$mk.post({
url: this.options.actions.delete, //
url: url, //
loading: "删除中...", //
data: {
ids: ids // id
},
data: delParms,
useBigInt: true
}).then(() => { //
this.$mk.success("删除成功"); //

View File

@ -0,0 +1,198 @@
<template>
<basic-page-edit :desc="desc" :dataId="getDataId()" :options="pageOptions"></basic-page-edit>
</template>
<script>
import BASE_URL from '@/services/mes/api.js';
export default {
i18n: require('./i18n'),
components: {},
props: {
pageMode: {
type: String,
default: "edit"
},
dataId: {
}
},
data() {
return {
pageOptions: {}
};
},
computed: {
desc() {
return this.$t('editPageDesc')
}
},
created() {
this.optionsInit();
this.dataInit();
},
//
methods: {
optionsInit() {
//
var pageData = {
//
currentConfigName: "",
// ID
currentBeid: 0,
addPageUrl: "/ChatgptCard/ChatgptCardAdd",
editPageUrl: "/ChatgptCard/ChatgptCardUpdate/",
listPageUrl: "/ChatgptCard/ChatgptCardList",
uploadDefaultImg: null,
detailDataFieldName: "chatgpt_card",
actions: {
ChatgptCardDetail: `${BASE_URL.BASE_URL}/ChatgptCard/v1/chatgpt/card/detail`,
ChatgptCardCreate: `${BASE_URL.BASE_URL}/ChatgptCard/v1/chatgpt/card/create`,
ChatgptCardUpdate: `${BASE_URL.BASE_URL}/ChatgptCard/v1/chatgpt/card/update`,
ChatgptCardDelete: `${BASE_URL.BASE_URL}/ChatgptCard/v1/chatgpt/card/detele`,
},
keyName: 'id',
//
isEdit: false,
//
formOptions: {
data: {
},
//
titleWidth: 150,
//
titleAlign: 'right',
//
rules: {
name: [
{ required: true, message: '请输入套餐名' }
]
},
//
items: [
{ field: 'name', title: '套餐名', span: 24, itemRender: { name: '$input' } },
{ field: 'code', title: '编码',span: 24 , itemRender: { name: '$input' } },
{ field: 'description', title: '描述', span: 24, itemRender: { name: '$input' } },
{ field: 'count', dataRule:{type:"integer"}, title: '次数', span: 24 , itemRender: { name: '$input',props:{type:"integer"} } },
{ field: 'valid_time', dataRule: { type: "timestamp" }, title: '有效期', span: 24 , itemRender: { name: '$input',props:{type:"date"} } },
]
},
//
addModeItems: [
],
};
pageData.formOptions.items.forEach(item=>{
pageData.formOptions.data[item.field] = "";
});
pageData.actions.get = pageData.actions.ChatgptCardDetail;
pageData.actions.create = pageData.actions.ChatgptCardCreate;
pageData.actions.update = pageData.actions.ChatgptCardUpdate;
//
pageData.formOptions = Object.assign({}, this.$mk.config.defaults.formOptions, pageData.formOptions);
this.pageOptions = pageData;
},
dataInit() {
// id
let dataId = this.getDataId();
// id
if (dataId) {
const json = `{"id":${dataId}}`;
this.$mk.post({
url: this.pageOptions.actions.get,
loading: "加载中...",
data: json,
config: {
headers: {
'Content-Type': 'application/json'
}
}
}).then(a => {
let detailDataFieldName = this.pageOptions.detailDataFieldName;
if (a.data[detailDataFieldName].create_time) {
a.data[detailDataFieldName].create_time = new Date(a.data[detailDataFieldName].create_time * 1000);
}
if (a.data[detailDataFieldName].update_time) {
a.data[detailDataFieldName].update_time = new Date(a.data[detailDataFieldName].update_time * 1000);
}
if (a.data[detailDataFieldName].valid_time) {
a.data[detailDataFieldName].valid_time = new Date(a.data[detailDataFieldName].valid_time * 1000);
}
this.pageOptions.formOptions.data = a.data[detailDataFieldName];
this.$forceUpdate()
}).catch((a) => {
this.$mk.error(a.data.msg);
});
this.pageOptions.isEdit = true;
this.$forceUpdate()
} else {
// id
this.addModeItems.forEach(item => {
this.pageOptions.formOptions.items.push(item);
})
}
},
// id
getDataId() {
let dataId = this.dataId;
if (this.$route.params.id) {
dataId = this.$route.params.id;
}
if (!dataId) {
dataId = 0;
}
return dataId;
}
},
//
watch: {
}
};
</script>

View File

@ -0,0 +1,118 @@
<template>
<basic-page-list :desc="desc" :options="pageOptions"></basic-page-list>
</template>
<script>
import BASE_URL from '@/services/mes/api.js';
export default {
i18n: require("./i18n"),
props: {
},
data() {
return {
pageOptions: {}
};
},
//
computed: {
//
desc() {
return this.$t("pageDesc");
}
},
//
created() {
this.optionsInit();
},
//
methods: {
optionsInit() {
//
var pageData = { //
keyName: 'id', //
listFieldName: 'ChatgptCard',
addPageUrl: "/ChatgptCard/ChatgptCardAdd",
editPageUrl: "/ChatgptCard/ChatgptCardUpdate/",
//
actions: { // Api
ChatgptCardList: `${BASE_URL.BASE_URL}/ChatgptCard/v1/chatgpt/card/list`, //
ChatgptCardBatchDelete: `${BASE_URL.BASE_URL}/ChatgptCard/v1/chatgpt/card/detele`,
},
start_time: 0, //
end_time: 0, //
//
searchFormData: {
title: '',
desc: '',
},
//
searchRules: [
{ key: "realname", mode: "like" }
],
//
searchFormItems: [ //
{ field: 'name', title: '套餐名', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入套餐名' } } },
{ span: 8, slots: { default: 'date' } }, //
{
align: 'right', span: 4, itemRender: { //
name: '$buttons', children: [{ props: { type: 'submit', content: '搜索', status: 'primary' } }, //
{ props: { type: 'reset', content: '重置' } }]
}
}
],
//
gridOptions: { //
height: '100%', // 100%
stripe: true, //
id: 'datagrid_1', //
columns: [
{ type: 'checkbox', width: 50 }, //
{ title: '操作', slots: { default: 'op' }, width: 120 },
{ field: 'name', sortable: true, title: '套餐名', width: 250 },
{ field: 'code', sortable: true, title: '编码', width: 250 },
{ field: 'description', sortable: true, title: '描述', width: 250 },
{ field: 'count', sortable: true, title: '次数', width: 250 },
{ field: 'valid_time', sortable: true, title: '有效期',formatter: 'formatDate', width: 250 },
{ field: 'create_time', formatter: 'formatDate', width: 160, sortable: true, title: '创建时间', showHeaderOverflow: true }, //
{ field: 'update_time', formatter: 'formatDate', width: 160, sortable: true, title: '更新时间', showHeaderOverflow: true }, //
]
}
};
pageData.actions.getList = pageData.actions.ChatgptCardList;
pageData.actions.delete = pageData.actions.ChatgptCardBatchDelete;
pageData.gridOptions = Object.assign({}, this.$mk.config.defaults.gridOptions, pageData.gridOptions); //
this.pageOptions = pageData;
},
},
watch: {
}
};
</script>

View File

@ -0,0 +1,14 @@
module.exports = {
messages: {
CN: {
pageDesc:'单位管理'
},
HK: {
pageDesc:'单位管理'
},
US: {
pageDesc:'单位管理'
}
}
}

View File

@ -0,0 +1,200 @@
<template>
<basic-page-edit :desc="desc" :dataId="getDataId()" :options="pageOptions"></basic-page-edit>
</template>
<script>
import BASE_URL from '@/services/mes/api.js';
export default {
i18n: require('./i18n'),
components: {},
props: {
pageMode: {
type: String,
default: "edit"
},
dataId: {
}
},
data() {
return {
pageOptions: {}
};
},
computed: {
desc() {
return this.$t('editPageDesc')
}
},
created() {
this.optionsInit();
this.dataInit();
},
//
methods: {
optionsInit() {
//
var pageData = {
//
currentConfigName: "",
// ID
currentBeid: 0,
addPageUrl: "/User/UserAdd",
editPageUrl: "/User/UserUpdate/",
listPageUrl: "/User/UserList",
uploadDefaultImg: null,
detailDataFieldName: "user",
actions: {
UserDetail: `${BASE_URL.BASE_URL}/User/v1/user/detail`, //
UserCreate: `${BASE_URL.BASE_URL}/User/v1/user/create`, //
UserUpdate: `${BASE_URL.BASE_URL}/User/v1/user/update`, //
UserDelete: `${BASE_URL.BASE_URL}/User/v1/user/detele`, //
},
keyName: 'id',
//
isEdit: false,
//
formOptions: {
data: {
// =============================== Start ===============================
id: 0,
code: "",
title: "",
name: "",
create_uid: 0,
update_uid: 0,
create_time: new Date(2100, 1, 1).getTime() / 10000,
update_time: new Date(2100, 1, 1).getTime() / 10000,
// =============================== End ===============================
},
//
titleWidth: 150,
//
titleAlign: 'right',
//
rules: {
// =============================== Start ===============================
realname: [
{ required: true, message: '请输入姓名' }
]
// =============================== End ===============================
},
//
items: [
{ field: 'realname', title: '姓名', span: 24, itemRender: { name: '$input' } },
{ field: 'nickname', title: '昵称', span: 24, itemRender: { name: '$input' } },
{ field: 'mobile',dataRule:{type:"integer"}, title: '手机号', span: 24, itemRender: { name: '$input' } },
{ field: 'email', title: 'email', span: 24, itemRender: { name: '$input' } },
]
},
//
addModeItems: [
],
};
pageData.actions.get = pageData.actions.UserDetail;
pageData.actions.create = pageData.actions.UserCreate;
pageData.actions.update = pageData.actions.UserUpdate;
//
pageData.formOptions = Object.assign({}, this.$mk.config.defaults.formOptions, pageData.formOptions);
this.pageOptions = pageData;
},
dataInit() {
// id
let dataId = this.getDataId();
// id
if (dataId) {
const json = `{"id":${dataId}}`;
this.$mk.post({
url: this.pageOptions.actions.get,
loading: "加载中...",
data: json,
config: {
headers: {
'Content-Type': 'application/json'
}
}
}).then(a => {
let detailDataFieldName = this.pageOptions.detailDataFieldName;
if (a.data[detailDataFieldName].create_time) {
a.data[detailDataFieldName].create_time = new Date(a.data[detailDataFieldName].create_time * 1000);
}
if (a.data[detailDataFieldName].update_time) {
a.data[detailDataFieldName].update_time = new Date(a.data[detailDataFieldName].update_time * 1000);
}
this.pageOptions.formOptions.data = a.data[detailDataFieldName];
this.$forceUpdate()
}).catch((a) => {
this.$mk.error(a.data.msg);
});
this.pageOptions.isEdit = true;
this.$forceUpdate()
} else {
// id
this.addModeItems.forEach(item => {
this.pageOptions.formOptions.items.push(item);
})
}
},
// id
getDataId() {
let dataId = this.dataId;
if (this.$route.params.id) {
dataId = this.$route.params.id;
}
if (!dataId) {
dataId = 0;
}
return dataId;
}
},
//
watch: {
}
};
</script>

View File

@ -0,0 +1,117 @@
<template>
<basic-page-list :desc="desc" :options="pageOptions"></basic-page-list>
</template>
<script>
import BASE_URL from '@/services/mes/api.js';
export default {
i18n: require("./i18n"),
props: {
},
data() {
return {
pageOptions: {}
};
},
//
computed: {
//
desc() {
return this.$t("pageDesc");
}
},
//
created() {
this.optionsInit();
},
//
methods: {
optionsInit() {
//
var pageData = { //
keyName: 'id', //
listFieldName: 'User',
addPageUrl: "/User/UserAdd",
editPageUrl: "/User/UserUpdate/",
//
actions: { // Api
UserList: `${BASE_URL.BASE_URL}/User/v1/user/list`, //
UserBatchDelete: `${BASE_URL.BASE_URL}/User/v1/user/batchDelete`,
},
start_time: 0, //
end_time: 0, //
//
searchFormData: {
title: '',
desc: '',
},
//
searchRules: [
{ key: "realname", mode: "like" }
],
//
searchFormItems: [ //
{ field: 'realname', title: '姓名', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入姓名' } } },
{ field: 'mobile', title: '手机号', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入手机号' } } },
{ span: 8, slots: { default: 'date' } }, //
{
align: 'right', span: 4, itemRender: { //
name: '$buttons', children: [{ props: { type: 'submit', content: '搜索', status: 'primary' } }, //
{ props: { type: 'reset', content: '重置' } }]
}
}
],
//
gridOptions: { //
height: '100%', // 100%
stripe: true, //
id: 'datagrid_1', //
columns: [
{ type: 'checkbox', width: 50 }, //
{ title: '操作', slots: { default: 'op' }, width: 120 },
{ field: 'realname', sortable: true, title: '姓名', width: 250 },
{ field: 'nickname', sortable: true, title: '昵称', width: 250 },
{ field: 'mobile', sortable: true, title: '手机号', width: 250 },
{ field: 'email', sortable: true, title: 'email', width: 250 },
{ field: 'create_time', formatter: 'formatDate', width: 160, sortable: true, title: '创建时间', showHeaderOverflow: true }, //
{ field: 'update_time', formatter: 'formatDate', width: 160, sortable: true, title: '更新时间', showHeaderOverflow: true }, //
]
}
};
pageData.actions.getList = pageData.actions.UserList;
pageData.actions.delete = pageData.actions.UserBatchDelete;
pageData.gridOptions = Object.assign({}, this.$mk.config.defaults.gridOptions, pageData.gridOptions); //
this.pageOptions = pageData;
},
},
watch: {
}
};
</script>

View File

@ -0,0 +1,14 @@
module.exports = {
messages: {
CN: {
pageDesc:'单位管理'
},
HK: {
pageDesc:'单位管理'
},
US: {
pageDesc:'单位管理'
}
}
}

View File

@ -0,0 +1,99 @@
// 视图组件
const view = {
tabs: () => import('@/layouts/tabs'),
blank: () => import('@/layouts/BlankView'),
page: () => import('@/layouts/PageView')
}
// 路由组件注册
const routerMap = {
};
routerMap['basic']= {
name: 'basic',
icon: 'idcard',
component: view.blank,
meta: {
},
authority: {
permission: [],
}
};
routerMap['UserList']= {
name: '用户管理',
icon: 'idcard',
path: `/User/UserList`,
meta:{
page:{ cacheAble:false}
},
component: () => import(`@/pages/Middle/Chatgpt/User/User/List`),
authority: {
permission: [],
}
};
routerMap['UserCreate']= {
name: '新增用户',
icon: 'idcard',
path: `/User/UserAdd`,
component: () => import(`@/pages/Middle/Chatgpt/User/User/Edit`),
meta: {
invisible: true,
},
authority: {
permission: [],
}
};
routerMap['UserUpdate']= {
name: '编辑用户',
icon: 'idcard',
path: `/User/UserUpdate/:id`,
component: () => import(`@/pages/Middle/Chatgpt/User/User/Edit`),
meta: {
invisible: true,
},
authority: {
permission: [],
}
};
routerMap['ChatgptCardList']= {
name: '套餐管理',
icon: 'idcard',
path: `/ChatgptCard/ChatgptCardList`,
meta:{
page:{ cacheAble:false}
},
component: () => import(`@/pages/Middle/Chatgpt/ChatgptCard/ChatgptCard/List`),
authority: {
permission: [],
}
};
routerMap['ChatgptCardCreate']= {
name: '新增套餐',
icon: 'idcard',
path: `/ChatgptCard/ChatgptCardAdd`,
component: () => import(`@/pages/Middle/Chatgpt/ChatgptCard/ChatgptCard/Edit`),
meta: {
invisible: true,
},
authority: {
permission: [],
}
};
routerMap['ChatgptCardUpdate']= {
name: '编辑套餐',
icon: 'idcard',
path: `/ChatgptCard/ChatgptCardUpdate/:id`,
component: () => import(`@/pages/Middle/Chatgpt/ChatgptCard/ChatgptCard/Edit`),
meta: {
invisible: true,
},
authority: {
permission: [],
}
};
export default routerMap

View File

@ -13,6 +13,7 @@ import BaseAdminRouterMap from '@/router/Middle/Base/BaseAdmin/router.map.js'
import bathroom from '@/router/Middle/bathroom/router.map.js'
import mes from '@/router/Middle/Mes/router.map.js'
import Chatgpt from '@/router/Middle/Chatgpt/router.map.js'
const routerMap = Object.assign({
@ -27,8 +28,12 @@ const routerMap = Object.assign({
BaseAdminRouterMap,
//MES
mes,
bathroom
//报价
bathroom,
//ChatGPT
Chatgpt