diff --git a/apps/web-antd/.env.development b/apps/web-antd/.env.development index cff255764..fe07e867c 100644 --- a/apps/web-antd/.env.development +++ b/apps/web-antd/.env.development @@ -4,9 +4,9 @@ VITE_PORT=5666 VITE_BASE=/ # 请求路径 -VITE_BASE_URL=http://127.0.0.1:48080 +VITE_BASE_URL=http://47.103.66.220:48080 # 接口地址 -VITE_GLOB_API_URL=/admin-api +VITE_GLOB_API_URL=http://47.103.66.220:48080/admin-api # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 VITE_UPLOAD_TYPE=server # 是否打开 devtools,true 为打开,false 为关闭 diff --git a/apps/web-antd/src/api/mp/draft/index.ts b/apps/web-antd/src/api/mp/draft/index.ts index 9032ffd57..70b7c0e83 100644 --- a/apps/web-antd/src/api/mp/draft/index.ts +++ b/apps/web-antd/src/api/mp/draft/index.ts @@ -50,13 +50,9 @@ export function updateDraft( mediaId: string, articles: MpDraftApi.Article[], ) { - return requestClient.put( - '/mp/draft/update', - { articles }, - { - params: { accountId, mediaId }, - }, - ); + return requestClient.put('/mp/draft/update', articles, { + params: { accountId, mediaId }, + }); } /** 删除草稿 */ diff --git a/apps/web-antd/src/views/mp/autoReply/components/ReplyForm.vue b/apps/web-antd/src/views/mp/autoReply/components/ReplyForm.vue deleted file mode 100644 index d90e51a34..000000000 --- a/apps/web-antd/src/views/mp/autoReply/components/ReplyForm.vue +++ /dev/null @@ -1,138 +0,0 @@ - - - diff --git a/apps/web-antd/src/views/mp/autoReply/data.ts b/apps/web-antd/src/views/mp/autoReply/data.ts index e3cbef345..8056cd2c4 100644 --- a/apps/web-antd/src/views/mp/autoReply/data.ts +++ b/apps/web-antd/src/views/mp/autoReply/data.ts @@ -1,13 +1,30 @@ import type { VbenFormSchema } from '#/adapter/form'; import type { VxeGridPropTypes } from '#/adapter/vxe-table'; +import type { MpAccountApi } from '#/api/mp/account'; import { markRaw } from 'vue'; import { DICT_TYPE } from '@vben/constants'; +import { getDictOptions } from '@vben/hooks'; -import { WxAccountSelect } from '#/views/mp/modules/wx-account-select'; +import { getSimpleAccountList } from '#/api/mp/account'; +import { ReplySelect } from '#/views/mp/modules'; -import { MsgType } from './components/types'; +import { MsgType } from './types'; + +/** 关联数据 */ +let accountList: MpAccountApi.AccountSimple[] = []; +getSimpleAccountList().then((data) => (accountList = data)); + +const RequestMessageTypes = new Set([ + 'image', + 'link', + 'location', + 'shortvideo', + 'text', + 'video', + 'voice', +]); // 允许选择的请求消息类型 /** 获取表格列配置 */ export function useGridColumns(msgType: MsgType): VxeGridPropTypes.Columns { @@ -76,13 +93,84 @@ export function useGridColumns(msgType: MsgType): VxeGridPropTypes.Columns { return columns; } +/** 新增/修改的表单 */ +export function useFormSchema(msgType: MsgType): VbenFormSchema[] { + const schema: VbenFormSchema[] = []; + + // 消息类型(仅消息回复显示) + if (msgType === MsgType.Message) { + schema.push({ + fieldName: 'requestMessageType', + label: '消息类型', + component: 'Select', + componentProps: { + placeholder: '请选择', + options: getDictOptions(DICT_TYPE.MP_MESSAGE_TYPE).filter((d) => + RequestMessageTypes.has(d.value as string), + ), + }, + }); + } + + // 匹配类型(仅关键词回复显示) + if (msgType === MsgType.Keyword) { + schema.push({ + fieldName: 'requestMatch', + label: '匹配类型', + component: 'Select', + componentProps: { + placeholder: '请选择匹配类型', + allowClear: true, + options: getDictOptions( + DICT_TYPE.MP_AUTO_REPLY_REQUEST_MATCH, + 'number', + ), + }, + rules: 'required', + }); + } + + // 关键词(仅关键词回复显示) + if (msgType === MsgType.Keyword) { + schema.push({ + fieldName: 'requestKeyword', + label: '关键词', + component: 'Input', + componentProps: { + placeholder: '请输入内容', + allowClear: true, + }, + rules: 'required', + }); + } + // 回复消息 + schema.push({ + fieldName: 'reply', + label: '回复消息', + component: markRaw(ReplySelect), + // componentProps: { + // modelValue: { type: 'video', content: '12456' }, + // }, + // modelPropName: 'modelValue', + }); + return schema; +} + /** 列表的搜索表单 */ export function useGridFormSchema(): VbenFormSchema[] { return [ { fieldName: 'accountId', label: '公众号', - component: markRaw(WxAccountSelect), + component: 'ApiSelect', + componentProps: { + options: accountList.map((item) => ({ + label: item.name, + value: item.id, + })), + placeholder: '请选择公众号', + }, + defaultValue: accountList[0]?.id, }, ]; } diff --git a/apps/web-antd/src/views/mp/autoReply/index.vue b/apps/web-antd/src/views/mp/autoReply/index.vue index 504f79dd7..ae1043f2f 100644 --- a/apps/web-antd/src/views/mp/autoReply/index.vue +++ b/apps/web-antd/src/views/mp/autoReply/index.vue @@ -1,15 +1,9 @@ diff --git a/apps/web-antd/src/views/mp/autoReply/components/ReplyTable.vue b/apps/web-antd/src/views/mp/autoReply/modules/content.vue similarity index 70% rename from apps/web-antd/src/views/mp/autoReply/components/ReplyTable.vue rename to apps/web-antd/src/views/mp/autoReply/modules/content.vue index 5948a91cc..1d2a5187b 100644 --- a/apps/web-antd/src/views/mp/autoReply/components/ReplyTable.vue +++ b/apps/web-antd/src/views/mp/autoReply/modules/content.vue @@ -1,9 +1,6 @@ diff --git a/apps/web-antd/src/views/mp/autoReply/components/types.ts b/apps/web-antd/src/views/mp/autoReply/types.ts similarity index 100% rename from apps/web-antd/src/views/mp/autoReply/components/types.ts rename to apps/web-antd/src/views/mp/autoReply/types.ts diff --git a/apps/web-antd/src/views/mp/draft/data.ts b/apps/web-antd/src/views/mp/draft/data.ts index 2ee398fd1..cd8bf01c1 100644 --- a/apps/web-antd/src/views/mp/draft/data.ts +++ b/apps/web-antd/src/views/mp/draft/data.ts @@ -1,9 +1,12 @@ import type { VbenFormSchema } from '#/adapter/form'; import type { VxeTableGridOptions } from '#/adapter/vxe-table'; +import type { MpAccountApi } from '#/api/mp/account'; -import { markRaw } from 'vue'; +import { getSimpleAccountList } from '#/api/mp/account'; -import { WxAccountSelect } from '#/views/mp/modules/wx-account-select'; +/** 关联数据 */ +let accountList: MpAccountApi.AccountSimple[] = []; +getSimpleAccountList().then((data) => (accountList = data)); /** 获取表格列配置 */ export function useGridColumns(): VxeTableGridOptions['columns'] { @@ -18,7 +21,7 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { field: 'updateTime', title: '更新时间', minWidth: 180, - formatter: 'formatDateTime', + formatter: 'formatDateTime', // TODO @YunaiV 接口返回数据不对,需要乘1000 }, { title: '操作', @@ -30,13 +33,21 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { } /** 列表的搜索表单 */ -// TODO @hw:这里的公众号选择,要改参考 /Users/yunai/Java/yudao-ui-admin-vben-v5/apps/web-antd/src/views/mp/tag/data.ts;相关联的代码还简单点~ +// DONE @hw:这里的公众号选择,要改参考 /apps/web-antd/src/views/mp/tag/data.ts;相关联的代码还简单点~ export function useGridFormSchema(): VbenFormSchema[] { return [ { fieldName: 'accountId', label: '公众号', - component: markRaw(WxAccountSelect), + component: 'ApiSelect', + componentProps: { + options: accountList.map((item) => ({ + label: item.name, + value: item.id, + })), + placeholder: '请选择公众号', + }, + defaultValue: accountList[0]?.id, }, ]; } diff --git a/apps/web-antd/src/views/mp/draft/index.vue b/apps/web-antd/src/views/mp/draft/index.vue index e1185adcc..bf28472d5 100644 --- a/apps/web-antd/src/views/mp/draft/index.vue +++ b/apps/web-antd/src/views/mp/draft/index.vue @@ -1,10 +1,8 @@ + + diff --git a/apps/web-antd/src/views/mp/modules/wx-msg/types.ts b/apps/web-antd/src/views/mp/modules/msg/types.ts similarity index 100% rename from apps/web-antd/src/views/mp/modules/wx-msg/types.ts rename to apps/web-antd/src/views/mp/modules/msg/types.ts diff --git a/apps/web-antd/src/views/mp/modules/wx-music/wx-music.vue b/apps/web-antd/src/views/mp/modules/music/music.vue similarity index 56% rename from apps/web-antd/src/views/mp/modules/wx-music/wx-music.vue rename to apps/web-antd/src/views/mp/modules/music/music.vue index 381292e6f..f0433d40f 100644 --- a/apps/web-antd/src/views/mp/modules/wx-music/wx-music.vue +++ b/apps/web-antd/src/views/mp/modules/music/music.vue @@ -2,7 +2,7 @@ 【微信消息 - 音乐】 --> + + diff --git a/apps/web-antd/src/views/mp/modules/wx-reply/wx-reply.vue b/apps/web-antd/src/views/mp/modules/reply/reply.vue similarity index 71% rename from apps/web-antd/src/views/mp/modules/wx-reply/wx-reply.vue rename to apps/web-antd/src/views/mp/modules/reply/reply.vue index 225e8ab35..233487ffe 100644 --- a/apps/web-antd/src/views/mp/modules/wx-reply/wx-reply.vue +++ b/apps/web-antd/src/views/mp/modules/reply/reply.vue @@ -10,21 +10,22 @@