From 4404554cfcd45325b11e422152840eb99de16bcb Mon Sep 17 00:00:00 2001 From: YunaiV <zhijiantianya@gmail.com> Date: Wed, 5 Apr 2023 20:13:35 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E7=BB=9F=E4=B8=80=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=202.=20=E5=A2=9E=E5=8A=A0=20DocAlert=20=E5=85=B3?= =?UTF-8?q?=E8=81=94=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 2 + src/api/bpm/leave/index.ts | 6 +- src/api/bpm/processInstance/index.ts | 8 +-- src/api/infra/config/index.ts | 2 +- src/api/infra/dbDoc/index.ts | 6 +- src/api/infra/job/index.ts | 2 +- src/api/infra/redis/index.ts | 15 +++-- src/api/login/index.ts | 22 +++---- src/api/pay/app/index.ts | 16 +++--- src/api/pay/channel/index.ts | 34 ++--------- src/api/pay/order/index.ts | 12 ++-- src/api/pay/refund/index.ts | 12 ++-- src/api/system/dept/index.ts | 15 ++--- src/api/system/errorCode/index.ts | 20 ++----- src/api/system/menu/index.ts | 2 +- src/api/system/notify/message/index.ts | 4 +- src/api/system/user/profile.ts | 8 +-- src/components/DictTag/src/DictTag.vue | 1 + src/components/DocAlert/index.vue | 32 +++++++++++ .../Verifition/src/Verify/VerifyPoints.vue | 6 +- .../Verifition/src/Verify/VerifySlide.vue | 8 +-- src/layout/components/Message/src/Message.vue | 4 +- src/locales/zh-CN.ts | 3 +- src/router/modules/remaining.ts | 4 +- src/store/modules/permission.ts | 4 +- src/store/modules/user.ts | 6 +- src/types/auto-components.d.ts | 2 + src/views/Login/components/LoginForm.vue | 8 +-- src/views/Login/components/MobileForm.vue | 8 +-- src/views/Profile/components/BasicInfo.vue | 8 +-- src/views/Profile/components/ProfileUser.vue | 4 +- src/views/Profile/components/ResetPwd.vue | 4 +- src/views/Profile/components/UserAvatar.vue | 4 +- src/views/Profile/components/UserSocial.vue | 4 +- src/views/bpm/form/index.vue | 8 +-- src/views/bpm/oa/leave/create.vue | 2 +- src/views/bpm/oa/leave/detail.vue | 2 +- src/views/bpm/oa/leave/index.vue | 4 +- .../bpm/processInstance/create/index.vue | 2 +- .../bpm/processInstance/detail/index.vue | 2 +- src/views/bpm/processInstance/index.vue | 4 +- src/views/infra/apiAccessLog/index.vue | 28 ++++----- src/views/infra/apiErrorLog/index.vue | 2 + src/views/infra/codegen/EditTable.vue | 4 +- src/views/infra/codegen/index.vue | 11 ++-- .../infra/config/{form.vue => ConfigForm.vue} | 4 +- src/views/infra/config/index.vue | 34 +++++------ .../{form.vue => DataSourceConfigForm.vue} | 4 +- src/views/infra/dataSourceConfig/index.vue | 24 ++++---- src/views/infra/dbDoc/index.vue | 10 ++-- src/views/infra/druid/index.vue | 3 + .../infra/file/{form.vue => FileForm.vue} | 9 +-- src/views/infra/file/index.vue | 24 ++++---- .../{form.vue => FileConfigForm.vue} | 5 +- src/views/infra/fileConfig/index.vue | 34 +++++------ src/views/infra/job/index.vue | 16 ++++-- src/views/infra/job/logger/index.vue | 12 ++-- src/views/infra/redis/index.vue | 17 +++--- src/views/infra/server/index.vue | 1 + src/views/infra/skywalking/index.vue | 1 + src/views/infra/swagger/index.vue | 2 + .../mall/product/property/PropertyForm.vue | 6 +- src/views/mp/account/index.vue | 16 +++--- src/views/mp/freePublish/index.vue | 10 ++-- src/views/mp/statistics/index.vue | 8 +-- src/views/mp/tag/index.vue | 2 + src/views/pay/app/index.vue | 14 ++--- src/views/pay/merchant/index.vue | 8 +-- src/views/pay/order/index.vue | 6 +- src/views/pay/refund/index.vue | 6 +- .../system/area/{form.vue => AreaForm.vue} | 4 +- src/views/system/area/index.vue | 22 +++---- src/views/system/dept/DeptForm.vue | 20 +++---- src/views/system/dept/index.vue | 13 +++-- .../dict/{form.vue => DictTypeForm.vue} | 17 +++--- .../{data.form.vue => data/DictDataForm.vue} | 15 ++--- .../system/dict/{data.vue => data/index.vue} | 57 ++++++++++--------- src/views/system/dict/index.vue | 37 ++++++------ .../errorCode/{form.vue => ErrorCodeForm.vue} | 10 ++-- src/views/system/errorCode/index.vue | 54 ++++++++---------- src/views/system/loginlog/index.vue | 10 ++-- .../account/{form.vue => MailAccountForm.vue} | 5 +- src/views/system/mail/account/account.data.ts | 1 - src/views/system/mail/account/index.vue | 24 ++++---- .../log/{detail.vue => MailLogDetail.vue} | 4 +- src/views/system/mail/log/index.vue | 22 +++---- src/views/system/mail/log/log.data.ts | 4 +- .../{form.vue => MailTemplateForm.vue} | 5 +- .../{send.vue => MailTemplateSendForm.vue} | 5 +- src/views/system/mail/template/index.vue | 36 ++++++------ .../system/mail/template/template.data.ts | 8 +-- src/views/system/menu/MenuForm.vue | 2 +- src/views/system/menu/index.vue | 3 + .../notice/{form.vue => NoticeForm.vue} | 15 ++--- src/views/system/notice/index.vue | 31 +++++----- src/views/system/notify/message/index.vue | 10 ++-- src/views/system/notify/my/index.vue | 12 ++-- src/views/system/oauth2/client/index.vue | 11 ++-- src/views/system/oauth2/token/index.vue | 10 ++-- .../{detail.vue => OperateLogDetail.vue} | 4 +- src/views/system/operatelog/index.vue | 30 +++++----- src/views/system/post/PostForm.vue | 12 ++-- src/views/system/post/index.vue | 10 ++-- src/views/system/role/index.vue | 3 + src/views/system/sms/channel/index.vue | 4 +- src/views/system/sms/log/index.vue | 2 + src/views/system/sms/template/index.vue | 4 +- .../tenant/{form.vue => TenantForm.vue} | 0 src/views/system/tenant/index.vue | 10 ++-- src/views/system/tenantPackage/index.vue | 4 +- src/views/system/user/index.vue | 16 ++++-- 111 files changed, 640 insertions(+), 567 deletions(-) create mode 100644 src/components/DocAlert/index.vue rename src/views/infra/config/{form.vue => ConfigForm.vue} (96%) rename src/views/infra/dataSourceConfig/{form.vue => DataSourceConfigForm.vue} (96%) rename src/views/infra/file/{form.vue => FileForm.vue} (91%) rename src/views/infra/fileConfig/{form.vue => FileConfigForm.vue} (98%) rename src/views/system/area/{form.vue => AreaForm.vue} (94%) rename src/views/system/dict/{form.vue => DictTypeForm.vue} (89%) rename src/views/system/dict/{data.form.vue => data/DictDataForm.vue} (92%) rename src/views/system/dict/{data.vue => data/index.vue} (83%) rename src/views/system/errorCode/{form.vue => ErrorCodeForm.vue} (91%) rename src/views/system/mail/account/{form.vue => MailAccountForm.vue} (94%) rename src/views/system/mail/log/{detail.vue => MailLogDetail.vue} (87%) rename src/views/system/mail/template/{form.vue => MailTemplateForm.vue} (94%) rename src/views/system/mail/template/{send.vue => MailTemplateSendForm.vue} (96%) rename src/views/system/notice/{form.vue => NoticeForm.vue} (89%) rename src/views/system/operatelog/{detail.vue => OperateLogDetail.vue} (95%) rename src/views/system/tenant/{form.vue => TenantForm.vue} (100%) diff --git a/.env b/.env index 6307b2d7..5f2334a3 100644 --- a/.env +++ b/.env @@ -13,3 +13,5 @@ VITE_APP_TENANT_ENABLE=true # 验证码的开关 VITE_APP_CAPTCHA_ENABLE=true +# 验证码的开关 +VITE_APP_CAPTCHA_ENABLE=true diff --git a/src/api/bpm/leave/index.ts b/src/api/bpm/leave/index.ts index ff6d86a0..d4e1be73 100644 --- a/src/api/bpm/leave/index.ts +++ b/src/api/bpm/leave/index.ts @@ -12,16 +12,16 @@ export type LeaveVO = { } // 创建请假申请 -export const createLeaveApi = async (data: LeaveVO) => { +export const createLeave = async (data: LeaveVO) => { return await request.post({ url: '/bpm/oa/leave/create', data: data }) } // 获得请假申请 -export const getLeaveApi = async (id: number) => { +export const getLeave = async (id: number) => { return await request.get({ url: '/bpm/oa/leave/get?id=' + id }) } // 获得请假申请分页 -export const getLeavePageApi = async (params) => { +export const getLeavePage = async (params) => { return await request.get({ url: '/bpm/oa/leave/page', params }) } diff --git a/src/api/bpm/processInstance/index.ts b/src/api/bpm/processInstance/index.ts index 95591ae3..10cd3bc8 100644 --- a/src/api/bpm/processInstance/index.ts +++ b/src/api/bpm/processInstance/index.ts @@ -20,15 +20,15 @@ export type ProcessInstanceVO = { endTime: string } -export const getMyProcessInstancePageApi = async (params) => { +export const getMyProcessInstancePage = async (params) => { return await request.get({ url: '/bpm/process-instance/my-page', params }) } -export const createProcessInstanceApi = async (data) => { +export const createProcessInstance = async (data) => { return await request.post({ url: '/bpm/process-instance/create', data: data }) } -export const cancelProcessInstanceApi = async (id: number, reason: string) => { +export const cancelProcessInstance = async (id: number, reason: string) => { const data = { id: id, reason: reason @@ -36,6 +36,6 @@ export const cancelProcessInstanceApi = async (id: number, reason: string) => { return await request.delete({ url: '/bpm/process-instance/cancel', data: data }) } -export const getProcessInstanceApi = async (id: number) => { +export const getProcessInstance = async (id: number) => { return await request.get({ url: '/bpm/process-instance/get?id=' + id }) } diff --git a/src/api/infra/config/index.ts b/src/api/infra/config/index.ts index 07fb52fd..5ef59f33 100644 --- a/src/api/infra/config/index.ts +++ b/src/api/infra/config/index.ts @@ -43,6 +43,6 @@ export const deleteConfig = (id: number) => { } // 导出参数 -export const exportConfigApi = (params) => { +export const exportConfig = (params) => { return request.download({ url: '/infra/config/export', params }) } diff --git a/src/api/infra/dbDoc/index.ts b/src/api/infra/dbDoc/index.ts index 11bce473..1a1a36b4 100644 --- a/src/api/infra/dbDoc/index.ts +++ b/src/api/infra/dbDoc/index.ts @@ -1,16 +1,16 @@ import request from '@/config/axios' // 导出Html -export const exportHtmlApi = () => { +export const exportHtml = () => { return request.download({ url: '/infra/db-doc/export-html' }) } // 导出Word -export const exportWordApi = () => { +export const exportWord = () => { return request.download({ url: '/infra/db-doc/export-word' }) } // 导出Markdown -export const exportMarkdownApi = () => { +export const exportMarkdown = () => { return request.download({ url: '/infra/db-doc/export-markdown' }) } diff --git a/src/api/infra/job/index.ts b/src/api/infra/job/index.ts index c1398d07..033b2cbe 100644 --- a/src/api/infra/job/index.ts +++ b/src/api/infra/job/index.ts @@ -53,7 +53,7 @@ export const updateJobStatus = (id: number, status: number) => { } // 定时任务立即执行一次 -export const runJobApi = (id: number) => { +export const runJob = (id: number) => { return request.put({ url: '/infra/job/trigger?id=' + id }) } diff --git a/src/api/infra/redis/index.ts b/src/api/infra/redis/index.ts index 1214a1da..9856fa64 100644 --- a/src/api/infra/redis/index.ts +++ b/src/api/infra/redis/index.ts @@ -3,17 +3,19 @@ import request from '@/config/axios' /** * 获取redis 监控信息 */ -export const getCacheApi = () => { +export const getCache = () => { return request.get({ url: '/infra/redis/get-monitor-info' }) } + // 获取模块 -export const getKeyDefineListApi = () => { +export const getKeyDefineList = () => { return request.get({ url: '/infra/redis/get-key-define-list' }) } + /** * 获取redis key列表 */ -export const getKeyListApi = (keyTemplate: string) => { +export const getKeyList = (keyTemplate: string) => { return request.get({ url: '/infra/redis/get-key-list', params: { @@ -21,17 +23,18 @@ export const getKeyListApi = (keyTemplate: string) => { } }) } + // 获取缓存内容 -export const getKeyValueApi = (key: string) => { +export const getKeyValue = (key: string) => { return request.get({ url: '/infra/redis/get-key-value?key=' + key }) } // 根据键名删除缓存 -export const deleteKeyApi = (key: string) => { +export const deleteKey = (key: string) => { return request.delete({ url: '/infra/redis/delete-key?key=' + key }) } -export const deleteKeysApi = (keyTemplate: string) => { +export const deleteKeys = (keyTemplate: string) => { return request.delete({ url: '/infra/redis/delete-keys?', params: { diff --git a/src/api/login/index.ts b/src/api/login/index.ts index 0c895663..2255e3cf 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -17,7 +17,7 @@ export interface SmsLoginVO { } // 登录 -export const loginApi = (data: UserLoginVO) => { +export const login = (data: UserLoginVO) => { return request.post({ url: '/system/auth/login', data }) } @@ -27,47 +27,47 @@ export const refreshToken = () => { } // 使用租户名,获得租户编号 -export const getTenantIdByNameApi = (name: string) => { +export const getTenantIdByName = (name: string) => { return request.get({ url: '/system/tenant/get-id-by-name?name=' + name }) } // 登出 -export const loginOutApi = () => { +export const loginOut = () => { return request.post({ url: '/system/auth/logout' }) } // 获取用户权限信息 -export const getInfoApi = () => { +export const getInfo = () => { return request.get({ url: '/system/auth/get-permission-info' }) } // 路由 -export const getAsyncRoutesApi = () => { +export const getAsyncRoutes = () => { return request.get({ url: '/system/auth/list-menus' }) } //获取登录验证码 -export const sendSmsCodeApi = (data: SmsCodeVO) => { +export const sendSmsCode = (data: SmsCodeVO) => { return request.post({ url: '/system/auth/send-sms-code', data }) } // 短信验证码登录 -export const smsLoginApi = (data: SmsLoginVO) => { +export const smsLogin = (data: SmsLoginVO) => { return request.post({ url: '/system/auth/sms-login', data }) } // 社交授权的跳转 -export const socialAuthRedirectApi = (type: number, redirectUri: string) => { +export const socialAuthRedirect = (type: number, redirectUri: string) => { return request.get({ url: '/system/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri }) } -// 获取验证图片 以及token -export const getCodeApi = (data) => { +// 获取验证图片以及 token +export const getCode = (data) => { return request.postOriginal({ url: 'system/captcha/get', data }) } // 滑动或者点选验证 -export const reqCheckApi = (data) => { +export const reqCheck = (data) => { return request.postOriginal({ url: 'system/captcha/check', data }) } diff --git a/src/api/pay/app/index.ts b/src/api/pay/app/index.ts index 348185c8..c19eb99b 100644 --- a/src/api/pay/app/index.ts +++ b/src/api/pay/app/index.ts @@ -38,41 +38,41 @@ export interface AppUpdateStatusReqVO { } // 查询列表支付应用 -export const getAppPageApi = (params: AppPageReqVO) => { +export const getAppPage = (params: AppPageReqVO) => { return request.get({ url: '/pay/app/page', params }) } // 查询详情支付应用 -export const getAppApi = (id: number) => { +export const getApp = (id: number) => { return request.get({ url: '/pay/app/get?id=' + id }) } // 新增支付应用 -export const createAppApi = (data: AppVO) => { +export const createApp = (data: AppVO) => { return request.post({ url: '/pay/app/create', data }) } // 修改支付应用 -export const updateAppApi = (data: AppVO) => { +export const updateApp = (data: AppVO) => { return request.put({ url: '/pay/app/update', data }) } // 支付应用信息状态修改 -export const changeAppStatusApi = (data: AppUpdateStatusReqVO) => { +export const changeAppStatus = (data: AppUpdateStatusReqVO) => { return request.put({ url: '/pay/app/update-status', data: data }) } // 删除支付应用 -export const deleteAppApi = (id: number) => { +export const deleteApp = (id: number) => { return request.delete({ url: '/pay/app/delete?id=' + id }) } // 导出支付应用 -export const exportAppApi = (params: AppExportReqVO) => { +export const exportApp = (params: AppExportReqVO) => { return request.download({ url: '/pay/app/export-excel', params }) } // 根据商ID称搜索应用列表 -export const getAppListByMerchantIdApi = (merchantId: number) => { +export const getAppListByMerchantId = (merchantId: number) => { return request.get({ url: '/pay/app/list-merchant-id', params: { merchantId: merchantId } }) } diff --git a/src/api/pay/channel/index.ts b/src/api/pay/channel/index.ts index a6da9eb8..b030357e 100644 --- a/src/api/pay/channel/index.ts +++ b/src/api/pay/channel/index.ts @@ -12,35 +12,13 @@ export interface ChannelVO { createTime: Date } -export interface ChannelPageReqVO extends PageParam { - code?: string - status?: number - remark?: string - feeRate?: number - merchantId?: number - appId?: number - config?: string - createTime?: Date[] -} - -export interface ChannelExportReqVO { - code?: string - status?: number - remark?: string - feeRate?: number - merchantId?: number - appId?: number - config?: string - createTime?: Date[] -} - // 查询列表支付渠道 -export const getChannelPageApi = (params: ChannelPageReqVO) => { +export const getChannelPage = (params: PageParam) => { return request.get({ url: '/pay/channel/page', params }) } // 查询详情支付渠道 -export const getChannelApi = (merchantId: number, appId: string, code: string) => { +export const getChannel = (merchantId: number, appId: string, code: string) => { const params = { merchantId: merchantId, appId: appId, @@ -50,21 +28,21 @@ export const getChannelApi = (merchantId: number, appId: string, code: string) = } // 新增支付渠道 -export const createChannelApi = (data: ChannelVO) => { +export const createChannel = (data: ChannelVO) => { return request.post({ url: '/pay/channel/create', data }) } // 修改支付渠道 -export const updateChannelApi = (data: ChannelVO) => { +export const updateChannel = (data: ChannelVO) => { return request.put({ url: '/pay/channel/update', data }) } // 删除支付渠道 -export const deleteChannelApi = (id: number) => { +export const deleteChannel = (id: number) => { return request.delete({ url: '/pay/channel/delete?id=' + id }) } // 导出支付渠道 -export const exportChannelApi = (params: ChannelExportReqVO) => { +export const exportChannel = (params) => { return request.download({ url: '/pay/channel/export-excel', params }) } diff --git a/src/api/pay/order/index.ts b/src/api/pay/order/index.ts index 53e35aa9..6088c172 100644 --- a/src/api/pay/order/index.ts +++ b/src/api/pay/order/index.ts @@ -79,31 +79,31 @@ export interface OrderExportReqVO { } // 查询列表支付订单 -export const getOrderPageApi = async (params: OrderPageReqVO) => { +export const getOrderPage = async (params: OrderPageReqVO) => { return await request.get({ url: '/pay/order/page', params }) } // 查询详情支付订单 -export const getOrderApi = async (id: number) => { +export const getOrder = async (id: number) => { return await request.get({ url: '/pay/order/get?id=' + id }) } // 新增支付订单 -export const createOrderApi = async (data: OrderVO) => { +export const createOrder = async (data: OrderVO) => { return await request.post({ url: '/pay/order/create', data }) } // 修改支付订单 -export const updateOrderApi = async (data: OrderVO) => { +export const updateOrder = async (data: OrderVO) => { return await request.put({ url: '/pay/order/update', data }) } // 删除支付订单 -export const deleteOrderApi = async (id: number) => { +export const deleteOrder = async (id: number) => { return await request.delete({ url: '/pay/order/delete?id=' + id }) } // 导出支付订单 -export const exportOrderApi = async (params: OrderExportReqVO) => { +export const exportOrder = async (params: OrderExportReqVO) => { return await request.download({ url: '/pay/order/export-excel', params }) } diff --git a/src/api/pay/refund/index.ts b/src/api/pay/refund/index.ts index cd68a144..4b587f22 100644 --- a/src/api/pay/refund/index.ts +++ b/src/api/pay/refund/index.ts @@ -86,31 +86,31 @@ export interface PayRefundExportReqVO { } // 查询列表退款订单 -export const getRefundPageApi = (params: RefundPageReqVO) => { +export const getRefundPage = (params: RefundPageReqVO) => { return request.get({ url: '/pay/refund/page', params }) } // 查询详情退款订单 -export const getRefundApi = (id: number) => { +export const getRefund = (id: number) => { return request.get({ url: '/pay/refund/get?id=' + id }) } // 新增退款订单 -export const createRefundApi = (data: RefundVO) => { +export const createRefund = (data: RefundVO) => { return request.post({ url: '/pay/refund/create', data }) } // 修改退款订单 -export const updateRefundApi = (data: RefundVO) => { +export const updateRefund = (data: RefundVO) => { return request.put({ url: '/pay/refund/update', data }) } // 删除退款订单 -export const deleteRefundApi = (id: number) => { +export const deleteRefund = (id: number) => { return request.delete({ url: '/pay/refund/delete?id=' + id }) } // 导出退款订单 -export const exportRefundApi = (params: PayRefundExportReqVO) => { +export const exportRefund = (params: PayRefundExportReqVO) => { return request.download({ url: '/pay/refund/export-excel', params }) } diff --git a/src/api/system/dept/index.ts b/src/api/system/dept/index.ts index e9c31fd7..d995f13d 100644 --- a/src/api/system/dept/index.ts +++ b/src/api/system/dept/index.ts @@ -12,37 +12,32 @@ export interface DeptVO { createTime: Date } -export interface DeptPageReqVO { - name?: string - status?: number -} - // 查询部门(精简)列表 export const getSimpleDeptList = async (): Promise<DeptVO[]> => { return await request.get({ url: '/system/dept/list-all-simple' }) } // 查询部门列表 -export const getDeptPageApi = async (params: DeptPageReqVO) => { +export const getDeptPage = async (params: PageParam) => { return await request.get({ url: '/system/dept/list', params }) } // 查询部门详情 -export const getDeptApi = async (id: number) => { +export const getDept = async (id: number) => { return await request.get({ url: '/system/dept/get?id=' + id }) } // 新增部门 -export const createDeptApi = async (data: DeptVO) => { +export const createDept = async (data: DeptVO) => { return await request.post({ url: '/system/dept/create', data: data }) } // 修改部门 -export const updateDeptApi = async (params: DeptVO) => { +export const updateDept = async (params: DeptVO) => { return await request.put({ url: '/system/dept/update', data: params }) } // 删除部门 -export const deleteDeptApi = async (id: number) => { +export const deleteDept = async (id: number) => { return await request.delete({ url: '/system/dept/delete?id=' + id }) } diff --git a/src/api/system/errorCode/index.ts b/src/api/system/errorCode/index.ts index 65eabd3a..8a86a639 100644 --- a/src/api/system/errorCode/index.ts +++ b/src/api/system/errorCode/index.ts @@ -10,39 +10,31 @@ export interface ErrorCodeVO { createTime: Date } -export interface ErrorCodePageReqVO extends PageParam { - type?: number - applicationName?: string - code?: number - message?: string - createTime?: Date[] -} - // 查询错误码列表 -export const getErrorCodePageApi = (params: ErrorCodePageReqVO) => { +export const getErrorCodePage = (params: PageParam) => { return request.get({ url: '/system/error-code/page', params }) } // 查询错误码详情 -export const getErrorCodeApi = (id: number) => { +export const getErrorCode = (id: number) => { return request.get({ url: '/system/error-code/get?id=' + id }) } // 新增错误码 -export const createErrorCodeApi = (data: ErrorCodeVO) => { +export const createErrorCode = (data: ErrorCodeVO) => { return request.post({ url: '/system/error-code/create', data }) } // 修改错误码 -export const updateErrorCodeApi = (data: ErrorCodeVO) => { +export const updateErrorCode = (data: ErrorCodeVO) => { return request.put({ url: '/system/error-code/update', data }) } // 删除错误码 -export const deleteErrorCodeApi = (id: number) => { +export const deleteErrorCode = (id: number) => { return request.delete({ url: '/system/error-code/delete?id=' + id }) } // 导出错误码 -export const excelErrorCodeApi = (params: ErrorCodePageReqVO) => { +export const excelErrorCode = (params) => { return request.download({ url: '/system/error-code/export-excel', params }) } diff --git a/src/api/system/menu/index.ts b/src/api/system/menu/index.ts index 13736215..4bb9a871 100644 --- a/src/api/system/menu/index.ts +++ b/src/api/system/menu/index.ts @@ -29,7 +29,7 @@ export const getMenuList = (params) => { } // 获取菜单详情 -export const getMenuApi = (id: number) => { +export const getMenu = (id: number) => { return request.get({ url: '/system/menu/get?id=' + id }) } diff --git a/src/api/system/notify/message/index.ts b/src/api/system/notify/message/index.ts index e24c3f8c..29036b95 100644 --- a/src/api/system/notify/message/index.ts +++ b/src/api/system/notify/message/index.ts @@ -38,11 +38,11 @@ export const updateAllNotifyMessageRead = async () => { } // 获取当前用户的最新站内信列表 -export const getUnreadNotifyMessageListApi = async () => { +export const getUnreadNotifyMessageList = async () => { return await request.get({ url: '/system/notify-message/get-unread-list' }) } // 获得当前用户的未读站内信数量 -export const getUnreadNotifyMessageCountApi = async () => { +export const getUnreadNotifyMessageCount = async () => { return await request.get({ url: '/system/notify-message/get-unread-count' }) } diff --git a/src/api/system/user/profile.ts b/src/api/system/user/profile.ts index e78424cc..b2623c8b 100644 --- a/src/api/system/user/profile.ts +++ b/src/api/system/user/profile.ts @@ -51,17 +51,17 @@ export interface UserProfileUpdateReqVO { } // 查询用户个人信息 -export const getUserProfileApi = () => { +export const getUserProfile = () => { return request.get({ url: '/system/user/profile/get' }) } // 修改用户个人信息 -export const updateUserProfileApi = (data: UserProfileUpdateReqVO) => { +export const updateUserProfile = (data: UserProfileUpdateReqVO) => { return request.put({ url: '/system/user/profile/update', data }) } // 用户密码重置 -export const updateUserPwdApi = (oldPassword: string, newPassword: string) => { +export const updateUserPassword = (oldPassword: string, newPassword: string) => { return request.put({ url: '/system/user/profile/update-password', data: { @@ -72,6 +72,6 @@ export const updateUserPwdApi = (oldPassword: string, newPassword: string) => { } // 用户头像上传 -export const uploadAvatarApi = (data) => { +export const uploadAvatar = (data) => { return request.upload({ url: '/system/user/profile/update-avatar', data: data }) } diff --git a/src/components/DictTag/src/DictTag.vue b/src/components/DictTag/src/DictTag.vue index e3ba78d2..db37f714 100644 --- a/src/components/DictTag/src/DictTag.vue +++ b/src/components/DictTag/src/DictTag.vue @@ -48,6 +48,7 @@ export default defineComponent({ ? dictData.value?.cssClass : '' } + disableTransitions={true} > {dictData.value?.label} </ElTag> diff --git a/src/components/DocAlert/index.vue b/src/components/DocAlert/index.vue new file mode 100644 index 00000000..7ca29f75 --- /dev/null +++ b/src/components/DocAlert/index.vue @@ -0,0 +1,32 @@ +<template> + <el-alert v-if="getEnable()" type="success" show-icon> + <template #title> + <div @click="goToUrl">{{ '【' + title + '】文档地址:' + url }}</div> + </template> + </el-alert> +</template> +<script setup lang="tsx" name="DocAlert"> +import { propTypes } from '@/utils/propTypes' + +const props = defineProps({ + title: propTypes.string, + url: propTypes.string +}) + +/** 跳转 URL 链接 */ +const goToUrl = () => { + window.open(props.url) +} + +/** 是否开启 */ +const getEnable = () => { + return import.meta.env.VITE_APP_TENANT_ENABLE === 'true' +} +</script> +<style scoped> +.el-alert--success.is-light { + border: 1px solid green; + margin-bottom: 10px; + cursor: pointer; +} +</style> diff --git a/src/components/Verifition/src/Verify/VerifyPoints.vue b/src/components/Verifition/src/Verify/VerifyPoints.vue index 8eeb83f6..0e1fade7 100644 --- a/src/components/Verifition/src/Verify/VerifyPoints.vue +++ b/src/components/Verifition/src/Verify/VerifyPoints.vue @@ -64,7 +64,7 @@ * */ import { resetSize } from './../utils/util' import { aesEncrypt } from './../utils/ase' -import { getCodeApi, reqCheckApi } from '@/api/login' +import { getCode, reqCheck } from '@/api/login' import { onMounted, reactive, ref, nextTick, toRefs, getCurrentInstance } from 'vue' const props = defineProps({ @@ -170,7 +170,7 @@ const canvasClick = (e) => { : JSON.stringify(checkPosArr), token: backToken.value } - reqCheckApi(data).then((res) => { + reqCheck(data).then((res) => { if (res.repCode == '0000') { barAreaColor.value = '#4cae4c' barAreaBorderColor.value = '#5cb85c' @@ -227,7 +227,7 @@ const getPictrue = async () => { let data = { captchaType: captchaType.value } - const res = await getCodeApi(data) + const res = await getCode(data) if (res.repCode == '0000') { pointBackImgBase.value = res.repData.originalImageBase64 backToken.value = res.repData.token diff --git a/src/components/Verifition/src/Verify/VerifySlide.vue b/src/components/Verifition/src/Verify/VerifySlide.vue index 6b6108df..3961b129 100644 --- a/src/components/Verifition/src/Verify/VerifySlide.vue +++ b/src/components/Verifition/src/Verify/VerifySlide.vue @@ -78,7 +78,7 @@ * */ import { aesEncrypt } from './../utils/ase' import { resetSize } from './../utils/util' -import { getCodeApi, reqCheckApi } from '@/api/login' +import { getCode, reqCheck } from '@/api/login' const props = defineProps({ captchaType: { @@ -286,7 +286,7 @@ const end = () => { : JSON.stringify({ x: moveLeftDistance, y: 5.0 }), token: backToken.value } - reqCheckApi(data).then((res) => { + reqCheck(data).then((res) => { if (res.repCode == '0000') { moveBlockBackgroundColor.value = '#5cb85c' leftBarBorderColor.value = '#5cb85c' @@ -301,7 +301,7 @@ const end = () => { }, 1500) } passFlag.value = true - tipWords.value = `${((endMovetime.value - startMoveTime.value) / 1000).toFixed(2)}s + tipWords.value = `${((endMovetime.value - startMoveTime.value) / 1000).toFixed(2)}s ${t('captcha.success')}` var captchaVerification = secretKey.value ? aesEncrypt( @@ -363,7 +363,7 @@ const getPictrue = async () => { let data = { captchaType: captchaType.value } - const res = await getCodeApi(data) + const res = await getCode(data) if (res.repCode == '0000') { backImgBase.value = res.repData.originalImageBase64 blockBackImgBase.value = res.repData.jigsawImageBase64 diff --git a/src/layout/components/Message/src/Message.vue b/src/layout/components/Message/src/Message.vue index d42a51c0..d968eb6f 100644 --- a/src/layout/components/Message/src/Message.vue +++ b/src/layout/components/Message/src/Message.vue @@ -9,14 +9,14 @@ const list = ref<any[]>([]) // 消息列表 // 获得消息列表 const getList = async () => { - list.value = await NotifyMessageApi.getUnreadNotifyMessageListApi() + list.value = await NotifyMessageApi.getUnreadNotifyMessageList() // 强制设置 unreadCount 为 0,避免小红点因为轮询太慢,不消除 unreadCount.value = 0 } // 获得未读消息数 const getUnreadCount = async () => { - NotifyMessageApi.getUnreadNotifyMessageCountApi().then((data) => { + NotifyMessageApi.getUnreadNotifyMessageCount().then((data) => { unreadCount.value = data }) } diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 6f46f1ab..7c5742c4 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -297,8 +297,7 @@ export default { typeCreate: '字典类型新增', typeUpdate: '字典类型编辑', dataCreate: '字典数据新增', - dataUpdate: '字典数据编辑', - fileUpload: '上传文件' + dataUpdate: '字典数据编辑' }, dialog: { dialog: '弹窗', diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index 2dc9522d..671ca353 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -115,7 +115,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ children: [ { path: 'type/data/:dictType', - component: () => import('@/views/system/dict/data.vue'), + component: () => import('@/views/system/dict/data/index.vue'), name: 'data', meta: { title: '字典数据', @@ -123,7 +123,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, canTo: true, icon: '', - activeMenu: 'system/dict/data' + activeMenu: '/system/dict' } } ] diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index 491bafdc..9d3b8dda 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -3,7 +3,7 @@ import { store } from '../index' import { cloneDeep } from 'lodash-es' import remainingRouter from '@/router/modules/remaining' import { generateRoute, flatMultiLevelRoutes } from '@/utils/routerHelper' -import { getAsyncRoutesApi } from '@/api/login' +import { getAsyncRoutes } from '@/api/login' import { CACHE_KEY, useCache } from '@/hooks/web/useCache' const { wsCache } = useCache() @@ -38,7 +38,7 @@ export const usePermissionStore = defineStore('permission', { if (wsCache.get(CACHE_KEY.ROLE_ROUTERS)) { res = wsCache.get(CACHE_KEY.ROLE_ROUTERS) as AppCustomRouteRecordRaw[] } else { - res = await getAsyncRoutesApi() + res = await getAsyncRoutes() wsCache.set(CACHE_KEY.ROLE_ROUTERS, res) } const routerMap: AppRouteRecordRaw[] = generateRoute(res as AppCustomRouteRecordRaw[]) diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 16ff3902..99c11c2e 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -2,7 +2,7 @@ import { store } from '../index' import { defineStore } from 'pinia' import { getAccessToken, removeToken } from '@/utils/auth' import { CACHE_KEY, useCache } from '@/hooks/web/useCache' -import { getInfoApi, loginOutApi } from '@/api/login' +import { getInfo, loginOut } from '@/api/login' const { wsCache } = useCache() @@ -51,7 +51,7 @@ export const useUserStore = defineStore('admin-user', { } let userInfo = wsCache.get(CACHE_KEY.USER) if (!userInfo) { - userInfo = await getInfoApi() + userInfo = await getInfo() } this.permissions = userInfo.permissions this.roles = userInfo.roles @@ -60,7 +60,7 @@ export const useUserStore = defineStore('admin-user', { wsCache.set(CACHE_KEY.USER, userInfo) }, async loginOut() { - await loginOutApi() + await loginOut() removeToken() wsCache.clear() this.resetState() diff --git a/src/types/auto-components.d.ts b/src/types/auto-components.d.ts index 8851767a..8b5de138 100644 --- a/src/types/auto-components.d.ts +++ b/src/types/auto-components.d.ts @@ -21,8 +21,10 @@ 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'] + ElAlert: typeof import('element-plus/es')['ElAlert'] ElAutoResizer: typeof import('element-plus/es')['ElAutoResizer'] ElAvatar: typeof import('element-plus/es')['ElAvatar'] ElBadge: typeof import('element-plus/es')['ElBadge'] diff --git a/src/views/Login/components/LoginForm.vue b/src/views/Login/components/LoginForm.vue index 1e41b994..9d9d20ce 100644 --- a/src/views/Login/components/LoginForm.vue +++ b/src/views/Login/components/LoginForm.vue @@ -195,7 +195,7 @@ const getCode = async () => { //获取租户ID const getTenantId = async () => { if (loginData.tenantEnable === 'true') { - const res = await LoginApi.getTenantIdByNameApi(loginData.loginForm.tenantName) + const res = await LoginApi.getTenantIdByName(loginData.loginForm.tenantName) authUtil.setTenantId(res) } } @@ -222,7 +222,7 @@ const handleLogin = async (params) => { return } loginData.loginForm.captchaVerification = params.captchaVerification - const res = await LoginApi.loginApi(loginData.loginForm) + const res = await LoginApi.login(loginData.loginForm) if (!res) { return } @@ -259,7 +259,7 @@ const doSocialLogin = async (type: number) => { loginLoading.value = true if (loginData.tenantEnable === 'true') { await message.prompt('请输入租户名称', t('common.reminder')).then(async ({ value }) => { - const res = await LoginApi.getTenantIdByNameApi(value) + const res = await LoginApi.getTenantIdByName(value) authUtil.setTenantId(res) }) } @@ -267,7 +267,7 @@ const doSocialLogin = async (type: number) => { const redirectUri = location.origin + '/social-login?type=' + type + '&redirect=' + (redirect.value || '/') // 进行跳转 - const res = await LoginApi.socialAuthRedirectApi(type, encodeURIComponent(redirectUri)) + const res = await LoginApi.socialAuthRedirect(type, encodeURIComponent(redirectUri)) window.location.href = res } } diff --git a/src/views/Login/components/MobileForm.vue b/src/views/Login/components/MobileForm.vue index 0aa1e035..3a0ab686 100644 --- a/src/views/Login/components/MobileForm.vue +++ b/src/views/Login/components/MobileForm.vue @@ -98,7 +98,7 @@ import { useIcon } from '@/hooks/web/useIcon' import { setTenantId, setToken } from '@/utils/auth' import { usePermissionStore } from '@/store/modules/permission' -import { getTenantIdByNameApi, sendSmsCodeApi, smsLoginApi } from '@/api/login' +import { getTenantIdByName, sendSmsCode, smsLogin } from '@/api/login' import LoginFormTitle from './LoginFormTitle.vue' import { useLoginState, LoginStateEnum, useFormValid } from './useLogin' @@ -149,7 +149,7 @@ const redirect = ref<string>('') const getSmsCode = async () => { await getTenantId() smsVO.smsCode.mobile = loginData.loginForm.mobileNumber - await sendSmsCodeApi(smsVO.smsCode).then(async () => { + await sendSmsCode(smsVO.smsCode).then(async () => { message.success(t('login.SmsSendMsg')) // 设置倒计时 mobileCodeTimer.value = 60 @@ -173,7 +173,7 @@ watch( // 获取租户 ID const getTenantId = async () => { if (loginData.tenantEnable === 'true') { - const res = await getTenantIdByNameApi(loginData.loginForm.tenantName) + const res = await getTenantIdByName(loginData.loginForm.tenantName) setTenantId(res) } } @@ -185,7 +185,7 @@ const signIn = async () => { loginLoading.value = true smsVO.loginSms.mobile = loginData.loginForm.mobileNumber smsVO.loginSms.code = loginData.loginForm.code - await smsLoginApi(smsVO.loginSms) + await smsLogin(smsVO.loginSms) .then(async (res) => { setToken(res?.token) if (!redirect.value) { diff --git a/src/views/Profile/components/BasicInfo.vue b/src/views/Profile/components/BasicInfo.vue index ccb7d6f3..f5e9da72 100644 --- a/src/views/Profile/components/BasicInfo.vue +++ b/src/views/Profile/components/BasicInfo.vue @@ -17,8 +17,8 @@ import { ElMessage } from 'element-plus' import { FormSchema } from '@/types/form' import type { FormExpose } from '@/components/Form' import { - getUserProfileApi, - updateUserProfileApi, + getUserProfile, + updateUserProfile, UserProfileUpdateReqVO } from '@/api/system/user/profile' @@ -73,14 +73,14 @@ const submit = () => { elForm.validate(async (valid) => { if (valid) { const data = unref(formRef)?.formModel as UserProfileUpdateReqVO - await updateUserProfileApi(data) + await updateUserProfile(data) ElMessage.success(t('common.updateSuccess')) await init() } }) } const init = async () => { - const res = await getUserProfileApi() + const res = await getUserProfile() unref(formRef)?.setValues(res) } onMounted(async () => { diff --git a/src/views/Profile/components/ProfileUser.vue b/src/views/Profile/components/ProfileUser.vue index 4e4de722..8657bc75 100644 --- a/src/views/Profile/components/ProfileUser.vue +++ b/src/views/Profile/components/ProfileUser.vue @@ -43,12 +43,12 @@ import { formatDate } from '@/utils/formatTime' import UserAvatar from './UserAvatar.vue' -import { getUserProfileApi, ProfileVO } from '@/api/system/user/profile' +import { getUserProfile, ProfileVO } from '@/api/system/user/profile' const { t } = useI18n() const userInfo = ref<ProfileVO>() const getUserInfo = async () => { - const users = await getUserProfileApi() + const users = await getUserProfile() userInfo.value = users } onMounted(async () => { diff --git a/src/views/Profile/components/ResetPwd.vue b/src/views/Profile/components/ResetPwd.vue index 0b37807f..0d6f9cc4 100644 --- a/src/views/Profile/components/ResetPwd.vue +++ b/src/views/Profile/components/ResetPwd.vue @@ -19,7 +19,7 @@ import type { FormRules, FormInstance } from 'element-plus' import { InputPassword } from '@/components/InputPassword' -import { updateUserPwdApi } from '@/api/system/user/profile' +import { updateUserPassword } from '@/api/system/user/profile' const { t } = useI18n() const message = useMessage() @@ -56,7 +56,7 @@ const submit = (formEl: FormInstance | undefined) => { if (!formEl) return formEl.validate(async (valid) => { if (valid) { - await updateUserPwdApi(password.oldPassword, password.newPassword) + await updateUserPassword(password.oldPassword, password.newPassword) message.success(t('common.updateSuccess')) } }) diff --git a/src/views/Profile/components/UserAvatar.vue b/src/views/Profile/components/UserAvatar.vue index 81259410..50a14d81 100644 --- a/src/views/Profile/components/UserAvatar.vue +++ b/src/views/Profile/components/UserAvatar.vue @@ -12,7 +12,7 @@ </template> <script setup lang="ts"> import { propTypes } from '@/utils/propTypes' -import { uploadAvatarApi } from '@/api/system/user/profile' +import { uploadAvatar } from '@/api/system/user/profile' const props = defineProps({ img: propTypes.string.def('') }) @@ -22,7 +22,7 @@ const avatar = computed(() => { const cropperRef = ref() const handelUpload = async ({ data }) => { - await uploadAvatarApi({ avatarFile: data }) + await uploadAvatar({ avatarFile: data }) cropperRef.value.close() } </script> diff --git a/src/views/Profile/components/UserSocial.vue b/src/views/Profile/components/UserSocial.vue index 35cce076..da88d993 100644 --- a/src/views/Profile/components/UserSocial.vue +++ b/src/views/Profile/components/UserSocial.vue @@ -23,7 +23,7 @@ </template> <script setup lang="ts"> import { SystemUserSocialTypeEnum } from '@/utils/constants' -import { getUserProfileApi, ProfileVO } from '@/api/system/user/profile' +import { getUserProfile, ProfileVO } from '@/api/system/user/profile' import { socialAuthRedirect, socialUnbind } from '@/api/system/user/socialUser' const message = useMessage() @@ -31,7 +31,7 @@ const socialUsers = ref<any[]>([]) const userInfo = ref<ProfileVO>() const initSocial = async () => { - const res = await getUserProfileApi() + const res = await getUserProfile() userInfo.value = res for (const i in SystemUserSocialTypeEnum) { const socialUser = { ...SystemUserSocialTypeEnum[i] } diff --git a/src/views/bpm/form/index.vue b/src/views/bpm/form/index.vue index f8d94317..4fdc37ee 100644 --- a/src/views/bpm/form/index.vue +++ b/src/views/bpm/form/index.vue @@ -1,5 +1,5 @@ <template> - <content-wrap> + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" @@ -25,10 +25,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="编号" align="center" prop="id" /> <el-table-column label="表单名" align="center" prop="name" /> @@ -75,7 +75,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单详情的弹窗 --> <Dialog title="表单详情" v-model="detailVisible" width="800"> diff --git a/src/views/bpm/oa/leave/create.vue b/src/views/bpm/oa/leave/create.vue index 0d645c7d..9e99e814 100644 --- a/src/views/bpm/oa/leave/create.vue +++ b/src/views/bpm/oa/leave/create.vue @@ -44,7 +44,7 @@ const submitForm = async () => { data.startTime = Date.parse(new Date(data.startTime).toString()).toString() data.endTime = Date.parse(new Date(data.endTime).toString()).toString() // 添加的提交 - await LeaveApi.createLeaveApi(data) + await LeaveApi.createLeave(data) message.success(t('common.createSuccess')) // 关闭窗口 push('/bpm/oa/leave') diff --git a/src/views/bpm/oa/leave/detail.vue b/src/views/bpm/oa/leave/detail.vue index 25ac9981..e35de6e5 100644 --- a/src/views/bpm/oa/leave/detail.vue +++ b/src/views/bpm/oa/leave/detail.vue @@ -35,7 +35,7 @@ onMounted(() => { return } // 获得请假信息 - LeaveApi.getLeaveApi(id.value).then((data) => { + LeaveApi.getLeave(id.value).then((data) => { formData.value = data }) }) diff --git a/src/views/bpm/oa/leave/index.vue b/src/views/bpm/oa/leave/index.vue index 91e7ccda..22d86dfe 100644 --- a/src/views/bpm/oa/leave/index.vue +++ b/src/views/bpm/oa/leave/index.vue @@ -37,7 +37,7 @@ const { push } = useRouter() // 路由 const [registerTable, { reload }] = useXTable({ allSchemas: allSchemas, - getListApi: LeaveApi.getLeavePageApi + getListApi: LeaveApi.getLeavePage }) // 发起请假 @@ -55,7 +55,7 @@ const cancelLeave = (row) => { inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // 判断非空,且非空格 inputErrorMessage: '取消原因不能为空' }).then(async ({ value }) => { - await ProcessInstanceApi.cancelProcessInstanceApi(row.id, value) + await ProcessInstanceApi.cancelProcessInstance(row.id, value) message.success('取消成功') reload() }) diff --git a/src/views/bpm/processInstance/create/index.vue b/src/views/bpm/processInstance/create/index.vue index dd043eae..d616e495 100644 --- a/src/views/bpm/processInstance/create/index.vue +++ b/src/views/bpm/processInstance/create/index.vue @@ -111,7 +111,7 @@ const submitForm = async (formData) => { // 提交请求 fApi.value.btn.loading(true) try { - await ProcessInstanceApi.createProcessInstanceApi({ + await ProcessInstanceApi.createProcessInstance({ processDefinitionId: selectProcessInstance.value.id, variables: formData }) diff --git a/src/views/bpm/processInstance/detail/index.vue b/src/views/bpm/processInstance/detail/index.vue index 3a48b3b3..be79f59c 100644 --- a/src/views/bpm/processInstance/detail/index.vue +++ b/src/views/bpm/processInstance/detail/index.vue @@ -189,7 +189,7 @@ const getDetail = () => { const getProcessInstance = async () => { try { processInstanceLoading.value = true - const data = await ProcessInstanceApi.getProcessInstanceApi(id) + const data = await ProcessInstanceApi.getProcessInstance(id) if (!data) { message.error('查询不到流程信息!') return diff --git a/src/views/bpm/processInstance/index.vue b/src/views/bpm/processInstance/index.vue index f43e53ef..0d153cfb 100644 --- a/src/views/bpm/processInstance/index.vue +++ b/src/views/bpm/processInstance/index.vue @@ -57,7 +57,7 @@ const { t } = useI18n() // 国际化 // ========== 列表相关 ========== const [registerTable, { reload }] = useXTable({ allSchemas: allSchemas, - getListApi: ProcessInstanceApi.getMyProcessInstancePageApi + getListApi: ProcessInstanceApi.getMyProcessInstancePage }) /** 发起流程操作 **/ @@ -85,7 +85,7 @@ const handleCancel = (row) => { inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // 判断非空,且非空格 inputErrorMessage: '取消原因不能为空' }).then(async ({ value }) => { - await ProcessInstanceApi.cancelProcessInstanceApi(row.id, value) + await ProcessInstanceApi.cancelProcessInstance(row.id, value) message.success('取消成功') reload() }) diff --git a/src/views/infra/apiAccessLog/index.vue b/src/views/infra/apiAccessLog/index.vue index 3102d39d..7fa4eab4 100644 --- a/src/views/infra/apiAccessLog/index.vue +++ b/src/views/infra/apiAccessLog/index.vue @@ -1,5 +1,7 @@ <template> - <content-wrap> + <doc-alert title="系统日志" url="https://doc.iocoder.cn/system-log/" /> + + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" @@ -25,10 +27,10 @@ class="!w-240px" > <el-option - v-for="dict in getDictOptions(DICT_TYPE.USER_TYPE)" - :key="parseInt(dict.value)" + v-for="dict in getIntDictOptions(DICT_TYPE.USER_TYPE)" + :key="dict.value" :label="dict.label" - :value="parseInt(dict.value)" + :value="dict.value" /> </el-select> </el-form-item> @@ -84,10 +86,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="日志编号" align="center" prop="id" /> <el-table-column label="用户编号" align="center" prop="userId" /> @@ -105,15 +107,11 @@ </template> </el-table-column> <el-table-column label="执行时长" align="center" prop="duration" width="180"> - <template #default="scope"> - <span>{{ scope.row.duration }} ms</span> - </template> + <template #default="scope"> {{ scope.row.duration }} ms </template> </el-table-column> <el-table-column label="操作结果" align="center" prop="status"> <template #default="scope"> - <span>{{ - scope.row.resultCode === 0 ? '成功' : '失败(' + scope.row.resultMsg + ')' - }}</span> + {{ scope.row.resultCode === 0 ? '成功' : '失败(' + scope.row.resultMsg + ')' }} </template> </el-table-column> <el-table-column label="操作" align="center"> @@ -136,19 +134,17 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:详情 --> <ApiAccessLogDetail ref="detailRef" /> </template> - <script setup lang="ts" name="ApiAccessLog"> -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import download from '@/utils/download' import { formatDate } from '@/utils/formatTime' import * as ApiAccessLogApi from '@/api/infra/apiAccessLog' import ApiAccessLogDetail from './ApiAccessLogDetail.vue' - const message = useMessage() // 消息弹窗 const loading = ref(true) // 列表的加载中 diff --git a/src/views/infra/apiErrorLog/index.vue b/src/views/infra/apiErrorLog/index.vue index 800b5043..a20cba1b 100644 --- a/src/views/infra/apiErrorLog/index.vue +++ b/src/views/infra/apiErrorLog/index.vue @@ -1,4 +1,6 @@ <template> + <doc-alert title="系统日志" url="https://doc.iocoder.cn/system-log/" /> + <ContentWrap> <!-- 搜索工作栏 --> <el-form diff --git a/src/views/infra/codegen/EditTable.vue b/src/views/infra/codegen/EditTable.vue index 714b2761..e8cae410 100644 --- a/src/views/infra/codegen/EditTable.vue +++ b/src/views/infra/codegen/EditTable.vue @@ -1,5 +1,5 @@ <template> - <content-wrap v-loading="formLoading"> + <ContentWrap v-loading="formLoading"> <el-tabs v-model="activeName"> <el-tab-pane label="基本信息" name="basicInfo"> <basic-info-form ref="basicInfoRef" :table="formData.table" /> @@ -17,7 +17,7 @@ <el-button @click="close">返回</el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> </template> <script setup lang="ts"> import { useTagsViewStore } from '@/store/modules/tagsView' diff --git a/src/views/infra/codegen/index.vue b/src/views/infra/codegen/index.vue index 4325f702..5e1f78eb 100644 --- a/src/views/infra/codegen/index.vue +++ b/src/views/infra/codegen/index.vue @@ -1,6 +1,9 @@ <template> + <doc-alert title="代码生成" url="https://doc.iocoder.cn/new-feature/" /> + <doc-alert title="单元测试" url="https://doc.iocoder.cn/unit-test/" /> + <!-- 搜索 --> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" :model="queryParams" @@ -45,10 +48,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="数据源" align="center"> <template #default="scope"> @@ -132,7 +135,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 弹窗:导入表 --> <ImportTable ref="importRef" success="getList" /> diff --git a/src/views/infra/config/form.vue b/src/views/infra/config/ConfigForm.vue similarity index 96% rename from src/views/infra/config/form.vue rename to src/views/infra/config/ConfigForm.vue index 18ecfa3d..f5eb1174 100644 --- a/src/views/infra/config/form.vue +++ b/src/views/infra/config/ConfigForm.vue @@ -70,7 +70,7 @@ const formRules = reactive({ const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async (type: string, id?: number) => { +const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type @@ -85,7 +85,7 @@ const openModal = async (type: string, id?: number) => { } } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 diff --git a/src/views/infra/config/index.vue b/src/views/infra/config/index.vue index cbbabc4f..414c9153 100644 --- a/src/views/infra/config/index.vue +++ b/src/views/infra/config/index.vue @@ -1,6 +1,8 @@ <template> + <doc-alert title="配置中心" url="https://doc.iocoder.cn/config-center/" /> + <!-- 搜索 --> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" :model="queryParams" @@ -34,10 +36,10 @@ class="!w-240px" > <el-option - v-for="dict in getDictOptions(DICT_TYPE.INFRA_CONFIG_TYPE)" - :key="parseInt(dict.value)" + v-for="dict in getIntDictOptions(DICT_TYPE.INFRA_CONFIG_TYPE)" + :key="dict.value" :label="dict.label" - :value="parseInt(dict.value)" + :value="dict.value" /> </el-select> </el-form-item> @@ -58,7 +60,7 @@ <el-button type="primary" plain - @click="openModal('create')" + @click="openForm('create')" v-hasPermi="['infra:config:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 @@ -74,10 +76,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="参数主键" align="center" prop="id" /> <el-table-column label="参数分类" align="center" prop="category" /> @@ -107,7 +109,7 @@ <el-button link type="primary" - @click="openModal('update', scope.row.id)" + @click="openForm('update', scope.row.id)" v-hasPermi="['infra:config:update']" > 编辑 @@ -130,17 +132,17 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <config-form ref="modalRef" @success="getList" /> + <ConfigForm ref="formRef" @success="getList" /> </template> <script setup lang="ts" name="Config"> -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { dateFormatter } from '@/utils/formatTime' import download from '@/utils/download' import * as ConfigApi from '@/api/infra/config' -import ConfigForm from './form.vue' +import ConfigForm from './ConfigForm.vue' const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 @@ -183,9 +185,9 @@ const resetQuery = () => { } /** 添加/修改操作 */ -const modalRef = ref() -const openModal = (type: string, id?: number) => { - modalRef.value.openModal(type, id) +const formRef = ref() +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) } /** 删除按钮操作 */ @@ -208,7 +210,7 @@ const handleExport = async () => { await message.exportConfirm() // 发起导出 exportLoading.value = true - const data = await ConfigApi.exportConfigApi(queryParams) + const data = await ConfigApi.exportConfig(queryParams) download.excel(data, '参数配置.xls') } catch { } finally { diff --git a/src/views/infra/dataSourceConfig/form.vue b/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue similarity index 96% rename from src/views/infra/dataSourceConfig/form.vue rename to src/views/infra/dataSourceConfig/DataSourceConfigForm.vue index 33f67c56..b3ebb871 100644 --- a/src/views/infra/dataSourceConfig/form.vue +++ b/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue @@ -52,7 +52,7 @@ const formRules = reactive({ const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async (type: string, id?: number) => { +const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type @@ -67,7 +67,7 @@ const openModal = async (type: string, id?: number) => { } } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 diff --git a/src/views/infra/dataSourceConfig/index.vue b/src/views/infra/dataSourceConfig/index.vue index 3b5eddba..83e757a6 100644 --- a/src/views/infra/dataSourceConfig/index.vue +++ b/src/views/infra/dataSourceConfig/index.vue @@ -1,23 +1,23 @@ <template> - <content-wrap> + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" :inline="true"> <el-form-item> <el-button type="primary" plain - @click="openModal('create')" + @click="openForm('create')" v-hasPermi="['infra:data-source-config:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> - <el-table v-loading="loading" :data="list" align="center"> + <ContentWrap> + <el-table v-loading="loading" :data="list"> <el-table-column label="主键编号" align="center" prop="id" /> <el-table-column label="数据源名称" align="center" prop="name" /> <el-table-column label="数据源连接" align="center" prop="url" :show-overflow-tooltip="true" /> @@ -34,7 +34,7 @@ <el-button link type="primary" - @click="openModal('update', scope.row.id)" + @click="openForm('update', scope.row.id)" v-hasPermi="['infra:data-source-config:update']" :disabled="scope.row.id === 0" > @@ -52,15 +52,15 @@ </template> </el-table-column> </el-table> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <data-source-config-form ref="modalRef" @success="getList" /> + <DataSourceConfigForm ref="formRef" @success="getList" /> </template> <script setup lang="ts" name="DataSourceConfig"> import { dateFormatter } from '@/utils/formatTime' import * as DataSourceConfigApi from '@/api/infra/dataSourceConfig' -import DataSourceConfigForm from './form.vue' +import DataSourceConfigForm from './DataSourceConfigForm.vue' const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 @@ -78,9 +78,9 @@ const getList = async () => { } /** 添加/修改操作 */ -const modalRef = ref() -const openModal = (type: string, id?: number) => { - modalRef.value.openModal(type, id) +const formRef = ref() +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) } /** 删除按钮操作 */ diff --git a/src/views/infra/dbDoc/index.vue b/src/views/infra/dbDoc/index.vue index 18db3e73..b15489c8 100644 --- a/src/views/infra/dbDoc/index.vue +++ b/src/views/infra/dbDoc/index.vue @@ -1,4 +1,6 @@ <template> + <doc-alert title="数据库文档" url="https://doc.iocoder.cn/db-doc/" /> + <ContentWrap title="数据库文档"> <!-- 操作工具栏 --> <div class="mb-10px"> @@ -34,7 +36,7 @@ const src = ref('') const loding = ref(true) /** 页面加载 */ const init = async () => { - const res = await DbDocApi.exportHtmlApi() + const res = await DbDocApi.exportHtml() let blob = new Blob([res], { type: 'text/html' }) let blobUrl = window.URL.createObjectURL(blob) src.value = blobUrl @@ -43,15 +45,15 @@ const init = async () => { /** 处理导出 */ const handleExport = async (type: string) => { if (type === 'HTML') { - const res = await DbDocApi.exportHtmlApi() + const res = await DbDocApi.exportHtml() download.html(res, '数据库文档.html') } if (type === 'Word') { - const res = await DbDocApi.exportWordApi() + const res = await DbDocApi.exportWord() download.word(res, '数据库文档.doc') } if (type === 'Markdown') { - const res = await DbDocApi.exportMarkdownApi() + const res = await DbDocApi.exportMarkdown() download.markdown(res, '数据库文档.md') } } diff --git a/src/views/infra/druid/index.vue b/src/views/infra/druid/index.vue index 0f8af4b5..adacb17c 100644 --- a/src/views/infra/druid/index.vue +++ b/src/views/infra/druid/index.vue @@ -1,4 +1,7 @@ <template> + <doc-alert title="数据库 MyBatis" url="https://doc.iocoder.cn/mybatis/" /> + <doc-alert title="多数据源(读写分离)" url="https://doc.iocoder.cn/dynamic-datasource/" /> + <ContentWrap> <IFrame :src="src" /> </ContentWrap> diff --git a/src/views/infra/file/form.vue b/src/views/infra/file/FileForm.vue similarity index 91% rename from src/views/infra/file/form.vue rename to src/views/infra/file/FileForm.vue index 56dbf25f..36f251e8 100644 --- a/src/views/infra/file/form.vue +++ b/src/views/infra/file/FileForm.vue @@ -1,5 +1,5 @@ <template> - <Dialog :title="dialogTitle" v-model="dialogVisible"> + <Dialog title="上传文件" v-model="dialogVisible"> <el-upload ref="uploadRef" :limit="1" @@ -28,11 +28,9 @@ </template> </Dialog> </template> - <script setup lang="ts"> import { Dialog } from '@/components/Dialog' import { getAccessToken } from '@/utils/auth' - const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 @@ -45,11 +43,10 @@ const data = ref({ path: '' }) const uploadRef = ref() /** 打开弹窗 */ -const openModal = async () => { +const open = async () => { dialogVisible.value = true - dialogTitle.value = t('action.fileUpload') } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 diff --git a/src/views/infra/file/index.vue b/src/views/infra/file/index.vue index 32b35562..6e709ec7 100644 --- a/src/views/infra/file/index.vue +++ b/src/views/infra/file/index.vue @@ -1,6 +1,8 @@ <template> + <doc-alert title="上传下载" url="https://doc.iocoder.cn/file/"/> + <!-- 搜索 --> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true"> <el-form-item label="文件路径" prop="path"> <el-input @@ -31,16 +33,16 @@ <el-form-item> <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> - <el-button type="primary" @click="openModal"> + <el-button type="primary" @click="openForm"> <Icon icon="ep:upload" class="mr-5px" /> 上传文件 </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> - <el-table v-loading="loading" :data="list" align="center"> + <ContentWrap> + <el-table v-loading="loading" :data="list"> <el-table-column label="文件名" align="center" prop="name" :show-overflow-tooltip="true" /> <el-table-column label="文件路径" align="center" prop="path" :show-overflow-tooltip="true" /> <el-table-column label="URL" align="center" prop="url" :show-overflow-tooltip="true" /> @@ -79,16 +81,16 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <file-upload-form ref="modalRef" @success="getList" /> + <FileForm ref="formRef" @success="getList" /> </template> <script setup lang="ts" name="Config"> import { fileSizeFormatter } from '@/utils' import { dateFormatter } from '@/utils/formatTime' import * as FileApi from '@/api/infra/file' -import FileUploadForm from './form.vue' +import FileUploadForm from './FileForm.vue' const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 @@ -129,9 +131,9 @@ const resetQuery = () => { } /** 添加/修改操作 */ -const modalRef = ref() -const openModal = () => { - modalRef.value.openModal() +const formRef = ref() +const openForm = () => { + formRef.value.open() } /** 删除按钮操作 */ diff --git a/src/views/infra/fileConfig/form.vue b/src/views/infra/fileConfig/FileConfigForm.vue similarity index 98% rename from src/views/infra/fileConfig/form.vue rename to src/views/infra/fileConfig/FileConfigForm.vue index 740d29ed..2f5a7586 100644 --- a/src/views/infra/fileConfig/form.vue +++ b/src/views/infra/fileConfig/FileConfigForm.vue @@ -101,7 +101,6 @@ <script setup lang="ts"> import { DICT_TYPE, getDictOptions } from '@/utils/dict' import * as FileConfigApi from '@/api/infra/fileConfig' - const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 @@ -136,7 +135,7 @@ const formRules = reactive({ const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async (type: string, id?: number) => { +const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type @@ -151,7 +150,7 @@ const openModal = async (type: string, id?: number) => { } } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 diff --git a/src/views/infra/fileConfig/index.vue b/src/views/infra/fileConfig/index.vue index 245b7f5c..7dd027fa 100644 --- a/src/views/infra/fileConfig/index.vue +++ b/src/views/infra/fileConfig/index.vue @@ -1,6 +1,8 @@ <template> + <doc-alert title="上传下载" url="https://doc.iocoder.cn/file/" /> + <!-- 搜索 --> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true"> <el-form-item label="配置名" prop="name"> <el-input @@ -13,10 +15,10 @@ <el-form-item label="存储器" prop="storage"> <el-select v-model="queryParams.storage" placeholder="请选择存储器" clearable> <el-option - v-for="dict in getDictOptions(DICT_TYPE.INFRA_FILE_STORAGE)" - :key="parseInt(dict.value)" + v-for="dict in getIntDictOptions(DICT_TYPE.INFRA_FILE_STORAGE)" + :key="dict.value" :label="dict.label" - :value="parseInt(dict.value)" + :value="dict.value" /> </el-select> </el-form-item> @@ -36,18 +38,18 @@ <el-button type="primary" plain - @click="openModal('create')" + @click="openForm('create')" v-hasPermi="['infra:file-config:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> - <el-table v-loading="loading" :data="list" align="center"> + <ContentWrap> + <el-table v-loading="loading" :data="list"> <el-table-column label="编号" align="center" prop="id" /> <el-table-column label="配置名" align="center" prop="name" /> <el-table-column label="存储器" align="center" prop="storage"> @@ -73,7 +75,7 @@ <el-button link type="primary" - @click="openModal('update', scope.row.id)" + @click="openForm('update', scope.row.id)" v-hasPermi="['infra:file-config:update']" > 编辑 @@ -106,15 +108,15 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <file-config-form ref="modalRef" @success="getList" /> + <FileConfigForm ref="formRef" @success="getList" /> </template> <script setup lang="ts" name="Config"> import * as FileConfigApi from '@/api/infra/fileConfig' -import FileConfigForm from './form.vue' -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import FileConfigForm from './FileConfigForm.vue' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { dateFormatter } from '@/utils/formatTime' const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 @@ -156,9 +158,9 @@ const resetQuery = () => { } /** 添加/修改操作 */ -const modalRef = ref() -const openModal = (type: string, id?: number) => { - modalRef.value.openModal(type, id) +const formRef = ref() +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) } /** 删除按钮操作 */ diff --git a/src/views/infra/job/index.vue b/src/views/infra/job/index.vue index e113878a..af02133e 100644 --- a/src/views/infra/job/index.vue +++ b/src/views/infra/job/index.vue @@ -1,5 +1,9 @@ <template> - <content-wrap> + <doc-alert title="定时任务" url="https://doc.iocoder.cn/job/" /> + <doc-alert title="异步任务" url="https://doc.iocoder.cn/async-task/" /> + <doc-alert title="消息队列" url="https://doc.iocoder.cn/message-queue/" /> + + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" @@ -66,10 +70,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="任务编号" align="center" prop="id" /> <el-table-column label="任务名称" align="center" prop="name" /> @@ -136,7 +140,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> <JobForm ref="formRef" @success="getList" /> @@ -271,7 +275,7 @@ const handleRun = async (row: JobApi.JobVO) => { // 二次确认 await message.confirm('确认要立即执行一次' + row.name + '?', t('common.reminder')) // 提交执行 - await JobApi.runJobApi(row.id) + await JobApi.runJob(row.id) message.success('执行成功') // 刷新列表 await getList() @@ -286,7 +290,7 @@ const openDetail = (id: number) => { /** 跳转执行日志 */ const handleJobLog = (id: number) => { - if (id) { + if (id > 0) { push('/job/job-log?id=' + id) } else { push('/job/job-log') diff --git a/src/views/infra/job/logger/index.vue b/src/views/infra/job/logger/index.vue index f55a0647..4fc96736 100644 --- a/src/views/infra/job/logger/index.vue +++ b/src/views/infra/job/logger/index.vue @@ -1,5 +1,9 @@ <template> - <content-wrap> + <doc-alert title="定时任务" url="https://doc.iocoder.cn/job/" /> + <doc-alert title="异步任务" url="https://doc.iocoder.cn/async-task/" /> + <doc-alert title="消息队列" url="https://doc.iocoder.cn/message-queue/" /> + + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" @@ -67,10 +71,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="日志编号" align="center" prop="id" /> <el-table-column label="任务编号" align="center" prop="jobId" /> @@ -112,7 +116,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:查看 --> <JobLogDetail ref="detailRef" /> diff --git a/src/views/infra/redis/index.vue b/src/views/infra/redis/index.vue index b54a6c49..30d3cf65 100644 --- a/src/views/infra/redis/index.vue +++ b/src/views/infra/redis/index.vue @@ -1,4 +1,7 @@ <template> + <doc-alert title="Redis 缓存" url="https://doc.iocoder.cn/redis-cache/" /> + <doc-alert title="本地缓存" url="https://doc.iocoder.cn/local-cache/" /> + <el-scrollbar height="calc(100vh - 88px - 40px - 50px)"> <el-row> <el-col :span="24" class="card-box" shadow="hover"> @@ -130,18 +133,18 @@ import { DICT_TYPE } from '@/utils/dict' import * as RedisApi from '@/api/infra/redis' import { RedisKeyInfo, RedisMonitorInfoVO } from '@/api/infra/redis/types' - const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 + const cache = ref<RedisMonitorInfoVO>() const keyListLoad = ref(true) const keyList = ref<RedisKeyInfo[]>([]) // 基本信息 const readRedisInfo = async () => { - const data = await RedisApi.getCacheApi() + const data = await RedisApi.getCache() cache.value = data loadEchartOptions(data.commandStats) - const redisKeysInfo = await RedisApi.getKeyDefineListApi() + const redisKeysInfo = await RedisApi.getKeyDefineList() keyList.value = redisKeysInfo keyListLoad.value = false //加载完成 } @@ -250,19 +253,19 @@ const cacheForm = ref<{ }) const openKeyTemplate = async (row: RedisKeyInfo) => { keyTemplate.value = row.keyTemplate - cacheKeys.value = await RedisApi.getKeyListApi(row.keyTemplate) + cacheKeys.value = await RedisApi.getKeyList(row.keyTemplate) dialogVisible.value = true } const handleDeleteKey = async (row) => { - RedisApi.deleteKeyApi(row) + RedisApi.deleteKey(row) message.success(t('common.delSuccess')) } const handleDeleteKeys = async (row) => { - RedisApi.deleteKeysApi(row) + RedisApi.deleteKeys(row) message.success(t('common.delSuccess')) } const handleKeyValue = async (row) => { - const res = await RedisApi.getKeyValueApi(row) + const res = await RedisApi.getKeyValue(row) cacheForm.value = res } onBeforeMount(() => { diff --git a/src/views/infra/server/index.vue b/src/views/infra/server/index.vue index cc7590d6..dad3047c 100644 --- a/src/views/infra/server/index.vue +++ b/src/views/infra/server/index.vue @@ -1,4 +1,5 @@ <template> + <doc-alert title="服务监控" url="https://doc.iocoder.cn/server-monitor/" /> <ContentWrap> <IFrame :src="src" /> </ContentWrap> diff --git a/src/views/infra/skywalking/index.vue b/src/views/infra/skywalking/index.vue index 4c02f533..a330b516 100644 --- a/src/views/infra/skywalking/index.vue +++ b/src/views/infra/skywalking/index.vue @@ -1,4 +1,5 @@ <template> + <doc-alert title="服务监控" url="https://doc.iocoder.cn/server-monitor/" /> <ContentWrap> <IFrame :src="src" /> </ContentWrap> diff --git a/src/views/infra/swagger/index.vue b/src/views/infra/swagger/index.vue index dce8122e..c38d3a5a 100644 --- a/src/views/infra/swagger/index.vue +++ b/src/views/infra/swagger/index.vue @@ -1,4 +1,6 @@ <template> + <doc-alert title="接口文档" url="https://doc.iocoder.cn/api-doc/" /> + <ContentWrap> <IFrame :src="src" /> </ContentWrap> diff --git a/src/views/mall/product/property/PropertyForm.vue b/src/views/mall/product/property/PropertyForm.vue index c9a21d64..48832f76 100644 --- a/src/views/mall/product/property/PropertyForm.vue +++ b/src/views/mall/product/property/PropertyForm.vue @@ -15,10 +15,8 @@ </el-form-item> </el-form> <template #footer> - <div class="dialog-footer"> - <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button> - <el-button @click="dialogVisible = false">取 消</el-button> - </div> + <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button> + <el-button @click="dialogVisible = false">取 消</el-button> </template> </Dialog> </template> diff --git a/src/views/mp/account/index.vue b/src/views/mp/account/index.vue index 2629c658..d890f44f 100644 --- a/src/views/mp/account/index.vue +++ b/src/views/mp/account/index.vue @@ -1,6 +1,8 @@ <template> + <doc-alert title="公众号接入" url="https://doc.iocoder.cn/mp/account/" /> + <!-- 搜索工作栏 --> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" :model="queryParams" @@ -25,10 +27,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="名称" align="center" prop="name" /> <el-table-column label="微信号" align="center" prop="account" width="180" /> @@ -86,15 +88,14 @@ </template> </el-table-column> </el-table> - <!-- 分页组件 --> - <pagination - v-show="total > 0" + <!-- 分页 --> + <Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 对话框(添加 / 修改) --> <AccountForm ref="formRef" @success="getList" /> @@ -102,7 +103,6 @@ <script setup lang="ts" name="MpAccount"> import * as AccountApi from '@/api/mp/account' import AccountForm from './AccountForm.vue' - const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 diff --git a/src/views/mp/freePublish/index.vue b/src/views/mp/freePublish/index.vue index 8a3d5285..565d2da5 100644 --- a/src/views/mp/freePublish/index.vue +++ b/src/views/mp/freePublish/index.vue @@ -1,6 +1,8 @@ <template> + <doc-alert title="公众号图文" url="https://doc.iocoder.cn/mp/article/" /> + <!-- 搜索工作栏 --> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" :model="queryParams" @@ -23,10 +25,10 @@ <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <div class="waterfall" v-loading="loading"> <div class="waterfall-item" @@ -54,7 +56,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> </template> <script setup lang="ts" name="freePublish"> diff --git a/src/views/mp/statistics/index.vue b/src/views/mp/statistics/index.vue index a692365c..cef8e079 100644 --- a/src/views/mp/statistics/index.vue +++ b/src/views/mp/statistics/index.vue @@ -1,6 +1,6 @@ <template> <!-- 搜索工作栏 --> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" ref="queryForm" :inline="true" label-width="68px"> <el-form-item label="公众号" prop="accountId"> <el-select v-model="accountId" @change="getSummary" class="!w-240px"> @@ -24,10 +24,10 @@ /> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 图表 --> - <content-wrap> + <ContentWrap> <el-row> <el-col :span="12" class="card-box"> <el-card> @@ -70,7 +70,7 @@ </el-card> </el-col> </el-row> - </content-wrap> + </ContentWrap> </template> <script setup lang="ts" name="MpStatistics"> diff --git a/src/views/mp/tag/index.vue b/src/views/mp/tag/index.vue index 8a4b731d..0537bcaa 100644 --- a/src/views/mp/tag/index.vue +++ b/src/views/mp/tag/index.vue @@ -1,4 +1,6 @@ <template> + <doc-alert title="公众号标签" url="https://doc.iocoder.cn/mp/tag/" /> + <!-- 搜索工作栏 --> <ContentWrap> <el-form diff --git a/src/views/pay/app/index.vue b/src/views/pay/app/index.vue index 8972a8bb..1ac31c41 100644 --- a/src/views/pay/app/index.vue +++ b/src/views/pay/app/index.vue @@ -86,9 +86,9 @@ const message = useMessage() // 消息弹窗 // 列表相关的变量 const [registerTable, { reload, deleteData, exportList }] = useXTable({ allSchemas: allSchemas, - getListApi: AppApi.getAppPageApi, - deleteApi: AppApi.deleteAppApi, - exportListApi: AppApi.exportAppApi + getListApi: AppApi.getAppPage, + deleteApi: AppApi.deleteApp, + exportListApi: AppApi.exportApp }) // ========== CRUD 相关 ========== @@ -115,14 +115,14 @@ const handleCreate = () => { const handleUpdate = async (rowId: number) => { setDialogTile('update') // 设置数据 - const res = await AppApi.getAppApi(rowId) + const res = await AppApi.getApp(rowId) unref(formRef)?.setValues(res) } // 详情操作 const handleDetail = async (rowId: number) => { setDialogTile('detail') - const res = await AppApi.getAppApi(rowId) + const res = await AppApi.getApp(rowId) detailData.value = res } @@ -137,10 +137,10 @@ const submitForm = async () => { try { const data = unref(formRef)?.formModel as AppApi.AppVO if (actionType.value === 'create') { - await AppApi.createAppApi(data) + await AppApi.createApp(data) message.success(t('common.createSuccess')) } else { - await AppApi.updateAppApi(data) + await AppApi.updateApp(data) message.success(t('common.updateSuccess')) } dialogVisible.value = false diff --git a/src/views/pay/merchant/index.vue b/src/views/pay/merchant/index.vue index d2e487c3..17be19af 100644 --- a/src/views/pay/merchant/index.vue +++ b/src/views/pay/merchant/index.vue @@ -1,5 +1,5 @@ <template> - <content-wrap> + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" @@ -77,10 +77,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="商户编号" align="center" prop="id" /> <el-table-column label="商户号" align="center" prop="no" /> @@ -132,7 +132,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> <MerchantForm ref="formRef" @success="getList" /> diff --git a/src/views/pay/order/index.vue b/src/views/pay/order/index.vue index 2edf5785..3d140ed9 100644 --- a/src/views/pay/order/index.vue +++ b/src/views/pay/order/index.vue @@ -49,8 +49,8 @@ const { t } = useI18n() // 国际化 // 列表相关的变量 const [registerTable, { exportList }] = useXTable({ allSchemas: allSchemas, - getListApi: OrderApi.getOrderPageApi, - exportListApi: OrderApi.exportOrderApi + getListApi: OrderApi.getOrderPage, + exportListApi: OrderApi.exportOrder }) // ========== CRUD 相关 ========== const actionLoading = ref(false) // 遮罩层 @@ -73,7 +73,7 @@ const handleCreate = () => { // 详情操作 const handleDetail = async (rowId: number) => { setDialogTile('detail') - const res = await OrderApi.getOrderApi(rowId) + const res = await OrderApi.getOrder(rowId) detailData.value = res } </script> diff --git a/src/views/pay/refund/index.vue b/src/views/pay/refund/index.vue index 6b7b3d46..9deea53b 100644 --- a/src/views/pay/refund/index.vue +++ b/src/views/pay/refund/index.vue @@ -42,8 +42,8 @@ const { t } = useI18n() // 国际化 // 列表相关的变量 const [registerTable, { exportList }] = useXTable({ allSchemas: allSchemas, - getListApi: RefundApi.getRefundPageApi, - exportListApi: RefundApi.exportRefundApi + getListApi: RefundApi.getRefundPage, + exportListApi: RefundApi.exportRefund }) // ========== CRUD 相关 ========== @@ -53,7 +53,7 @@ const detailData = ref() // 详情 Ref // 详情操作 const handleDetail = async (rowId: number) => { // 设置数据 - detailData.value = RefundApi.getRefundApi(rowId) + detailData.value = RefundApi.getRefund(rowId) dialogVisible.value = true } </script> diff --git a/src/views/system/area/form.vue b/src/views/system/area/AreaForm.vue similarity index 94% rename from src/views/system/area/form.vue rename to src/views/system/area/AreaForm.vue index 8e1604e5..c0a51494 100644 --- a/src/views/system/area/form.vue +++ b/src/views/system/area/AreaForm.vue @@ -36,11 +36,11 @@ const formRules = reactive({ const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async () => { +const open = async () => { dialogVisible.value = true resetForm() } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const submitForm = async () => { diff --git a/src/views/system/area/index.vue b/src/views/system/area/index.vue index d84c769f..a31fd10d 100644 --- a/src/views/system/area/index.vue +++ b/src/views/system/area/index.vue @@ -1,13 +1,15 @@ <template> + <doc-alert title="地区 & IP" url="https://doc.iocoder.cn/area-and-ip/" /> + <!-- 操作栏 --> - <content-wrap> - <el-button type="primary" plain @click="openModal()"> + <ContentWrap> + <el-button type="primary" plain @click="openForm()"> <Icon icon="ep:plus" class="mr-5px" /> IP 查询 </el-button> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <div style="width: 100%; height: 700px"> <!-- AutoResizer 自动调节大小 --> <el-auto-resizer> @@ -23,14 +25,14 @@ </template> </el-auto-resizer> </div> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <area-form ref="modalRef" /> + <AreaForm ref="formRef" /> </template> <script setup lang="tsx" name="Area"> import type { Column } from 'element-plus' -import AreaForm from './form.vue' +import AreaForm from './AreaForm.vue' import * as AreaApi from '@/api/system/area' // 表格的 column 字段 @@ -59,9 +61,9 @@ const getList = async () => { } /** 添加/修改操作 */ -const modalRef = ref() -const openModal = () => { - modalRef.value.openModal() +const formRef = ref() +const openForm = () => { + formRef.value.open() } /** 初始化 **/ diff --git a/src/views/system/dept/DeptForm.vue b/src/views/system/dept/DeptForm.vue index 21985416..92b4cb39 100644 --- a/src/views/system/dept/DeptForm.vue +++ b/src/views/system/dept/DeptForm.vue @@ -11,7 +11,7 @@ <el-tree-select v-model="formData.parentId" :data="deptTree" - :props="{ value: 'id', label: 'name', children: 'children' }" + :props="defaultProps" value-key="deptId" placeholder="请选择上级部门" check-strictly @@ -25,12 +25,7 @@ <el-input-number v-model="formData.sort" controls-position="right" :min="0" /> </el-form-item> <el-form-item label="负责人" prop="leaderUserId"> - <el-select - v-model="formData.leaderUserId" - placeholder="请输入负责人" - clearable - style="width: 100%" - > + <el-select v-model="formData.leaderUserId" placeholder="请输入负责人" clearable> <el-option v-for="item in userList" :key="item.id" @@ -64,7 +59,7 @@ </template> <script setup lang="ts"> import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' -import { handleTree } from '@/utils/tree' +import { handleTree, defaultProps } from '@/utils/tree' import * as DeptApi from '@/api/system/dept' import * as UserApi from '@/api/system/user' import { CommonStatusEnum } from '@/utils/constants' @@ -93,7 +88,8 @@ const formRules = reactive({ email: [{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }], phone: [ { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: '请输入正确的手机号码', trigger: 'blur' } - ] + ], + status: [{ required: true, message: '状态不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref const deptTree = ref() // 树形结构 @@ -109,7 +105,7 @@ const open = async (type: string, id?: number) => { if (id) { formLoading.value = true try { - formData.value = await DeptApi.getDeptApi(id) + formData.value = await DeptApi.getDept(id) } finally { formLoading.value = false } @@ -133,10 +129,10 @@ const submitForm = async () => { try { const data = formData.value as unknown as DeptApi.DeptVO if (formType.value === 'create') { - await DeptApi.createDeptApi(data) + await DeptApi.createDept(data) message.success(t('common.createSuccess')) } else { - await DeptApi.updateDeptApi(data) + await DeptApi.updateDept(data) message.success(t('common.updateSuccess')) } dialogVisible.value = false diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index 7a1db4b4..70633111 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -51,7 +51,13 @@ <!-- 列表 --> <ContentWrap> - <el-table v-loading="loading" :data="list" row-key="id" default-expand-all v-if="refreshTable"> + <el-table + v-loading="loading" + :data="list" + row-key="id" + :default-expand-all="isExpandAll" + v-if="refreshTable" + > <el-table-column prop="name" label="部门名称" width="260" /> <el-table-column prop="leader" label="负责人" width="120"> <template #default="scope"> @@ -125,7 +131,7 @@ const userList = ref<UserApi.UserVO[]>([]) // 用户列表 const getList = async () => { loading.value = true try { - const data = await DeptApi.getDeptPageApi(queryParams) + const data = await DeptApi.getDeptPage(queryParams) list.value = handleTree(data) } finally { loading.value = false @@ -136,7 +142,6 @@ const getList = async () => { const toggleExpandAll = () => { refreshTable.value = false isExpandAll.value = !isExpandAll.value - console.log(isExpandAll.value) nextTick(() => { refreshTable.value = true }) @@ -166,7 +171,7 @@ const handleDelete = async (id: number) => { // 删除的二次确认 await message.delConfirm() // 发起删除 - await DeptApi.deleteDeptApi(id) + await DeptApi.deleteDept(id) message.success(t('common.delSuccess')) // 刷新列表 await getList() diff --git a/src/views/system/dict/form.vue b/src/views/system/dict/DictTypeForm.vue similarity index 89% rename from src/views/system/dict/form.vue rename to src/views/system/dict/DictTypeForm.vue index 793186ad..bb0deb17 100644 --- a/src/views/system/dict/form.vue +++ b/src/views/system/dict/DictTypeForm.vue @@ -20,14 +20,14 @@ <el-form-item label="状态" prop="status"> <el-radio-group v-model="formData.status"> <el-radio - v-for="dict in getDictOptions(DICT_TYPE.COMMON_STATUS)" - :key="parseInt(dict.value)" - :label="parseInt(dict.value)" - >{{ dict.label }}</el-radio + v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" + :key="dict.value" + :label="dict.value" > + {{ dict.label }} + </el-radio> </el-radio-group> </el-form-item> - <el-form-item label="备注" prop="remark"> <el-input v-model="formData.remark" type="textarea" placeholder="请输入内容" /> </el-form-item> @@ -39,10 +39,9 @@ </Dialog> </template> <script setup lang="ts"> -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import * as DictTypeApi from '@/api/system/dict/dict.type' import { CommonStatusEnum } from '@/utils/constants' - const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 @@ -64,7 +63,7 @@ const formRules = reactive({ const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async (type: string, id?: number) => { +const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type @@ -79,7 +78,7 @@ const openModal = async (type: string, id?: number) => { } } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 diff --git a/src/views/system/dict/data.form.vue b/src/views/system/dict/data/DictDataForm.vue similarity index 92% rename from src/views/system/dict/data.form.vue rename to src/views/system/dict/data/DictDataForm.vue index 4eefc4db..3bef7893 100644 --- a/src/views/system/dict/data.form.vue +++ b/src/views/system/dict/data/DictDataForm.vue @@ -26,11 +26,12 @@ <el-form-item label="状态" prop="status"> <el-radio-group v-model="formData.status"> <el-radio - v-for="dict in getDictOptions(DICT_TYPE.COMMON_STATUS)" - :key="parseInt(dict.value)" - :label="parseInt(dict.value)" - >{{ dict.label }}</el-radio + v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" + :key="dict.value" + :label="dict.value" > + {{ dict.label }} + </el-radio> </el-radio-group> </el-form-item> <el-form-item label="颜色类型" prop="colorType"> @@ -57,7 +58,7 @@ </Dialog> </template> <script setup lang="ts"> -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import * as DictDataApi from '@/api/system/dict/dict.data' import { CommonStatusEnum } from '@/utils/constants' const { t } = useI18n() // 国际化 @@ -114,7 +115,7 @@ const colorTypeOptions = readonly([ ]) /** 打开弹窗 */ -const openModal = async (type: string, id?: number) => { +const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type @@ -129,7 +130,7 @@ const openModal = async (type: string, id?: number) => { } } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 diff --git a/src/views/system/dict/data.vue b/src/views/system/dict/data/index.vue similarity index 83% rename from src/views/system/dict/data.vue rename to src/views/system/dict/data/index.vue index fbb651ff..9677614a 100644 --- a/src/views/system/dict/data.vue +++ b/src/views/system/dict/data/index.vue @@ -1,5 +1,5 @@ <template> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" :model="queryParams" @@ -9,7 +9,12 @@ > <el-form-item label="字典名称" prop="dictType"> <el-select v-model="queryParams.dictType" class="!w-240px"> - <el-option v-for="item in dicts" :key="item.type" :label="item.name" :value="item.type" /> + <el-option + v-for="item in dictTypeList" + :key="item.type" + :label="item.name" + :value="item.type" + /> </el-select> </el-form-item> <el-form-item label="字典标签" prop="label"> @@ -24,7 +29,7 @@ <el-form-item label="状态" prop="status"> <el-select v-model="queryParams.status" placeholder="数据状态" clearable class="!w-240px"> <el-option - v-for="dict in getDictOptions(DICT_TYPE.COMMON_STATUS)" + v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" @@ -34,7 +39,12 @@ <el-form-item> <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> - <el-button type="primary" @click="openModal('create')" v-hasPermi="['system:dict:create']"> + <el-button + type="primary" + plain + @click="openForm('create')" + v-hasPermi="['system:dict:create']" + > <Icon icon="ep:plus" class="mr-5px" /> 新增 </el-button> <el-button @@ -48,10 +58,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="字典编码" align="center" prop="id" /> <el-table-column label="字典标签" align="center" prop="label" /> @@ -77,7 +87,7 @@ <el-button link type="primary" - @click="openModal('update', scope.row.id)" + @click="openForm('update', scope.row.id)" v-hasPermi="['system:dict:update']" > 修改 @@ -100,18 +110,18 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <data-form ref="modalRef" @success="getList" /> + <DictDataForm ref="formRef" @success="getList" /> </template> -<script setup lang="ts" name="Data"> +<script setup lang="ts" name="DictData"> +import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' +import { dateFormatter } from '@/utils/formatTime' +import download from '@/utils/download' import * as DictDataApi from '@/api/system/dict/dict.data' import * as DictTypeApi from '@/api/system/dict/dict.type' -import { getDictOptions, DICT_TYPE } from '@/utils/dict' -import download from '@/utils/download' -import { dateFormatter } from '@/utils/formatTime' -import DataForm from './data.form.vue' +import DictDataForm from './DictDataForm.vue' const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 const route = useRoute() // 路由 @@ -128,7 +138,7 @@ const queryParams = reactive({ }) const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 -const dicts = ref<DictTypeApi.DictTypeVO[]>() // 字典类型的列表 +const dictTypeList = ref<DictTypeApi.DictTypeVO[]>() // 字典类型的列表 /** 查询列表 */ const getList = async () => { @@ -155,9 +165,9 @@ const resetQuery = () => { } /** 添加/修改操作 */ -const modalRef = ref() -const openModal = (type: string, id?: number) => { - modalRef.value.openModal(type, id) +const formRef = ref() +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) } /** 删除按钮操作 */ @@ -188,15 +198,10 @@ const handleExport = async () => { } } -/** 查询字典(精简)列表 */ -const getDictList = async () => { - dicts.value = await DictTypeApi.getSimpleDictTypeList() -} - /** 初始化 **/ -onMounted(() => { - getList() +onMounted(async () => { + await getList() // 查询字典(精简)列表 - getDictList() + dictTypeList.value = await DictTypeApi.getSimpleDictTypeList() }) </script> diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue index 43e3a0bf..79b2aed6 100644 --- a/src/views/system/dict/index.vue +++ b/src/views/system/dict/index.vue @@ -1,6 +1,6 @@ <template> <!-- 搜索工作栏 --> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" :model="queryParams" @@ -27,10 +27,15 @@ /> </el-form-item> <el-form-item label="状态" prop="status"> - <el-select v-model="queryParams.status" placeholder="字典状态" clearable class="!w-240px"> + <el-select + v-model="queryParams.status" + placeholder="请选择字典状态" + clearable + class="!w-240px" + > <el-option - v-for="dict in getDictOptions(DICT_TYPE.COMMON_STATUS)" - :key="parseInt(dict.value)" + v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" + :key="dict.value" :label="dict.label" :value="dict.value" /> @@ -53,7 +58,7 @@ <el-button type="primary" plain - @click="openModal('create')" + @click="openForm('create')" v-hasPermi="['system:dict:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 @@ -69,10 +74,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="字典编号" align="center" prop="id" /> <el-table-column label="字典名称" align="center" prop="name" show-overflow-tooltip /> @@ -95,7 +100,7 @@ <el-button link type="primary" - @click="openModal('update', scope.row.id)" + @click="openForm('update', scope.row.id)" v-hasPermi="['system:dict:update']" > 修改 @@ -121,17 +126,17 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <dict-type-form ref="modalRef" @success="getList" /> + <DictTypeForm ref="formRef" @success="getList" /> </template> -<script setup lang="ts" name="Dict"> -import { getDictOptions, DICT_TYPE } from '@/utils/dict' +<script setup lang="ts" name="DictType"> +import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' import { dateFormatter } from '@/utils/formatTime' import * as DictTypeApi from '@/api/system/dict/dict.type' -import DictTypeForm from './form.vue' +import DictTypeForm from './DictTypeForm.vue' import download from '@/utils/download' const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 @@ -175,9 +180,9 @@ const resetQuery = () => { } /** 添加/修改操作 */ -const modalRef = ref() -const openModal = (type: string, id?: number) => { - modalRef.value.openModal(type, id) +const formRef = ref() +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) } /** 删除按钮操作 */ diff --git a/src/views/system/errorCode/form.vue b/src/views/system/errorCode/ErrorCodeForm.vue similarity index 91% rename from src/views/system/errorCode/form.vue rename to src/views/system/errorCode/ErrorCodeForm.vue index 3629168c..3747ed06 100644 --- a/src/views/system/errorCode/form.vue +++ b/src/views/system/errorCode/ErrorCodeForm.vue @@ -53,7 +53,7 @@ const formRules = reactive({ const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async (type: string, id?: number) => { +const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type @@ -62,13 +62,13 @@ const openModal = async (type: string, id?: number) => { if (id) { formLoading.value = true try { - formData.value = await ErrorCodeApi.getErrorCodeApi(id) + formData.value = await ErrorCodeApi.getErrorCode(id) } finally { formLoading.value = false } } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 @@ -82,10 +82,10 @@ const submitForm = async () => { try { const data = formData.value as ErrorCodeApi.ErrorCodeVO if (formType.value === 'create') { - await ErrorCodeApi.createErrorCodeApi(data) + await ErrorCodeApi.createErrorCode(data) message.success(t('common.createSuccess')) } else { - await ErrorCodeApi.updateErrorCodeApi(data) + await ErrorCodeApi.updateErrorCode(data) message.success(t('common.updateSuccess')) } dialogVisible.value = false diff --git a/src/views/system/errorCode/index.vue b/src/views/system/errorCode/index.vue index f3105d3a..e31b252c 100644 --- a/src/views/system/errorCode/index.vue +++ b/src/views/system/errorCode/index.vue @@ -1,6 +1,8 @@ <template> + <doc-alert title="异常处理(错误码)" url="https://doc.iocoder.cn/exception/" /> + <!-- 搜索工作栏 --> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" :model="queryParams" @@ -11,7 +13,7 @@ <el-form-item label="错误码类型" prop="type"> <el-select v-model="queryParams.type" placeholder="请选择错误码类型" clearable> <el-option - v-for="dict in getDictOptions(DICT_TYPE.SYSTEM_ERROR_CODE_TYPE)" + v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_ERROR_CODE_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" @@ -34,6 +36,7 @@ placeholder="请输入错误码编码" clearable @keyup.enter="handleQuery" + class="!w-240px" /> </el-form-item> <el-form-item label="错误码提示" prop="message"> @@ -62,7 +65,7 @@ <el-button type="primary" plain - @click="openModal('create')" + @click="openForm('create')" v-hasPermi="['system:error-code:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 @@ -78,10 +81,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="编号" align="center" prop="id" /> <el-table-column label="类型" align="center" prop="type" width="80"> @@ -105,7 +108,7 @@ <el-button link type="primary" - @click="openModal('update', scope.row.id)" + @click="openForm('update', scope.row.id)" v-hasPermi="['system:error-code:update']" > 编辑 @@ -128,30 +131,25 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <error-code-form ref="modalRef" @success="getList" /> + <ErrorCodeForm ref="formRef" @success="getList" /> </template> <script setup lang="ts" name="ErrorCode"> -import * as ErrorCodeApi from '@/api/system/errorCode' -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { dateFormatter } from '@/utils/formatTime' -import ErrorCodeForm from './form.vue' import download from '@/utils/download' +import * as ErrorCodeApi from '@/api/system/errorCode' +import ErrorCodeForm from './ErrorCodeForm.vue' const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 -// 遮罩层 -const loading = ref(true) -// 导出遮罩层 -const exportLoading = ref(false) -// 总条数 -const total = ref(0) -// 错误码列表 -const list = ref([]) -// 查询参数 +const loading = ref(true) // 遮罩层 +const exportLoading = ref(false) // 导出遮罩层 +const total = ref(0) // 总条数 +const list = ref([]) // 错误码列表 const queryParams = reactive({ pageNo: 1, pageSize: 10, @@ -161,15 +159,13 @@ const queryParams = reactive({ message: undefined, createTime: [] }) -// 搜索的表单 -const queryFormRef = ref() +const queryFormRef = ref() // 搜索的表单 /** 查询列表 */ const getList = async () => { loading.value = true - // 执行查询 try { - const data = await ErrorCodeApi.getErrorCodePageApi(queryParams) + const data = await ErrorCodeApi.getErrorCodePage(queryParams) list.value = data.list total.value = data.total } finally { @@ -190,9 +186,9 @@ const resetQuery = () => { } /** 添加/修改操作 */ -const modalRef = ref() -const openModal = (type: string, id?: number) => { - modalRef.value.openModal(type, id) +const formRef = ref() +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) } /** 删除按钮操作 */ @@ -200,7 +196,7 @@ const handleDelete = async (id: number) => { try { // 删除的二次确认 await message.delConfirm() - await ErrorCodeApi.deleteErrorCodeApi(id) + await ErrorCodeApi.deleteErrorCode(id) message.success(t('common.delSuccess')) // 刷新列表 await getList() @@ -214,7 +210,7 @@ const handleExport = async () => { await message.exportConfirm() // 发起导出 exportLoading.value = true - const data = await ErrorCodeApi.excelErrorCodeApi(queryParams) + const data = await ErrorCodeApi.excelErrorCode(queryParams) download.excel(data, '错误码.xls') } catch { } finally { diff --git a/src/views/system/loginlog/index.vue b/src/views/system/loginlog/index.vue index c48957a7..9c69da14 100644 --- a/src/views/system/loginlog/index.vue +++ b/src/views/system/loginlog/index.vue @@ -1,5 +1,7 @@ <template> - <content-wrap> + <doc-alert title="系统日志" url="https://doc.iocoder.cn/system-log/" /> + + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" @@ -51,10 +53,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="日志编号" align="center" prop="id" /> <el-table-column label="操作类型" align="center" prop="logType"> @@ -97,7 +99,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:详情 --> <LoginLogDetail ref="detailRef" /> diff --git a/src/views/system/mail/account/form.vue b/src/views/system/mail/account/MailAccountForm.vue similarity index 94% rename from src/views/system/mail/account/form.vue rename to src/views/system/mail/account/MailAccountForm.vue index 3747d17f..fdc31dbd 100644 --- a/src/views/system/mail/account/form.vue +++ b/src/views/system/mail/account/MailAccountForm.vue @@ -10,7 +10,6 @@ <script setup lang="ts"> import * as MailAccountApi from '@/api/system/mail/account' import { rules, allSchemas } from './account.data' - const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 @@ -21,7 +20,7 @@ const formType = ref('') // 表单的类型:create - 新增;update - 修改 const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async (type: string, id?: number) => { +const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type @@ -36,7 +35,7 @@ const openModal = async (type: string, id?: number) => { } } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 diff --git a/src/views/system/mail/account/account.data.ts b/src/views/system/mail/account/account.data.ts index f01c39f2..d1683bf2 100644 --- a/src/views/system/mail/account/account.data.ts +++ b/src/views/system/mail/account/account.data.ts @@ -1,6 +1,5 @@ import type { CrudSchema } from '@/hooks/web/useCrudSchemas' import { dateFormatter } from '@/utils/formatTime' - const { t } = useI18n() // 国际化 // 表单校验 diff --git a/src/views/system/mail/account/index.vue b/src/views/system/mail/account/index.vue index 24d06c5f..c9e40765 100644 --- a/src/views/system/mail/account/index.vue +++ b/src/views/system/mail/account/index.vue @@ -1,23 +1,25 @@ <template> + <doc-alert title="邮件配置" url="https://doc.iocoder.cn/mail" /> + <!-- 搜索工作栏 --> - <content-wrap> + <ContentWrap> <Search :schema="allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams"> <!-- 新增等操作按钮 --> <template #actionMore> <el-button type="primary" plain - @click="openModal('create')" + @click="openForm('create')" v-hasPermi="['system:mail-account:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 </el-button> </template> </Search> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <Table :columns="allSchemas.tableColumns" :data="tableObject.tableList" @@ -32,7 +34,7 @@ <el-button link type="primary" - @click="openModal('update', row.id)" + @click="openForm('update', row.id)" v-hasPermi="['system:mail-account:update']" > 编辑 @@ -47,15 +49,15 @@ </el-button> </template> </Table> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <mail-account-form ref="modalRef" @success="getList" /> + <MailAccountForm ref="formRef" @success="getList" /> </template> <script setup lang="ts" name="MailAccount"> import { allSchemas } from './account.data' import * as MailAccountApi from '@/api/system/mail/account' -import MailAccountForm from './form.vue' +import MailAccountForm from './MailAccountForm.vue' // tableObject:表格的属性对象,可获得分页大小、条数等属性 // tableMethods:表格的操作对象,可进行获得分页、删除记录等操作 @@ -68,9 +70,9 @@ const { tableObject, tableMethods } = useTable({ const { getList, setSearchParams } = tableMethods /** 添加/修改操作 */ -const modalRef = ref() -const openModal = (type: string, id?: number) => { - modalRef.value.openModal(type, id) +const formRef = ref() +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) } /** 删除按钮操作 */ diff --git a/src/views/system/mail/log/detail.vue b/src/views/system/mail/log/MailLogDetail.vue similarity index 87% rename from src/views/system/mail/log/detail.vue rename to src/views/system/mail/log/MailLogDetail.vue index eaf8cf84..f781bc00 100644 --- a/src/views/system/mail/log/detail.vue +++ b/src/views/system/mail/log/MailLogDetail.vue @@ -17,7 +17,7 @@ const detailLoading = ref(false) // 表单的加载中 const detailData = ref() // 详情数据 /** 打开弹窗 */ -const openModal = async (id: number) => { +const open = async (id: number) => { dialogVisible.value = true // 设置数据 detailLoading.value = true @@ -27,5 +27,5 @@ const openModal = async (id: number) => { detailLoading.value = false } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 </script> diff --git a/src/views/system/mail/log/index.vue b/src/views/system/mail/log/index.vue index 5373b71d..9ca2b9e8 100644 --- a/src/views/system/mail/log/index.vue +++ b/src/views/system/mail/log/index.vue @@ -1,11 +1,13 @@ <template> + <doc-alert title="邮件配置" url="https://doc.iocoder.cn/mail" /> + <!-- 搜索工作栏 --> - <content-wrap> + <ContentWrap> <Search :schema="allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" /> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <Table :columns="allSchemas.tableColumns" :data="tableObject.tableList" @@ -20,22 +22,22 @@ <el-button link type="primary" - @click="openModal(row.id)" + @click="openDetail(row.id)" v-hasPermi="['system:mail-log:query']" > 详情 </el-button> </template> </Table> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:详情 --> - <mail-log-detail ref="modalRef" /> + <mail-log-detail ref="detailRef" /> </template> <script setup lang="ts" name="MailLog"> import { allSchemas } from './log.data' import * as MailLogApi from '@/api/system/mail/log' -import MailLogDetail from './detail.vue' +import MailLogDetail from './MailLogDetail.vue' // tableObject:表格的属性对象,可获得分页大小、条数等属性 // tableMethods:表格的操作对象,可进行获得分页、删除记录等操作 @@ -47,9 +49,9 @@ const { tableObject, tableMethods } = useTable({ const { getList, setSearchParams } = tableMethods /** 详情操作 */ -const modalRef = ref() -const openModal = (id: number) => { - modalRef.value.openModal(id) +const detailRef = ref() +const openDetail = (id: number) => { + detailRef.value.open(id) } /** 初始化 **/ diff --git a/src/views/system/mail/log/log.data.ts b/src/views/system/mail/log/log.data.ts index 8ea96926..0fa695e4 100644 --- a/src/views/system/mail/log/log.data.ts +++ b/src/views/system/mail/log/log.data.ts @@ -3,7 +3,7 @@ import { dateFormatter } from '@/utils/formatTime' import * as MailAccountApi from '@/api/system/mail/account' // 邮箱账号的列表 -const accounts = await MailAccountApi.getSimpleMailAccountList() +const accountList = await MailAccountApi.getSimpleMailAccountList() // CrudSchema:https://kailong110120130.gitee.io/vue-element-plus-admin-doc/hooks/useCrudSchemas.html const crudSchemas = reactive<CrudSchema[]>([ @@ -74,7 +74,7 @@ const crudSchemas = reactive<CrudSchema[]>([ search: { show: true, component: 'Select', - api: () => accounts, + api: () => accountList, componentProps: { optionsAlias: { labelField: 'mail', diff --git a/src/views/system/mail/template/form.vue b/src/views/system/mail/template/MailTemplateForm.vue similarity index 94% rename from src/views/system/mail/template/form.vue rename to src/views/system/mail/template/MailTemplateForm.vue index 96989e3a..e35dcd7b 100644 --- a/src/views/system/mail/template/form.vue +++ b/src/views/system/mail/template/MailTemplateForm.vue @@ -16,7 +16,6 @@ <script setup lang="ts"> import * as MailTemplateApi from '@/api/system/mail/template' import { allSchemas, rules } from './template.data' - const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 @@ -27,7 +26,7 @@ const formType = ref('') // 表单的类型:create - 新增;update - 修改 const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async (type: string, id?: number) => { +const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type @@ -42,7 +41,7 @@ const openModal = async (type: string, id?: number) => { } } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 diff --git a/src/views/system/mail/template/send.vue b/src/views/system/mail/template/MailTemplateSendForm.vue similarity index 96% rename from src/views/system/mail/template/send.vue rename to src/views/system/mail/template/MailTemplateSendForm.vue index 19a1c23d..01c98041 100644 --- a/src/views/system/mail/template/send.vue +++ b/src/views/system/mail/template/MailTemplateSendForm.vue @@ -33,7 +33,6 @@ </template> <script setup lang="ts"> import * as MailTemplateApi from '@/api/system/mail/template' - const message = useMessage() // 消息弹窗 const dialogVisible = ref(false) // 弹窗的是否展示 @@ -53,7 +52,7 @@ const formRules = reactive({ const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async (id: number) => { +const open = async (id: number) => { dialogVisible.value = true resetForm() // 设置数据 @@ -76,7 +75,7 @@ const openModal = async (id: number) => { formLoading.value = false } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const submitForm = async () => { diff --git a/src/views/system/mail/template/index.vue b/src/views/system/mail/template/index.vue index 51531c62..5babc906 100644 --- a/src/views/system/mail/template/index.vue +++ b/src/views/system/mail/template/index.vue @@ -1,23 +1,25 @@ <template> + <doc-alert title="邮件配置" url="https://doc.iocoder.cn/mail" /> + <!-- 搜索工作栏 --> - <content-wrap> + <ContentWrap> <Search :schema="allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams"> <!-- 新增等操作按钮 --> <template #actionMore> <el-button type="primary" plain - @click="openModal('create')" + @click="openForm('create')" v-hasPermi="['system:mail-account:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 </el-button> </template> </Search> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <Table :columns="allSchemas.tableColumns" :data="tableObject.tableList" @@ -32,7 +34,7 @@ <el-button link type="primary" - @click="openSend(row.id)" + @click="openSendForm(row.id)" v-hasPermi="['system:mail-template:send-mail']" > 测试 @@ -40,7 +42,7 @@ <el-button link type="primary" - @click="openModal('update', row.id)" + @click="openForm('update', row.id)" v-hasPermi="['system:mail-template:update']" > 编辑 @@ -55,19 +57,19 @@ </el-button> </template> </Table> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <mail-template-form ref="modalRef" @success="getList" /> + <MailTemplateForm ref="formRef" @success="getList" /> <!-- 表单弹窗:发送测试 --> - <mail-template-send ref="sendRef" /> + <MailTemplateSendForm ref="sendFormRef" /> </template> <script setup lang="ts" name="MailTemplate"> import { allSchemas } from './template.data' import * as MailTemplateApi from '@/api/system/mail/template' -import MailTemplateForm from './form.vue' -import MailTemplateSend from './send.vue' +import MailTemplateForm from './MailTemplateForm.vue' +import MailTemplateSendForm from './MailTemplateSendForm.vue' // tableObject:表格的属性对象,可获得分页大小、条数等属性 // tableMethods:表格的操作对象,可进行获得分页、删除记录等操作 @@ -80,9 +82,9 @@ const { tableObject, tableMethods } = useTable({ const { getList, setSearchParams } = tableMethods /** 添加/修改操作 */ -const modalRef = ref() -const openModal = (type: string, id?: number) => { - modalRef.value.openModal(type, id) +const formRef = ref() +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) } /** 删除按钮操作 */ @@ -91,9 +93,9 @@ const handleDelete = (id: number) => { } /** 发送测试操作 */ -const sendRef = ref() -const openSend = (id: number) => { - sendRef.value.openModal(id) +const sendFormRef = ref() +const openSendForm = (id: number) => { + sendFormRef.value.open(id) } /** 初始化 **/ diff --git a/src/views/system/mail/template/template.data.ts b/src/views/system/mail/template/template.data.ts index ba76dc27..99e6764a 100644 --- a/src/views/system/mail/template/template.data.ts +++ b/src/views/system/mail/template/template.data.ts @@ -4,7 +4,7 @@ import { TableColumn } from '@/types/table' import * as MailAccountApi from '@/api/system/mail/account' // 邮箱账号的列表 -const accounts = await MailAccountApi.getSimpleMailAccountList() +const accountList = await MailAccountApi.getSimpleMailAccountList() // 表单校验 export const rules = reactive({ @@ -49,12 +49,12 @@ const crudSchemas = reactive<CrudSchema[]>([ field: 'accountId', width: '200px', formatter: (_: Recordable, __: TableColumn, cellValue: number) => { - return accounts.find((account) => account.id === cellValue)?.mail + return accountList.find((account) => account.id === cellValue)?.mail }, search: { show: true, component: 'Select', - api: () => accounts, + api: () => accountList, componentProps: { optionsAlias: { labelField: 'mail', @@ -64,7 +64,7 @@ const crudSchemas = reactive<CrudSchema[]>([ }, form: { component: 'Select', - api: () => accounts, + api: () => accountList, componentProps: { optionsAlias: { labelField: 'mail', diff --git a/src/views/system/menu/MenuForm.vue b/src/views/system/menu/MenuForm.vue index 1c6f2caf..3e7b705c 100644 --- a/src/views/system/menu/MenuForm.vue +++ b/src/views/system/menu/MenuForm.vue @@ -163,7 +163,7 @@ const open = async (type: string, id?: number, parentId?: number) => { if (id) { formLoading.value = true try { - formData.value = await MenuApi.getMenuApi(id) + formData.value = await MenuApi.getMenu(id) } finally { formLoading.value = false } diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index 8feb066b..9b157e84 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -1,4 +1,7 @@ <template> + <doc-alert title="功能权限" url="https://doc.iocoder.cn/resource-permission" /> + <doc-alert title="菜单路由" url="https://doc.iocoder.cn/vue2/route/" /> + <!-- 搜索工作栏 --> <ContentWrap> <el-form diff --git a/src/views/system/notice/form.vue b/src/views/system/notice/NoticeForm.vue similarity index 89% rename from src/views/system/notice/form.vue rename to src/views/system/notice/NoticeForm.vue index 92f99dc9..bf76c7d0 100644 --- a/src/views/system/notice/form.vue +++ b/src/views/system/notice/NoticeForm.vue @@ -16,7 +16,7 @@ <el-form-item label="公告类型" prop="type"> <el-select v-model="formData.type" placeholder="请选择公告类型" clearable> <el-option - v-for="dict in getDictOptions(DICT_TYPE.SYSTEM_NOTICE_TYPE)" + v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_NOTICE_TYPE)" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)" @@ -26,7 +26,7 @@ <el-form-item label="状态" prop="status"> <el-select v-model="formData.status" placeholder="请选择状态" clearable> <el-option - v-for="dict in getDictOptions(DICT_TYPE.COMMON_STATUS)" + v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)" @@ -44,7 +44,8 @@ </Dialog> </template> <script setup lang="ts"> -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' +import { CommonStatusEnum } from '@/utils/constants' import * as NoticeApi from '@/api/system/notice' const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 @@ -58,7 +59,7 @@ const formData = ref({ title: '', type: undefined, content: '', - status: undefined, + status: CommonStatusEnum.ENABLE, remark: '' }) const formRules = reactive({ @@ -70,7 +71,7 @@ const formRules = reactive({ const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async (type: string, id?: number) => { +const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type @@ -85,7 +86,7 @@ const openModal = async (type: string, id?: number) => { } } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 @@ -120,7 +121,7 @@ const resetForm = () => { title: '', type: undefined, content: '', - status: undefined, + status: CommonStatusEnum.ENABLE, remark: '' } formRef.value?.resetFields() diff --git a/src/views/system/notice/index.vue b/src/views/system/notice/index.vue index d76bd520..26d5ae2a 100644 --- a/src/views/system/notice/index.vue +++ b/src/views/system/notice/index.vue @@ -1,5 +1,5 @@ <template> - <content-wrap> + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" @@ -25,10 +25,10 @@ class="!w-240px" > <el-option - v-for="dict in getDictOptions(DICT_TYPE.COMMON_STATUS)" - :key="parseInt(dict.value)" + v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" + :key="dict.value" :label="dict.label" - :value="parseInt(dict.value)" + :value="dict.value" /> </el-select> </el-form-item> @@ -38,17 +38,17 @@ <el-button type="primary" plain - @click="openModal('create')" + @click="openForm('create')" v-hasPermi="['system:notice:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="公告编号" align="center" prop="id" /> <el-table-column label="公告标题" align="center" prop="title" /> @@ -74,7 +74,7 @@ <el-button link type="primary" - @click="openModal('update', scope.row.id)" + @click="openForm('update', scope.row.id)" v-hasPermi="['system:notice:update']" > 编辑 @@ -97,17 +97,16 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <notice-form ref="modalRef" @success="getList" /> + <NoticeForm ref="formRef" @success="getList" /> </template> <script setup lang="tsx"> -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { dateFormatter } from '@/utils/formatTime' import * as NoticeApi from '@/api/system/notice' -import { DictTag } from '@/components/DictTag' -import NoticeForm from './form.vue' +import NoticeForm from './NoticeForm.vue' const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 @@ -148,9 +147,9 @@ const resetQuery = () => { } /** 添加/修改操作 */ -const modalRef = ref() -const openModal = (type: string, id?: number) => { - modalRef.value.openModal(type, id) +const formRef = ref() +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) } /** 删除按钮操作 */ diff --git a/src/views/system/notify/message/index.vue b/src/views/system/notify/message/index.vue index 9a39e7f6..2a249817 100644 --- a/src/views/system/notify/message/index.vue +++ b/src/views/system/notify/message/index.vue @@ -1,5 +1,7 @@ <template> - <content-wrap> + <doc-alert title="站内信配置" url="https://doc.iocoder.cn/notify/" /> + + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" @@ -72,10 +74,10 @@ <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="编号" align="center" prop="id" /> <el-table-column label="用户类型" align="center" prop="userType"> @@ -146,7 +148,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:详情 --> <NotifyMessageDetail ref="detailRef" /> diff --git a/src/views/system/notify/my/index.vue b/src/views/system/notify/my/index.vue index d423a98c..a7711660 100644 --- a/src/views/system/notify/my/index.vue +++ b/src/views/system/notify/my/index.vue @@ -1,5 +1,7 @@ <template> - <content-wrap> + <doc-alert title="站内信配置" url="https://doc.iocoder.cn/notify/" /> + + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" @@ -45,10 +47,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> - <content-wrap> - <!-- 列表 --> + <!-- 列表 --> + <ContentWrap> <el-table v-loading="loading" :data="list" @@ -107,7 +109,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:详情 --> <MyNotifyMessageDetail ref="detailRef" /> diff --git a/src/views/system/oauth2/client/index.vue b/src/views/system/oauth2/client/index.vue index eab58726..3e7b1253 100644 --- a/src/views/system/oauth2/client/index.vue +++ b/src/views/system/oauth2/client/index.vue @@ -1,6 +1,8 @@ <template> + <doc-alert title="OAuth 2.0(SSO 单点登录)" url="https://doc.iocoder.cn/oauth2/" /> + <!-- 搜索 --> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" :model="queryParams" @@ -40,10 +42,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="客户端编号" align="center" prop="clientId" /> <el-table-column label="客户端密钥" align="center" prop="secret" /> @@ -71,6 +73,7 @@ :key="index" v-for="(authorizedGrantType, index) in scope.row.authorizedGrantTypes" :index="index" + class="mr-5px" > {{ authorizedGrantType }} </el-tag> @@ -111,7 +114,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:添加/修改 --> <ClientForm ref="formRef" @success="getList" /> diff --git a/src/views/system/oauth2/token/index.vue b/src/views/system/oauth2/token/index.vue index a809e452..13743b2b 100644 --- a/src/views/system/oauth2/token/index.vue +++ b/src/views/system/oauth2/token/index.vue @@ -1,5 +1,7 @@ <template> - <content-wrap> + <doc-alert title="OAuth 2.0(SSO 单点登录)" url="https://doc.iocoder.cn/oauth2/" /> + + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" @@ -46,10 +48,10 @@ <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="访问令牌" align="center" prop="accessToken" width="300" /> <el-table-column label="刷新令牌" align="center" prop="refreshToken" width="300" /> @@ -93,7 +95,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> </template> <script setup lang="ts" name="Oauth2AccessToken"> diff --git a/src/views/system/operatelog/detail.vue b/src/views/system/operatelog/OperateLogDetail.vue similarity index 95% rename from src/views/system/operatelog/detail.vue rename to src/views/system/operatelog/OperateLogDetail.vue index cbf22dea..1cf88663 100644 --- a/src/views/system/operatelog/detail.vue +++ b/src/views/system/operatelog/OperateLogDetail.vue @@ -66,7 +66,7 @@ const detailLoading = ref(false) // 表单的加载中 const detailData = ref() // 详情数据 /** 打开弹窗 */ -const openModal = async (data: OperateLogApi.OperateLogVO) => { +const open = async (data: OperateLogApi.OperateLogVO) => { dialogVisible.value = true // 设置数据 detailLoading.value = true @@ -76,5 +76,5 @@ const openModal = async (data: OperateLogApi.OperateLogVO) => { detailLoading.value = false } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 </script> diff --git a/src/views/system/operatelog/index.vue b/src/views/system/operatelog/index.vue index c5713be1..6be32969 100644 --- a/src/views/system/operatelog/index.vue +++ b/src/views/system/operatelog/index.vue @@ -1,5 +1,7 @@ <template> - <content-wrap> + <doc-alert title="系统日志" url="https://doc.iocoder.cn/system-log/" /> + + <ContentWrap> <!-- 搜索工作栏 --> <el-form class="-mb-15px" @@ -34,10 +36,10 @@ class="!w-240px" > <el-option - v-for="dict in getDictOptions(DICT_TYPE.SYSTEM_OPERATE_TYPE)" - :key="parseInt(dict.value)" + v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_OPERATE_TYPE)" + :key="dict.value" :label="dict.label" - :value="parseInt(dict.value)" + :value="dict.value" /> </el-select> </el-form-item> @@ -77,10 +79,10 @@ </el-button> </el-form-item> </el-form> - </content-wrap> + </ContentWrap> <!-- 列表 --> - <content-wrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="日志编号" align="center" prop="id" /> <el-table-column label="操作模块" align="center" prop="module" width="180" /> @@ -113,7 +115,7 @@ <el-button link type="primary" - @click="openModal(scope.row)" + @click="openDetail(scope.row)" v-hasPermi="['infra:config:query']" > 详情 @@ -128,17 +130,17 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> <!-- 表单弹窗:详情 --> - <operate-log-detail ref="modalRef" /> + <OperateLogDetail ref="detailRef" /> </template> <script setup lang="ts" name="OperateLog"> -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { dateFormatter } from '@/utils/formatTime' import download from '@/utils/download' import * as OperateLogApi from '@/api/system/operatelog' -import OperateLogDetail from './detail.vue' +import OperateLogDetail from './OperateLogDetail.vue' const message = useMessage() // 消息弹窗 const loading = ref(true) // 列表的加载中 @@ -181,9 +183,9 @@ const resetQuery = () => { } /** 详情操作 */ -const modalRef = ref() -const openModal = (data: OperateLogApi.OperateLogVO) => { - modalRef.value.openModal(data) +const detailRef = ref() +const openDetail = (data: OperateLogApi.OperateLogVO) => { + detailRef.value.open(data) } /** 导出按钮操作 */ diff --git a/src/views/system/post/PostForm.vue b/src/views/system/post/PostForm.vue index 70103906..3ccf7837 100644 --- a/src/views/system/post/PostForm.vue +++ b/src/views/system/post/PostForm.vue @@ -16,10 +16,10 @@ <el-form-item label="状态" prop="status"> <el-select v-model="formData.status" placeholder="请选择状态" clearable> <el-option - v-for="dict in getDictOptions(DICT_TYPE.COMMON_STATUS)" - :key="parseInt(dict.value)" + v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" + :key="dict.value" :label="dict.label" - :value="parseInt(dict.value)" + :value="dict.value" /> </el-select> </el-form-item> @@ -34,7 +34,7 @@ </Dialog> </template> <script setup lang="ts"> -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { CommonStatusEnum } from '@/utils/constants' import * as PostApi from '@/api/system/post' @@ -62,7 +62,7 @@ const formRules = reactive({ const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async (type: string, id?: number) => { +const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type @@ -77,7 +77,7 @@ const openModal = async (type: string, id?: number) => { } } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 diff --git a/src/views/system/post/index.vue b/src/views/system/post/index.vue index 4d1d306c..c94ee747 100644 --- a/src/views/system/post/index.vue +++ b/src/views/system/post/index.vue @@ -40,7 +40,7 @@ <el-button type="primary" plain - @click="openModal('create')" + @click="openForm('create')" v-hasPermi="['system:notice:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 @@ -60,7 +60,7 @@ <!-- 列表 --> <ContentWrap> - <el-table v-loading="loading" :data="list" align="center"> + <el-table v-loading="loading" :data="list"> <el-table-column label="岗位编号" align="center" prop="id" /> <el-table-column label="岗位名称" align="center" prop="name" /> <el-table-column label="岗位编码" align="center" prop="code" /> @@ -83,7 +83,7 @@ <el-button link type="primary" - @click="openModal('update', scope.row.id)" + @click="openForm('update', scope.row.id)" v-hasPermi="['system:post:update']" > 编辑 @@ -160,8 +160,8 @@ const resetQuery = () => { /** 添加/修改操作 */ const formRef = ref() -const openModal = (type: string, id?: number) => { - formRef.value.openModal(type, id) +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) } /** 删除按钮操作 */ diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue index 71f0c415..f77f17f0 100644 --- a/src/views/system/role/index.vue +++ b/src/views/system/role/index.vue @@ -1,4 +1,7 @@ <template> + <doc-alert title="功能权限" url="https://doc.iocoder.cn/resource-permission" /> + <doc-alert title="数据权限" url="https://doc.iocoder.cn/data-permission" /> + <ContentWrap> <!-- 搜索工作栏 --> <el-form diff --git a/src/views/system/sms/channel/index.vue b/src/views/system/sms/channel/index.vue index 2eb48f02..b3d572ff 100644 --- a/src/views/system/sms/channel/index.vue +++ b/src/views/system/sms/channel/index.vue @@ -1,4 +1,6 @@ <template> + <doc-alert title="短信配置" url="https://doc.iocoder.cn/sms/" /> + <ContentWrap> <el-form class="-mb-15px" @@ -52,7 +54,7 @@ <!-- 列表 --> <ContentWrap> - <el-table v-loading="loading" :data="list" align="center"> + <el-table v-loading="loading" :data="list"> <el-table-column label="编号" align="center" prop="id" /> <el-table-column label="短信签名" align="center" prop="signature" /> <el-table-column label="渠道编码" align="center" prop="code"> diff --git a/src/views/system/sms/log/index.vue b/src/views/system/sms/log/index.vue index ec8a4659..8b6d9b48 100644 --- a/src/views/system/sms/log/index.vue +++ b/src/views/system/sms/log/index.vue @@ -1,4 +1,6 @@ <template> + <doc-alert title="短信配置" url="https://doc.iocoder.cn/sms/" /> + <ContentWrap> <!-- 搜索工作栏 --> <el-form diff --git a/src/views/system/sms/template/index.vue b/src/views/system/sms/template/index.vue index 906436a5..bba80332 100644 --- a/src/views/system/sms/template/index.vue +++ b/src/views/system/sms/template/index.vue @@ -1,4 +1,6 @@ <template> + <doc-alert title="短信配置" url="https://doc.iocoder.cn/sms/" /> + <ContentWrap> <!-- 搜索工作栏 --> <el-form @@ -111,7 +113,7 @@ <!-- 列表 --> <ContentWrap> - <el-table v-loading="loading" :data="list" align="center"> + <el-table v-loading="loading" :data="list"> <el-table-column label="模板编码" align="center" diff --git a/src/views/system/tenant/form.vue b/src/views/system/tenant/TenantForm.vue similarity index 100% rename from src/views/system/tenant/form.vue rename to src/views/system/tenant/TenantForm.vue diff --git a/src/views/system/tenant/index.vue b/src/views/system/tenant/index.vue index ff65436b..3993e985 100644 --- a/src/views/system/tenant/index.vue +++ b/src/views/system/tenant/index.vue @@ -1,4 +1,6 @@ <template> + <doc-alert title="SaaS 多租户" url="https://doc.iocoder.cn/saas-tenant/" /> + <!-- 搜索 --> <ContentWrap> <el-form @@ -96,15 +98,15 @@ <!-- 列表 --> <ContentWrap> - <el-table v-loading="loading" :data="list" align="center"> + <el-table v-loading="loading" :data="list"> <el-table-column label="租户编号" align="center" prop="id" /> <el-table-column label="租户名" align="center" prop="name" /> <el-table-column label="租户套餐" align="center" prop="packageId"> <template #default="scope"> <el-tag v-if="scope.row.packageId === 0" type="danger">系统租户</el-tag> <template v-else v-for="item in packageList"> - <el-tag type="success" :key="item.id" v-if="item.id === scope.row.packageId" - >{{ item.name }} + <el-tag type="success" :key="item.id" v-if="item.id === scope.row.packageId"> + {{ item.name }} </el-tag> </template> </template> @@ -175,7 +177,7 @@ import { dateFormatter } from '@/utils/formatTime' import download from '@/utils/download' import * as TenantApi from '@/api/system/tenant' import * as TenantPackageApi from '@/api/system/tenantPackage' -import TenantForm from './form.vue' +import TenantForm from './TenantForm.vue' const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 diff --git a/src/views/system/tenantPackage/index.vue b/src/views/system/tenantPackage/index.vue index b20c432e..3f799fbf 100644 --- a/src/views/system/tenantPackage/index.vue +++ b/src/views/system/tenantPackage/index.vue @@ -1,4 +1,6 @@ <template> + <doc-alert title="SaaS 多租户" url="https://doc.iocoder.cn/saas-tenant/" /> + <!-- 搜索 --> <ContentWrap> <el-form @@ -55,7 +57,7 @@ <!-- 列表 --> <ContentWrap> - <el-table v-loading="loading" :data="list" align="center"> + <el-table v-loading="loading" :data="list"> <el-table-column label="套餐编号" align="center" prop="id" width="120" /> <el-table-column label="套餐名" align="center" prop="name" /> <el-table-column label="状态" align="center" prop="status" width="100"> diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index c95c9fd7..ed2eea5d 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -1,14 +1,18 @@ <template> + <doc-alert title="用户体系" url="https://doc.iocoder.cn/user-center/" /> + <doc-alert title="三方登陆" url="https://doc.iocoder.cn/social-user/" /> + <doc-alert title="Excel 导入导出" url="https://doc.iocoder.cn/excel-import-and-export/" /> + <el-row :gutter="20"> <!-- 左侧部门树 --> <el-col :span="4" :xs="24"> - <content-wrap class="h-1/1"> + <ContentWrap class="h-1/1"> <DeptTree @node-click="handleDeptNodeClick" /> - </content-wrap> + </ContentWrap> </el-col> <el-col :span="20" :xs="24"> <!-- 搜索 --> - <content-wrap> + <ContentWrap> <el-form class="-mb-15px" :model="queryParams" @@ -89,8 +93,8 @@ </el-button> </el-form-item> </el-form> - </content-wrap> - <content-wrap> + </ContentWrap> + <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="用户编号" align="center" key="id" prop="id" /> <el-table-column @@ -183,7 +187,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> - </content-wrap> + </ContentWrap> </el-col> </el-row>