359 Commits

Author SHA1 Message Date
xingyu
8dee4f0257 docs: vue v3.3.7 2023-10-25 10:09:15 +08:00
xingyu
e0d4cd0c0a chore: vue v3.3.7 2023-10-25 10:08:58 +08:00
xingyu
9a5d995f75 chore: v1.8.3 2023-10-24 22:40:15 +08:00
xingyu
43dff1cdb3 fix: eslint jsdoc 2023-10-24 17:57:38 +08:00
xingyu
d937c81931 fix(TableFooter): resolve ts type error 2023-10-24 17:49:22 +08:00
xingyu
ba2063abee fix(tree): remove expandedKeys prop default value 2023-10-24 17:48:33 +08:00
xingyu
b385f335de fix(Upload): The file name is too long bug 2023-10-24 17:47:14 +08:00
xingyu
caefaad645 chore: eslint config 2023-10-24 14:14:17 +08:00
xingyu
f241d1faef chore: update deps 2023-10-24 14:13:00 +08:00
xingyu
be2ff70cf6 feat: add image ImageUpload 2023-10-23 10:06:43 +08:00
xingyu
ad91b8ac82 fix: not inherit slot and not show icon slot 2023-10-23 09:57:35 +08:00
xingyu
b2ade25899 fix: resolve BasicTable component ts type error 2023-10-23 09:55:09 +08:00
xingyu
8e25a3aa09 fix(BasicTree): Resolve ts type error 2023-10-23 09:49:32 +08:00
xingyu
007ac38d5f fix(ApiCascader): apiParamKey not working 2023-10-23 09:47:57 +08:00
xingyu
ea2be2961c fix(Menu): tab标签切换选中状态焦点重复 2023-10-23 09:47:28 +08:00
xingyu
d819fd8e47 fix: SimpleRootMenuContextProps type error 2023-10-23 09:46:49 +08:00
xingyu
abb7466c7e docs: up vue 3.3.6 2023-10-23 09:43:02 +08:00
xingyu
5f1aa89c3a chore: up vue 3.3.6 2023-10-23 09:41:12 +08:00
xingyu
75a7c91bb1 refactor: cipher 2023-10-19 17:05:44 +08:00
xingyu
7015287a6f feat: add pinia persist plugin 2023-10-19 17:01:49 +08:00
xingyu
d70a5c2903 fix(ApiSelect): 该组件设定成手动触发验证 2023-10-19 15:02:39 +08:00
xingyu
f3cba6fc27 fix(ApiTree): 多触发一次onchange 2023-10-19 15:02:01 +08:00
xingyu
4bf34bd64a fix(component): 密码复杂度
closed #I895Z6
2023-10-19 10:09:10 +08:00
xingyu
23c5292c97 chore: update deps 2023-10-19 10:04:22 +08:00
xingyu
85faca3ad8 fix: fix types 2023-10-18 21:11:23 +08:00
xingyu
14538b0946 fix(ApiSelect): BasicForm emit value-change twice 2023-10-18 21:10:53 +08:00
xingyu
d8bf10241f fix: type:check error 2023-10-18 20:42:45 +08:00
xingyu
729402b314 perf: Modify i18 file format to JSON 2023-10-18 20:34:58 +08:00
xingyu
1820e19232 chore: up vite 4.5.0 2023-10-18 20:29:10 +08:00
xingyu
d5bdf6502e docs: pnpm 8.9.0 2023-10-18 18:42:39 +08:00
xingyu
f469a7a840 docs: up vite 4.5.0 2023-10-18 18:41:21 +08:00
xingyu
d8800cfda9 chore: vite 4.5.0 2023-10-18 18:39:14 +08:00
xingyu
df746f21f0 fix(ApiSelect): Incorrect value type definition 2023-10-18 17:51:46 +08:00
xingyu
afab7630ec chore: eslint config 2023-10-18 16:02:26 +08:00
xingyu
40db4c17da chore: remove vue-eslint-parser 2023-10-18 15:57:52 +08:00
xingyu
13f8e3b249 docs: up antdv 4.0.6 2023-10-18 15:41:10 +08:00
xingyu
9c27d6d3b6 chore: update antdv 4.0.6 2023-10-18 15:40:38 +08:00
xingyu
8ce86658ff fix(BasicTable): headerCell slot title not exist 2023-10-18 15:40:22 +08:00
xingyu
9acc73a591 fix: fix types 2023-10-18 15:38:56 +08:00
xingyu
1de5f2bb5a chore: use new eslint config 2023-10-18 15:38:12 +08:00
xingyu
8076d0e54c chore: use new eslint 2023-10-18 15:22:29 +08:00
xingyu
dbbc2e1939 docs: up antdv 4.0.5 2023-10-17 20:31:37 +08:00
xingyu
cc0c32ae18 chore: update antdv 4.0.5 2023-10-17 20:30:25 +08:00
xingyu
a5e9361ff1 feat(Menu): Add custom images to menu 2023-10-17 13:52:38 +08:00
xingyu
9e4bcf6471 docs: update antdv 4.0.4 2023-10-17 11:11:14 +08:00
xingyu
6902f0f79a chore: update antdv 4.0.4 2023-10-17 11:10:53 +08:00
xingyu
cb132248c6 fix: type 2023-10-17 11:10:43 +08:00
xingyu
3f9f9e91d9 fix(BasicForm): useForm中scheme选项slot与component冲突 2023-10-17 10:55:31 +08:00
xingyu
09b71efc1e feat: cahier 2023-10-15 20:46:52 +08:00
xingyu
bef2ea3d68 feat: pay cashier 待完成 2023-10-15 20:17:00 +08:00
xingyu
c804dddb7d fix: route 2023-10-15 19:49:38 +08:00
xingyu
3147206e8e feat: button type 属性不再支持颜色 2023-10-15 19:34:00 +08:00
xingyu
cd60ed8de8 feat: 添加刷新菜单功能 2023-10-15 19:32:59 +08:00
xingyu
2141378c3d docs: update deps 2023-10-15 17:51:26 +08:00
xingyu
ed11ecc18a chore: update deps 2023-10-15 17:50:37 +08:00
xingyu
15a0cadbf1 fix(ApiSelect): type warning 2023-10-15 17:43:53 +08:00
xingyu
9915eab368 fix: 完善ApiTree组件的重置回显功能 2023-10-15 17:41:39 +08:00
xingyu
60a79422f3 fix(ApiTree): Modify Trigger Selection Event Name 2023-10-15 17:37:36 +08:00
xingyu
42e633e4db fix: ApiTransfer 不支持disabled 2023-10-15 17:36:14 +08:00
xingyu
84138b9be4 fix: Drawer的footer样式错位问题 2023-10-15 17:35:27 +08:00
xingyu
f2a54807e8 feat(BasicButton): BasicButton组件支持icon插槽 2023-10-15 17:34:14 +08:00
xingyu
0b3a5f2ff3 chore: Remove the unnecessary pagesize attribute 2023-10-15 17:33:42 +08:00
xingyu
ced9f8ca2c fix: type check error 2023-10-13 10:23:28 +08:00
xingyu
b06d3c58b3 feat: 为CodeEditor添加bordered属性 2023-10-13 10:20:35 +08:00
xingyu
21e1cee4ce fix: type check error 2023-10-12 15:15:32 +08:00
xingyu
bea5189943 perf: 日期区间查询 增加起始和结束默认时间 2023-10-12 11:25:23 +08:00
xingyu
f789fa4df1 fix: useForm 中 scheme 选项 slot 与 component冲突 2023-10-12 11:08:06 +08:00
xingyu
1814ed00ef fix: Failure to export 2023-10-12 11:07:08 +08:00
xingyu
56ad5f4743 chore: update deps 2023-10-12 11:07:00 +08:00
xingyu
0201853172 chore: issue 2023-10-11 17:46:26 +08:00
xingyu
84e5d7133c chore: config 2023-10-11 09:47:56 +08:00
xingyu
9abf0d8729 fix: type 2023-10-11 09:47:35 +08:00
xingyu
8d280af271 fix: 选项卡渲染问题,以及完善路由中affix=true时处理逻辑 2023-10-11 09:36:22 +08:00
xingyu
bdb7fdc3a3 fix: ts类型错误 2023-10-11 09:33:03 +08:00
xingyu
b343e80f6e fix: watch回调参数类型不一致 2023-10-11 09:31:11 +08:00
xingyu
daa2b48efb perf: SimpleMenuTag的引用都改为动态组件引用,以消除打包警告 2023-10-11 09:30:29 +08:00
xingyu
d5edc19b84 docs: update deps 2023-10-10 12:15:49 +08:00
xingyu
50628346b7 chore: update deps 2023-10-10 12:13:43 +08:00
xingyu
57314ee1d0 fix: ScrollContainer的一个问题 2023-10-10 12:12:33 +08:00
xingyu
88c1f5c2c4 fix: change事件应随handleChange一起抛出 2023-10-10 12:08:49 +08:00
xingyu
91b9e4e25c fix: 表格编辑行在使用Switch,checkedValue为数字时无法切换开关 2023-10-10 12:07:38 +08:00
xingyu
285d4ab779 fix: Fix ts type error 2023-10-10 12:06:35 +08:00
xingyu
91c34175da fix: 处理vue errorHandler绑定事件的参数类型不一致 2023-10-10 11:57:16 +08:00
xingyu
0efc29e5ac feat: 添加getEnvConfig返回类型 2023-10-10 11:56:35 +08:00
xingyu
b4f6ef1465 fix: 校验类型错误 2023-10-10 11:54:04 +08:00
xingyu
eb96488317 fix: 消除Preview Options的函数定义类型错误 2023-10-10 11:51:32 +08:00
xingyu
81283bcd24 fix: Fix ts type error 2023-10-10 11:45:01 +08:00
xingyu
eee3d31eeb fix: tabel取消编辑单元格后会回到初始值 2023-10-10 11:18:21 +08:00
xingyu
857c2d495b fix(ApiSelect): 移除watchEffect引发的重复请求 2023-10-10 11:17:14 +08:00
xingyu
aa63382d1a refactor(util): 移除useCopyToClipboard hook, 使用navigator.clipboard进行替代 2023-10-10 11:14:15 +08:00
xingyu
0bdfd88035 fix: 多选框必填选中校验异常 2023-10-10 11:08:00 +08:00
xingyu
9a8fa49541 fix: unable to run the clear cache 2023-10-10 11:07:13 +08:00
xingyu
3a84c319dc fix: 修正日期区间拆解时数据为null时异常问题 2023-10-10 11:05:54 +08:00
xingyu
781f7c9cd1 fix(component): fix: 修复rule validator类型默认为string,导致 radio 等组件在 setFormValues 时,如果值不是string类型,提示校验错误 2023-10-10 10:57:48 +08:00
xingyu
97de2d680b fix: 按钮权限判断权限异常 2023-10-10 10:55:27 +08:00
xingyu
36214e1971 fix: 移除无用的suffixIcon slot, ant的tree组件并没有提供这个slot 2023-10-10 10:52:51 +08:00
xingyu
3e68d4f7fe fix: 消除绑定属性的类型错误 2023-10-10 10:51:20 +08:00
xingyu
9ac774cd0a fix: eslint 2023-10-10 10:48:40 +08:00
xingyu
0f9ab388c3 fix: basicHelp install 2023-10-10 10:46:24 +08:00
xingyu
4bec67dcc2 chore: update deps 2023-10-10 10:46:05 +08:00
xingyu
33304257ad fix: Fix context menu style not working 2023-09-27 10:30:12 +08:00
xingyu
8bea32cd84 style(Modal): modal全屏模式 margin-top调整为0 2023-09-27 10:26:47 +08:00
xingyu
cb979226c2 fix(ApiSelect): ApiSelect首次选择值时仍然提示校验 2023-09-27 10:25:45 +08:00
xingyu
af53aea1b2 chore: update deps 2023-09-27 10:24:59 +08:00
xingyu
d00d31d739 Chore: 处理了Vben封装的Drawer,Modal组件的一些类型错误 2023-09-27 10:24:48 +08:00
xingyu
65800edb88 docs: wx qrcode 2023-09-26 10:34:43 +08:00
xingyu
f03fd74e52 Merge branch 'feature/dev' 2023-09-26 10:31:42 +08:00
xingyu
d15e75bb3f fix: button color 2023-09-26 10:02:52 +08:00
xingyu
a710ffc8c3 chore: setting 2023-09-26 10:02:35 +08:00
xingyu
30e3ad9c17 chore: update deps 2023-09-26 09:43:27 +08:00
xingyu
f4b012eaaf fix: button bg color 2023-09-26 09:39:51 +08:00
xingyu
e0f5b4ff15 fix: menu 2023-09-25 19:48:37 +08:00
xingyu
2e06c047ff chore: update deps 2023-09-25 17:32:28 +08:00
xingyu
1e3cb0c885 fix: eslint 2023-09-25 17:32:16 +08:00
xingyu
efe71b9d8e feat: use unocss 2023-09-25 16:32:19 +08:00
xingyu
2334fc31ab !36 use unocss
* chore: update deps
* fix: dark
* fix: use table
* feat: 解决Form组件slot必须传递component字段才显示的问题
* style(TableColumn): fix Column settings container is too wide
* fix: eslint
* chore: update deps
* refactor: use setup
* docs: doc
* refactor: use unocss
2023-09-24 12:34:42 +00:00
xingyu
6f671d0593 chore: update deps 2023-09-24 20:33:44 +08:00
xingyu
9c429afec6 fix: dark 2023-09-24 20:33:32 +08:00
xingyu
9dab524b45 fix: use table 2023-09-24 20:33:23 +08:00
xingyu
e304a37b37 feat: 解决Form组件slot必须传递component字段才显示的问题 2023-09-24 19:56:35 +08:00
xingyu
b8ac3dd136 style(TableColumn): fix Column settings container is too wide 2023-09-24 19:55:13 +08:00
xingyu
6b8325c4af !35 修复 ApiSelect 不触发 api 的问题
Merge pull request !35 from zsa/master
2023-09-24 03:30:59 +00:00
zsa
485ee8502f fix: ApiSelect 不触发 api, 主要原因:增加 alwaysLoad 属性后默认依赖 handleFetch() 方法,该方法绑定的名称错了应该是 dropdownVisibleChange 2023-09-23 20:04:46 +08:00
xingyu
96501ceb00 fix: eslint 2023-09-22 18:13:06 +08:00
xingyu
5b27f87ef3 chore: update deps 2023-09-22 18:08:20 +08:00
xingyu
b808fceb5f refactor: use setup 2023-09-22 18:07:20 +08:00
xingyu
0df27a39bc docs: doc 2023-09-21 15:32:54 +08:00
xingyu
ce6be02a15 refactor: use unocss 2023-09-21 15:30:12 +08:00
xingyu
ceec03d98d chore: eslint 2023-09-20 10:20:30 +08:00
xingyu
4726b7448f chore: update config 2023-09-19 10:56:19 +08:00
xingyu
66a1da3dd2 fix: eslint 2023-09-19 10:55:57 +08:00
xingyu
4730da70a1 docs: wx qrcode 2023-09-18 18:14:19 +08:00
xingyu
f712bbf370 fix(axios): get等方法配置ignoreCancelToken无效 2023-09-18 18:12:37 +08:00
xingyu
6034ffecf2 feat: basicTable 组件的类型问题 2023-09-18 18:09:42 +08:00
xingyu
afd2d946c5 feat: BasicTable 组件 HeaderCell 新增 customHeaderRender 2023-09-18 17:57:38 +08:00
xingyu
4fbe0d686b fix: eslint 2023-09-18 17:54:51 +08:00
xingyu
3f46f3b05e chore: update deps 2023-09-18 17:54:30 +08:00
xingyu
cc00221b05 fix: dark style 2023-09-13 15:03:32 +08:00
xingyu
da1e58b9c8 chore: update deps 2023-09-13 14:53:09 +08:00
xingyu
15e02170b0 fix: sso 2023-09-13 14:52:24 +08:00
xingyu
f294327db8 feat: member detail 2023-09-13 14:49:58 +08:00
xingyu
f2ea548f26 feat: i18n 2023-09-13 12:25:35 +08:00
xingyu
731bc2ab0f fix: eslint 2023-09-13 12:12:46 +08:00
xingyu
c07aa6ff3d docs: vue-i18n 9.4.0 2023-09-13 12:11:15 +08:00
xingyu
ac2f96e42b chore: vue-i18n 9.4.0 2023-09-13 12:10:49 +08:00
xingyu
28b3e5f532 !34 修复列表搜索中,日期选择器选择时间后无法自动关闭
Merge pull request !34 from 奥翔/master
2023-09-13 04:09:43 +00:00
aoxiang78
21fd704ed3 fix:列表搜索中上期选择后会重新打开,导致界面闪动 2023-09-12 23:47:12 +08:00
xingyu
d816f18088 feat: add sticky 2023-09-11 17:54:40 +08:00
xingyu
3e9b724ea5 fix: use rootClassName 2023-09-11 17:53:28 +08:00
xingyu
cbbc4c0d5e fix: tree select 2023-09-11 15:09:59 +08:00
xingyu
bcc16e85ca feat: add alwaysLoad 2023-09-11 13:55:49 +08:00
xingyu
8e6f2de94b style: header style 2023-09-11 13:55:36 +08:00
xingyu
ee8db14788 fix: eslint 2023-09-11 12:52:01 +08:00
xingyu
20ee9f6fa5 merge master 2023-09-11 12:50:08 +08:00
xingyu
01d2cdc898 docs: wx qrcode 2023-09-11 12:48:52 +08:00
xingyu
8f38d59f0f docs: update antdv 4.0.3 2023-09-11 12:47:42 +08:00
xingyu
ac1872dbec chore: up antdv 4.0.3 2023-09-11 12:46:39 +08:00
xingyu
347906a5a3 !33 用户头像图片更换为图像组件
Merge pull request !33 from 奥翔/master
2023-09-11 02:07:15 +00:00
aoxiang78
1457397a56 feat:更换头像组件 2023-09-09 11:02:08 +08:00
xingyu
f55ca845af fix: app 2023-09-08 16:44:04 +08:00
xingyu
a5f3cfb4f9 feat: pay 2023-09-08 14:31:03 +08:00
xingyu
044be6bd11 feat: pay 2023-09-08 14:20:07 +08:00
xingyu
c382d63266 fix: unocss eslint 2023-09-06 16:59:22 +08:00
xingyu
5f158ae59d feat: add unocss config 2023-09-06 16:55:22 +08:00
xingyu
e1c4b5ad5a feat: add unocss/eslint-config 2023-09-06 16:48:54 +08:00
xingyu
091e78023b perf: verify 2023-09-06 14:29:54 +08:00
xingyu
0c360eadd2 chore: version 2023-09-06 14:14:41 +08:00
xingyu
35c2ffd03e feat: member 2023-09-06 14:02:06 +08:00
xingyu
133fd07e98 chore: update deps 2023-09-06 14:01:50 +08:00
xingyu
b73660f094 chore: update deps 2023-09-06 11:04:57 +08:00
xingyu
42cb505fb5 feat: add docs 2023-09-06 11:04:41 +08:00
xingyu
6ff0cf633c chore: extensions 2023-09-06 10:47:44 +08:00
xingyu
45fbebdfd9 docs: add doc 2023-09-05 15:47:52 +08:00
xingyu
a81d453967 chore: vscode setting 2023-09-04 18:39:42 +08:00
xingyu
28e1859a7b chore: vscode setting 2023-09-04 17:31:02 +08:00
xingyu
7cd2d86553 chore: v1.8.1 2023-09-04 14:29:22 +08:00
xingyu
8030b54795 feat(Form): 为fieldMapToTime的映射类型增加时间戳转换 2023-09-04 14:27:17 +08:00
xingyu
f1bc5e738a perf: 为createAsyncComponent函数增加类型推导 2023-09-04 14:26:17 +08:00
xingyu
c4425a8286 fix: eslint 2023-09-04 14:18:23 +08:00
xingyu
85fbbc0c10 fix: stylelint 2023-09-01 20:13:48 +08:00
xingyu
8c3efaae21 fix: type 2023-09-01 17:39:34 +08:00
xingyu
2694c179d2 fix: initEvent deprecated 2023-09-01 17:22:19 +08:00
xingyu
9be5341465 docs: up unocss 2023-09-01 17:10:50 +08:00
xingyu
a82af41fe9 fix: button warning 2023-09-01 17:02:52 +08:00
xingyu
a6c5fcf497 chore: up unocss 2023-09-01 16:24:49 +08:00
xingyu
b2e2afa7e5 fix: package 2023-08-31 15:47:57 +08:00
xingyu
764e8b71c4 fix: smslog 2023-08-31 15:46:12 +08:00
xingyu
9ae7b1926b fix: type 2023-08-31 15:25:01 +08:00
xingyu
9eb91429be chore: fix lint-staged 2023-08-31 15:24:43 +08:00
xingyu
c4f65af100 style: modal style 2023-08-31 15:18:34 +08:00
xingyu
1af9f68118 perf: add modal height 2023-08-31 14:59:20 +08:00
xingyu
c59a005fff docs: update antdv 4.0.2 2023-08-31 14:53:34 +08:00
xingyu
33db2224ed chore: up antdv 4.0.2 2023-08-31 14:52:56 +08:00
xingyu
cc1490a97c fix: type 2023-08-31 14:37:47 +08:00
xingyu
ebc61a7ff3 chore: vscode setting 2023-08-28 17:24:02 +08:00
xingyu
f4ca72a7a2 perf: formdesign 2023-08-28 17:23:51 +08:00
xingyu
45a4ac80d9 fix: mix sider 2023-08-28 12:11:51 +08:00
xingyu
e6e5f54f79 docs: wx code 2023-08-28 12:08:45 +08:00
xingyu
148f3fe1d2 docs: update deps 2023-08-28 12:08:29 +08:00
xingyu
41018b360d chore: update deps 2023-08-28 12:05:26 +08:00
xingyu
cc4963f2ec style: menu 2023-08-23 19:20:03 +08:00
xingyu
bda764a7ff chore: eslint 2023-08-23 15:19:09 +08:00
xingyu
65e7aeea48 feat: bpm views 2023-08-23 15:06:02 +08:00
xingyu
3ad5511aa8 feat: bpm views 2023-08-23 14:14:39 +08:00
xingyu
3622c099e9 fix: button antdv 4.0 2023-08-23 11:38:06 +08:00
xingyu
69d3ef6506 feat: add hlep button 2023-08-23 10:12:29 +08:00
xingyu
fd3221f845 style: tabs style 2023-08-23 10:12:14 +08:00
xingyu
77aa03b31c fix: pay app 2023-08-22 19:20:43 +08:00
xingyu
f1f00becbe docs: antdv 4.0.1 2023-08-22 19:01:39 +08:00
xingyu
5f55465302 perf: antdv 4.0.1 2023-08-22 19:01:14 +08:00
xingyu
6ffb0b520f chore: update antdv 4.0.1 2023-08-22 19:00:52 +08:00
xingyu
17a6833c64 fix: record 2023-08-22 18:03:39 +08:00
xingyu
e3273e2218 feat: add MemberTag 2023-08-22 18:02:39 +08:00
xingyu
cb8602535e feat: add member user 2023-08-22 17:46:05 +08:00
xingyu
8f4405739e feat: add SignInConfig 2023-08-22 16:31:50 +08:00
xingyu
4b78fade15 feat: add SignInRecord 2023-08-22 16:26:02 +08:00
xingyu
2176878406 feat: add PointRecord 2023-08-22 16:03:11 +08:00
xingyu
107bf24437 feat: add member point config 2023-08-22 15:53:02 +08:00
xingyu
f1cbfeca1d feat: notice schema 2023-08-22 15:52:50 +08:00
xingyu
8e16d14682 feat: form config 2023-08-22 15:52:33 +08:00
xingyu
015f2d5d85 feat: member 2023-08-22 15:31:47 +08:00
xingyu
bcf4db28e4 feat: mp 2023-08-22 15:31:37 +08:00
xingyu
e867d9a81b feat: pay refund 2023-08-22 15:11:25 +08:00
xingyu
0a797760a0 feat: pay order 2023-08-22 11:47:37 +08:00
xingyu
26dbe8ca94 feat: pay notify 2023-08-22 11:11:40 +08:00
xingyu
7315c094e8 docs: update deps 2023-08-22 10:24:16 +08:00
xingyu
4ad9682478 chore: update deps 2023-08-22 10:24:03 +08:00
xingyu
448ff30446 docs: up wxcode 2023-08-18 19:32:23 +08:00
xingyu
379627790c docs: update deps 2023-08-18 19:30:57 +08:00
xingyu
e00538b2dd Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vben 2023-08-18 19:28:50 +08:00
xingyu
e9a9cd9008 fix: modal close 2023-08-18 19:28:41 +08:00
xingyu
00f6f26a91 fix: bugs 2023-08-18 19:26:09 +08:00
xingyu
27b3f73471 fix: login 2023-08-18 19:25:54 +08:00
xingyu
2e5981f1dd style: modal style 2023-08-18 19:22:00 +08:00
xingyu
a74d1bca03 fix: upload 2023-08-18 19:20:47 +08:00
xingyu
9776f16942 chore: update deps 2023-08-18 19:20:29 +08:00
xingyu
4e30ff7624 fix: icon 2023-08-18 19:18:54 +08:00
xingyu
6dca0c33f0 fix: url error 2023-08-18 19:16:59 +08:00
xingyu
96faa0c6f1 !32 定时任务开启/关闭报错
Merge pull request !32 from lemoncc/cron_job
2023-08-15 09:58:14 +00:00
xingyu
067a3b9d87 !31 部门新建时,显示顺序名称字段错误
Merge pull request !31 from jiaohongtao/master
2023-08-14 11:40:37 +00:00
lemoncc
7936f7a3a3 fix: 定时任务开启/关闭报错 2023-08-14 19:36:09 +08:00
jiaohongtao
373967063b fix: 修改歧义字段
Signed-off-by: jiaohongtao <jiaohongtaovip@163.com>
2023-08-14 05:59:41 +00:00
xingyu
d38413c1e4 fix: bugs 2023-08-12 20:19:08 +08:00
xingyu
e2b07b92e0 docs: wx code 2023-08-12 19:46:41 +08:00
xingyu
254e57e516 fix: lock page 2023-08-12 19:42:23 +08:00
xingyu
aa7a926344 fix: infra server 2023-08-12 19:31:26 +08:00
xingyu
9eba779b9d style: redis style 2023-08-12 18:57:02 +08:00
xingyu
f4cd4fbb52 perf: new redis view 2023-08-12 18:54:22 +08:00
xingyu
4ee3977f80 perf: BorderRadius 6px 2023-08-12 18:23:53 +08:00
xingyu
2396fb4669 perf: notify test 2023-08-12 17:32:02 +08:00
xingyu
5c92ec8303 perf: sms test 2023-08-12 17:19:02 +08:00
xingyu
54e93835d6 fix: eslint 2023-08-12 17:05:00 +08:00
xingyu
db7b7cd047 fix: comp size 2023-08-12 17:04:48 +08:00
xingyu
7d0bcf6a48 fix: eslint 2023-08-12 16:45:52 +08:00
xingyu
e8c9af962f fix: footer text 2023-08-11 21:03:25 +08:00
xingyu
b5f17955df fix: emit names 2023-08-11 21:03:12 +08:00
xingyu
77739a6259 fix: type 2023-08-11 21:02:39 +08:00
xingyu
608c1498eb chore: vscode setting 2023-08-11 21:01:56 +08:00
xingyu
bc4b337e0f fix: cardlist 2023-08-11 21:01:41 +08:00
xingyu
d024950dda fix: toRefs 2023-08-11 20:18:23 +08:00
xingyu
2c9f11bce3 feat: 优化ApiTreeSelect参数,可自定义value等 2023-08-11 20:11:22 +08:00
xingyu
9c142656f1 style: modal style 2023-08-11 20:05:52 +08:00
xingyu
5486011c09 chore: update deps 2023-08-11 20:05:41 +08:00
xingyu
ee56231f02 perf: useRefs函数接收泛型类型 2023-08-11 20:05:24 +08:00
xingyu
7aeba3367d perf: remove watermark use antdv 2023-08-09 20:03:55 +08:00
xingyu
4daf15f26b perf: remove qrcode use antdv 2023-08-09 20:00:52 +08:00
xingyu
391d3df111 perf: border 8px 2023-08-09 19:50:20 +08:00
xingyu
645bcf968e fix: profile 2023-08-09 19:46:41 +08:00
xingyu
cc4a901bce chore: update deps 2023-08-09 19:28:40 +08:00
xingyu
26f07e4083 chore: update deps 2023-08-09 10:21:21 +08:00
xingyu
df7b4a4b5f style: modal style 2023-08-09 10:21:03 +08:00
xingyu
3d09e63409 !29 style
Merge pull request !29 from xingyu/feat/v4.0
2023-08-06 16:25:45 +00:00
xingyu
dcc33d37bc style: menu style 2023-08-07 00:25:11 +08:00
xingyu
8347f97a2a style: fix style 2023-08-07 00:10:29 +08:00
xingyu
fafb4028c5 chore: update deps 2023-08-06 16:23:23 +08:00
xingyu
f0186562f9 feat 2023-08-06 16:23:12 +08:00
xingyu
6f6b4fc6df !28 antdv 4.0 test
Merge pull request !28 from xingyu/feat/v4.0
2023-08-06 05:11:01 +00:00
xingyu
1a9052785f style: dark bg color 2023-08-06 13:09:40 +08:00
xingyu
5fffb3591d fix: theme 2023-08-06 13:07:26 +08:00
xingyu
b505773475 docs: wxcode 2023-08-06 13:02:10 +08:00
xingyu
db04d3a8b9 style: style 2023-08-06 10:24:46 +08:00
xingyu
0078559e4b feat: useWindowSizeFn 2023-08-04 20:21:35 +08:00
xingyu
bfbc45abf8 feat: Form 自定义组件渲染 新增 opts: {disabled} 用于自定义渲染判断 2023-08-04 20:13:29 +08:00
xingyu
45da35a1cd fix(Dropdown): still pop when disabled is true 2023-08-04 20:07:04 +08:00
xingyu
1e34183e7a fix: 修复BasicTable组件开启可编辑行卡顿/卡死问题 2023-08-04 20:06:00 +08:00
xingyu
9f96e99ad7 feat: 增加CropperAvatar组件图片上传大小限制默认最大5M 2023-08-04 20:03:39 +08:00
xingyu
14cd061671 fix: tree style 2023-08-04 20:00:28 +08:00
xingyu
14aef34e44 fix: modal close css 2023-08-04 19:46:35 +08:00
xingyu
76d5a66586 fix: modal close css 2023-08-04 19:41:16 +08:00
xingyu
fd06e829c1 feat: visible to open 2023-08-04 19:12:01 +08:00
xingyu
78245e1e4e docs: up wxcode 2023-08-04 18:33:20 +08:00
xingyu
0db723a371 docs: up deps 2023-08-04 18:33:10 +08:00
xingyu
dee6036131 chore: update deps 2023-08-04 18:32:37 +08:00
xingyu
bc61e8c86f wip: antdv 4.0 2023-07-30 11:40:29 +08:00
xingyu
320c6ee043 wip: antdv 4.0 2023-07-30 10:06:13 +08:00
xingyu
0b4ab70603 chore: vite config 2023-07-29 20:24:14 +08:00
xingyu
9e03433b85 feat: eslint 2023-07-29 20:20:40 +08:00
xingyu
4fb4cb9e82 feat: antdv4.0 init 2023-07-29 18:46:43 +08:00
xingyu
35f1298ee6 chore: use unocss 2023-07-29 16:40:09 +08:00
YunaiV
05979c7f14 部署最新演示环境 2023-07-29 15:52:27 +08:00
xingyu
28ae5f793e feat: 登录时,直接从用户信息中,获取菜单。目的:加快首页的加载速度 2023-07-29 12:40:42 +08:00
xingyu
b885e078d8 chore: v1.8.0 2023-07-27 09:43:25 +08:00
xingyu
e35427e999 docs: update deps 2023-07-27 09:37:36 +08:00
xingyu
65d52b0516 chore: update deps 2023-07-27 09:37:25 +08:00
xingyu
5ef73110ba fix: config 2023-07-27 09:37:10 +08:00
xingyu
29a8b4a821 fix: from bug 2023-07-26 14:16:37 +08:00
xingyu
68b22ef3fa fix: build error 2023-07-24 12:57:10 +08:00
xingyu
430cdc4ec1 fix: eslint 2023-07-24 12:22:11 +08:00
xingyu
3fc0933aa4 docs: update deps 2023-07-24 11:43:54 +08:00
xingyu
faa483bc8d chore: update deps 2023-07-24 11:42:27 +08:00
xingyu
3b97e48da1 docs: wx code 2023-07-24 11:25:38 +08:00
xingyu
055d76407c !27 1.修复系统管理->角色管理->菜单权限。赋值菜单权限时,选择层级关联后,再选择菜单进行保存时值保存了一个“[1]" 2.修复暗黑模式样式问题
Merge pull request !27 from hetang/master
2023-07-05 06:44:59 +00:00
xxqc
5a25a6d562 fix: 修复暗黑模式,样式问题 2023-07-05 14:27:19 +08:00
xxqc
25593cc249 fix: 修复赋值菜单权限时,选保存了一个[1] 2023-07-05 13:48:03 +08:00
xingyu
684ab06102 fix: Duplicated key 2023-07-04 16:44:55 +08:00
xingyu
ef14b966f7 refactor: use function 2023-07-04 16:43:58 +08:00
xingyu
b6ca2ab857 docs: wx qrcode 2023-07-04 16:23:18 +08:00
xingyu
b2cec41874 docs: up deps 2023-07-04 16:20:26 +08:00
xingyu
f464869bd3 chore: up deps 2023-07-04 16:20:09 +08:00
xingyu
dce410eede !25 refactor: 重构菜单选择, 支持联动选择
Merge pull request !25 from 二次元虎哥/master
2023-07-02 09:43:30 +00:00
dap1
73ef2b8bea refactor: 菜单支持联动选择 2023-07-02 15:53:24 +08:00
xingyu
0ce3729d0c !24 fix: 打包后夜间模式样式问题
Merge pull request !24 from 二次元虎哥/master
2023-07-01 03:01:35 +00:00
dap1
2f2921759d fix: 打包后夜间模式样式问题 2023-06-30 22:50:23 +08:00
dap1
e8bc53f6cc fix: DictTag造成打包后页面卡死 2023-06-30 22:49:41 +08:00
xingyu
f0aeee6d27 docs: wx 2023-06-25 15:29:13 +08:00
xingyu
67506281f9 docs: update deps 2023-06-25 15:28:20 +08:00
xingyu
41c2f83604 chore: update deps 2023-06-25 15:26:35 +08:00
xingyu
f9b7c2e41e fix: 公众号粉丝同步api配置错误 2023-06-20 17:04:33 +08:00
xingyu
fff07a0cbb feat: 添加图片上传示例 2023-06-19 17:47:14 +08:00
xingyu
95bb3a2d28 fix: url router 2023-06-19 17:20:49 +08:00
xingyu
2e72f5b4ac fix: url router 2023-06-19 17:19:39 +08:00
xingyu
cc4b3e4f00 revert: useGo 2023-06-19 17:19:07 +08:00
xingyu
3a504d441a fix: useGo use isurl 2023-06-19 15:20:00 +08:00
xingyu
6a2e9e75c6 chore: update deps 2023-06-19 11:16:03 +08:00
xingyu
e960ac6419 fix: deepMerge 2023-06-19 11:14:38 +08:00
xingyu
477a658645 fix: 修复边栏无法打开问题,deepMerge函数有问题未修复 2023-06-17 18:57:32 +08:00
xingyu
887296c19a fix: 可编辑单元格editCellTable,当值为空时无法进行编辑 2023-06-17 18:55:18 +08:00
xingyu
924ce4c955 docs: wx code 2023-06-17 18:53:47 +08:00
xingyu
9d5b147c50 chore: update deps 2023-06-17 18:53:23 +08:00
xingyu
0732077adf fix: url router 2023-06-14 10:37:13 +08:00
xingyu
49aa7f645c !20 调整了useGo方法
Merge pull request !20 from 紫星/master
2023-06-14 02:18:53 +00:00
xingyu
7fc5b99ae7 Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vben 2023-06-14 10:11:27 +08:00
xingyu
25fa7e21ae !23 feat: 发送邮件日志的查看功能
Merge pull request !23 from 二次元虎哥/master
2023-06-14 02:02:58 +00:00
dap1
2ac7af9fc8 feat: 发送邮件日志的查看 2023-06-13 20:25:20 +08:00
xingyu
5e728080c3 feat: 精简router配置 2023-06-13 15:35:40 +08:00
xingyu
e0d26bc9ba docs: 开发进度 2023-06-13 15:08:23 +08:00
xingyu
c9cedbf7a2 Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vben 2023-06-13 15:04:27 +08:00
xingyu
50cb4d8135 chore: update deps 2023-06-13 15:00:57 +08:00
dap1
374d65ec2a fix: 短信管理-短信日志-短信渠道下拉框没有内容 2023-06-12 11:49:32 +08:00
xingyu
447f878212 !22 feat: 操作日志的详情查看
Merge pull request !22 from 二次元虎哥/master
2023-06-11 11:25:39 +00:00
dap1
f5dc15f2bb fix: 操作日志关闭 2023-06-10 20:11:58 +08:00
dap1
ebadd364ca fix: 请求参数漏掉了 2023-06-10 20:07:57 +08:00
dap1
dae144ccf9 feat: 一些日志的详情查看 2023-06-10 20:03:00 +08:00
dap1
02d0c92e89 feat: 字典标签修改支持预览 2023-06-10 13:47:57 +08:00
dap1
838592253a feat: 操作日期详情查看 2023-06-10 13:04:32 +08:00
xingyu
4ef993990c fix(deepMerge): deepMerge 2023-06-10 12:18:26 +08:00
xingyu
08d7738f68 fix(deepMerge): the default merge strategy 2023-06-10 12:17:22 +08:00
xingyu
36ba923c20 fix: 关闭其它页签需要使用fullPath来判断 2023-06-10 12:14:55 +08:00
LAPTOP-CNV4CMCJ\cheng
45604f5703 feat: 调整了useGo方法,让菜单可以跳转到外链接 2023-06-09 17:55:56 +08:00
933 changed files with 30393 additions and 26291 deletions

View File

@@ -1,74 +0,0 @@
module.exports = {
root: true,
env: {
browser: true,
node: true,
es6: true
},
parser: 'vue-eslint-parser',
plugins: ['vue'],
parserOptions: {
parser: '@typescript-eslint/parser',
ecmaVersion: 2020,
sourceType: 'module',
jsxPragma: 'React',
ecmaFeatures: {
jsx: true
}
},
extends: ['plugin:vue/vue3-recommended', 'prettier', 'plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'],
rules: {
'max-len': ['error', { code: 140, tabWidth: 2, ignoreComments: true }],
'vue/script-setup-uses-vars': 'error',
'@typescript-eslint/ban-ts-ignore': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/no-empty-function': 'off',
'vue/custom-event-name-casing': 'off',
'no-use-before-define': 'off',
'@typescript-eslint/no-use-before-define': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/ban-types': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{
argsIgnorePattern: '^_',
varsIgnorePattern: '^_'
}
],
'no-unused-vars': [
'error',
{
argsIgnorePattern: '^_',
varsIgnorePattern: '^_'
}
],
'space-before-function-paren': 'off',
'vue/attributes-order': 'off',
'vue/one-component-per-file': 'off',
'vue/html-closing-bracket-newline': 'off',
'vue/max-attributes-per-line': 'off',
'vue/multiline-html-element-content-newline': 'off',
'vue/singleline-html-element-content-newline': 'off',
'vue/attribute-hyphenation': 'off',
'vue/require-default-prop': 'off',
'vue/require-explicit-emits': 'off',
'vue/html-self-closing': [
'error',
{
html: {
void: 'always',
normal: 'never',
component: 'always'
},
svg: 'always',
math: 'always'
}
],
'vue/multi-word-component-names': 'off'
}
}

View File

@@ -0,0 +1,54 @@
name: Bug 反馈
description: 当你在代码中发现了一个 Bug导致应用崩溃或抛出异常或者有一个组件存在问题或者某些地方看起来不对劲。
title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
感谢对项目的支持与关注。在提出问题之前,请确保你已查看相关开发或使用文档:
- http://vben-doc.x-surge.com/
- type: checkboxes
attributes:
label: 这个问题是否已经存在?
options:
- label: 我已经搜索过现有的问题 (https://gitee.com/yudaocode/yudao-ui-admin-vben/issues)
required: true
- type: textarea
attributes:
label: 如何复现
description: 请详细告诉我们如何复现你遇到的问题,如涉及代码,可提供一个最小代码示例,并使用反引号```附上它
placeholder: |
1. ...
2. ...
3. ...
validations:
required: true
- type: textarea
attributes:
label: 预期结果
description: 请告诉我们你预期会发生什么。
validations:
required: true
- type: textarea
attributes:
label: 实际结果
description: 请告诉我们实际发生了什么。
validations:
required: true
- type: textarea
attributes:
label: 截图或视频
description: 如果可以的话,上传任何关于 bug 的截图。
value: |
[在这里上传图片]
- type: dropdown
id: version
attributes:
label: 版本
description: 你当前正在使用我们软件的哪个版本/分支?
options:
- master (默认)
- dev (开发分支)
validations:
required: true

View File

@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: 项目开发文档
url: http://vben-doc.x-surge.com/
about: 提供项目启动、开发的相关文档

View File

@@ -0,0 +1,43 @@
name: 功能建议
description: 对本项目提出一个功能建议
title: "[功能建议]: "
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
感谢提出功能建议,我们将仔细考虑!
- type: textarea
id: related-problem
attributes:
label: 你的功能建议是否和某个问题相关?
description: 清晰并简洁地描述问题是什么,例如,当我...时,我总是感到困扰。
validations:
required: false
- type: textarea
id: desired-solution
attributes:
label: 你希望看到什么解决方案?
description: 清晰并简洁地描述你希望发生的事情。
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: 你考虑过哪些替代方案?
description: 清晰并简洁地描述你考虑过的任何替代解决方案或功能。
validations:
required: false
- type: textarea
id: additional-context
attributes:
label: 你有其他上下文或截图吗?
description: 在此处添加有关功能请求的任何其他上下文或截图。
validations:
required: false
- type: checkboxes
attributes:
label: 意向参与贡献
options:
- label: 我有意向参与具体功能的开发实现并将代码贡献回到上游社区
required: false

View File

@@ -1,8 +0,0 @@
// .lintstagedrc.js
module.exports = {
'*.js': ['prettier --config prettier.config.js --write', 'eslint --fix --ext .js'],
'*.ts': ['prettier --config prettier.config.js --write', 'eslint --fix --ext .ts'],
'*.vue': ['prettier --config prettier.config.js --write', 'eslint --fix --ext .vue'],
'*.tsx': ['prettier --config prettier.config.js --write', 'eslint --fix --ext .tsx'],
'*.json': 'prettier --config prettier.config.js --write'
}

View File

@@ -1,19 +1,21 @@
{
"recommendations": [
"christian-kohler.path-intellisense",
"vue.vscode-typescript-vue-plugin",
"vscode-icons-team.vscode-icons",
"davidanson.vscode-markdownlint",
"stylelint.vscode-stylelint",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"usernamehw.errorlens",
"mrmlnc.vscode-less",
"lokalise.i18n-ally",
"redhat.vscode-yaml",
"heybourn.headwind",
"csstools.postcss",
"mikestead.dotenv",
"eamodio.gitlens",
"antfu.iconify",
"antfu.unocss",
"Vue.volar"
]
}

134
.vscode/settings.json vendored
View File

@@ -1,7 +1,5 @@
{
"typescript.tsdk": "./node_modules/typescript/lib",
"volar.tsPlugin": true,
"volar.tsPluginStatus": false,
"npm.packageManager": "pnpm",
"editor.tabSize": 2,
"prettier.printWidth": 140, // 超过最大值换行
@@ -21,9 +19,11 @@
"**/.idea": true,
"**/.vscode": false,
"**/yarn.lock": true,
"pnpm-lock.yaml": true,
"**/tmp": true,
"out": true,
"dist": true,
"public": true,
"node_modules": true,
"CHANGELOG.md": true,
"examples": true,
@@ -60,6 +60,36 @@
"path-intellisense.mappings": {
"@/": "${workspaceRoot}/src"
},
"eslint.experimental.useFlatConfig": true,
"prettier.enable": false,
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "never"
},
"eslint.rules.customizations": [
{ "rule": "style/*", "severity": "off" },
{ "rule": "*-indent", "severity": "off" },
{ "rule": "*-spacing", "severity": "off" },
{ "rule": "*-spaces", "severity": "off" },
{ "rule": "*-order", "severity": "off" },
{ "rule": "*-dangle", "severity": "off" },
{ "rule": "*-newline", "severity": "off" },
{ "rule": "*quotes", "severity": "off" },
{ "rule": "*semi", "severity": "off" }
],
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"vue",
"html",
"markdown",
"json",
"jsonc",
"yaml"
],
"[javascriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
@@ -67,13 +97,13 @@
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
},
"[typescriptreact]": {
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[less]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
@@ -84,12 +114,10 @@
"[markdown]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"[vue]": {
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.organizeImports": false,
"source.fixAll.stylelint": true
}
},
@@ -98,64 +126,52 @@
"i18n-ally.sortKeys": true,
"i18n-ally.namespace": true,
"i18n-ally.pathMatcher": "{locale}/{namespaces}.{ext}",
"i18n-ally.enabledParsers": ["ts"],
"i18n-ally.enabledParsers": ["json"],
"i18n-ally.sourceLanguage": "en",
"i18n-ally.displayLanguage": "zh-CN",
"i18n-ally.enabledFrameworks": ["vue", "react"],
"cSpell.words": [
"vben",
"windicss",
"tailwind",
"browserslist",
"tailwindcss",
"esnext",
"antd",
"antdv",
"antfu",
"antv",
"tinymce",
"brotli",
"browserslist",
"Cascader",
"codemirror",
"commitlint",
"cropperjs",
"echarts",
"esnext",
"esno",
"iconify",
"Inited",
"INTLIFY",
"lintstagedrc",
"logicflow",
"nprogress",
"picocolors",
"pinia",
"pnpm",
"qrcode",
"sider",
"pinia",
"sider",
"nprogress",
"INTLIFY",
"stylelint",
"esno",
"vitejs",
"sortablejs",
"codemirror",
"iconify",
"commitlint",
"stylelint",
"svgs",
"tailwind",
"tailwindcss",
"tinymce",
"unocss",
"unref",
"vben",
"vditor",
"echarts",
"cropperjs",
"logicflow",
"videojs",
"vitejs",
"vuedraggable",
"vueuse",
"zxcvbn",
"lintstagedrc",
"brotli",
"sider",
"pnpm",
"antd"
],
"vetur.format.scriptInitialIndent": true,
"vetur.format.styleInitialIndent": true,
"vetur.validation.script": false,
"MicroPython.executeButton": [
{
"text": "▶",
"tooltip": "运行",
"alignment": "left",
"command": "extension.executeFile",
"priority": 3.5
}
],
"MicroPython.syncButton": [
{
"text": "$(sync)",
"tooltip": "同步",
"alignment": "left",
"command": "extension.execute",
"priority": 4
}
"xingyuv",
"yudao",
"zxcvbn"
],
// 控制相关文件嵌套展示
"explorer.fileNesting.enabled": true,
@@ -164,7 +180,11 @@
"*.ts": "$(capture).test.ts, $(capture).test.tsx",
"*.tsx": "$(capture).test.ts, $(capture).test.tsx",
"*.env": "$(capture).env.*",
"package.json": "pnpm-lock.yaml,yarn.lock,LICENSE,README*,CHANGELOG*,CNAME,.gitattributes,.gitignore,prettier.config.js,stylelint.config.js,commitlint.config.js,.stylelintignore,.prettierignore,.gitpod.yml,.eslintrc.js,.eslintignore"
"package.json": ".hintrc,pnpm-lock.yaml,yarn.lock,LICENSE,README*,CHANGELOG*,CNAME,.gitattributes,.gitignore,stylelint.config.js,eslint.config.js,commitlint.config.js,.stylelintignore,.prettierignore,.gitpod.yml,.eslintrc.js,.eslintignore"
},
"terminal.integrated.scrollback": 10000
"eslint.codeAction.showDocumentation": {
"enable": true
},
"terminal.integrated.scrollback": 10000,
"nuxt.isNuxtApp": false
}

View File

@@ -1,354 +0,0 @@
## [1.7.3](https://gitee.com/xingyuv/vue-vben-admin/compare/v1.0.0-bate...v1.7.3) (2023-06-08)
### Bug Fixes
* 打包循环依赖警告 ([6f3f3fd](https://gitee.com/xingyuv/vue-vben-admin/commits/6f3f3fd35c2feb4420c39710a3e2a55eeae521dc))
* 定时器,时间格式化 ([2fa63d8](https://gitee.com/xingyuv/vue-vben-admin/commits/2fa63d8f2c2a534aac30a12f624e2fe0afb1eb16))
* 解决项目配置/界面功能/自动锁屏&菜单展开宽度样式变形问题 ([8027dc3](https://gitee.com/xingyuv/vue-vben-admin/commits/8027dc38e464a268974af8ba4df82446be14f9c5))
* 解决重定向路径 params 参数丢失问题 ([7311bdb](https://gitee.com/xingyuv/vue-vben-admin/commits/7311bdb576ff49b52fcb0381eb700144f2ad5af7))
* 渠道编码直接卡死,界面奔溃 ([113520a](https://gitee.com/xingyuv/vue-vben-admin/commits/113520a3bd82396307b9e9572312c825ff316446))
* 授权类型bugs ([f00fec9](https://gitee.com/xingyuv/vue-vben-admin/commits/f00fec92878406c0929eacd1df2dd49b92974696))
* 修复操作页签后 打开页面需要使用fullPath否则可能会导致参数丢失引起数据加载异常 ([764b0f0](https://gitee.com/xingyuv/vue-vben-admin/commits/764b0f0f6c990e6f51f657775d1db3965842d14c))
* 修复未传参(params)的时redo失效的问题 ([da11f52](https://gitee.com/xingyuv/vue-vben-admin/commits/da11f52e4d90be07e1e4ffc6e5b19e6cbe45fe01))
* 由于 多路径字段获取值处理 造成的 set value值为0||''时不成功的情况 ([ce1236d](https://gitee.com/xingyuv/vue-vben-admin/commits/ce1236d141efcb0086c793850592b0c679a184ae))
* 邮件模板-测试 模板内容 readonly ([322d5ad](https://gitee.com/xingyuv/vue-vben-admin/commits/322d5ad8f9df6969c46895864ce70da5cf85e94a))
* 邮件模版校验 ([76e3105](https://gitee.com/xingyuv/vue-vben-admin/commits/76e3105184bd5df623ba1e9a4d5dc51a50278032))
* axios responseInterceptorsCatch ([34106d1](https://gitee.com/xingyuv/vue-vben-admin/commits/34106d1cfe677e38c66ed76df2b0c677fc932ff1))
* Cannot access 'pagewrapper' before init ([7464ac0](https://gitee.com/xingyuv/vue-vben-admin/commits/7464ac03d73abecc3a31d7777e8be8332a16c781))
* config ([f1cdf27](https://gitee.com/xingyuv/vue-vben-admin/commits/f1cdf27fe88e29e9da27b57af09c71646addd069))
* crontab number input ([5733a2f](https://gitee.com/xingyuv/vue-vben-admin/commits/5733a2f2c9045e74151ee0b886523c101f97cf0c))
* **deepMerge:** fix deepMerge ([23cf34f](https://gitee.com/xingyuv/vue-vben-admin/commits/23cf34f78ecc14a05e0b46548c03d1bb4b9c9a91))
* dict ([855c705](https://gitee.com/xingyuv/vue-vben-admin/commits/855c705f32f00232c0e5e7d6b6de8d7642474e0e))
* dict ([da0eb81](https://gitee.com/xingyuv/vue-vben-admin/commits/da0eb81d3f1e57d30975364ed04c18f9e4a1a3ed))
* dict ([7c8aeb8](https://gitee.com/xingyuv/vue-vben-admin/commits/7c8aeb8998b21650dcc7e2c5af65e2bcc796b3ac))
* dict ([1bccba8](https://gitee.com/xingyuv/vue-vben-admin/commits/1bccba8d54ea665eef5e9449ff3ea85ba850d9b5))
* dict tag ([c4d3b3e](https://gitee.com/xingyuv/vue-vben-admin/commits/c4d3b3efff848abd8ef0c4f33d7a627d15f704f9))
* eslint ([2fe7395](https://gitee.com/xingyuv/vue-vben-admin/commits/2fe7395adfca2d185a45d64b41961a32f6065070))
* file config action show ([36a14be](https://gitee.com/xingyuv/vue-vben-admin/commits/36a14be42b0663818b0b8b2cf5b0ffc90cf95500))
* form setting redoHeight ([bbce129](https://gitee.com/xingyuv/vue-vben-admin/commits/bbce129833b2164cfbceb1284f23c32710bda5ae))
* memberUserIds render ([664e25c](https://gitee.com/xingyuv/vue-vben-admin/commits/664e25ce66f344ca92bc95e49d1c01204c7d966e))
* mitt ([ac4180d](https://gitee.com/xingyuv/vue-vben-admin/commits/ac4180d2ce9083acf95c726e1b7ce16e82101e59))
* pay action ([932bae5](https://gitee.com/xingyuv/vue-vben-admin/commits/932bae5231e317a04a465f4a0e514fa03475f4c0))
* renderImg ([0413be5](https://gitee.com/xingyuv/vue-vben-admin/commits/0413be595dbc3e94f6228a38092e2a15f4a7fd08))
* renderImg ([e8f1528](https://gitee.com/xingyuv/vue-vben-admin/commits/e8f1528a808f7937fe5128aed1e5deb21eac165b))
* SSL required ([4c59df6](https://gitee.com/xingyuv/vue-vben-admin/commits/4c59df63a61e387132bfcc528a2fae62667f80e3))
* sys area tree ([7d523a0](https://gitee.com/xingyuv/vue-vben-admin/commits/7d523a02fd9aebbd2572c9c851e0a402e1cdb1df))
* user group ([4754495](https://gitee.com/xingyuv/vue-vben-admin/commits/4754495f6addf28c1a215b2e0c9e055c6fb8f168))
* useTable ([f780285](https://gitee.com/xingyuv/vue-vben-admin/commits/f7802853646ba714e4d92d0de8edfb38f4149352))
* **view:** 修复登入页面点击其他登入方式后返回时视图异常的bug ([0657ea5](https://gitee.com/xingyuv/vue-vben-admin/commits/0657ea5f839977a55d824333bef98fdbca2dd107))
* warn ([75cd1a3](https://gitee.com/xingyuv/vue-vben-admin/commits/75cd1a3ec51c2393c958dfd7230a626010518034))
### Features
* 适配 vue 3.3 defineOptions ([73ad948](https://gitee.com/xingyuv/vue-vben-admin/commits/73ad9488700ee8741744dce3b0e9fc802e921e94))
* 收银台 ([7219895](https://gitee.com/xingyuv/vue-vben-admin/commits/7219895d9f3d705de64e8eb0d161a175bc71d831))
* 收银台 ([5ecc189](https://gitee.com/xingyuv/vue-vben-admin/commits/5ecc18901a8c4b92d02c3eee70c291098eefcd40))
* 收银台 ([aede08c](https://gitee.com/xingyuv/vue-vben-admin/commits/aede08cbbabd18ba0244f48ca6445f6221296065))
* 添加表格查询隐藏按钮 ([8f0c2fa](https://gitee.com/xingyuv/vue-vben-admin/commits/8f0c2fa811c01e88a154771212a7d89ac2c3ba8c))
* 完成邮件相关功能 ([3f1a3a0](https://gitee.com/xingyuv/vue-vben-admin/commits/3f1a3a0d5cdf00436fe7ded361ec54138dba9def))
* 站内信发送功能 ([5b7530e](https://gitee.com/xingyuv/vue-vben-admin/commits/5b7530ef74e75333aa9181e41c4ada6debba768f))
* 站内信详情查看 ([8b3b842](https://gitee.com/xingyuv/vue-vben-admin/commits/8b3b84265516862d1b672d96020fc82057c1f84c))
* add defaultValue ([c233dbc](https://gitee.com/xingyuv/vue-vben-admin/commits/c233dbcab3fe267ecb1da2454016aa16cc1c099e))
* add detail ([3e04dde](https://gitee.com/xingyuv/vue-vben-admin/commits/3e04dde0e2478c10ff698bc3c2e5206c27b04a74))
* add job detail ([0245ecd](https://gitee.com/xingyuv/vue-vben-admin/commits/0245ecdec92a5322c0b6ab2dae08a2ee949eed57))
* add parentFiled ([20dca10](https://gitee.com/xingyuv/vue-vben-admin/commits/20dca104bb0e02ae10bf06a1e6a3c309b8705a64))
* app channel config ([0851598](https://gitee.com/xingyuv/vue-vben-admin/commits/0851598643e90c7329b0884535936800b8d2074e))
* area style ([85ba687](https://gitee.com/xingyuv/vue-vben-admin/commits/85ba6875bb14650170ceac7f199251f84dd6c68a))
* bpm form init ([61ff811](https://gitee.com/xingyuv/vue-vben-admin/commits/61ff8119a6afba03c01d1e83bb23de904c2c5c5b))
* bpm my ([3f5d1ed](https://gitee.com/xingyuv/vue-vben-admin/commits/3f5d1ed1921a611d537cc53555e4fcc58b156be2))
* bpm task ([6e51ca7](https://gitee.com/xingyuv/vue-vben-admin/commits/6e51ca74b94b2f13cc12518c55c356f41ea8d215))
* bug fix ([44c9085](https://gitee.com/xingyuv/vue-vben-admin/commits/44c9085d2ea2beb7c47f56d64b3a2f657d92eedc))
* Channel ([08e041b](https://gitee.com/xingyuv/vue-vben-admin/commits/08e041b6ec37f75872b1b6e2d09f0da5d0be5cc8))
* codegen use code editor pre ([b6b9c8f](https://gitee.com/xingyuv/vue-vben-admin/commits/b6b9c8f56a271a4295a646eb778a568c3adcbf1c))
* cron ([81d2426](https://gitee.com/xingyuv/vue-vben-admin/commits/81d24264d5af9c6f0b00e82191e712c8877492ff))
* dashboard icon ([44deb06](https://gitee.com/xingyuv/vue-vben-admin/commits/44deb06aaa035c20e01bff9d996a29e672beda16))
* dataSourceConfigId ([f4e9d2f](https://gitee.com/xingyuv/vue-vben-admin/commits/f4e9d2f5e20e2d414e8a724e3b4c7862900caea5))
* file upload ([611da35](https://gitee.com/xingyuv/vue-vben-admin/commits/611da354a1ab071f636f992a4bdcae930e356f9b))
* header上的通知及个人站内信功能 ([0e44af8](https://gitee.com/xingyuv/vue-vben-admin/commits/0e44af89b9b47c5e3f955b9208ff2c2f1f0d24af))
* icon ([0401602](https://gitee.com/xingyuv/vue-vben-admin/commits/04016026614da8b7ae6f0c6afc1dbaca03c01b8f))
* job log ([5424d0b](https://gitee.com/xingyuv/vue-vben-admin/commits/5424d0b4430c89eeeb93ab83ff15f78ce0871f2d))
* model style ([479cbdd](https://gitee.com/xingyuv/vue-vben-admin/commits/479cbdd5d3d6acfbf00ad3051e248b54fd098e10))
* model table ([9638599](https://gitee.com/xingyuv/vue-vben-admin/commits/9638599a1ec2062cf5cb18a7c880e9d22c61ddb0))
* model table ([833443b](https://gitee.com/xingyuv/vue-vben-admin/commits/833443b813de22d2f488804d152513bad4996b9b))
* model upload ([44eb9a8](https://gitee.com/xingyuv/vue-vben-admin/commits/44eb9a84860bb2f841df7124429e80db9daf4c39))
* mp ([2d09a78](https://gitee.com/xingyuv/vue-vben-admin/commits/2d09a7850dbdce66a05eb54cfd5334602a02f0ed))
* parent to parentLabel ([cfd4ac8](https://gitee.com/xingyuv/vue-vben-admin/commits/cfd4ac840ec68180bbab17692f5b0a10643e7800))
* preview style ([99ac17a](https://gitee.com/xingyuv/vue-vben-admin/commits/99ac17a5065ec992b161a15eea6f5094bdaff1a5))
* remove console ([3548ba0](https://gitee.com/xingyuv/vue-vben-admin/commits/3548ba004c67af09ffc7197f79822e81bafcb952))
* Select defaultValue ([d8312d5](https://gitee.com/xingyuv/vue-vben-admin/commits/d8312d57c558770d2172a03489f354bfae1e46ac))
* send sms ([2b8e4c6](https://gitee.com/xingyuv/vue-vben-admin/commits/2b8e4c6de5dfbe6a8f82a81d9c1744e183ea19cb))
* show select all ([e405733](https://gitee.com/xingyuv/vue-vben-admin/commits/e405733429b9a5b5fac388cf8f707f056b5bdb64))
* sms login ([2d2db04](https://gitee.com/xingyuv/vue-vben-admin/commits/2d2db0418bdacc82bc01a832c61e43518b4668e9))
* sso init ([39732ad](https://gitee.com/xingyuv/vue-vben-admin/commits/39732ad3b20f3088491888d621c23b587a2c8afb))
* style ([08666c8](https://gitee.com/xingyuv/vue-vben-admin/commits/08666c841fa3b352661a29630b52bba65c383950))
* sync mitt ([69547bc](https://gitee.com/xingyuv/vue-vben-admin/commits/69547bcd6b421851c3746a5230d3da097a71d50f))
* tabs ([d1eb0db](https://gitee.com/xingyuv/vue-vben-admin/commits/d1eb0dbd13f5f2969fdf0cf31d4239e9898dda73))
* use ant design icon ([875bdf4](https://gitee.com/xingyuv/vue-vben-admin/commits/875bdf4c67a012d5ded45634ba8fb260069d8d98))
* user apitransfer ([a261242](https://gitee.com/xingyuv/vue-vben-admin/commits/a261242279194f8234c9d7e6d4011051f1358110))
* wx news init ([e9a7b47](https://gitee.com/xingyuv/vue-vben-admin/commits/e9a7b476aae1266875f70f3507b23b8fa126b993))
### Performance Improvements
* 优化modal弹窗样式 ([0b7ed77](https://gitee.com/xingyuv/vue-vben-admin/commits/0b7ed771aaddc7d5513f9724a89bfa0155f8c4fb))
* 优化tree getIcon方法类型定义 ([a8a973b](https://gitee.com/xingyuv/vue-vben-admin/commits/a8a973b12ca88f918dd26e790f71c443ee155c01))
* remove console ([35c8e13](https://gitee.com/xingyuv/vue-vben-admin/commits/35c8e137e0703de953b3a410bc7e93e750668966))
* remove console ([af28b6b](https://gitee.com/xingyuv/vue-vben-admin/commits/af28b6b4d8572e29ce10395ff50bcca934e9c913))
### Reverts
* modal ([0262eb7](https://gitee.com/xingyuv/vue-vben-admin/commits/0262eb7d1a4325b8044ffe1ceed30cbc04fd5978))
# [1.0.0-bate](https://gitee.com/xingyuv/vue-vben-admin/compare/58db52cea8dc3c5cb547f3234b8b9e05a175969e...v1.0.0-bate) (2023-05-08)
### Bug Fixes
* #I6R5EL ([4dc2492](https://gitee.com/xingyuv/vue-vben-admin/commits/4dc24923b330d1839da43db310d09844cd3c9a61)), closes [#I6R5](https://gitee.com/xingyuv/vue-vben-admin/issues/I6R5)
* 编辑和删除无法获取菜单id ([9a144c3](https://gitee.com/xingyuv/vue-vben-admin/commits/9a144c3e32593da1e8d6c2a1840cec2c4cdf9ca3))
* 登录成功再进行退出提示GET 不支持 #I6R4NQ ([4a73392](https://gitee.com/xingyuv/vue-vben-admin/commits/4a7339236b055a7f662b12a15e5ba8b9f1b19171)), closes [#I6R4](https://gitee.com/xingyuv/vue-vben-admin/issues/I6R4)
* 解决打包报内存溢出问题 ([3669f90](https://gitee.com/xingyuv/vue-vben-admin/commits/3669f906292b8ac8680e1b8a1e6f864faf9138a7))
* 临时解决系统菜单路由问题 ([7eaa5b8](https://gitee.com/xingyuv/vue-vben-admin/commits/7eaa5b8393afbe2a75a4d0a2431a3d1f16c55828))
* 路径错误 ([286cd99](https://gitee.com/xingyuv/vue-vben-admin/commits/286cd991d33b258180362faf000ccffe7d537343))
* 图标错位 ([58a7d60](https://gitee.com/xingyuv/vue-vben-admin/commits/58a7d60843cd66a3d131fe72f8b7c9173741f9cb))
* 外链 ([4807fa6](https://gitee.com/xingyuv/vue-vben-admin/commits/4807fa65efb1ced4de38238d59873f8ffa4ffc99))
* 新增部门没有主目录 #I6Y26M ([1022f9b](https://gitee.com/xingyuv/vue-vben-admin/commits/1022f9bc8660f27e40118cdafbfe76c5948d477d)), closes [#I6Y26](https://gitee.com/xingyuv/vue-vben-admin/issues/I6Y26)
* 新增菜单没有主目录 #I6Y1X2 ([4ff33d8](https://gitee.com/xingyuv/vue-vben-admin/commits/4ff33d87f50651e1701df6866b911618fc408347)), closes [#I6Y1X2](https://gitee.com/xingyuv/vue-vben-admin/issues/I6Y1X2)
* 修复水印重复叠加问题 ([733611e](https://gitee.com/xingyuv/vue-vben-admin/commits/733611e00b06c1b1a6b46d559f94d25b385b03df))
* 修复下拉字典每次点击触发一次 ([f3c8969](https://gitee.com/xingyuv/vue-vben-admin/commits/f3c89697193d7ff9e8767af3f455ff3f901ccc26))
* 修改数据权限或者菜单权限失败 #I6Y6L4 ([6f6f0ce](https://gitee.com/xingyuv/vue-vben-admin/commits/6f6f0cea1c7271250aa62da0a81ce71a02a1d4ef)), closes [#I6Y6L4](https://gitee.com/xingyuv/vue-vben-admin/issues/I6Y6L4)
* 修改用户显示判断 ([50f5fa1](https://gitee.com/xingyuv/vue-vben-admin/commits/50f5fa1612320580ab16ec952f215ae7256ca365))
* 重置项目配置,导致左侧菜单栏整体变成白色 ([89941c4](https://gitee.com/xingyuv/vue-vben-admin/commits/89941c44fbd420014e239be9e3b17c7e15610295))
* 字典标签样式颜色不显示 #I6Y5E6 ([fe8e0a2](https://gitee.com/xingyuv/vue-vben-admin/commits/fe8e0a25aedc0f7ff471c5ec11c19a8ef4507ba8)), closes [#I6Y5E6](https://gitee.com/xingyuv/vue-vben-admin/issues/I6Y5E6)
* account #I6R59O ([f919305](https://gitee.com/xingyuv/vue-vben-admin/commits/f919305e36f22b8d804c8b4abaaa0e05a74265e0)), closes [#I6R59](https://gitee.com/xingyuv/vue-vben-admin/issues/I6R59)
* api error ([1b1424b](https://gitee.com/xingyuv/vue-vben-admin/commits/1b1424b79a7c587d50d8cec6b78b05c246f36d16))
* **api:** 时间区间查询参数错误 ([cd2c8ca](https://gitee.com/xingyuv/vue-vben-admin/commits/cd2c8ca05492b193e2740c35581c335ee5609f0b)), closes [#I6](https://gitee.com/xingyuv/vue-vben-admin/issues/I6)
* **ApiSelect:** 支持x.x.x格式 ([fa1af5e](https://gitee.com/xingyuv/vue-vben-admin/commits/fa1af5e7c625d5d584f45b200f86484697294064))
* area error ([c83dc40](https://gitee.com/xingyuv/vue-vben-admin/commits/c83dc40ad3937d4cc31921c60c57e7c7583f614e))
* axios array error ([d323c81](https://gitee.com/xingyuv/vue-vben-admin/commits/d323c810ba2a42b67ac8c210e5760d6de87cc3b1))
* btn style ([dba710e](https://gitee.com/xingyuv/vue-vben-admin/commits/dba710e8c0dda77ff5d22fdcead4750caf2fdbc8))
* bugs ([8b10a6f](https://gitee.com/xingyuv/vue-vben-admin/commits/8b10a6f003d7e473a8c09963359434504cbedb46))
* build error ([0d6925f](https://gitee.com/xingyuv/vue-vben-admin/commits/0d6925fe66150cdcba6687d57cc26970415d2356))
* build error ([a69aefc](https://gitee.com/xingyuv/vue-vben-admin/commits/a69aefc5661d0f879b365e081f5776759fef514c))
* build style error ([1b571bd](https://gitee.com/xingyuv/vue-vben-admin/commits/1b571bd403d3bf247d9fdf5bc987f599b22e6daa))
* **build:** vite-html ([2f46691](https://gitee.com/xingyuv/vue-vben-admin/commits/2f466919bd5c01984c4570a4f8f7b1a35c39ead1))
* clientId ([0ed8e09](https://gitee.com/xingyuv/vue-vben-admin/commits/0ed8e09f2b203e718b1db0acc0a826eda49e4ba9))
* codegen #I6R4OB ([8ccc8bb](https://gitee.com/xingyuv/vue-vben-admin/commits/8ccc8bb22a3a3a993d4ea2d63ed31f8b7791c7bf)), closes [#I6R4](https://gitee.com/xingyuv/vue-vben-admin/issues/I6R4)
* codegen pre #I6R4O4 ([0c5e6e9](https://gitee.com/xingyuv/vue-vben-admin/commits/0c5e6e9e2ce36754ca964e77a36c3133e55b5183)), closes [#I6R4O4](https://gitee.com/xingyuv/vue-vben-admin/issues/I6R4O4)
* **component:** npm run build报错 ([36a757c](https://gitee.com/xingyuv/vue-vben-admin/commits/36a757c7208e9d6458962876127e5afc0b6a1157)), closes [#I6](https://gitee.com/xingyuv/vue-vben-admin/issues/I6)
* dark ([b6fcbc6](https://gitee.com/xingyuv/vue-vben-admin/commits/b6fcbc6e735cbfc12d8af7ed8533fc99c9b32829))
* debug ([c3510dc](https://gitee.com/xingyuv/vue-vben-admin/commits/c3510dcf9fc4a30f66b7991d992d8294a4c795bf))
* **deepMerge:** 修复递归合并操作, 合并数组未去重的bug ([a8a52e5](https://gitee.com/xingyuv/vue-vben-admin/commits/a8a52e5c07ac766b1f76a5929a6ff5f0318339df))
* dept ([6aaae1b](https://gitee.com/xingyuv/vue-vben-admin/commits/6aaae1b3cc80a7e19a2f9cce27561f2bdd17182a))
* dept leaderUserId #I6R4NH ([182c447](https://gitee.com/xingyuv/vue-vben-admin/commits/182c447ef83adf6ec182e2d8af221f3f536dd361)), closes [#I6R4](https://gitee.com/xingyuv/vue-vben-admin/issues/I6R4)
* **design:** dark ([86bee10](https://gitee.com/xingyuv/vue-vben-admin/commits/86bee106d924613fb4f7f28f44ef5e776721cebe)), closes [#I6](https://gitee.com/xingyuv/vue-vben-admin/issues/I6)
* dict ([f33e878](https://gitee.com/xingyuv/vue-vben-admin/commits/f33e8788f88b26f59a8486ce1b485a14a03c5d2e))
* dict ([f4bff0c](https://gitee.com/xingyuv/vue-vben-admin/commits/f4bff0c836f0a19d9ef7508fb411665a313ee3ed))
* dict bugs ([bbb3e7c](https://gitee.com/xingyuv/vue-vben-admin/commits/bbb3e7c3c5c89153aac5581d56f0eef007345e66))
* DictTag text为null时 无法进行toString() 导致系统崩溃 ([687547e](https://gitee.com/xingyuv/vue-vben-admin/commits/687547ef9adbc6a3dccf5aba4e3fba270fa6df9e))
* error ([bd26cf8](https://gitee.com/xingyuv/vue-vben-admin/commits/bd26cf87d0621638a8b6694f5139ab3562f7139c))
* file config ([57a1be1](https://gitee.com/xingyuv/vue-vben-admin/commits/57a1be1c1513229233fb7190f0beb761ca5b3061))
* gen table error ([4c9b046](https://gitee.com/xingyuv/vue-vben-admin/commits/4c9b0465b2ebfea1836bc5688290389ce1d24c40))
* **hooks:** 修改useEcharts getInstance无法获取 ([4c2b3ab](https://gitee.com/xingyuv/vue-vben-admin/commits/4c2b3abbacec8303d0f0e2ce3f35d8f5b2ee4038))
* InputNumber add defaultValue ([791976b](https://gitee.com/xingyuv/vue-vben-admin/commits/791976b88460504c0989990d8264ba605e398fb8))
* **layout:** bugs ([211cfe1](https://gitee.com/xingyuv/vue-vben-admin/commits/211cfe17986a78b64c8f94bfeb9603928b398919))
* login style ([693042d](https://gitee.com/xingyuv/vue-vben-admin/commits/693042d2b3fe0522bde7774c50132c1f33246878))
* menu tree ([07e7587](https://gitee.com/xingyuv/vue-vben-admin/commits/07e7587bf12248225375769ad33ea0abfbbc9219))
* menu tree check ([9b2fe7f](https://gitee.com/xingyuv/vue-vben-admin/commits/9b2fe7f3ac4072efb0f251769ba2efa08895b7c9))
* menuTree check ([7e9b6f9](https://gitee.com/xingyuv/vue-vben-admin/commits/7e9b6f933ebda029e9ed164ded5b602a2bcc061d))
* model name ([9116375](https://gitee.com/xingyuv/vue-vben-admin/commits/91163752f35d504ccc486ccb961ddc122037e245))
* render dict ([30065de](https://gitee.com/xingyuv/vue-vben-admin/commits/30065de5332db3f53839a68e1f9f8f5ece546c31))
* renderLink ([a76e515](https://gitee.com/xingyuv/vue-vben-admin/commits/a76e5158764fbcc8cdc53553bbfd747de1e10680))
* route ([8664269](https://gitee.com/xingyuv/vue-vben-admin/commits/86642691a3d3edf18617e0c540dd74f2519793b0))
* route ([c8ab143](https://gitee.com/xingyuv/vue-vben-admin/commits/c8ab143640abedff60c80e9d38deccfda88cba6c))
* route ([df32ffd](https://gitee.com/xingyuv/vue-vben-admin/commits/df32ffda541b2b01514ad1fdbf1998f40d366a16))
* router ([a05f79f](https://gitee.com/xingyuv/vue-vben-admin/commits/a05f79ff06bded791cf60146ff3e5d4b5ea63814))
* sms log ([9fbd372](https://gitee.com/xingyuv/vue-vben-admin/commits/9fbd37241a07a594f70e3790530ec64d813a6c1f))
* sms template ([85fb61a](https://gitee.com/xingyuv/vue-vben-admin/commits/85fb61a4fe6cfda32629eed7f82852b37194b483))
* substr deprecated ([a7f7a9e](https://gitee.com/xingyuv/vue-vben-admin/commits/a7f7a9e0b8cf0c4068802522d08913b2855a9c3f))
* sucess message ([611825b](https://gitee.com/xingyuv/vue-vben-admin/commits/611825b0f7341f4d08b945a9f8bba98ebf2d0b1a))
* TableAction width ([5adf84e](https://gitee.com/xingyuv/vue-vben-admin/commits/5adf84e2fa27ab7bd7656dea6599893c27122250))
* tenant #I6R4NN ([9d72985](https://gitee.com/xingyuv/vue-vben-admin/commits/9d7298598a9808794bea87efbd1ce4c89da54a9f)), closes [#I6R4](https://gitee.com/xingyuv/vue-vben-admin/issues/I6R4)
* tenant expireTime ([119c708](https://gitee.com/xingyuv/vue-vben-admin/commits/119c70835b253114e05b4026c99518de5be0e8c3))
* tenant expireTime ([e350159](https://gitee.com/xingyuv/vue-vben-admin/commits/e35015928d7982b1e8863317c89a8d4b9c1c6c4a))
* tenant package menu ([1d07574](https://gitee.com/xingyuv/vue-vben-admin/commits/1d07574df87214b8dc2d8565ed42d58fb159918b))
* tree select ([1dec183](https://gitee.com/xingyuv/vue-vben-admin/commits/1dec183d77d77e35f66981733082d16744126d75))
* tree select ([7c965a2](https://gitee.com/xingyuv/vue-vben-admin/commits/7c965a29533cc8bae7e6343093b16fa3a0f27f46))
* use form ([f97f541](https://gitee.com/xingyuv/vue-vben-admin/commits/f97f541f308ee9fbd54e92d0b5d86f9897d121d7))
* **useFormItem:** 修复ApiSelect的onChange事件获取不到第二个参数 ([b2e9da1](https://gitee.com/xingyuv/vue-vben-admin/commits/b2e9da144c9f02bac741be983b7b4465831e0f59))
* user view ([300477e](https://gitee.com/xingyuv/vue-vben-admin/commits/300477e647096a9d93159f1e5b0680025a00588c))
* verify style ([d34aa1d](https://gitee.com/xingyuv/vue-vben-admin/commits/d34aa1d30ce5fec80df88d1fda412053fe9fa05b))
* **view:** 代码生成模块 数据源 ([4fc394f](https://gitee.com/xingyuv/vue-vben-admin/commits/4fc394fc8df7b80bbad792f51a743e6dab41cbd1)), closes [#I6](https://gitee.com/xingyuv/vue-vben-admin/issues/I6)
* **view:** 代码生成器 查询方式 select ([d41e280](https://gitee.com/xingyuv/vue-vben-admin/commits/d41e280db3fc48e771f03627ee948f22c3f9db74)), closes [#I6Z3Y0](https://gitee.com/xingyuv/vue-vben-admin/issues/I6Z3Y0)
* **view:** 日期字段存储不了 ([c38e983](https://gitee.com/xingyuv/vue-vben-admin/commits/c38e983e7b8de766c2ddc0063c9303e867e4f00d)), closes [#I6](https://gitee.com/xingyuv/vue-vben-admin/issues/I6)
* **view:** 租户套餐未引入useI18n ([e011986](https://gitee.com/xingyuv/vue-vben-admin/commits/e011986354c706d1bf8096f7085fc96f381038ab)), closes [#I6YY2](https://gitee.com/xingyuv/vue-vben-admin/issues/I6YY2)
* warn ([c9ad9cf](https://gitee.com/xingyuv/vue-vben-admin/commits/c9ad9cfc5b434833f3ba25dc83b30776a4461945))
* warn ([cb51ea0](https://gitee.com/xingyuv/vue-vben-admin/commits/cb51ea031ee2ad7ad05df41d8cd499a9332bbb43))
### Features
* ✨ post init ([3017d3c](https://gitee.com/xingyuv/vue-vben-admin/commits/3017d3c4f3debd0e07544f51d358877c1158ef17))
* ✨ views init ([faf5098](https://gitee.com/xingyuv/vue-vben-admin/commits/faf509809cd6a569b19a8b74a0b80709f084d4d9))
* ✨ views init ([56891ee](https://gitee.com/xingyuv/vue-vben-admin/commits/56891eef810ea32f858555c0a639ff9adbba3396))
* 分配用户角色权限 ([7801fc6](https://gitee.com/xingyuv/vue-vben-admin/commits/7801fc6629074fa2f108af214a68418de0d25328))
* 解构字段设置value ([adbbff5](https://gitee.com/xingyuv/vue-vben-admin/commits/adbbff5ea9f33e64935a08051367a16bff0e350a))
* 适配 element 的标签颜色 ([48ff92f](https://gitee.com/xingyuv/vue-vben-admin/commits/48ff92faf7985b08850b38e2736495d40bcd3ed0))
* 退款 ([fae8ef4](https://gitee.com/xingyuv/vue-vben-admin/commits/fae8ef469f1de2724ec879241f61339b33cd1654))
* 完善代码生成页面 ([d448b19](https://gitee.com/xingyuv/vue-vben-admin/commits/d448b190d741dc736c1b49fb357c92b9db705ddb))
* 文件上传 ([ecf9829](https://gitee.com/xingyuv/vue-vben-admin/commits/ecf98298a2dc526bd71b8c696629ec248cde3c84))
* 修改用户状态 ([6fd0ed8](https://gitee.com/xingyuv/vue-vben-admin/commits/6fd0ed812edcb5547f56acb658ecaed6f16f952f))
* 用户分组列表 ([ca4c704](https://gitee.com/xingyuv/vue-vben-admin/commits/ca4c704cd8259191631aec3b55c3a96cde9fd7e9))
* 优化dict tag 颜色 ([2111e14](https://gitee.com/xingyuv/vue-vben-admin/commits/2111e14e317fd25d7f66cf18f69c2efb1526cc93))
* 增加表单设计器 ([c6a53ac](https://gitee.com/xingyuv/vue-vben-admin/commits/c6a53accfacf702de18291e553169fac6e5cf8d2))
* about ([5cd08a7](https://gitee.com/xingyuv/vue-vben-admin/commits/5cd08a769720a4fb9201b1ad1711cb4c26b6a2af))
* action width ([9e85d8a](https://gitee.com/xingyuv/vue-vben-admin/commits/9e85d8a2804ff4f5c8503626fac3b3d59612e41b))
* add about router ([d54969a](https://gitee.com/xingyuv/vue-vben-admin/commits/d54969ae507c5c102ad70c2551040a861df4210d))
* add action i18n ([9782e6a](https://gitee.com/xingyuv/vue-vben-admin/commits/9782e6a6fd6ef70a2c322301d65834bd94c63de0))
* add pay demo api ([0630266](https://gitee.com/xingyuv/vue-vben-admin/commits/063026664c5f7653824f2837bda7f3e2cf14cc96))
* add permission ([fc1d741](https://gitee.com/xingyuv/vue-vben-admin/commits/fc1d741b223ff73149707981d1cca745226cdc4c))
* add renderIcon ([2f284d3](https://gitee.com/xingyuv/vue-vben-admin/commits/2f284d31c3b83b71f1f96f06afbfd0b6da4bd1bd))
* add renderTag ([abc7d24](https://gitee.com/xingyuv/vue-vben-admin/commits/abc7d24a226dd8cbce69f409f9e553614322115b))
* add report views ([c74bb8a](https://gitee.com/xingyuv/vue-vben-admin/commits/c74bb8adce52f42734999e58540c515543aa9d2b))
* add success text ([482e411](https://gitee.com/xingyuv/vue-vben-admin/commits/482e411f061a6306c0ff5c013ce1de73304f7f03))
* add title ([a39fc77](https://gitee.com/xingyuv/vue-vben-admin/commits/a39fc77f118e8d2933ec53b38a43a956ccefcfe5))
* add transformerDirectives ([653afff](https://gitee.com/xingyuv/vue-vben-admin/commits/653afff732528509e8f5bb9d79de1b41e05a5c54))
* api ([05b8124](https://gitee.com/xingyuv/vue-vben-admin/commits/05b8124003b670216cb3a3d7fe70109728af3c7f))
* api ([8e83c1d](https://gitee.com/xingyuv/vue-vben-admin/commits/8e83c1d149d41812edd938419ec971325500afbe))
* app ([cb18359](https://gitee.com/xingyuv/vue-vben-admin/commits/cb1835928090ca99a71e9bc30f445ead9342fcc0))
* area api ([8f33b3f](https://gitee.com/xingyuv/vue-vben-admin/commits/8f33b3ff31008aa21afb1bbee9278c4bd64536fe))
* avatar upload ([75edf99](https://gitee.com/xingyuv/vue-vben-admin/commits/75edf99f6c0d0e275dbfa2de067105398e47aef3))
* axios ([3a39b2a](https://gitee.com/xingyuv/vue-vben-admin/commits/3a39b2afb7445124100d215fa3bcbc09365ec604))
* basicInfo codegen ([0d58b2b](https://gitee.com/xingyuv/vue-vben-admin/commits/0d58b2bf8d74ce312ace051ced3204446f9a90a5))
* bpm api ([2cf363d](https://gitee.com/xingyuv/vue-vben-admin/commits/2cf363d6e8e1357462bc6480c3b3e8094d1e1c42))
* bpm done ([6f6de0b](https://gitee.com/xingyuv/vue-vben-admin/commits/6f6de0b3930128179bbf67dedee3a6b6bfe6f8ef))
* bpm leave ([abd2d3d](https://gitee.com/xingyuv/vue-vben-admin/commits/abd2d3de988a06433ccce2b1e0d08cadba623758))
* bpm mpdel ([6a5b0c7](https://gitee.com/xingyuv/vue-vben-admin/commits/6a5b0c7a474e07c96b331d0d5c4a8dde6820cbc3))
* bpm todo ([0bcf078](https://gitee.com/xingyuv/vue-vben-admin/commits/0bcf07887e9e1278785c53f575d70175288297a6))
* btn permission ([e3ca402](https://gitee.com/xingyuv/vue-vben-admin/commits/e3ca40287b17999ed9a625479086814e29a36e46))
* code style ([73c4969](https://gitee.com/xingyuv/vue-vben-admin/commits/73c496946f3d76cb2d4bf87be87a9becf825d545))
* code style ([af3f998](https://gitee.com/xingyuv/vue-vben-admin/commits/af3f9983749fa86cee19d6ab17aa6c6afaab0f9e))
* code style ([a2f7927](https://gitee.com/xingyuv/vue-vben-admin/commits/a2f79279c04ae9be3bf98337848445ad5a1a2530))
* codegen ([f8d8407](https://gitee.com/xingyuv/vue-vben-admin/commits/f8d8407fb41861ed6a7b58e988b7d9eec375d5e2))
* codegen ([a7d0468](https://gitee.com/xingyuv/vue-vben-admin/commits/a7d04683b211f2bee67ee04fe3cf53b7121eb8ad))
* codegen 支持配置前端 UI 类型 ([bfb8d64](https://gitee.com/xingyuv/vue-vben-admin/commits/bfb8d6487bcecd80b8d2c81ece76857fa90a659d))
* codegen finish ([2572e1d](https://gitee.com/xingyuv/vue-vben-admin/commits/2572e1db8a84e10f025003a73a6ad813cb14d71a))
* codegen table ([fa92a1c](https://gitee.com/xingyuv/vue-vben-admin/commits/fa92a1c2da181b0a2150ea36e626b581ed030038))
* codegen table ([26dd8ee](https://gitee.com/xingyuv/vue-vben-admin/commits/26dd8eefc930f947493b13ad44f765ee28201c0f))
* componentName ([ffff33a](https://gitee.com/xingyuv/vue-vben-admin/commits/ffff33a696f0771df5424803ce4fe132d1745bac))
* createWebHistory ([c2cd770](https://gitee.com/xingyuv/vue-vben-admin/commits/c2cd770fec953aa0575b1ee371bf5d6a9ca68970))
* dept ([bcf8353](https://gitee.com/xingyuv/vue-vben-admin/commits/bcf8353fdc736b50507c4a28fcdea535e241d65b))
* dept style ([bf7d05b](https://gitee.com/xingyuv/vue-vben-admin/commits/bf7d05b71c19b435b54a97e1395ecf91f2384105))
* dict ([51beba6](https://gitee.com/xingyuv/vue-vben-admin/commits/51beba6968d47da6b5f944f645d19e46e0c5626f))
* dict ([4a3d8ad](https://gitee.com/xingyuv/vue-vben-admin/commits/4a3d8adcce2a60981ba5dbc081c7b170e89eb05f))
* dict color ([9b32af1](https://gitee.com/xingyuv/vue-vben-admin/commits/9b32af10058711df9bd2ed31ccc98c2a96dd1e17))
* dict style ([43d34d5](https://gitee.com/xingyuv/vue-vben-admin/commits/43d34d5d94b33a4482386656eda10b6b2e514989))
* dict tag ([70dda58](https://gitee.com/xingyuv/vue-vben-admin/commits/70dda584481c12435b528e15397167dfd37bc9a2))
* dict view done ([9c60aa3](https://gitee.com/xingyuv/vue-vben-admin/commits/9c60aa364080d258c640ca3ec1f6b77af6cf3064))
* dictTag ([3c42e9f](https://gitee.com/xingyuv/vue-vben-admin/commits/3c42e9f0cdaf290571765d1564a01fd8a423d00c))
* doc ([b47a6e5](https://gitee.com/xingyuv/vue-vben-admin/commits/b47a6e5d64d0de9e42c9905917bfeff031f041e7))
* download add title ([4762132](https://gitee.com/xingyuv/vue-vben-admin/commits/4762132362d53051aa5e2f383b7230cf5fddbbfb))
* editTable init ([6e27639](https://gitee.com/xingyuv/vue-vben-admin/commits/6e27639bb949227f3faae514ad2fb42f5f16cf30))
* error code init ([fbb15cd](https://gitee.com/xingyuv/vue-vben-admin/commits/fbb15cde59bdfd5c8cb1037eeace157ecf25f4b1))
* errorcode style ([ddb7343](https://gitee.com/xingyuv/vue-vben-admin/commits/ddb73432d0bc1727959a152ef44310215707df0f))
* extensions ([4dc019f](https://gitee.com/xingyuv/vue-vben-admin/commits/4dc019f44efa7eb8da01577cdd121a3361aafd29))
* file ([af6c5cc](https://gitee.com/xingyuv/vue-vben-admin/commits/af6c5cc4468ff3b4c22f8278f5cbb2051fffb2a4))
* file copy url ([dc98ffb](https://gitee.com/xingyuv/vue-vben-admin/commits/dc98ffb224e6184e8bfb2041f9be21f06469e99e))
* form 表单 ([7afe98c](https://gitee.com/xingyuv/vue-vben-admin/commits/7afe98c05c2886459c35228321fef5a11fda952b))
* form Editor component ([110a352](https://gitee.com/xingyuv/vue-vben-admin/commits/110a352a1ca3e375e814c096af65656a625061fe))
* free-publish ([784a8b5](https://gitee.com/xingyuv/vue-vben-admin/commits/784a8b50fff61321988bc9f37678aaa5db061b6a))
* handle delete ([1701c5d](https://gitee.com/xingyuv/vue-vben-admin/commits/1701c5dae16386dcaa8ffe71307b1a2ac57eeb52))
* i18n ([60d43c0](https://gitee.com/xingyuv/vue-vben-admin/commits/60d43c077c22f0660ed82c62d5908b88762f51de))
* i18n sync ([7641a6f](https://gitee.com/xingyuv/vue-vben-admin/commits/7641a6fb91a09920d9b4302d474f72313804114f))
* icon enum ([a438064](https://gitee.com/xingyuv/vue-vben-admin/commits/a438064ea632c673aafe360ee54b1f9cbf337f99))
* iframe ([4237a46](https://gitee.com/xingyuv/vue-vben-admin/commits/4237a46fd00f74bbceba5cf1e058aee9c6804147))
* index ([4f30f96](https://gitee.com/xingyuv/vue-vben-admin/commits/4f30f96371f7fb0ed0ad001537c430ca20926187))
* infra view ([85b7eee](https://gitee.com/xingyuv/vue-vben-admin/commits/85b7eeedb5a52e987f6fb2429756ec0b874d892c))
* init ([4effdd9](https://gitee.com/xingyuv/vue-vben-admin/commits/4effdd9ae90c93a95d7fb8d0092563eeedab7dde))
* job view ([5816101](https://gitee.com/xingyuv/vue-vben-admin/commits/5816101b464d7ff7410e2a2a1cf3efbfe1ed7d8e))
* login ([0ffe344](https://gitee.com/xingyuv/vue-vben-admin/commits/0ffe344662ef3826ee892e206729360f4967bdac))
* login log ([9481c5f](https://gitee.com/xingyuv/vue-vben-admin/commits/9481c5f3096e319c1f18fc711082641b4df9463d))
* loginlog style ([2cfbb8d](https://gitee.com/xingyuv/vue-vben-admin/commits/2cfbb8d094e08198890900a45bcae6cdd0664e78))
* mail account ([3b76913](https://gitee.com/xingyuv/vue-vben-admin/commits/3b769135cdd55df5ae3e52b2ccea772082c30943))
* mail tempalte ([a917f52](https://gitee.com/xingyuv/vue-vben-admin/commits/a917f52f4f7063d61b919dd995359c18f6a48be3))
* menu ([30b9556](https://gitee.com/xingyuv/vue-vben-admin/commits/30b9556714a09a58daa4d462f991887ce0953af1))
* menu ([051f14c](https://gitee.com/xingyuv/vue-vben-admin/commits/051f14c3b5ec7c45416642cc139c9ca68c7da09d))
* menu init ([8ba4ef9](https://gitee.com/xingyuv/vue-vben-admin/commits/8ba4ef9b9a7ad816957f6dd67bc74f631b89bb66))
* menu init ([68016f7](https://gitee.com/xingyuv/vue-vben-admin/commits/68016f703e1232b5a003b7e13417a7cc3796e90b))
* modal style ([d0dbb95](https://gitee.com/xingyuv/vue-vben-admin/commits/d0dbb951cfd543e9eb178639d704af73c646b2eb))
* mp ([2fa4377](https://gitee.com/xingyuv/vue-vben-admin/commits/2fa437757aa17bd9aaf7a01c125afc9d73f16a8a))
* mp account ([e665edc](https://gitee.com/xingyuv/vue-vben-admin/commits/e665edc9f0c60d3b7cd71e7b1d7fb8fd78684a59))
* mp comps init ([d9bb410](https://gitee.com/xingyuv/vue-vben-admin/commits/d9bb4105ddcf75264812635235875e821f82d8fe))
* mp message ([16b2368](https://gitee.com/xingyuv/vue-vben-admin/commits/16b23681a7af6a268914fe7bdb4e16f1f0ba275a))
* mp statistics init ([7f72813](https://gitee.com/xingyuv/vue-vben-admin/commits/7f7281355ce48871d7b23563515207e5a3c1de7f))
* mp tag ([ab364fa](https://gitee.com/xingyuv/vue-vben-admin/commits/ab364faaac99f9c5cf2083efc54c20cfa874108c))
* mp user ([d7ce921](https://gitee.com/xingyuv/vue-vben-admin/commits/d7ce9218ca40cdc8ca03f79a273dbc2f108f4acc))
* notice editor ([fe0dea6](https://gitee.com/xingyuv/vue-vben-admin/commits/fe0dea63a77a1b55be95a622ec2b6f2aca634b9c))
* notice init ([e794ba7](https://gitee.com/xingyuv/vue-vben-admin/commits/e794ba7cd06a73395810b6f9e100b03e650d2ba1))
* notify ([97c1f83](https://gitee.com/xingyuv/vue-vben-admin/commits/97c1f832dd42eb84af1f297fe57fab03a7b53f95))
* notify message ([294189e](https://gitee.com/xingyuv/vue-vben-admin/commits/294189e16b691743d00b6b5c9cf7fae93b30fbd0))
* notify message ([89137c7](https://gitee.com/xingyuv/vue-vben-admin/commits/89137c72ec0d02e617e09e68cfe0d12a6a8d76d2))
* order ([3be96ce](https://gitee.com/xingyuv/vue-vben-admin/commits/3be96ce81fa5f818fb91b04181222cbf079f3c72))
* pay comp name ([abca6ba](https://gitee.com/xingyuv/vue-vben-admin/commits/abca6ba622b3df959d75b7a406cc18a3952c0967))
* pay merchant ([c262854](https://gitee.com/xingyuv/vue-vben-admin/commits/c262854a52c9ae3ec41c2bd242a629fde1f7de73))
* post ([0ecfe12](https://gitee.com/xingyuv/vue-vben-admin/commits/0ecfe123772a28505f321a3549af5725bcfb7c69))
* post ([1987729](https://gitee.com/xingyuv/vue-vben-admin/commits/198772973a8879dac7c6d0068aed8a4590172ef1))
* post init ([11b4e00](https://gitee.com/xingyuv/vue-vben-admin/commits/11b4e00f5a6e8d782569be0269a83688521b8184))
* profile avatar ([513a605](https://gitee.com/xingyuv/vue-vben-admin/commits/513a6052aab4b2908d8d8fb9c940a7bbe54e7090))
* project setting ([419c60e](https://gitee.com/xingyuv/vue-vben-admin/commits/419c60e9d9338acce98a671dfc201ff7d84cc75b))
* redis ([31adf4c](https://gitee.com/xingyuv/vue-vben-admin/commits/31adf4caafe4b784bd38682dabdce8af86863409))
* redis base info ([fe72d10](https://gitee.com/xingyuv/vue-vben-admin/commits/fe72d10ff2bf335825044bbe4c52b94db47a9996))
* redis echarts ([afec346](https://gitee.com/xingyuv/vue-vben-admin/commits/afec346d6491a970264be03abd82ebdfc640893b))
* redis erchat ([4816bf8](https://gitee.com/xingyuv/vue-vben-admin/commits/4816bf8faa8bb42b2c92de571bbe46745abfe6fb))
* redis view ([8ae8be8](https://gitee.com/xingyuv/vue-vben-admin/commits/8ae8be8e49fa3681ccf405109c363e5433573938))
* refreshToken ([a640f38](https://gitee.com/xingyuv/vue-vben-admin/commits/a640f3822fbc343c2938c2ee5680756559ac8bd5))
* refund ([879058c](https://gitee.com/xingyuv/vue-vben-admin/commits/879058cec4b41b3840a6401da92d8157dd87d841))
* remove basemodel ([dc9321b](https://gitee.com/xingyuv/vue-vben-admin/commits/dc9321b28aee74a39f7b67b6e8a49d50c66ca4b5))
* remove vitejs/plugin-legacy ([01935d4](https://gitee.com/xingyuv/vue-vben-admin/commits/01935d4692de35a8c8fc5834a33d240f8c4627b8))
* render ([b568d4c](https://gitee.com/xingyuv/vue-vben-admin/commits/b568d4ca99283dc0d74cb8e097fdfdaecee35f9a))
* render img use TableImg ([80d11b8](https://gitee.com/xingyuv/vue-vben-admin/commits/80d11b855425ccac3f0545f1bc4aa24552edb8da))
* ResetPwdModal ([8e7581c](https://gitee.com/xingyuv/vue-vben-admin/commits/8e7581c6cf0801dd9742631d54bb26d5882151fb))
* role menu && data scope ([7e8d9dc](https://gitee.com/xingyuv/vue-vben-admin/commits/7e8d9dc62a02bb5ee54728ce7c1260f896d9095b))
* role scope init ([e40fb13](https://gitee.com/xingyuv/vue-vben-admin/commits/e40fb13ab9b59ea216fc3bf6fadde70fce161fdc))
* router ([b37aa22](https://gitee.com/xingyuv/vue-vben-admin/commits/b37aa22570430bc894998373251703656a17eb9b))
* router ([e89fe32](https://gitee.com/xingyuv/vue-vben-admin/commits/e89fe32f3a0f2f87a7e31f7156b5d8b4b9745637))
* router ([ae3079b](https://gitee.com/xingyuv/vue-vben-admin/commits/ae3079b4189551717169a67376a3cf3cd39e9015))
* router ([351171b](https://gitee.com/xingyuv/vue-vben-admin/commits/351171b29a992ffe462d873b58077083dab34fcf))
* router init ([fb0a11e](https://gitee.com/xingyuv/vue-vben-admin/commits/fb0a11e3f76370369e4d8267e4703306d6057e60))
* script setup ([3eaa81f](https://gitee.com/xingyuv/vue-vben-admin/commits/3eaa81ff19a8d0bd22b0f973f269770ae2eccdea))
* SensitiveWord init ([bb9ef8b](https://gitee.com/xingyuv/vue-vben-admin/commits/bb9ef8bd3f6ddfb7bdc84b17638148cb640c9d79))
* sms ([7687314](https://gitee.com/xingyuv/vue-vben-admin/commits/76873143a00935b5e381a7a44d8585477863a540))
* style ([0143cd5](https://gitee.com/xingyuv/vue-vben-admin/commits/0143cd5978950bd7d4bde0a77c94b39e397be61f))
* tenant menu ([8ba2dae](https://gitee.com/xingyuv/vue-vben-admin/commits/8ba2dae74ee8f263c828bb6493b8f8899ac7d25b))
* token views ([1a36a19](https://gitee.com/xingyuv/vue-vben-admin/commits/1a36a195f36a7a50aa49c53d5084a55ea8a0b482))
* upload file ([b4d2b61](https://gitee.com/xingyuv/vue-vben-admin/commits/b4d2b6120106770cb64f0f9c75970842437fbf35))
* url router ([eb09883](https://gitee.com/xingyuv/vue-vben-admin/commits/eb098836b44bd785468c674312ce74512c78f87a))
* user init ([ed85e3f](https://gitee.com/xingyuv/vue-vben-admin/commits/ed85e3f55f32b1b58a69f598d25335701c352b19))
* useRender 添加注释 ([48ccd91](https://gitee.com/xingyuv/vue-vben-admin/commits/48ccd91ad3cbafd8e959f8a010f2ce417736bab0))
* **util:** add dict ([f9d5d3a](https://gitee.com/xingyuv/vue-vben-admin/commits/f9d5d3a50a08fc73779f425a8af0e2a3067de35e))
* verifition ([b41e48e](https://gitee.com/xingyuv/vue-vben-admin/commits/b41e48e2612ebae018e50749610c68ea99a5c01b))
* **view:** api access log ([6d49095](https://gitee.com/xingyuv/vue-vben-admin/commits/6d49095404eb24f3d769b6c21b76318f29128ac4))
* **view:** apiErrorLog ([8ed36c7](https://gitee.com/xingyuv/vue-vben-admin/commits/8ed36c7d6774e6c7722ca881b61bdbcb09ba3bb2))
* **view:** base view init ([58db52c](https://gitee.com/xingyuv/vue-vben-admin/commits/58db52cea8dc3c5cb547f3234b8b9e05a175969e))
* **view:** config ([cc43321](https://gitee.com/xingyuv/vue-vben-admin/commits/cc433213614c649be50f6da5272ef275694efa4c))
* **view:** post init ([79c65e1](https://gitee.com/xingyuv/vue-vben-admin/commits/79c65e15cf5d394c6e48e51f390c382c3b789f59))
* **view:** router view init ([d430f6d](https://gitee.com/xingyuv/vue-vben-admin/commits/d430f6d2721392876862ed0573949cc78ec1c6ab))
* views ([3c8dbb4](https://gitee.com/xingyuv/vue-vben-admin/commits/3c8dbb4d0d15a1bd9732843b7690cb597536150e))
* views ([113f17c](https://gitee.com/xingyuv/vue-vben-admin/commits/113f17cd18dc98b4c5d7e4817aeedb85fd423b70))
* views ([4e34151](https://gitee.com/xingyuv/vue-vben-admin/commits/4e341517d907c66d93486be1351a267d763b4f5e))
* views ([6a2eebe](https://gitee.com/xingyuv/vue-vben-admin/commits/6a2eebe4862ef357750c6422e6ebc86cd5e30966))
* ws ([b3a6d0f](https://gitee.com/xingyuv/vue-vben-admin/commits/b3a6d0f8ff2b430ca41ff76cf347f9fcc9ed18c6))
### Performance Improvements
* **BasicTable:** 滑块验证码位置 ([2593c44](https://gitee.com/xingyuv/vue-vben-admin/commits/2593c4457f7919366b12fca252b231ea0c72d18e))
* respect the writing style of pinia getters ([de43d8b](https://gitee.com/xingyuv/vue-vben-admin/commits/de43d8b30bd30434cd15c514aee0d2d4fd4c8fca))

1
CNAME
View File

@@ -1 +0,0 @@
vben.xingyuv.com

View File

@@ -1,7 +1,5 @@
# yudao-ui-admin-vben
[![license](https://img.shields.io/github/license/xingyuv/vue-vben-admin.svg)](LICENSE)
**严肃声明:现在、未来都不会有商业版本,所有代码全部开源!**
**「我喜欢写代码,乐此不疲」**
@@ -11,43 +9,35 @@
## 预览地址
- [预览地址](http://vben.xingyuv.com/)
- [预览地址](http://dashboard-vben.yudao.iocoder.cn/)
- [启动文档](https://doc.iocoder.cn/quick-start/)
- [开发文档](http://vben-doc.x-surge.com/)
- [视频教程](https://doc.iocoder.cn/video/)
## 交流群 && 外包项目请联系 [ xinyu370 ]
## 外包项目请联系 [ xinyu370 ]
- [Star 点击查看](https://gitee.com/yudaocode/yudao-ui-admin-vben/issues/I6R8J0)
- ![alt 定制开发](./public/resource/img/wx2.png)
- ![alt 微信](./public/resource/img/wx.png)
## 交流群
## 开发进度
- 系统管理 已完成
- 基础设施 已完成
- 支付管理 已完成
- 公众号 进行中 40%
- 工作流 进行中 40% 预计6月底
- 升级 antdv 4.0 预计6月底
- ![alt 交流群](./public/resource/img/wx.png)
## 框架
| 框架 | 说明 | 版本 |
| --- | --- | --- |
| [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.3.4 |
| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.3.9 |
| [ant-design-vue](https://antdv.com/) | ant-design-vue | 3.2.20 |
| [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 5.1.3 |
| [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.1.3 |
| [vueuse](https://vueuse.org/) | 常用工具集 | 10.1.2 |
| [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 |
| [vue-router](https://router.vuejs.org/) | Vue 路由 | 4.2.2 |
| [windicss](https://cn.windicss.org/) | 下一代工具优先的 CSS 框架 | 3.5.6 |
| [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 3.1.0 |
| 框架 | 说明 | 版本 |
| -------------------------------------------------------------------- | --------------------- | ------ |
| [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.3.7 |
| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.5.0 |
| [ant-design-vue](https://antdv.com/) | ant-design-vue | 4.0.6 |
| [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 5.1.6 |
| [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.1.7 |
| [vueuse](https://vueuse.org/) | 常用工具集 | 10.5.0 |
| [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.5.0 |
| [vue-router](https://router.vuejs.org/) | Vue 路由 | 4.2.5 |
| [unocss](https://uno.antfu.me/) | 原子 css | 0.57.1 |
| [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 3.1.1 |
- ![alt VbenAdmin](https://anncwb.github.io/anncwb/images/preview1.png)
- ![alt VbenAdmin](https://anncwb.github.io/anncwb/images/preview2.png)
- ![alt VbenAdmin](https://anncwb.github.io/anncwb/images/preview3.png)
- ![alt Admin](./public/resource/img/preview.png)
## 准备
@@ -57,7 +47,7 @@
- [TypeScript](https://www.typescriptlang.org/) - 熟悉`TypeScript`基本语法
- [Es6+](http://es6.ruanyifeng.com/) - 熟悉 es6 基本语法
- [Vue-Router-Next](https://next.router.vuejs.org/) - 熟悉 vue-router 基本使用
- [Ant-Design-Vue](https://antdv.com/) - ui 基本使用
- [Ant-Design-Vue-4.0](https://antdv.com/) - ui 基本使用
## 安装使用
@@ -74,6 +64,11 @@ git clone https://github.com/xingyuv/yudao-ui-admin-vben.git
```bash
pnpm i
如提示 Expected version: >=8.9.0
使用 cmd 等升级 pnpm 版本
npm add -g pnpm
```
- 运行
@@ -119,6 +114,6 @@ pnpm build
支持现代浏览器, 不支持 IE
| ![alt IE](https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_32x32.png) | ![alt Edge](https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_32x32.png) | ![alt Firefox](https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_32x32.png) | ![alt Chrome](https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_32x32.png) | ![alt Safari](https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_32x32.png) |
| :-: | :-: | :-: | :-: | :-: |
| [IE](http://godban.github.io/browsers-support-badges/) | [Edge](http://godban.github.io/browsers-support-badgess/) | [Firefox](http://godban.github.io/browsers-support-badges/) | [Chrome](http://godban.github.io/browsers-support-badges/) | [Safari](http://godban.github.io/browsers-support-badges/)|
| not support | last 2 versions | last 2 versions | last 2 versions | last 2 versions |
| :---------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------: |
| [IE](http://godban.github.io/browsers-support-badges/) | [Edge](http://godban.github.io/browsers-support-badgess/) | [Firefox](http://godban.github.io/browsers-support-badges/) | [Chrome](http://godban.github.io/browsers-support-badges/) | [Safari](http://godban.github.io/browsers-support-badges/) |
| not support | last 2 versions | last 2 versions | last 2 versions | last 2 versions |

View File

@@ -17,7 +17,7 @@ export interface GenerateColorsParams {
export function generateAntColors(color: string, theme: GenerateTheme = 'default') {
return generate(color, {
theme
theme,
})
}
@@ -31,7 +31,7 @@ export function getThemeColors(color?: string) {
}
export function generateColors({ color = primaryColor, mixLighten, mixDarken, tinycolor }: GenerateColorsParams) {
const arr = new Array(19).fill(0)
const arr = Array.from({ length: 19 }).fill(0)
const lightens = arr.map((_t, i) => {
return mixLighten(color, i / 5)
})
@@ -46,7 +46,7 @@ export function generateColors({ color = primaryColor, mixLighten, mixDarken, ti
.toRgbString()
})
const shortAlphaColors = alphaColors.map((item) => item.replace(/\s/g, '').replace(/0\./g, '.'))
const shortAlphaColors = alphaColors.map(item => item.replace(/\s/g, '').replace(/0\./g, '.'))
const tinycolorLightens = arr
.map((_t, i) => {
@@ -54,7 +54,7 @@ export function generateColors({ color = primaryColor, mixLighten, mixDarken, ti
.lighten(i * 5)
.toHexString()
})
.filter((item) => item !== '#ffffff')
.filter(item => item !== '#ffffff')
const tinycolorDarkens = arr
.map((_t, i) => {
@@ -62,8 +62,8 @@ export function generateColors({ color = primaryColor, mixLighten, mixDarken, ti
.darken(i * 5)
.toHexString()
})
.filter((item) => item !== '#000000')
.filter(item => item !== '#000000')
return [...lightens, ...darkens, ...alphaColors, ...shortAlphaColors, ...tinycolorDarkens, ...tinycolorLightens].filter(
(item) => !item.includes('-')
item => !item.includes('-'),
)
}

View File

@@ -1,26 +1,39 @@
import { generateAntColors, primaryColor } from '../config/themeConfig'
import { getThemeVariables } from 'ant-design-vue/dist/theme'
import { resolve } from 'path'
import { resolve } from 'node:path'
import { generate } from '@ant-design/colors'
import { theme } from 'ant-design-vue/lib'
import convertLegacyToken from 'ant-design-vue/lib/theme/convertLegacyToken'
import { primaryColor } from '../config/themeConfig'
const { defaultAlgorithm, defaultSeed } = theme
function generateAntColors(color: string, theme: 'default' | 'dark' = 'default') {
return generate(color, {
theme,
})
}
/**
* less global variable
*/
export function generateModifyVars(dark = false) {
export function generateModifyVars() {
const palettes = generateAntColors(primaryColor)
const primary = palettes[5]
const primaryColorObj: Record<string, string> = {}
for (let index = 0; index < 10; index++) {
for (let index = 0; index < 10; index++)
primaryColorObj[`primary-${index + 1}`] = palettes[index]
}
const modifyVars = getThemeVariables({ dark })
// const modifyVars = getThemeVariables();
const mapToken = defaultAlgorithm(defaultSeed)
const v3Token = convertLegacyToken(mapToken)
return {
...modifyVars,
// Used for global import to avoid the need to import each style file separately
...v3Token,
// reference: Avoid repeated references
hack: `${modifyVars.hack} @import (reference) "${resolve('src/design/config.less')}";`,
'hack': `true; @import (reference) "${resolve('src/design/config.less')}";`,
'primary-color': primary,
...primaryColorObj,
'info-color': primary,
@@ -28,10 +41,9 @@ export function generateModifyVars(dark = false) {
'success-color': '#55D187', // Success color
'error-color': '#ED6F6F', // False color
'warning-color': '#EFBD47', // Warning color
//'border-color-base': '#EEEEEE',
'font-size-base': '14px', // Main font size
'border-radius-base': '2px', // Component/float fillet
'link-color': primary, // Link color
'app-content-background': '#fafafa' // Link color
'app-content-background': '#fafafa', // Link color
}
}

View File

@@ -1,4 +1,4 @@
import path from 'path'
import path from 'node:path'
import fs from 'fs-extra'
import inquirer from 'inquirer'
import colors from 'picocolors'
@@ -11,10 +11,10 @@ async function generateIcon() {
const collections = Object.entries(raw).map(([id, v]) => ({
...(v as any),
id
id,
}))
const choices = collections.map((item) => ({ key: item.id, value: item.id, name: item.name }))
const choices = collections.map(item => ({ key: item.id, value: item.id, name: item.name }))
inquirer
.prompt([
@@ -23,39 +23,39 @@ async function generateIcon() {
name: 'useType',
choices: [
{ key: 'local', value: 'local', name: 'Local' },
{ key: 'onLine', value: 'onLine', name: 'OnLine' }
{ key: 'onLine', value: 'onLine', name: 'OnLine' },
],
message: 'How to use icons?'
message: 'How to use icons?',
},
{
type: 'list',
name: 'iconSet',
choices: choices,
message: 'Select the icon set that needs to be generated?'
choices,
message: 'Select the icon set that needs to be generated?',
},
{
type: 'input',
name: 'output',
message: 'Select the icon set that needs to be generated?',
default: 'src/components/Icon/data'
}
default: 'src/components/Icon/data',
},
])
.then(async (answers) => {
const { iconSet, output, useType } = answers
const outputDir = path.resolve(process.cwd(), output)
await fs.ensureDir(outputDir)
const genCollections = collections.filter((item) => [iconSet].includes(item.id))
const genCollections = collections.filter(item => [iconSet].includes(item.id))
const prefixSet: string[] = []
for (const info of genCollections) {
const data = await fs.readJSON(path.join(dir, 'json', `${info.id}.json`))
if (data) {
const { prefix } = data
const isLocal = useType === 'local'
const icons = Object.keys(data.icons).map((item) => `${isLocal ? prefix + ':' : ''}${item}`)
const icons = Object.keys(data.icons).map(item => `${isLocal ? `${prefix}:` : ''}${item}`)
await fs.writeFileSync(
path.join(output, `icons.data.ts`),
`export default ${isLocal ? JSON.stringify(icons) : JSON.stringify({ prefix, icons })}`
fs.writeFileSync(
path.join(output, 'icons.data.ts'),
`export default ${isLocal ? JSON.stringify(icons) : JSON.stringify({ prefix, icons })}`,
)
prefixSet.push(prefix)
}

View File

@@ -2,6 +2,6 @@
* Get the configuration file variable name
* @param env
*/
export const getConfigFileName = (env: Record<string, any>) => {
export function getConfigFileName(env: Record<string, any>) {
return `__PRODUCTION__${env.VITE_GLOB_APP_SHORT_NAME || '__APP'}__CONF__`.toUpperCase().replace(/\s/g, '')
}

View File

@@ -1,9 +1,9 @@
/**
* Generate additional configuration files when used for packaging. The file can be configured with some global variables, so that it can be changed directly externally without repackaging
*/
import { GLOB_CONFIG_FILE_NAME, OUTPUT_DIR } from '../constant'
import fs, { writeFileSync } from 'fs-extra'
import colors from 'picocolors'
import { GLOB_CONFIG_FILE_NAME, OUTPUT_DIR } from '../constant'
import { getEnvConfig, getRootPath } from '../utils'
import { getConfigFileName } from '../getConfigFileName'
@@ -33,10 +33,11 @@ function createConfig(params: CreateConfigParams) {
fs.mkdirp(getRootPath(OUTPUT_DIR))
writeFileSync(getRootPath(`${OUTPUT_DIR}/${configFileName}`), configStr)
console.log(colors.cyan(`✨ [${pkg.name}]`) + ` - configuration file is build successfully:`)
console.log(colors.gray(OUTPUT_DIR + '/' + colors.green(configFileName)) + '\n')
} catch (error) {
console.log(colors.red('configuration file configuration file failed to package:\n' + error))
console.log(`${colors.cyan(`✨ [${pkg.name}]`)} - configuration file is build successfully:`)
console.log(`${colors.gray(`${OUTPUT_DIR}/${colors.green(configFileName)}`)}\n`)
}
catch (error: any) {
console.log(colors.red(`configuration file configuration file failed to package:\n${error}`))
}
}

View File

@@ -1,22 +1,22 @@
// #!/usr/bin/env node
import { runBuildConfig } from './buildConf'
import colors from 'picocolors'
import pkg from '../../package.json'
import { runBuildConfig } from './buildConf'
export const runBuild = async () => {
export function runBuild() {
try {
const argvList = process.argv.splice(2)
// Generate configuration file
if (!argvList.includes('disabled-config')) {
if (!argvList.includes('disabled-config'))
runBuildConfig()
}
console.log(`${colors.cyan(`[${pkg.name}]`)}` + ' - build successfully!')
} catch (error) {
console.log(colors.red('vite build error:\n' + error))
}
catch (error: any) {
console.log(colors.red(`vite build error:\n${error}`))
process.exit(1)
}
}

View File

@@ -1,5 +1,5 @@
import fs from 'fs'
import path from 'path'
import fs from 'node:fs'
import path from 'node:path'
import dotenv from 'dotenv'
export function isDevFn(mode: string): boolean {
@@ -25,13 +25,14 @@ export function wrapperEnv(envConf: Recordable): ViteEnv {
let realName = envConf[envName].replace(/\\n/g, '\n')
realName = realName === 'true' ? true : realName === 'false' ? false : realName
if (envName === 'VITE_PORT') {
if (envName === 'VITE_PORT')
realName = Number(realName)
}
if (envName === 'VITE_PROXY' && realName) {
try {
realName = JSON.parse(realName.replace(/'/g, '"'))
} catch (error) {
}
catch (error) {
realName = ''
}
}
@@ -50,7 +51,7 @@ export function wrapperEnv(envConf: Recordable): ViteEnv {
*/
function getConfFiles() {
const script = process.env.npm_lifecycle_script
const reg = new RegExp('--mode ([a-z_\\d]+)')
const reg = /--mode ([a-z_\d]+)/
const result = reg.exec(script as string) as any
if (result) {
const mode = result[1] as string
@@ -64,21 +65,26 @@ function getConfFiles() {
* @param match prefix
* @param confFiles ext
*/
export function getEnvConfig(match = 'VITE_GLOB_', confFiles = getConfFiles()) {
export function getEnvConfig(
match = 'VITE_GLOB_',
confFiles = getConfFiles(),
): Promise<{
[key: string]: string;
}> {
let envConfig = {}
confFiles.forEach((item) => {
try {
const env = dotenv.parse(fs.readFileSync(path.resolve(process.cwd(), item)))
envConfig = { ...envConfig, ...env }
} catch (e) {
}
catch (e) {
console.error(`Error in parsing ${item}`, e)
}
})
const reg = new RegExp(`^(${match})`)
Object.keys(envConfig).forEach((key) => {
if (!reg.test(key)) {
if (!reg.test(key))
Reflect.deleteProperty(envConfig, key)
}
})
return envConfig
}

View File

@@ -5,7 +5,6 @@ const include = [
'axios',
'pinia',
'dayjs',
'qrcode',
'echarts',
'cropperjs',
'crypto-js',
@@ -29,7 +28,6 @@ const include = [
'ant-design-vue/es/style',
'ant-design-vue/es/locale/zh_CN',
'ant-design-vue/es/locale/en_US',
'vite-plugin-windicss'
]
const exclude = ['@iconify/json']

View File

@@ -5,7 +5,10 @@
import type { PluginOption } from 'vite'
import compressPlugin from 'vite-plugin-compression'
export function configCompressPlugin(compress: 'gzip' | 'brotli' | 'none', deleteOriginFile = false): PluginOption | PluginOption[] {
export function configCompressPlugin(
compress: 'gzip' | 'brotli' | 'none' = 'none',
deleteOriginFile = false,
): PluginOption | PluginOption[] {
const compressList = compress.split(',')
const plugins: PluginOption[] = []
@@ -14,8 +17,8 @@ export function configCompressPlugin(compress: 'gzip' | 'brotli' | 'none', delet
plugins.push(
compressPlugin({
ext: '.gz',
deleteOriginFile
})
deleteOriginFile,
}),
)
}
@@ -24,8 +27,8 @@ export function configCompressPlugin(compress: 'gzip' | 'brotli' | 'none', delet
compressPlugin({
ext: '.br',
algorithm: 'brotliCompress',
deleteOriginFile
})
deleteOriginFile,
}),
)
}
return plugins

View File

@@ -21,7 +21,7 @@ export function configHtmlPlugin(env: ViteEnv, isBuild: boolean) {
inject: {
// Inject data into ejs template
data: {
title: VITE_GLOB_APP_TITLE
title: VITE_GLOB_APP_TITLE,
},
// Embed the generated app.config.js file
tags: isBuild
@@ -29,12 +29,12 @@ export function configHtmlPlugin(env: ViteEnv, isBuild: boolean) {
{
tag: 'script',
attrs: {
src: getAppConfigSrc()
}
}
src: getAppConfigSrc(),
},
},
]
: []
}
: [],
},
})
return htmlPlugin
}

View File

@@ -1,19 +1,17 @@
import { PluginOption } from 'vite'
import type { PluginOption } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import windiCSS from 'vite-plugin-windicss'
import progress from 'vite-plugin-progress'
import purgeIcons from 'vite-plugin-purge-icons'
import VitePluginCertificate from 'vite-plugin-mkcert'
import UnoCSS from 'unocss/vite'
import { configPwaConfig } from './pwa'
import { configHtmlPlugin } from './html'
import { configCompressPlugin } from './compress'
import { configStyleImportPlugin } from './styleImport'
import { configVisualizerConfig } from './visualizer'
import { configThemePlugin } from './theme'
import { configSvgIconsPlugin } from './svgSprite'
export async function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
const { VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv
const vitePlugins: PluginOption[] = [
@@ -21,16 +19,15 @@ export async function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
vue(),
// have to
vueJsx(),
// UnoCSS
UnoCSS(),
// 打包进度条
progress(),
VitePluginCertificate({
source: 'coding'
})
source: 'coding',
}),
]
// windiCSS
vitePlugins.push(windiCSS())
// vite-vue-plugin-html
vitePlugins.push(configHtmlPlugin(viteEnv, isBuild))
@@ -43,13 +40,8 @@ export async function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
// rollup-plugin-visualizer
vitePlugins.push(configVisualizerConfig())
// vite-plugin-vben-theme
vitePlugins.push(configThemePlugin(isBuild))
// The following plugins only work in the production environment
if (isBuild) {
// vite-plugin-style-import
vitePlugins.push(configStyleImportPlugin(isBuild))
// rollup-plugin-gzip
vitePlugins.push(configCompressPlugin(VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE))

View File

@@ -17,15 +17,15 @@ export function configPwaConfig(env: ViteEnv) {
{
src: './resource/img/pwa-192x192.png',
sizes: '192x192',
type: 'image/png'
type: 'image/png',
},
{
src: './resource/img/pwa-512x512.png',
sizes: '512x512',
type: 'image/png'
}
]
}
type: 'image/png',
},
],
},
})
return pwaPlugin
}

View File

@@ -1,82 +0,0 @@
/**
* Introduces component library styles on demand.
* https://github.com/xingyuv/vite-plugin-style-import
*/
import { createStyleImportPlugin } from 'vite-plugin-style-import'
export function configStyleImportPlugin(_isBuild: boolean) {
if (!_isBuild) {
return []
}
const styleImportPlugin = createStyleImportPlugin({
libs: [
{
libraryName: 'ant-design-vue',
esModule: true,
resolveStyle: (name) => {
// 这里是无需额外引入样式文件的“子组件”列表
const ignoreList = [
'anchor-link',
'sub-menu',
'menu-item',
'menu-divider',
'menu-item-group',
'breadcrumb-item',
'breadcrumb-separator',
'form-item',
'step',
'select-option',
'select-opt-group',
'card-grid',
'card-meta',
'collapse-panel',
'descriptions-item',
'list-item',
'list-item-meta',
'table-column',
'table-column-group',
'tab-pane',
'tab-content',
'timeline-item',
'tree-node',
'skeleton-input',
'skeleton-avatar',
'skeleton-title',
'skeleton-paragraph',
'skeleton-image',
'skeleton-button'
]
// 这里是需要额外引入样式的子组件列表
// 单独引入子组件时需引入组件样式,否则会在打包后导致子组件样式丢失
const replaceList = {
textarea: 'input',
'typography-text': 'typography',
'typography-title': 'typography',
'typography-paragraph': 'typography',
'typography-link': 'typography',
'dropdown-button': 'dropdown',
'input-password': 'input',
'input-search': 'input',
'input-group': 'input',
'radio-group': 'radio',
'checkbox-group': 'checkbox',
'layout-sider': 'layout',
'layout-content': 'layout',
'layout-footer': 'layout',
'layout-header': 'layout',
'month-picker': 'date-picker',
'range-picker': 'date-picker',
'image-preview-group': 'image'
}
return ignoreList.includes(name)
? ''
: replaceList.hasOwnProperty(name)
? `ant-design-vue/es/${replaceList[name]}/style/index`
: `ant-design-vue/es/${name}/style/index`
}
}
]
})
return styleImportPlugin
}

View File

@@ -3,16 +3,16 @@
* https://github.com/anncwb/vite-plugin-svg-icons
*/
import path from 'node:path'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'
import { PluginOption } from 'vite'
import type { PluginOption } from 'vite'
export function configSvgIconsPlugin(isBuild: boolean) {
const svgIconsPlugin = createSvgIconsPlugin({
iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
svgoOptions: isBuild,
// default
symbolId: 'icon-[dir]-[name]'
symbolId: 'icon-[dir]-[name]',
})
return svgIconsPlugin as PluginOption
}

View File

@@ -1,83 +0,0 @@
/**
* Vite plugin for website theme color switching
* https://github.com/xingyuv/vite-vue-plugin-theme
*/
import type { PluginOption } from 'vite'
import path from 'path'
import { viteThemePlugin, antdDarkThemePlugin, mixLighten, mixDarken, tinycolor } from 'vite-vue-plugin-theme'
import { getThemeColors, generateColors } from '../../config/themeConfig'
import { generateModifyVars } from '../../generate/generateModifyVars'
export function configThemePlugin(isBuild: boolean): PluginOption[] {
const colors = generateColors({
mixDarken,
mixLighten,
tinycolor
})
const plugin = [
viteThemePlugin({
resolveSelector: (s) => {
s = s.trim()
switch (s) {
case '.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon':
return '.ant-steps-item-icon > .ant-steps-icon'
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)':
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover':
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active':
return s
case '.ant-steps-item-icon > .ant-steps-icon':
return s
case '.ant-select-item-option-selected:not(.ant-select-item-option-disabled)':
return s
default:
if (s.indexOf('.ant-btn') >= -1) {
// 按钮被重新定制过需要过滤掉class防止覆盖
return s
}
}
return s.startsWith('[data-theme') ? s : `[data-theme] ${s}`
},
colorVariables: [...getThemeColors(), ...colors]
}),
antdDarkThemePlugin({
preloadFiles: [
path.resolve(process.cwd(), 'node_modules/ant-design-vue/dist/antd.less'),
//path.resolve(process.cwd(), 'node_modules/ant-design-vue/dist/antd.dark.less'),
path.resolve(process.cwd(), 'src/design/index.less')
],
filter: (id) => (isBuild ? !id.endsWith('antd.less') : true),
// extractCss: false,
darkModifyVars: {
...generateModifyVars(true),
'text-color': '#c9d1d9',
'primary-1': 'rgb(255 255 255 / 8%)',
'text-color-base': '#c9d1d9',
'component-background': '#151515',
'heading-color': 'rgb(255 255 255 / 65%)',
// black: '#0e1117',
// #8b949e
'text-color-secondary': '#8b949e',
'border-color-base': '#303030',
// 'border-color-split': '#30363d',
'item-active-bg': '#111b26',
'app-content-background': '#1e1e1e',
'tree-node-selected-bg': '#11263c',
'alert-success-border-color': '#274916',
'alert-success-bg-color': '#162312',
'alert-success-icon-color': '#49aa19',
'alert-info-border-color': '#153450',
'alert-info-bg-color': '#111b26',
'alert-info-icon-color': '#177ddc',
'alert-warning-border-color': '#594214',
'alert-warning-bg-color': '#2b2111',
'alert-warning-icon-color': '#d89614',
'alert-error-border-color': '#58181c',
'alert-error-bg-color': '#2a1215',
'alert-error-icon-color': '#a61d24'
}
})
]
return plugin as unknown as PluginOption[]
}

View File

@@ -2,8 +2,8 @@
* Package file volume analysis
*/
import visualizer from 'rollup-plugin-visualizer'
import type { PluginOption } from 'vite'
import { isReportMode } from '../../utils'
import { PluginOption } from 'vite'
export function configVisualizerConfig() {
if (isReportMode()) {
@@ -11,7 +11,7 @@ export function configVisualizerConfig() {
filename: './node_modules/.cache/visualizer/stats.html',
open: true,
gzipSize: true,
brotliSize: true
brotliSize: true,
}) as PluginOption
}
return []

View File

@@ -22,12 +22,12 @@ export function createProxy(list: ProxyList = []) {
// https://github.com/http-party/node-http-proxy#options
ret[prefix] = {
target: target,
target,
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp(`^${prefix}`), ''),
rewrite: path => path.replace(new RegExp(`^${prefix}`), ''),
// https is require secure=false
...(isHttps ? { secure: false } : {})
...(isHttps ? { secure: false } : {}),
}
}
return ret

View File

@@ -1,25 +1,25 @@
const fs = require('fs')
const path = require('path')
const { execSync } = require('child_process')
const fs = require('node:fs')
const path = require('node:path')
const { execSync } = require('node:child_process')
const scopes = fs
.readdirSync(path.resolve(__dirname, 'src'), { withFileTypes: true })
.filter((dirent) => dirent.isDirectory())
.map((dirent) => dirent.name.replace(/s$/, ''))
.filter(dirent => dirent.isDirectory())
.map(dirent => dirent.name.replace(/s$/, ''))
// precomputed scope
const scopeComplete = execSync('git status --porcelain || true')
.toString()
.trim()
.split('\n')
.find((r) => ~r.indexOf('M src'))
.find(r => ~r.indexOf('M src'))
?.replace(/(\/)/g, '%%')
?.match(/src%%((\w|-)*)/)?.[1]
?.replace(/s$/, '')
/** @type {import('cz-git').UserConfig} */
module.exports = {
ignores: [(commit) => commit.includes('init')],
ignores: [commit => commit.includes('init')],
extends: ['@commitlint/config-conventional'],
rules: {
'body-leading-blank': [2, 'always'],
@@ -31,8 +31,8 @@ module.exports = {
'type-enum': [
2,
'always',
['feat', 'fix', 'perf', 'style', 'docs', 'test', 'refactor', 'build', 'ci', 'chore', 'revert', 'wip', 'workflow', 'types', 'release']
]
['feat', 'fix', 'perf', 'style', 'docs', 'test', 'refactor', 'build', 'ci', 'chore', 'revert', 'wip', 'workflow', 'types', 'release'],
],
},
prompt: {
/** @use `yarn commit :f` */
@@ -41,7 +41,7 @@ module.exports = {
r: 'docs: update README',
s: 'style: update code format',
b: 'build: bump dependencies',
c: 'chore: update config'
c: 'chore: update config',
},
customScopesAlign: !scopeComplete ? 'top' : 'bottom',
defaultScope: scopeComplete,
@@ -53,7 +53,7 @@ module.exports = {
typesAppend: [
{ value: 'wip', name: 'wip: work in process' },
{ value: 'workflow', name: 'workflow: workflow improvements' },
{ value: 'types', name: 'types: type definition file changes' }
{ value: 'types', name: 'types: type definition file changes' },
],
// 中英文对照版
@@ -67,7 +67,7 @@ module.exports = {
footerPrefixsSelect: '选择关联issue前缀 (可选):',
customFooterPrefixs: '输入自定义issue前缀 :',
footer: '列举关联issue (可选) 例如: #31, #I3244 :\n',
confirmCommit: '是否提交或修改commit ?'
confirmCommit: '是否提交或修改commit ?',
},
types: [
{ value: 'feat', name: 'feat: 新增功能' },
@@ -83,9 +83,9 @@ module.exports = {
{ value: 'chore', name: 'chore: 对构建过程或辅助工具和库的更改 (不影响源文件、测试用例)' },
{ value: 'wip', name: 'wip: 正在开发中' },
{ value: 'workflow', name: 'workflow: 工作流程改进' },
{ value: 'types', name: 'types: 类型定义文件修改' }
{ value: 'types', name: 'types: 类型定义文件修改' },
],
emptyScopesAlias: 'empty: 不填写',
customScopesAlias: 'custom: 自定义'
}
customScopesAlias: 'custom: 自定义',
},
}

14
eslint.config.js Normal file
View File

@@ -0,0 +1,14 @@
const antfu = require('@antfu/eslint-config').default
const unocss = require('@unocss/eslint-plugin')
module.exports = antfu(
{
rules: {
'no-console': 'off',
'node/prefer-global/process': 'off',
'vue/custom-event-name-casing': 'off',
'vue/component-name-in-template-casing': 'off',
},
},
unocss.configs.flat,
)

View File

@@ -4,29 +4,34 @@
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="renderer" content="webkit" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<meta
name="viewport"
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
/>
<title>%VITE_GLOB_APP_TITLE%</title>
<link rel="icon" href="/favicon.ico" />
</head>
<body>
<script>
(() => {
var htmlRoot = document.getElementById('htmlRoot');
var theme = window.localStorage.getItem('__APP__DARK__MODE__');
let htmlRoot = document.getElementById('htmlRoot')
let theme = window.localStorage.getItem('__APP__DARK__MODE__')
if (htmlRoot && theme) {
htmlRoot.setAttribute('data-theme', theme);
theme = htmlRoot = null;
htmlRoot.setAttribute('data-theme', theme)
theme = htmlRoot = null
}
})();
})()
</script>
<div id="app">
<style>
html[data-theme='dark'] .app-loading {
background-color: #2c344a;
}
html[data-theme="dark"] {
.app-loading {
background-color: #2c344a;
html[data-theme='dark'] .app-loading .app-loading-title {
color: rgb(255 255 255 / 85%);
.app-loading-title {
color: rgb(255 255 255 / 85%);
}
}
}
.app-loading {
@@ -69,7 +74,8 @@
.app-loading .app-loading-logo {
display: block;
width: 90px;
margin: 0 auto 20px;
margin: 0 auto;
margin-bottom: 20px;
}
.dot {

View File

@@ -1,11 +1,25 @@
{
"name": "yudao-ui-admin-vben",
"version": "1.7.3",
"version": "1.8.3-snapshot",
"packageManager": "pnpm@8.9.0",
"author": {
"name": "xingyuv",
"email": "xingyu4j@vip.qq.com",
"url": "https://gitee.com/xingyuv"
},
"license": "MIT",
"homepage": "https://gitee.com/xingyuv",
"repository": {
"type": "git",
"url": "git+https://gitee.com/xingyuv/vue-vben-admin.git"
},
"bugs": {
"url": "https://gitee.com/xingyuv/issues"
},
"engines": {
"node": "^18.0.0 || >=20.0.0",
"pnpm": ">=8.9.0"
},
"scripts": {
"commit": "czg",
"bootstrap": "pnpm install",
@@ -13,142 +27,122 @@
"dev": "vite",
"front": "vite --mode front",
"build": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=8192 vite build && esno ./build/script/postBuild.ts",
"build:test": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode test && esno ./build/script/postBuild.ts",
"build:test": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode test && esno ./build/script/postBuild.ts",
"build:static": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode static && esno ./build/script/postBuild.ts",
"build:no-cache": "pnpm clean:cache && pnpm build",
"build:no-cache": "pnpm store prune && pnpm build",
"report": "cross-env REPORT=true pnpm build",
"type:check": "vue-tsc --noEmit --skipLibCheck",
"preview": "pnpm build && vite preview",
"preview:dist": "vite preview",
"log": "conventional-changelog -p angular -i CHANGELOG.md -s",
"clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
"clean:lib": "rimraf node_modules",
"lint:eslint": "eslint --cache --max-warnings 0 \"src/**/*.{vue,ts,tsx}\" --fix",
"lint:prettier": "prettier --write \"src/**/*.{js,json,ts,tsx,css,less,scss,vue,html,md}\"",
"lint:style": "stylelint --cache --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
"lint": "eslint \"src/**/*.{vue,ts,tsx}\"",
"lint:fix": "eslint \"src/**/*.{vue,ts,tsx}\" --fix",
"lint:stylelint": "stylelint \"src/**/*.{vue,css,less,scss}\" --fix --cache --cache-location node_modules/.cache/stylelint/",
"lint:lint-staged": "lint-staged",
"npm:check": "npx npm-check-updates",
"reinstall": "rimraf pnpm-lock.yaml && rimraf package.lock.json && rimraf node_modules && pnpm bootstrap",
"reinstall": "rimraf pnpm-lock.yaml && rimraf node_modules && pnpm bootstrap",
"prepare": "husky install",
"gen:icon": "esno ./build/generate/icon/index.ts"
},
"dependencies": {
"@ant-design/colors": "^7.0.0",
"@ant-design/icons-vue": "^6.1.0",
"@iconify/iconify": "^3.1.0",
"@vue/runtime-core": "^3.3.4",
"@vueuse/core": "^10.1.2",
"@zxcvbn-ts/core": "^3.0.2",
"ant-design-vue": "^3.2.20",
"axios": "^1.4.0",
"codemirror": "^5.65.3",
"cron-parser": "^4.8.1",
"cropperjs": "^1.5.13",
"@ant-design/icons-vue": "^7.0.1",
"@iconify/iconify": "^3.1.1",
"@videojs-player/vue": "^1.0.0",
"@vue/runtime-core": "^3.3.7",
"@vueuse/core": "^10.5.0",
"@zxcvbn-ts/core": "^3.0.4",
"ant-design-vue": "^4.0.6",
"axios": "^1.5.1",
"benz-amr-recorder": "^1.1.5",
"codemirror": "5.65.15",
"cron-parser": "^4.9.0",
"cropperjs": "^1.6.1",
"crypto-js": "^4.1.1",
"dayjs": "^1.11.8",
"echarts": "^5.4.2",
"dayjs": "^1.11.10",
"echarts": "^5.4.3",
"lodash-es": "^4.17.21",
"nprogress": "^0.2.0",
"path-to-regexp": "^6.2.1",
"pinia": "^2.1.3",
"pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.0",
"print-js": "^1.6.0",
"qrcode": "^1.5.3",
"qs": "^6.11.2",
"resize-observer-polyfill": "^1.5.1",
"sortablejs": "^1.15.0",
"tinymce": "^5.10.7",
"vditor": "^3.9.3",
"vue": "^3.3.4",
"vue-i18n": "^9.2.2",
"tinymce": "5.10.7",
"vditor": "^3.9.6",
"video-js": "^0.7.0",
"vue": "^3.3.7",
"vue-i18n": "^9.5.0",
"vue-json-pretty": "^2.2.4",
"vue-router": "^4.2.2",
"vue-types": "^5.0.3",
"vue-router": "^4.2.5",
"vue-types": "^5.1.1",
"vuedraggable": "^4.1.0",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@commitlint/cli": "^17.6.5",
"@commitlint/config-conventional": "^17.6.5",
"@iconify/json": "^2.2.75",
"@antfu/eslint-config": "^1.0.0-beta.28",
"@commitlint/cli": "^18.0.0",
"@commitlint/config-conventional": "^18.0.0",
"@iconify/json": "^2.2.132",
"@purge-icons/generated": "^0.9.0",
"@types/codemirror": "^5.60.8",
"@types/crypto-js": "^4.1.1",
"@types/fs-extra": "^11.0.1",
"@types/inquirer": "^9.0.3",
"@types/lodash-es": "^4.17.7",
"@types/node": "^20.2.5",
"@types/nprogress": "^0.2.0",
"@types/qrcode": "^1.5.0",
"@types/qs": "^6.9.7",
"@types/sortablejs": "^1.15.1",
"@typescript-eslint/eslint-plugin": "^5.59.9",
"@typescript-eslint/parser": "^5.59.9",
"@vitejs/plugin-vue": "4.2.3",
"@vitejs/plugin-vue-jsx": "^3.0.1",
"@vue/compiler-sfc": "^3.3.4",
"autoprefixer": "^10.4.14",
"conventional-changelog-cli": "^3.0.0",
"@types/codemirror": "^5.60.12",
"@types/crypto-js": "^4.1.3",
"@types/fs-extra": "^11.0.3",
"@types/inquirer": "^9.0.6",
"@types/lodash-es": "^4.17.10",
"@types/node": "^20.8.8",
"@types/nprogress": "^0.2.2",
"@types/qs": "^6.9.9",
"@types/sortablejs": "^1.15.4",
"@unocss/eslint-config": "^0.57.1",
"@vitejs/plugin-vue": "4.4.0",
"@vitejs/plugin-vue-jsx": "^3.0.2",
"@vue/compiler-sfc": "^3.3.7",
"cross-env": "^7.0.3",
"cz-git": "^1.6.1",
"czg": "^1.6.1",
"dotenv": "^16.1.4",
"eslint": "^8.42.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-vue": "^9.14.1",
"esno": "^0.16.3",
"cz-git": "^1.7.1",
"czg": "^1.7.1",
"dotenv": "^16.3.1",
"eslint": "^8.52.0",
"esno": "^0.17.0",
"fs-extra": "^11.1.1",
"husky": "^8.0.3",
"inquirer": "^9.2.7",
"less": "^4.1.3",
"lint-staged": "^13.2.2",
"inquirer": "^9.2.11",
"less": "^4.2.0",
"lint-staged": "^15.0.2",
"picocolors": "^1.0.0",
"postcss": "^8.4.24",
"postcss": "^8.4.31",
"postcss-html": "^1.5.0",
"postcss-less": "^6.0.0",
"prettier": "^2.8.8",
"rimraf": "^5.0.1",
"rollup": "^3.24.0",
"rollup-plugin-visualizer": "^5.9.0",
"stylelint": "^15.7.0",
"stylelint-config-recommended": "^12.0.0",
"stylelint-config-recommended-vue": "^1.4.0",
"stylelint-config-standard": "^33.0.0",
"prettier": "^3.0.3",
"rimraf": "^5.0.5",
"rollup": "^4.1.4",
"rollup-plugin-visualizer": "^5.9.2",
"stylelint": "^15.11.0",
"stylelint-config-recess-order": "^4.3.0",
"stylelint-config-recommended": "^13.0.0",
"stylelint-config-recommended-vue": "^1.5.0",
"stylelint-config-standard": "^34.0.0",
"stylelint-order": "^6.0.3",
"terser": "^5.17.7",
"typescript": "^5.1.3",
"vite": "^4.3.9",
"stylelint-prettier": "^4.0.2",
"terser": "^5.22.0",
"typescript": "^5.2.2",
"unocss": "^0.57.1",
"vite": "^4.5.0",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-mkcert": "^1.15.0",
"vite-plugin-mkcert": "^1.16.0",
"vite-plugin-progress": "^0.0.7",
"vite-plugin-purge-icons": "^0.9.2",
"vite-plugin-pwa": "^0.16.3",
"vite-plugin-style-import": "^2.0.0",
"vite-plugin-pwa": "^0.16.5",
"vite-plugin-svg-icons": "^2.0.1",
"vite-plugin-windicss": "^1.9.0",
"vite-vue-plugin-html": "^1.0.2",
"vite-vue-plugin-theme": "^1.0.2",
"vue-eslint-parser": "^9.3.0",
"vue-tsc": "^1.6.5"
},
"repository": {
"type": "git",
"url": "git+https://gitee.com/xingyuv/vue-vben-admin.git"
},
"license": "MIT",
"bugs": {
"url": "https://gitee.com/xingyuv/issues"
},
"homepage": "https://gitee.com/xingyuv",
"packageManager": "pnpm@8.6.0",
"engines": {
"node": ">= 16.0.0",
"pnpm": ">=8.6.0"
"vite-vue-plugin-html": "^1.0.3",
"vue-tsc": "^1.8.20"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
"eslint --fix"
],
"{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": [
"prettier --write--parser json"
@@ -158,12 +152,10 @@
],
"*.vue": [
"eslint --fix",
"prettier --write",
"stylelint --fix"
],
"*.{scss,less,styl,html}": [
"stylelint --fix",
"prettier --write"
"stylelint --fix"
],
"*.md": [
"prettier --write"

7668
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +0,0 @@
module.exports = {
plugins: {
autoprefixer: {}
}
}

View File

@@ -1,37 +0,0 @@
module.exports = {
// 一行代码的最大字符数默认是80
printWidth: 140,
// tab宽度为2空格
tabWidth: 2,
// 使用tab缩进默认false
useTabs: false,
// 结尾是否添加分号, 默认true
semi: false,
// vue script和style标签中是否缩进,开启可能会破坏编辑器的代码折叠
vueIndentScriptAndStyle: false,
// 使用单引号, 默认false(在jsx中配置无效, 默认都是双引号)
singleQuote: true,
// object对象中key值是否加引号 as-needed只有在需求要的情况下加引号consistent是有一个需要引号就统一加preserve是保留用户输入的引号
quoteProps: 'as-needed',
// object对象里面的key和value值和括号间的空格
bracketSpacing: true,
// 行尾逗号,默认none,可选 none|es5|all
// es5 包括es5中的数组、对象
// all 包括函数对象等所有可选
trailingComma: 'none',
// 在jsx文件中的引号需要单独设置 默认false
jsxSingleQuote: false,
// 箭头函数单个参数的情况是否省略括号默认always是总是带括号
// avoid 能省略括号的时候就省略 例如x => x
// always 总是有括号
arrowParens: 'always',
insertPragma: false,
requirePragma: false,
proseWrap: 'never',
htmlWhitespaceSensitivity: 'strict',
// endOfLine: "<lf|crlf|cr|auto>" 行尾换行符,默认是lf
endOfLine: 'auto',
// range是format执行的范围可以选执行一个文件的一部分默认的设置是整个文件
rangeStart: 0,
rangeEnd: Infinity
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 179 KiB

BIN
public/resource/img/wx2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

View File

@@ -1,27 +1,31 @@
<template>
<ConfigProvider :locale="getAntdLocale" :component-size="componentSize">
<AppProvider>
<RouterView />
</AppProvider>
</ConfigProvider>
</template>
<script lang="ts" setup>
import 'dayjs/locale/zh-cn'
import { App, ConfigProvider } from 'ant-design-vue'
import { storeToRefs } from 'pinia'
import { computed } from 'vue'
import { ConfigProvider } from 'ant-design-vue'
import { AppProvider } from '@/components/Application'
import { useTitle } from '@/hooks/web/useTitle'
import { useLocale } from '@/locales/useLocale'
import { useAppStore } from '@/store/modules/app'
import 'dayjs/locale/zh-cn'
// support Multi-language
const { getAntdLocale } = useLocale()
const appStore = useAppStore()
const { themeConfig } = storeToRefs(appStore)
const componentSize = computed(() => appStore.getComponentSize)
// Listening to page changes and dynamically changing site titles
useTitle()
</script>
<template>
<ConfigProvider :locale="getAntdLocale" :theme="themeConfig" :component-size="componentSize">
<App class="h-full w-full">
<AppProvider>
<RouterView />
</AppProvider>
</App>
</ConfigProvider>
</template>

View File

@@ -1,5 +1,5 @@
import type { TentantNameVO } from './model/loginModel'
import { defHttp } from '@/utils/http/axios'
import { TentantNameVO } from './model/loginModel'
import { getRefreshToken } from '@/utils/auth'
enum Api {
@@ -8,14 +8,14 @@ enum Api {
GetTenantIdByName = '/system/tenant/get-id-by-name?name=',
LoginOut = '/system/auth/logout',
GetUserInfo = '/system/auth/get-permission-info',
GetAsyncRoutes = '/system/auth/list-menus',
GetCaptcha = '/system/captcha/get',
CheckCaptcha = '/system/captcha/check'
CheckCaptcha = '/system/captcha/check',
}
// 刷新访问令牌
export function refreshToken() {
return defHttp.post({ url: Api.RefreshToken + getRefreshToken() })
const refreshToken: string = getRefreshToken()
return defHttp.post({ url: Api.RefreshToken + refreshToken })
}
// 使用租户名,获得租户编号
@@ -33,19 +33,14 @@ export function getUserInfo() {
return defHttp.get({ url: Api.GetUserInfo })
}
// 路由
export function getAsyncRoutes() {
return defHttp.get({ url: Api.GetAsyncRoutes })
}
// 获取登录验证码
export function sendSmsCode(mobile, scene) {
return defHttp.post({
url: '/system/auth/send-sms-code',
data: {
mobile,
scene
}
scene,
},
})
}
@@ -62,31 +57,31 @@ export function checkCaptcha(data) {
// ========== OAUTH 2.0 相关 ==========
export function getAuthorize(clientId) {
return defHttp.get({ url: '/system/oauth2/authorize?clientId=' + clientId })
return defHttp.get({ url: `/system/oauth2/authorize?clientId=${clientId}` })
}
export function authorize(responseType, clientId, redirectUri, state, autoApprove, checkedScopes, uncheckedScopes) {
// 构建 scopes
const scopes = {}
for (const scope of checkedScopes) {
for (const scope of checkedScopes)
scopes[scope] = true
}
for (const scope of uncheckedScopes) {
for (const scope of uncheckedScopes)
scopes[scope] = false
}
// 发起请求
return defHttp.post({
url: '/system/oauth2/authorize',
headers: {
'Content-type': 'application/x-www-form-urlencoded'
'Content-type': 'application/x-www-form-urlencoded',
},
params: {
response_type: responseType,
client_id: clientId,
redirect_uri: redirectUri,
state: state,
state,
auto_approve: autoApprove,
scope: JSON.stringify(scopes)
}
scope: JSON.stringify(scopes),
},
})
}

View File

@@ -1,14 +0,0 @@
import { defHttp } from '@/utils/http/axios'
import { getMenuListResultModel } from './model/menuModel'
enum Api {
GetMenuList = '/system/auth/list-menus'
}
/**
* @description: Get user menu based on id
*/
export function getMenuList() {
return defHttp.get<getMenuListResultModel>({ url: Api.GetMenuList })
}

View File

@@ -1,9 +1,9 @@
export type UserLoginVO = {
export interface UserLoginVO {
username: string
password: string
captchaVerification: string
}
export type TentantNameVO = {
export interface TentantNameVO {
id: number
}

View File

@@ -1,4 +1,5 @@
import type { RouteMeta } from 'vue-router'
export interface RouteItem {
path: string
component: any
@@ -9,8 +10,3 @@ export interface RouteItem {
caseSensitive?: boolean
children?: RouteItem[]
}
/**
* @description: Get menu return value
*/
export type getMenuListResultModel = RouteItem[]

View File

@@ -1,3 +1,5 @@
import type { RouteItem } from './menuModel'
/**
* @description: Login interface parameters
*/
@@ -31,6 +33,7 @@ export interface LoginResultModel {
export interface GetUserInfoModel {
roles: string[]
permissions: string[]
menus: RouteItem[]
// 用户id
user: userModel
}

View File

@@ -57,7 +57,7 @@ enum Api {
uploadAvatarApi = '/system/user/profile/update-avatar',
updateUserPwdApi = '/system/user/profile/update-password',
socialBindApi = '/system/social-user/bind',
socialUnbindApi = '/system/social-user/unbind'
socialUnbindApi = '/system/social-user/unbind',
}
/**
@@ -79,9 +79,9 @@ export function updateUserPwdApi(oldPassword: string, newPassword: string) {
return defHttp.put({
url: Api.updateUserPwdApi,
data: {
oldPassword: oldPassword,
newPassword: newPassword
}
oldPassword,
newPassword,
},
})
}
@@ -91,10 +91,9 @@ export function uploadAvatarApi(data) {
url: Api.uploadAvatarApi,
headers: {
'Content-type': ContentTypeEnum.FORM_DATA,
// @ts-ignore
ignoreCancelToken: true
'ignoreCancelToken': true,
},
data
data,
})
}
@@ -105,8 +104,8 @@ export function socialBind(type, code, state) {
data: {
type,
code,
state
}
state,
},
})
}
@@ -116,14 +115,14 @@ export function socialUnbind(type, openid) {
url: Api.socialUnbindApi,
data: {
type,
openid
}
openid,
},
})
}
// 社交授权的跳转
export function socialAuthRedirect(type, redirectUri) {
return defHttp.get({
url: '/system/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri
url: `/system/auth/social-auth-redirect?type=${type}&redirectUri=${redirectUri}`,
})
}

View File

@@ -1,8 +1,8 @@
import { UploadApiResult } from './model/uploadModel'
import type { AxiosProgressEvent } from 'axios'
import type { UploadApiResult } from './model/uploadModel'
import { defHttp } from '@/utils/http/axios'
import { UploadFileParams } from '@/types/axios'
import type { UploadFileParams } from '@/types/axios'
import { useGlobSetting } from '@/hooks/setting'
import { AxiosProgressEvent } from 'axios'
const { uploadUrl = '' } = useGlobSetting()
@@ -13,8 +13,8 @@ export function uploadApi(params: UploadFileParams, onUploadProgress: (progressE
return defHttp.uploadFile<UploadApiResult>(
{
url: uploadUrl,
onUploadProgress
onUploadProgress,
},
params
params,
)
}

View File

@@ -1,13 +1,13 @@
import type { GetUserInfoModel, LoginParams, LoginResultModel, SmsLoginParams } from './model/userModel'
import { defHttp } from '@/utils/http/axios'
import { LoginParams, LoginResultModel, GetUserInfoModel, SmsLoginParams } from './model/userModel'
import { ErrorMessageMode } from '@/types/axios'
import type { ErrorMessageMode } from '@/types/axios'
enum Api {
Login = '/system/auth/login',
Logout = '/system/auth/logout',
SmsLogin = '/system/auth/sms-login',
GetUserInfo = '/system/auth/get-permission-info'
GetUserInfo = '/system/auth/get-permission-info',
}
/**

View File

@@ -0,0 +1,5 @@
import { defHttp } from '@/utils/http/axios'
export function getActivityList(params) {
return defHttp.get({ url: '/bpm/activity/list', params })
}

View File

@@ -9,5 +9,5 @@ export function getProcessDefinitionList(params) {
}
export function getProcessDefinitionBpmnXML(id) {
return defHttp.get({ url: '/bpm/process-definition/get-bpmn-xml?id=' + id })
return defHttp.get({ url: `/bpm/process-definition/get-bpmn-xml?id=${id}` })
}

View File

@@ -1,6 +1,6 @@
import { defHttp } from '@/utils/http/axios'
export type FormVO = {
export interface FormVO {
id: number
name: string
conf: string
@@ -22,12 +22,12 @@ export function updateForm(data: FormVO) {
// 删除工作流的表单定义
export function deleteForm(id: number) {
return defHttp.delete({ url: '/bpm/form/delete?id=' + id })
return defHttp.delete({ url: `/bpm/form/delete?id=${id}` })
}
// 获得工作流的表单定义
export function getForm(id: number) {
return defHttp.get({ url: '/bpm/form/get?id=' + id })
return defHttp.get({ url: `/bpm/form/get?id=${id}` })
}
// 获得工作流的表单定义分页

View File

@@ -1,6 +1,6 @@
import { defHttp } from '@/utils/http/axios'
export type LeaveVO = {
export interface LeaveVO {
id: number
result: number
type: number
@@ -18,7 +18,7 @@ export function createLeave(data: LeaveVO) {
// 获得请假申请
export function getLeave(id: number) {
return defHttp.get({ url: '/bpm/oa/leave/get?id=' + id })
return defHttp.get({ url: `/bpm/oa/leave/get?id=${id}` })
}
// 获得请假申请分页

View File

@@ -1,19 +1,13 @@
import { UploadApiResult } from '@/api/base/model/uploadModel'
import { useGlobSetting } from '@/hooks/setting'
import { UploadFileParams } from '@/types/axios'
import { defHttp } from '@/utils/http/axios'
import { AxiosProgressEvent } from 'axios'
const { apiUrl = '' } = useGlobSetting()
export type ProcessDefinitionVO = {
export interface ProcessDefinitionVO {
id: string
version: number
deploymentTIme: string
suspensionState: number
}
export type ModelVO = {
export interface ModelVO {
id: number
formName: string
key: string
@@ -35,7 +29,7 @@ export function getModelPage(params) {
}
export function getModel(id: number) {
return defHttp.get({ url: '/bpm/model/get?id=' + id })
return defHttp.get({ url: `/bpm/model/get?id=${id}` })
}
export function updateModel(data: ModelVO) {
@@ -43,7 +37,11 @@ export function updateModel(data: ModelVO) {
}
// 任务状态修改
export function updateModelState(data) {
export function updateModelState(id: number, state: number) {
const data = {
id,
state,
}
return defHttp.put({ url: '/bpm/model/update-state', data })
}
@@ -52,19 +50,13 @@ export function createModel(data: ModelVO) {
}
export function deleteModel(id: number) {
return defHttp.delete({ url: '/bpm/model/delete?id=' + id })
return defHttp.delete({ url: `/bpm/model/delete?id=${id}` })
}
export function deployModel(id: number) {
return defHttp.post({ url: '/bpm/model/deploy?id=' + id })
return defHttp.post({ url: `/bpm/model/deploy?id=${id}` })
}
export function importModel(params: UploadFileParams, onUploadProgress: (progressEvent: AxiosProgressEvent) => void) {
return defHttp.uploadFile<UploadApiResult>(
{
url: apiUrl + '/bpm/model/import',
onUploadProgress
},
params
)
export function importModel(data) {
return defHttp.post({ url: '/bpm/model/import', data })
}

View File

@@ -1,40 +1,21 @@
import { defHttp } from '@/utils/http/axios'
export type task = {
id: string
name: string
}
export type ProcessInstanceVO = {
id: number
name: string
processDefinitionId: string
category: string
result: number
tasks: task[]
fields: string[]
status: number
remark: string
businessKey: string
createTime: string
endTime: string
}
export function getMyProcessInstancePage(params) {
return defHttp.get({ url: '/bpm/process-instance/my-page', params })
}
export function createProcessInstance(data: ProcessInstanceVO) {
export function createProcessInstance(data) {
return defHttp.post({ url: '/bpm/process-instance/create', data })
}
export function cancelProcessInstance(id: number, reason: string) {
const data = {
id: id,
reason: reason
id,
reason,
}
return defHttp.delete({ url: '/bpm/process-instance/cancel', data })
}
export function getProcessInstance(id: number) {
return defHttp.get({ url: '/bpm/process-instance/get?id=' + id })
return defHttp.get({ url: `/bpm/process-instance/get?id=${id}` })
}

View File

@@ -29,6 +29,11 @@ export function updateTaskAssignee(data) {
export function getTaskListByProcessInstanceId(processInstanceId) {
return defHttp.get({
url: '/bpm/task/list-by-process-instance-id?processInstanceId=' + processInstanceId
url: `/bpm/task/list-by-process-instance-id?processInstanceId=${processInstanceId}`,
})
}
// 导出任务
export async function exportTask(params) {
return await defHttp.download({ url: '/bpm/task/export', params })
}

View File

@@ -1,39 +0,0 @@
export type FormVO = {
id: number
name: string
conf: string
fields: string[]
status: number
remark: string
createTime: string
}
export type TaskProcessVO = {
id: string
name: string
startUserId: number
startUserNickname: string
processDefinitionId: string
}
export type TaskTodoVO = {
id: string
name: string
claimTime: string
createTime: string
suspensionState: number
processInstance: TaskProcessVO
}
export type TaskDoneVO = {
id: string
name: string
claimTime: string
createTime: string
endTime: string
durationInMillis: number
suspensionState: number
result: number
reason: string
processInstance: TaskProcessVO
}

View File

@@ -1,6 +1,6 @@
import { defHttp } from '@/utils/http/axios'
export type TaskAssignVO = {
export interface TaskAssignVO {
id: number
modelId: string
processDefinitionId: string

View File

@@ -1,6 +1,6 @@
import { defHttp } from '@/utils/http/axios'
export type UserGroupVO = {
export interface UserGroupVO {
id: number
name: string
description: string
@@ -22,12 +22,12 @@ export function updateUserGroup(data: UserGroupVO) {
// 删除用户组
export function deleteUserGroup(id: number) {
return defHttp.delete({ url: '/bpm/user-group/delete?id=' + id })
return defHttp.delete({ url: `/bpm/user-group/delete?id=${id}` })
}
// 获得用户组
export function getUserGroup(id: number) {
return defHttp.get({ url: '/bpm/user-group/get?id=' + id })
return defHttp.get({ url: `/bpm/user-group/get?id=${id}` })
}
// 获得用户组分页

View File

@@ -53,7 +53,7 @@ export function getApiErrorLogPage(params: ApiErrorLogPageReqVO) {
// 更新 API 错误日志的处理状态
export function updateApiErrorLogProcess(id: number, processStatus: number) {
return defHttp.put({
url: '/infra/api-error-log/update-status?id=' + id + '&processStatus=' + processStatus
url: `/infra/api-error-log/update-status?id=${id}&processStatus=${processStatus}`,
})
}
@@ -62,8 +62,8 @@ export function exportApiErrorLog(params: ApiErrorLogExportReqVO) {
return defHttp.download(
{
url: '/infra/api-error-log/export-excel',
params
params,
},
'错误日志.xls'
'错误日志.xls',
)
}

View File

@@ -1,5 +1,5 @@
import type { CodegenCreateListReqVO, CodegenUpdateReqVO } from './types'
import { defHttp } from '@/utils/http/axios'
import type { CodegenUpdateReqVO, CodegenCreateListReqVO } from './types'
// 查询列表代码生成表定义
export function getCodegenTablePage(params) {
@@ -8,7 +8,7 @@ export function getCodegenTablePage(params) {
// 查询详情代码生成表定义
export function getCodegenTable(id: number) {
return defHttp.get({ url: '/infra/codegen/detail?tableId=' + id })
return defHttp.get({ url: `/infra/codegen/detail?tableId=${id}` })
}
// 新增代码生成表定义
@@ -23,22 +23,22 @@ export function updateCodegenTable(data: CodegenUpdateReqVO) {
// 基于数据库的表结构,同步数据库的表和字段定义
export function syncCodegenFromDB(id: number) {
return defHttp.put({ url: '/infra/codegen/sync-from-db?tableId=' + id })
return defHttp.put({ url: `/infra/codegen/sync-from-db?tableId=${id}` })
}
// 基于 SQL 建表语句,同步数据库的表和字段定义
export function syncCodegenFromSQL(id: number, sql: string) {
return defHttp.put({ url: '/infra/codegen/sync-from-sql?tableId=' + id + '&sql=' + sql })
return defHttp.put({ url: `/infra/codegen/sync-from-sql?tableId=${id}&sql=${sql}` })
}
// 预览生成代码
export function previewCodegen(id: number) {
return defHttp.get({ url: '/infra/codegen/preview?tableId=' + id })
return defHttp.get({ url: `/infra/codegen/preview?tableId=${id}` })
}
// 下载生成代码
export function downloadCodegen(data) {
return defHttp.download({ url: '/infra/codegen/download?tableId=' + data.id }, data.tableName + '.zip')
return defHttp.download({ url: `/infra/codegen/download?tableId=${data.id}` }, `${data.tableName}.zip`)
}
// 获得表定义
@@ -53,5 +53,5 @@ export function createCodegenList(data) {
// 删除代码生成表定义
export function deleteCodegenTable(id: number) {
return defHttp.delete({ url: '/infra/codegen/delete?tableId=' + id })
return defHttp.delete({ url: `/infra/codegen/delete?tableId=${id}` })
}

View File

@@ -1,4 +1,4 @@
export type CodegenTableVO = {
export interface CodegenTableVO {
id: number
tableId: number
isParentMenuIdValid: boolean
@@ -18,7 +18,7 @@ export type CodegenTableVO = {
parentMenuId: number
}
export type CodegenColumnVO = {
export interface CodegenColumnVO {
id: number
tableId: number
columnName: string
@@ -39,23 +39,23 @@ export type CodegenColumnVO = {
listOperationResult: number
htmlType: string
}
export type DatabaseTableVO = {
export interface DatabaseTableVO {
name: string
comment: string
}
export type CodegenDetailVO = {
export interface CodegenDetailVO {
table: CodegenTableVO
columns: CodegenColumnVO[]
}
export type CodegenPreviewVO = {
export interface CodegenPreviewVO {
filePath: string
code: string
}
export type CodegenUpdateReqVO = {
export interface CodegenUpdateReqVO {
table: CodegenTableVO
columns: CodegenColumnVO[]
}
export type CodegenCreateListReqVO = {
export interface CodegenCreateListReqVO {
dataSourceConfigId: number
tableNames: string[]
}

View File

@@ -33,12 +33,12 @@ export function getConfigPage(params: ConfigPageReqVO) {
// 查询参数详情
export function getConfig(id: number) {
return defHttp.get({ url: '/infra/config/get?id=' + id })
return defHttp.get({ url: `/infra/config/get?id=${id}` })
}
// 根据参数键名查询参数值
export function getConfigKey(configKey: string) {
return defHttp.get({ url: '/infra/config/get-value-by-key?key=' + configKey })
return defHttp.get({ url: `/infra/config/get-value-by-key?key=${configKey}` })
}
// 新增参数
@@ -53,7 +53,7 @@ export function updateConfig(data: ConfigVO) {
// 删除参数
export function deleteConfig(id: number) {
return defHttp.delete({ url: '/infra/config/delete?id=' + id })
return defHttp.delete({ url: `/infra/config/delete?id=${id}` })
}
// 导出参数

View File

@@ -16,7 +16,7 @@ export function getDataSourceConfigList() {
// 查询数据源配置详情
export function getDataSourceConfig(id: number) {
return defHttp.get({ url: '/infra/data-source-config/get?id=' + id })
return defHttp.get({ url: `/infra/data-source-config/get?id=${id}` })
}
// 新增数据源配置
@@ -31,5 +31,5 @@ export function updateDataSourceConfig(data: DataSourceConfigVO) {
// 删除数据源配置
export function deleteDataSourceConfig(id: number) {
return defHttp.delete({ url: '/infra/data-source-config/delete?id=' + id })
return defHttp.delete({ url: `/infra/data-source-config/delete?id=${id}` })
}

View File

@@ -24,5 +24,5 @@ export function getFilePage(params: FilePageReqVO) {
// 删除文件
export function deleteFile(id: number) {
return defHttp.delete({ url: '/infra/file/delete?id=' + id })
return defHttp.delete({ url: `/infra/file/delete?id=${id}` })
}

View File

@@ -37,12 +37,12 @@ export function getFileConfigPage(params: FileConfigPageReqVO) {
// 查询文件配置详情
export function getFileConfig(id: number) {
return defHttp.get({ url: '/infra/file-config/get?id=' + id })
return defHttp.get({ url: `/infra/file-config/get?id=${id}` })
}
// 更新文件配置为主配置
export function updateFileConfigMaster(id: number) {
return defHttp.put({ url: '/infra/file-config/update-master?id=' + id })
return defHttp.put({ url: `/infra/file-config/update-master?id=${id}` })
}
// 新增文件配置
@@ -57,10 +57,10 @@ export function updateFileConfig(data: FileConfigVO) {
// 删除文件配置
export function deleteFileConfig(id: number) {
return defHttp.delete({ url: '/infra/file-config/delete?id=' + id })
return defHttp.delete({ url: `/infra/file-config/delete?id=${id}` })
}
// 测试文件配置
export function testFileConfig(id: number) {
return defHttp.get({ url: '/infra/file-config/test?id=' + id })
return defHttp.get({ url: `/infra/file-config/test?id=${id}` })
}

View File

@@ -32,7 +32,7 @@ export function getJobPage(params: JobPageReqVO) {
// 任务详情
export function getJob(id: number) {
return defHttp.get({ url: '/infra/job/get?id=' + id })
return defHttp.get({ url: `/infra/job/get?id=${id}` })
}
// 新增任务
@@ -47,7 +47,7 @@ export function updateJob(data: JobVO) {
// 删除定时任务调度
export function deleteJob(id: number) {
return defHttp.delete({ url: '/infra/job/delete?id=' + id })
return defHttp.delete({ url: `/infra/job/delete?id=${id}` })
}
// 导出定时任务调度
@@ -57,19 +57,15 @@ export function exportJob(params: JobExportReqVO) {
// 任务状态修改
export function updateJobStatus(id: number, status: number) {
const params = {
id,
status
}
return defHttp.put({ url: '/infra/job/update-status', params })
return defHttp.put({ url: `/infra/job/update-status?id=${id}&status=${status}` })
}
// 定时任务立即执行一次
export function runJob(id: number) {
return defHttp.put({ url: '/infra/job/trigger?id=' + id })
return defHttp.put({ url: `/infra/job/trigger?id=${id}` })
}
// 获得定时任务的下 n 次执行时间
export function getJobNextTimes(id: number) {
return defHttp.get({ url: '/infra/job/get_next_times?id=' + id })
return defHttp.get({ url: `/infra/job/get_next_times?id=${id}` })
}

View File

@@ -37,7 +37,7 @@ export function getJobLogPage(params: JobLogPageReqVO) {
// 任务日志详情
export function getJobLog(id: number) {
return defHttp.get({ url: '/infra/job-log/get?id=' + id })
return defHttp.get({ url: `/infra/job-log/get?id=${id}` })
}
// 导出定时任务日志

View File

@@ -6,36 +6,3 @@ import { defHttp } from '@/utils/http/axios'
export function getCache() {
return defHttp.get({ url: '/infra/redis/get-monitor-info' })
}
// 获取模块
export function getKeyDefineList() {
return defHttp.get({ url: '/infra/redis/get-key-define-list' })
}
/**
* 获取redis key列表
*/
export function getKeyList(keyTemplate: string) {
return defHttp.get({
url: '/infra/redis/get-key-list',
params: {
keyTemplate
}
})
}
// 获取缓存内容
export function getKeyValue(key: string) {
return defHttp.get({ url: '/infra/redis/get-key-value?key=' + key })
}
// 根据键名删除缓存
export function deleteKey(key: string) {
return defHttp.delete({ url: '/infra/redis/delete-key?key=' + key })
}
export function deleteKeys(keyTemplate: string) {
return defHttp.delete({
url: '/infra/redis/delete-keys?',
params: {
keyTemplate
}
})
}

View File

@@ -0,0 +1,15 @@
import { defHttp } from '@/utils/http/axios'
export interface AddressVO {
id: number
name: string
mobile: string
areaId: number
detailAddress: string
defaultStatus: boolean
}
// 查询用户收件地址列表
export function getAddressList(params) {
return defHttp.get({ url: '/member/address/list', params })
}

View File

@@ -0,0 +1,38 @@
import { defHttp } from '@/utils/http/axios'
export interface GroupVO {
id: number
name: string
remark: string
status: number
}
// 查询用户分组列表
export function getGroupPage(params: any) {
return defHttp.get({ url: '/member/group/page', params })
}
// 查询用户分组详情
export function getGroup(id: number) {
return defHttp.get({ url: `/member/group/get?id=${id}` })
}
// 新增用户分组
export function createGroup(data: GroupVO) {
return defHttp.post({ url: '/member/group/create', data })
}
// 查询用户分组 - 精简信息列表
export function getSimpleGroupList() {
return defHttp.get({ url: '/member/group/list-all-simple' })
}
// 修改用户分组
export function updateGroup(data: GroupVO) {
return defHttp.put({ url: '/member/group/update', data })
}
// 删除用户分组
export function deleteGroup(id: number) {
return defHttp.delete({ url: `/member/group/delete?id=${id}` })
}

View File

@@ -0,0 +1,42 @@
import { defHttp } from '@/utils/http/axios'
export interface LevelVO {
id: number
name: string
experience: number
value: number
discountPercent: number
icon: string
bgUrl: string
status: number
}
// 查询会员等级列表
export function getLevelList(params) {
return defHttp.get({ url: '/member/level/list', params })
}
// 查询会员等级详情
export function getLevel(id: number) {
return defHttp.get({ url: `/member/level/get?id=${id}` })
}
// 查询会员等级 - 精简信息列表
export function getSimpleLevelList() {
return defHttp.get({ url: '/member/level/list-all-simple' })
}
// 新增会员等级
export function createLevel(data: LevelVO) {
return defHttp.post({ url: '/member/level/create', data })
}
// 修改会员等级
export function updateLevel(data: LevelVO) {
return defHttp.put({ url: '/member/level/update', data })
}
// 删除会员等级
export function deleteLevel(id: number) {
return defHttp.delete({ url: `/member/level/delete?id=${id}` })
}

View File

@@ -0,0 +1,19 @@
import { defHttp } from '@/utils/http/axios'
export interface ConfigVO {
id: number
tradeDeductEnable: number
tradeDeductUnitPrice: number
tradeDeductMaxPrice: number
tradeGivePoint: number
}
// 查询积分设置详情
export function getConfig() {
return defHttp.get({ url: '/member/point/config/get' })
}
// 新增修改积分设置
export function saveConfig(data: ConfigVO) {
return defHttp.put({ url: '/member/point/config/save', data })
}

View File

@@ -0,0 +1,21 @@
import { defHttp } from '@/utils/http/axios'
export interface RecordVO {
id: number
bizId: string
bizType: string
title: string
description: string
point: number
totalPoint: number
status: number
userId: number
freezingTime: Date
thawingTime: Date
createDate: Date
}
// 查询用户积分记录列表
export function getRecordPage(params) {
return defHttp.get({ url: '/member/point/record/page', params })
}

View File

@@ -0,0 +1,33 @@
import { defHttp } from '@/utils/http/axios'
export interface SignInConfigVO {
id: number
day: number | null
point: number | null
enable: boolean | null
}
// 查询积分签到规则列表
export function getSignInConfigList() {
return defHttp.get({ url: '/member/point/sign-in-config/list' })
}
// 查询积分签到规则详情
export function getSignInConfig(id: number) {
return defHttp.get({ url: `/member/point/sign-in-config/get?id=${id}` })
}
// 新增积分签到规则
export function createSignInConfig(data: SignInConfigVO) {
return defHttp.post({ url: '/member/point/sign-in-config/create', data })
}
// 修改积分签到规则
export function updateSignInConfig(data: SignInConfigVO) {
return defHttp.put({ url: '/member/point/sign-in-config/update', data })
}
// 删除积分签到规则
export function deleteSignInConfig(id: number) {
return defHttp.delete({ url: `/member/point/sign-in-config/delete?id=${id}` })
}

View File

@@ -0,0 +1,13 @@
import { defHttp } from '@/utils/http/axios'
export interface SignInRecordVO {
id: number
userId: number
day: number
point: number
}
// 查询用户签到积分列表
export function getSignInRecordPage(params) {
return defHttp.get({ url: '/member/point/sign-in-record/page', params })
}

View File

@@ -0,0 +1,36 @@
import { defHttp } from '@/utils/http/axios'
export interface TagVO {
id: number
name: string
}
// 查询会员标签列表
export function getMemberTagPage(params) {
return defHttp.get({ url: '/member/tag/page', params })
}
// 查询会员标签详情
export function getMemberTag(id: number) {
return defHttp.get({ url: `/member/tag/get?id=${id}` })
}
// 查询会员标签 - 精简信息列表
export function getSimpleTagList() {
return defHttp.get({ url: '/member/tag/list-all-simple' })
}
// 新增会员标签
export function createMemberTag(data: TagVO) {
return defHttp.post({ url: '/member/tag/create', data })
}
// 修改会员标签
export function updateMemberTag(data: TagVO) {
return defHttp.put({ url: '/member/tag/update', data })
}
// 删除会员标签
export function deleteMemberTag(id: number) {
return defHttp.delete({ url: `/member/tag/delete?id=${id}` })
}

View File

@@ -0,0 +1,39 @@
import { defHttp } from '@/utils/http/axios'
export interface UserVO {
id: number
mobile: string
password: string
status: number
registerIp: string
loginIp: string
loginDate: Date
nickname: string
avatar: string
name: string
sex: number
areaId: number
birthday: Date
mark: string
createTime: Date
}
// 查询会员用户列表
export function getUserPage(params) {
return defHttp.get({ url: '/member/user/page', params })
}
// 查询会员用户详情
export function getUser(id: number) {
return defHttp.get({ url: `/member/user/get?id=${id}` })
}
// 修改会员用户
export function updateUser(data: UserVO) {
return defHttp.put({ url: '/member/user/update', data })
}
// 修改会员用户等级
export function updateUserLevel(data: any) {
return defHttp.put({ url: '/member/user/update-level', data })
}

View File

@@ -17,12 +17,12 @@ export function updateAccount(data) {
// 删除公众号账号
export function deleteAccount(id) {
return defHttp.delete({ url: '/mp/account/delete?id=' + id, method: 'delete' })
return defHttp.delete({ url: `/mp/account/delete?id=${id}`, method: 'delete' })
}
// 获得公众号账号
export function getAccount(id) {
return defHttp.get({ url: '/mp/account/get?id=' + id })
return defHttp.get({ url: `/mp/account/get?id=${id}` })
}
// 获得公众号账号分页
@@ -37,10 +37,10 @@ export function getSimpleAccounts() {
// 生成公众号二维码
export function generateAccountQrCode(id) {
return defHttp.put({ url: '/mp/account/generate-qr-code?id=' + id })
return defHttp.put({ url: `/mp/account/generate-qr-code?id=${id}` })
}
// 清空公众号 API 配额
export function clearAccountQuota(id) {
return defHttp.put({ url: '/mp/account/clear-quota?id=' + id })
return defHttp.put({ url: `/mp/account/clear-quota?id=${id}` })
}

View File

@@ -12,12 +12,12 @@ export function updateAutoReply(data) {
// 删除公众号的自动回复
export function deleteAutoReply(id) {
return defHttp.delete({ url: '/mp/auto-reply/delete?id=' + id })
return defHttp.delete({ url: `/mp/auto-reply/delete?id=${id}` })
}
// 获得公众号的自动回复
export function getAutoReply(id) {
return defHttp.get({ url: '/mp/auto-reply/get?id=' + id })
return defHttp.get({ url: `/mp/auto-reply/get?id=${id}` })
}
// 获得公众号的自动回复分页

View File

@@ -8,19 +8,19 @@ export function getDraftPage(params) {
// 创建公众号草稿
export function createDraft(accountId, articles) {
return defHttp.post({
url: '/mp/draft/create?accountId=' + accountId,
url: `/mp/draft/create?accountId=${accountId}`,
data: {
articles
}
articles,
},
})
}
// 更新公众号草稿
export function updateDraft(accountId, mediaId, articles) {
return defHttp.put({ url: '/mp/draft/update?accountId=' + accountId + '&mediaId=' + mediaId, data: articles })
return defHttp.put({ url: `/mp/draft/update?accountId=${accountId}&mediaId=${mediaId}`, data: articles })
}
// 删除公众号草稿
export function deleteDraft(accountId, mediaId) {
return defHttp.delete({ url: '/mp/draft/delete?accountId=' + accountId + '&mediaId=' + mediaId })
return defHttp.delete({ url: `/mp/draft/delete?accountId=${accountId}&mediaId=${mediaId}` })
}

View File

@@ -7,10 +7,10 @@ export function getFreePublishPage(params) {
// 删除公众号素材
export function deleteFreePublish(accountId, articleId) {
return defHttp.delete({ url: '/mp/free-publish/delete?accountId=' + accountId + '&&articleId=' + articleId })
return defHttp.delete({ url: `/mp/free-publish/delete?accountId=${accountId}&&articleId=${articleId}` })
}
// 发布公众号素材
export function submitFreePublish(accountId, mediaId) {
return defHttp.post({ url: '/mp/free-publish/submit?accountId=' + accountId + '&&mediaId=' + mediaId })
return defHttp.post({ url: `/mp/free-publish/submit?accountId=${accountId}&&mediaId=${mediaId}` })
}

View File

@@ -7,5 +7,5 @@ export function getMaterialPage(params) {
// 删除公众号永久素材
export function deletePermanentMaterial(id) {
return defHttp.delete({ url: '/mp/material/delete-permanent?id=' + id })
return defHttp.delete({ url: `/mp/material/delete-permanent?id=${id}` })
}

View File

@@ -2,7 +2,7 @@ import { defHttp } from '@/utils/http/axios'
// 获得公众号菜单列表
export function getMenuList(accountId) {
return defHttp.get({ url: '/mp/menu/list?accountId=' + accountId })
return defHttp.get({ url: `/mp/menu/list?accountId=${accountId}` })
}
// 保存公众号菜单
@@ -11,12 +11,12 @@ export function saveMenu(accountId, menus) {
url: '/mp/menu/save',
data: {
accountId,
menus
}
menus,
},
})
}
// 删除公众号菜单
export function deleteMenu(accountId) {
return defHttp.delete({ url: '/mp/menu/delete?accountId=' + accountId })
return defHttp.delete({ url: `/mp/menu/delete?accountId=${accountId}` })
}

View File

@@ -7,7 +7,7 @@ export function updateUser(data) {
// 获得公众号粉丝
export function getUser(id) {
return defHttp.get({ url: '/mp/user/get?id=' + id })
return defHttp.get({ url: `/mp/user/get?id=${id}` })
}
// 获得公众号粉丝分页
@@ -17,5 +17,5 @@ export function getUserPage(params) {
// 同步公众号粉丝
export function syncUser(accountId) {
return defHttp.post({ url: '/mp/tag/sync?accountId=' + accountId })
return defHttp.post({ url: `/mp/user/sync?accountId=${accountId}` })
}

View File

@@ -12,12 +12,12 @@ export function updateTag(data) {
// 删除公众号标签
export function deleteTag(id) {
return defHttp.delete({ url: '/mp/tag/delete?id=' + id })
return defHttp.delete({ url: `/mp/tag/delete?id=${id}` })
}
// 获得公众号标签
export function getTag(id) {
return defHttp.get({ url: '/mp/tag/get?id=' + id })
return defHttp.get({ url: `/mp/tag/get?id=${id}` })
}
// 获得公众号标签分页
@@ -32,5 +32,5 @@ export function getSimpleTags() {
// 同步公众号标签
export function syncTag(accountId) {
return defHttp.post({ url: '/mp/tag/sync?accountId=' + accountId })
return defHttp.post({ url: `/mp/tag/sync?accountId=${accountId}` })
}

View File

@@ -22,16 +22,6 @@ export interface AppPageReqVO extends PageParam {
createTime?: Date[]
}
export interface AppExportReqVO {
name?: string
status?: number
remark?: string
payNotifyUrl?: string
refundNotifyUrl?: string
merchantName?: string
createTime?: Date[]
}
export interface AppUpdateStatusReqVO {
id: number
status: number
@@ -44,7 +34,7 @@ export function getAppPage(params: AppPageReqVO) {
// 查询详情支付应用
export function getApp(id: number) {
return defHttp.get({ url: '/pay/app/get?id=' + id })
return defHttp.get({ url: `/pay/app/get?id=${id}` })
}
// 新增支付应用
@@ -64,15 +54,10 @@ export function changeAppStatus(data: AppUpdateStatusReqVO) {
// 删除支付应用
export function deleteApp(id: number) {
return defHttp.delete({ url: '/pay/app/delete?id=' + id })
return defHttp.delete({ url: `/pay/app/delete?id=${id}` })
}
// 导出支付应用
export function exportApp(params: AppExportReqVO) {
return defHttp.download({ url: '/pay/app/export-excel', params }, '支付应用.xls')
}
// 根据商ID称搜索应用列表
export function getAppListByMerchantId(merchantId: number) {
return defHttp.get({ url: '/pay/app/list-merchant-id', params: { merchantId: merchantId } })
// 获得支付应用列表
export function getAppList() {
return defHttp.get({ url: '/pay/app/list' })
}

View File

@@ -35,18 +35,17 @@ export interface ChannelExportReqVO {
}
// 查询列表支付渠道
export function getChannelPage(params: ChannelPageReqVO) {
export function getChannelPage(params: PageParam) {
return defHttp.get({ url: '/pay/channel/page', params })
}
// 查询详情支付渠道
export function getChannel(merchantId: number, appId: string, code: string) {
export function getChannel(appId: string, code: string) {
const params = {
merchantId: merchantId,
appId: appId,
code: code
appId,
code,
}
return defHttp.get({ url: '/pay/channel/get-channel', params: params })
return defHttp.get({ url: '/pay/channel/get', params })
}
// 新增支付渠道
@@ -61,10 +60,10 @@ export function updateChannel(data: ChannelVO) {
// 删除支付渠道
export function deleteChannel(id: number) {
return defHttp.delete({ url: '/pay/channel/delete?id=' + id })
return defHttp.delete({ url: `/pay/channel/delete?id=${id}` })
}
// 导出支付渠道
export function exportChannel(params: ChannelExportReqVO) {
export function exportChannel(params) {
return defHttp.download({ url: '/pay/channel/export-excel', params }, '支付渠道.xls')
}

View File

@@ -7,7 +7,7 @@ export function getDemoOrderPage(params) {
// 获得示例订单
export function getDemoOrder(id: number) {
return defHttp.get({ url: '/pay/demo-order/get?id=' + id })
return defHttp.get({ url: `/pay/demo-order/get?id=${id}` })
}
// 创建示例订单
@@ -17,5 +17,5 @@ export function createDemoOrder(data) {
// 退款示例订单
export function refundDemoOrder(id: number) {
return defHttp.put({ url: '/pay/demo-order/refund?id=' + id })
return defHttp.put({ url: `/pay/demo-order/refund?id=${id}` })
}

View File

@@ -1,77 +0,0 @@
import { defHttp } from '@/utils/http/axios'
export interface MerchantVO {
id: number
no: string
name: string
shortName: string
status: number
remark: string
createTime: Date
}
export interface MerchantPageReqVO extends PageParam {
no?: string
name?: string
shortName?: string
status?: number
remark?: string
createTime?: Date[]
}
export interface MerchantExportReqVO {
no?: string
name?: string
shortName?: string
status?: number
remark?: string
createTime?: Date[]
}
// 查询列表支付商户
export function getMerchantPage(params: MerchantPageReqVO) {
return defHttp.get({ url: '/pay/merchant/page', params })
}
// 查询详情支付商户
export function getMerchant(id: number) {
return defHttp.get({ url: '/pay/merchant/get?id=' + id })
}
// 根据商户名称搜索商户列表
export function getMerchantListByName(name: string) {
return defHttp.get({
url: '/pay/merchant/list-by-name?id=',
params: {
name: name
}
})
}
// 新增支付商户
export function createMerchant(data: MerchantVO) {
return defHttp.post({ url: '/pay/merchant/create', data })
}
// 修改支付商户
export function updateMerchant(data: MerchantVO) {
return defHttp.put({ url: '/pay/merchant/update', data })
}
// 删除支付商户
export function deleteMerchant(id: number) {
return defHttp.delete({ url: '/pay/merchant/delete?id=' + id })
}
// 导出支付商户
export function exportMerchant(params: MerchantExportReqVO) {
return defHttp.download({ url: '/pay/merchant/export-excel', params }, '支付商户.xls')
}
// 支付商户状态修改
export function changeMerchantStatus(id: number, status: number) {
const data = {
id,
status
}
return defHttp.put({ url: '/pay/merchant/update-status', data })
}

View File

@@ -0,0 +1,11 @@
import { defHttp } from '@/utils/http/axios'
// 获得支付通知明细
export function getNotifyTaskDetail(id) {
return defHttp.get({ url: `/pay/notify/get-detail?id=${id}` })
}
// 获得支付通知分页
export function getNotifyTaskPage(params) {
return defHttp.get({ url: '/pay/notify/page', params })
}

View File

@@ -85,35 +85,20 @@ export function getOrderPage(params: OrderPageReqVO) {
// 查询详情支付订单
export function getOrder(id: number) {
return defHttp.get({ url: '/pay/order/get?id=' + id })
return defHttp.get({ url: `/pay/order/get?id=${id}` })
}
// 查询详情支付订单
// 获得支付订单的明细
export function getOrderDetail(id: number) {
return defHttp.get({ url: '/pay/order/get-detail?id=' + id })
return defHttp.get({ url: `/pay/order/get-detail?id=${id}` })
}
// 新增支付订单
export function createOrder(data: OrderVO) {
return defHttp.post({ url: '/pay/order/create', data })
}
// 修改支付订单
export function updateOrder(data: OrderVO) {
return defHttp.put({ url: '/pay/order/update', data })
}
// 删除支付订单
export function deleteOrder(id: number) {
return defHttp.delete({ url: '/pay/order/delete?id=' + id })
// 提交支付订单
export function submitOrder(data: any) {
return defHttp.post({ url: '/pay/order/submit', data })
}
// 导出支付订单
export function exportOrder(params: OrderExportReqVO) {
return defHttp.download({ url: '/pay/order/export-excel', params }, '支付订单.xls')
}
// 提交支付订单
export function submitOrder(data) {
return defHttp.post({ url: '/pay/order/submit', data })
return defHttp.download({ url: '/pay/order/export-excel', params })
}

View File

@@ -92,7 +92,7 @@ export function getRefundPage(params: RefundPageReqVO) {
// 查询详情退款订单
export function getRefund(id: number) {
return defHttp.get({ url: '/pay/refund/get?id=' + id })
return defHttp.get({ url: `/pay/refund/get?id=${id}` })
}
// 新增退款订单
@@ -107,7 +107,7 @@ export function updateRefund(data: RefundVO) {
// 删除退款订单
export function deleteRefund(id: number) {
return defHttp.delete({ url: '/pay/refund/delete?id=' + id })
return defHttp.delete({ url: `/pay/refund/delete?id=${id}` })
}
// 导出退款订单

View File

@@ -7,5 +7,5 @@ export function getAreaTree() {
// 获得 IP 对应的地区名
export function getAreaByIp(ip: string) {
return defHttp.get({ url: '/system/area/get-by-ip?ip=' + ip })
return defHttp.get({ url: `/system/area/get-by-ip?ip=${ip}` })
}

View File

@@ -29,7 +29,7 @@ export function getDeptPage(params: DeptPageReqVO) {
// 查询部门详情
export function getDept(id: number) {
return defHttp.get({ url: '/system/dept/get?id=' + id })
return defHttp.get({ url: `/system/dept/get?id=${id}` })
}
// 新增部门
@@ -44,5 +44,5 @@ export function updateDept(params: DeptVO) {
// 删除部门
export function deleteDept(id: number) {
return defHttp.delete({ url: '/system/dept/delete?id=' + id })
return defHttp.delete({ url: `/system/dept/delete?id=${id}` })
}

View File

@@ -1,5 +1,5 @@
import type { DictDataExportReqVO, DictDataPageReqVO, DictDataVO } from './types'
import { defHttp } from '@/utils/http/axios'
import type { DictDataVO, DictDataPageReqVO, DictDataExportReqVO } from './types'
// 查询字典数据(精简)列表
export function listSimpleDictData() {
@@ -13,7 +13,7 @@ export function getDictDataPage(params: DictDataPageReqVO) {
// 查询字典数据详情
export function getDictData(id: number) {
return defHttp.get({ url: '/system/dict-data/get?id=' + id })
return defHttp.get({ url: `/system/dict-data/get?id=${id}` })
}
// 新增字典数据
@@ -28,7 +28,7 @@ export function updateDictData(data: DictDataVO) {
// 删除字典数据
export function deleteDictData(id: number) {
return defHttp.delete({ url: '/system/dict-data/delete?id=' + id })
return defHttp.delete({ url: `/system/dict-data/delete?id=${id}` })
}
// 导出字典类型数据
export function exportDictData(params: DictDataExportReqVO) {

View File

@@ -1,5 +1,5 @@
import type { DictTypeExportReqVO, DictTypePageReqVO, DictTypeVO } from './types'
import { defHttp } from '@/utils/http/axios'
import type { DictTypeVO, DictTypePageReqVO, DictTypeExportReqVO } from './types'
// 查询字典(精简)列表
export function listSimpleDictType() {
@@ -13,7 +13,7 @@ export function getDictTypePage(params: DictTypePageReqVO) {
// 查询字典详情
export function getDictType(id: number) {
return defHttp.get({ url: '/system/dict-type/get?id=' + id })
return defHttp.get({ url: `/system/dict-type/get?id=${id}` })
}
// 新增字典
@@ -28,7 +28,7 @@ export function updateDictType(data: DictTypeVO) {
// 删除字典
export function deleteDictType(id: number) {
return defHttp.delete({ url: '/system/dict-type/delete?id=' + id })
return defHttp.delete({ url: `/system/dict-type/delete?id=${id}` })
}
// 导出字典类型
export function exportDictType(params: DictTypeExportReqVO) {

View File

@@ -1,4 +1,4 @@
export type DictTypeVO = {
export interface DictTypeVO {
id: number
name: string
type: string
@@ -7,21 +7,21 @@ export type DictTypeVO = {
createTime: Date
}
export type DictTypePageReqVO = {
export interface DictTypePageReqVO {
name: string
type: string
status: number
createTime: Date[]
}
export type DictTypeExportReqVO = {
export interface DictTypeExportReqVO {
name: string
type: string
status: number
createTime: Date[]
}
export type DictDataVO = {
export interface DictDataVO {
id: number
sort: number
label: string
@@ -33,13 +33,13 @@ export type DictDataVO = {
remark: string
createTime: Date
}
export type DictDataPageReqVO = {
export interface DictDataPageReqVO {
label: string
dictType: string
status: number
}
export type DictDataExportReqVO = {
export interface DictDataExportReqVO {
label: string
dictType: string
status: number

View File

@@ -25,7 +25,7 @@ export function getErrorCodePage(params: ErrorCodePageReqVO) {
// 查询错误码详情
export function getErrorCode(id: number) {
return defHttp.get({ url: '/system/error-code/get?id=' + id })
return defHttp.get({ url: `/system/error-code/get?id=${id}` })
}
// 新增错误码
@@ -40,7 +40,7 @@ export function updateErrorCode(data: ErrorCodeVO) {
// 删除错误码
export function deleteErrorCode(id: number) {
return defHttp.delete({ url: '/system/error-code/delete?id=' + id })
return defHttp.delete({ url: `/system/error-code/delete?id=${id}` })
}
// 导出错误码

View File

@@ -12,12 +12,12 @@ export function updateMailAccount(data) {
// 删除邮箱账号
export function deleteMailAccount(id: number) {
return defHttp.delete({ url: '/system/mail-account/delete?id=' + id })
return defHttp.delete({ url: `/system/mail-account/delete?id=${id}` })
}
// 获得邮箱账号
export function getMailAccount(id: number) {
return defHttp.get({ url: '/system/mail-account/get?id=' + id })
return defHttp.get({ url: `/system/mail-account/get?id=${id}` })
}
// 获得邮箱账号分页

View File

@@ -2,7 +2,7 @@ import { defHttp } from '@/utils/http/axios'
// 获得邮件日志
export function getMailLog(id: number) {
return defHttp.get({ url: '/system/mail-log/get?id=' + id })
return defHttp.get({ url: `/system/mail-log/get?id=${id}` })
}
// 获得邮件日志分页

View File

@@ -12,12 +12,12 @@ export function updateMailTemplate(data) {
// 删除邮件模版
export function deleteMailTemplate(id: number) {
return defHttp.delete({ url: '/system/mail-template/delete?id=' + id })
return defHttp.delete({ url: `/system/mail-template/delete?id=${id}` })
}
// 获得邮件模版
export function getMailTemplate(id: number) {
return defHttp.get({ url: '/system/mail-template/get?id=' + id })
return defHttp.get({ url: `/system/mail-template/get?id=${id}` })
}
// 获得邮件模版分页
@@ -26,7 +26,7 @@ export function getMailTemplatePage(params) {
}
// 邮件模板
export type MailTemplate = {
export interface MailTemplate {
name: string // 标题
code: string // 编码
accountId: number
@@ -40,7 +40,7 @@ export type MailTemplate = {
createTime: number
}
export type SendMailParams = {
export interface SendMailParams {
mail: string
templateCode: string
templateParams: {

View File

@@ -33,7 +33,7 @@ export function getMenuList(params: MenuPageReqVO) {
// 获取菜单详情
export function getMenu(id: number) {
return defHttp.get({ url: '/system/menu/get?id=' + id })
return defHttp.get({ url: `/system/menu/get?id=${id}` })
}
// 新增菜单
@@ -48,5 +48,5 @@ export function updateMenu(data: MenuVO) {
// 删除菜单
export function deleteMenu(id: number) {
return defHttp.delete({ url: '/system/menu/delete?id=' + id })
return defHttp.delete({ url: `/system/menu/delete?id=${id}` })
}

Some files were not shown because too many files have changed in this diff Show More