diff --git a/src/router/index.js b/src/router/index.js index 60ac0e1..a3b07ff 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -56,12 +56,24 @@ export const asyncRoutes = [ component: () => import('@/views/ModelManage/index.vue'), meta: { title: '模版管理', permissions: ['template'] }, }, + { + path: 'ModelApproval', + name: 'ModelApproval', + component: () => import('@/views/ModelApproval/index.vue'), + meta: { title: '模版审批', permissions: ['template_approval'] }, + }, { path: 'ComboManage', name: 'ComboManage', component: () => import('@/views/ComboManage/index.vue'), meta: { title: '套餐管理', permissions: ['membership_plan'] }, }, + { + path: 'VendorManage', + name: 'VendorManage', + component: () => import('@/views/VendorManage/index.vue'), + meta: { title: '厂商管理', permissions: ['vendor_manage'] }, + }, { path: 'GenerateRecord', name: 'GenerateRecord', diff --git a/src/views/ModelApproval/HandleDialog.vue b/src/views/ModelApproval/HandleDialog.vue new file mode 100644 index 0000000..cf12065 --- /dev/null +++ b/src/views/ModelApproval/HandleDialog.vue @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/ModelApproval/index.vue b/src/views/ModelApproval/index.vue new file mode 100644 index 0000000..704df2b --- /dev/null +++ b/src/views/ModelApproval/index.vue @@ -0,0 +1,134 @@ + + + 模板审批 + + + + + + + 搜索 + 重置 + + + + + 新建 + + + + + + + {{ row.price_cents ? row.price_cents / 100 : '' }} + + + + + + + + + {{ row.enabled ? '启用' : '禁用' }} + + + + + 编辑 + + 删除 + + + + + + + + + + + + + + diff --git a/src/views/ModelManage/HandleDialog.vue b/src/views/ModelManage/HandleDialog.vue index b8f5c8b..c3c30c3 100644 --- a/src/views/ModelManage/HandleDialog.vue +++ b/src/views/ModelManage/HandleDialog.vue @@ -64,6 +64,7 @@ const addRow = () => { type: 'string', excel_loc: '', enabled: true, + required: true, }) } else { formField.value.params = [ @@ -74,6 +75,7 @@ const addRow = () => { type: 'string', excel_loc: '', enabled: true, + required: true, }, ] } @@ -141,14 +143,20 @@ const delRow = (index) => { - + + + + + + @@ -159,6 +167,11 @@ const delRow = (index) => { + + + + + 删除 diff --git a/src/views/UserManage/index.vue b/src/views/UserManage/index.vue index 3a64a65..7547825 100644 --- a/src/views/UserManage/index.vue +++ b/src/views/UserManage/index.vue @@ -42,12 +42,38 @@ {{ row.roles?.map((item) => item.name)?.join(',') }} + + + {{ row.vendors?.map((item) => item.name)?.join(',') }} + + - 分配角色 - 编辑 + + 分配角色 + 编辑 - 删除 + 删除 + + + + 赠送套餐 + 充值 + + + + 分配厂商 + + + 撤销厂商 + + + @@ -75,6 +101,65 @@ @closed="isShowRoleDialog = false" @on-success="getList" /> + + + 是否给【{{ currentRow.username }}】进行充值 + 元 + + + + + + 是否给【{{ currentRow.username }}】进行赠送 + + + + + + + + + + + + + + + @@ -84,6 +169,7 @@ import dayjs from 'dayjs' import RPC from '@/utils/rpc' import HandleDialog from './HandleDialog.vue' import RoleDialog from './RoleDialog.vue' +import { useUserStore } from '@/stores/user' const rowType = ref('') const currentRow = ref(null) @@ -108,6 +194,137 @@ RPC.post('/role/list', { page: 1, limit: -1 }).then((res) => { roleList.value = res.rows || [] }) +const pay_amount = ref(0) +const isShowPayDialog = ref(false) +const payLoading = ref(false) +const payClosed = () => { + isShowPayDialog.value = false + currentRow.value = {} +} +const pay = (row) => { + currentRow.value = row + isShowPayDialog.value = true + pay_amount.value = 0 +} + +const payConfirm = () => { + if (!pay_amount.value) { + ElMessage.warning('请填写充值金额') + return + } + payLoading.value = true + RPC.post('/wallet/admin/recharge_and_pay', { + user_id: currentRow.value.id, + amount_cents: pay_amount.value * 100, + pay_channel: 'admin', + remark: '手动充值', + }) + .then(() => { + isShowPayDialog.value = false + ElMessage.success('充值成功') + getList() + }) + .finally(() => { + payLoading.value = false + }) +} + +const planList = ref([]) +RPC.post('/membership_plan/list', { page: 0, limit: -1, orderby: [{ sort: 'asc' }] }).then( + (res) => { + planList.value = res.rows || [] + }, +) + +const order_id = ref(0) +const isShowOrderDialog = ref(false) +const orderLoading = ref(false) +const orderClosed = () => { + isShowOrderDialog.value = false + currentRow.value = {} + order_id.value = null +} +const order = (row) => { + currentRow.value = row + isShowOrderDialog.value = true + order_id.value = null +} + +const orderConfirm = () => { + if (!order_id) { + ElMessage.warning('请选择赠送套餐') + return + } + orderLoading.value = true + RPC.post('/membership/admin/order/create_and_pay', { + user_id: currentRow.value.id, + plan_id: order_id.value, + pay_channel: 'admin', + remark: '管理员手动完成', + }) + .then(() => { + isShowOrderDialog.value = false + ElMessage.success('赠送成功') + getList() + }) + .finally(() => { + orderLoading.value = false + }) +} + +const isShowVendorDialog = ref(false) +const vendorLoading = ref(false) +const vendorClosed = () => { + isShowVendorDialog.value = false + currentRow.value = {} + vendorSelected.value = [] +} +const currentType = ref('') +const vendor = (row, type) => { + if (type === 'authorize') { + vendorListFilter.value = vendorList.value + vendorSelected.value = row.vendors.map((item) => item.vendor_id) + } + if (type === 'revoke') { + vendorListFilter.value = row.vendors.map((item) => { + return { + id: item.vendor_id, + ...item, + } + }) + } + currentType.value = type + currentRow.value = row + isShowVendorDialog.value = true +} + +const vendorConfirm = () => { + if (vendorSelected?.value.length <= 0) { + ElMessage.warning('请选择厂商') + return + } + vendorLoading.value = true + RPC.post(`/vendor_user_${currentType.value}`, { + user_id: currentRow.value.id, + vendor_ids: vendorSelected.value, + }) + .then(() => { + isShowVendorDialog.value = false + ElMessage.success('操作成功') + getList() + }) + .finally(() => { + vendorLoading.value = false + }) +} + +const vendorList = ref([]) +const vendorListFilter = ref([]) +const vendorSelected = ref([]) +RPC.post('/vendor/list', { page: 1, limit: -1 }).then((res) => { + vendorList.value = res.rows || [] +}) + const { loading, tableData, diff --git a/src/views/VendorManage/HandleDialog.vue b/src/views/VendorManage/HandleDialog.vue new file mode 100644 index 0000000..fa6529c --- /dev/null +++ b/src/views/VendorManage/HandleDialog.vue @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/VendorManage/index.vue b/src/views/VendorManage/index.vue new file mode 100644 index 0000000..5f06c0a --- /dev/null +++ b/src/views/VendorManage/index.vue @@ -0,0 +1,128 @@ + + + 厂商管理 + + + + + + + 搜索 + 重置 + + + + + 新建 + + + + + + + + + + {{ row.enabled ? '启用' : '禁用' }} + + + + + 编辑 + + 删除 + + + + + + + + + + + + + +