Commit 3b8ca420c763fe0e386a8dbc023f4f8eb8742252
1 parent
37669d06
feat: add dept management page
Showing
26 changed files
with
686 additions
and
192 deletions
mock/demo/system.ts
1 | 1 | import { MockMethod } from 'vite-plugin-mock'; |
2 | -import { resultPageSuccess } from '../_util'; | |
2 | +import { resultPageSuccess, resultSuccess } from '../_util'; | |
3 | 3 | |
4 | -const list = (() => { | |
4 | +const accountList = (() => { | |
5 | 5 | const result: any[] = []; |
6 | 6 | for (let index = 0; index < 20; index++) { |
7 | 7 | result.push({ |
... | ... | @@ -10,8 +10,40 @@ const list = (() => { |
10 | 10 | email: '@email', |
11 | 11 | nickname: '@cname()', |
12 | 12 | role: '@first', |
13 | - updateTime: '@datetime', | |
14 | - remark: '@cword(0,20)', | |
13 | + createTime: '@datetime', | |
14 | + remark: '@cword(10,20)', | |
15 | + 'status|1': ['0', '1'], | |
16 | + }); | |
17 | + } | |
18 | + return result; | |
19 | +})(); | |
20 | + | |
21 | +const deptList = (() => { | |
22 | + const result: any[] = []; | |
23 | + for (let index = 0; index < 3; index++) { | |
24 | + result.push({ | |
25 | + id: `${index}`, | |
26 | + deptName: ['华东分部', '华南分部', '西北分部'][index], | |
27 | + orderNo: index + 1, | |
28 | + createTime: '@datetime', | |
29 | + remark: '@cword(10,20)', | |
30 | + 'status|1': ['0', '0', '1'], | |
31 | + children: (() => { | |
32 | + const children: any[] = []; | |
33 | + for (let j = 0; j < 4; j++) { | |
34 | + children.push({ | |
35 | + id: `${index}-${j}`, | |
36 | + deptName: ['研发部', '市场部', '商务部', '财务部'][j], | |
37 | + orderNo: j + 1, | |
38 | + createTime: '@datetime', | |
39 | + remark: '@cword(10,20)', | |
40 | + 'status|1': ['0', '1'], | |
41 | + parentDept: `${index}`, | |
42 | + children: undefined, | |
43 | + }); | |
44 | + } | |
45 | + return children; | |
46 | + })(), | |
15 | 47 | }); |
16 | 48 | } |
17 | 49 | return result; |
... | ... | @@ -24,7 +56,15 @@ export default [ |
24 | 56 | method: 'get', |
25 | 57 | response: ({ query }) => { |
26 | 58 | const { page = 1, pageSize = 20 } = query; |
27 | - return resultPageSuccess(page, pageSize, list); | |
59 | + return resultPageSuccess(page, pageSize, accountList); | |
60 | + }, | |
61 | + }, | |
62 | + { | |
63 | + url: '/api/system/getDeptList', | |
64 | + timeout: 100, | |
65 | + method: 'get', | |
66 | + response: () => { | |
67 | + return resultSuccess(deptList); | |
28 | 68 | }, |
29 | 69 | }, |
30 | 70 | ] as MockMethod[]; | ... | ... |
package.json
... | ... | @@ -26,7 +26,7 @@ |
26 | 26 | }, |
27 | 27 | "dependencies": { |
28 | 28 | "@iconify/iconify": "^2.0.0-rc.6", |
29 | - "@vueuse/core": "^4.3.0", | |
29 | + "@vueuse/core": "^4.3.1", | |
30 | 30 | "@zxcvbn-ts/core": "^0.2.0", |
31 | 31 | "ant-design-vue": "2.0.1", |
32 | 32 | "apexcharts": "^3.25.0", |
... | ... | @@ -80,10 +80,10 @@ |
80 | 80 | "eslint-config-prettier": "^8.1.0", |
81 | 81 | "eslint-plugin-prettier": "^3.3.1", |
82 | 82 | "eslint-plugin-vue": "^7.6.0", |
83 | - "esno": "^0.4.4", | |
83 | + "esno": "^0.4.5", | |
84 | 84 | "fs-extra": "^9.1.0", |
85 | 85 | "http-server": "^0.12.3", |
86 | - "husky": "^5.1.1", | |
86 | + "husky": "^5.1.2", | |
87 | 87 | "is-ci": "^3.0.0", |
88 | 88 | "less": "^4.1.1", |
89 | 89 | "lint-staged": "^10.5.4", |
... | ... | @@ -103,7 +103,7 @@ |
103 | 103 | "vite-plugin-imagemin": "^0.2.8", |
104 | 104 | "vite-plugin-mock": "^2.1.5", |
105 | 105 | "vite-plugin-purge-icons": "^0.7.0", |
106 | - "vite-plugin-pwa": "^0.5.5", | |
106 | + "vite-plugin-pwa": "^0.5.6", | |
107 | 107 | "vite-plugin-style-import": "^0.7.5", |
108 | 108 | "vite-plugin-theme": "^0.4.8", |
109 | 109 | "vite-plugin-windicss": "0.6.2", | ... | ... |
src/api/demo/model/systemModel.ts
1 | 1 | import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel'; |
2 | 2 | |
3 | -export type Params = BasicPageParams & { | |
3 | +export type AccountParams = BasicPageParams & { | |
4 | 4 | account?: string; |
5 | 5 | nickname?: string; |
6 | 6 | }; |
7 | 7 | |
8 | -export interface DemoListItem { | |
8 | +export type DeptParams = { | |
9 | + deptName?: string; | |
10 | + status?: string; | |
11 | +}; | |
12 | + | |
13 | +export interface AccountListItem { | |
9 | 14 | id: string; |
10 | 15 | account: string; |
11 | 16 | email: string; |
12 | 17 | nickname: string; |
13 | 18 | role: number; |
14 | - updateTime: string; | |
19 | + createTime: string; | |
15 | 20 | remark: string; |
21 | + status: number; | |
22 | +} | |
23 | + | |
24 | +export interface DeptListItem { | |
25 | + id: string; | |
26 | + orderNo: string; | |
27 | + createTime: string; | |
28 | + remark: string; | |
29 | + status: number; | |
16 | 30 | } |
17 | 31 | |
18 | 32 | /** |
19 | 33 | * @description: Request list return value |
20 | 34 | */ |
21 | -export type DemoListGetResultModel = BasicFetchResult<DemoListItem>; | |
35 | +export type AccountListGetResultModel = BasicFetchResult<AccountListItem>; | |
36 | + | |
37 | +export type DeptListGetResultModel = BasicFetchResult<DeptListItem>; | ... | ... |
src/api/demo/system.ts
1 | -import { Params, DemoListGetResultModel } from './model/systemModel'; | |
1 | +import { | |
2 | + AccountParams, | |
3 | + DeptListItem, | |
4 | + DeptListGetResultModel, | |
5 | + AccountListGetResultModel, | |
6 | +} from './model/systemModel'; | |
2 | 7 | import { defHttp } from '/@/utils/http/axios'; |
3 | 8 | |
4 | 9 | enum Api { |
5 | 10 | // The address does not exist |
6 | 11 | AccountList = '/system/getAccountList', |
12 | + DeptList = '/system/getDeptList', | |
7 | 13 | } |
8 | 14 | |
9 | -export const getAccountList = (params: Params) => | |
10 | - defHttp.get<DemoListGetResultModel>({ url: Api.AccountList, params }); | |
15 | +export const getAccountList = (params: AccountParams) => | |
16 | + defHttp.get<AccountListGetResultModel>({ url: Api.AccountList, params }); | |
17 | + | |
18 | +export const getDeptList = (params?: DeptListItem) => | |
19 | + defHttp.get<DeptListGetResultModel>({ url: Api.DeptList, params }); | ... | ... |
src/components/Basic/src/BasicArrow.vue
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | --> |
5 | 5 | <template> |
6 | 6 | <span :class="getClass"> |
7 | - <RightOutlined /> | |
7 | + <Icon icon="ion:chevron-forward" :style="$attrs.iconStyle" /> | |
8 | 8 | </span> |
9 | 9 | </template> |
10 | 10 | <script lang="ts"> |
... | ... | @@ -15,9 +15,11 @@ |
15 | 15 | |
16 | 16 | import { propTypes } from '/@/utils/propTypes'; |
17 | 17 | |
18 | + import { Icon } from '/@/components/Icon'; | |
19 | + | |
18 | 20 | export default defineComponent({ |
19 | 21 | name: 'BasicArrow', |
20 | - components: { RightOutlined }, | |
22 | + components: { RightOutlined, Icon }, | |
21 | 23 | props: { |
22 | 24 | // Expand contract, expand by default |
23 | 25 | expand: propTypes.bool, | ... | ... |
src/components/Form/src/componentMap.ts
... | ... | @@ -21,6 +21,7 @@ import { |
21 | 21 | import RadioButtonGroup from './components/RadioButtonGroup.vue'; |
22 | 22 | import ApiSelect from './components/ApiSelect.vue'; |
23 | 23 | import { BasicUpload } from '/@/components/Upload'; |
24 | +import { StrengthMeter } from '/@/components/StrengthMeter'; | |
24 | 25 | |
25 | 26 | const componentMap = new Map<ComponentType, Component>(); |
26 | 27 | |
... | ... | @@ -51,6 +52,7 @@ componentMap.set('MonthPicker', DatePicker.MonthPicker); |
51 | 52 | componentMap.set('RangePicker', DatePicker.RangePicker); |
52 | 53 | componentMap.set('WeekPicker', DatePicker.WeekPicker); |
53 | 54 | componentMap.set('TimePicker', TimePicker); |
55 | +componentMap.set('StrengthMeter', StrengthMeter); | |
54 | 56 | |
55 | 57 | componentMap.set('Upload', BasicUpload); |
56 | 58 | ... | ... |
src/components/Form/src/types/index.ts
src/components/Table/src/BasicTable.vue
... | ... | @@ -65,6 +65,7 @@ |
65 | 65 | import { useDesign } from '/@/hooks/web/useDesign'; |
66 | 66 | |
67 | 67 | import { basicProps } from './props'; |
68 | + import expandIcon from './components/ExpandIcon'; | |
68 | 69 | import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; |
69 | 70 | |
70 | 71 | import './style/index.less'; |
... | ... | @@ -193,6 +194,7 @@ |
193 | 194 | size: 'middle', |
194 | 195 | ...attrs, |
195 | 196 | customRow, |
197 | + expandIcon: expandIcon(), | |
196 | 198 | ...unref(getProps), |
197 | 199 | ...unref(getHeaderProps), |
198 | 200 | scroll: unref(getScrollRef), | ... | ... |
src/components/Table/src/components/ExpandIcon.tsx
0 → 100644
1 | +import { BasicArrow } from '/@/components/Basic'; | |
2 | + | |
3 | +export default () => { | |
4 | + return (props: Recordable) => { | |
5 | + if (!props.expandable) { | |
6 | + return null; | |
7 | + } | |
8 | + return ( | |
9 | + <BasicArrow | |
10 | + class="mr-1" | |
11 | + iconStyle="margin-top: -2px;" | |
12 | + onClick={(e: Event) => { | |
13 | + props.onExpand(props.record, e); | |
14 | + }} | |
15 | + expand={props.expanded} | |
16 | + /> | |
17 | + ); | |
18 | + }; | |
19 | +}; | ... | ... |
src/components/Table/src/style/index.less
src/locales/lang/en/routes/demo/system.ts
src/locales/lang/zh_CN/routes/demo/system.ts
src/router/menus/modules/demo/system.ts
... | ... | @@ -11,6 +11,16 @@ const menu: MenuModule = { |
11 | 11 | path: 'account', |
12 | 12 | name: t('routes.demo.system.account'), |
13 | 13 | }, |
14 | + | |
15 | + { | |
16 | + path: 'dept', | |
17 | + name: t('routes.demo.system.dept'), | |
18 | + }, | |
19 | + | |
20 | + { | |
21 | + path: 'changePassword', | |
22 | + name: t('routes.demo.system.password'), | |
23 | + }, | |
14 | 24 | ], |
15 | 25 | }, |
16 | 26 | }; | ... | ... |
src/router/routes/modules/demo/system.ts
... | ... | @@ -15,12 +15,31 @@ const system: AppRouteModule = { |
15 | 15 | children: [ |
16 | 16 | { |
17 | 17 | path: 'account', |
18 | - name: 'Account', | |
18 | + name: 'AccountManagement', | |
19 | 19 | meta: { |
20 | 20 | title: t('routes.demo.system.account'), |
21 | + ignoreKeepAlive: true, | |
21 | 22 | }, |
22 | 23 | component: () => import('/@/views/demo/system/account/index.vue'), |
23 | 24 | }, |
25 | + { | |
26 | + path: 'dept', | |
27 | + name: 'DeptManagement', | |
28 | + meta: { | |
29 | + title: t('routes.demo.system.dept'), | |
30 | + ignoreKeepAlive: true, | |
31 | + }, | |
32 | + component: () => import('/@/views/demo/system/dept/index.vue'), | |
33 | + }, | |
34 | + { | |
35 | + path: 'changePassword', | |
36 | + name: 'ChangePassword', | |
37 | + meta: { | |
38 | + title: t('routes.demo.system.password'), | |
39 | + ignoreKeepAlive: true, | |
40 | + }, | |
41 | + component: () => import('/@/views/demo/system/password/index.vue'), | |
42 | + }, | |
24 | 43 | ], |
25 | 44 | }; |
26 | 45 | ... | ... |
src/utils/http/axios/Axios.ts
... | ... | @@ -83,9 +83,15 @@ export class VAxios { |
83 | 83 | this.axiosInstance.interceptors.request.use((config: AxiosRequestConfig) => { |
84 | 84 | // If cancel repeat request is turned on, then cancel repeat request is prohibited |
85 | 85 | const { |
86 | - headers: { ignoreCancelToken = false }, | |
86 | + headers: { ignoreCancelToken }, | |
87 | 87 | } = config; |
88 | - !ignoreCancelToken && axiosCanceler.addPending(config); | |
88 | + | |
89 | + const ignoreCancel = | |
90 | + ignoreCancelToken !== undefined | |
91 | + ? ignoreCancelToken | |
92 | + : this.options.requestOptions?.ignoreCancelToken; | |
93 | + | |
94 | + !ignoreCancel && axiosCanceler.addPending(config); | |
89 | 95 | if (requestInterceptors && isFunction(requestInterceptors)) { |
90 | 96 | config = requestInterceptors(config); |
91 | 97 | } | ... | ... |
src/utils/http/axios/index.ts
src/utils/http/axios/types.ts
src/views/demo/system/account/AccountModal.vue
... | ... | @@ -24,6 +24,7 @@ |
24 | 24 | }); |
25 | 25 | |
26 | 26 | const [registerModal, { setModalProps }] = useModalInner((data) => { |
27 | + setModalProps({ confirmLoading: false }); | |
27 | 28 | isUpdate.value = !!data?.isUpdate; |
28 | 29 | |
29 | 30 | if (unref(isUpdate)) { |
... | ... | @@ -42,7 +43,7 @@ |
42 | 43 | // TODO custom api |
43 | 44 | console.log(values); |
44 | 45 | } finally { |
45 | - setModalProps({ confirmLoading: true }); | |
46 | + setModalProps({ confirmLoading: false }); | |
46 | 47 | } |
47 | 48 | } |
48 | 49 | ... | ... |
src/views/demo/system/account/account.data.ts
... | ... | @@ -3,11 +3,6 @@ import { FormSchema } from '/@/components/Table'; |
3 | 3 | |
4 | 4 | export const columns: BasicColumn[] = [ |
5 | 5 | { |
6 | - title: 'ID', | |
7 | - dataIndex: 'id', | |
8 | - width: 80, | |
9 | - }, | |
10 | - { | |
11 | 6 | title: '用户名', |
12 | 7 | dataIndex: 'account', |
13 | 8 | width: 120, |
... | ... | @@ -23,8 +18,8 @@ export const columns: BasicColumn[] = [ |
23 | 18 | width: 200, |
24 | 19 | }, |
25 | 20 | { |
26 | - title: '更新时间', | |
27 | - dataIndex: 'updateTime', | |
21 | + title: '创建时间', | |
22 | + dataIndex: 'createTime', | |
28 | 23 | width: 180, |
29 | 24 | }, |
30 | 25 | { |
... | ... | @@ -35,7 +30,6 @@ export const columns: BasicColumn[] = [ |
35 | 30 | { |
36 | 31 | title: '备注', |
37 | 32 | dataIndex: 'remark', |
38 | - width: 200, | |
39 | 33 | }, |
40 | 34 | ]; |
41 | 35 | ... | ... |
src/views/demo/system/account/index.vue
... | ... | @@ -8,11 +8,11 @@ |
8 | 8 | <TableAction |
9 | 9 | :actions="[ |
10 | 10 | { |
11 | - label: '编辑', | |
11 | + icon: 'clarity:note-edit-line', | |
12 | 12 | onClick: handleEdit.bind(null, record), |
13 | 13 | }, |
14 | 14 | { |
15 | - label: '删除', | |
15 | + icon: 'ant-design:delete-outlined', | |
16 | 16 | color: 'error', |
17 | 17 | popConfirm: { |
18 | 18 | title: '是否确认删除', |
... | ... | @@ -55,8 +55,9 @@ |
55 | 55 | }, |
56 | 56 | useSearchForm: true, |
57 | 57 | showTableSetting: true, |
58 | + bordered: true, | |
58 | 59 | actionColumn: { |
59 | - width: 160, | |
60 | + width: 80, | |
60 | 61 | title: '操作', |
61 | 62 | dataIndex: 'action', |
62 | 63 | slots: { customRender: 'action' }, | ... | ... |
src/views/demo/system/dept/DeptModal.vue
0 → 100644
1 | +<template> | |
2 | + <BasicModal v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit"> | |
3 | + <BasicForm @register="registerForm" /> | |
4 | + </BasicModal> | |
5 | +</template> | |
6 | +<script lang="ts"> | |
7 | + import { defineComponent, ref, computed, unref } from 'vue'; | |
8 | + import { BasicModal, useModalInner } from '/@/components/Modal'; | |
9 | + import { BasicForm, useForm } from '/@/components/Form/index'; | |
10 | + import { formSchema } from './dept.data'; | |
11 | + | |
12 | + import { getDeptList } from '/@/api/demo/system'; | |
13 | + export default defineComponent({ | |
14 | + name: 'DeptModal', | |
15 | + components: { BasicModal, BasicForm }, | |
16 | + emits: ['success', 'register'], | |
17 | + setup(_, { emit }) { | |
18 | + const isUpdate = ref(true); | |
19 | + | |
20 | + const [registerForm, { resetFields, setFieldsValue, updateSchema, validate }] = useForm({ | |
21 | + labelWidth: 100, | |
22 | + schemas: formSchema, | |
23 | + showActionButtonGroup: false, | |
24 | + actionColOptions: { | |
25 | + span: 23, | |
26 | + }, | |
27 | + }); | |
28 | + | |
29 | + const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { | |
30 | + resetFields(); | |
31 | + setModalProps({ confirmLoading: false }); | |
32 | + isUpdate.value = !!data?.isUpdate; | |
33 | + | |
34 | + if (unref(isUpdate)) { | |
35 | + setFieldsValue({ | |
36 | + ...data.record, | |
37 | + }); | |
38 | + } | |
39 | + const treeData = await getDeptList(); | |
40 | + updateSchema({ | |
41 | + field: 'parentDept', | |
42 | + componentProps: { treeData }, | |
43 | + }); | |
44 | + }); | |
45 | + | |
46 | + const getTitle = computed(() => (!unref(isUpdate) ? '新增部门' : '编辑部门')); | |
47 | + | |
48 | + async function handleSubmit() { | |
49 | + try { | |
50 | + const values = await validate(); | |
51 | + setModalProps({ confirmLoading: true }); | |
52 | + // TODO custom api | |
53 | + console.log(values); | |
54 | + closeModal(); | |
55 | + emit('success'); | |
56 | + } finally { | |
57 | + setModalProps({ confirmLoading: false }); | |
58 | + } | |
59 | + } | |
60 | + | |
61 | + return { registerModal, registerForm, getTitle, handleSubmit }; | |
62 | + }, | |
63 | + }); | |
64 | +</script> | ... | ... |
src/views/demo/system/dept/dept.data.ts
0 → 100644
1 | +import { BasicColumn } from '/@/components/Table'; | |
2 | +import { FormSchema } from '/@/components/Table'; | |
3 | +import { h } from 'vue'; | |
4 | +import { Tag } from 'ant-design-vue'; | |
5 | + | |
6 | +export const columns: BasicColumn[] = [ | |
7 | + { | |
8 | + title: '部门名称', | |
9 | + dataIndex: 'deptName', | |
10 | + width: 300, | |
11 | + }, | |
12 | + { | |
13 | + title: '排序', | |
14 | + dataIndex: 'orderNo', | |
15 | + width: 80, | |
16 | + }, | |
17 | + { | |
18 | + title: '状态', | |
19 | + dataIndex: 'status', | |
20 | + width: 120, | |
21 | + customRender: ({ record }) => { | |
22 | + const status = record.status; | |
23 | + const enable = ~~status === 0; | |
24 | + const color = enable ? 'green' : 'red'; | |
25 | + const text = enable ? '正常' : '停用'; | |
26 | + return h(Tag, { color: color }, () => text); | |
27 | + }, | |
28 | + }, | |
29 | + { | |
30 | + title: '创建时间', | |
31 | + dataIndex: 'createTime', | |
32 | + width: 180, | |
33 | + }, | |
34 | + { | |
35 | + title: '备注', | |
36 | + dataIndex: 'remark', | |
37 | + }, | |
38 | +]; | |
39 | + | |
40 | +export const searchFormSchema: FormSchema[] = [ | |
41 | + { | |
42 | + field: 'deptName', | |
43 | + label: '部门名称', | |
44 | + component: 'Input', | |
45 | + colProps: { span: 8 }, | |
46 | + }, | |
47 | + { | |
48 | + field: 'status', | |
49 | + label: '状态', | |
50 | + component: 'Select', | |
51 | + componentProps: { | |
52 | + options: [ | |
53 | + { label: '启用', value: '0' }, | |
54 | + { label: '停用', value: '1' }, | |
55 | + ], | |
56 | + }, | |
57 | + colProps: { span: 8 }, | |
58 | + }, | |
59 | +]; | |
60 | + | |
61 | +export const formSchema: FormSchema[] = [ | |
62 | + { | |
63 | + field: 'deptName', | |
64 | + label: '部门名称', | |
65 | + component: 'Input', | |
66 | + required: true, | |
67 | + }, | |
68 | + { | |
69 | + field: 'parentDept', | |
70 | + label: '上级部门', | |
71 | + component: 'TreeSelect', | |
72 | + componentProps: { | |
73 | + replaceFields: { | |
74 | + title: 'deptName', | |
75 | + key: 'id', | |
76 | + value: 'id', | |
77 | + }, | |
78 | + getPopupContainer: () => document.body, | |
79 | + }, | |
80 | + required: true, | |
81 | + }, | |
82 | + { | |
83 | + field: 'orderNo', | |
84 | + label: '排序', | |
85 | + component: 'InputNumber', | |
86 | + required: true, | |
87 | + }, | |
88 | + { | |
89 | + field: 'status', | |
90 | + label: '状态', | |
91 | + component: 'RadioButtonGroup', | |
92 | + componentProps: { | |
93 | + options: [ | |
94 | + { label: '正常', value: '0' }, | |
95 | + { label: '禁用', value: '1' }, | |
96 | + ], | |
97 | + }, | |
98 | + required: true, | |
99 | + }, | |
100 | + { | |
101 | + label: '备注', | |
102 | + field: 'remark', | |
103 | + component: 'InputTextArea', | |
104 | + }, | |
105 | +]; | ... | ... |
src/views/demo/system/dept/index.vue
0 → 100644
1 | +<template> | |
2 | + <div> | |
3 | + <BasicTable @register="registerTable"> | |
4 | + <template #toolbar> | |
5 | + <a-button type="primary" @click="handleCreate"> 新增部门 </a-button> | |
6 | + </template> | |
7 | + <template #action="{ record }"> | |
8 | + <TableAction | |
9 | + :actions="[ | |
10 | + { | |
11 | + icon: 'clarity:note-edit-line', | |
12 | + onClick: handleEdit.bind(null, record), | |
13 | + }, | |
14 | + { | |
15 | + icon: 'ant-design:delete-outlined', | |
16 | + color: 'error', | |
17 | + popConfirm: { | |
18 | + title: '是否确认删除', | |
19 | + confirm: handleDelete.bind(null, record), | |
20 | + }, | |
21 | + }, | |
22 | + ]" | |
23 | + /> | |
24 | + </template> | |
25 | + </BasicTable> | |
26 | + <DeptModal @register="registerModal" @success="handleSuccess" /> | |
27 | + </div> | |
28 | +</template> | |
29 | +<script lang="ts"> | |
30 | + import { defineComponent } from 'vue'; | |
31 | + | |
32 | + import { BasicTable, useTable, TableAction } from '/@/components/Table'; | |
33 | + import { getDeptList } from '/@/api/demo/system'; | |
34 | + | |
35 | + import { useModal } from '/@/components/Modal'; | |
36 | + import DeptModal from './DeptModal.vue'; | |
37 | + | |
38 | + import { columns, searchFormSchema } from './dept.data'; | |
39 | + | |
40 | + export default defineComponent({ | |
41 | + name: 'DeptManagement', | |
42 | + components: { BasicTable, DeptModal, TableAction }, | |
43 | + setup() { | |
44 | + const [registerModal, { openModal }] = useModal(); | |
45 | + const [registerTable, { reload }] = useTable({ | |
46 | + title: '部门列表', | |
47 | + api: getDeptList, | |
48 | + columns, | |
49 | + formConfig: { | |
50 | + labelWidth: 120, | |
51 | + schemas: searchFormSchema, | |
52 | + }, | |
53 | + pagination: false, | |
54 | + striped: false, | |
55 | + useSearchForm: true, | |
56 | + showTableSetting: true, | |
57 | + bordered: true, | |
58 | + showIndexColumn: false, | |
59 | + indentSize: 20, | |
60 | + actionColumn: { | |
61 | + width: 80, | |
62 | + title: '操作', | |
63 | + dataIndex: 'action', | |
64 | + slots: { customRender: 'action' }, | |
65 | + fixed: undefined, | |
66 | + }, | |
67 | + }); | |
68 | + | |
69 | + function handleCreate() { | |
70 | + openModal(true, { | |
71 | + isUpdate: false, | |
72 | + }); | |
73 | + } | |
74 | + | |
75 | + function handleEdit(record: Recordable) { | |
76 | + openModal(true, { | |
77 | + record, | |
78 | + isUpdate: true, | |
79 | + }); | |
80 | + } | |
81 | + | |
82 | + function handleDelete(record: Recordable) { | |
83 | + console.log(record); | |
84 | + } | |
85 | + | |
86 | + function handleSuccess() { | |
87 | + reload(); | |
88 | + } | |
89 | + | |
90 | + return { | |
91 | + registerTable, | |
92 | + registerModal, | |
93 | + handleCreate, | |
94 | + handleEdit, | |
95 | + handleDelete, | |
96 | + handleSuccess, | |
97 | + }; | |
98 | + }, | |
99 | + }); | |
100 | +</script> | ... | ... |
src/views/demo/system/password/index.vue
0 → 100644
1 | +<template> | |
2 | + <div class="p-4 flex flex-col justify-center items-center"> | |
3 | + <BasicForm @register="register" /> | |
4 | + | |
5 | + <div class="flex justify-center"> | |
6 | + <a-button @click="resetFields"> 重置 </a-button> | |
7 | + <a-button class="ml-4" type="primary" @click="handleSubmit"> 确认 </a-button> | |
8 | + </div> | |
9 | + </div> | |
10 | +</template> | |
11 | +<script lang="ts"> | |
12 | + import { defineComponent } from 'vue'; | |
13 | + | |
14 | + import { BasicForm, useForm } from '/@/components/Form'; | |
15 | + | |
16 | + import { formSchema } from './pwd.data'; | |
17 | + export default defineComponent({ | |
18 | + name: 'ChangePassword', | |
19 | + components: { BasicForm }, | |
20 | + setup() { | |
21 | + const [register, { validate, resetFields }] = useForm({ | |
22 | + size: 'large', | |
23 | + labelWidth: 100, | |
24 | + showActionButtonGroup: false, | |
25 | + schemas: formSchema, | |
26 | + }); | |
27 | + | |
28 | + async function handleSubmit() { | |
29 | + try { | |
30 | + const values = await validate(); | |
31 | + const { passwordOld, passwordNew } = values; | |
32 | + | |
33 | + // TODO custom api | |
34 | + console.log(passwordOld, passwordNew); | |
35 | + // const { router } = useRouter(); | |
36 | + // router.push(pageEnum.BASE_LOGIN); | |
37 | + } catch (error) {} | |
38 | + } | |
39 | + | |
40 | + return { register, resetFields, handleSubmit }; | |
41 | + }, | |
42 | + }); | |
43 | +</script> | ... | ... |
src/views/demo/system/password/pwd.data.ts
0 → 100644
1 | +import { FormSchema } from '/@/components/Form'; | |
2 | + | |
3 | +export const formSchema: FormSchema[] = [ | |
4 | + { | |
5 | + field: 'passwordOld', | |
6 | + label: '当前密码', | |
7 | + component: 'InputPassword', | |
8 | + required: true, | |
9 | + }, | |
10 | + { | |
11 | + field: 'passwordNew', | |
12 | + label: '新密码', | |
13 | + component: 'StrengthMeter', | |
14 | + componentProps: { | |
15 | + placeholder: '新密码', | |
16 | + }, | |
17 | + rules: [ | |
18 | + { | |
19 | + required: true, | |
20 | + message: '请输入新密码', | |
21 | + }, | |
22 | + ], | |
23 | + }, | |
24 | + { | |
25 | + field: 'confirmPassword', | |
26 | + label: '确认密码', | |
27 | + component: 'InputPassword', | |
28 | + | |
29 | + dynamicRules: ({ values }) => { | |
30 | + return [ | |
31 | + { | |
32 | + required: true, | |
33 | + validator: (_, value) => { | |
34 | + if (!value) { | |
35 | + return Promise.reject('不能为空'); | |
36 | + } | |
37 | + if (value !== values.passwordNew) { | |
38 | + return Promise.reject('两次输入的密码不一致!'); | |
39 | + } | |
40 | + return Promise.resolve(); | |
41 | + }, | |
42 | + }, | |
43 | + ]; | |
44 | + }, | |
45 | + }, | |
46 | +]; | ... | ... |
yarn.lock
... | ... | @@ -1702,18 +1702,18 @@ |
1702 | 1702 | resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.0.5.tgz#c131d88bd6713cc4d93b3bb1372edb1983225ff0" |
1703 | 1703 | integrity sha512-gYsNoGkWejBxNO6SNRjOh/xKeZ0H0V+TFzaPzODfBjkAIb0aQgBuixC1brandC/CDJy1wYPwSoYrXpvul7m6yw== |
1704 | 1704 | |
1705 | -"@vueuse/core@^4.3.0": | |
1706 | - version "4.3.0" | |
1707 | - resolved "https://registry.npmjs.org/@vueuse/core/-/core-4.3.0.tgz#409d1c8fc0b7fffcf5b5388dfc487762bb936b0c" | |
1708 | - integrity sha512-PQ3r6wZDCN3pY+UBB5NLQdRfwiasd8MmWppuzpvNE2Sr8T48gmWXDWw3GG4EHMXnuz5EBfQG+U+1TjSaGaK6/w== | |
1705 | +"@vueuse/core@^4.3.1": | |
1706 | + version "4.3.1" | |
1707 | + resolved "https://registry.npmjs.org/@vueuse/core/-/core-4.3.1.tgz#f6fdb2afef6acbe59abb9832d0a7cfa01e65ce36" | |
1708 | + integrity sha512-/UkL83zSkE1qb1aqidSjUxADB9ggRnchXe5CliqAb5Ak7Rt9IfdUC4zfvvAtwlIgNvT1Fo9YCtgRma4H2TVLEQ== | |
1709 | 1709 | dependencies: |
1710 | - "@vueuse/shared" "4.3.0" | |
1710 | + "@vueuse/shared" "4.3.1" | |
1711 | 1711 | vue-demi latest |
1712 | 1712 | |
1713 | -"@vueuse/shared@4.3.0": | |
1714 | - version "4.3.0" | |
1715 | - resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-4.3.0.tgz#82e05dc2941642814ac6fcbb5f9076c38c052968" | |
1716 | - integrity sha512-udc1ADIYwizTK/iSfjZQj6+QDFM099oHuX0Sj/yv0NgE9eSODcesV4zO7PtvmJanzw43hCdvtdGBz8miyRkHCQ== | |
1713 | +"@vueuse/shared@4.3.1": | |
1714 | + version "4.3.1" | |
1715 | + resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-4.3.1.tgz#6f0f6c82f096ca329d9541d6f37f29a2d19dd107" | |
1716 | + integrity sha512-K2F+z16BqcOtEp/pJEK7cPvOMsgBChGGfx0UAatXt8Awk+b4Vi6L6//KclAV1N7w+e9u2kJlC1Ld8GqdY5ZxRg== | |
1717 | 1717 | dependencies: |
1718 | 1718 | vue-demi latest |
1719 | 1719 | |
... | ... | @@ -3600,11 +3600,6 @@ esbuild-register@^2.0.0: |
3600 | 3600 | source-map-support "^0.5.19" |
3601 | 3601 | strip-json-comments "^3.1.1" |
3602 | 3602 | |
3603 | -esbuild@^0.8.48: | |
3604 | - version "0.8.48" | |
3605 | - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.48.tgz#a57e4dde84ec56da1c6ecaefee97e9da6c5b00b5" | |
3606 | - integrity sha512-lrH8lA8wWQ6Lpe1z6C7ZZaFSmRsUlcQAqe16nf7ITySQ7MV4+vI7qAqQlT/u+c3+9AL3VXmT4MXTxV2e63pO4A== | |
3607 | - | |
3608 | 3603 | esbuild@^0.8.50: |
3609 | 3604 | version "0.8.50" |
3610 | 3605 | resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.50.tgz#ebf24fde0cdad1a369789dd6fd7a820b0a01e46c" |
... | ... | @@ -3615,6 +3610,11 @@ esbuild@^0.8.52: |
3615 | 3610 | resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.52.tgz#6dabf11c517af449a96d66da20dfc204ee7b5294" |
3616 | 3611 | integrity sha512-b5KzFweLLXoXQwdC/e2+Z80c8uo2M5MgP7yQEEebkFw6In4T9CvYcNoM2ElvJt8ByO04zAZUV0fZkXmXoi2s9A== |
3617 | 3612 | |
3613 | +esbuild@^0.8.53: | |
3614 | + version "0.8.53" | |
3615 | + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.53.tgz#b408bb0ca1b29dab13d8bbf7d59f59afe6776e86" | |
3616 | + integrity sha512-GIaYGdMukH58hu+lf07XWAeESBYFAsz8fXnrylHDCbBXKOSNtFmoYA8PhSeSF+3/qzeJ0VjzV9AkLURo5yfu3g== | |
3617 | + | |
3618 | 3618 | escalade@^3.1.1: |
3619 | 3619 | version "3.1.1" |
3620 | 3620 | resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" |
... | ... | @@ -3720,12 +3720,12 @@ eslint@^7.21.0: |
3720 | 3720 | text-table "^0.2.0" |
3721 | 3721 | v8-compile-cache "^2.0.3" |
3722 | 3722 | |
3723 | -esno@^0.4.4: | |
3724 | - version "0.4.4" | |
3725 | - resolved "https://registry.npmjs.org/esno/-/esno-0.4.4.tgz#88b20add264401321a6545de00c9437edd81ca24" | |
3726 | - integrity sha512-YthG7d+wodPWKkJTdQPMrKZCbJgtyWsel6UBekjZw8AahUTtkqvtLXcMnRXeZ5YIcjviLXw3Cmq7hVlvB7dFyw== | |
3723 | +esno@^0.4.5: | |
3724 | + version "0.4.5" | |
3725 | + resolved "https://registry.npmjs.org/esno/-/esno-0.4.5.tgz#befd93a0b9021b8879aef359d2938d38be960c5a" | |
3726 | + integrity sha512-QzQZPVlpII0RJCDecsi28gjJFa6DXb/kAn3IHE+XHTw382wAA89jF40DcP/t+Yn/usrHyDlmseBppvr5Jxy7qw== | |
3727 | 3727 | dependencies: |
3728 | - esbuild "^0.8.48" | |
3728 | + esbuild "^0.8.53" | |
3729 | 3729 | esbuild-register "^2.0.0" |
3730 | 3730 | |
3731 | 3731 | espree@^6.2.1: |
... | ... | @@ -4811,10 +4811,10 @@ human-signals@^1.1.1: |
4811 | 4811 | resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" |
4812 | 4812 | integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== |
4813 | 4813 | |
4814 | -husky@^5.1.1: | |
4815 | - version "5.1.1" | |
4816 | - resolved "https://registry.npmjs.org/husky/-/husky-5.1.1.tgz#8678953fd8deb86f387cbf1ad50bb2f7f96e83f2" | |
4817 | - integrity sha512-80LZ736V0Nr4/st0c2COYaMbEQhHNmAbLMN8J/kLk7/mo0QdUkUGNDjv/7jVkhug377Wh8wfbWyaVXEJ/h2B/Q== | |
4814 | +husky@^5.1.2: | |
4815 | + version "5.1.2" | |
4816 | + resolved "https://registry.npmjs.org/husky/-/husky-5.1.2.tgz#dc6a1f68640455d8d98c28875e073087f86c5081" | |
4817 | + integrity sha512-lilaRYeDXcAOj8DuRnN9IxUyEMVbYg9rK7yVNkPB5V4hCvxIUxpMeiv9K2h77CE0HzjCnk1Br0oWe1IghXngDQ== | |
4818 | 4818 | |
4819 | 4819 | iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: |
4820 | 4820 | version "0.4.24" |
... | ... | @@ -7020,11 +7020,16 @@ prettier@^2.2.1: |
7020 | 7020 | resolved "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" |
7021 | 7021 | integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== |
7022 | 7022 | |
7023 | -pretty-bytes@^5.3.0, pretty-bytes@^5.5.0: | |
7023 | +pretty-bytes@^5.3.0: | |
7024 | 7024 | version "5.5.0" |
7025 | 7025 | resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e" |
7026 | 7026 | integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== |
7027 | 7027 | |
7028 | +pretty-bytes@^5.6.0: | |
7029 | + version "5.6.0" | |
7030 | + resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" | |
7031 | + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== | |
7032 | + | |
7028 | 7033 | pretty-quick@^3.1.0: |
7029 | 7034 | version "3.1.0" |
7030 | 7035 | resolved "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.0.tgz#cb172e9086deb57455dea7c7e8f136cd0a4aef6c" |
... | ... | @@ -8941,15 +8946,15 @@ vite-plugin-purge-icons@^0.7.0: |
8941 | 8946 | "@purge-icons/generated" "^0.7.0" |
8942 | 8947 | rollup-plugin-purge-icons "^0.7.0" |
8943 | 8948 | |
8944 | -vite-plugin-pwa@^0.5.5: | |
8945 | - version "0.5.5" | |
8946 | - resolved "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.5.5.tgz#f6bcaf6f6f1af0882fff7a9334aec685b798cceb" | |
8947 | - integrity sha512-gwPg+pDm87iMOLORz/fOZiNNWNXhHFrMPW34XpX3F9JLl6ytcNZ6cJMYJ1FRKQPtVADqkbZjk3g3AOi1oI6HKQ== | |
8949 | +vite-plugin-pwa@^0.5.6: | |
8950 | + version "0.5.6" | |
8951 | + resolved "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.5.6.tgz#483267e83ff3a6f5a0adc97a7e06f841a353cf30" | |
8952 | + integrity sha512-CQjfKdSm0YMRRdMkfdI1RqJyrCjOFUl61+puGfMNAUMM5tex9rjF9gHxqDV5pN/2jFMQoTKkLLQ7HOYM0VbF2w== | |
8948 | 8953 | dependencies: |
8949 | 8954 | debug "^4.3.2" |
8950 | 8955 | fast-glob "^3.2.5" |
8951 | - pretty-bytes "^5.5.0" | |
8952 | - workbox-build "^6.1.0" | |
8956 | + pretty-bytes "^5.6.0" | |
8957 | + workbox-build "^6.1.1" | |
8953 | 8958 | |
8954 | 8959 | vite-plugin-style-import@^0.7.5: |
8955 | 8960 | version "0.7.5" |
... | ... | @@ -9123,24 +9128,24 @@ wordwrap@^1.0.0: |
9123 | 9128 | resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" |
9124 | 9129 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= |
9125 | 9130 | |
9126 | -workbox-background-sync@^6.1.0: | |
9127 | - version "6.1.0" | |
9128 | - resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.1.0.tgz#817de1ac1546fb6035759f151b0b4c5f0d3d9506" | |
9129 | - integrity sha512-A7YWWmAqzLkWYqqxzxoX4mciVjdSHpfX+JMADXoJ9SoLb6l/QReNJE+CNPew+gGPH6JLKNjZeecDmUpXFhzFPA== | |
9131 | +workbox-background-sync@^6.1.1: | |
9132 | + version "6.1.1" | |
9133 | + resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.1.1.tgz#db51214299b4be7a8aa274d8037f22d917241101" | |
9134 | + integrity sha512-w1b3j7snz4pQ8xp0i5Nci40qlglqdk70pbORBtMfl9uikI1qGjYfKq6oYeResCXYxb5mUYS245HsUclb6RFVJA== | |
9130 | 9135 | dependencies: |
9131 | - workbox-core "^6.1.0" | |
9136 | + workbox-core "^6.1.1" | |
9132 | 9137 | |
9133 | -workbox-broadcast-update@^6.1.0: | |
9134 | - version "6.1.0" | |
9135 | - resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.1.0.tgz#63c1dc2d519aa6a7b9ce1db2f8da3e1db45b3422" | |
9136 | - integrity sha512-70G821I1Lb4Ex+rcjfKCbuFJ4WL4RSQsqvcByt/bLpPTTLoE6+VvLX3+1QtSK8P2+NmOsKkAqx9qiQkUdGbaYw== | |
9138 | +workbox-broadcast-update@^6.1.1: | |
9139 | + version "6.1.1" | |
9140 | + resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.1.1.tgz#5815749c9ad22ba4ef5184064a62fbdae3b04bf0" | |
9141 | + integrity sha512-8fBNOQt8ojWWtz3FbkDnKo8CpN6l8UjD2HpQr8tue7HJVfk0X1gfnzZLIDg7HCXhqF7ld3iQbGQqGPf1ihTY6A== | |
9137 | 9142 | dependencies: |
9138 | - workbox-core "^6.1.0" | |
9143 | + workbox-core "^6.1.1" | |
9139 | 9144 | |
9140 | -workbox-build@^6.1.0: | |
9141 | - version "6.1.0" | |
9142 | - resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-6.1.0.tgz#e0ba4a0004da1079e934c7452c72c92ef7b52cba" | |
9143 | - integrity sha512-xJPqTEf+Pg9KAoTrNeVWpMjqi4cJIRn14i02bZjjbHsLNN38qrqc8xwAW48TwoPCYLjp104ST164/3RDgrc7yw== | |
9145 | +workbox-build@^6.1.1: | |
9146 | + version "6.1.1" | |
9147 | + resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-6.1.1.tgz#8333626fad45734d842293e6c2c1b725f4e15752" | |
9148 | + integrity sha512-mAI3dS4VnXri6BFg02arK1403SqHy2sOlzC4NVAk6Rl2+Ddxs+PmJO4cMTyHw0KEhQFcwk6V8cJeGiXJXYzinA== | |
9144 | 9149 | dependencies: |
9145 | 9150 | "@babel/core" "^7.11.1" |
9146 | 9151 | "@babel/preset-env" "^7.11.0" |
... | ... | @@ -9164,119 +9169,119 @@ workbox-build@^6.1.0: |
9164 | 9169 | strip-comments "^2.0.1" |
9165 | 9170 | tempy "^0.6.0" |
9166 | 9171 | upath "^1.2.0" |
9167 | - workbox-background-sync "^6.1.0" | |
9168 | - workbox-broadcast-update "^6.1.0" | |
9169 | - workbox-cacheable-response "^6.1.0" | |
9170 | - workbox-core "^6.1.0" | |
9171 | - workbox-expiration "^6.1.0" | |
9172 | - workbox-google-analytics "^6.1.0" | |
9173 | - workbox-navigation-preload "^6.1.0" | |
9174 | - workbox-precaching "^6.1.0" | |
9175 | - workbox-range-requests "^6.1.0" | |
9176 | - workbox-recipes "^6.1.0" | |
9177 | - workbox-routing "^6.1.0" | |
9178 | - workbox-strategies "^6.1.0" | |
9179 | - workbox-streams "^6.1.0" | |
9180 | - workbox-sw "^6.1.0" | |
9181 | - workbox-window "^6.1.0" | |
9182 | - | |
9183 | -workbox-cacheable-response@^6.1.0: | |
9184 | - version "6.1.0" | |
9185 | - resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.1.0.tgz#a99fdfe1507848486579df7b204c30e4cd0a74f2" | |
9186 | - integrity sha512-oDAi0vXHGaE5p9NOo4N180UTcEKm6t2JMgmlrq0PkEW2PZEu9YR/atSnCwzMW7xpDqpKWaQr/LGP4+eixS8gcA== | |
9187 | - dependencies: | |
9188 | - workbox-core "^6.1.0" | |
9189 | - | |
9190 | -workbox-core@^6.1.0: | |
9191 | - version "6.1.0" | |
9192 | - resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-6.1.0.tgz#2671b64f76550e83a4c2202676b67ce372e10881" | |
9193 | - integrity sha512-s3KqTJfBreO4xCZpR2LB5p/EknAx8eg0QumKiIgxM4hRO0RtwS2pJvTieNEM23X3RqxRhqweriLD8To19KUvjg== | |
9194 | - | |
9195 | -workbox-expiration@^6.1.0: | |
9196 | - version "6.1.0" | |
9197 | - resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.1.0.tgz#cf6bb384e49d0c92b79233c46671d9c6d82478a2" | |
9198 | - integrity sha512-jp2xGk+LC4AhCoOxO/bC06GQkq/oVp0ZIf1zXLQh6OD2fWZPkXNjLLSuDnjXoGGPibYrq7gEE/xjAdYGjNWl1A== | |
9199 | - dependencies: | |
9200 | - workbox-core "^6.1.0" | |
9201 | - | |
9202 | -workbox-google-analytics@^6.1.0: | |
9203 | - version "6.1.0" | |
9204 | - resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.1.0.tgz#cd34100536250abc54070bcc23603213eb8e47e4" | |
9205 | - integrity sha512-BuUAJ747bMPC6IOKaQBXfotGybOfeHDRIC8ElF65ouB4O9kUJ3zh4EFxXmmJLgzTnji6265gXqNWcfuGiidk6A== | |
9206 | - dependencies: | |
9207 | - workbox-background-sync "^6.1.0" | |
9208 | - workbox-core "^6.1.0" | |
9209 | - workbox-routing "^6.1.0" | |
9210 | - workbox-strategies "^6.1.0" | |
9211 | - | |
9212 | -workbox-navigation-preload@^6.1.0: | |
9213 | - version "6.1.0" | |
9214 | - resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.1.0.tgz#e36d19f0d49ab5277e6c4e13b92f40da8955d62f" | |
9215 | - integrity sha512-N0c5Kmzu7lPKvirukbeZ3lN8KEAZU9xA4b1wmpV0VXUfRXVEk2ayXXqwHwMGFVi6FNCHiDLOcC8a2zW5kFLAeg== | |
9216 | - dependencies: | |
9217 | - workbox-core "^6.1.0" | |
9218 | - | |
9219 | -workbox-precaching@^6.1.0: | |
9220 | - version "6.1.0" | |
9221 | - resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.1.0.tgz#9ee3d28f27cd78daa62f5bd6a0d33f5682ac97a7" | |
9222 | - integrity sha512-zjye8MVzieBVJ3sS0hFcbKLp7pTHMfJM17YqxCxB0KykXWnxLOpYnStQ9M+bjWJsKJOQvbkPqvq5u9+mtA923g== | |
9223 | - dependencies: | |
9224 | - workbox-core "^6.1.0" | |
9225 | - workbox-routing "^6.1.0" | |
9226 | - workbox-strategies "^6.1.0" | |
9227 | - | |
9228 | -workbox-range-requests@^6.1.0: | |
9229 | - version "6.1.0" | |
9230 | - resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.1.0.tgz#5fbe9edfbcdb97153ed5260575a54e53b0f85a2d" | |
9231 | - integrity sha512-BO025BdAvc6vTBXJfkfibcikMFLmLRECt0FrVrTiiQafdO3jWH9qX9zTdrjYf6GkiIjvejvvmSYegwU1mL6N3Q== | |
9232 | - dependencies: | |
9233 | - workbox-core "^6.1.0" | |
9234 | - | |
9235 | -workbox-recipes@^6.1.0: | |
9236 | - version "6.1.0" | |
9237 | - resolved "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.1.0.tgz#b925f2727ace05ce8762a1b6da6c0d749fd687ee" | |
9238 | - integrity sha512-r8YLtMtQnvfkK1htnfrrX1CxKHglZJiVlqnct9rYIU17n2LCalHdI0zQrPqzYdLLHZxTX25UpBsdib0cAATy0A== | |
9239 | - dependencies: | |
9240 | - workbox-cacheable-response "^6.1.0" | |
9241 | - workbox-core "^6.1.0" | |
9242 | - workbox-expiration "^6.1.0" | |
9243 | - workbox-precaching "^6.1.0" | |
9244 | - workbox-routing "^6.1.0" | |
9245 | - workbox-strategies "^6.1.0" | |
9246 | - | |
9247 | -workbox-routing@^6.1.0: | |
9248 | - version "6.1.0" | |
9249 | - resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.1.0.tgz#f885cb7801e2c9c5678f197656cf27a2b649c1d5" | |
9250 | - integrity sha512-FXQ5cwb6Mk90fC0rfQLX0pN+r/N4eBafwkh/QanJUq0e6jMPdDFLrlsikZL/0LcXEx+yAkWLytoiS+d2HOEBOw== | |
9251 | - dependencies: | |
9252 | - workbox-core "^6.1.0" | |
9253 | - | |
9254 | -workbox-strategies@^6.1.0: | |
9255 | - version "6.1.0" | |
9256 | - resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.1.0.tgz#9ddcee44408d2fb403f22a7989803b5c58560590" | |
9257 | - integrity sha512-HvUknzJdZWeV3x7Eq33a7TGAv9/r1TEiQK6kQ1QNzN+IKiqhIjnhKFHmMxb5hK1Gw9/aDSJTLNPDaLPfIJRQFQ== | |
9258 | - dependencies: | |
9259 | - workbox-core "^6.1.0" | |
9260 | - | |
9261 | -workbox-streams@^6.1.0: | |
9262 | - version "6.1.0" | |
9263 | - resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.1.0.tgz#2dbc78ddc863b47aa4fe399d9385d3ed8567e881" | |
9264 | - integrity sha512-V80OIfoIXaDkjWIGFSae5sBJuaG2r4bXk6HKpntBYaVQ72LD1CgkXRmZKmLJQ9ltHCx9Vmq/7+q1OF5mTKb8Qw== | |
9265 | - dependencies: | |
9266 | - workbox-core "^6.1.0" | |
9267 | - workbox-routing "^6.1.0" | |
9268 | - | |
9269 | -workbox-sw@^6.1.0: | |
9270 | - version "6.1.0" | |
9271 | - resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.1.0.tgz#dfaca1029264af71f13a90fdfb16cf8d64ed0537" | |
9272 | - integrity sha512-e2jnIWSmNrpO9Psy4D6euDdRUW8FTXAdMxOj5O02gxa01fri1kfTSM9irDnTGKUiSGc+hlycsvzGdr8bnvzDiA== | |
9273 | - | |
9274 | -workbox-window@^6.1.0: | |
9275 | - version "6.1.0" | |
9276 | - resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-6.1.0.tgz#5856127f183bcccfd93655b0e3cba5f2432b9156" | |
9277 | - integrity sha512-sjnE+nTSnrBvYx5KmpESvsTC82P3yy8h5l4Ae4Q8uLqdH29UQ3bMd8puGVVhX1JZFCmV40cvrbZ1fUj+3/TQ9g== | |
9278 | - dependencies: | |
9279 | - workbox-core "^6.1.0" | |
9172 | + workbox-background-sync "^6.1.1" | |
9173 | + workbox-broadcast-update "^6.1.1" | |
9174 | + workbox-cacheable-response "^6.1.1" | |
9175 | + workbox-core "^6.1.1" | |
9176 | + workbox-expiration "^6.1.1" | |
9177 | + workbox-google-analytics "^6.1.1" | |
9178 | + workbox-navigation-preload "^6.1.1" | |
9179 | + workbox-precaching "^6.1.1" | |
9180 | + workbox-range-requests "^6.1.1" | |
9181 | + workbox-recipes "^6.1.1" | |
9182 | + workbox-routing "^6.1.1" | |
9183 | + workbox-strategies "^6.1.1" | |
9184 | + workbox-streams "^6.1.1" | |
9185 | + workbox-sw "^6.1.1" | |
9186 | + workbox-window "^6.1.1" | |
9187 | + | |
9188 | +workbox-cacheable-response@^6.1.1: | |
9189 | + version "6.1.1" | |
9190 | + resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.1.1.tgz#1dc71393cbce83559ad05a8ccb6c6fafa4cccc70" | |
9191 | + integrity sha512-jasNxelRrqCbzIAIMjHk7Ej9BOViBTQlvRJzv3Y0nYuWvxK0CDPQJSraGmTbu3LGiTBbrWEmxe1hVqvLyFKR9A== | |
9192 | + dependencies: | |
9193 | + workbox-core "^6.1.1" | |
9194 | + | |
9195 | +workbox-core@^6.1.1: | |
9196 | + version "6.1.1" | |
9197 | + resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-6.1.1.tgz#c8a9b424031b0cf7dacf9d7b8e023d126c9d0167" | |
9198 | + integrity sha512-xsc/72AQxFtt2BHmwU8QtnVV+W5ln4nnYGuz9Q5sPWYGqW4cH0P+FpZDoGM59bmNEyNf+W9bEmidW//e5GsbwQ== | |
9199 | + | |
9200 | +workbox-expiration@^6.1.1: | |
9201 | + version "6.1.1" | |
9202 | + resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.1.1.tgz#4468c3cdfe76b5888f4ae7e3aad63797a7bc24b1" | |
9203 | + integrity sha512-WbEv8NG1ZUiWI+jv3v7Jqed/PyCMoTpLcf3Nw7tKq0nGy6DFQtmSizO37uJ73oc8vttck97UBPQRiwyP1bZnAg== | |
9204 | + dependencies: | |
9205 | + workbox-core "^6.1.1" | |
9206 | + | |
9207 | +workbox-google-analytics@^6.1.1: | |
9208 | + version "6.1.1" | |
9209 | + resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.1.1.tgz#c31876954779d65e1334c2dc3232e46d6a5f925a" | |
9210 | + integrity sha512-79PyeE4TyabGXqlDcRG2LKejs8yZ8OoU0/El0BwP8RGrZgp5GMDGuJkat4xggpRTVaOk8rb0aoSbVAYBWpa0pg== | |
9211 | + dependencies: | |
9212 | + workbox-background-sync "^6.1.1" | |
9213 | + workbox-core "^6.1.1" | |
9214 | + workbox-routing "^6.1.1" | |
9215 | + workbox-strategies "^6.1.1" | |
9216 | + | |
9217 | +workbox-navigation-preload@^6.1.1: | |
9218 | + version "6.1.1" | |
9219 | + resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.1.1.tgz#3c7d39d5f102f4a76f24b48f97701b16ae56bd40" | |
9220 | + integrity sha512-vX5qJDk1Z663nuSSSHkcBFQQJwEe4UHynd5uoX3oC0IlecPclAbyT3QetVh0wYdXv6G6XD/LBd3iNZmlSbTosw== | |
9221 | + dependencies: | |
9222 | + workbox-core "^6.1.1" | |
9223 | + | |
9224 | +workbox-precaching@^6.1.1: | |
9225 | + version "6.1.1" | |
9226 | + resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.1.1.tgz#f387ccdf60aab30228a4c7ed20a1cd8dee6aaaa4" | |
9227 | + integrity sha512-x8OKwtjd5ewe/x3VlKcXri1P3Tm0uV+uChdMYg/QryrCR9K8x9xwhAw8PZPkwrY0bLLsJMUoX9/lBu8DmjVqTA== | |
9228 | + dependencies: | |
9229 | + workbox-core "^6.1.1" | |
9230 | + workbox-routing "^6.1.1" | |
9231 | + workbox-strategies "^6.1.1" | |
9232 | + | |
9233 | +workbox-range-requests@^6.1.1: | |
9234 | + version "6.1.1" | |
9235 | + resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.1.1.tgz#4e6d30e91cfc3855ff16cfa3df458e0487da2b4d" | |
9236 | + integrity sha512-ikZ0ZwbFAVMzJ08rM/spn9zC2tohGllFVii9R1q0+xMKvoGDsyzoQnoKrXgyUvcjRPn6ByFncAJ5lUKKG4TGkA== | |
9237 | + dependencies: | |
9238 | + workbox-core "^6.1.1" | |
9239 | + | |
9240 | +workbox-recipes@^6.1.1: | |
9241 | + version "6.1.1" | |
9242 | + resolved "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.1.1.tgz#0cd1bd3b2ba223db563428ec5d17e960081f70d4" | |
9243 | + integrity sha512-GuzJXBQM+YaFxQwFvcRarAScUoRDoaWXKxxkLWHnCJf0H//MQ8zR9Ay1mv21N6iRoSH11S0u/4yxSeembG/fLA== | |
9244 | + dependencies: | |
9245 | + workbox-cacheable-response "^6.1.1" | |
9246 | + workbox-core "^6.1.1" | |
9247 | + workbox-expiration "^6.1.1" | |
9248 | + workbox-precaching "^6.1.1" | |
9249 | + workbox-routing "^6.1.1" | |
9250 | + workbox-strategies "^6.1.1" | |
9251 | + | |
9252 | +workbox-routing@^6.1.1: | |
9253 | + version "6.1.1" | |
9254 | + resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.1.1.tgz#833ef6439905757241f9e4d56d8e282c20199c02" | |
9255 | + integrity sha512-Az3Gt3cHNK+W0gTfSb4eKGfwEap9Slak16Krr5SiLhE1gXUY2C2O123HucVCedXgIoqTLOXMtNj71Cm6SwYDEg== | |
9256 | + dependencies: | |
9257 | + workbox-core "^6.1.1" | |
9258 | + | |
9259 | +workbox-strategies@^6.1.1: | |
9260 | + version "6.1.1" | |
9261 | + resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.1.1.tgz#6e0adda84bcda17d3d0c48baec2eab9b988b9ca6" | |
9262 | + integrity sha512-7qYA9Eiq6hnP2dyenlD7ZtWI1ArBMT8yhTvHVlaOl9kYY7W+Iv3lAfRCjj/nucOKeVXATx4iVJEuFPn5J+8lzw== | |
9263 | + dependencies: | |
9264 | + workbox-core "^6.1.1" | |
9265 | + | |
9266 | +workbox-streams@^6.1.1: | |
9267 | + version "6.1.1" | |
9268 | + resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.1.1.tgz#0f204f070861eb1afccddeca4a5a8ba069596bd1" | |
9269 | + integrity sha512-EMhY+Y2O7+XVy8MFRmiDwKezAXLzbgjQOJDbxWaGKtwNPbwOF6gGZjCvmnNAU1K+MAvvUNsAFR6AAUKMSfOyaw== | |
9270 | + dependencies: | |
9271 | + workbox-core "^6.1.1" | |
9272 | + workbox-routing "^6.1.1" | |
9273 | + | |
9274 | +workbox-sw@^6.1.1: | |
9275 | + version "6.1.1" | |
9276 | + resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.1.1.tgz#203ce4611309df1bf9c142d1e3b3a214b1b62944" | |
9277 | + integrity sha512-t6LLSx/rOS8d6w4+fsJOHDqGrjO89iBF0F8nBQgBleEPjvs9Be5j4B11y34Fw7s0CggeA3Kciutr4CqnQtPQUg== | |
9278 | + | |
9279 | +workbox-window@^6.1.1: | |
9280 | + version "6.1.1" | |
9281 | + resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-6.1.1.tgz#c1d60f6a56b49235e36edc73c593fa470ffffc72" | |
9282 | + integrity sha512-ZT1enHgi6gYfm+HgRWq8nkqLFEtjOjkq3yGV/qhMmKvI39/sIdO4g2LcjqhnUjbhweedX+9KOOu3U4xasQpGcQ== | |
9283 | + dependencies: | |
9284 | + workbox-core "^6.1.1" | |
9280 | 9285 | |
9281 | 9286 | wrap-ansi@^5.1.0: |
9282 | 9287 | version "5.1.0" | ... | ... |