diff --git a/apps/web-antd/src/views/mp/user/data.ts b/apps/web-antd/src/views/mp/user/data.ts new file mode 100644 index 000000000..8aa87c491 --- /dev/null +++ b/apps/web-antd/src/views/mp/user/data.ts @@ -0,0 +1,150 @@ +import type { VbenFormSchema } from '#/adapter/form'; +import type { VxeTableGridOptions } from '#/adapter/vxe-table'; +import type { MpAccountApi } from '#/api/mp/account'; + +import { h } from 'vue'; + +import { Tag } from 'ant-design-vue'; + +import { getSimpleAccountList } from '#/api/mp/account'; + +let accountList: MpAccountApi.AccountSimple[] = []; +getSimpleAccountList().then((data) => (accountList = data)); + +/** 修改的表单 */ +export function useFormSchema(): VbenFormSchema[] { + return [ + { + fieldName: 'id', + component: 'Input', + dependencies: { + triggerFields: [''], + show: () => false, + }, + }, + { + fieldName: 'nickname', + label: '昵称', + component: 'Input', + componentProps: { + placeholder: '请输入昵称', + }, + }, + { + fieldName: 'remark', + label: '备注', + component: 'Textarea', + componentProps: { + placeholder: '请输入备注', + }, + }, + ]; +} + +/** 列表的搜索表单 */ +export function useGridFormSchema(): VbenFormSchema[] { + return [ + { + fieldName: 'accountId', + label: '公众号', + component: 'Select', + componentProps: { + options: accountList.map((item) => ({ + label: item.name, + value: item.id, + })), + placeholder: '请选择公众号', + allowClear: true, + }, + defaultValue: accountList[0]?.id, + }, + { + fieldName: 'openid', + label: '用户标识', + component: 'Input', + componentProps: { + placeholder: '请输入用户标识', + allowClear: true, + }, + }, + { + fieldName: 'nickname', + label: '昵称', + component: 'Input', + componentProps: { + placeholder: '请输入昵称', + allowClear: true, + }, + }, + ]; +} + +/** 列表的字段 */ +export function useGridColumns(): VxeTableGridOptions['columns'] { + return [ + { + field: 'id', + title: '编号', + minWidth: 100, + }, + { + field: 'openid', + title: '用户标识', + minWidth: 260, + }, + { + field: 'headImageUrl', + title: '用户头像', + minWidth: 80, + cellRender: { + name: 'CellImage', + }, + }, + { + field: 'nickname', + title: '昵称', + minWidth: 120, + }, + { + field: 'remark', + title: '备注', + minWidth: 120, + }, + { + field: 'tagIds', + title: '标签', + minWidth: 200, + cellRender: { + name: 'CellTags', + }, + }, + { + field: 'subscribeStatus', + title: '订阅状态', + minWidth: 100, + align: 'center', + cellRender: { + name: 'CellRender', + props: ({ row }: { row: any }) => ({ + children: h( + Tag, + { color: row.subscribeStatus === 0 ? 'success' : 'error' }, + () => (row.subscribeStatus === 0 ? '已订阅' : '未订阅'), + ), + }), + }, + }, + { + field: 'subscribeTime', + title: '订阅时间', + minWidth: 180, + formatter: 'formatDateTime', + }, + { + title: '操作', + width: 80, + fixed: 'right', + slots: { default: 'actions' }, + }, + ]; +} diff --git a/apps/web-antd/src/views/mp/user/index.vue b/apps/web-antd/src/views/mp/user/index.vue index ff762f40e..6a13c3ff5 100644 --- a/apps/web-antd/src/views/mp/user/index.vue +++ b/apps/web-antd/src/views/mp/user/index.vue @@ -1,29 +1,128 @@ diff --git a/apps/web-antd/src/views/mp/user/modules/form.vue b/apps/web-antd/src/views/mp/user/modules/form.vue new file mode 100644 index 000000000..03a968a2a --- /dev/null +++ b/apps/web-antd/src/views/mp/user/modules/form.vue @@ -0,0 +1,80 @@ + + +