From 9376d6fd5f70208c0dff5311371168e772bbd2e2 Mon Sep 17 00:00:00 2001 From: Charles7c <charles7c@126.com> Date: Thu, 20 Apr 2023 22:59:30 +0800 Subject: [PATCH 1/2] =?UTF-8?q?style:=20=E4=BC=98=E5=8C=96=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E7=A8=8B=E5=BA=8F=E6=89=93=E5=8D=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../charles7c/cnadmin/ContiNewAdminApplication.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/ContiNewAdminApplication.java b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/ContiNewAdminApplication.java index d56e7ab5..765f5ddf 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/ContiNewAdminApplication.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/ContiNewAdminApplication.java @@ -34,6 +34,9 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.URLUtil; +import cn.hutool.extra.spring.SpringUtil; import top.charles7c.cnadmin.common.config.properties.ContiNewAdminProperties; @@ -73,10 +76,16 @@ public class ContiNewAdminApplication implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { String hostAddress = InetAddress.getLocalHost().getHostAddress(); + Integer port = serverProperties.getPort(); + String contextPath = serverProperties.getServlet().getContextPath(); + String baseUrl = URLUtil.normalize(String.format("%s:%s%s", hostAddress, port, contextPath)); log.info("------------------------------------------------------"); log.info("{} backend service started successfully.", properties.getName()); - log.info("后端 API 地址:http://{}:{}", hostAddress, serverProperties.getPort()); - log.info("后端 API 文档:http://{}:{}/doc.html", hostAddress, serverProperties.getPort()); + log.info("后端 API 地址:{}", baseUrl); + Boolean docEnabled = Convert.toBool(SpringUtil.getProperty("springdoc.swagger-ui.enabled")); + if (Boolean.TRUE.equals(docEnabled)) { + log.info("后端 API 文档:{}/doc.html", baseUrl); + } log.info("------------------------------------------------------"); } } From 39b0b9a48ec6117dab6a8688371ade023687b769 Mon Sep 17 00:00:00 2001 From: Charles7c <charles7c@126.com> Date: Wed, 28 Jun 2023 22:49:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?style:=20=E8=A7=A3=E5=86=B3=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E6=97=B6=E9=83=A8=E5=88=86=E8=A1=8C=E5=88=86=E9=9A=94?= =?UTF-8?q?=E7=AC=A6=E6=8A=A5=20warning=20=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 来自 @woodlxl(小鹿) --- continew-admin-ui/components.d.ts | 150 ++++++++-------- continew-admin-ui/package.json | 1 + .../src/components/footer/index.vue | 22 ++- .../src/components/navbar/index.vue | 5 +- .../src/components/right-toolbar/index.vue | 10 +- continew-admin-ui/src/hooks/axios.d.ts | 4 +- .../router/routes/modules/arco-design/list.ts | 3 +- .../modules/arco-design/visualization.ts | 10 +- continew-admin-ui/src/utils/avatar.ts | 5 +- .../arco-design/list/search-table/index.vue | 4 +- .../src/views/login/components/login-form.vue | 7 +- continew-admin-ui/src/views/login/index.vue | 2 +- .../src/views/login/locale/en-US.ts | 6 +- .../src/views/login/locale/zh-CN.ts | 6 +- .../src/views/monitor/log/login/index.vue | 8 +- .../src/views/monitor/log/operation/index.vue | 8 +- .../src/views/monitor/log/system/index.vue | 74 ++++++-- .../src/views/monitor/online/index.vue | 36 ++-- .../src/views/system/dept/index.vue | 25 +-- .../src/views/system/menu/index.vue | 12 +- .../src/views/system/role/index.vue | 75 +++++--- .../user/center/components/basic-info.vue | 15 +- .../user/center/components/operation-log.vue | 4 +- .../security-settings/update-email.vue | 160 +++++++++++++----- .../security-settings/update-phone.vue | 12 +- .../security-settings/update-pwd.vue | 110 +++++++++--- .../views/system/user/center/locale/en-US.ts | 84 ++++++--- .../views/system/user/center/locale/zh-CN.ts | 66 +++++--- .../src/views/system/user/index.vue | 37 +++- 29 files changed, 659 insertions(+), 302 deletions(-) diff --git a/continew-admin-ui/components.d.ts b/continew-admin-ui/components.d.ts index 74f6e6fd..d692d1fe 100644 --- a/continew-admin-ui/components.d.ts +++ b/continew-admin-ui/components.d.ts @@ -1,84 +1,84 @@ // generated by unplugin-vue-components // We suggest you to commit this file into source control // Read more: https://github.com/vuejs/core/pull/3399 -import '@vue/runtime-core' +import '@vue/runtime-core'; -export {} +export {}; declare module '@vue/runtime-core' { export interface GlobalComponents { - AAffix: typeof import('@arco-design/web-vue')['Affix'] - AAlert: typeof import('@arco-design/web-vue')['Alert'] - AAvatar: typeof import('@arco-design/web-vue')['Avatar'] - ABadge: typeof import('@arco-design/web-vue')['Badge'] - ABreadcrumb: typeof import('@arco-design/web-vue')['Breadcrumb'] - ABreadcrumbItem: typeof import('@arco-design/web-vue')['BreadcrumbItem'] - AButton: typeof import('@arco-design/web-vue')['Button'] - AButtonGroup: typeof import('@arco-design/web-vue')['ButtonGroup'] - ACard: typeof import('@arco-design/web-vue')['Card'] - ACardMeta: typeof import('@arco-design/web-vue')['CardMeta'] - ACarousel: typeof import('@arco-design/web-vue')['Carousel'] - ACarouselItem: typeof import('@arco-design/web-vue')['CarouselItem'] - ACheckbox: typeof import('@arco-design/web-vue')['Checkbox'] - ACol: typeof import('@arco-design/web-vue')['Col'] - AConfigProvider: typeof import('@arco-design/web-vue')['ConfigProvider'] - ADescriptions: typeof import('@arco-design/web-vue')['Descriptions'] - ADescriptionsItem: typeof import('@arco-design/web-vue')['DescriptionsItem'] - ADivider: typeof import('@arco-design/web-vue')['Divider'] - ADoption: typeof import('@arco-design/web-vue')['Doption'] - ADrawer: typeof import('@arco-design/web-vue')['Drawer'] - ADropdown: typeof import('@arco-design/web-vue')['Dropdown'] - AForm: typeof import('@arco-design/web-vue')['Form'] - AFormItem: typeof import('@arco-design/web-vue')['FormItem'] - AGrid: typeof import('@arco-design/web-vue')['Grid'] - AGridItem: typeof import('@arco-design/web-vue')['GridItem'] - AInput: typeof import('@arco-design/web-vue')['Input'] - AInputNumber: typeof import('@arco-design/web-vue')['InputNumber'] - AInputPassword: typeof import('@arco-design/web-vue')['InputPassword'] - AInputSearch: typeof import('@arco-design/web-vue')['InputSearch'] - ALayout: typeof import('@arco-design/web-vue')['Layout'] - ALayoutContent: typeof import('@arco-design/web-vue')['LayoutContent'] - ALayoutFooter: typeof import('@arco-design/web-vue')['LayoutFooter'] - ALayoutSider: typeof import('@arco-design/web-vue')['LayoutSider'] - ALink: typeof import('@arco-design/web-vue')['Link'] - AList: typeof import('@arco-design/web-vue')['List'] - AListItem: typeof import('@arco-design/web-vue')['ListItem'] - AListItemMeta: typeof import('@arco-design/web-vue')['ListItemMeta'] - AMenu: typeof import('@arco-design/web-vue')['Menu'] - AMenuItem: typeof import('@arco-design/web-vue')['MenuItem'] - AModal: typeof import('@arco-design/web-vue')['Modal'] - AOption: typeof import('@arco-design/web-vue')['Option'] - APopconfirm: typeof import('@arco-design/web-vue')['Popconfirm'] - APopover: typeof import('@arco-design/web-vue')['Popover'] - ARadio: typeof import('@arco-design/web-vue')['Radio'] - ARadioGroup: typeof import('@arco-design/web-vue')['RadioGroup'] - ARangePicker: typeof import('@arco-design/web-vue')['RangePicker'] - AResult: typeof import('@arco-design/web-vue')['Result'] - ARow: typeof import('@arco-design/web-vue')['Row'] - ASelect: typeof import('@arco-design/web-vue')['Select'] - ASkeleton: typeof import('@arco-design/web-vue')['Skeleton'] - ASkeletonLine: typeof import('@arco-design/web-vue')['SkeletonLine'] - ASpace: typeof import('@arco-design/web-vue')['Space'] - ASpin: typeof import('@arco-design/web-vue')['Spin'] - AStatistic: typeof import('@arco-design/web-vue')['Statistic'] - AStep: typeof import('@arco-design/web-vue')['Step'] - ASteps: typeof import('@arco-design/web-vue')['Steps'] - ASubMenu: typeof import('@arco-design/web-vue')['SubMenu'] - ASwitch: typeof import('@arco-design/web-vue')['Switch'] - ATable: typeof import('@arco-design/web-vue')['Table'] - ATableColumn: typeof import('@arco-design/web-vue')['TableColumn'] - ATabPane: typeof import('@arco-design/web-vue')['TabPane'] - ATabs: typeof import('@arco-design/web-vue')['Tabs'] - ATag: typeof import('@arco-design/web-vue')['Tag'] - ATextarea: typeof import('@arco-design/web-vue')['Textarea'] - ATooltip: typeof import('@arco-design/web-vue')['Tooltip'] - ATree: typeof import('@arco-design/web-vue')['Tree'] - ATreeSelect: typeof import('@arco-design/web-vue')['TreeSelect'] - ATypographyParagraph: typeof import('@arco-design/web-vue')['TypographyParagraph'] - ATypographyText: typeof import('@arco-design/web-vue')['TypographyText'] - ATypographyTitle: typeof import('@arco-design/web-vue')['TypographyTitle'] - AUpload: typeof import('@arco-design/web-vue')['Upload'] - RouterLink: typeof import('vue-router')['RouterLink'] - RouterView: typeof import('vue-router')['RouterView'] + AAffix: typeof import('@arco-design/web-vue')['Affix']; + AAlert: typeof import('@arco-design/web-vue')['Alert']; + AAvatar: typeof import('@arco-design/web-vue')['Avatar']; + ABadge: typeof import('@arco-design/web-vue')['Badge']; + ABreadcrumb: typeof import('@arco-design/web-vue')['Breadcrumb']; + ABreadcrumbItem: typeof import('@arco-design/web-vue')['BreadcrumbItem']; + AButton: typeof import('@arco-design/web-vue')['Button']; + AButtonGroup: typeof import('@arco-design/web-vue')['ButtonGroup']; + ACard: typeof import('@arco-design/web-vue')['Card']; + ACardMeta: typeof import('@arco-design/web-vue')['CardMeta']; + ACarousel: typeof import('@arco-design/web-vue')['Carousel']; + ACarouselItem: typeof import('@arco-design/web-vue')['CarouselItem']; + ACheckbox: typeof import('@arco-design/web-vue')['Checkbox']; + ACol: typeof import('@arco-design/web-vue')['Col']; + AConfigProvider: typeof import('@arco-design/web-vue')['ConfigProvider']; + ADescriptions: typeof import('@arco-design/web-vue')['Descriptions']; + ADescriptionsItem: typeof import('@arco-design/web-vue')['DescriptionsItem']; + ADivider: typeof import('@arco-design/web-vue')['Divider']; + ADoption: typeof import('@arco-design/web-vue')['Doption']; + ADrawer: typeof import('@arco-design/web-vue')['Drawer']; + ADropdown: typeof import('@arco-design/web-vue')['Dropdown']; + AForm: typeof import('@arco-design/web-vue')['Form']; + AFormItem: typeof import('@arco-design/web-vue')['FormItem']; + AGrid: typeof import('@arco-design/web-vue')['Grid']; + AGridItem: typeof import('@arco-design/web-vue')['GridItem']; + AInput: typeof import('@arco-design/web-vue')['Input']; + AInputNumber: typeof import('@arco-design/web-vue')['InputNumber']; + AInputPassword: typeof import('@arco-design/web-vue')['InputPassword']; + AInputSearch: typeof import('@arco-design/web-vue')['InputSearch']; + ALayout: typeof import('@arco-design/web-vue')['Layout']; + ALayoutContent: typeof import('@arco-design/web-vue')['LayoutContent']; + ALayoutFooter: typeof import('@arco-design/web-vue')['LayoutFooter']; + ALayoutSider: typeof import('@arco-design/web-vue')['LayoutSider']; + ALink: typeof import('@arco-design/web-vue')['Link']; + AList: typeof import('@arco-design/web-vue')['List']; + AListItem: typeof import('@arco-design/web-vue')['ListItem']; + AListItemMeta: typeof import('@arco-design/web-vue')['ListItemMeta']; + AMenu: typeof import('@arco-design/web-vue')['Menu']; + AMenuItem: typeof import('@arco-design/web-vue')['MenuItem']; + AModal: typeof import('@arco-design/web-vue')['Modal']; + AOption: typeof import('@arco-design/web-vue')['Option']; + APopconfirm: typeof import('@arco-design/web-vue')['Popconfirm']; + APopover: typeof import('@arco-design/web-vue')['Popover']; + ARadio: typeof import('@arco-design/web-vue')['Radio']; + ARadioGroup: typeof import('@arco-design/web-vue')['RadioGroup']; + ARangePicker: typeof import('@arco-design/web-vue')['RangePicker']; + AResult: typeof import('@arco-design/web-vue')['Result']; + ARow: typeof import('@arco-design/web-vue')['Row']; + ASelect: typeof import('@arco-design/web-vue')['Select']; + ASkeleton: typeof import('@arco-design/web-vue')['Skeleton']; + ASkeletonLine: typeof import('@arco-design/web-vue')['SkeletonLine']; + ASpace: typeof import('@arco-design/web-vue')['Space']; + ASpin: typeof import('@arco-design/web-vue')['Spin']; + AStatistic: typeof import('@arco-design/web-vue')['Statistic']; + AStep: typeof import('@arco-design/web-vue')['Step']; + ASteps: typeof import('@arco-design/web-vue')['Steps']; + ASubMenu: typeof import('@arco-design/web-vue')['SubMenu']; + ASwitch: typeof import('@arco-design/web-vue')['Switch']; + ATable: typeof import('@arco-design/web-vue')['Table']; + ATableColumn: typeof import('@arco-design/web-vue')['TableColumn']; + ATabPane: typeof import('@arco-design/web-vue')['TabPane']; + ATabs: typeof import('@arco-design/web-vue')['Tabs']; + ATag: typeof import('@arco-design/web-vue')['Tag']; + ATextarea: typeof import('@arco-design/web-vue')['Textarea']; + ATooltip: typeof import('@arco-design/web-vue')['Tooltip']; + ATree: typeof import('@arco-design/web-vue')['Tree']; + ATreeSelect: typeof import('@arco-design/web-vue')['TreeSelect']; + ATypographyParagraph: typeof import('@arco-design/web-vue')['TypographyParagraph']; + ATypographyText: typeof import('@arco-design/web-vue')['TypographyText']; + ATypographyTitle: typeof import('@arco-design/web-vue')['TypographyTitle']; + AUpload: typeof import('@arco-design/web-vue')['Upload']; + RouterLink: typeof import('vue-router')['RouterLink']; + RouterView: typeof import('vue-router')['RouterView']; } } diff --git a/continew-admin-ui/package.json b/continew-admin-ui/package.json index af7cf67e..67cfbf48 100644 --- a/continew-admin-ui/package.json +++ b/continew-admin-ui/package.json @@ -11,6 +11,7 @@ "report": "cross-env REPORT=true npm run build", "preview": "npm run build && vite preview --host", "type:check": "vue-tsc --noEmit --skipLibCheck", + "lint": "eslint . --ext .vue,.js,.ts,.jsx,.tsx --fix", "lint-staged": "npx lint-staged" }, "lint-staged": { diff --git a/continew-admin-ui/src/components/footer/index.vue b/continew-admin-ui/src/components/footer/index.vue index ace0adfe..b8859a0b 100644 --- a/continew-admin-ui/src/components/footer/index.vue +++ b/continew-admin-ui/src/components/footer/index.vue @@ -1,12 +1,26 @@ <template> <a-layout-footer class="footer"> {{ `Copyright © 2022-${new Date().getFullYear()}` }} - <a href="https://blog.charles7c.top/about/me" target="_blank" rel="noopenner noreferrer">Charles7c</a> + <a + href="https://blog.charles7c.top/about/me" + target="_blank" + rel="noopenner noreferrer" + >Charles7c</a + > <span> ⋅ </span> - <a href="https://github.com/Charles7c/continew-admin" target="_blank" rel="noopenner noreferrer">{{ $t('title') }}</a> - v1.0.0 + <a + href="https://github.com/Charles7c/continew-admin" + target="_blank" + rel="noopenner noreferrer" + >{{ $t('title') }}</a + > v1.0.0 <span> ⋅ </span> - <a href="https://beian.miit.gov.cn" target="_blank" rel="noopenner noreferrer">津ICP备2022005864号-2</a> + <a + href="https://beian.miit.gov.cn" + target="_blank" + rel="noopenner noreferrer" + >津ICP备2022005864号-2</a + > </a-layout-footer> </template> diff --git a/continew-admin-ui/src/components/navbar/index.vue b/continew-admin-ui/src/components/navbar/index.vue index 8bd34433..c6395220 100644 --- a/continew-admin-ui/src/components/navbar/index.vue +++ b/continew-admin-ui/src/components/navbar/index.vue @@ -160,7 +160,10 @@ :size="32" :style="{ marginRight: '8px', cursor: 'pointer' }" > - <img alt="avatar" :src="getAvatar(loginStore.avatar, loginStore.gender)" /> + <img + alt="avatar" + :src="getAvatar(loginStore.avatar, loginStore.gender)" + /> </a-avatar> <template #content> <a-doption> diff --git a/continew-admin-ui/src/components/right-toolbar/index.vue b/continew-admin-ui/src/components/right-toolbar/index.vue index 7f077d1a..0a850cb4 100644 --- a/continew-admin-ui/src/components/right-toolbar/index.vue +++ b/continew-admin-ui/src/components/right-toolbar/index.vue @@ -2,10 +2,14 @@ <div class="header-operation-right"> <a-button-group> <a-tooltip :content="showQuery ? '隐藏搜索栏' : '显示搜索栏'"> - <a-button @click="toggleSearch"><template #icon><icon-search /></template></a-button> + <a-button @click="toggleSearch" + ><template #icon><icon-search /></template + ></a-button> </a-tooltip> <a-tooltip content="刷新"> - <a-button @click="handleRefresh"><template #icon><icon-refresh /></template></a-button> + <a-button @click="handleRefresh" + ><template #icon><icon-refresh /></template + ></a-button> </a-tooltip> </a-button-group> </div> @@ -42,4 +46,4 @@ }; </script> -<style scoped lang="less"></style> \ No newline at end of file +<style scoped lang="less"></style> diff --git a/continew-admin-ui/src/hooks/axios.d.ts b/continew-admin-ui/src/hooks/axios.d.ts index 64e4b08a..ea19f56c 100644 --- a/continew-admin-ui/src/hooks/axios.d.ts +++ b/continew-admin-ui/src/hooks/axios.d.ts @@ -1,6 +1,6 @@ import axios, { Axios, AxiosResponse, AxiosRequestConfig } from 'axios'; -declare module "axios" { +declare module 'axios' { interface AxiosResponse<T = any> { success: boolean; // 是否成功 code: number; // 状态码 @@ -9,4 +9,4 @@ declare module "axios" { data: T; // 返回数据 } export function create(config?: AxiosRequestConfig): AxiosInstance; -} \ No newline at end of file +} diff --git a/continew-admin-ui/src/router/routes/modules/arco-design/list.ts b/continew-admin-ui/src/router/routes/modules/arco-design/list.ts index 62fe03b4..a4d4e9dc 100644 --- a/continew-admin-ui/src/router/routes/modules/arco-design/list.ts +++ b/continew-admin-ui/src/router/routes/modules/arco-design/list.ts @@ -15,7 +15,8 @@ const LIST: AppRouteRecordRaw = { { path: 'search-table', // The midline path complies with SEO specifications name: 'SearchTable', - component: () => import('@/views/arco-design/list/search-table/index.vue'), + component: () => + import('@/views/arco-design/list/search-table/index.vue'), meta: { locale: 'menu.list.searchTable', requiresAuth: true, diff --git a/continew-admin-ui/src/router/routes/modules/arco-design/visualization.ts b/continew-admin-ui/src/router/routes/modules/arco-design/visualization.ts index 98bfc86c..f15ea42a 100644 --- a/continew-admin-ui/src/router/routes/modules/arco-design/visualization.ts +++ b/continew-admin-ui/src/router/routes/modules/arco-design/visualization.ts @@ -15,7 +15,8 @@ const VISUALIZATION: AppRouteRecordRaw = { { path: 'data-analysis', name: 'DataAnalysis', - component: () => import('@/views/arco-design/visualization/data-analysis/index.vue'), + component: () => + import('@/views/arco-design/visualization/data-analysis/index.vue'), meta: { locale: 'menu.visualization.dataAnalysis', requiresAuth: true, @@ -26,7 +27,9 @@ const VISUALIZATION: AppRouteRecordRaw = { path: 'multi-dimension-data-analysis', name: 'MultiDimensionDataAnalysis', component: () => - import('@/views/arco-design/visualization/multi-dimension-data-analysis/index.vue'), + import( + '@/views/arco-design/visualization/multi-dimension-data-analysis/index.vue' + ), meta: { locale: 'menu.visualization.multiDimensionDataAnalysis', requiresAuth: true, @@ -36,7 +39,8 @@ const VISUALIZATION: AppRouteRecordRaw = { { path: 'monitor', name: 'Monitor', - component: () => import('@/views/arco-design/visualization/monitor/index.vue'), + component: () => + import('@/views/arco-design/visualization/monitor/index.vue'), meta: { locale: 'menu.dashboard.monitor', requiresAuth: true, diff --git a/continew-admin-ui/src/utils/avatar.ts b/continew-admin-ui/src/utils/avatar.ts index 25401e00..5f0e609c 100644 --- a/continew-admin-ui/src/utils/avatar.ts +++ b/continew-admin-ui/src/utils/avatar.ts @@ -2,7 +2,10 @@ import Unknown from '../assets/images/avatar/unknown.png'; import Male from '../assets/images/avatar/male.png'; import Female from '../assets/images/avatar/female.png'; -export default function getAvatar(avatar: string | undefined, gender: number | undefined) { +export default function getAvatar( + avatar: string | undefined, + gender: number | undefined +) { if (avatar) { const baseUrl = import.meta.env.VITE_API_BASE_URL; return `${baseUrl}/avatar/${avatar}`; diff --git a/continew-admin-ui/src/views/arco-design/list/search-table/index.vue b/continew-admin-ui/src/views/arco-design/list/search-table/index.vue index 70bed540..e2321957 100644 --- a/continew-admin-ui/src/views/arco-design/list/search-table/index.vue +++ b/continew-admin-ui/src/views/arco-design/list/search-table/index.vue @@ -167,7 +167,9 @@ <div> <a-checkbox v-model="item.checked" - @change="handleChange($event, item as TableColumnData, index)" + @change=" + handleChange($event, item as TableColumnData, index) + " > </a-checkbox> </div> diff --git a/continew-admin-ui/src/views/login/components/login-form.vue b/continew-admin-ui/src/views/login/components/login-form.vue index ddeaac50..8778a144 100644 --- a/continew-admin-ui/src/views/login/components/login-form.vue +++ b/continew-admin-ui/src/views/login/components/login-form.vue @@ -55,12 +55,7 @@ {{ $t('login.form.rememberMe') }} </a-checkbox> </div> - <a-button - :loading="loading" - type="primary" - long - html-type="submit" - > + <a-button :loading="loading" type="primary" long html-type="submit"> {{ $t('login.form.login') }} </a-button> </a-space> diff --git a/continew-admin-ui/src/views/login/index.vue b/continew-admin-ui/src/views/login/index.vue index e4b1e1cf..cd69a3d1 100644 --- a/continew-admin-ui/src/views/login/index.vue +++ b/continew-admin-ui/src/views/login/index.vue @@ -69,4 +69,4 @@ } } } -</style> \ No newline at end of file +</style> diff --git a/continew-admin-ui/src/views/login/locale/en-US.ts b/continew-admin-ui/src/views/login/locale/en-US.ts index ce472c28..539b837c 100644 --- a/continew-admin-ui/src/views/login/locale/en-US.ts +++ b/continew-admin-ui/src/views/login/locale/en-US.ts @@ -1,6 +1,7 @@ export default { 'login.form.title': 'Login to ContiNew Admin', - 'login.form.subTitle': 'Continue to build the latest popular technology stack in the background management framework', + 'login.form.subTitle': + 'Continue to build the latest popular technology stack in the background management framework', 'login.form.placeholder.username': 'Please enter username', 'login.form.placeholder.password': 'Please enter password', @@ -27,5 +28,6 @@ export default { 'login.banner.subSlogan2': 'Rich basic functions, low threshold to use, enterprise rapid development scaffolding', 'login.banner.slogan3': 'The code is standard and open source and free', - 'login.banner.subSlogan3': 'The backend code is fully compliant with the Alibaba coding specification, and the frontend code is strictly ESLint checked', + 'login.banner.subSlogan3': + 'The backend code is fully compliant with the Alibaba coding specification, and the frontend code is strictly ESLint checked', }; diff --git a/continew-admin-ui/src/views/login/locale/zh-CN.ts b/continew-admin-ui/src/views/login/locale/zh-CN.ts index 2e38fbc5..84b140c1 100644 --- a/continew-admin-ui/src/views/login/locale/zh-CN.ts +++ b/continew-admin-ui/src/views/login/locale/zh-CN.ts @@ -21,9 +21,11 @@ export default { 'login.form.logout.success': '退出成功', 'login.banner.slogan1': '中后台管理框架', - 'login.banner.subSlogan1': 'Continue New Admin,持续以最新流行技术栈构建,拥抱变化,迭代优化', + 'login.banner.subSlogan1': + 'Continue New Admin,持续以最新流行技术栈构建,拥抱变化,迭代优化', 'login.banner.slogan2': '内置了常见问题的解决方案', 'login.banner.subSlogan2': '基础功能丰富,使用门槛低,企业级快速开发脚手架', 'login.banner.slogan3': '代码规范且开源免费', - 'login.banner.subSlogan3': '后端代码完全遵循阿里巴巴编码规范,前端代码使用严格的 ESLint 检查', + 'login.banner.subSlogan3': + '后端代码完全遵循阿里巴巴编码规范,前端代码使用严格的 ESLint 检查', }; diff --git a/continew-admin-ui/src/views/monitor/log/login/index.vue b/continew-admin-ui/src/views/monitor/log/login/index.vue index bad79736..0d4108cb 100644 --- a/continew-admin-ui/src/views/monitor/log/login/index.vue +++ b/continew-admin-ui/src/views/monitor/log/login/index.vue @@ -61,7 +61,9 @@ <a-table-column title="登录行为" data-index="description" /> <a-table-column title="登录状态" align="center"> <template #cell="{ record }"> - <a-tag v-if="record.status === 1" color="green"><span class="circle pass" />成功</a-tag> + <a-tag v-if="record.status === 1" color="green" + ><span class="circle pass" />成功</a-tag + > <a-tooltip v-else :content="record.errorMsg"> <a-tag color="red" style="cursor: pointer"> <span class="circle fail" />失败 @@ -88,7 +90,9 @@ } from '@/api/monitor/log'; const { proxy } = getCurrentInstance() as any; - const { SuccessFailureStatusEnum } = proxy.useDict('SuccessFailureStatusEnum'); + const { SuccessFailureStatusEnum } = proxy.useDict( + 'SuccessFailureStatusEnum' + ); const loginLogList = ref<LoginLogRecord[]>([]); const total = ref(0); diff --git a/continew-admin-ui/src/views/monitor/log/operation/index.vue b/continew-admin-ui/src/views/monitor/log/operation/index.vue index 05ded3ac..3986b0d0 100644 --- a/continew-admin-ui/src/views/monitor/log/operation/index.vue +++ b/continew-admin-ui/src/views/monitor/log/operation/index.vue @@ -72,7 +72,9 @@ <a-table-column title="所属模块" data-index="module" /> <a-table-column title="操作状态" align="center"> <template #cell="{ record }"> - <a-tag v-if="record.status === 1" color="green"><span class="circle pass" />成功</a-tag> + <a-tag v-if="record.status === 1" color="green" + ><span class="circle pass" />成功</a-tag + > <a-tooltip v-else :content="record.errorMsg"> <a-tag color="red" style="cursor: pointer"> <span class="circle fail" />失败 @@ -98,7 +100,9 @@ } from '@/api/monitor/log'; const { proxy } = getCurrentInstance() as any; - const { SuccessFailureStatusEnum } = proxy.useDict('SuccessFailureStatusEnum'); + const { SuccessFailureStatusEnum } = proxy.useDict( + 'SuccessFailureStatusEnum' + ); const operationLogList = ref<OperationLogRecord[]>([]); const total = ref(0); diff --git a/continew-admin-ui/src/views/monitor/log/system/index.vue b/continew-admin-ui/src/views/monitor/log/system/index.vue index b8724af7..17be3a2c 100644 --- a/continew-admin-ui/src/views/monitor/log/system/index.vue +++ b/continew-admin-ui/src/views/monitor/log/system/index.vue @@ -50,15 +50,27 @@ </a-table-column> <a-table-column title="状态码" align="center"> <template #cell="{ record }"> - <a-tag v-if="record.statusCode >= 400" color="red">{{ record.statusCode }}</a-tag> - <a-tag v-else-if="record.statusCode === 200" color="green">{{ record.statusCode }}</a-tag> + <a-tag v-if="record.statusCode >= 400" color="red">{{ + record.statusCode + }}</a-tag> + <a-tag v-else-if="record.statusCode === 200" color="green">{{ + record.statusCode + }}</a-tag> <a-tag v-else color="orange">{{ record.statusCode }}</a-tag> </template> </a-table-column> - <a-table-column title="请求方式" align="center" data-index="requestMethod" /> + <a-table-column + title="请求方式" + align="center" + data-index="requestMethod" + /> <a-table-column title="请求 URI"> <template #cell="{ record }"> - <span :title="decodeURIComponent(record.requestUrl)">{{ record.requestUrl.match(/(\w+):\/\/([^/:]+)(:\d*)?([^#|\?|\n]*)(\?.*)?/)[4] }}</span> + <span :title="decodeURIComponent(record.requestUrl)">{{ + record.requestUrl.match( + /(\w+):\/\/([^/:]+)(:\d*)?([^#|\?|\n]*)(\?.*)?/ + )[4] + }}</span> </template> </a-table-column> <a-table-column title="客户端 IP" data-index="clientIp" /> @@ -66,18 +78,33 @@ <a-table-column title="浏览器" data-index="browser" /> <a-table-column title="请求耗时"> <template #cell="{ record }"> - <a-tag v-if="record.elapsedTime > 500" color="red">{{ record.elapsedTime }} ms</a-tag> - <a-tag v-else-if="record.elapsedTime > 200" color="orange">{{ record.elapsedTime }} ms</a-tag> + <a-tag v-if="record.elapsedTime > 500" color="red" + >{{ record.elapsedTime }} ms</a-tag + > + <a-tag v-else-if="record.elapsedTime > 200" color="orange" + >{{ record.elapsedTime }} ms</a-tag + > <a-tag v-else color="green">{{ record.elapsedTime }} ms</a-tag> </template> </a-table-column> <a-table-column title="创建时间" data-index="createTime" /> <a-table-column title="操作" align="center"> <template #cell="{ record }"> - <a-button type="text" size="small" title="查看详情" @click="toDetail(record.id)"> + <a-button + type="text" + size="small" + title="查看详情" + @click="toDetail(record.id)" + > <template #icon><icon-eye /></template>详情 </a-button> - <a-button v-if="record.exceptionDetail" type="text" size="small" title="查看异常详情" @click="toExceptionDetail(record)"> + <a-button + v-if="record.exceptionDetail" + type="text" + size="small" + title="查看异常详情" + @click="toExceptionDetail(record)" + > <template #icon><icon-bug /></template>异常 </a-button> </template> @@ -126,7 +153,9 @@ <a-tag v-else-if="systemLog.elapsedTime > 200" color="orange"> {{ systemLog.elapsedTime }} ms </a-tag> - <a-tag v-else color="green">{{ systemLog.elapsedTime }} ms</a-tag> + <a-tag v-else color="green" + >{{ systemLog.elapsedTime }} ms</a-tag + > </span> </a-descriptions-item> <a-descriptions-item label="创建时间"> @@ -136,14 +165,23 @@ <span v-else>{{ systemLog.createTime }}</span> </a-descriptions-item> </a-descriptions> - <a-descriptions title="协议信息" :column="2" bordered style="margin-top: 25px"> + <a-descriptions + title="协议信息" + :column="2" + bordered + style="margin-top: 25px" + > <a-descriptions-item label="状态码"> <a-skeleton v-if="loading" :animation="true"> <a-skeleton-line :rows="1" /> </a-skeleton> <span v-else> - <a-tag v-if="systemLog.statusCode >= 400" color="red">{{ systemLog.statusCode }}</a-tag> - <a-tag v-else-if="systemLog.statusCode === 200" color="green">{{ systemLog.statusCode }}</a-tag> + <a-tag v-if="systemLog.statusCode >= 400" color="red">{{ + systemLog.statusCode + }}</a-tag> + <a-tag v-else-if="systemLog.statusCode === 200" color="green">{{ + systemLog.statusCode + }}</a-tag> <a-tag v-else color="orange">{{ systemLog.statusCode }}</a-tag> </span> </a-descriptions-item> @@ -168,7 +206,8 @@ v-if="systemLog.responseBody" :path="'res'" :data="JSON.parse(systemLog.responseBody)" - :show-length="true" /> + :show-length="true" + /> <span v-else>无</span> </a-space> </a-descriptions-item> @@ -181,7 +220,8 @@ v-if="systemLog.responseHeaders" :path="'res'" :data="JSON.parse(systemLog.responseHeaders)" - :show-length="true" /> + :show-length="true" + /> <span v-else>无</span> </a-space> </a-descriptions-item> @@ -194,7 +234,8 @@ v-if="systemLog.requestBody" :path="'res'" :data="JSON.parse(systemLog.requestBody)" - :show-length="true" /> + :show-length="true" + /> <span v-else>无</span> </a-space> </a-descriptions-item> @@ -206,7 +247,8 @@ <VueJsonPretty v-if="systemLog.requestHeaders" :data="JSON.parse(systemLog.requestHeaders)" - :show-length="true" /> + :show-length="true" + /> <span v-else>无</span> </a-space> </a-descriptions-item> diff --git a/continew-admin-ui/src/views/monitor/online/index.vue b/continew-admin-ui/src/views/monitor/online/index.vue index 310c4a2f..36e6caab 100644 --- a/continew-admin-ui/src/views/monitor/online/index.vue +++ b/continew-admin-ui/src/views/monitor/online/index.vue @@ -12,7 +12,7 @@ v-model="queryParams.nickname" placeholder="输入用户昵称搜索" allow-clear - style="width: 150px;" + style="width: 150px" @press-enter="handleQuery" /> </a-form-item> @@ -59,22 +59,34 @@ </a-table-column> <a-table-column title="用户昵称"> <template #cell="{ record }"> - {{ record.nickname }}({{record.username}}) + {{ record.nickname }}({{ record.username }}) </template> </a-table-column> <a-table-column title="登录 IP" data-index="clientIp" /> <a-table-column title="登录地点" data-index="location" /> <a-table-column title="浏览器" data-index="browser" /> <a-table-column title="登录时间" data-index="loginTime" /> - <a-table-column v-if="checkPermission(['monitor:online:user:delete'])" title="操作" align="center"> + <a-table-column + v-if="checkPermission(['monitor:online:user:delete'])" + title="操作" + align="center" + > <template #cell="{ record }"> - <a-popconfirm content="确定要强退该用户吗?" type="warning" @ok="handleKickout(record.token)"> + <a-popconfirm + content="确定要强退该用户吗?" + type="warning" + @ok="handleKickout(record.token)" + > <a-button v-permission="['monitor:online:user:delete']" type="text" size="small" :disabled="currentToken === record.token" - :title="currentToken === record.token ? '不能强退当前登录用户' : '强退'" + :title=" + currentToken === record.token + ? '不能强退当前登录用户' + : '强退' + " > <template #icon><icon-delete /></template>强退 </a-button> @@ -124,12 +136,14 @@ */ const getList = (params: OnlineUserParam = { ...queryParams.value }) => { loading.value = true; - listOnlineUser(params).then((res) => { - onlineUserList.value = res.data.list; - total.value = res.data.total; - }).finally(() => { - loading.value = false; - }); + listOnlineUser(params) + .then((res) => { + onlineUserList.value = res.data.list; + total.value = res.data.total; + }) + .finally(() => { + loading.value = false; + }); }; getList(); diff --git a/continew-admin-ui/src/views/system/dept/index.vue b/continew-admin-ui/src/views/system/dept/index.vue index b59de1d5..61675951 100644 --- a/continew-admin-ui/src/views/system/dept/index.vue +++ b/continew-admin-ui/src/views/system/dept/index.vue @@ -113,23 +113,19 @@ <template #columns> <a-table-column title="部门名称"> <template #cell="{ record }"> - <a-link @click="toDetail(record.id)">{{ - record.name - }}</a-link> + <a-link @click="toDetail(record.id)">{{ record.name }}</a-link> </template> </a-table-column> - <a-table-column - title="部门排序" - align="center" - data-index="sort" - /> + <a-table-column title="部门排序" align="center" data-index="sort" /> <a-table-column title="状态" align="center" data-index="status"> <template #cell="{ record }"> <a-switch v-model="record.status" :checked-value="1" :unchecked-value="2" - :disabled="record.disabled || !checkPermission(['system:dept:update'])" + :disabled=" + record.disabled || !checkPermission(['system:dept:update']) + " @change="handleChangeStatus(record)" /> </template> @@ -188,7 +184,11 @@ @cancel="handleCancel" > <a-form ref="formRef" :model="form" :rules="rules" size="large"> - <a-form-item label="上级部门" field="parentId" :disabled="form.disabled"> + <a-form-item + label="上级部门" + field="parentId" + :disabled="form.disabled" + > <a-tree-select v-model="form.parentId" :data="treeData" @@ -527,7 +527,10 @@ } } else if (record.children) { record.children.forEach((r) => { - rowKeys.splice(rowKeys.findIndex((key: number | undefined) => key === r.id), 1); + rowKeys.splice( + rowKeys.findIndex((key: number | undefined) => key === r.id), + 1 + ); proxy.$refs.tableRef.select(r.id, false); if (r.children) { handleSelect(rowKeys, rowKey, r); diff --git a/continew-admin-ui/src/views/system/menu/index.vue b/continew-admin-ui/src/views/system/menu/index.vue index 41831974..14fac848 100644 --- a/continew-admin-ui/src/views/system/menu/index.vue +++ b/continew-admin-ui/src/views/system/menu/index.vue @@ -307,21 +307,13 @@ <a-radio :value="false">否</a-radio> </a-radio-group> </a-form-item> - <a-form-item - v-if="form.type === 2" - label="是否缓存" - field="isCache" - > + <a-form-item v-if="form.type === 2" label="是否缓存" field="isCache"> <a-radio-group v-model="form.isCache" type="button"> <a-radio :value="true">是</a-radio> <a-radio :value="false">否</a-radio> </a-radio-group> </a-form-item> - <a-form-item - v-if="form.type !== 3" - label="是否隐藏" - field="isHidden" - > + <a-form-item v-if="form.type !== 3" label="是否隐藏" field="isHidden"> <a-radio-group v-model="form.isHidden" type="button"> <a-radio :value="true">是</a-radio> <a-radio :value="false">否</a-radio> diff --git a/continew-admin-ui/src/views/system/role/index.vue b/continew-admin-ui/src/views/system/role/index.vue index 48db00fa..15a3de18 100644 --- a/continew-admin-ui/src/views/system/role/index.vue +++ b/continew-admin-ui/src/views/system/role/index.vue @@ -118,33 +118,31 @@ <a-table-column title="ID" data-index="id" /> <a-table-column title="角色名称" data-index="name" :width="130"> <template #cell="{ record }"> - <a-link @click="toDetail(record.id)">{{ - record.name - }}</a-link> + <a-link @click="toDetail(record.id)">{{ record.name }}</a-link> </template> </a-table-column> <a-table-column title="角色编码" data-index="code" /> <a-table-column title="数据权限" :width="130"> <template #cell="{ record }"> <span v-if="record.dataScope === 1">全部数据权限</span> - <span v-else-if="record.dataScope === 2">本部门及以下数据权限</span> + <span v-else-if="record.dataScope === 2" + >本部门及以下数据权限</span + > <span v-else-if="record.dataScope === 3">本部门数据权限</span> <span v-else-if="record.dataScope === 4">仅本人数据权限</span> <span v-else>自定义数据权限</span> </template> </a-table-column> - <a-table-column - title="角色排序" - align="center" - data-index="sort" - /> + <a-table-column title="角色排序" align="center" data-index="sort" /> <a-table-column title="状态" align="center" data-index="status"> <template #cell="{ record }"> <a-switch v-model="record.status" :checked-value="1" :unchecked-value="2" - :disabled="record.disabled || !checkPermission(['system:role:update'])" + :disabled=" + record.disabled || !checkPermission(['system:role:update']) + " @change="handleChangeStatus(record)" /> </template> @@ -204,7 +202,11 @@ @cancel="handleCancel" > <a-form ref="formRef" :model="form" :rules="rules" size="large"> - <a-alert v-if="!form.disabled" type="warning" style="margin-bottom: 15px;"> + <a-alert + v-if="!form.disabled" + type="warning" + style="margin-bottom: 15px" + > 变更角色编码、功能权限或数据权限后,关联在线用户会自动下线! </a-alert> <fieldset> @@ -212,7 +214,11 @@ <a-form-item label="角色名称" field="name"> <a-input v-model="form.name" placeholder="请输入角色名称" /> </a-form-item> - <a-form-item label="角色编码" field="code" :disabled="form.disabled"> + <a-form-item + label="角色编码" + field="code" + :disabled="form.disabled" + > <a-input v-model="form.code" placeholder="请输入角色编码" /> </a-form-item> <a-form-item label="角色排序" field="sort"> @@ -239,8 +245,16 @@ <legend>功能权限</legend> <a-form-item label="功能权限" :disabled="form.disabled"> <a-space style="margin-top: 2px"> - <a-checkbox v-model="menuExpandAll" @change="handleExpandAll('menu')">展开/折叠</a-checkbox> - <a-checkbox v-model="menuCheckAll" @change="handleCheckAll('menu')">全选/全不选</a-checkbox> + <a-checkbox + v-model="menuExpandAll" + @change="handleExpandAll('menu')" + >展开/折叠</a-checkbox + > + <a-checkbox + v-model="menuCheckAll" + @change="handleCheckAll('menu')" + >全选/全不选</a-checkbox + > <a-checkbox v-model="menuCheckStrictly">父子联动</a-checkbox> </a-space> <template #extra> @@ -259,17 +273,33 @@ </fieldset> <fieldset> <legend>数据权限</legend> - <a-form-item label="数据权限" field="dataScope" :disabled="form.disabled"> + <a-form-item + label="数据权限" + field="dataScope" + :disabled="form.disabled" + > <a-select v-model="form.dataScope" :options="DataScopeEnum" placeholder="请选择数据权限" /> </a-form-item> - <a-form-item v-if="form.dataScope === 5" label="权限范围" :disabled="form.disabled"> + <a-form-item + v-if="form.dataScope === 5" + label="权限范围" + :disabled="form.disabled" + > <a-space style="margin-top: 2px"> - <a-checkbox v-model="deptExpandAll" @change="handleExpandAll('dept')">展开/折叠</a-checkbox> - <a-checkbox v-model="deptCheckAll" @change="handleCheckAll('dept')">全选/全不选</a-checkbox> + <a-checkbox + v-model="deptExpandAll" + @change="handleExpandAll('dept')" + >展开/折叠</a-checkbox + > + <a-checkbox + v-model="deptCheckAll" + @change="handleCheckAll('dept')" + >全选/全不选</a-checkbox + > <a-checkbox v-model="deptCheckStrictly">父子联动</a-checkbox> </a-space> <template #extra> @@ -328,7 +358,9 @@ </a-skeleton> <span v-else> <span v-if="role.dataScope === 1">全部数据权限</span> - <span v-else-if="role.dataScope === 2">本部门及以下数据权限</span> + <span v-else-if="role.dataScope === 2" + >本部门及以下数据权限</span + > <span v-else-if="role.dataScope === 3">本部门数据权限</span> <span v-else-if="role.dataScope === 4">仅本人数据权限</span> <span v-else>自定义数据权限</span> @@ -468,14 +500,15 @@ { required: true, message: '请输入角色名称' }, { match: /^[\u4e00-\u9fa5a-zA-Z0-9_-]{1,20}$/, - message: '长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线' + message: + '长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线', }, ], code: [ { required: true, message: '请输入角色编码' }, { match: /^[a-zA-Z][a-zA-Z0-9_]{1,15}$/, - message: '长度为 2 到 16 位,可以包含字母、数字,下划线,以字母开头' + message: '长度为 2 到 16 位,可以包含字母、数字,下划线,以字母开头', }, ], dataScope: [{ required: true, message: '请选择数据权限' }], diff --git a/continew-admin-ui/src/views/system/user/center/components/basic-info.vue b/continew-admin-ui/src/views/system/user/center/components/basic-info.vue index 46685ce9..433a2782 100644 --- a/continew-admin-ui/src/views/system/user/center/components/basic-info.vue +++ b/continew-admin-ui/src/views/system/user/center/components/basic-info.vue @@ -8,21 +8,30 @@ size="large" class="form" > - <a-form-item :label="$t('userCenter.basicInfo.form.label.username')" disabled> + <a-form-item + :label="$t('userCenter.basicInfo.form.label.username')" + disabled + > <a-input v-model="form.username" :placeholder="$t('userCenter.basicInfo.form.placeholder.username')" max-length="16" /> </a-form-item> - <a-form-item :label="$t('userCenter.basicInfo.form.label.nickname')" field="nickname"> + <a-form-item + :label="$t('userCenter.basicInfo.form.label.nickname')" + field="nickname" + > <a-input v-model="form.nickname" :placeholder="$t('userCenter.basicInfo.form.placeholder.nickname')" max-length="20" /> </a-form-item> - <a-form-item :label="$t('userCenter.basicInfo.form.label.gender')" field="gender"> + <a-form-item + :label="$t('userCenter.basicInfo.form.label.gender')" + field="gender" + > <a-radio-group v-model="form.gender"> <a-radio :value="1">男</a-radio> <a-radio :value="2">女</a-radio> diff --git a/continew-admin-ui/src/views/system/user/center/components/operation-log.vue b/continew-admin-ui/src/views/system/user/center/components/operation-log.vue index ec678ca7..af3475e8 100644 --- a/continew-admin-ui/src/views/system/user/center/components/operation-log.vue +++ b/continew-admin-ui/src/views/system/user/center/components/operation-log.vue @@ -29,7 +29,9 @@ <a-table-column title="所属模块" data-index="module" /> <a-table-column title="操作状态" align="center"> <template #cell="{ record }"> - <a-tag v-if="record.status === 1" color="green"><span class="circle pass" />成功</a-tag> + <a-tag v-if="record.status === 1" color="green" + ><span class="circle pass" />成功</a-tag + > <a-tooltip v-else :content="record.errorMsg"> <a-tag color="red" style="cursor: pointer"> <span class="circle fail" />失败 diff --git a/continew-admin-ui/src/views/system/user/center/components/security-settings/update-email.vue b/continew-admin-ui/src/views/system/user/center/components/security-settings/update-email.vue index 2431844e..e5b8f9a0 100644 --- a/continew-admin-ui/src/views/system/user/center/components/security-settings/update-email.vue +++ b/continew-admin-ui/src/views/system/user/center/components/security-settings/update-email.vue @@ -8,14 +8,25 @@ <template #description> <div class="content"> <a-typography-paragraph v-if="loginStore.email"> - {{ $t('userCenter.securitySettings.updateEmail.placeholder.success.email') }}:{{ loginStore.email }} + {{ + $t( + 'userCenter.securitySettings.updateEmail.placeholder.success.email' + ) + }}:{{ loginStore.email }} </a-typography-paragraph> <a-typography-paragraph v-else class="tip"> - {{ $t('userCenter.securitySettings.updateEmail.placeholder.error.email') }} + {{ + $t( + 'userCenter.securitySettings.updateEmail.placeholder.error.email' + ) + }} </a-typography-paragraph> </div> <div class="operation"> - <a-link :title="$t('userCenter.securitySettings.button.update')" @click="toUpdate"> + <a-link + :title="$t('userCenter.securitySettings.button.update')" + @click="toUpdate" + > {{ $t('userCenter.securitySettings.button.update') }} </a-link> </div> @@ -30,17 +41,35 @@ @cancel="handleCancel" > <a-form ref="formRef" :model="form" :rules="rules" size="large"> - <a-form-item :label="$t('userCenter.securitySettings.updateEmail.form.label.newEmail')" field="newEmail"> + <a-form-item + :label=" + $t('userCenter.securitySettings.updateEmail.form.label.newEmail') + " + field="newEmail" + > <a-input v-model="form.newEmail" - :placeholder="$t('userCenter.securitySettings.updateEmail.form.placeholder.newEmail')" + :placeholder=" + $t( + 'userCenter.securitySettings.updateEmail.form.placeholder.newEmail' + ) + " allow-clear /> </a-form-item> - <a-form-item :label="$t('userCenter.securitySettings.updateEmail.form.label.captcha')" field="captcha"> + <a-form-item + :label=" + $t('userCenter.securitySettings.updateEmail.form.label.captcha') + " + field="captcha" + > <a-input v-model="form.captcha" - :placeholder="$t('userCenter.securitySettings.updateEmail.form.placeholder.captcha')" + :placeholder=" + $t( + 'userCenter.securitySettings.updateEmail.form.placeholder.captcha' + ) + " max-length="6" allow-clear style="width: 80%" @@ -55,10 +84,21 @@ {{ captchaBtnName }} </a-button> </a-form-item> - <a-form-item :label="$t('userCenter.securitySettings.updateEmail.form.label.currentPassword')" field="currentPassword"> + <a-form-item + :label=" + $t( + 'userCenter.securitySettings.updateEmail.form.label.currentPassword' + ) + " + field="currentPassword" + > <a-input-password v-model="form.currentPassword" - :placeholder="$t('userCenter.securitySettings.updateEmail.form.placeholder.currentPassword')" + :placeholder=" + $t( + 'userCenter.securitySettings.updateEmail.form.placeholder.currentPassword' + ) + " max-length="32" allow-clear /> @@ -85,7 +125,9 @@ const captchaLoading = ref(false); const captchaDisable = ref(false); const visible = ref(false); - const captchaBtnNameKey = ref('userCenter.securitySettings.updateEmail.form.sendCaptcha'); + const captchaBtnNameKey = ref( + 'userCenter.securitySettings.updateEmail.form.sendCaptcha' + ); const captchaBtnName = computed(() => t(captchaBtnNameKey.value)); // 表单数据 @@ -98,24 +140,48 @@ const rules = computed((): Record<string, FieldRule[]> => { return { newEmail: [ - { required: true, message: t('userCenter.securitySettings.updateEmail.form.error.required.newEmail') }, - { type: 'email', message: t('userCenter.securitySettings.updateEmail.form.error.match.newEmail') }, + { + required: true, + message: t( + 'userCenter.securitySettings.updateEmail.form.error.required.newEmail' + ), + }, + { + type: 'email', + message: t( + 'userCenter.securitySettings.updateEmail.form.error.match.newEmail' + ), + }, { validator: (value, callback) => { if (value === loginStore.email) { - callback(t('userCenter.securitySettings.updateEmail.form.error.validator.newEmail')) + callback( + t( + 'userCenter.securitySettings.updateEmail.form.error.validator.newEmail' + ) + ); } else { - callback() + callback(); } - } - } + }, + }, ], captcha: [ - { required: true, message: t('userCenter.securitySettings.updateEmail.form.error.required.captcha') } + { + required: true, + message: t( + 'userCenter.securitySettings.updateEmail.form.error.required.captcha' + ), + }, ], currentPassword: [ - { required: true, message: t('userCenter.securitySettings.updateEmail.form.error.required.currentPassword') } - ] + { + required: true, + message: t( + 'userCenter.securitySettings.updateEmail.form.error.required.currentPassword' + ), + }, + ], }; }); @@ -125,9 +191,10 @@ const resetCaptcha = () => { window.clearInterval(captchaTimer.value); captchaTime.value = 60; - captchaBtnNameKey.value = 'userCenter.securitySettings.updateEmail.form.sendCaptcha'; + captchaBtnNameKey.value = + 'userCenter.securitySettings.updateEmail.form.sendCaptcha'; captchaDisable.value = false; - } + }; /** * 发送验证码 @@ -137,28 +204,37 @@ proxy.$refs.formRef.validateField('newEmail', (valid: any) => { if (!valid) { captchaLoading.value = true; - captchaBtnNameKey.value = 'userCenter.securitySettings.updateEmail.form.loading.sendCaptcha'; + captchaBtnNameKey.value = + 'userCenter.securitySettings.updateEmail.form.loading.sendCaptcha'; getMailCaptcha({ - email: form.newEmail - }).then((res) => { - captchaLoading.value = false; - captchaDisable.value = true; - captchaBtnNameKey.value = `${t('userCenter.securitySettings.updateEmail.form.reSendCaptcha')}(${captchaTime.value -= 1}s)`; - captchaTimer.value = window.setInterval(() => { - captchaTime.value -= 1; - captchaBtnNameKey.value = `${t('userCenter.securitySettings.updateEmail.form.reSendCaptcha')}(${captchaTime.value}s)`; - if (captchaTime.value < 0) { - window.clearInterval(captchaTimer.value); - captchaTime.value = 60; - captchaBtnNameKey.value = t('userCenter.securitySettings.updateEmail.form.reSendCaptcha'); - captchaDisable.value = false; - } - }, 1000); - proxy.$message.success(res.msg); - }).catch(() => { - resetCaptcha(); - captchaLoading.value = false; - }); + email: form.newEmail, + }) + .then((res) => { + captchaLoading.value = false; + captchaDisable.value = true; + captchaBtnNameKey.value = `${t( + 'userCenter.securitySettings.updateEmail.form.reSendCaptcha' + )}(${(captchaTime.value -= 1)}s)`; + captchaTimer.value = window.setInterval(() => { + captchaTime.value -= 1; + captchaBtnNameKey.value = `${t( + 'userCenter.securitySettings.updateEmail.form.reSendCaptcha' + )}(${captchaTime.value}s)`; + if (captchaTime.value < 0) { + window.clearInterval(captchaTimer.value); + captchaTime.value = 60; + captchaBtnNameKey.value = t( + 'userCenter.securitySettings.updateEmail.form.reSendCaptcha' + ); + captchaDisable.value = false; + } + }, 1000); + proxy.$message.success(res.msg); + }) + .catch(() => { + resetCaptcha(); + captchaLoading.value = false; + }); } }); }; diff --git a/continew-admin-ui/src/views/system/user/center/components/security-settings/update-phone.vue b/continew-admin-ui/src/views/system/user/center/components/security-settings/update-phone.vue index 29f54ff2..59178d52 100644 --- a/continew-admin-ui/src/views/system/user/center/components/security-settings/update-phone.vue +++ b/continew-admin-ui/src/views/system/user/center/components/security-settings/update-phone.vue @@ -8,10 +8,18 @@ <template #description> <div class="content"> <a-typography-paragraph v-if="loginStore.phone"> - {{ $t('userCenter.securitySettings.updatePhone.placeholder.success.phone') }}:{{ loginStore.phone }} + {{ + $t( + 'userCenter.securitySettings.updatePhone.placeholder.success.phone' + ) + }}:{{ loginStore.phone }} </a-typography-paragraph> <a-typography-paragraph v-else class="tip"> - {{ $t('userCenter.securitySettings.updatePhone.placeholder.error.phone') }} + {{ + $t( + 'userCenter.securitySettings.updatePhone.placeholder.error.phone' + ) + }} </a-typography-paragraph> </div> <div class="operation"> diff --git a/continew-admin-ui/src/views/system/user/center/components/security-settings/update-pwd.vue b/continew-admin-ui/src/views/system/user/center/components/security-settings/update-pwd.vue index 890c8a5b..433cbd1b 100644 --- a/continew-admin-ui/src/views/system/user/center/components/security-settings/update-pwd.vue +++ b/continew-admin-ui/src/views/system/user/center/components/security-settings/update-pwd.vue @@ -8,14 +8,25 @@ <template #description> <div class="content"> <a-typography-paragraph v-if="loginStore.pwdResetTime"> - {{ $t('userCenter.securitySettings.updatePwd.placeholder.success.password') }} + {{ + $t( + 'userCenter.securitySettings.updatePwd.placeholder.success.password' + ) + }} </a-typography-paragraph> <a-typography-paragraph v-else class="tip"> - {{ $t('userCenter.securitySettings.updatePwd.placeholder.error.password') }} + {{ + $t( + 'userCenter.securitySettings.updatePwd.placeholder.error.password' + ) + }} </a-typography-paragraph> </div> <div class="operation"> - <a-link :title="$t('userCenter.securitySettings.button.update')" @click="toUpdate"> + <a-link + :title="$t('userCenter.securitySettings.button.update')" + @click="toUpdate" + > {{ $t('userCenter.securitySettings.button.update') }} </a-link> </div> @@ -30,26 +41,53 @@ @cancel="handleCancel" > <a-form ref="formRef" :model="form" :rules="rules" size="large"> - <a-form-item :label="$t('userCenter.securitySettings.updatePwd.form.label.oldPassword')" field="oldPassword"> + <a-form-item + :label=" + $t('userCenter.securitySettings.updatePwd.form.label.oldPassword') + " + field="oldPassword" + > <a-input-password v-model="form.oldPassword" - :placeholder="$t('userCenter.securitySettings.updatePwd.form.placeholder.oldPassword')" + :placeholder=" + $t( + 'userCenter.securitySettings.updatePwd.form.placeholder.oldPassword' + ) + " max-length="32" allow-clear /> </a-form-item> - <a-form-item :label="$t('userCenter.securitySettings.updatePwd.form.label.newPassword')" field="newPassword"> + <a-form-item + :label=" + $t('userCenter.securitySettings.updatePwd.form.label.newPassword') + " + field="newPassword" + > <a-input-password v-model="form.newPassword" - :placeholder="$t('userCenter.securitySettings.updatePwd.form.placeholder.newPassword')" + :placeholder=" + $t( + 'userCenter.securitySettings.updatePwd.form.placeholder.newPassword' + ) + " max-length="32" allow-clear /> </a-form-item> - <a-form-item :label="$t('userCenter.securitySettings.updatePwd.form.label.rePassword')" field="rePassword"> + <a-form-item + :label=" + $t('userCenter.securitySettings.updatePwd.form.label.rePassword') + " + field="rePassword" + > <a-input-password v-model="form.rePassword" - :placeholder="$t('userCenter.securitySettings.updatePwd.form.placeholder.rePassword')" + :placeholder=" + $t( + 'userCenter.securitySettings.updatePwd.form.placeholder.rePassword' + ) + " max-length="32" allow-clear /> @@ -81,31 +119,61 @@ // 表单验证规则 const rules = computed((): Record<string, FieldRule[]> => { return { - oldPassword: [{ required: true, message: t('userCenter.securitySettings.updatePwd.form.error.required.oldPassword') }], + oldPassword: [ + { + required: true, + message: t( + 'userCenter.securitySettings.updatePwd.form.error.required.oldPassword' + ), + }, + ], newPassword: [ - { required: true, message: t('userCenter.securitySettings.updatePwd.form.error.required.newPassword') }, - { match: /^(?=.*\d)(?=.*[a-z]).{6,32}$/, message: t('userCenter.securitySettings.updatePwd.form.error.match.newPassword') }, + { + required: true, + message: t( + 'userCenter.securitySettings.updatePwd.form.error.required.newPassword' + ), + }, + { + match: /^(?=.*\d)(?=.*[a-z]).{6,32}$/, + message: t( + 'userCenter.securitySettings.updatePwd.form.error.match.newPassword' + ), + }, { validator: (value, callback) => { if (value === form.oldPassword) { - callback(t('userCenter.securitySettings.updatePwd.form.error.validator.newPassword')) + callback( + t( + 'userCenter.securitySettings.updatePwd.form.error.validator.newPassword' + ) + ); } else { - callback() + callback(); } - } - } + }, + }, ], rePassword: [ - { required: true, message: t('userCenter.securitySettings.updatePwd.form.error.required.rePassword') }, + { + required: true, + message: t( + 'userCenter.securitySettings.updatePwd.form.error.required.rePassword' + ), + }, { validator: (value, callback) => { if (value !== form.newPassword) { - callback(t('userCenter.securitySettings.updatePwd.form.error.validator.rePassword')) + callback( + t( + 'userCenter.securitySettings.updatePwd.form.error.validator.rePassword' + ) + ); } else { - callback() + callback(); } - } - } + }, + }, ], }; }); diff --git a/continew-admin-ui/src/views/system/user/center/locale/en-US.ts b/continew-admin-ui/src/views/system/user/center/locale/en-US.ts index 0ed53611..47677a7c 100644 --- a/continew-admin-ui/src/views/system/user/center/locale/en-US.ts +++ b/continew-admin-ui/src/views/system/user/center/locale/en-US.ts @@ -25,9 +25,11 @@ export default { 'userCenter.basicInfo.form.placeholder.nickname': 'Please enter nickname', 'userCenter.basicInfo.form.error.required.username': 'Please enter username', - 'userCenter.basicInfo.form.error.match.username': 'Username are 4 to 16 characters long and can contain letters, numbers, underscores, and start with a letter', + 'userCenter.basicInfo.form.error.match.username': + 'Username are 4 to 16 characters long and can contain letters, numbers, underscores, and start with a letter', 'userCenter.basicInfo.form.error.required.nickname': 'Please enter nickname', - 'userCenter.basicInfo.form.error.match.nickname': 'Nickname are 1 to 20 digits long and can contain Chinese, letters, numbers, underscores, dashes', + 'userCenter.basicInfo.form.error.match.nickname': + 'Nickname are 1 to 20 digits long and can contain Chinese, letters, numbers, underscores, dashes', 'userCenter.basicInfo.form.save': 'Save', 'userCenter.basicInfo.form.save.success': 'Save success', @@ -36,55 +38,81 @@ export default { // security-settings // update-pwd 'userCenter.securitySettings.updatePwd.label.password': 'Login Password', - 'userCenter.securitySettings.updatePwd.placeholder.success.password': 'Has been set', + 'userCenter.securitySettings.updatePwd.placeholder.success.password': + 'Has been set', 'userCenter.securitySettings.updatePwd.placeholder.error.password': 'You have not set a password yet. The password must contain at least six letters, digits, and special characters except Spaces.', 'userCenter.securitySettings.updatePwd.modal.title': 'Update login password', - 'userCenter.securitySettings.updatePwd.form.label.oldPassword': 'Old password', - 'userCenter.securitySettings.updatePwd.form.label.newPassword': 'New password', - 'userCenter.securitySettings.updatePwd.form.label.rePassword': 'Confirm password', + 'userCenter.securitySettings.updatePwd.form.label.oldPassword': + 'Old password', + 'userCenter.securitySettings.updatePwd.form.label.newPassword': + 'New password', + 'userCenter.securitySettings.updatePwd.form.label.rePassword': + 'Confirm password', - 'userCenter.securitySettings.updatePwd.form.placeholder.oldPassword': 'Please enter old password', - 'userCenter.securitySettings.updatePwd.form.placeholder.newPassword': 'Password contains 6 to 32 digits and letters', - 'userCenter.securitySettings.updatePwd.form.placeholder.rePassword': 'Please enter new password again', + 'userCenter.securitySettings.updatePwd.form.placeholder.oldPassword': + 'Please enter old password', + 'userCenter.securitySettings.updatePwd.form.placeholder.newPassword': + 'Password contains 6 to 32 digits and letters', + 'userCenter.securitySettings.updatePwd.form.placeholder.rePassword': + 'Please enter new password again', - 'userCenter.securitySettings.updatePwd.form.error.required.oldPassword': 'Please enter old password', - 'userCenter.securitySettings.updatePwd.form.error.required.newPassword': 'Please enter new password', - 'userCenter.securitySettings.updatePwd.form.error.match.newPassword': 'Password contains 6 to 32 digits and letters', - 'userCenter.securitySettings.updatePwd.form.error.validator.newPassword': 'New password cannot be the same as the old password', - 'userCenter.securitySettings.updatePwd.form.error.required.rePassword': 'Please enter new password again', - 'userCenter.securitySettings.updatePwd.form.error.validator.rePassword': 'Two passwords are different', + 'userCenter.securitySettings.updatePwd.form.error.required.oldPassword': + 'Please enter old password', + 'userCenter.securitySettings.updatePwd.form.error.required.newPassword': + 'Please enter new password', + 'userCenter.securitySettings.updatePwd.form.error.match.newPassword': + 'Password contains 6 to 32 digits and letters', + 'userCenter.securitySettings.updatePwd.form.error.validator.newPassword': + 'New password cannot be the same as the old password', + 'userCenter.securitySettings.updatePwd.form.error.required.rePassword': + 'Please enter new password again', + 'userCenter.securitySettings.updatePwd.form.error.validator.rePassword': + 'Two passwords are different', // update-phone 'userCenter.securitySettings.updatePhone.label.phone': 'Phone', - 'userCenter.securitySettings.updatePhone.placeholder.success.phone': 'Has been bound', + 'userCenter.securitySettings.updatePhone.placeholder.success.phone': + 'Has been bound', 'userCenter.securitySettings.updatePhone.placeholder.error.phone': 'You have not set a phone yet. The phone binding can be used to retrieve passwords and receive notifications and SMS login.', // update-email 'userCenter.securitySettings.updateEmail.label.email': 'Email', - 'userCenter.securitySettings.updateEmail.placeholder.success.email': 'Has been bound', + 'userCenter.securitySettings.updateEmail.placeholder.success.email': + 'Has been bound', 'userCenter.securitySettings.updateEmail.placeholder.error.email': 'You have not set a mailbox yet. The mailbox binding can be used to retrieve passwords and receive notifications.', 'userCenter.securitySettings.updateEmail.modal.title': 'Update email', 'userCenter.securitySettings.updateEmail.form.label.newEmail': 'New email', 'userCenter.securitySettings.updateEmail.form.label.captcha': 'Captcha', - 'userCenter.securitySettings.updateEmail.form.label.currentPassword': 'Current password', + 'userCenter.securitySettings.updateEmail.form.label.currentPassword': + 'Current password', 'userCenter.securitySettings.updateEmail.form.sendCaptcha': 'Send captcha', - 'userCenter.securitySettings.updateEmail.form.reSendCaptcha': 'Resend captcha', - 'userCenter.securitySettings.updateEmail.form.loading.sendCaptcha': 'Sending...', + 'userCenter.securitySettings.updateEmail.form.reSendCaptcha': + 'Resend captcha', + 'userCenter.securitySettings.updateEmail.form.loading.sendCaptcha': + 'Sending...', - 'userCenter.securitySettings.updateEmail.form.placeholder.newEmail': 'Please enter new email', - 'userCenter.securitySettings.updateEmail.form.placeholder.captcha': 'Please enter email captcha', - 'userCenter.securitySettings.updateEmail.form.placeholder.currentPassword': 'Please enter current password', + 'userCenter.securitySettings.updateEmail.form.placeholder.newEmail': + 'Please enter new email', + 'userCenter.securitySettings.updateEmail.form.placeholder.captcha': + 'Please enter email captcha', + 'userCenter.securitySettings.updateEmail.form.placeholder.currentPassword': + 'Please enter current password', - 'userCenter.securitySettings.updateEmail.form.error.required.newEmail': 'Please enter new email', - 'userCenter.securitySettings.updateEmail.form.error.match.newEmail': 'Please enter the correct email', - 'userCenter.securitySettings.updateEmail.form.error.validator.newEmail': 'New email cannot be the same as the old email', - 'userCenter.securitySettings.updateEmail.form.error.required.captcha': 'Please enter email captcha', - 'userCenter.securitySettings.updateEmail.form.error.required.currentPassword': 'Please enter current password', + 'userCenter.securitySettings.updateEmail.form.error.required.newEmail': + 'Please enter new email', + 'userCenter.securitySettings.updateEmail.form.error.match.newEmail': + 'Please enter the correct email', + 'userCenter.securitySettings.updateEmail.form.error.validator.newEmail': + 'New email cannot be the same as the old email', + 'userCenter.securitySettings.updateEmail.form.error.required.captcha': + 'Please enter email captcha', + 'userCenter.securitySettings.updateEmail.form.error.required.currentPassword': + 'Please enter current password', 'userCenter.securitySettings.button.update': 'Update', }; diff --git a/continew-admin-ui/src/views/system/user/center/locale/zh-CN.ts b/continew-admin-ui/src/views/system/user/center/locale/zh-CN.ts index 592b19e4..bdb71407 100644 --- a/continew-admin-ui/src/views/system/user/center/locale/zh-CN.ts +++ b/continew-admin-ui/src/views/system/user/center/locale/zh-CN.ts @@ -25,9 +25,11 @@ export default { 'userCenter.basicInfo.form.placeholder.nickname': '请输入昵称', 'userCenter.basicInfo.form.error.required.username': '请输入用户名', - 'userCenter.basicInfo.form.error.match.username': '长度为 4 到 16 位,可以包含字母、数字,下划线,以字母开头', + 'userCenter.basicInfo.form.error.match.username': + '长度为 4 到 16 位,可以包含字母、数字,下划线,以字母开头', 'userCenter.basicInfo.form.error.required.nickname': '请输入昵称', - 'userCenter.basicInfo.form.error.match.nickname': '长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线', + 'userCenter.basicInfo.form.error.match.nickname': + '长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线', 'userCenter.basicInfo.form.save': '保存', 'userCenter.basicInfo.form.save.success': '保存成功', @@ -36,7 +38,8 @@ export default { // security-settings // update-pwd 'userCenter.securitySettings.updatePwd.label.password': '登录密码', - 'userCenter.securitySettings.updatePwd.placeholder.success.password': '已设置', + 'userCenter.securitySettings.updatePwd.placeholder.success.password': + '已设置', 'userCenter.securitySettings.updatePwd.placeholder.error.password': '您暂未设置密码,密码至少6位字符,支持数字、字母和除空格外的特殊字符。', @@ -45,16 +48,25 @@ export default { 'userCenter.securitySettings.updatePwd.form.label.newPassword': '新密码', 'userCenter.securitySettings.updatePwd.form.label.rePassword': '确认新密码', - 'userCenter.securitySettings.updatePwd.form.placeholder.oldPassword': '请输入当前密码', - 'userCenter.securitySettings.updatePwd.form.placeholder.newPassword': '长度为 6 到 32 位,同时包含字母和数字', - 'userCenter.securitySettings.updatePwd.form.placeholder.rePassword': '请再次输入新密码', + 'userCenter.securitySettings.updatePwd.form.placeholder.oldPassword': + '请输入当前密码', + 'userCenter.securitySettings.updatePwd.form.placeholder.newPassword': + '长度为 6 到 32 位,同时包含字母和数字', + 'userCenter.securitySettings.updatePwd.form.placeholder.rePassword': + '请再次输入新密码', - 'userCenter.securitySettings.updatePwd.form.error.required.oldPassword': '请输入当前密码', - 'userCenter.securitySettings.updatePwd.form.error.required.newPassword': '请输入新密码', - 'userCenter.securitySettings.updatePwd.form.error.match.newPassword': '长度为 6 到 32 位,同时包含字母和数字', - 'userCenter.securitySettings.updatePwd.form.error.validator.newPassword': '新密码不能与当前密码相同', - 'userCenter.securitySettings.updatePwd.form.error.required.rePassword': '请再次输入新密码', - 'userCenter.securitySettings.updatePwd.form.error.validator.rePassword': '两次输入的密码不一致', + 'userCenter.securitySettings.updatePwd.form.error.required.oldPassword': + '请输入当前密码', + 'userCenter.securitySettings.updatePwd.form.error.required.newPassword': + '请输入新密码', + 'userCenter.securitySettings.updatePwd.form.error.match.newPassword': + '长度为 6 到 32 位,同时包含字母和数字', + 'userCenter.securitySettings.updatePwd.form.error.validator.newPassword': + '新密码不能与当前密码相同', + 'userCenter.securitySettings.updatePwd.form.error.required.rePassword': + '请再次输入新密码', + 'userCenter.securitySettings.updatePwd.form.error.validator.rePassword': + '两次输入的密码不一致', // update-phone 'userCenter.securitySettings.updatePhone.label.phone': '安全手机', @@ -71,20 +83,30 @@ export default { 'userCenter.securitySettings.updateEmail.modal.title': '修改邮箱', 'userCenter.securitySettings.updateEmail.form.label.newEmail': '新邮箱', 'userCenter.securitySettings.updateEmail.form.label.captcha': '验证码', - 'userCenter.securitySettings.updateEmail.form.label.currentPassword': '当前密码', + 'userCenter.securitySettings.updateEmail.form.label.currentPassword': + '当前密码', 'userCenter.securitySettings.updateEmail.form.sendCaptcha': '发送验证码', 'userCenter.securitySettings.updateEmail.form.reSendCaptcha': '重新发送', - 'userCenter.securitySettings.updateEmail.form.loading.sendCaptcha': '发送中...', + 'userCenter.securitySettings.updateEmail.form.loading.sendCaptcha': + '发送中...', - 'userCenter.securitySettings.updateEmail.form.placeholder.newEmail': '请输入新邮箱', - 'userCenter.securitySettings.updateEmail.form.placeholder.captcha': '请输入邮箱验证码', - 'userCenter.securitySettings.updateEmail.form.placeholder.currentPassword': '请输入当前密码', + 'userCenter.securitySettings.updateEmail.form.placeholder.newEmail': + '请输入新邮箱', + 'userCenter.securitySettings.updateEmail.form.placeholder.captcha': + '请输入邮箱验证码', + 'userCenter.securitySettings.updateEmail.form.placeholder.currentPassword': + '请输入当前密码', - 'userCenter.securitySettings.updateEmail.form.error.required.newEmail': '请输入新邮箱', - 'userCenter.securitySettings.updateEmail.form.error.match.newEmail': '请输入正确的邮箱', - 'userCenter.securitySettings.updateEmail.form.error.validator.newEmail': '新邮箱不能与当前邮箱相同', - 'userCenter.securitySettings.updateEmail.form.error.required.captcha': '请输入邮箱验证码', - 'userCenter.securitySettings.updateEmail.form.error.required.currentPassword': '请输入当前密码', + 'userCenter.securitySettings.updateEmail.form.error.required.newEmail': + '请输入新邮箱', + 'userCenter.securitySettings.updateEmail.form.error.match.newEmail': + '请输入正确的邮箱', + 'userCenter.securitySettings.updateEmail.form.error.validator.newEmail': + '新邮箱不能与当前邮箱相同', + 'userCenter.securitySettings.updateEmail.form.error.required.captcha': + '请输入邮箱验证码', + 'userCenter.securitySettings.updateEmail.form.error.required.currentPassword': + '请输入当前密码', 'userCenter.securitySettings.button.update': '修改', }; diff --git a/continew-admin-ui/src/views/system/user/index.vue b/continew-admin-ui/src/views/system/user/index.vue index 6740bca2..dd6f2f70 100644 --- a/continew-admin-ui/src/views/system/user/index.vue +++ b/continew-admin-ui/src/views/system/user/index.vue @@ -3,7 +3,14 @@ <Breadcrumb :items="['menu.system', 'menu.system.user.list']" /> <a-card class="general-card" :title="$t('menu.system.user.list')"> <a-row> - <a-col :xs="9" :sm="6" :md="5" :lg="4" :xl="4" style="margin-right: 10px"> + <a-col + :xs="9" + :sm="6" + :md="5" + :lg="4" + :xl="4" + style="margin-right: 10px" + > <a-input-search v-model="deptName" placeholder="输入部门名称搜索" @@ -157,13 +164,16 @@ <a-table-column title="头像" align="center"> <template #cell="{ record }"> <a-avatar> - <img :src="getAvatar(record.avatar, record.gender)" alt="头像" /> + <img + :src="getAvatar(record.avatar, record.gender)" + alt="头像" + /> </a-avatar> </template> </a-table-column> <a-table-column title="联系方式" :width="170"> <template #cell="{ record }"> - {{ record.email }}<br v-if="record.email && record.phone"> + {{ record.email }}<br v-if="record.email && record.phone" /> {{ record.phone }} </template> </a-table-column> @@ -173,7 +183,10 @@ v-model="record.status" :checked-value="1" :unchecked-value="2" - :disabled="record.disabled || !checkPermission(['system:user:update'])" + :disabled=" + record.disabled || + !checkPermission(['system:user:update']) + " @change="handleChangeStatus(record)" /> </template> @@ -186,7 +199,7 @@ </a-table-column> <a-table-column title="创建人/创建时间" :width="175"> <template #cell="{ record }"> - {{ record.createUserString }}<br> + {{ record.createUserString }}<br /> {{ record.createTime }} </template> </a-table-column> @@ -240,7 +253,9 @@ size="small" title="重置密码" > - <template #icon><svg-icon icon-class="privacy" /></template> + <template #icon + ><svg-icon icon-class="privacy" + /></template> </a-button> </a-popconfirm> <a-button @@ -251,7 +266,9 @@ :disabled="record.disabled" @click="toUpdateRole(record.id)" > - <template #icon><svg-icon icon-class="reference" /></template> + <template #icon + ><svg-icon icon-class="reference" + /></template> </a-button> </template> </a-table-column> @@ -325,7 +342,11 @@ style="width: 431px" /> </a-form-item> - <a-form-item label="所属角色" field="roleIds" :disabled="form.disabled"> + <a-form-item + label="所属角色" + field="roleIds" + :disabled="form.disabled" + > <a-select v-model="form.roleIds" :options="roleOptions"