From 513680bdb14381b90253b6388a616e2b9e42610b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Wed, 15 Mar 2023 15:11:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20filelist,=20add=20settings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/vben/src/api/sys/upload.ts | 22 ++ frontend/vben/src/components/Cropper/index.ts | 7 + .../components/Cropper/src/CopperModal.vue | 284 ++++++++++++++++++ .../src/components/Cropper/src/Cropper.vue | 188 ++++++++++++ .../components/Cropper/src/CropperAvatar.vue | 161 ++++++++++ .../vben/src/components/Cropper/src/typing.ts | 8 + .../src/components/Upload/src/useUpload.ts | 2 +- frontend/vben/src/enums/pageEnum.ts | 2 + .../default/header/components/index.ts | 2 +- .../header/components/user-dropdown/index.vue | 28 +- .../vben/src/layouts/default/header/index.vue | 6 +- .../vben/src/locales/lang/zh-CN/layout.ts | 2 +- .../src/locales/lang/zh-CN/routes/filelist.ts | 2 +- .../src/locales/lang/zh-CN/routes/settings.ts | 3 + .../vben/src/router/menus/modules/filelist.ts | 17 ++ .../src/router/routes/modules/settings.ts | 31 ++ .../workbench/components/DynamicInfo.vue | 6 +- .../workbench/components/ProjectCard.vue | 44 --- .../workbench/components/QuickNav.vue | 17 -- .../workbench/components/SaleRadar.vue | 94 ------ .../workbench/components/WorkbenchHeader.vue | 24 +- .../src/views/dashboard/workbench/index.vue | 18 +- .../vben/src/views/page/filelist/data.tsx | 6 +- .../vben/src/views/page/filelist/index.vue | 81 ++++- .../src/views/page/settings/BaseSetting.vue | 97 ++++++ .../src/views/page/settings/SecureSetting.vue | 47 +++ frontend/vben/src/views/page/settings/data.ts | 68 +++++ .../vben/src/views/page/settings/index.vue | 57 ++++ 28 files changed, 1098 insertions(+), 226 deletions(-) create mode 100644 frontend/vben/src/api/sys/upload.ts create mode 100644 frontend/vben/src/components/Cropper/index.ts create mode 100644 frontend/vben/src/components/Cropper/src/CopperModal.vue create mode 100644 frontend/vben/src/components/Cropper/src/Cropper.vue create mode 100644 frontend/vben/src/components/Cropper/src/CropperAvatar.vue create mode 100644 frontend/vben/src/components/Cropper/src/typing.ts create mode 100644 frontend/vben/src/locales/lang/zh-CN/routes/settings.ts create mode 100644 frontend/vben/src/router/menus/modules/filelist.ts create mode 100644 frontend/vben/src/router/routes/modules/settings.ts delete mode 100644 frontend/vben/src/views/dashboard/workbench/components/ProjectCard.vue delete mode 100644 frontend/vben/src/views/dashboard/workbench/components/QuickNav.vue delete mode 100644 frontend/vben/src/views/dashboard/workbench/components/SaleRadar.vue create mode 100644 frontend/vben/src/views/page/settings/BaseSetting.vue create mode 100644 frontend/vben/src/views/page/settings/SecureSetting.vue create mode 100644 frontend/vben/src/views/page/settings/data.ts create mode 100644 frontend/vben/src/views/page/settings/index.vue diff --git a/frontend/vben/src/api/sys/upload.ts b/frontend/vben/src/api/sys/upload.ts new file mode 100644 index 0000000..f86b4e5 --- /dev/null +++ b/frontend/vben/src/api/sys/upload.ts @@ -0,0 +1,22 @@ +import { UploadApiResult } from './model/uploadModel' +import { defHttp } from '/@/utils/http/axios' +import { UploadFileParams } from '/#/axios' +import { useGlobSetting } from '/@/hooks/setting' + +const { uploadUrl = '' } = useGlobSetting() + +/** + * @description: Upload interface + */ +export function uploadApi( + params: UploadFileParams, + onUploadProgress: (progressEvent: ProgressEvent) => void, +) { + return defHttp.uploadFile( + { + url: uploadUrl, + onUploadProgress, + }, + params, + ) +} diff --git a/frontend/vben/src/components/Cropper/index.ts b/frontend/vben/src/components/Cropper/index.ts new file mode 100644 index 0000000..78a1073 --- /dev/null +++ b/frontend/vben/src/components/Cropper/index.ts @@ -0,0 +1,7 @@ +import { withInstall } from '/@/utils' +import cropperImage from './src/Cropper.vue' +import avatarCropper from './src/CropperAvatar.vue' + +export * from './src/typing' +export const CropperImage = withInstall(cropperImage) +export const CropperAvatar = withInstall(avatarCropper) diff --git a/frontend/vben/src/components/Cropper/src/CopperModal.vue b/frontend/vben/src/components/Cropper/src/CopperModal.vue new file mode 100644 index 0000000..9adb347 --- /dev/null +++ b/frontend/vben/src/components/Cropper/src/CopperModal.vue @@ -0,0 +1,284 @@ + + + + diff --git a/frontend/vben/src/components/Cropper/src/Cropper.vue b/frontend/vben/src/components/Cropper/src/Cropper.vue new file mode 100644 index 0000000..5fd5623 --- /dev/null +++ b/frontend/vben/src/components/Cropper/src/Cropper.vue @@ -0,0 +1,188 @@ + + + diff --git a/frontend/vben/src/components/Cropper/src/CropperAvatar.vue b/frontend/vben/src/components/Cropper/src/CropperAvatar.vue new file mode 100644 index 0000000..3f27fbb --- /dev/null +++ b/frontend/vben/src/components/Cropper/src/CropperAvatar.vue @@ -0,0 +1,161 @@ + + + + diff --git a/frontend/vben/src/components/Cropper/src/typing.ts b/frontend/vben/src/components/Cropper/src/typing.ts new file mode 100644 index 0000000..bcad3b4 --- /dev/null +++ b/frontend/vben/src/components/Cropper/src/typing.ts @@ -0,0 +1,8 @@ +import type Cropper from 'cropperjs' + +export interface CropendResult { + imgBase64: string + imgInfo: Cropper.Data +} + +export type { Cropper } diff --git a/frontend/vben/src/components/Upload/src/useUpload.ts b/frontend/vben/src/components/Upload/src/useUpload.ts index 033666a..5aefcb5 100644 --- a/frontend/vben/src/components/Upload/src/useUpload.ts +++ b/frontend/vben/src/components/Upload/src/useUpload.ts @@ -42,7 +42,7 @@ export function useUploadType({ const accept = unref(acceptRef) if (accept.length > 0) { - helpTexts.push(t('component.upload.accept', [accept.join(',')])) + helpTexts.push(t('component.upload.accept', ['docx'])) } const maxSize = unref(maxSizeRef) diff --git a/frontend/vben/src/enums/pageEnum.ts b/frontend/vben/src/enums/pageEnum.ts index 3e8ac3a..f8ce445 100644 --- a/frontend/vben/src/enums/pageEnum.ts +++ b/frontend/vben/src/enums/pageEnum.ts @@ -5,6 +5,8 @@ export enum PageEnum { BASE_HOME = '/dashboard', // file list path PAGE_FILELIST = '/filelist', + // personal settings path + PAGE_SETTINGS = '/settings', // error page path ERROR_PAGE = '/exception', // error log page path diff --git a/frontend/vben/src/layouts/default/header/components/index.ts b/frontend/vben/src/layouts/default/header/components/index.ts index c8a6a02..fe630db 100644 --- a/frontend/vben/src/layouts/default/header/components/index.ts +++ b/frontend/vben/src/layouts/default/header/components/index.ts @@ -7,6 +7,6 @@ export const UserDropDown = createAsyncComponent(() => import('./user-dropdown/i export const LayoutBreadcrumb = createAsyncComponent(() => import('./Breadcrumb.vue')) -export const Notify = createAsyncComponent(() => import('./notify/index.vue')) +// export const Notify = createAsyncComponent(() => import('./notify/index.vue')) export { FullScreen } diff --git a/frontend/vben/src/layouts/default/header/components/user-dropdown/index.vue b/frontend/vben/src/layouts/default/header/components/user-dropdown/index.vue index 0473f53..4b0ac9c 100644 --- a/frontend/vben/src/layouts/default/header/components/user-dropdown/index.vue +++ b/frontend/vben/src/layouts/default/header/components/user-dropdown/index.vue @@ -12,12 +12,11 @@ + + diff --git a/frontend/vben/src/views/page/settings/SecureSetting.vue b/frontend/vben/src/views/page/settings/SecureSetting.vue new file mode 100644 index 0000000..b55b8a7 --- /dev/null +++ b/frontend/vben/src/views/page/settings/SecureSetting.vue @@ -0,0 +1,47 @@ + + + diff --git a/frontend/vben/src/views/page/settings/data.ts b/frontend/vben/src/views/page/settings/data.ts new file mode 100644 index 0000000..45d8902 --- /dev/null +++ b/frontend/vben/src/views/page/settings/data.ts @@ -0,0 +1,68 @@ +import { FormSchema } from '/@/components/Form/index' + +export interface ListItem { + key: string + title: string + description: string + extra?: string + avatar?: string + color?: string +} + +// tab的list +export const settingList = [ + { + key: '1', + name: '基本设置', + component: 'BaseSetting', + }, + { + key: '2', + name: '安全设置', + component: 'SecureSetting', + }, +] + +// 基础设置 form +export const baseSetschemas: FormSchema[] = [ + { + field: 'email', + component: 'Input', + label: '邮箱', + colProps: { span: 18 }, + }, + { + field: 'name', + component: 'Input', + label: '昵称', + colProps: { span: 18 }, + }, + { + field: 'introduction', + component: 'InputTextArea', + label: '个人简介', + colProps: { span: 18 }, + }, + { + field: 'address', + component: 'Input', + label: '所在地区', + colProps: { span: 18 }, + }, +] + +// 安全设置 list +export const secureSettingList: ListItem[] = [ + { + key: '1', + title: '账户密码', + description: '当前密码强度::强', + extra: '修改', + }, + { + key: '2', + title: '我的手机', + description: '已绑定手机::138****8293', + extra: '修改', + }, +] diff --git a/frontend/vben/src/views/page/settings/index.vue b/frontend/vben/src/views/page/settings/index.vue new file mode 100644 index 0000000..86bb0ca --- /dev/null +++ b/frontend/vben/src/views/page/settings/index.vue @@ -0,0 +1,57 @@ + + + +