diff --git a/apps/web-antd/src/api/mp/draft/index.ts b/apps/web-antd/src/api/mp/draft/index.ts index 70b7c0e83..f05d0117a 100644 --- a/apps/web-antd/src/api/mp/draft/index.ts +++ b/apps/web-antd/src/api/mp/draft/index.ts @@ -24,6 +24,49 @@ export namespace MpDraftApi { articles: Article[]; createTime?: Date; } + + /** 图文项(包含预览字段) */ + export interface NewsItem { + title: string; + thumbMediaId: string; + author: string; + digest: string; + showCoverPic: number; + content: string; + contentSourceUrl: string; + needOpenComment: number; + onlyFansCanComment: number; + thumbUrl: string; + picUrl?: string; // 用于预览封面 + } + + /** 图文列表 */ + export interface NewsItemList { + newsItem: NewsItem[]; + } + + /** 草稿文章(用于展示) */ + export interface DraftArticle { + mediaId: string; + content: NewsItemList; + updateTime: number; + } +} + +/** 创建空的图文项 */ +export function createEmptyNewsItem(): MpDraftApi.NewsItem { + return { + title: '', + thumbMediaId: '', + author: '', + digest: '', + showCoverPic: 0, + content: '', + contentSourceUrl: '', + needOpenComment: 0, + onlyFansCanComment: 0, + thumbUrl: '', + }; } /** 查询草稿列表 */ diff --git a/apps/web-antd/src/api/mp/material/index.ts b/apps/web-antd/src/api/mp/material/index.ts index fcec54547..91ca6ddf0 100644 --- a/apps/web-antd/src/api/mp/material/index.ts +++ b/apps/web-antd/src/api/mp/material/index.ts @@ -1,15 +1,8 @@ import type { PageParam, PageResult } from '@vben/request'; -import { requestClient } from '#/api/request'; +import { MaterialType } from '@vben/constants'; -/** 素材类型枚举 */ -// TODO @hw:mp 相关的枚举,可以考虑放这里来。 -export enum MaterialType { - IMAGE = 1, // 图片 - THUMB = 4, // 缩略图 - VIDEO = 3, // 视频 - VOICE = 2, // 语音 -} +import { requestClient } from '#/api/request'; export namespace MpMaterialApi { /** 素材信息 */ diff --git a/apps/web-antd/src/api/mp/menu/index.ts b/apps/web-antd/src/api/mp/menu/index.ts index ade69000b..a99613646 100644 --- a/apps/web-antd/src/api/mp/menu/index.ts +++ b/apps/web-antd/src/api/mp/menu/index.ts @@ -1,20 +1,6 @@ -import { requestClient } from '#/api/request'; +import { MenuType } from '@vben/constants'; -/** 菜单类型枚举 */ -// TODO @hw:mp 相关的枚举,可以考虑放这里来。 -export enum MenuType { - CLICK = 'click', // 点击推事件 - LOCATION_SELECT = 'location_select', // 发送位置 - MEDIA_ID = 'media_id', // 下发消息 - MINIPROGRAM = 'miniprogram', // 小程序 - PIC_PHOTO_OR_ALBUM = 'pic_photo_or_album', // 拍照或者相册发图 - PIC_SYSPHOTO = 'pic_sysphoto', // 系统拍照发图 - PIC_WEIXIN = 'pic_weixin', // 微信相册发图 - SCANCODE_PUSH = 'scancode_push', // 扫码推事件 - SCANCODE_WAITMSG = 'scancode_waitmsg', // 扫码带提示 - VIEW = 'view', // 跳转 URL - VIEW_LIMITED = 'view_limited', // 跳转图文消息URL -} +import { requestClient } from '#/api/request'; export namespace MpMenuApi { /** 菜单按钮信息 */ diff --git a/apps/web-antd/src/api/mp/message/index.ts b/apps/web-antd/src/api/mp/message/index.ts index 3b928d697..5d0d17295 100644 --- a/apps/web-antd/src/api/mp/message/index.ts +++ b/apps/web-antd/src/api/mp/message/index.ts @@ -1,19 +1,8 @@ import type { PageParam, PageResult } from '@vben/request'; -import { requestClient } from '#/api/request'; +import { MessageType } from '@vben/constants'; -/** 消息类型枚举 */ -// TODO @hw:mp 相关的枚举,可以考虑放这里来。 -export enum MessageType { - IMAGE = 'image', // 图片消息 - MPNEWS = 'mpnews', // 公众号图文消息 - MUSIC = 'music', // 音乐消息 - NEWS = 'news', // 图文消息 - TEXT = 'text', // 文本消息 - VIDEO = 'video', // 视频消息 - VOICE = 'voice', // 语音消息 - WXCARD = 'wxcard', // 卡券消息 -} +import { requestClient } from '#/api/request'; export namespace MpMessageApi { /** 消息信息 */ diff --git a/apps/web-antd/src/views/mp/autoReply/data.ts b/apps/web-antd/src/views/mp/autoReply/data.ts index c3fdb981e..0fba1d20a 100644 --- a/apps/web-antd/src/views/mp/autoReply/data.ts +++ b/apps/web-antd/src/views/mp/autoReply/data.ts @@ -3,13 +3,11 @@ import type { VxeGridPropTypes } from '#/adapter/vxe-table'; import { markRaw } from 'vue'; -import { DICT_TYPE } from '@vben/constants'; +import { DICT_TYPE, AutoReplyMsgType as MsgType } from '@vben/constants'; import { getDictOptions } from '@vben/hooks'; import { WxReply } from '#/views/mp/components'; -import { MsgType } from './types'; - // TODO @芋艿:要不要使用统一枚举? const RequestMessageTypes = new Set([ 'image', @@ -143,10 +141,6 @@ export function useFormSchema(msgType: MsgType): VbenFormSchema[] { fieldName: 'reply', label: '回复消息', component: markRaw(WxReply), - // TODO @hw:这里注释,要不要删除掉? - // componentProps: { - // modelValue: { type: 'video', content: '12456' }, - // }, modelPropName: 'modelValue', }); return schema; diff --git a/apps/web-antd/src/views/mp/autoReply/index.vue b/apps/web-antd/src/views/mp/autoReply/index.vue index bc75396c7..860625b6b 100644 --- a/apps/web-antd/src/views/mp/autoReply/index.vue +++ b/apps/web-antd/src/views/mp/autoReply/index.vue @@ -5,6 +5,7 @@ import type { MpAutoReplyApi } from '#/api/mp/autoReply'; import { computed, nextTick, ref } from 'vue'; import { confirm, DocAlert, Page, useVbenModal } from '@vben/common-ui'; +import { AutoReplyMsgType as MsgType } from '@vben/constants'; import { IconifyIcon } from '@vben/icons'; import { message, Row, Tabs } from 'ant-design-vue'; @@ -21,7 +22,6 @@ import { WxAccountSelect } from '#/views/mp/components'; import { useGridColumns, useGridFormSchema } from './data'; import ReplyContentCell from './modules/content.vue'; import Form from './modules/form.vue'; -import { MsgType } from './types'; defineOptions({ name: 'MpAutoReply' }); diff --git a/apps/web-antd/src/views/mp/autoReply/modules/form.vue b/apps/web-antd/src/views/mp/autoReply/modules/form.vue index d23054175..8f540caa1 100644 --- a/apps/web-antd/src/views/mp/autoReply/modules/form.vue +++ b/apps/web-antd/src/views/mp/autoReply/modules/form.vue @@ -4,16 +4,15 @@ import type { Reply } from '#/views/mp/components'; import { computed, nextTick, ref } from 'vue'; import { useVbenModal } from '@vben/common-ui'; +import { AutoReplyMsgType as MsgType, ReplyType } from '@vben/constants'; import { message } from 'ant-design-vue'; import { useVbenForm } from '#/adapter/form'; import { createAutoReply, updateAutoReply } from '#/api/mp/autoReply'; import { $t } from '#/locales'; -import { ReplyType } from '#/views/mp/components/constants'; import { useFormSchema } from '../data'; -import { MsgType } from '../types'; const emit = defineEmits(['success']); @@ -113,13 +112,6 @@ const [Modal, modalApi] = useVbenModal({ // 编辑:加载数据 const rowData = data.row; const formValues: any = { ...rowData }; - // TODO @hw:下面要删除掉么,注释。 - // delete formValues.responseMessageType; - // delete formValues.responseContent; - // delete formValues.responseMediaId; - // delete formValues.responseMediaUrl; - // delete formValues.responseDescription; - // delete formValues.responseArticles; formValues.reply = { type: rowData.responseMessageType, accountId: data.accountId || -1, diff --git a/apps/web-antd/src/views/mp/autoReply/types.ts b/apps/web-antd/src/views/mp/autoReply/types.ts deleted file mode 100644 index 73965c46f..000000000 --- a/apps/web-antd/src/views/mp/autoReply/types.ts +++ /dev/null @@ -1,8 +0,0 @@ -// 消息类型(Follow: 关注时回复;Message: 消息回复;Keyword: 关键词回复) -// 作为 tab.name,enum 的数字不能随意修改,与 api 参数相关 -// TODO @hw:可以搞到 biz-mp-enum.ts 里。 -export enum MsgType { - Follow = 1, - Keyword = 3, - Message = 2, -} diff --git a/apps/web-antd/src/views/mp/components/constants.ts b/apps/web-antd/src/views/mp/components/constants.ts deleted file mode 100644 index b27a0b46b..000000000 --- a/apps/web-antd/src/views/mp/components/constants.ts +++ /dev/null @@ -1,33 +0,0 @@ -// TODO @hw:看看要不要迁移到 packages/constants/src/biz-mp-enum.ts -export enum ReplyType { - Image = 'image', - Music = 'music', - News = 'news', - Text = 'text', - Video = 'video', - Voice = 'voice', -} - -export enum NewsType { - Draft = '2', - Published = '1', -} - -export enum MaterialType { - Image = 'image', - News = 'news', - Video = 'video', - Voice = 'voice', -} - -export enum MsgType { - Event = 'event', - Image = 'image', - Link = 'link', - Location = 'location', - Music = 'music', - News = 'news', - Text = 'text', - Video = 'video', - Voice = 'voice', -} diff --git a/apps/web-antd/src/views/mp/components/index.ts b/apps/web-antd/src/views/mp/components/index.ts index f7d7318b7..93b94a29b 100644 --- a/apps/web-antd/src/views/mp/components/index.ts +++ b/apps/web-antd/src/views/mp/components/index.ts @@ -1,13 +1,9 @@ -export * from './constants'; - -export * from './wx-account-select'; -export * from './wx-location'; -export * from './wx-material-select'; -export * from './wx-msg'; -export * from './wx-music'; -export * from './wx-news'; -export * from './wx-reply'; -export * from './wx-video-play'; -export * from './wx-voice-play'; - -// TODO @hw:要不使用 export { default as WxAccountSelect } from './account-select.vue'; 形式; \ No newline at end of file +export { default as WxAccountSelect } from './wx-account-select/account-select.vue'; +export { default as WxLocation } from './wx-location/wx-location.vue'; +export { default as WxMaterialSelect } from './wx-material-select/wx-material-select.vue'; +export { default as WxMsg } from './wx-msg/msg.vue'; +export { default as WxMusic } from './wx-music/wx-music.vue'; +export { default as WxNews } from './wx-news/wx-news.vue'; +export { default as WxReply } from './wx-reply/wx-reply.vue'; +export { default as WxVideoPlayer } from './wx-video-play/wx-video-play.vue'; +export { default as WxVoicePlayer } from './wx-voice-play/wx-voice-play.vue'; diff --git a/apps/web-antd/src/views/mp/components/wx-material-select/wx-material-select.vue b/apps/web-antd/src/views/mp/components/wx-material-select/wx-material-select.vue index dee3c82c7..cea334dc1 100644 --- a/apps/web-antd/src/views/mp/components/wx-material-select/wx-material-select.vue +++ b/apps/web-antd/src/views/mp/components/wx-material-select/wx-material-select.vue @@ -4,6 +4,7 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import { reactive, ref, watch } from 'vue'; import { Page } from '@vben/common-ui'; +import { NewsType } from '@vben/constants'; import { IconifyIcon } from '@vben/icons'; import { Button, Pagination, Row, Spin } from 'ant-design-vue'; @@ -14,8 +15,6 @@ import { getFreePublishPage } from '#/api/mp/freePublish'; import { getMaterialPage } from '#/api/mp/material'; import { WxNews, WxVideoPlayer, WxVoicePlayer } from '#/views/mp/components'; -import { NewsType } from '../constants'; - defineOptions({ name: 'WxMaterialSelect' }); const props = withDefaults( diff --git a/apps/web-antd/src/views/mp/components/wx-msg/msg.vue b/apps/web-antd/src/views/mp/components/wx-msg/msg.vue index 1649775c4..9b945bc1e 100644 --- a/apps/web-antd/src/views/mp/components/wx-msg/msg.vue +++ b/apps/web-antd/src/views/mp/components/wx-msg/msg.vue @@ -1,4 +1,5 @@ diff --git a/apps/web-antd/src/views/mp/draft/modules/cover-select.vue b/apps/web-antd/src/views/mp/draft/modules/cover-select.vue index 037c6fa96..1e05250d1 100644 --- a/apps/web-antd/src/views/mp/draft/modules/cover-select.vue +++ b/apps/web-antd/src/views/mp/draft/modules/cover-select.vue @@ -1,7 +1,7 @@ diff --git a/apps/web-antd/src/views/mp/draft/modules/form.vue b/apps/web-antd/src/views/mp/draft/modules/form.vue index ad30d8704..30481a35e 100644 --- a/apps/web-antd/src/views/mp/draft/modules/form.vue +++ b/apps/web-antd/src/views/mp/draft/modules/form.vue @@ -1,11 +1,11 @@ - + + - - diff --git a/apps/web-ele/src/views/mp/draft/modules/draft-table.vue b/apps/web-ele/src/views/mp/draft/modules/draft-table.vue index 8f13fa71c..f3f185b95 100644 --- a/apps/web-ele/src/views/mp/draft/modules/draft-table.vue +++ b/apps/web-ele/src/views/mp/draft/modules/draft-table.vue @@ -1,7 +1,7 @@ - - diff --git a/apps/web-ele/src/views/mp/draft/modules/form.vue b/apps/web-ele/src/views/mp/draft/modules/form.vue index fde1c5e20..2e79cf2d8 100644 --- a/apps/web-ele/src/views/mp/draft/modules/form.vue +++ b/apps/web-ele/src/views/mp/draft/modules/form.vue @@ -1,7 +1,7 @@