From 64d0af4bd865b467a75b67db9404679f2d9fa762 Mon Sep 17 00:00:00 2001 From: hzhfsa <1957214281@qq.com> Date: Fri, 17 Nov 2023 17:14:20 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E7=BC=96=E8=BE=91=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deliver-front/vue/components.d.ts | 2 - deliver-front/vue/src/utils/date.ts | 81 ++++++++++++++----- .../vue/src/views/Channel/type/index.ts | 2 +- .../views/Message/components/addTemplate.vue | 4 +- .../Message/components/modifyTemplate.vue | 76 ++++++++++++----- deliver-front/vue/src/views/Message/index.vue | 29 ++----- .../vue/src/views/Message/type/index.ts | 6 +- 7 files changed, 128 insertions(+), 72 deletions(-) diff --git a/deliver-front/vue/components.d.ts b/deliver-front/vue/components.d.ts index c257409a..1fc58479 100644 --- a/deliver-front/vue/components.d.ts +++ b/deliver-front/vue/components.d.ts @@ -13,8 +13,6 @@ declare module 'vue' { ACard: typeof import('ant-design-vue/es')['Card'] ACardMeta: typeof import('ant-design-vue/es')['CardMeta'] ACol: typeof import('ant-design-vue/es')['Col'] - ADescriptions: typeof import('ant-design-vue/es')['Descriptions'] - ADescriptionsItem: typeof import('ant-design-vue/es')['DescriptionsItem'] AForm: typeof import('ant-design-vue/es')['Form'] AFormItem: typeof import('ant-design-vue/es')['FormItem'] AInput: typeof import('ant-design-vue/es')['Input'] diff --git a/deliver-front/vue/src/utils/date.ts b/deliver-front/vue/src/utils/date.ts index 0e6a01ea..df66de18 100644 --- a/deliver-front/vue/src/utils/date.ts +++ b/deliver-front/vue/src/utils/date.ts @@ -1,4 +1,10 @@ -import type { messageTemplate, updateTemp } from '@/views/Message/type' +import { getApp, getMessageType } from '@/api/message' +import type { messageTemplate } from '@/views/Message/type' + +interface Channel { + value: string + label: string +} export const getDate = (d): string => { const date = new Date(d) @@ -30,27 +36,60 @@ export const getChannelType = (s: string): number => { } export const getUsersType = (s: string): number => { - const usersarr = ['企业账号', '电话', '邮箱', '平台 UserId'] + const usersarr = ['企业账号', '电话', '邮箱', '平台userId'] return usersarr.indexOf(s) } -export const getAllMessage = (mod: updateTemp, record: messageTemplate): void => { - mod.templateId = record.templateId - mod.templateName = record.templateName - mod.pushRange = getPushRange(record.pushRange as string) - mod.usersType = getUsersType(record.usersType as string) - mod.appId = record.appName - mod.templateStatus = record.templateStatus as number - mod.channelType = record.channelType - mod.messageType = record.messageType -} +export const getAllMessage = (mod, record: messageTemplate): void => { + // 表格渲染数据 + mod.updateTemp.templateId = record.templateId + mod.updateTemp.templateName = record.templateName + mod.updateTemp.pushRange = getPushRange(record.pushRange as string) + mod.updateTemp.usersType = getUsersType(record.usersType as string) + 1 + mod.updateTemp.appId = record.appName + mod.updateTemp.templateStatus = record.templateStatus as number + mod.updateTemp.channelType = record.channelType + mod.updateTemp.messageType = record.messageType + + // 选项渲染 + mod.messageData.length = 0 + mod.appData.length = 0 -// templateId: undefined, -// templateName: '', -// pushRange: undefined, -// usersType: undefined, -// pushWays: '', -// templateStatus: 0, -// appId: undefined, -// channelType: undefined, -// messageType: '' + const Data: Channel[] = [ + { value: '1', label: '电话' }, + { value: '2', label: '短信' }, + { value: '3', label: '邮件' }, + { value: '4', label: '钉钉' }, + { value: '5', label: '企业微信' }, + { value: '6', label: '飞书' } + ] + const user = getUsersType(record.usersType as string) + if (user === 1) { + mod.channelData = [...Data] + } else if (user === 2) { + mod.channelData = Data.filter(item => item.value !== '3') + } else if (user === 3) { + mod.channelData = Data.filter(item => item.value === '3') + } else if (user === 4) { + mod.channelData = Data.slice(3) + } + + getMessageType({ channelType: getChannelType(record.channelType as string) }) + .then(res => { + res.data.forEach(item => { + mod.messageData.push(item) + }) + }) + .catch(err => { + console.error('An error occurred:', err) + }) + getApp({ channelType: getChannelType(record.channelType as string) }) + .then(res => { + res.data.forEach(item => { + mod.appData.push(item) + }) + }) + .catch(err => { + console.error('An error occurred:', err) + }) +} diff --git a/deliver-front/vue/src/views/Channel/type/index.ts b/deliver-front/vue/src/views/Channel/type/index.ts index 04646f2d..51f2ebe5 100644 --- a/deliver-front/vue/src/views/Channel/type/index.ts +++ b/deliver-front/vue/src/views/Channel/type/index.ts @@ -127,7 +127,7 @@ export interface addTemp { } // 修改接口 -export interface updateTemp { +export interface modiTemp { /** * 模板id */ diff --git a/deliver-front/vue/src/views/Message/components/addTemplate.vue b/deliver-front/vue/src/views/Message/components/addTemplate.vue index 2480ef72..671a4a65 100644 --- a/deliver-front/vue/src/views/Message/components/addTemplate.vue +++ b/deliver-front/vue/src/views/Message/components/addTemplate.vue @@ -54,7 +54,7 @@ const validatePass = async (_rule: Rule): Promise => { const rules: Record = { templateName: [ { required: true, message: '请输入模板名', trigger: 'change' }, - { min: 3, max: 20, message: '长度在 3 到 20 个字符', trigger: 'blur' } + { min: 1, max: 20, message: '长度在 1 到 20 个字符', trigger: 'blur' } ], pushRange: [{ required: true, message: '请选择推送范围', trigger: 'change' }], usersType: [{ required: true, message: '请选择用户类型', trigger: 'change' }], @@ -278,7 +278,7 @@ defineExpose({ - + 确认新建 重置 diff --git a/deliver-front/vue/src/views/Message/components/modifyTemplate.vue b/deliver-front/vue/src/views/Message/components/modifyTemplate.vue index 29a4517e..71e945ca 100644 --- a/deliver-front/vue/src/views/Message/components/modifyTemplate.vue +++ b/deliver-front/vue/src/views/Message/components/modifyTemplate.vue @@ -1,7 +1,7 @@ @@ -271,9 +307,9 @@ defineExpose({ - + 确认修改 - 重置 + 重置 diff --git a/deliver-front/vue/src/views/Message/index.vue b/deliver-front/vue/src/views/Message/index.vue index 5079cdd5..26641300 100644 --- a/deliver-front/vue/src/views/Message/index.vue +++ b/deliver-front/vue/src/views/Message/index.vue @@ -8,8 +8,8 @@ import type { messageTemplate, searchMessage } from './type' import searchForm from './components/searchForm.vue' import addTemplate from './components/addTemplate.vue' import modifyTemplate from './components/modifyTemplate.vue' -import { addTemplatePages, deleteTemplate, getApp, getMessageType, getTemplatePages, updateStatus } from '@/api/message' -import { getAllMessage, getChannelType, getDate } from '@/utils/date' +import { addTemplatePages, deleteTemplate, getTemplatePages, updateStatus } from '@/api/message' +import { getAllMessage, getDate } from '@/utils/date' import { useStore } from '@/store' /** @@ -133,13 +133,14 @@ const saveTemplate = (): void => { const { channelType, messageType, ...rest } = addtemplate.value.templateItem const savetemplate = { ...rest } console.warn(savetemplate) + addtemplate.value.iconLoading = true addTemplatePages(savetemplate) .then(res => { if (res.code === 200) { - void message.success('新增成功~ (*^▽^*)') + addtemplate.value.iconLoading = false addtemplate.value.open = false + void message.success('新增成功~ (*^▽^*)') searchTemplate({ opt: 2 }) // 更新表单 - addtemplate.value.iconLoading = false } }) .catch(err => { @@ -261,26 +262,8 @@ const changeStatus = (id: number, status: number | boolean): void => { const startModify = (record): void => { modifytemplate.value.openModify = true console.log(record) - getAllMessage(modifytemplate.value.updateTemp, record) + getAllMessage(modifytemplate.value, record) console.log(modifytemplate.value.updateTemp) - getMessageType({ channelType: getChannelType(record.channelType) }) - .then(res => { - res.data.forEach(item => { - modifytemplate.value.messageData.push(item) - }) - }) - .catch(err => { - console.error('An error occurred:', err) - }) - getApp({ channelType: getChannelType(record.channelType) }) - .then(res => { - res.data.forEach(item => { - modifytemplate.value.appData.push(item) - }) - }) - .catch(err => { - console.error('An error occurred:', err) - }) } /// 查询操作 diff --git a/deliver-front/vue/src/views/Message/type/index.ts b/deliver-front/vue/src/views/Message/type/index.ts index d264a187..ca5f4e95 100644 --- a/deliver-front/vue/src/views/Message/type/index.ts +++ b/deliver-front/vue/src/views/Message/type/index.ts @@ -23,7 +23,7 @@ export interface messageTemplate { /** * 渠道选择 */ - channelType: number + channelType: number | string /** * 消息类型 */ @@ -127,7 +127,7 @@ export interface addTemp { } // 修改接口 -export interface updateTemp { +export interface modiTemp { /** * 模板id */ @@ -151,7 +151,7 @@ export interface updateTemp { /** * 渠道选择 */ - channelType?: string | undefined + channelType?: string | undefined | number /** * 消息类型 */ -- Gitee From 6ab6d98a57723c06ec09c36a888a17350090f1ea Mon Sep 17 00:00:00 2001 From: hzhfsa <1957214281@qq.com> Date: Fri, 17 Nov 2023 17:35:03 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20=E6=93=8D=E4=BD=9C=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deliver-front/vue/src/views/Message/index.vue | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/deliver-front/vue/src/views/Message/index.vue b/deliver-front/vue/src/views/Message/index.vue index 26641300..16147778 100644 --- a/deliver-front/vue/src/views/Message/index.vue +++ b/deliver-front/vue/src/views/Message/index.vue @@ -52,7 +52,7 @@ const columns: TableColumnsType = [ title: '操作', key: 'operation', fixed: 'right', - width: 200 + width: 270 } ] @@ -430,6 +430,9 @@ const a = computed(() => { 编辑 + + 测试发送 + 删除 @@ -449,6 +452,7 @@ const a = computed(() => { @change="change" showSizeChanger :locale="locale" + :show-total="total => `共 ${total} 条数据`" /> -- Gitee From fac4b78fe8a120a149ec0483baa03374c964faf3 Mon Sep 17 00:00:00 2001 From: hzhfsa <1957214281@qq.com> Date: Fri, 17 Nov 2023 20:43:00 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat:=20=E6=B5=8B=E8=AF=95=E5=8F=91?= =?UTF-8?q?=E9=80=81=E9=A1=B5=E9=9D=A2=E6=90=AD=E5=BB=BA=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deliver-front/vue/components.d.ts | 4 + deliver-front/vue/src/utils/date.ts | 13 ++ .../src/views/Message/components/sendTest.vue | 115 ++++++++++++++++++ deliver-front/vue/src/views/Message/index.vue | 14 +-- .../vue/src/views/Message/type/index.ts | 19 +++ 5 files changed, 155 insertions(+), 10 deletions(-) create mode 100644 deliver-front/vue/src/views/Message/components/sendTest.vue diff --git a/deliver-front/vue/components.d.ts b/deliver-front/vue/components.d.ts index 1fc58479..87aa8790 100644 --- a/deliver-front/vue/components.d.ts +++ b/deliver-front/vue/components.d.ts @@ -13,9 +13,12 @@ declare module 'vue' { ACard: typeof import('ant-design-vue/es')['Card'] ACardMeta: typeof import('ant-design-vue/es')['CardMeta'] ACol: typeof import('ant-design-vue/es')['Col'] + ADrawer: typeof import('ant-design-vue/es')['Drawer'] AForm: typeof import('ant-design-vue/es')['Form'] AFormItem: typeof import('ant-design-vue/es')['FormItem'] AInput: typeof import('ant-design-vue/es')['Input'] + AInputGroup: typeof import('ant-design-vue/es')['InputGroup'] + AInputNumber: typeof import('ant-design-vue/es')['InputNumber'] ALayout: typeof import('ant-design-vue/es')['Layout'] ALayoutContent: typeof import('ant-design-vue/es')['LayoutContent'] ALayoutHeader: typeof import('ant-design-vue/es')['LayoutHeader'] @@ -35,6 +38,7 @@ declare module 'vue' { ASubMenu: typeof import('ant-design-vue/es')['SubMenu'] ASwitch: typeof import('ant-design-vue/es')['Switch'] ATable: typeof import('ant-design-vue/es')['Table'] + ATextarea: typeof import('ant-design-vue/es')['Textarea'] ATooltip: typeof import('ant-design-vue/es')['Tooltip'] Banner: typeof import('./src/components/Banner/index.vue')['default'] Code: typeof import('./src/components/Code/index.vue')['default'] diff --git a/deliver-front/vue/src/utils/date.ts b/deliver-front/vue/src/utils/date.ts index df66de18..6cbbb5c3 100644 --- a/deliver-front/vue/src/utils/date.ts +++ b/deliver-front/vue/src/utils/date.ts @@ -93,3 +93,16 @@ export const getAllMessage = (mod, record: messageTemplate): void => { console.error('An error occurred:', err) }) } + +export const changeTable = (item): any => { + item.channelType = JSON.parse(item.pushWays).channelType + item.messageType = JSON.parse(item.pushWays).messageType + item.createTime = getDate(item.createTime) + // eslint-disable-next-line + item.templateStatus = item.templateStatus === 1 ? true : false + item.key = item.templateId + // pushrange + const pusharr = ['不限', '企业内部', '企业外部'] + item.pushRange = pusharr[item.pushRange] + return item +} diff --git a/deliver-front/vue/src/views/Message/components/sendTest.vue b/deliver-front/vue/src/views/Message/components/sendTest.vue new file mode 100644 index 00000000..1d1d35e9 --- /dev/null +++ b/deliver-front/vue/src/views/Message/components/sendTest.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/deliver-front/vue/src/views/Message/index.vue b/deliver-front/vue/src/views/Message/index.vue index 16147778..bccf6a04 100644 --- a/deliver-front/vue/src/views/Message/index.vue +++ b/deliver-front/vue/src/views/Message/index.vue @@ -8,8 +8,9 @@ import type { messageTemplate, searchMessage } from './type' import searchForm from './components/searchForm.vue' import addTemplate from './components/addTemplate.vue' import modifyTemplate from './components/modifyTemplate.vue' +import sendTest from './components/sendTest.vue' import { addTemplatePages, deleteTemplate, getTemplatePages, updateStatus } from '@/api/message' -import { getAllMessage, getDate } from '@/utils/date' +import { changeTable, getAllMessage, getDate } from '@/utils/date' import { useStore } from '@/store' /** @@ -340,12 +341,7 @@ onMounted(() => { if (res.data.records.length > 0) { total.value = res.data.total res.data.records.forEach((item: any) => { - item.channelType = JSON.parse(item.pushWays).channelType - item.messageType = JSON.parse(item.pushWays).messageType - item.createTime = getDate(item.createTime) - // eslint-disable-next-line - item.templateStatus = item.templateStatus === 1 ? true : false - item.key = item.templateId + item = changeTable(item) templateTable.push(item) }) console.warn('初始化数据', templateTable) @@ -430,9 +426,7 @@ const a = computed(() => { 编辑 - - 测试发送 - + 删除 diff --git a/deliver-front/vue/src/views/Message/type/index.ts b/deliver-front/vue/src/views/Message/type/index.ts index ca5f4e95..811a8fbf 100644 --- a/deliver-front/vue/src/views/Message/type/index.ts +++ b/deliver-front/vue/src/views/Message/type/index.ts @@ -165,3 +165,22 @@ export interface modiTemp { */ appId: number | undefined | string } + +export interface sendMessageTest { + /** + * 模板id + */ + templateId: number + /** + * 用户列表 + */ + users: string[] + /** + * 传递参数 + */ + paramMap: string + /** + * 重试次数 + */ + retry: number | undefined +} -- Gitee From 33547eef272b6f5b4581a6cbfb9b8195d5f3fe6c Mon Sep 17 00:00:00 2001 From: hzhfsa <1957214281@qq.com> Date: Fri, 17 Nov 2023 21:39:39 +0800 Subject: [PATCH 4/5] =?UTF-8?q?style:=20=E8=A1=A8=E6=A0=BC=E6=A8=A1?= =?UTF-8?q?=E6=9D=BFId=E5=8A=A0=E7=B2=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deliver-front/vue/package-lock.json | 85 +++++++++++++++++++ deliver-front/vue/package.json | 2 + .../src/views/Message/components/sendTest.vue | 17 ++++ deliver-front/vue/src/views/Message/index.vue | 3 + ....timestamp-1700228324092-29f5528c7058a.mjs | 54 ++++++++++++ 5 files changed, 161 insertions(+) create mode 100644 deliver-front/vue/vite.config.ts.timestamp-1700228324092-29f5528c7058a.mjs diff --git a/deliver-front/vue/package-lock.json b/deliver-front/vue/package-lock.json index 954938fa..c4c20e67 100644 --- a/deliver-front/vue/package-lock.json +++ b/deliver-front/vue/package-lock.json @@ -15,6 +15,8 @@ "pinia": "^2.1.7", "prismjs": "^1.29.0", "vue": "^3.3.4", + "vue-json-editor": "^1.4.3", + "vue-json-views": "^1.3.0", "vue-router": "^4.2.5" }, "devDependencies": { @@ -4686,6 +4688,14 @@ "node": ">=8" } }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", @@ -5217,6 +5227,42 @@ "eslint": ">=6.0.0" } }, + "node_modules/vue-json-editor": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/vue-json-editor/-/vue-json-editor-1.4.3.tgz", + "integrity": "sha512-st9HdXBgCnyEmmfWrZQiKzp4KuYXzmYVUNDn5h6Fa18MrrGS1amnyUFyv7hQFsNBDW27B7BKkdGOqszYT1srAg==", + "dependencies": { + "vue": "^2.2.6" + }, + "engines": { + "node": ">= 4.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/vue-json-editor/node_modules/@vue/compiler-sfc": { + "version": "2.7.15", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz", + "integrity": "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==", + "dependencies": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "node_modules/vue-json-editor/node_modules/vue": { + "version": "2.7.15", + "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.15.tgz", + "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==", + "dependencies": { + "@vue/compiler-sfc": "2.7.15", + "csstype": "^3.1.0" + } + }, + "node_modules/vue-json-views": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/vue-json-views/-/vue-json-views-1.3.0.tgz", + "integrity": "sha512-4dwcBmMF7g9ndcdGdl+FcxOnfKIcWFZdHPIM+j4XPuemU0jk4IaG4tQIP6xQW/etIhdIWq2AoZdKQqDWuMNTlg==" + }, "node_modules/vue-router": { "version": "4.2.5", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.5.tgz", @@ -8923,6 +8969,11 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", @@ -9303,6 +9354,40 @@ "semver": "^7.3.6" } }, + "vue-json-editor": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/vue-json-editor/-/vue-json-editor-1.4.3.tgz", + "integrity": "sha512-st9HdXBgCnyEmmfWrZQiKzp4KuYXzmYVUNDn5h6Fa18MrrGS1amnyUFyv7hQFsNBDW27B7BKkdGOqszYT1srAg==", + "requires": { + "vue": "^2.2.6" + }, + "dependencies": { + "@vue/compiler-sfc": { + "version": "2.7.15", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz", + "integrity": "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==", + "requires": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "vue": { + "version": "2.7.15", + "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.15.tgz", + "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==", + "requires": { + "@vue/compiler-sfc": "2.7.15", + "csstype": "^3.1.0" + } + } + } + }, + "vue-json-views": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/vue-json-views/-/vue-json-views-1.3.0.tgz", + "integrity": "sha512-4dwcBmMF7g9ndcdGdl+FcxOnfKIcWFZdHPIM+j4XPuemU0jk4IaG4tQIP6xQW/etIhdIWq2AoZdKQqDWuMNTlg==" + }, "vue-router": { "version": "4.2.5", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.5.tgz", diff --git a/deliver-front/vue/package.json b/deliver-front/vue/package.json index 08a6d8f4..180c9584 100644 --- a/deliver-front/vue/package.json +++ b/deliver-front/vue/package.json @@ -18,6 +18,8 @@ "pinia": "^2.1.7", "prismjs": "^1.29.0", "vue": "^3.3.4", + "vue-json-editor": "^1.4.3", + "vue-json-views": "^1.3.0", "vue-router": "^4.2.5" }, "devDependencies": { diff --git a/deliver-front/vue/src/views/Message/components/sendTest.vue b/deliver-front/vue/src/views/Message/components/sendTest.vue index 1d1d35e9..0a572f3a 100644 --- a/deliver-front/vue/src/views/Message/components/sendTest.vue +++ b/deliver-front/vue/src/views/Message/components/sendTest.vue @@ -4,6 +4,7 @@ import type { DrawerProps, FormInstance } from 'ant-design-vue' import { UserOutlined } from '@ant-design/icons-vue' import type { sendMessageTest } from '../type' import type { Rule } from 'ant-design-vue/es/form' +import jsonView from 'vue-json-views' const placement = ref('right') @@ -22,6 +23,21 @@ const userItem = ref('') const iconLoading = ref(false) +const jsonData = { + name: 'dog', + age: 2, + hobby: { + eat: { + food: '狗粮', + water: '冰可乐' + }, + sleep: { + time: '白日梦' + } + } +} +const jsonString = JSON.stringify(jsonData) + const showDrawer = (): void => { open.value = true } @@ -100,6 +116,7 @@ const rules: Record = { +