From 06e1e27652ba2f50d7417576ab6d4308feaf0d9d Mon Sep 17 00:00:00 2001 From: YunaiV Date: Wed, 5 Apr 2023 20:45:19 +0800 Subject: [PATCH 01/36] =?UTF-8?q?=E9=82=AE=E7=AE=B1=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=AF=A6=E6=83=85=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/mail/account/MailAccountDetail.vue | 26 +++++++++++++++++++ src/views/system/mail/account/account.data.ts | 8 ++++-- src/views/system/mail/account/index.vue | 17 ++++++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 src/views/system/mail/account/MailAccountDetail.vue diff --git a/src/views/system/mail/account/MailAccountDetail.vue b/src/views/system/mail/account/MailAccountDetail.vue new file mode 100644 index 00000000..b64c8d16 --- /dev/null +++ b/src/views/system/mail/account/MailAccountDetail.vue @@ -0,0 +1,26 @@ + + diff --git a/src/views/system/mail/account/account.data.ts b/src/views/system/mail/account/account.data.ts index d1683bf2..eaa0673a 100644 --- a/src/views/system/mail/account/account.data.ts +++ b/src/views/system/mail/account/account.data.ts @@ -61,12 +61,16 @@ const crudSchemas = reactive([ label: '创建时间', field: 'createTime', isForm: false, - formatter: dateFormatter + formatter: dateFormatter, + detail: { + dateFormat: 'YYYY-MM-DD HH:mm:ss' + } }, { label: '操作', field: 'action', - isForm: false + isForm: false, + isDetail: false } ]) export const { allSchemas } = useCrudSchemas(crudSchemas) diff --git a/src/views/system/mail/account/index.vue b/src/views/system/mail/account/index.vue index c9e40765..878d7d9e 100644 --- a/src/views/system/mail/account/index.vue +++ b/src/views/system/mail/account/index.vue @@ -39,6 +39,14 @@ > 编辑 + + 详情 + + + diff --git a/src/views/bpm/task/todo/todo.data.ts b/src/views/bpm/task/todo/todo.data.ts deleted file mode 100644 index 419a80fe..00000000 --- a/src/views/bpm/task/todo/todo.data.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas' - -const { t } = useI18n() // 国际化 - -// crudSchemas -const crudSchemas = reactive({ - primaryKey: 'id', - primaryType: null, - action: true, - searchSpan: 8, - columns: [ - { - title: '任务编号', - field: 'id', - table: { - width: 320 - } - }, - { - title: '任务名称', - field: 'name', - isSearch: true - }, - { - title: '所属流程', - field: 'processInstance.name' - }, - { - title: '流程发起人', - field: 'processInstance.startUserNickname' - }, - { - title: t('common.createTime'), - field: 'createTime', - formatter: 'formatDate', - table: { - width: 180 - }, - isSearch: true, - search: { - show: true, - itemRender: { - name: 'XDataTimePicker' - } - } - }, - { - title: '任务状态', - field: 'suspensionState', - table: { - slots: { - default: 'suspensionState_default' - } - } - } - ] -}) -export const { allSchemas } = useVxeCrudSchemas(crudSchemas) From d0bc7f081423747c0d09a498a4e5870828af5311 Mon Sep 17 00:00:00 2001 From: Chika Date: Thu, 6 Apr 2023 16:13:18 +0800 Subject: [PATCH 03/36] =?UTF-8?q?VUE3=E3=80=90=E6=B5=81=E7=A8=8B=E7=AE=A1?= =?UTF-8?q?=E7=90=86-=E6=88=91=E7=9A=84=E6=B5=81=E7=A8=8B=E3=80=91elment-p?= =?UTF-8?q?lus=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/modules/remaining.ts | 12 ++ src/views/bpm/processInstance/index.vue | 243 +++++++++++++++++++----- 2 files changed, 211 insertions(+), 44 deletions(-) diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index 99543361..45da96b8 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -341,6 +341,18 @@ const remainingRouter: AppRouteRecordRaw[] = [ title: '代办任务', activeMenu: 'bpm/task/todo/index' } + }, + { + path: '/bpm/processInstance', + component: () => import('@/views/bpm/processInstance/index.vue'), + name: 'processInstance', + meta: { + noCache: true, + hidden: true, + canTo: true, + title: '流程办理', + activeMenu: 'bpm/processInstance/index' + } } ] }, diff --git a/src/views/bpm/processInstance/index.vue b/src/views/bpm/processInstance/index.vue index 0d153cfb..9f43d087 100644 --- a/src/views/bpm/processInstance/index.vue +++ b/src/views/bpm/processInstance/index.vue @@ -1,64 +1,215 @@ From dbf51ff89c90de6f1f9db8fd45c26b07787418c7 Mon Sep 17 00:00:00 2001 From: Chika Date: Thu, 6 Apr 2023 16:15:48 +0800 Subject: [PATCH 04/36] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=88=91=E7=9A=84?= =?UTF-8?q?=E6=B5=81=E7=A8=8Bprocess.data.ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/bpm/processInstance/process.data.ts | 94 ------------------- 1 file changed, 94 deletions(-) delete mode 100644 src/views/bpm/processInstance/process.data.ts diff --git a/src/views/bpm/processInstance/process.data.ts b/src/views/bpm/processInstance/process.data.ts deleted file mode 100644 index 317e143d..00000000 --- a/src/views/bpm/processInstance/process.data.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas' - -const { t } = useI18n() // 国际化 - -// CrudSchema -const crudSchemas = reactive({ - primaryKey: 'id', - primaryType: null, - primaryTitle: '编号', - action: true, - actionWidth: '200px', - columns: [ - { - title: '编号', - field: 'id', - table: { - width: 320 - } - }, - { - title: '流程名', - field: 'name', - isSearch: true - }, - { - title: '所属流程', - field: 'processDefinitionId', - isSearch: true, - isTable: false - }, - { - title: '流程分类', - field: 'category', - dictType: DICT_TYPE.BPM_MODEL_CATEGORY, - dictClass: 'number', - isSearch: true, - table: { - slots: { - default: 'category_default' - } - } - }, - { - title: '当前审批任务', - field: 'tasks', - table: { - width: 140, - slots: { - default: 'tasks_default' - } - } - }, - { - title: t('common.status'), - field: 'status', - dictType: DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS, - dictClass: 'number', - isSearch: true - }, - { - title: '结果', - field: 'result', - dictType: DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT, - dictClass: 'number', - isSearch: true - }, - { - title: '提交时间', - field: 'createTime', - formatter: 'formatDate', - table: { - width: 180 - }, - isForm: false, - isSearch: true, - search: { - show: true, - itemRender: { - name: 'XDataTimePicker' - } - } - }, - { - title: '结束时间', - field: 'endTime', - formatter: 'formatDate', - table: { - width: 180 - }, - isForm: false - } - ] -}) -export const { allSchemas } = useVxeCrudSchemas(crudSchemas) From 87ac04d9a737f4c1f9f2215b2ce59d87b64eb300 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 6 Apr 2023 19:49:58 +0800 Subject: [PATCH 05/36] =?UTF-8?q?Redis=20=E8=8F=9C=E5=8D=95=E7=9A=84?= =?UTF-8?q?=E9=87=8D=E6=9E=84=EF=BC=8C=E7=A7=BB=E9=99=A4=E5=AF=B9=20key=20?= =?UTF-8?q?=E7=9A=84=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 3 + src/api/infra/redis/index.ts | 36 ----------- src/api/infra/redis/types.ts | 9 --- src/main.ts | 2 + src/plugins/tongji/index.ts | 23 +++++++ src/utils/dict.ts | 1 - src/views/infra/redis/index.vue | 110 ++------------------------------ 7 files changed, 34 insertions(+), 150 deletions(-) create mode 100644 src/plugins/tongji/index.ts diff --git a/.env b/.env index 5f2334a3..a77d490d 100644 --- a/.env +++ b/.env @@ -15,3 +15,6 @@ VITE_APP_CAPTCHA_ENABLE=true # 验证码的开关 VITE_APP_CAPTCHA_ENABLE=true + +# 百度统计 +VITE_APP_BAIDU_CODE = a1ff8825baa73c3a78eb96aa40325abc diff --git a/src/api/infra/redis/index.ts b/src/api/infra/redis/index.ts index 9856fa64..f27be77f 100644 --- a/src/api/infra/redis/index.ts +++ b/src/api/infra/redis/index.ts @@ -6,39 +6,3 @@ import request from '@/config/axios' export const getCache = () => { return request.get({ url: '/infra/redis/get-monitor-info' }) } - -// 获取模块 -export const getKeyDefineList = () => { - return request.get({ url: '/infra/redis/get-key-define-list' }) -} - -/** - * 获取redis key列表 - */ -export const getKeyList = (keyTemplate: string) => { - return request.get({ - url: '/infra/redis/get-key-list', - params: { - keyTemplate - } - }) -} - -// 获取缓存内容 -export const getKeyValue = (key: string) => { - return request.get({ url: '/infra/redis/get-key-value?key=' + key }) -} - -// 根据键名删除缓存 -export const deleteKey = (key: string) => { - return request.delete({ url: '/infra/redis/delete-key?key=' + key }) -} - -export const deleteKeys = (keyTemplate: string) => { - return request.delete({ - url: '/infra/redis/delete-keys?', - params: { - keyTemplate - } - }) -} diff --git a/src/api/infra/redis/types.ts b/src/api/infra/redis/types.ts index 2342e543..548bfe96 100644 --- a/src/api/infra/redis/types.ts +++ b/src/api/infra/redis/types.ts @@ -174,12 +174,3 @@ export interface RedisCommandStatsVO { calls: number usec: number } - -export interface RedisKeyInfo { - keyTemplate: string - keyType: string - valueType: string - timeoutType: number - timeout: number - memo: string -} diff --git a/src/main.ts b/src/main.ts index b3a9da16..f24560b5 100644 --- a/src/main.ts +++ b/src/main.ts @@ -52,6 +52,8 @@ import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css' import hljs from 'highlight.js' //导入代码高亮文件 import 'highlight.js/styles/github.css' //导入代码高亮样式 新版 +import '@/plugins/tongji' // 百度统计 + import Logger from '@/utils/Logger' // 本地开发模式 全局引入 element-plus 样式,加快第一次进入速度 diff --git a/src/plugins/tongji/index.ts b/src/plugins/tongji/index.ts new file mode 100644 index 00000000..ec261a16 --- /dev/null +++ b/src/plugins/tongji/index.ts @@ -0,0 +1,23 @@ +import router from '@/router' + +// 用于 router push +window._hmt = window._hmt || [] +// HM_ID +const HM_ID = import.meta.env.VITE_APP_BAIDU_CODE +;(function () { + // 有值的时候,才开启 + if (!HM_ID) { + return + } + const hm = document.createElement('script') + hm.src = 'https://hm.baidu.com/hm.js?' + HM_ID + const s = document.getElementsByTagName('script')[0] + s.parentNode.insertBefore(hm, s) +})() + +router.afterEach(function (to) { + if (!HM_ID) { + return + } + _hmt.push(['_trackPageview', to.fullPath]) +}) diff --git a/src/utils/dict.ts b/src/utils/dict.ts index 05c70dad..d1d84242 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -112,7 +112,6 @@ export enum DICT_TYPE { // ========== INFRA 模块 ========== INFRA_BOOLEAN_STRING = 'infra_boolean_string', - INFRA_REDIS_TIMEOUT_TYPE = 'infra_redis_timeout_type', INFRA_JOB_STATUS = 'infra_job_status', INFRA_JOB_LOG_STATUS = 'infra_job_log_status', INFRA_API_ERROR_LOG_PROCESS_STATUS = 'infra_api_error_log_process_status', diff --git a/src/views/infra/redis/index.vue b/src/views/infra/redis/index.vue index 30d3cf65..1fd1a120 100644 --- a/src/views/infra/redis/index.vue +++ b/src/views/infra/redis/index.vue @@ -4,6 +4,7 @@ + @@ -47,106 +48,33 @@ +
+
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - {{ cacheForm.key }} - {{ cacheForm.value }} - - - - - From e22363d061eb31214bf2b8c8e0902a5d50952aba Mon Sep 17 00:00:00 2001 From: puhui999 Date: Fri, 7 Apr 2023 10:15:21 +0800 Subject: [PATCH 09/36] =?UTF-8?q?=E5=AE=8C=E5=96=84SSO=E5=8D=95=E7=82=B9?= =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/login/index.ts | 13 ++++++-- src/views/Login/Login.vue | 33 ++++++-------------- src/views/Login/components/LoginForm.vue | 1 - src/views/Login/components/SSOLogin.vue | 38 +++++++++++++++--------- 4 files changed, 43 insertions(+), 42 deletions(-) diff --git a/src/api/login/index.ts b/src/api/login/index.ts index bc60e8c9..07d08370 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -76,7 +76,14 @@ export const reqCheckApi = (data) => { } // ========== OAUTH 2.0 相关 ========== - +export type scopesType = string[] +export interface paramsType { + responseType: string + clientId: string + redirectUri: string + state: string + scopes: scopesType +} export const getAuthorize = (clientId) => { return request.get({ url: '/system/oauth2/authorize?clientId=' + clientId }) } @@ -87,8 +94,8 @@ export function authorize( redirectUri: string, state: string, autoApprove: boolean, - checkedScopes: any, - uncheckedScopes: any + checkedScopes: scopesType, + uncheckedScopes: scopesType ) { // 构建 scopes const scopes = {} diff --git a/src/views/Login/Login.vue b/src/views/Login/Login.vue index 4bd9ff90..a0186ab7 100644 --- a/src/views/Login/Login.vue +++ b/src/views/Login/Login.vue @@ -9,19 +9,19 @@ >
- + {{ underlineToHump(appStore.getTitle) }}
- -
{{ t('login.welcome') }}
-
+ +
{{ t('login.welcome') }}
+
{{ t('login.message') }}
@@ -31,7 +31,7 @@
- + {{ underlineToHump(appStore.getTitle) }}
@@ -52,18 +52,15 @@ - - + +
- diff --git a/src/views/mp/components/wx-editor/quill-options.js b/src/views/mp/components/wx-editor/quill-options.js new file mode 100644 index 00000000..5ec211ae --- /dev/null +++ b/src/views/mp/components/wx-editor/quill-options.js @@ -0,0 +1,45 @@ +const toolbarOptions = [ + ['bold', 'italic', 'underline', 'strike'], // 加粗 斜体 下划线 删除线 + ['blockquote', 'code-block'], // 引用 代码块 + [{ header: 1 }, { header: 2 }], // 1、2 级标题 + [{ list: 'ordered' }, { list: 'bullet' }], // 有序、无序列表 + [{ script: 'sub' }, { script: 'super' }], // 上标/下标 + [{ indent: '-1' }, { indent: '+1' }], // 缩进 + // [{'direction': 'rtl'}], // 文本方向 + [{ size: ['small', false, 'large', 'huge'] }], // 字体大小 + [{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题 + [{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色 + [{ font: [] }], // 字体种类 + [{ align: [] }], // 对齐方式 + ['clean'], // 清除文本格式 + ['link', 'image', 'video'] // 链接、图片、视频 +] + +export default { + theme: 'snow', + placeholder: '请输入文章内容', + modules: { + toolbar: { + container: toolbarOptions, + // container: "#toolbar", + handlers: { + image: function (value) { + if (value) { + // 触发input框选择图片文件 + document.querySelector('.avatar-uploader input').click() + } else { + this.quill.format('image', false) + } + }, + link: function (value) { + if (value) { + const href = prompt('注意!只支持公众号图文链接') + this.quill.format('link', href) + } else { + this.quill.format('link', false) + } + } + } + } + } +} From d5d16e4e392ef84f4faaaf2ec544b7863b2ee72e Mon Sep 17 00:00:00 2001 From: dhb52 Date: Sat, 8 Apr 2023 10:15:11 +0800 Subject: [PATCH 15/36] =?UTF-8?q?feat:=20=E5=BE=AE=E4=BF=A1=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/mp/menu/assets/iphone_backImg.png | Bin 0 -> 34272 bytes src/views/mp/menu/assets/menu_foot.png | Bin 0 -> 1348 bytes src/views/mp/menu/assets/menu_head.png | Bin 0 -> 12673 bytes src/views/mp/menu/index.vue | 792 +++++++++++++++++++- src/views/mp/menu/menuOptions.js | 42 ++ 5 files changed, 833 insertions(+), 1 deletion(-) create mode 100644 src/views/mp/menu/assets/iphone_backImg.png create mode 100644 src/views/mp/menu/assets/menu_foot.png create mode 100644 src/views/mp/menu/assets/menu_head.png create mode 100644 src/views/mp/menu/menuOptions.js diff --git a/src/views/mp/menu/assets/iphone_backImg.png b/src/views/mp/menu/assets/iphone_backImg.png new file mode 100644 index 0000000000000000000000000000000000000000..bb09591a7912730aab07287e0bb2bc4e3383abc5 GIT binary patch literal 34272 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 n1Y$yl2Y%)kp^j~lTlnWvqUJ7=Y>Ul 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 X!lw4y|2_Uwf${mHs$8XvQQ-do;aw2N literal 0 HcmV?d00001 diff --git a/src/views/mp/menu/index.vue b/src/views/mp/menu/index.vue index 497f72ec..a8e3d880 100644 --- a/src/views/mp/menu/index.vue +++ b/src/views/mp/menu/index.vue @@ -1,3 +1,793 @@ + + + + + + diff --git a/src/views/mp/menu/menuOptions.js b/src/views/mp/menu/menuOptions.js new file mode 100644 index 00000000..d86dd789 --- /dev/null +++ b/src/views/mp/menu/menuOptions.js @@ -0,0 +1,42 @@ +export default [ + { + value: 'view', + label: '跳转网页' + }, + { + value: 'miniprogram', + label: '跳转小程序' + }, + { + value: 'click', + label: '点击回复' + }, + { + value: 'article_view_limited', + label: '跳转图文消息' + }, + { + value: 'scancode_push', + label: '扫码直接返回结果' + }, + { + value: 'scancode_waitmsg', + label: '扫码回复' + }, + { + value: 'pic_sysphoto', + label: '系统拍照发图' + }, + { + value: 'pic_photo_or_album', + label: '拍照或者相册' + }, + { + value: 'pic_weixin', + label: '微信相册' + }, + { + value: 'location_select', + label: '选择地理位置' + } +] From 0ffa807343f940ae57b3fadbfccb6733bfba3f5e Mon Sep 17 00:00:00 2001 From: dhb52 Date: Sat, 8 Apr 2023 10:18:10 +0800 Subject: [PATCH 16/36] =?UTF-8?q?feat:=20=E5=BE=AE=E4=BF=A1=E8=8D=89?= =?UTF-8?q?=E7=A8=BF=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/mp/draft/index.vue | 820 ++++++++++++++++++++++++++++++++++- src/views/mp/draft/mock.js | 151 +++++++ 2 files changed, 970 insertions(+), 1 deletion(-) create mode 100644 src/views/mp/draft/mock.js diff --git a/src/views/mp/draft/index.vue b/src/views/mp/draft/index.vue index 497f72ec..6a4fa31a 100644 --- a/src/views/mp/draft/index.vue +++ b/src/views/mp/draft/index.vue @@ -1,3 +1,821 @@ + + + + diff --git a/src/views/mp/draft/mock.js b/src/views/mp/draft/mock.js new file mode 100644 index 00000000..e8493f6c --- /dev/null +++ b/src/views/mp/draft/mock.js @@ -0,0 +1,151 @@ +export default { + list: [ + { + mediaId: 'r6ryvl6LrxBU0miaST4Y-q-G9pdsmZw0OYG4FzHQkKfpLfEwIH51wy2bxisx8PvW', + content: { + newsItem: [ + { + title: '我是标题(OOO)', + author: '我是作者', + digest: '我是摘要', + content: '我是内容', + contentSourceUrl: 'https://www.iocoder.cn', + thumbMediaId: 'r6ryvl6LrxBU0miaST4Y-pIcmK-zAAId-9TGgy-DrSLhjVuWbuT3ZBjk9K1yQ0Dn', + showCoverPic: 0, + needOpenComment: 0, + onlyFansCanComment: 0, + url: 'http://mp.weixin.qq.com/s?__biz=MzA3NjM4MzQzOQ==&tempkey=MTIxMl9XaFphcmtJVFh3VEc4Q1MxQWwxQ3R5R0JGTXBDM1Q0N2ZFQm8zeUphOFlwNEpXSWxTYm9RQnJ6cHVuN2QxTE56SFBCYXc2RE9NcUxIeS1CQjJuUHhTWjBlN2VOeGRpRi1fZUhwN1FNQjdrQV9yRU9EU0hibHREZmZoVW5acnZrN3ZjaWsxejR3RGpKczBzTHFIM0dFNFZWVkpBc0dWWlAzUEhlVmpnfn4%3D&chksm=1f6354802814dd969ef83c0f3babe555c614270b30bc383beaf7ffd13b0257f0fe5ced9af694#rd', + thumbUrl: + 'http://test.yudao.iocoder.cn/r6ryvl6LrxBU0miaST4Y-pIcmK-zAAId-9TGgy-DrSLhjVuWbuT3ZBjk9K1yQ0Dn.png' + }, + { + title: '我是标题(XXX)', + author: '我是作者', + digest: '我是摘要', + content: '我是内容', + contentSourceUrl: 'https://www.iocoder.cn', + thumbMediaId: 'r6ryvl6LrxBU0miaST4Y-pIcmK-zAAId-9TGgy-DrSLhjVuWbuT3ZBjk9K1yQ0Dn', + showCoverPic: 0, + needOpenComment: 0, + onlyFansCanComment: 0, + url: 'http://mp.weixin.qq.com/s?__biz=MzA3NjM4MzQzOQ==&tempkey=MTIxMl9yTlYwOEs1clpwcE5OUEhCQWwxQ3R5R0JGTXBDM1Q0N2ZFQm8zeUphOFlwNEpXSWxTYm9RQnJ6cHVuN0NSMjFqN3N1aUZMbFNVLTZHN2ZDME9qOGp2THk2RFNlSTlKZ3Y1czFVZDdQQm5IeUg3dEppSUtpQUh5SExOOTRkT3dHNUdBdHdWSWlOendlREV3dS1jUEVQbFpiVTZmVW5iRWhZcGdkNTFRfn4%3D&chksm=1f6354802814dd96a403151cd44c7da4eecf0e475d25423e46ecd795b513bafd829a75daef9b#rd', + thumbUrl: + 'http://test.yudao.iocoder.cn/r6ryvl6LrxBU0miaST4Y-pIcmK-zAAId-9TGgy-DrSLhjVuWbuT3ZBjk9K1yQ0Dn.png' + } + ] + }, + updateTime: 1673655730 + }, + { + mediaId: 'r6ryvl6LrxBU0miaST4Y-jGpXnO73ihN0lsNXknCRQHapp2xgHMRxHKG50LituFe', + content: { + newsItem: [ + { + title: '我是标题(修改)', + author: '我是作者', + digest: '我是摘要', + content: '我是内容', + contentSourceUrl: 'https://www.iocoder.cn', + thumbMediaId: 'r6ryvl6LrxBU0miaST4Y-pIcmK-zAAId-9TGgy-DrSLhjVuWbuT3ZBjk9K1yQ0Dn', + showCoverPic: 0, + needOpenComment: 0, + onlyFansCanComment: 0, + url: 'http://mp.weixin.qq.com/s?__biz=MzA3NjM4MzQzOQ==&tempkey=MTIxMl95WVFXYndIZnZJd0t5cjgvQWwxQ3R5R0JGTXBDM1Q0N2ZFQm8zeUphOFlwNEpXSWxTYm9RQnJ6cHVuN1dlNURPbWswbEF4RDd5dVJTdjQ4cm9Cc0Q1TWhpMUh6SE1hVEE3ZHljaHhlZjZYSGF5N2JNSHpDTlh6ajNZbkpGTGpTcUQ4M3NMdW41ZUpXNFZZQ1VKbVlaMVp5ekxEV1czREdsY1dOYTZnfn4%3D&chksm=1f6354be2814dda8e6238037c2ebd52b1c8e80e93249a861ad80e4d40e5ca7207233475ca689#rd', + thumbUrl: + 'http://test.yudao.iocoder.cn/r6ryvl6LrxBU0miaST4Y-pIcmK-zAAId-9TGgy-DrSLhjVuWbuT3ZBjk9K1yQ0Dn.png' + } + ] + }, + updateTime: 1673655584 + }, + { + mediaId: 'r6ryvl6LrxBU0miaST4Y-v5SrbNCPpD6M_p3TmSrYwTjKogs-0DMJgmjMyNZPeMO', + content: { + newsItem: [ + { + title: '1321', + author: '3232', + digest: '1333', + content: '

444

', + contentSourceUrl: 'http://www.iocoder.cn', + thumbMediaId: 'r6ryvl6LrxBU0miaST4Y-tlQmcl3RdC-Jcgns6IQtf7zenGy3b86WLT7GzUcrb1T', + showCoverPic: 0, + needOpenComment: 0, + onlyFansCanComment: 0, + url: 'http://mp.weixin.qq.com/s?__biz=MzA3NjM4MzQzOQ==&tempkey=MTIxMl9jelJiaDAzbmdpSkJOZ2M2QWwxQ3R5R0JGTXBDM1Q0N2ZFQm8zeUphOFlwNEpXSWxTYm9RQnJ6cHVuNDNXVVc2ZDRYeTY0Zm1weXR6dE9vQWh1TzEwbEpUVnRfVzJyaGFDNXBkZ0ZXM2JFOTNaRHNhOHRUeFdEanhMeS01X01kMUNWQ1BpRER3cjYwTl9pMnpFLUJhZXFucVVfM1pDUXlTUEl1S25nfn4%3D&chksm=1f6354bc2814ddaa56a90ad5bc3d078601c8d1589ba01827a8170587bc830ff9747b5f59c3a0#rd', + thumbUrl: + 'http://mmbiz.qpic.cn/mmbiz_png/btUmCVHwbJUoicwBiacjVeQbu6QxgBVrukfSJXz509boa21SpH8OVHAqXCJiaiaAaHQJNxwwsa0gHRXVr0G5EZYamw/0?wx_fmt=png' + } + ] + }, + updateTime: 1673628969 + }, + { + mediaId: 'r6ryvl6LrxBU0miaST4Y-vdWrisK5EZbk4Y3tzh8P0PG0eEUbnQrh0BcsEb3WNP0', + content: { + newsItem: [ + { + title: 'tudou', + author: 'haha', + digest: '312', + content: '

132312

', + contentSourceUrl: 'http://www.iocoder.cn', + thumbMediaId: 'r6ryvl6LrxBU0miaST4Y-pgFtUNLu1foMSAMkoOsrQrTZ8EtTMssBLfTtzP0dfjG', + showCoverPic: 0, + needOpenComment: 0, + onlyFansCanComment: 0, + url: 'http://mp.weixin.qq.com/s?__biz=MzA3NjM4MzQzOQ==&tempkey=MTIxMl9qdkJ1ZjBoUmg2Uk9TS3RlQWwxQ3R5R0JGTXBDM1Q0N2ZFQm8zeUphOFlwNEpXSWxTYm9RQnJ6cHVuNVg2aTJsaC1fMkU2eXNacUplN3VDTTZFZkhtMjhuTUZvWkxsNDBRSXExY2tiVXRHb09TaHgtREhzY3doZ0JYeC1TSTZ5eWZldXJsOWtfbV8yMi1aYkcyZ2pOY0haM0Ntb3VSWEtxUGVFRlNBfn4%3D&chksm=1f6354ba2814ddacf0184b24d310483641ef190b1faac098c285eb416c70017e2f54decfa1af#rd', + thumbUrl: + 'http://test.yudao.iocoder.cn/r6ryvl6LrxBU0miaST4Y-pgFtUNLu1foMSAMkoOsrQrTZ8EtTMssBLfTtzP0dfjG.png' + } + ] + }, + updateTime: 1673628760 + }, + { + mediaId: 'r6ryvl6LrxBU0miaST4Y-u9kTIm1DhWZDdXyxsxUVv2Z5DAB99IPxkIRTUUD206k', + content: { + newsItem: [ + { + title: '12', + author: '333', + digest: '123', + content: '123', + contentSourceUrl: 'https://www.iocoder.cn', + thumbMediaId: 'r6ryvl6LrxBU0miaST4Y-jVixJGgnBnkBPRbuVptOW0CHYuQFyiOVNtamctS8xU8', + showCoverPic: 0, + needOpenComment: 0, + onlyFansCanComment: 0, + url: 'http://mp.weixin.qq.com/s?__biz=MzA3NjM4MzQzOQ==&tempkey=MTIxMl9qVVhpSDZUaFJWTzBBWWRVQWwxQ3R5R0JGTXBDM1Q0N2ZFQm8zeUphOFlwNEpXSWxTYm9RQnJ6cHVuNWRnTDJWYmF2NER0clV1bThmQ0xUR3hqQnJkZ3BJSUNmNDJmc0lCZ1dadkVnZ3Z5bkN4YWtVUjhoaWZWYzZURUR4NnpMd0Y4Z3U5aUdib0lkMzI4Rjg3SG9JX2FycTMxbUctOHplaTlQVVhnfn4%3D&chksm=1f6354b62814dda076c778af33f06580165d8aa81f7798d55cfabb1886b5c74d9b2124a3535c#rd', + thumbUrl: + 'http://test.yudao.iocoder.cn/r6ryvl6LrxBU0miaST4Y-jVixJGgnBnkBPRbuVptOW0CHYuQFyiOVNtamctS8xU8.jpg' + } + ] + }, + updateTime: 1673626494 + }, + { + mediaId: 'r6ryvl6LrxBU0miaST4Y-sO24upobaENDmeByfBTfaozB3aOqSMAV0lGy-UkHXE7', + content: { + newsItem: [ + { + title: '我是标题', + author: '我是作者', + digest: '我是摘要', + content: '我是内容', + contentSourceUrl: 'https://www.iocoder.cn', + thumbMediaId: 'r6ryvl6LrxBU0miaST4Y-pIcmK-zAAId-9TGgy-DrSLhjVuWbuT3ZBjk9K1yQ0Dn', + showCoverPic: 0, + needOpenComment: 0, + onlyFansCanComment: 0, + url: 'http://mp.weixin.qq.com/s?__biz=MzA3NjM4MzQzOQ==&tempkey=MTIxMl9LT2dqRnpMNUpsR0hjYWtBQWwxQ3R5R0JGTXBDM1Q0N2ZFQm8zeUphOFlwNEpXSWxTYm9RQnJ6cHVuNGNmazZTdlE5WkxvU0tfX2V5cjV2WjJiR0xjQUhyREFSZWo2eWNrUW9EYVh6ZkpWRXBLR3FmTEV6YldBMno3Q2ZvVXBSdzlaVDc3aFhndEpQWUwzWmFMUWt0YVVURE1VZ1FsQTdPMlRtc3JBfn4%3D&chksm=1f6354aa2814ddbcc2637382f963a8742993ac38ebcebe6e3411df5ac82ac7bbdb391be6494a#rd', + thumbUrl: + 'http://test.yudao.iocoder.cn/r6ryvl6LrxBU0miaST4Y-pIcmK-zAAId-9TGgy-DrSLhjVuWbuT3ZBjk9K1yQ0Dn.png' + } + ] + }, + updateTime: 1673534279 + } + ], + total: 6 +} From df57191cf00d8f26b3bc3f79c63987775746e2c0 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 8 Apr 2023 11:48:37 +0800 Subject: [PATCH 17/36] =?UTF-8?q?=E6=89=80=E6=9C=89=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E7=9A=84=20name=20=E9=83=BD=E5=8A=A0=E4=B8=8A=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E7=9A=84=E5=89=8D=E7=BC=80=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/modules/remaining.ts | 40 +++-------- src/types/auto-components.d.ts | 1 + src/views/bpm/definition/index.vue | 2 +- src/views/bpm/form/index.vue | 5 +- src/views/bpm/group/index.vue | 2 +- src/views/bpm/model/editor/index.vue | 2 +- src/views/bpm/model/index.vue | 6 +- .../bpm/processInstance/create/index.vue | 2 +- .../bpm/processInstance/detail/index.vue | 2 +- src/views/bpm/processInstance/index.vue | 4 +- src/views/bpm/task/done/index.vue | 2 +- src/views/bpm/task/todo/index.vue | 2 +- src/views/bpm/taskAssignRule/index.vue | 2 +- src/views/infra/apiAccessLog/index.vue | 2 +- src/views/infra/apiErrorLog/index.vue | 3 +- src/views/infra/build/index.vue | 2 +- src/views/infra/codegen/index.vue | 2 +- src/views/infra/config/index.vue | 2 +- src/views/infra/dataSourceConfig/index.vue | 2 +- src/views/infra/dbDoc/index.vue | 2 +- src/views/infra/druid/index.vue | 2 +- src/views/infra/file/FileForm.vue | 67 +++++++++++++------ src/views/infra/file/index.vue | 17 +++-- src/views/infra/fileConfig/index.vue | 19 +++++- src/views/infra/job/index.vue | 2 +- src/views/infra/job/logger/index.vue | 2 +- src/views/infra/redis/index.vue | 2 +- src/views/infra/server/index.vue | 2 +- src/views/infra/skywalking/index.vue | 2 +- src/views/infra/swagger/index.vue | 2 +- .../mall/product/category/CategoryForm.vue | 2 +- src/views/mall/product/property/index.vue | 2 +- .../mall/product/property/value/index.vue | 2 +- src/views/mp/freePublish/index.vue | 2 +- src/views/pay/app/index.vue | 2 +- src/views/pay/merchant/index.vue | 2 +- src/views/pay/order/index.vue | 2 +- src/views/pay/refund/index.vue | 2 +- src/views/system/area/index.vue | 2 +- src/views/system/dept/index.vue | 2 +- src/views/system/dict/data/index.vue | 2 +- src/views/system/dict/index.vue | 2 +- src/views/system/errorCode/index.vue | 2 +- src/views/system/loginlog/index.vue | 2 +- src/views/system/mail/account/index.vue | 2 +- src/views/system/mail/log/index.vue | 2 +- src/views/system/mail/template/index.vue | 2 +- src/views/system/menu/index.vue | 2 +- src/views/system/notice/index.vue | 2 +- src/views/system/notify/message/index.vue | 2 +- src/views/system/notify/my/index.vue | 2 +- src/views/system/notify/template/index.vue | 2 +- src/views/system/oauth2/client/index.vue | 2 +- src/views/system/oauth2/token/index.vue | 2 +- src/views/system/operatelog/index.vue | 2 +- src/views/system/post/index.vue | 3 +- src/views/system/role/index.vue | 2 +- src/views/system/sensitiveWord/index.vue | 2 +- src/views/system/sms/channel/index.vue | 2 +- src/views/system/sms/log/index.vue | 2 +- src/views/system/sms/template/index.vue | 2 +- src/views/system/tenant/index.vue | 3 +- src/views/system/tenantPackage/index.vue | 2 +- src/views/system/user/index.vue | 2 +- 64 files changed, 144 insertions(+), 130 deletions(-) diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index aa98ebc0..11420a07 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -116,7 +116,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ { path: 'type/data/:dictType', component: () => import('@/views/system/dict/data/index.vue'), - name: 'data', + name: 'SystemDictData', meta: { title: '字典数据', noCache: true, @@ -140,7 +140,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ { path: 'edit', component: () => import('@/views/infra/codegen/EditTable.vue'), - name: 'EditTable', + name: 'InfraCodegenEditTable', meta: { noCache: true, hidden: true, @@ -163,7 +163,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ { path: 'job-log', component: () => import('@/views/infra/job/logger/index.vue'), - name: 'JobLog', + name: 'InfraJobLog', meta: { noCache: true, hidden: true, @@ -226,7 +226,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ { path: '/manager/form/edit', component: () => import('@/views/bpm/form/editor/index.vue'), - name: 'bpmFormEditor', + name: 'BpmFormEditor', meta: { noCache: true, hidden: true, @@ -238,7 +238,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ { path: '/manager/model/edit', component: () => import('@/views/bpm/model/editor/index.vue'), - name: 'modelEditor', + name: 'BpmModelEditor', meta: { noCache: true, hidden: true, @@ -250,7 +250,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ { path: '/manager/definition', component: () => import('@/views/bpm/definition/index.vue'), - name: 'BpmProcessDefinitionList', + name: 'BpmProcessDefinition', meta: { noCache: true, hidden: true, @@ -262,7 +262,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ { path: '/manager/task-assign-rule', component: () => import('@/views/bpm/taskAssignRule/index.vue'), - name: 'BpmTaskAssignRuleList', + name: 'BpmTaskAssignRule', meta: { noCache: true, hidden: true, @@ -305,30 +305,6 @@ const remainingRouter: AppRouteRecordRaw[] = [ title: '发起 OA 请假', activeMenu: 'bpm/oa/leave/create' } - }, - { - path: '/bpm/task/todo', - component: () => import('@/views/bpm/task/todo/index.vue'), - name: 'TaskTodo', - meta: { - noCache: true, - hidden: true, - canTo: true, - title: '代办任务', - activeMenu: 'bpm/task/todo/index' - } - }, - { - path: '/bpm/processInstance', - component: () => import('@/views/bpm/processInstance/index.vue'), - name: 'processInstance', - meta: { - noCache: true, - hidden: true, - canTo: true, - title: '流程办理', - activeMenu: 'bpm/processInstance/index' - } } ] }, @@ -343,7 +319,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ { path: 'value/:propertyId(\\d+)', component: () => import('@/views/mall/product/property/value/index.vue'), - name: 'PropertyValue', + name: 'ProductPropertyValue', meta: { title: '商品属性值', icon: '', activeMenu: '/product/property' } } ] diff --git a/src/types/auto-components.d.ts b/src/types/auto-components.d.ts index c7ff571c..f93f11f6 100644 --- a/src/types/auto-components.d.ts +++ b/src/types/auto-components.d.ts @@ -77,6 +77,7 @@ declare module '@vue/runtime-core' { ElTimeline: typeof import('element-plus/es')['ElTimeline'] ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTree: typeof import('element-plus/es')['ElTree'] ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] ElUpload: typeof import('element-plus/es')['ElUpload'] Error: typeof import('./../components/Error/src/Error.vue')['default'] diff --git a/src/views/bpm/definition/index.vue b/src/views/bpm/definition/index.vue index 66a6a23b..4fa86db9 100644 --- a/src/views/bpm/definition/index.vue +++ b/src/views/bpm/definition/index.vue @@ -93,7 +93,7 @@ - diff --git a/src/views/infra/file/index.vue b/src/views/infra/file/index.vue index 6e709ec7..91d7639e 100644 --- a/src/views/infra/file/index.vue +++ b/src/views/infra/file/index.vue @@ -1,9 +1,14 @@ - - From 276e82c5a834cedb0fb3a36e13f69ed87187cddf Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 9 Apr 2023 00:21:27 +0800 Subject: [PATCH 27/36] =?UTF-8?q?REVIEW=20=E5=8D=95=E7=82=B9=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/login/index.ts | 55 ------ src/api/login/oauth2/index.ts | 41 ++++ src/api/login/types.ts | 14 -- src/locales/zh-CN.ts | 6 - src/types/auto-components.d.ts | 1 + src/views/Login/components/SSOLogin.vue | 241 ++++++++++++------------ 6 files changed, 162 insertions(+), 196 deletions(-) create mode 100644 src/api/login/oauth2/index.ts diff --git a/src/api/login/index.ts b/src/api/login/index.ts index 24f356ed..536f6a66 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -1,13 +1,6 @@ import request from '@/config/axios' import { getRefreshToken } from '@/utils/auth' import type { UserLoginVO } from './types' -import { service } from '@/config/axios/service' - -export interface CodeImgResult { - captchaOnOff: boolean - img: string - uuid: string -} export interface SmsCodeVO { mobile: string @@ -74,51 +67,3 @@ export const getCode = (data) => { export const reqCheck = (data) => { return request.postOriginal({ url: 'system/captcha/check', data }) } - -// ========== OAUTH 2.0 相关 ========== -export type scopesType = string[] -export interface paramsType { - responseType: string - clientId: string - redirectUri: string - state: string - scopes: scopesType -} -export const getAuthorize = (clientId) => { - return request.get({ url: '/system/oauth2/authorize?clientId=' + clientId }) -} - -export function authorize( - responseType: string, - clientId: string, - redirectUri: string, - state: string, - autoApprove: boolean, - checkedScopes: scopesType, - uncheckedScopes: scopesType -) { - // 构建 scopes - const scopes = {} - for (const scope of checkedScopes) { - scopes[scope] = true - } - for (const scope of uncheckedScopes) { - scopes[scope] = false - } - // 发起请求 - return service({ - url: '/system/oauth2/authorize', - headers: { - 'Content-type': 'application/x-www-form-urlencoded' - }, - params: { - response_type: responseType, - client_id: clientId, - redirect_uri: redirectUri, - state: state, - auto_approve: autoApprove, - scope: JSON.stringify(scopes) - }, - method: 'post' - }) -} diff --git a/src/api/login/oauth2/index.ts b/src/api/login/oauth2/index.ts new file mode 100644 index 00000000..aef1820d --- /dev/null +++ b/src/api/login/oauth2/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +// 获得授权信息 +export const getAuthorize = (clientId: string) => { + return request.get({ url: '/system/oauth2/authorize?clientId=' + clientId }) +} + +// 发起授权 +export const authorize = ( + responseType: string, + clientId: string, + redirectUri: string, + state: string, + autoApprove: boolean, + checkedScopes: string[], + uncheckedScopes: string[] +) => { + // 构建 scopes + const scopes = {} + for (const scope of checkedScopes) { + scopes[scope] = true + } + for (const scope of uncheckedScopes) { + scopes[scope] = false + } + // 发起请求 + return request.post({ + url: '/system/oauth2/authorize', + headers: { + 'Content-type': 'application/x-www-form-urlencoded' + }, + params: { + response_type: responseType, + client_id: clientId, + redirect_uri: redirectUri, + state: state, + auto_approve: autoApprove, + scope: JSON.stringify(scopes) + } + }) +} diff --git a/src/api/login/types.ts b/src/api/login/types.ts index 1a91aecc..b2173f72 100644 --- a/src/api/login/types.ts +++ b/src/api/login/types.ts @@ -26,17 +26,3 @@ export type UserVO = { loginIp: string loginDate: string } - -export type UserInfoVO = { - permissions: [] - roles: [] - user: { - avatar: string - id: number - nickname: string - } -} - -export type TentantNameVO = { - name: string -} diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index da706bb3..cc4bb47e 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -129,12 +129,6 @@ export default { btnMobile: '手机登录', btnQRCode: '二维码登录', qrcode: '扫描二维码登录', - sso: { - user: { - read: '访问你的个人信息', - write: '修改你的个人信息' - } - }, btnRegister: '注册', SmsSendMsg: '验证码已发送' }, diff --git a/src/types/auto-components.d.ts b/src/types/auto-components.d.ts index 431f086f..caea7348 100644 --- a/src/types/auto-components.d.ts +++ b/src/types/auto-components.d.ts @@ -21,6 +21,7 @@ declare module '@vue/runtime-core' { Descriptions: typeof import('./../components/Descriptions/src/Descriptions.vue')['default'] Dialog: typeof import('./../components/Dialog/src/Dialog.vue')['default'] DictTag: typeof import('./../components/DictTag/src/DictTag.vue')['default'] + DocAlert: typeof import('./../components/DocAlert/index.vue')['default'] Echart: typeof import('./../components/Echart/src/Echart.vue')['default'] Editor: typeof import('./../components/Editor/src/Editor.vue')['default'] ElBadge: typeof import('element-plus/es')['ElBadge'] diff --git a/src/views/Login/components/SSOLogin.vue b/src/views/Login/components/SSOLogin.vue index 8efd57f9..acaf38a5 100644 --- a/src/views/Login/components/SSOLogin.vue +++ b/src/views/Login/components/SSOLogin.vue @@ -1,178 +1,178 @@ From 46bf186ecc7088ce0c8643a26f95179c0a1162b8 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Sun, 9 Apr 2023 00:39:52 +0800 Subject: [PATCH 28/36] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dtoken=E8=BF=87=E6=9C=9F?= =?UTF-8?q?=E6=97=B6=E8=B7=AF=E7=94=B1=E8=B7=B3=E8=BD=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/axios/service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/axios/service.ts b/src/config/axios/service.ts index d37dfb06..1a4741b6 100644 --- a/src/config/axios/service.ts +++ b/src/config/axios/service.ts @@ -230,7 +230,8 @@ const handleAuthorized = () => { wsCache.clear() removeToken() isRelogin.show = false - window.location.href = '/login?redirect=/sso?' + window.location.href.split('?')[1] + // 干掉token后再走一次路由让它过router.beforeEach的校验 + window.location.href = window.location.href }) } return Promise.reject(t('sys.api.timeoutMessage')) From d16ff6ff1c9d5c2b3cd2fc5c116c0d590a3cd562 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 9 Apr 2023 09:56:42 +0800 Subject: [PATCH 29/36] =?UTF-8?q?REVIEW=20=E5=85=AC=E4=BC=97=E5=8F=B7?= =?UTF-8?q?=E7=B4=A0=E6=9D=90=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../penal/signal-message/SignalAndMessage.vue | 10 +- src/types/auto-components.d.ts | 2 + src/views/mp/draft/index.vue | 6 +- src/views/mp/material/index.vue | 96 +++++++++---------- src/views/mp/menu/index.vue | 3 +- 5 files changed, 53 insertions(+), 64 deletions(-) diff --git a/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue b/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue index e2c406db..2d47b8f0 100644 --- a/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue +++ b/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue @@ -23,7 +23,7 @@ @@ -49,7 +49,7 @@ const message = useMessage() const signalList = ref([]) const messageList = ref([]) -const modelVisible = ref(false) +const dialogVisible = ref(false) const modelType = ref('') const modelObjectForm = ref({}) const rootElements = ref() @@ -85,7 +85,7 @@ const initDataList = () => { const openModel = (type) => { modelType.value = type modelObjectForm.value = {} - modelVisible.value = true + dialogVisible.value = true } const addNewObject = () => { if (modelType.value === 'message') { @@ -101,7 +101,7 @@ const addNewObject = () => { const signalRef = bpmnInstances().moddle.create('bpmn:Signal', modelObjectForm.value) rootElements.value.push(signalRef) } - modelVisible.value = false + dialogVisible.value = false initDataList() } diff --git a/src/types/auto-components.d.ts b/src/types/auto-components.d.ts index caea7348..6b2e9456 100644 --- a/src/types/auto-components.d.ts +++ b/src/types/auto-components.d.ts @@ -24,6 +24,7 @@ declare module '@vue/runtime-core' { DocAlert: typeof import('./../components/DocAlert/index.vue')['default'] Echart: typeof import('./../components/Echart/src/Echart.vue')['default'] Editor: typeof import('./../components/Editor/src/Editor.vue')['default'] + ElAlert: typeof import('element-plus/es')['ElAlert'] ElBadge: typeof import('element-plus/es')['ElBadge'] ElButton: typeof import('element-plus/es')['ElButton'] ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] @@ -74,6 +75,7 @@ declare module '@vue/runtime-core' { ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTabPane: typeof import('element-plus/es')['ElTabPane'] ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTree: typeof import('element-plus/es')['ElTree'] ElUpload: typeof import('element-plus/es')['ElUpload'] diff --git a/src/views/mp/draft/index.vue b/src/views/mp/draft/index.vue index d2ed1e24..ab5d5218 100644 --- a/src/views/mp/draft/index.vue +++ b/src/views/mp/draft/index.vue @@ -247,10 +247,8 @@ diff --git a/src/views/mp/material/index.vue b/src/views/mp/material/index.vue index df4921fd..c723e2fb 100644 --- a/src/views/mp/material/index.vue +++ b/src/views/mp/material/index.vue @@ -1,32 +1,32 @@
- 新建视频 + 新建视频
{{ formatDate(scope.row.createTime) }} - + - - + - - From 66856ae05258d6066a9227c6a2836e6615049230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=92=B1=E5=93=A5=E4=B8=B6?= <385454831@qq.com> Date: Sun, 9 Apr 2023 12:27:22 +0800 Subject: [PATCH 31/36] =?UTF-8?q?=E9=87=8D=E6=9E=84VUE3=E3=80=90OA?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B-=E8=AF=B7=E5=81=87=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/bpm/oa/leave/create.vue | 143 ++++++++++----- src/views/bpm/oa/leave/detail.vue | 66 ++++--- src/views/bpm/oa/leave/index.vue | 262 +++++++++++++++++++++------ src/views/bpm/oa/leave/leave.data.ts | 91 ---------- 4 files changed, 337 insertions(+), 225 deletions(-) delete mode 100644 src/views/bpm/oa/leave/leave.data.ts diff --git a/src/views/bpm/oa/leave/create.vue b/src/views/bpm/oa/leave/create.vue index 9e99e814..dd932627 100644 --- a/src/views/bpm/oa/leave/create.vue +++ b/src/views/bpm/oa/leave/create.vue @@ -1,56 +1,107 @@ diff --git a/src/views/bpm/oa/leave/detail.vue b/src/views/bpm/oa/leave/detail.vue index e35de6e5..31e54de3 100644 --- a/src/views/bpm/oa/leave/detail.vue +++ b/src/views/bpm/oa/leave/detail.vue @@ -1,42 +1,40 @@ - diff --git a/src/views/bpm/oa/leave/index.vue b/src/views/bpm/oa/leave/index.vue index 22d86dfe..c6979f1a 100644 --- a/src/views/bpm/oa/leave/index.vue +++ b/src/views/bpm/oa/leave/index.vue @@ -1,83 +1,237 @@ + + + + + + + + + + + 搜索 + 重置 + 发起请假 + + + - diff --git a/src/views/bpm/oa/leave/leave.data.ts b/src/views/bpm/oa/leave/leave.data.ts deleted file mode 100644 index 5b6f2c52..00000000 --- a/src/views/bpm/oa/leave/leave.data.ts +++ /dev/null @@ -1,91 +0,0 @@ -import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas' - -const { t } = useI18n() // 国际化 - -// 表单校验 -export const rules = reactive({ - startTime: [{ required: true, message: '开始时间不能为空', trigger: 'blur' }], - endTime: [{ required: true, message: '结束时间不能为空', trigger: 'blur' }], - type: [{ required: true, message: '请假类型不能为空', trigger: 'change' }] -}) - -// crudSchemas -const crudSchemas = reactive({ - primaryKey: 'id', - primaryType: 'id', - primaryTitle: '申请编号', - action: true, - actionWidth: '260', - searchSpan: 8, - columns: [ - { - title: t('common.status'), - field: 'result', - dictType: DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT, - dictClass: 'number', - isSearch: true, - isForm: false - }, - { - title: t('common.startTimeText'), - field: 'startTime', - formatter: 'formatDay', - table: { - width: 180 - }, - detail: { - dateFormat: 'YYYY-MM-DD' - }, - form: { - component: 'DatePicker' - } - }, - { - title: t('common.endTimeText'), - field: 'endTime', - formatter: 'formatDay', - table: { - width: 180 - }, - detail: { - dateFormat: 'YYYY-MM-DD' - }, - form: { - component: 'DatePicker' - } - }, - { - title: '请假类型', - field: 'type', - dictType: DICT_TYPE.BPM_OA_LEAVE_TYPE, - dictClass: 'number', - isSearch: true - }, - { - title: '原因', - field: 'reason', - isSearch: true, - componentProps: { - type: 'textarea', - rows: 4 - } - }, - { - title: '申请时间', - field: 'createTime', - formatter: 'formatDate', - table: { - width: 180 - }, - isSearch: true, - search: { - show: true, - itemRender: { - name: 'XDataTimePicker' - } - }, - isForm: false - } - ] -}) -export const { allSchemas } = useVxeCrudSchemas(crudSchemas) From 4465220ed76f8e44fd5822481c858044cb6f9667 Mon Sep 17 00:00:00 2001 From: dhb52 Date: Sun, 9 Apr 2023 13:08:19 +0800 Subject: [PATCH 32/36] =?UTF-8?q?fix:=20size=3D"mini"=20&=20=20type=3D"tex?= =?UTF-8?q?t"=E8=BF=87=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../package/penal/form/ElementForm.vue | 25 +++++++++++++++---- .../package/penal/listeners/template.js | 8 +++--- src/views/bpm/definition/index.vue | 4 +-- src/views/bpm/model/index.vue | 2 +- .../mp/components/wx-material-select/main.vue | 4 +-- src/views/mp/components/wx-reply/main.vue | 2 +- .../mp/components/wx-voice-play/main.vue | 2 +- 7 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue b/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue index cb96a2fb..cea05550 100644 --- a/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue +++ b/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue @@ -33,9 +33,15 @@ /> @@ -97,7 +103,10 @@