Skip to content

Commit d33261d

Browse files
authored
chore: demo page for system/department (#5611)
* feat: department management demo * perf: department page improve * feat: demo api middleware * fix: add losing import
1 parent 7041c6a commit d33261d

File tree

19 files changed

+811
-8
lines changed

19 files changed

+811
-8
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { verifyAccessToken } from '~/utils/jwt-utils';
2+
import {
3+
sleep,
4+
unAuthorizedResponse,
5+
useResponseSuccess,
6+
} from '~/utils/response';
7+
8+
export default eventHandler(async (event) => {
9+
const userinfo = verifyAccessToken(event);
10+
if (!userinfo) {
11+
return unAuthorizedResponse(event);
12+
}
13+
await sleep(600);
14+
return useResponseSuccess(null);
15+
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { verifyAccessToken } from '~/utils/jwt-utils';
2+
import {
3+
sleep,
4+
unAuthorizedResponse,
5+
useResponseSuccess,
6+
} from '~/utils/response';
7+
8+
export default eventHandler(async (event) => {
9+
const userinfo = verifyAccessToken(event);
10+
if (!userinfo) {
11+
return unAuthorizedResponse(event);
12+
}
13+
await sleep(1000);
14+
return useResponseSuccess(null);
15+
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { verifyAccessToken } from '~/utils/jwt-utils';
2+
import {
3+
sleep,
4+
unAuthorizedResponse,
5+
useResponseSuccess,
6+
} from '~/utils/response';
7+
8+
export default eventHandler(async (event) => {
9+
const userinfo = verifyAccessToken(event);
10+
if (!userinfo) {
11+
return unAuthorizedResponse(event);
12+
}
13+
await sleep(2000);
14+
return useResponseSuccess(null);
15+
});
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import { faker } from '@faker-js/faker';
2+
import { verifyAccessToken } from '~/utils/jwt-utils';
3+
import {
4+
sleep,
5+
unAuthorizedResponse,
6+
useResponseSuccess,
7+
} from '~/utils/response';
8+
9+
const formatterCN = new Intl.DateTimeFormat('zh-CN', {
10+
timeZone: 'Asia/Shanghai',
11+
year: 'numeric',
12+
month: '2-digit',
13+
day: '2-digit',
14+
hour: '2-digit',
15+
minute: '2-digit',
16+
second: '2-digit',
17+
});
18+
19+
function generateMockDataList(count: number) {
20+
const dataList = [];
21+
22+
for (let i = 0; i < count; i++) {
23+
const dataItem: Record<string, any> = {
24+
id: faker.string.uuid(),
25+
pid: 0,
26+
name: faker.commerce.department(),
27+
status: faker.helpers.arrayElement([0, 1]),
28+
createTime: formatterCN.format(
29+
faker.date.between({ from: '2021-01-01', to: '2022-12-31' }),
30+
),
31+
remark: faker.lorem.sentence(),
32+
};
33+
if (faker.datatype.boolean()) {
34+
dataItem.children = Array.from(
35+
{ length: faker.number.int({ min: 1, max: 5 }) },
36+
() => ({
37+
id: faker.string.uuid(),
38+
pid: dataItem.id,
39+
name: faker.commerce.department(),
40+
status: faker.helpers.arrayElement([0, 1]),
41+
createTime: formatterCN.format(
42+
faker.date.between({ from: '2023-01-01', to: '2023-12-31' }),
43+
),
44+
remark: faker.lorem.sentence(),
45+
}),
46+
);
47+
}
48+
dataList.push(dataItem);
49+
}
50+
51+
return dataList;
52+
}
53+
54+
const mockData = generateMockDataList(10);
55+
56+
export default eventHandler(async (event) => {
57+
const userinfo = verifyAccessToken(event);
58+
if (!userinfo) {
59+
return unAuthorizedResponse(event);
60+
}
61+
62+
await sleep(600);
63+
64+
const listData = structuredClone(mockData);
65+
66+
return useResponseSuccess(listData);
67+
});

apps/backend-mock/middleware/1.api.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
export default defineEventHandler((event) => {
1+
import { forbiddenResponse, sleep } from '~/utils/response';
2+
3+
export default defineEventHandler(async (event) => {
24
event.node.res.setHeader(
35
'Access-Control-Allow-Origin',
46
event.headers.get('Origin') ?? '*',
@@ -7,5 +9,11 @@ export default defineEventHandler((event) => {
79
event.node.res.statusCode = 204;
810
event.node.res.statusMessage = 'No Content.';
911
return 'OK';
12+
} else if (
13+
['DELETE', 'PATCH', 'POST', 'PUT'].includes(event.method) &&
14+
event.path.startsWith('/api/system/')
15+
) {
16+
await sleep(Math.floor(Math.random() * 1000));
17+
return forbiddenResponse(event, '演示环境,禁止修改');
1018
}
1119
});

packages/@core/base/icons/src/lucide.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export {
4949
PanelRight,
5050
Pin,
5151
PinOff,
52+
Plus,
5253
RotateCw,
5354
Search,
5455
SearchX,

packages/locales/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import {
77
} from './i18n';
88

99
const $t = i18n.global.t;
10+
const $te = i18n.global.te;
1011

1112
export {
1213
$t,
14+
$te,
1315
i18n,
1416
loadLocaleMessages,
1517
loadLocalesMap,

packages/locales/src/langs/en-US/common.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,15 @@
66
"prompt": "Prompt",
77
"cancel": "Cancel",
88
"confirm": "Confirm",
9+
"reset": "Reset",
910
"noData": "No Data",
1011
"refresh": "Refresh",
1112
"loadingMenu": "Loading Menu",
1213
"query": "Search",
13-
"search": "Search"
14+
"search": "Search",
15+
"enabled": "Enabled",
16+
"disabled": "Disabled",
17+
"edit": "Edit",
18+
"delete": "Delete",
19+
"create": "Create"
1420
}

packages/locales/src/langs/en-US/ui.json

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
11
{
22
"formRules": {
33
"required": "Please enter {0}",
4-
"selectRequired": "Please select {0}"
4+
"selectRequired": "Please select {0}",
5+
"minLength": "{0} must be at least {1} characters",
6+
"maxLength": "{0} can be at most {1} characters",
7+
"length": "{0} must be {1} characters long"
8+
},
9+
"actionTitle": {
10+
"edit": "Modify {0}",
11+
"create": "Create {0}",
12+
"delete": "Delete {0}",
13+
"view": "View {0}"
14+
},
15+
"actionMessage": {
16+
"deleteConfirm": "Are you sure to delete {0}?",
17+
"deleting": "Deleting {0} ...",
18+
"deleteSuccess": "{0} deleted successfully",
19+
"operationSuccess": "Operation succeeded",
20+
"operationFailed": "Operation failed"
521
},
622
"placeholder": {
723
"input": "Please enter",

packages/locales/src/langs/zh-CN/common.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,15 @@
66
"prompt": "提示",
77
"cancel": "取消",
88
"confirm": "确认",
9+
"reset": "重置",
910
"noData": "暂无数据",
1011
"refresh": "刷新",
1112
"loadingMenu": "加载菜单中",
1213
"query": "查询",
13-
"search": "搜索"
14+
"search": "搜索",
15+
"enabled": "已启用",
16+
"disabled": "已禁用",
17+
"edit": "修改",
18+
"delete": "删除",
19+
"create": "新增"
1420
}

0 commit comments

Comments
 (0)