diff --git a/apps/web-antd/package.json b/apps/web-antd/package.json index 847d65725bc68709182d686b89beee76d534b1c9..3f20b0f03053f6b500d3263b5bf8a90605e3cf47 100644 --- a/apps/web-antd/package.json +++ b/apps/web-antd/package.json @@ -44,6 +44,7 @@ "@vben/types": "workspace:*", "@vben/utils": "workspace:*", "@videojs-player/vue": "catalog:", + "@vueuse/components": "catalog:", "@vueuse/core": "catalog:", "@vueuse/integrations": "catalog:", "ant-design-vue": "catalog:", diff --git a/apps/web-antd/src/api/mp/account/index.ts b/apps/web-antd/src/api/mp/account/index.ts index c5ee331b05eda4716683a5117e8257adcef78c33..ec156eca2acb0f6486958dc11bc6fac29f324b19 100644 --- a/apps/web-antd/src/api/mp/account/index.ts +++ b/apps/web-antd/src/api/mp/account/index.ts @@ -5,12 +5,12 @@ import { requestClient } from '#/api/request'; export namespace MpAccountApi { /** 公众号账号信息 */ export interface Account { - id?: number; + id: number; name: string; - account: string; - appId: string; - appSecret: string; - token: string; + account?: string; + appId?: string; + appSecret?: string; + token?: string; aesKey?: string; qrCodeUrl?: string; remark?: string; diff --git a/apps/web-antd/src/locales/langs/en-US/page.json b/apps/web-antd/src/locales/langs/en-US/page.json index 00a8c90b29e3a55c008e002825d23ddbc209c92b..409137ee3d757c19565cef96b717f5f5bd1ffae8 100644 --- a/apps/web-antd/src/locales/langs/en-US/page.json +++ b/apps/web-antd/src/locales/langs/en-US/page.json @@ -29,5 +29,11 @@ "tenant": { "placeholder": "Please select tenant", "success": "Switch tenant success" + }, + "mp": { + "upload": { + "invalidFormat": "Invalid {0} format!", + "maxSize": "{0} size cannot exceed {1}M!" + } } } diff --git a/apps/web-antd/src/locales/langs/zh-CN/page.json b/apps/web-antd/src/locales/langs/zh-CN/page.json index eefc4924b8cc5d7d9832b93d2414176db8b16e4b..f56160a6a75c5f690f1a60521bc6dad810719931 100644 --- a/apps/web-antd/src/locales/langs/zh-CN/page.json +++ b/apps/web-antd/src/locales/langs/zh-CN/page.json @@ -29,5 +29,11 @@ "tenant": { "placeholder": "请选择租户", "success": "切换租户成功" + }, + "mp": { + "upload": { + "invalidFormat": "上传{0}格式不对!", + "maxSize": "上传{0}大小不能超过{1}M!" + } } } diff --git a/apps/web-antd/src/views/mp/components/wx-account-select/index.ts b/apps/web-antd/src/views/mp/components/wx-account-select/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..038205bef9ae5025475c5249c9f91e679d68144b --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-account-select/index.ts @@ -0,0 +1 @@ +export { default as WxAccountSelect } from './main.vue'; diff --git a/apps/web-antd/src/views/mp/components/wx-account-select/main.vue b/apps/web-antd/src/views/mp/components/wx-account-select/main.vue new file mode 100644 index 0000000000000000000000000000000000000000..3ee327338a75cf2b3b501371aa78d38016c73045 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-account-select/main.vue @@ -0,0 +1,73 @@ + + + diff --git a/apps/web-antd/src/views/mp/components/wx-location/index.ts b/apps/web-antd/src/views/mp/components/wx-location/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..72b3f8e73ba7404504ace9913bc1f30714175891 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-location/index.ts @@ -0,0 +1 @@ +export { default as WxLocation } from './main.vue'; diff --git a/apps/web-antd/src/views/mp/components/wx-location/main.vue b/apps/web-antd/src/views/mp/components/wx-location/main.vue new file mode 100644 index 0000000000000000000000000000000000000000..eac33c1648a3d8a18f059b65172e9e89857e2687 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-location/main.vue @@ -0,0 +1,53 @@ + + + diff --git a/apps/web-antd/src/views/mp/components/wx-material-select/index.ts b/apps/web-antd/src/views/mp/components/wx-material-select/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..34643ee2cb190a59b4e33a58d1609c8085acab96 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-material-select/index.ts @@ -0,0 +1,3 @@ +export { default as WxMaterialSelect } from './main.vue'; + +export { MaterialType, NewsType } from './types'; diff --git a/apps/web-antd/src/views/mp/components/wx-material-select/main.vue b/apps/web-antd/src/views/mp/components/wx-material-select/main.vue new file mode 100644 index 0000000000000000000000000000000000000000..0f81fd24b3f3a64d859103f62077ca09d5f56f11 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-material-select/main.vue @@ -0,0 +1,446 @@ + + + + + diff --git a/apps/web-antd/src/views/mp/components/wx-material-select/types.ts b/apps/web-antd/src/views/mp/components/wx-material-select/types.ts new file mode 100644 index 0000000000000000000000000000000000000000..3d44c5db7528d39278e85701f3b10ce1d6427518 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-material-select/types.ts @@ -0,0 +1,11 @@ +export enum NewsType { + Draft = '2', + Published = '1', +} + +export enum MaterialType { + Image = 'image', + News = 'news', + Video = 'video', + Voice = 'voice', +} diff --git a/apps/web-antd/src/views/mp/components/wx-msg/card.scss b/apps/web-antd/src/views/mp/components/wx-msg/card.scss new file mode 100644 index 0000000000000000000000000000000000000000..58fde79fd91341e0c38a49ad9608943e22ea6e60 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-msg/card.scss @@ -0,0 +1,116 @@ +.avue-card { + &__item { + box-sizing: border-box; + height: 200px; + margin-bottom: 16px; + font-size: 14px; + font-feature-settings: 'tnum'; + font-variant: tabular-nums; + line-height: 1.5; + color: rgb(0 0 0 / 65%); + cursor: pointer; + list-style: none; + background-color: #fff; + border: 1px solid #e8e8e8; + + &:hover { + border-color: rgb(0 0 0 / 9%); + box-shadow: 0 2px 8px rgb(0 0 0 / 9%); + } + + &--add { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + font-size: 16px; + color: rgb(0 0 0 / 45%); + background-color: #fff; + border: 1px dashed #000; + border-color: #d9d9d9; + border-radius: 2px; + + i { + margin-right: 10px; + } + + &:hover { + color: #40a9ff; + background-color: #fff; + border-color: #40a9ff; + } + } + } + + &__body { + display: flex; + padding: 24px; + } + + &__detail { + flex: 1; + } + + &__avatar { + width: 48px; + height: 48px; + margin-right: 12px; + overflow: hidden; + border-radius: 48px; + + img { + width: 100%; + height: 100%; + } + } + + &__title { + margin-bottom: 12px; + font-size: 16px; + color: rgb(0 0 0 / 85%); + + &:hover { + color: #1890ff; + } + } + + &__info { + display: -webkit-box; + height: 64px; + overflow: hidden; + -webkit-line-clamp: 3; + color: rgb(0 0 0 / 45%); + -webkit-box-orient: vertical; + } + + &__menu { + display: flex; + justify-content: space-around; + height: 50px; + line-height: 50px; + color: rgb(0 0 0 / 45%); + text-align: center; + background: #f7f9fa; + + &:hover { + color: #1890ff; + } + } +} + +/** joolun 额外加的 */ +.avue-comment__main { + flex: unset !important; + margin: 0 8px !important; + border-radius: 5px !important; +} + +.avue-comment__header { + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} + +.avue-comment__body { + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; +} diff --git a/apps/web-antd/src/views/mp/components/wx-msg/comment.scss b/apps/web-antd/src/views/mp/components/wx-msg/comment.scss new file mode 100644 index 0000000000000000000000000000000000000000..219e2e5d4529ad095dece9555f32476f2eb8e95e --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-msg/comment.scss @@ -0,0 +1,109 @@ +/* 来自 https://github.com/nmxiaowei/avue/blob/master/styles/src/element-ui/comment.scss */ +.avue-comment { + display: flex; + align-items: flex-start; + margin-bottom: 30px; + + &--reverse { + flex-direction: row-reverse; + + .avue-comment__main { + &::before, + &::after { + right: -8px; + left: auto; + border-width: 8px 0 8px 8px; + } + + &::before { + border-left-color: #dedede; + } + + &::after { + margin-right: 1px; + margin-left: auto; + border-left-color: #f8f8f8; + } + } + } + + &__avatar { + box-sizing: border-box; + width: 48px; + height: 48px; + vertical-align: middle; + border: 1px solid transparent; + border-radius: 50%; + } + + &__header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 5px 15px; + background: #f8f8f8; + border-bottom: 1px solid #eee; + } + + &__author { + font-size: 14px; + font-weight: 700; + color: #999; + } + + &__main { + position: relative; + flex: 1; + margin: 0 20px; + border: 1px solid #dedede; + border-radius: 2px; + + &::before, + &::after { + position: absolute; + top: 10px; + right: 100%; + left: -8px; + display: block; + width: 0; + height: 0; + pointer-events: none; + content: ' '; + border-color: transparent; + border-style: solid solid outset; + border-width: 8px 8px 8px 0; + } + + &::before { + z-index: 1; + border-right-color: #dedede; + } + + &::after { + z-index: 2; + margin-left: 1px; + border-right-color: #f8f8f8; + } + } + + &__body { + padding: 15px; + overflow: hidden; + font-family: + 'Segoe UI', 'Lucida Grande', Helvetica, Arial, 'Microsoft YaHei', + FreeSans, Arimo, 'Droid Sans', 'wenquanyi micro hei', 'Hiragino Sans GB', + 'Hiragino Sans GB W3', FontAwesome, sans-serif; + font-size: 14px; + color: #333; + background: #fff; + } + + blockquote { + padding: 1px 0 1px 15px; + margin: 0; + font-family: + Georgia, 'Times New Roman', Times, Kai, 'Kaiti SC', KaiTi, BiauKai, + FontAwesome, serif; + border-left: 4px solid #ddd; + } +} diff --git a/apps/web-antd/src/views/mp/components/wx-msg/components/Msg.vue b/apps/web-antd/src/views/mp/components/wx-msg/components/Msg.vue new file mode 100644 index 0000000000000000000000000000000000000000..bcb1805b22651e0df0047552f0488154ffda783f --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-msg/components/Msg.vue @@ -0,0 +1,75 @@ + + + diff --git a/apps/web-antd/src/views/mp/components/wx-msg/components/MsgEvent.vue b/apps/web-antd/src/views/mp/components/wx-msg/components/MsgEvent.vue new file mode 100644 index 0000000000000000000000000000000000000000..24b039ebf920ad58742c723f9e00d573c199c59a --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-msg/components/MsgEvent.vue @@ -0,0 +1,51 @@ + + + diff --git a/apps/web-antd/src/views/mp/components/wx-msg/components/MsgList.vue b/apps/web-antd/src/views/mp/components/wx-msg/components/MsgList.vue new file mode 100644 index 0000000000000000000000000000000000000000..0595a67d584a11d2403252f777d4bda05b7cdf45 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-msg/components/MsgList.vue @@ -0,0 +1,71 @@ + + + + diff --git a/apps/web-antd/src/views/mp/components/wx-msg/index.ts b/apps/web-antd/src/views/mp/components/wx-msg/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..32b56c390221390dd96bfbc3f239b81a9820bb81 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-msg/index.ts @@ -0,0 +1,3 @@ +export { default as WxMsg } from './main.vue'; + +export { MsgType } from './types'; diff --git a/apps/web-antd/src/views/mp/components/wx-msg/main.vue b/apps/web-antd/src/views/mp/components/wx-msg/main.vue new file mode 100644 index 0000000000000000000000000000000000000000..277f85e36dc6c187af8e3c7215ccba356e6dc9f3 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-msg/main.vue @@ -0,0 +1,180 @@ + + + diff --git a/apps/web-antd/src/views/mp/components/wx-msg/types.ts b/apps/web-antd/src/views/mp/components/wx-msg/types.ts new file mode 100644 index 0000000000000000000000000000000000000000..9742db434c146a8e3da2633ea2386cbb0f3ca61f --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-msg/types.ts @@ -0,0 +1,17 @@ +export enum MsgType { + Event = 'event', + Image = 'image', + Link = 'link', + Location = 'location', + Music = 'music', + News = 'news', + Text = 'text', + Video = 'video', + Voice = 'voice', +} + +export interface User { + accountId: number; + avatar: string; + nickname: string; +} diff --git a/apps/web-antd/src/views/mp/components/wx-music/index.ts b/apps/web-antd/src/views/mp/components/wx-music/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..83e35d2df097b38e6157ba7d721147549c4e2dbe --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-music/index.ts @@ -0,0 +1 @@ +export { default as WxMusic } from './main.vue'; diff --git a/apps/web-antd/src/views/mp/components/wx-music/main.vue b/apps/web-antd/src/views/mp/components/wx-music/main.vue new file mode 100644 index 0000000000000000000000000000000000000000..3f3919d9fc2377b5db838f505b59ad8b35bf613a --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-music/main.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/apps/web-antd/src/views/mp/components/wx-news/index.ts b/apps/web-antd/src/views/mp/components/wx-news/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..8505ecc9bb8733facfeba69abeeb630afc6c4b93 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-news/index.ts @@ -0,0 +1 @@ +export { default as WxNews } from './main.vue'; diff --git a/apps/web-antd/src/views/mp/components/wx-news/main.vue b/apps/web-antd/src/views/mp/components/wx-news/main.vue new file mode 100644 index 0000000000000000000000000000000000000000..04688a1e8c00f0efba2ab54736f8b18cd071ca00 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-news/main.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/apps/web-antd/src/views/mp/components/wx-reply/components/TabImage.vue b/apps/web-antd/src/views/mp/components/wx-reply/components/TabImage.vue new file mode 100644 index 0000000000000000000000000000000000000000..ccd9e9b27e6e1c2369b7ee94b83cebc09c95b7d4 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-reply/components/TabImage.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/apps/web-antd/src/views/mp/components/wx-reply/components/TabMusic.vue b/apps/web-antd/src/views/mp/components/wx-reply/components/TabMusic.vue new file mode 100644 index 0000000000000000000000000000000000000000..ba296df420aae3a8ff53d3dac0507d5e04713846 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-reply/components/TabMusic.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/apps/web-antd/src/views/mp/components/wx-reply/components/TabNews.vue b/apps/web-antd/src/views/mp/components/wx-reply/components/TabNews.vue new file mode 100644 index 0000000000000000000000000000000000000000..fda0087ef7105580a6bcabf7116475984895f9d0 --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-reply/components/TabNews.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/apps/web-antd/src/views/mp/components/wx-reply/components/TabText.vue b/apps/web-antd/src/views/mp/components/wx-reply/components/TabText.vue new file mode 100644 index 0000000000000000000000000000000000000000..914d943a69ead0e037c73f2231e7b60872c126cc --- /dev/null +++ b/apps/web-antd/src/views/mp/components/wx-reply/components/TabText.vue @@ -0,0 +1,26 @@ + + +