Merge branch 'master' of https://github.com/YunaiV/ruoyi-vue-pro into feature/1.6.2
This commit is contained in:
commit
ed847ac2ee
|
@ -0,0 +1,26 @@
|
|||
### 基本信息
|
||||
|
||||
- ruoyi-vue-pro 版本:
|
||||
- 操作系统:
|
||||
- 数据库:
|
||||
|
||||
### 复现步骤
|
||||
|
||||
第一步,
|
||||
|
||||
第二步,
|
||||
|
||||
第三步,
|
||||
|
||||
### 报错信息
|
||||
|
||||
[截图]
|
||||
|
||||
[截图]
|
||||
|
||||
---
|
||||
|
||||
建议:项目不是很难,碰到问题时,建议先花 2-4 小时的时间进行自查。
|
||||
|
||||
Issue 中如果带上自己的分析,可以被更快更高效的解决。
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
---
|
||||
name: 问题反馈
|
||||
about: 请详细描述,以便更高快的获得到解决
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
### 基本信息
|
||||
|
||||
- ruoyi-vue-pro 版本:
|
||||
- 操作系统:
|
||||
- 数据库:
|
||||
|
||||
### 复现步骤
|
||||
|
||||
第一步,
|
||||
|
||||
第二步,
|
||||
|
||||
第三步,
|
||||
|
||||
### 报错信息
|
||||
|
||||
[截图]
|
||||
|
||||
[截图]
|
||||
|
||||
---
|
||||
|
||||
建议:项目不是很难,碰到问题时,建议先花 2-4 小时的时间进行自查。
|
||||
|
||||
Issue 中如果带上自己的分析,可以被更快更高效的解决。
|
|
@ -1797,7 +1797,7 @@ CREATE TABLE `system_oauth2_client` (
|
|||
-- Records of system_oauth2_client
|
||||
-- ----------------------------
|
||||
BEGIN;
|
||||
INSERT INTO `system_oauth2_client` (`id`, `client_id`, `secret`, `name`, `logo`, `description`, `status`, `access_token_validity_seconds`, `refresh_token_validity_seconds`, `redirect_uris`, `auto_approve`, `authorized_grant_types`, `scopes`, `authorities`, `resource_ids`, `additional_information`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 'default', 'admin123', '芋道源码', 'http://test.yudao.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', 0, 180, 8640, '[\"https://www.iocoder.cn\",\"https://doc.iocoder.cn\"]', b'1', '[\"password\",\"authorization_code\",\"implicit\",\"refresh_token\"]', '[\"user_info\"]', '[\"system:user:query\"]', '[]', '{}', '1', '2022-05-11 21:47:12', '1', '2022-05-12 01:00:20', b'0');
|
||||
INSERT INTO `system_oauth2_client` (`id`, `client_id`, `secret`, `name`, `logo`, `description`, `status`, `access_token_validity_seconds`, `refresh_token_validity_seconds`, `redirect_uris`, `auto_approve`, `authorized_grant_types`, `scopes`, `authorities`, `resource_ids`, `additional_information`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 'default', 'admin123', '芋道源码', 'http://test.yudao.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', 0, 999999999, 8640, '[\"https://www.iocoder.cn\",\"https://doc.iocoder.cn\"]', b'1', '[\"password\",\"authorization_code\",\"implicit\",\"refresh_token\"]', '[\"user_info\"]', '[\"system:user:query\"]', '[]', '{}', '1', '2022-05-11 21:47:12', '1', '2022-05-12 01:00:20', b'0');
|
||||
INSERT INTO `system_oauth2_client` (`id`, `client_id`, `secret`, `name`, `logo`, `description`, `status`, `access_token_validity_seconds`, `refresh_token_validity_seconds`, `redirect_uris`, `auto_approve`, `authorized_grant_types`, `scopes`, `authorities`, `resource_ids`, `additional_information`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (40, 'test', 'test2', 'biubiu', 'http://test.yudao.iocoder.cn/277a899d573723f1fcdfb57340f00379.png', NULL, 0, 1800, 43200, '[\"https://www.iocoder.cn\"]', b'1', '[\"password\",\"authorization_code\",\"implicit\"]', '[]', '[]', '[]', '{}', '1', '2022-05-12 00:28:20', '1', '2022-05-12 00:59:53', b'0');
|
||||
COMMIT;
|
||||
|
||||
|
|
|
@ -38,8 +38,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -96,8 +96,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -159,8 +159,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -224,8 +224,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -284,8 +284,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -342,8 +342,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -400,8 +400,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -463,8 +463,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -543,8 +543,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -645,8 +645,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -718,8 +718,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -780,8 +780,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -839,8 +839,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -891,8 +891,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -943,8 +943,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -997,8 +997,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1051,8 +1051,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1111,8 +1111,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1167,8 +1167,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1224,8 +1224,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1282,8 +1282,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1339,8 +1339,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1396,8 +1396,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1449,8 +1449,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1508,8 +1508,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1587,8 +1587,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1663,8 +1663,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1740,8 +1740,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1805,8 +1805,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1838,8 +1838,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1873,8 +1873,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1917,8 +1917,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1957,8 +1957,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -1990,8 +1990,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2024,8 +2024,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2058,8 +2058,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2095,8 +2095,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2139,8 +2139,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2185,8 +2185,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2230,8 +2230,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2301,8 +2301,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2491,8 +2491,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2582,8 +2582,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2641,8 +2641,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2705,8 +2705,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -2994,8 +2994,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3049,8 +3049,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3114,8 +3114,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3153,7 +3153,7 @@ COMMENT ON TABLE "SYSTEM_OAUTH2_CLIENT" IS 'OAuth2 客户端表';
|
|||
-- Records of SYSTEM_OAUTH2_CLIENT
|
||||
-- ----------------------------
|
||||
INSERT INTO "SYSTEM_OAUTH2_CLIENT" ("ID", "CLIENT_ID", "SECRET", "NAME", "LOGO", "DESCRIPTION", "STATUS", "ACCESS_TOKEN_VALIDITY_SECONDS", "REFRESH_TOKEN_VALIDITY_SECONDS", "REDIRECT_URIS", "AUTO_APPROVE", "AUTHORIZED_GRANT_TYPES", "SCOPES", "AUTHORITIES", "RESOURCE_IDS", "ADDITIONAL_INFORMATION", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1', 'default', 'admin123', '芋道源码', 'http://test.yudao.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', '0', '180', '8640', '["https://www.iocoder.cn","https://doc.iocoder.cn"]', '1', '["password","authorization_code","implicit","refresh_token"]', '["user_info"]', '["system:user:query"]', '[]', '{}', '1', TO_DATE('2022-05-11 21:47:12', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 01:00:20', 'SYYYY-MM-DD HH24:MI:SS'), '0');
|
||||
INSERT INTO "SYSTEM_OAUTH2_CLIENT" ("ID", "CLIENT_ID", "SECRET", "NAME", "LOGO", "DESCRIPTION", "STATUS", "ACCESS_TOKEN_VALIDITY_SECONDS", "REFRESH_TOKEN_VALIDITY_SECONDS", "REDIRECT_URIS", "AUTO_APPROVE", "AUTHORIZED_GRANT_TYPES", "SCOPES", "AUTHORITIES", "RESOURCE_IDS", "ADDITIONAL_INFORMATION", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('40', 'test', 'test2', 'biubiu', 'http://test.yudao.iocoder.cn/277a899d573723f1fcdfb57340f00379.png', NULL, '0', '1800', '43200', '["https://www.iocoder.cn"]', '1', '["password","authorization_code","implicit"]', '[]', '[]', '[]', '{}', '1', TO_DATE('2022-05-12 00:28:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-13 09:41:21', 'SYYYY-MM-DD HH24:MI:SS'), '0');
|
||||
INSERT INTO "SYSTEM_OAUTH2_CLIENT" ("ID", "CLIENT_ID", "SECRET", "NAME", "LOGO", "DESCRIPTION", "STATUS", "ACCESS_TOKEN_VALIDITY_SECONDS", "REFRESH_TOKEN_VALIDITY_SECONDS", "REDIRECT_URIS", "AUTO_APPROVE", "AUTHORIZED_GRANT_TYPES", "SCOPES", "AUTHORITIES", "RESOURCE_IDS", "ADDITIONAL_INFORMATION", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('40', 'test', 'test2', 'biubiu', 'http://test.yudao.iocoder.cn/277a899d573723f1fcdfb57340f00379.png', NULL, '0', '999999999', '43200', '["https://www.iocoder.cn"]', '1', '["password","authorization_code","implicit"]', '[]', '[]', '[]', '{}', '1', TO_DATE('2022-05-12 00:28:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-13 09:41:21', 'SYYYY-MM-DD HH24:MI:SS'), '0');
|
||||
COMMIT;
|
||||
COMMIT;
|
||||
|
||||
|
@ -3180,8 +3180,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3249,8 +3249,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3318,8 +3318,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3380,8 +3380,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3441,8 +3441,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3631,8 +3631,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3687,8 +3687,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3749,8 +3749,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3825,8 +3825,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3901,8 +3901,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -3974,8 +3974,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -4037,8 +4037,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -4096,8 +4096,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -4158,8 +4158,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -4232,8 +4232,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -4284,8 +4284,8 @@ NOCOMPRESS
|
|||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5261,8 +5261,8 @@ CREATE INDEX "IDX_QRTZ_FT_INST_JOB_REQ_RCVRY"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5278,8 +5278,8 @@ CREATE INDEX "IDX_QRTZ_FT_JG"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5293,8 +5293,8 @@ CREATE INDEX "IDX_QRTZ_FT_J_G"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5308,8 +5308,8 @@ CREATE INDEX "IDX_QRTZ_FT_TG"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5344,8 +5344,8 @@ CREATE INDEX "IDX_QRTZ_J_GRP"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5361,8 +5361,8 @@ CREATE INDEX "IDX_QRTZ_J_REQ_RECOVERY"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5484,8 +5484,8 @@ CREATE INDEX "IDX_QRTZ_T_C"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5501,8 +5501,8 @@ CREATE INDEX "IDX_QRTZ_T_J"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5518,8 +5518,8 @@ CREATE INDEX "IDX_QRTZ_T_JG"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5533,8 +5533,8 @@ CREATE INDEX "IDX_QRTZ_T_NEXT_FIRE_TIME"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5548,8 +5548,8 @@ CREATE INDEX "IDX_QRTZ_T_NFT_ST"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5565,8 +5565,8 @@ CREATE INDEX "IDX_QRTZ_T_NFT_ST_MISFIRE"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
@ -5580,8 +5580,8 @@ CREATE INDEX "IDX_QRTZ_T_STATE"
|
|||
PCTFREE 10
|
||||
INITRANS 2
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
FREELISTS 1
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
-- Sequence structure for act_evt_log_log_nr__seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "act_evt_log_log_nr__seq";
|
||||
CREATE SEQUENCE "act_evt_log_log_nr__seq"
|
||||
CREATE SEQUENCE "act_evt_log_log_nr__seq"
|
||||
INCREMENT 1
|
||||
MINVALUE 1
|
||||
MAXVALUE 2147483647
|
||||
|
@ -31,7 +31,7 @@ CACHE 1;
|
|||
-- Sequence structure for act_hi_tsk_log_id__seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "act_hi_tsk_log_id__seq";
|
||||
CREATE SEQUENCE "act_hi_tsk_log_id__seq"
|
||||
CREATE SEQUENCE "act_hi_tsk_log_id__seq"
|
||||
INCREMENT 1
|
||||
MINVALUE 1
|
||||
MAXVALUE 2147483647
|
||||
|
@ -42,7 +42,7 @@ CACHE 1;
|
|||
-- Sequence structure for bpm_form_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "bpm_form_seq";
|
||||
CREATE SEQUENCE "bpm_form_seq"
|
||||
CREATE SEQUENCE "bpm_form_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -51,7 +51,7 @@ CACHE 1;
|
|||
-- Sequence structure for bpm_oa_leave_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "bpm_oa_leave_seq";
|
||||
CREATE SEQUENCE "bpm_oa_leave_seq"
|
||||
CREATE SEQUENCE "bpm_oa_leave_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -60,7 +60,7 @@ CACHE 1;
|
|||
-- Sequence structure for bpm_process_definition_ext_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "bpm_process_definition_ext_seq";
|
||||
CREATE SEQUENCE "bpm_process_definition_ext_seq"
|
||||
CREATE SEQUENCE "bpm_process_definition_ext_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -69,7 +69,7 @@ CACHE 1;
|
|||
-- Sequence structure for bpm_process_instance_ext_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "bpm_process_instance_ext_seq";
|
||||
CREATE SEQUENCE "bpm_process_instance_ext_seq"
|
||||
CREATE SEQUENCE "bpm_process_instance_ext_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -78,7 +78,7 @@ CACHE 1;
|
|||
-- Sequence structure for bpm_task_assign_rule_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "bpm_task_assign_rule_seq";
|
||||
CREATE SEQUENCE "bpm_task_assign_rule_seq"
|
||||
CREATE SEQUENCE "bpm_task_assign_rule_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -87,7 +87,7 @@ CACHE 1;
|
|||
-- Sequence structure for bpm_task_ext_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "bpm_task_ext_seq";
|
||||
CREATE SEQUENCE "bpm_task_ext_seq"
|
||||
CREATE SEQUENCE "bpm_task_ext_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -96,7 +96,7 @@ CACHE 1;
|
|||
-- Sequence structure for bpm_user_group_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "bpm_user_group_seq";
|
||||
CREATE SEQUENCE "bpm_user_group_seq"
|
||||
CREATE SEQUENCE "bpm_user_group_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -105,7 +105,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_api_access_log_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_api_access_log_seq";
|
||||
CREATE SEQUENCE "infra_api_access_log_seq"
|
||||
CREATE SEQUENCE "infra_api_access_log_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -114,7 +114,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_api_error_log_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_api_error_log_seq";
|
||||
CREATE SEQUENCE "infra_api_error_log_seq"
|
||||
CREATE SEQUENCE "infra_api_error_log_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -123,7 +123,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_codegen_column_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_codegen_column_seq";
|
||||
CREATE SEQUENCE "infra_codegen_column_seq"
|
||||
CREATE SEQUENCE "infra_codegen_column_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -132,7 +132,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_codegen_table_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_codegen_table_seq";
|
||||
CREATE SEQUENCE "infra_codegen_table_seq"
|
||||
CREATE SEQUENCE "infra_codegen_table_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -141,7 +141,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_config_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_config_seq";
|
||||
CREATE SEQUENCE "infra_config_seq"
|
||||
CREATE SEQUENCE "infra_config_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -150,7 +150,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_data_source_config_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_data_source_config_seq";
|
||||
CREATE SEQUENCE "infra_data_source_config_seq"
|
||||
CREATE SEQUENCE "infra_data_source_config_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -159,7 +159,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_file_config_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_file_config_seq";
|
||||
CREATE SEQUENCE "infra_file_config_seq"
|
||||
CREATE SEQUENCE "infra_file_config_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -168,7 +168,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_file_content_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_file_content_seq";
|
||||
CREATE SEQUENCE "infra_file_content_seq"
|
||||
CREATE SEQUENCE "infra_file_content_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -177,7 +177,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_file_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_file_seq";
|
||||
CREATE SEQUENCE "infra_file_seq"
|
||||
CREATE SEQUENCE "infra_file_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -186,7 +186,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_job_log_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_job_log_seq";
|
||||
CREATE SEQUENCE "infra_job_log_seq"
|
||||
CREATE SEQUENCE "infra_job_log_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -195,7 +195,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_job_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_job_seq";
|
||||
CREATE SEQUENCE "infra_job_seq"
|
||||
CREATE SEQUENCE "infra_job_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -204,7 +204,7 @@ CACHE 1;
|
|||
-- Sequence structure for infra_test_demo_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "infra_test_demo_seq";
|
||||
CREATE SEQUENCE "infra_test_demo_seq"
|
||||
CREATE SEQUENCE "infra_test_demo_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -213,7 +213,7 @@ CACHE 1;
|
|||
-- Sequence structure for member_user_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "member_user_seq";
|
||||
CREATE SEQUENCE "member_user_seq"
|
||||
CREATE SEQUENCE "member_user_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -222,7 +222,7 @@ CACHE 1;
|
|||
-- Sequence structure for pay_app_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "pay_app_seq";
|
||||
CREATE SEQUENCE "pay_app_seq"
|
||||
CREATE SEQUENCE "pay_app_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -231,7 +231,7 @@ CACHE 1;
|
|||
-- Sequence structure for pay_channel_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "pay_channel_seq";
|
||||
CREATE SEQUENCE "pay_channel_seq"
|
||||
CREATE SEQUENCE "pay_channel_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -240,7 +240,7 @@ CACHE 1;
|
|||
-- Sequence structure for pay_merchant_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "pay_merchant_seq";
|
||||
CREATE SEQUENCE "pay_merchant_seq"
|
||||
CREATE SEQUENCE "pay_merchant_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -249,7 +249,7 @@ CACHE 1;
|
|||
-- Sequence structure for pay_notify_log_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "pay_notify_log_seq";
|
||||
CREATE SEQUENCE "pay_notify_log_seq"
|
||||
CREATE SEQUENCE "pay_notify_log_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -258,7 +258,7 @@ CACHE 1;
|
|||
-- Sequence structure for pay_notify_task_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "pay_notify_task_seq";
|
||||
CREATE SEQUENCE "pay_notify_task_seq"
|
||||
CREATE SEQUENCE "pay_notify_task_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -267,7 +267,7 @@ CACHE 1;
|
|||
-- Sequence structure for pay_order_extension_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "pay_order_extension_seq";
|
||||
CREATE SEQUENCE "pay_order_extension_seq"
|
||||
CREATE SEQUENCE "pay_order_extension_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -276,7 +276,7 @@ CACHE 1;
|
|||
-- Sequence structure for pay_order_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "pay_order_seq";
|
||||
CREATE SEQUENCE "pay_order_seq"
|
||||
CREATE SEQUENCE "pay_order_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -285,7 +285,7 @@ CACHE 1;
|
|||
-- Sequence structure for pay_refund_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "pay_refund_seq";
|
||||
CREATE SEQUENCE "pay_refund_seq"
|
||||
CREATE SEQUENCE "pay_refund_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -294,7 +294,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_dept_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_dept_seq";
|
||||
CREATE SEQUENCE "system_dept_seq"
|
||||
CREATE SEQUENCE "system_dept_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -303,7 +303,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_dict_data_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_dict_data_seq";
|
||||
CREATE SEQUENCE "system_dict_data_seq"
|
||||
CREATE SEQUENCE "system_dict_data_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -312,7 +312,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_dict_type_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_dict_type_seq";
|
||||
CREATE SEQUENCE "system_dict_type_seq"
|
||||
CREATE SEQUENCE "system_dict_type_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -321,7 +321,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_error_code_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_error_code_seq";
|
||||
CREATE SEQUENCE "system_error_code_seq"
|
||||
CREATE SEQUENCE "system_error_code_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -330,7 +330,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_login_log_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_login_log_seq";
|
||||
CREATE SEQUENCE "system_login_log_seq"
|
||||
CREATE SEQUENCE "system_login_log_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -339,7 +339,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_menu_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_menu_seq";
|
||||
CREATE SEQUENCE "system_menu_seq"
|
||||
CREATE SEQUENCE "system_menu_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -348,7 +348,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_notice_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_notice_seq";
|
||||
CREATE SEQUENCE "system_notice_seq"
|
||||
CREATE SEQUENCE "system_notice_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -357,7 +357,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_oauth2_access_token_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_oauth2_access_token_seq";
|
||||
CREATE SEQUENCE "system_oauth2_access_token_seq"
|
||||
CREATE SEQUENCE "system_oauth2_access_token_seq"
|
||||
INCREMENT 1
|
||||
MINVALUE 1
|
||||
MAXVALUE 9223372036854775807
|
||||
|
@ -368,7 +368,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_oauth2_client_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_oauth2_client_seq";
|
||||
CREATE SEQUENCE "system_oauth2_client_seq"
|
||||
CREATE SEQUENCE "system_oauth2_client_seq"
|
||||
INCREMENT 1
|
||||
MINVALUE 1
|
||||
MAXVALUE 9223372036854775807
|
||||
|
@ -379,7 +379,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_oauth2_refresh_token_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_oauth2_refresh_token_seq";
|
||||
CREATE SEQUENCE "system_oauth2_refresh_token_seq"
|
||||
CREATE SEQUENCE "system_oauth2_refresh_token_seq"
|
||||
INCREMENT 1
|
||||
MINVALUE 1
|
||||
MAXVALUE 9223372036854775807
|
||||
|
@ -390,7 +390,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_operate_log_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_operate_log_seq";
|
||||
CREATE SEQUENCE "system_operate_log_seq"
|
||||
CREATE SEQUENCE "system_operate_log_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -399,7 +399,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_post_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_post_seq";
|
||||
CREATE SEQUENCE "system_post_seq"
|
||||
CREATE SEQUENCE "system_post_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -408,7 +408,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_role_menu_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_role_menu_seq";
|
||||
CREATE SEQUENCE "system_role_menu_seq"
|
||||
CREATE SEQUENCE "system_role_menu_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -417,7 +417,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_role_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_role_seq";
|
||||
CREATE SEQUENCE "system_role_seq"
|
||||
CREATE SEQUENCE "system_role_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -426,7 +426,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_sensitive_word_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_sensitive_word_seq";
|
||||
CREATE SEQUENCE "system_sensitive_word_seq"
|
||||
CREATE SEQUENCE "system_sensitive_word_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -435,7 +435,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_sms_channel_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_sms_channel_seq";
|
||||
CREATE SEQUENCE "system_sms_channel_seq"
|
||||
CREATE SEQUENCE "system_sms_channel_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -444,7 +444,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_sms_code_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_sms_code_seq";
|
||||
CREATE SEQUENCE "system_sms_code_seq"
|
||||
CREATE SEQUENCE "system_sms_code_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -453,7 +453,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_sms_log_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_sms_log_seq";
|
||||
CREATE SEQUENCE "system_sms_log_seq"
|
||||
CREATE SEQUENCE "system_sms_log_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -462,7 +462,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_sms_template_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_sms_template_seq";
|
||||
CREATE SEQUENCE "system_sms_template_seq"
|
||||
CREATE SEQUENCE "system_sms_template_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -471,7 +471,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_social_user_bind_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_social_user_bind_seq";
|
||||
CREATE SEQUENCE "system_social_user_bind_seq"
|
||||
CREATE SEQUENCE "system_social_user_bind_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -480,7 +480,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_social_user_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_social_user_seq";
|
||||
CREATE SEQUENCE "system_social_user_seq"
|
||||
CREATE SEQUENCE "system_social_user_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -489,7 +489,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_tenant_package_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_tenant_package_seq";
|
||||
CREATE SEQUENCE "system_tenant_package_seq"
|
||||
CREATE SEQUENCE "system_tenant_package_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -498,7 +498,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_tenant_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_tenant_seq";
|
||||
CREATE SEQUENCE "system_tenant_seq"
|
||||
CREATE SEQUENCE "system_tenant_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -507,7 +507,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_user_post_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_user_post_seq";
|
||||
CREATE SEQUENCE "system_user_post_seq"
|
||||
CREATE SEQUENCE "system_user_post_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -516,7 +516,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_user_role_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_user_role_seq";
|
||||
CREATE SEQUENCE "system_user_role_seq"
|
||||
CREATE SEQUENCE "system_user_role_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -525,7 +525,7 @@ CACHE 1;
|
|||
-- Sequence structure for system_user_seq
|
||||
-- ----------------------------
|
||||
DROP SEQUENCE IF EXISTS "system_user_seq";
|
||||
CREATE SEQUENCE "system_user_seq"
|
||||
CREATE SEQUENCE "system_user_seq"
|
||||
INCREMENT 1
|
||||
MAXVALUE 9223372036854775807
|
||||
CACHE 1;
|
||||
|
@ -3470,7 +3470,7 @@ COMMENT ON TABLE "system_oauth2_client" IS 'OAuth2 客户端表';
|
|||
-- Records of system_oauth2_client
|
||||
-- ----------------------------
|
||||
BEGIN;
|
||||
INSERT INTO "system_oauth2_client" ("id", "client_id", "secret", "name", "logo", "description", "status", "access_token_validity_seconds", "refresh_token_validity_seconds", "redirect_uris", "auto_approve", "authorized_grant_types", "scopes", "authorities", "resource_ids", "additional_information", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1, 'default', 'admin123', '芋道源码', 'http://test.yudao.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', 0, 180, 8640, '["https://www.iocoder.cn","https://doc.iocoder.cn"]', '1', '["password","authorization_code","implicit","refresh_token"]', '["user_info"]', '["system:user:query"]', '[]', '{}', '1', '2022-05-11 21:47:12', '1', '2022-05-12 01:00:20', 0);
|
||||
INSERT INTO "system_oauth2_client" ("id", "client_id", "secret", "name", "logo", "description", "status", "access_token_validity_seconds", "refresh_token_validity_seconds", "redirect_uris", "auto_approve", "authorized_grant_types", "scopes", "authorities", "resource_ids", "additional_information", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1, 'default', 'admin123', '芋道源码', 'http://test.yudao.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', 0, 999999999, 8640, '["https://www.iocoder.cn","https://doc.iocoder.cn"]', '1', '["password","authorization_code","implicit","refresh_token"]', '["user_info"]', '["system:user:query"]', '[]', '{}', '1', '2022-05-11 21:47:12', '1', '2022-05-12 01:00:20', 0);
|
||||
INSERT INTO "system_oauth2_client" ("id", "client_id", "secret", "name", "logo", "description", "status", "access_token_validity_seconds", "refresh_token_validity_seconds", "redirect_uris", "auto_approve", "authorized_grant_types", "scopes", "authorities", "resource_ids", "additional_information", "creator", "create_time", "updater", "update_time", "deleted") VALUES (40, 'test', 'test2', 'biubiu', 'http://test.yudao.iocoder.cn/277a899d573723f1fcdfb57340f00379.png', NULL, 0, 1800, 43200, '["https://www.iocoder.cn"]', 'true', '["password","authorization_code","implicit"]', '[]', '[]', '[]', '{}', '1', '2022-05-12 00:28:20', '1', '2022-05-13 01:04:21.023', 0);
|
||||
COMMIT;
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -58,6 +58,14 @@
|
|||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <!-- 多数据源 -->
|
||||
</dependency>
|
||||
|
||||
<!-- 工具类相关 -->
|
||||
<dependency>
|
||||
<groupId>com.github.ulisesbocchio</groupId>
|
||||
<artifactId>jasypt-spring-boot-starter</artifactId> <!-- 加解密 -->
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
package cn.iocoder.yudao.framework.mybatis.core.type;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import org.apache.ibatis.type.BaseTypeHandler;
|
||||
import org.apache.ibatis.type.JdbcType;
|
||||
import org.jasypt.encryption.StringEncryptor;
|
||||
|
||||
import java.sql.CallableStatement;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
/**
|
||||
* 字段字段的 TypeHandler 实现类,基于 {@link StringEncryptor} 实现
|
||||
* 可通过 jasypt.encryptor.password 配置项,设置密钥
|
||||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
public class EncryptTypeHandler extends BaseTypeHandler<String> {
|
||||
|
||||
private static StringEncryptor encryptor;
|
||||
|
||||
@Override
|
||||
public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
|
||||
ps.setString(i, getEncryptor().encrypt(parameter));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
|
||||
String value = rs.getString(columnName);
|
||||
return decrypt(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
|
||||
String value = rs.getString(columnIndex);
|
||||
return decrypt(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
|
||||
String value = cs.getString(columnIndex);
|
||||
return decrypt(value);
|
||||
}
|
||||
|
||||
private static String decrypt(String value) {
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
return getEncryptor().decrypt(value);
|
||||
}
|
||||
|
||||
public static String encrypt(String rawValue) {
|
||||
if (rawValue == null) {
|
||||
return null;
|
||||
}
|
||||
return getEncryptor().encrypt(rawValue);
|
||||
}
|
||||
|
||||
private static StringEncryptor getEncryptor() {
|
||||
if (encryptor != null) {
|
||||
return encryptor;
|
||||
}
|
||||
encryptor = SpringUtil.getBean(StringEncryptor.class);
|
||||
Assert.notNull(encryptor, "StringEncryptor 不能为空");
|
||||
return encryptor;
|
||||
}
|
||||
|
||||
}
|
|
@ -21,7 +21,7 @@ import java.util.List;
|
|||
*/
|
||||
@MappedJdbcTypes(JdbcType.VARCHAR)
|
||||
@MappedTypes(List.class)
|
||||
public class StringLiSTTypeHandler implements TypeHandler<List<String>> {
|
||||
public class StringListTypeHandler implements TypeHandler<List<String>> {
|
||||
|
||||
private static final String COMMA = ",";
|
||||
|
|
@ -1,7 +1,9 @@
|
|||
package cn.iocoder.yudao.module.infra.dal.dataobject.db;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.type.EncryptTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -10,7 +12,7 @@ import lombok.Data;
|
|||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
@TableName("infra_data_source_config")
|
||||
@TableName(value = "infra_data_source_config", autoResultMap = true)
|
||||
@KeySequence("infra_data_source_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
public class DataSourceConfigDO extends BaseDO {
|
||||
|
@ -40,6 +42,7 @@ public class DataSourceConfigDO extends BaseDO {
|
|||
/**
|
||||
* 密码
|
||||
*/
|
||||
@TableField(typeHandler = EncryptTypeHandler.class)
|
||||
private String password;
|
||||
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.db.DataSourceConfigMapper;
|
||||
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
|
||||
import org.jasypt.encryption.StringEncryptor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
|
@ -32,9 +31,6 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService {
|
|||
@Resource
|
||||
private DataSourceConfigMapper dataSourceConfigMapper;
|
||||
|
||||
@Resource
|
||||
private StringEncryptor stringEncryptor;
|
||||
|
||||
@Resource
|
||||
private DynamicDataSourceProperties dynamicDataSourceProperties;
|
||||
|
||||
|
@ -44,7 +40,6 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService {
|
|||
checkConnectionOK(dataSourceConfig);
|
||||
|
||||
// 插入
|
||||
dataSourceConfig.setPassword(stringEncryptor.encrypt(createReqVO.getPassword()));
|
||||
dataSourceConfigMapper.insert(dataSourceConfig);
|
||||
// 返回
|
||||
return dataSourceConfig.getId();
|
||||
|
@ -58,7 +53,6 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService {
|
|||
checkConnectionOK(updateObj);
|
||||
|
||||
// 更新
|
||||
updateObj.setPassword(stringEncryptor.encrypt(updateObj.getPassword()));
|
||||
dataSourceConfigMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
|
@ -83,12 +77,7 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService {
|
|||
return buildMasterDataSourceConfig();
|
||||
}
|
||||
// 从 DB 中读取
|
||||
DataSourceConfigDO dataSourceConfig = dataSourceConfigMapper.selectById(id);
|
||||
try {
|
||||
dataSourceConfig.setPassword(stringEncryptor.decrypt(dataSourceConfig.getPassword()));
|
||||
} catch (Exception ignore) { // 解码失败,则不解码
|
||||
}
|
||||
return dataSourceConfig;
|
||||
return dataSourceConfigMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.db;
|
||||
|
||||
import cn.hutool.core.util.ReflectUtil;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.type.EncryptTypeHandler;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.util.JdbcUtils;
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO;
|
||||
|
@ -8,8 +10,10 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.db.DataSourceConfigMapper;
|
||||
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
|
||||
import org.jasypt.encryption.StringEncryptor;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.stubbing.Answer;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
|
@ -21,7 +25,10 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId
|
|||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
|
||||
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.DATA_SOURCE_CONFIG_NOT_EXISTS;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.mockStatic;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
/**
|
||||
* {@link DataSourceConfigServiceImpl} 的单元测试类
|
||||
|
@ -43,13 +50,20 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
|
|||
@MockBean
|
||||
private DynamicDataSourceProperties dynamicDataSourceProperties;
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
// mock 一个空实现的 StringEncryptor,避免 EncryptTypeHandler 报错
|
||||
ReflectUtil.setFieldValue(EncryptTypeHandler.class, "encryptor", stringEncryptor);
|
||||
when(stringEncryptor.encrypt(anyString())).then((Answer<String>) invocation -> invocation.getArgument(0));
|
||||
when(stringEncryptor.decrypt(anyString())).then((Answer<String>) invocation -> invocation.getArgument(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateDataSourceConfig_success() {
|
||||
try (MockedStatic<JdbcUtils> databaseUtilsMock = mockStatic(JdbcUtils.class)) {
|
||||
// 准备参数
|
||||
DataSourceConfigCreateReqVO reqVO = randomPojo(DataSourceConfigCreateReqVO.class);
|
||||
// mock 方法
|
||||
when(stringEncryptor.encrypt(eq(reqVO.getPassword()))).thenReturn("123456");
|
||||
databaseUtilsMock.when(() -> JdbcUtils.isConnectionOK(eq(reqVO.getUrl()),
|
||||
eq(reqVO.getUsername()), eq(reqVO.getPassword()))).thenReturn(true);
|
||||
|
||||
|
@ -59,8 +73,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
|
|||
assertNotNull(dataSourceConfigId);
|
||||
// 校验记录的属性是否正确
|
||||
DataSourceConfigDO dataSourceConfig = dataSourceConfigMapper.selectById(dataSourceConfigId);
|
||||
assertPojoEquals(reqVO, dataSourceConfig, "password");
|
||||
assertEquals("123456", dataSourceConfig.getPassword());
|
||||
assertPojoEquals(reqVO, dataSourceConfig);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -75,7 +88,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
|
|||
o.setId(dbDataSourceConfig.getId()); // 设置更新的 ID
|
||||
});
|
||||
// mock 方法
|
||||
when(stringEncryptor.encrypt(eq(reqVO.getPassword()))).thenReturn("123456");
|
||||
// when(stringEncryptor.encrypt(eq(reqVO.getPassword()))).thenReturn("123456");
|
||||
databaseUtilsMock.when(() -> JdbcUtils.isConnectionOK(eq(reqVO.getUrl()),
|
||||
eq(reqVO.getUsername()), eq(reqVO.getPassword()))).thenReturn(true);
|
||||
|
||||
|
@ -83,8 +96,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
|
|||
dataSourceConfigService.updateDataSourceConfig(reqVO);
|
||||
// 校验是否更新正确
|
||||
DataSourceConfigDO dataSourceConfig = dataSourceConfigMapper.selectById(reqVO.getId()); // 获取最新的
|
||||
assertPojoEquals(reqVO, dataSourceConfig, "password");
|
||||
assertEquals("123456", dataSourceConfig.getPassword());
|
||||
assertPojoEquals(reqVO, dataSourceConfig);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -120,4 +132,16 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
|
|||
assertServiceException(() -> dataSourceConfigService.deleteDataSourceConfig(id), DATA_SOURCE_CONFIG_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@Test // 测试使用 password 查询,可以查询到数据
|
||||
public void testSelectPassword() {
|
||||
// mock 数据
|
||||
DataSourceConfigDO dbDataSourceConfig = randomPojo(DataSourceConfigDO.class);
|
||||
dataSourceConfigMapper.insert(dbDataSourceConfig);// @Sql: 先插入出一条存在的数据
|
||||
|
||||
// 调用
|
||||
DataSourceConfigDO result = dataSourceConfigMapper.selectOne(DataSourceConfigDO::getPassword,
|
||||
EncryptTypeHandler.encrypt(dbDataSourceConfig.getPassword()));
|
||||
System.out.println(result);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -100,7 +100,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|||
}
|
||||
|
||||
// 创建 Token 令牌,记录登录日志
|
||||
return createTokenAfterLoginSuccess(user, null, LoginLogTypeEnum.LOGIN_SOCIAL);
|
||||
return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.dal.dataobject.sensitiveword;
|
|||
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.type.StringLiSTTypeHandler;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.type.StringListTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
|
@ -46,7 +46,7 @@ public class SensitiveWordDO extends BaseDO {
|
|||
* 例如说,tag 有短信、论坛两种,敏感词 "推广" 在短信下是敏感词,在论坛下不是敏感词。
|
||||
* 此时,我们会存储一条敏感词记录,它的 name 为"推广",tag 为短信。
|
||||
*/
|
||||
@TableField(typeHandler = StringLiSTTypeHandler.class)
|
||||
@TableField(typeHandler = StringListTypeHandler.class)
|
||||
private List<String> tags;
|
||||
/**
|
||||
* 状态
|
||||
|
|
|
@ -24,7 +24,8 @@ public interface PostMapper extends BaseMapperX<PostDO> {
|
|||
return selectPage(reqVO, new QueryWrapperX<PostDO>()
|
||||
.likeIfPresent("code", reqVO.getCode())
|
||||
.likeIfPresent("name", reqVO.getName())
|
||||
.eqIfPresent("status", reqVO.getStatus()));
|
||||
.eqIfPresent("status", reqVO.getStatus())
|
||||
.orderByDesc("id"));
|
||||
}
|
||||
|
||||
default List<PostDO> selectList(PostExportReqVO reqVO) {
|
||||
|
|
|
@ -37,7 +37,7 @@ public interface DictDataMapper extends BaseMapperX<DictDataDO> {
|
|||
.likeIfPresent(DictDataDO::getLabel, reqVO.getLabel())
|
||||
.likeIfPresent(DictDataDO::getDictType, reqVO.getDictType())
|
||||
.eqIfPresent(DictDataDO::getStatus, reqVO.getStatus())
|
||||
.orderByAsc(Arrays.asList(DictDataDO::getDictType, DictDataDO::getSort)));
|
||||
.orderByDesc(Arrays.asList(DictDataDO::getDictType, DictDataDO::getSort)));
|
||||
}
|
||||
|
||||
default List<DictDataDO> selectList(DictDataExportReqVO reqVO) {
|
||||
|
|
|
@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
|||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeExportReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypePageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
@ -18,7 +19,8 @@ public interface DictTypeMapper extends BaseMapperX<DictTypeDO> {
|
|||
.likeIfPresent(DictTypeDO::getName, reqVO.getName())
|
||||
.likeIfPresent(DictTypeDO::getType, reqVO.getType())
|
||||
.eqIfPresent(DictTypeDO::getStatus, reqVO.getStatus())
|
||||
.betweenIfPresent(DictTypeDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()));
|
||||
.betweenIfPresent(DictTypeDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
|
||||
.orderByDesc(DictTypeDO::getId));
|
||||
}
|
||||
|
||||
default List<DictTypeDO> selectList(DictTypeExportReqVO reqVO) {
|
||||
|
|
|
@ -23,7 +23,7 @@ public interface ErrorCodeMapper extends BaseMapperX<ErrorCodeDO> {
|
|||
.eqIfPresent("code", reqVO.getCode())
|
||||
.likeIfPresent("message", reqVO.getMessage())
|
||||
.betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
|
||||
.orderByAsc("application_name", "code"));
|
||||
.orderByDesc("code"));
|
||||
}
|
||||
|
||||
default List<ErrorCodeDO> selectList(ErrorCodeExportReqVO reqVO) {
|
||||
|
|
|
@ -13,7 +13,8 @@ public interface NoticeMapper extends BaseMapperX<NoticeDO> {
|
|||
default PageResult<NoticeDO> selectPage(NoticePageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<NoticeDO>()
|
||||
.likeIfPresent(NoticeDO::getTitle, reqVO.getTitle())
|
||||
.eqIfPresent(NoticeDO::getStatus, reqVO.getStatus()));
|
||||
.eqIfPresent(NoticeDO::getStatus, reqVO.getStatus())
|
||||
.orderByDesc(NoticeDO::getId));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ public interface RoleMapper extends BaseMapperX<RoleDO> {
|
|||
.likeIfPresent(RoleDO::getName, reqVO.getName())
|
||||
.likeIfPresent(RoleDO::getCode, reqVO.getCode())
|
||||
.eqIfPresent(RoleDO::getStatus, reqVO.getStatus())
|
||||
.betweenIfPresent(BaseDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime()));
|
||||
.betweenIfPresent(BaseDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime())
|
||||
.orderByDesc(RoleDO::getId));
|
||||
}
|
||||
|
||||
default List<RoleDO> selectList(RoleExportReqVO reqVO) {
|
||||
|
|
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.dal.mysql.user;
|
|||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserExportReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
|
@ -33,7 +34,9 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
|
|||
.likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
|
||||
.eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
|
||||
.betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime())
|
||||
.inIfPresent(AdminUserDO::getDeptId, deptIds));
|
||||
.inIfPresent(AdminUserDO::getDeptId, deptIds)
|
||||
.orderByDesc(AdminUserDO::getId));
|
||||
|
||||
}
|
||||
|
||||
default List<AdminUserDO> selectList(UserExportReqVO reqVO, Collection<Long> deptIds) {
|
||||
|
|
|
@ -181,7 +181,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|||
}
|
||||
|
||||
// 创建 Token 令牌,记录登录日志
|
||||
return createTokenAfterLoginSuccess(user.getId(), null, LoginLogTypeEnum.LOGIN_SOCIAL);
|
||||
return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -8,8 +8,8 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
|||
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
|
||||
import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO;
|
||||
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
||||
import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
|
||||
|
@ -248,7 +248,12 @@ public class PermissionServiceImpl implements PermissionService {
|
|||
|
||||
@Override
|
||||
public Set<Long> getUserRoleIdsFromCache(Long userId, Collection<Integer> roleStatuses) {
|
||||
Set<Long> roleIds = new HashSet<>(userRoleCache.get(userId));
|
||||
Set<Long> cacheRoleIds = userRoleCache.get(userId);
|
||||
// 创建用户的时候没有分配角色,会存在空指针异常
|
||||
if (CollUtil.isEmpty(cacheRoleIds)) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
Set<Long> roleIds = new HashSet<>(cacheRoleIds);
|
||||
// 过滤角色状态
|
||||
if (CollectionUtil.isNotEmpty(roleStatuses)) {
|
||||
roleIds.removeIf(roleId -> {
|
||||
|
@ -451,6 +456,7 @@ public class PermissionServiceImpl implements PermissionService {
|
|||
|
||||
@Override
|
||||
@DataPermission(enable = false) // 关闭数据权限,不然就会出现递归获取数据权限的问题
|
||||
@TenantIgnore // 忽略多租户的自动过滤。如果不忽略,会导致添加租户时,因为切换租户,导致获取不到 User。即使忽略,本身该方法不存在跨租户的操作,不会存在问题。
|
||||
public DeptDataPermissionRespDTO getDeptDataPermission(Long userId) {
|
||||
DeptDataPermissionRespDTO result = new DeptDataPermissionRespDTO();
|
||||
// 获得用户的角色
|
||||
|
|
|
@ -215,6 +215,9 @@ public class RoleServiceImpl implements RoleService {
|
|||
|
||||
@Override
|
||||
public List<RoleDO> getRoles(@Nullable Collection<Integer> statuses) {
|
||||
if (CollUtil.isEmpty(statuses)) {
|
||||
return roleMapper.selectList();
|
||||
}
|
||||
return roleMapper.selectListByStatus(statuses);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package cn.iocoder.yudao.server.framework.tip.core;
|
||||
|
||||
import cn.hutool.core.thread.ThreadUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 项目启动成功后,提供文档相关的地址
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class TipApplicationRunner implements ApplicationRunner {
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
ThreadUtil.execute(() -> {
|
||||
ThreadUtil.sleep(1, TimeUnit.SECONDS); // 延迟 1 秒,保证输出到结尾
|
||||
log.info("\n----------------------------------------------------------\n\t" +
|
||||
"项目启动成功!\n\t" +
|
||||
"接口文档: \t{} \n\t" +
|
||||
"开发文档: \t{} \n\t" +
|
||||
"视频教程: \t{} \n\t" +
|
||||
"源码解析: \t{} \n" +
|
||||
"----------------------------------------------------------",
|
||||
"https://doc.iocoder.cn/api-doc/",
|
||||
"https://doc.iocoder.cn",
|
||||
"https://t.zsxq.com/02Yf6M7Qn",
|
||||
"https://t.zsxq.com/02B6ujIee");
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
/**
|
||||
* 目的:项目启动成功后,提供文档相关的地址
|
||||
*/
|
||||
package cn.iocoder.yudao.server.framework.tip;
|
|
@ -1,4 +0,0 @@
|
|||
/**
|
||||
* 占位
|
||||
*/
|
||||
package cn.iocoder.yudao.server.framework.ui.core;
|
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
After Width: | Height: | Size: 63 KiB |
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -12,15 +12,15 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n
|
|||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true&":
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true&":
|
||||
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"f587f70a-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true& ***!
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true& ***!
|
||||
\*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"wscn-http404-container\" }, [\n _c(\"div\", { staticClass: \"wscn-http404\" }, [\n _vm._m(0),\n _c(\n \"div\",\n { staticClass: \"bullshit\" },\n [\n _c(\"div\", { staticClass: \"bullshit__oops\" }, [_vm._v(\" 404错误! \")]),\n _c(\"div\", { staticClass: \"bullshit__headline\" }, [\n _vm._v(\" \" + _vm._s(_vm.message) + \" \"),\n ]),\n _c(\"div\", { staticClass: \"bullshit__info\" }, [\n _vm._v(\n \" 对不起,您正在寻找的页面不存在。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。 \"\n ),\n ]),\n _c(\n \"router-link\",\n { staticClass: \"bullshit__return-home\", attrs: { to: \"/\" } },\n [_vm._v(\" 返回首页 \")]\n ),\n ],\n 1\n ),\n ]),\n ])\n}\nvar staticRenderFns = [\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"pic-404\" }, [\n _c(\"img\", {\n staticClass: \"pic-404__parent\",\n attrs: { src: __webpack_require__(/*! @/assets/404_images/404.png */ \"./src/assets/404_images/404.png\"), alt: \"404\" },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child left\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child mid\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child right\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n ])\n },\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/error/404.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22f587f70a-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"wscn-http404-container\" }, [\n _c(\"div\", { staticClass: \"wscn-http404\" }, [\n _vm._m(0),\n _c(\n \"div\",\n { staticClass: \"bullshit\" },\n [\n _c(\"div\", { staticClass: \"bullshit__oops\" }, [_vm._v(\" 404错误! \")]),\n _c(\"div\", { staticClass: \"bullshit__headline\" }, [\n _vm._v(\" \" + _vm._s(_vm.message) + \" \"),\n ]),\n _c(\"div\", { staticClass: \"bullshit__info\" }, [\n _vm._v(\n \" 对不起,您正在寻找的页面不存在。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。 \"\n ),\n ]),\n _c(\n \"router-link\",\n { staticClass: \"bullshit__return-home\", attrs: { to: \"/\" } },\n [_vm._v(\" 返回首页 \")]\n ),\n ],\n 1\n ),\n ]),\n ])\n}\nvar staticRenderFns = [\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"pic-404\" }, [\n _c(\"img\", {\n staticClass: \"pic-404__parent\",\n attrs: { src: __webpack_require__(/*! @/assets/404_images/404.png */ \"./src/assets/404_images/404.png\"), alt: \"404\" },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child left\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child mid\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child right\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n ])\n },\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/error/404.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
|
@ -112,7 +112,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
|
|||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./404.vue?vue&type=template&id=09c68b87&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"f587f70a-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/error/404.vue?");
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./404.vue?vue&type=template&id=09c68b87&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/error/404.vue?");
|
||||
|
||||
/***/ })
|
||||
|
||||
|
|
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -12,15 +12,15 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@b
|
|||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/401.vue?vue&type=template&id=099c4504&scoped=true&":
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/401.vue?vue&type=template&id=099c4504&scoped=true&":
|
||||
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"f587f70a-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/error/401.vue?vue&type=template&id=099c4504&scoped=true& ***!
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/error/401.vue?vue&type=template&id=099c4504&scoped=true& ***!
|
||||
\*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"errPage-container\" },\n [\n _c(\n \"el-button\",\n {\n staticClass: \"pan-back-btn\",\n attrs: { icon: \"arrow-left\" },\n on: { click: _vm.back },\n },\n [_vm._v(\" 返回 \")]\n ),\n _c(\n \"el-row\",\n [\n _c(\"el-col\", { attrs: { span: 12 } }, [\n _c(\"h1\", { staticClass: \"text-jumbo text-ginormous\" }, [\n _vm._v(\" 401错误! \"),\n ]),\n _c(\"h2\", [_vm._v(\"您没有访问权限!\")]),\n _c(\"h6\", [\n _vm._v(\n \"对不起,您没有访问权限,请不要进行非法操作!您可以返回主页面\"\n ),\n ]),\n _c(\"ul\", { staticClass: \"list-unstyled\" }, [\n _c(\n \"li\",\n { staticClass: \"link-type\" },\n [\n _c(\"router-link\", { attrs: { to: \"/\" } }, [\n _vm._v(\" 回首页 \"),\n ]),\n ],\n 1\n ),\n ]),\n ]),\n _c(\"el-col\", { attrs: { span: 12 } }, [\n _c(\"img\", {\n attrs: {\n src: _vm.errGif,\n width: \"313\",\n height: \"428\",\n alt: \"Girl has dropped her ice cream.\",\n },\n }),\n ]),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/error/401.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22f587f70a-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"errPage-container\" },\n [\n _c(\n \"el-button\",\n {\n staticClass: \"pan-back-btn\",\n attrs: { icon: \"arrow-left\" },\n on: { click: _vm.back },\n },\n [_vm._v(\" 返回 \")]\n ),\n _c(\n \"el-row\",\n [\n _c(\"el-col\", { attrs: { span: 12 } }, [\n _c(\"h1\", { staticClass: \"text-jumbo text-ginormous\" }, [\n _vm._v(\" 401错误! \"),\n ]),\n _c(\"h2\", [_vm._v(\"您没有访问权限!\")]),\n _c(\"h6\", [\n _vm._v(\n \"对不起,您没有访问权限,请不要进行非法操作!您可以返回主页面\"\n ),\n ]),\n _c(\"ul\", { staticClass: \"list-unstyled\" }, [\n _c(\n \"li\",\n { staticClass: \"link-type\" },\n [\n _c(\"router-link\", { attrs: { to: \"/\" } }, [\n _vm._v(\" 回首页 \"),\n ]),\n ],\n 1\n ),\n ]),\n ]),\n _c(\"el-col\", { attrs: { span: 12 } }, [\n _c(\"img\", {\n attrs: {\n src: _vm.errGif,\n width: \"313\",\n height: \"428\",\n alt: \"Girl has dropped her ice cream.\",\n },\n }),\n ]),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/error/401.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
|
@ -101,7 +101,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
|
|||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_401_vue_vue_type_template_id_099c4504_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./401.vue?vue&type=template&id=099c4504&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"f587f70a-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/401.vue?vue&type=template&id=099c4504&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_401_vue_vue_type_template_id_099c4504_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_401_vue_vue_type_template_id_099c4504_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/error/401.vue?");
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_401_vue_vue_type_template_id_099c4504_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./401.vue?vue&type=template&id=099c4504&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/401.vue?vue&type=template&id=099c4504&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_401_vue_vue_type_template_id_099c4504_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_401_vue_vue_type_template_id_099c4504_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/error/401.vue?");
|
||||
|
||||
/***/ })
|
||||
|
||||
|
|
Binary file not shown.
|
@ -11,6 +11,61 @@ eval("!function(t,e){ true?e(exports):undefined}(this,function(t){\"use strict\"
|
|||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/assets/images/bg-mobile.png":
|
||||
/*!*****************************************!*\
|
||||
!*** ./src/assets/images/bg-mobile.png ***!
|
||||
\*****************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
eval("module.exports = __webpack_require__.p + \"static/img/bg-mobile.0e3df208.png\";\n\n//# sourceURL=webpack:///./src/assets/images/bg-mobile.png?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/assets/images/bg.png":
|
||||
/*!**********************************!*\
|
||||
!*** ./src/assets/images/bg.png ***!
|
||||
\**********************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
eval("module.exports = __webpack_require__.p + \"static/img/bg.9bed9548.png\";\n\n//# sourceURL=webpack:///./src/assets/images/bg.png?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/assets/images/icon.png":
|
||||
/*!************************************!*\
|
||||
!*** ./src/assets/images/icon.png ***!
|
||||
\************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports) {
|
||||
|
||||
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAS1BMVEX///+QkJDq6ur9/f35+fnz8/ORkZGGhob19fWVlZV/f3/v7+/s7Ozc3NzPz8+3t7efn5/d3d3Ly8vCwsK7u7ukpKR1dXVgYGBfX19XIQVLAAAAVUlEQVQI113OWQqAMAxF0ZgO6dw6u/+VWkF8xfsTDiQQ6hnWhNzuM6RLqOaTWsIGUZIrTG+WKbY+QUVD6k+2WG5x4HFKwiKLn3FpqpTh1+xXR0jzoxvqPQI0Iy9ftQAAAABJRU5ErkJggg==\"\n\n//# sourceURL=webpack:///./src/assets/images/icon.png?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/assets/images/pic.png":
|
||||
/*!***********************************!*\
|
||||
!*** ./src/assets/images/pic.png ***!
|
||||
\***********************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
eval("module.exports = __webpack_require__.p + \"static/img/pic.49137f73.png\";\n\n//# sourceURL=webpack:///./src/assets/images/pic.png?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/assets/logo/login-logo.png":
|
||||
/*!****************************************!*\
|
||||
!*** ./src/assets/logo/login-logo.png ***!
|
||||
\****************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports) {
|
||||
|
||||
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaEAAABACAYAAACzx8hRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAKwwAACsMBNCkkqwAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAwiSURBVHic7Z3Rcdu4FoZ/39nh8C3uwLzDAuytwNwK4g7CrcDuIEoFUSoIU8E6FSxVwcoFcC5dwVpvHL7kPuAwoWUCBCWQIKX/m9HEESAQoiT8OAcHBxc/fvzA0ri4uPDdBUIImZwljtd9/Md3BwghhJwvFCFCCCHeoAgRQgjxBkWIEEKINyhChBBCvPGb7w6Q06cIwsu4rl6ObCMBkAB4jOtqa1E/ApACyAFsj70+IWQcLpYY8ncKIdpFEK4AfNQUb+K6Sny05RoRj0cAWVxXD5avuYQSnOZx3Sq2ej8d9+QZwLZ5xHX1aNMXFxRBmEG9/3yqa5LTZInjdR+0hMgoiJCsANzLU/dFEOaWg/8lgAzAu46y2yII70ztyLX3Be9KHu8BfIcSxtERAfoA4EMRhF90QiyWWzRFn3p4sbE0CXEFRYg4R6yfDGrQb5MVQZj0DXJxXZViyXzWVFnDLCIP6BYwANhBuelGpyVADfdyb+7iuir3qqfQW7NTsoGyPmdHEYT5SE3ncV2tRmqb9EARIk4pgvAOwF+a4nf4JUTGNZq4rtbS1m1H8VURhGlcV5nm5amh6bsp1oc6BKjhGsBWrLl87H74QgSj67M7hE8iEq7a2ycfqV1iAUXIMUUQprBzqySGskgsAVtctFUaBnVr4rp6LILwCa/XcdpcQ1kyqUVzKdQaTpdVsyqC8HFfUIogfMBbC6zhyxQDv3wHugSo4R2Av4sg/MQZODl3KELuSXH8jO0K7lwztm1toFxoLriDXjwAtT6SN6J34Kz5CsC/RRAOec19EYT3usK4rpxEvMR1lYnbzSREAPCxCMIbTOQeJFpK3x04Z7hPiDhH1jtWPdXWshh/ksR1lQL4ZFH1PZRlSPxR+u7AOUNLiIxCz5oOoKykRwA30/VqWuK6WhVBWAL4aqj2BBVIYQpf31hcTnefd1BWqS2MjCOTQhEiY5LC7Ja7Hrj2tTjENQcoa2f/PuwggRImt2LfviixKP+nKV6f0LqTjRjriKBfK6TweoQiREbDItR6hzNwhYgQbaGisBoh2gFIOkK1D+HOUObL1ZfhbdRZBP062aajfkMO9IuxCVl37BQhZtPwC0XIPRnsQj4T6F0ozxgWJOCirXLA9awRt1yKt9FyGwCpCBUwLEw2gn4wG3rvJiGuq60EK+RQQtS7X2oAOlfeN18DbFekZY/Vm9lEZ7bSN+naKHs7R2YFRcgxtmHO8oPUCUc5xIXisq2RSAH8I3/vAKziuvo5Qx8aGi5h2DoRWrfbnhMtIYoOESBNVoUIejdTLtezYYpMCSaLLbdsI4E+2tP0uV9qnj/GxUccQBEioyOD7xeoIITUwWzVFMyQH9n2qMhAf+hgn2JY6L4pIGKfUTMlSCol3d6xJxcWTI/Vp7s28QxFiEyCTfJSR7vs/xm4d8jZ/qB9ZODNodxEs7TOJsSFFQTMNKUQORyKkD9yQ1npsS3ijjXUDPyzuMXSM14EN4mQi2SyWreabAjWkTu4NjkCitDI9GRHzg2vSwZealBbp5y3bA7IOl173eo91BpNem5ZqsUifK8p3g38LkYHdEG3HkRmAEVofFLMIzvyPss/lGmmSDRg12d+DSVEJ528tIPUUDbUCtIFYZgsTJMInatlOhsoQsQpRRCuYZkFwedhe2Mhrh9TQECTvPRPFwljBeuDC3sOQByL1FDm6lwnk3Vp+j6elVU6RyhCxDU3cJ9y/+hs0+KS/NtJb8yUUKl4+qKxvsqRFunoPfKI3HfdvdgBeOlzPTdWY8/aDlkoFCFCHCIpeBKoNbo+IXqVTfxESQ1l72A3MWhcxya3WmkoM4mX6XVkAihCZAkkDnLMRQ76YUVLiNYwH+ewcSRAt0UQ/nDQjlMkKKfvOIshHCpC2tcxw4J/KEJkCdxivFM1R0FCsVPZs9Q1ED/BHLZ8CvTuDRuIyaJJDW69SPei/cnNDLKLnB0UoZGRL/Xq0Nf3LSSPtdGSuCGuqy4h2uHE9wxJWHY64SUPtbj2f1urI/tBBsJD7QgZGQk++NZ66hz2Cq2gP8KDkJ/QEiJO2Q8VdhQS/IzjF5BNuctGp2URlXFduQpLbhhycF0E/V4bJ8hakPYYdULaUITIEsgWFKKtZcRw7O3M9gmtLOv93N/kaf/SPs+er3+W0B1HyDyIfHfAIbnvDhxI6bsD5wgtIYf05Ik7FGN7B+SYM1HONGTVFPlki9f8YUUQZlDnKJWaKpHm+SeL5i8H3B/ddZwhJ8l2HWdOyBsoQm5JMb1LwaWL6RPmGR10hZHXMcZEBOID1ObUDdTBe7brQjYRdNfw7GrsYA3Hv4VjI00b5rin6pyhO46Q8Wnvb7kF8FcRhGURhGsJZQZOL9Nz5rsDZBlQhAgZn6TjuSuoCLJGfE7q5E9xO3733Q8yf+iOI0tgg+MXuyO4TSEzBN1O/2eLNbi+8jmTQX+O0CAkeekx1uJW0inxWIeZQREiSyB3FKI9uQjJoKdbz8qlTmJoonTbo+mI6+qxCMJPUJbgsWmX1ke28QfU/eaxDjODIkTIuCSGsmbQs5qdNwvzRRBe6lL+GBbd3xyHUQThzdiZG+K6WhVBmI95DbJsKEIOcRW904a54wAAH4sg9L2R8VASQ1ku/1rPzsWy2hZBuMWB+efE8soAXBVB+PsZpBAiM4aBCYSMS6J5ftca/HV1gLfrFA9Q7r33AMoiCK0zVRdBGBVB+AgVzt24CLOedRJCRoUiRMi46KLe2taH1hJqWymyON+2CN8B+FwEYW5x6uiNXHM/UOAa89wbRs4EuuPI2JztLLsn4CCXOjfQZxbYz5aQaerdov8+b6VO1+L+fRGEj80x2hMStc7zSSa65lTXIZZQhMhoSKoabURaEYTZiEk950BiKMst6pTNHzJY66yqb5YCkkKJUZfoZRKoMGWY8hXssyo84MgQbYs6+RHtkwOhCM2fyHcHDqFPgIQPcrzBgwx+xw40c0N7cmpLNFLD63Pgp0WlG6x3sDzBNK6rUnK6dbV1Je2sbNqaGofBE6f0/ToJKEIzRlw1vjZYHoQscuewzwDwAUAiM/3HUzltVO6D7h48SZ3IUAdQUXCXAEx55gZFyEnIdIruvUsfxS13ktFyci9P/Uj1xUER8oRENe3/ILb4FQ11A0e7zScmx/AUNFcAvgL4WgThd6j7kLfKt+2B1sHu+X3a7eWO1kYSQ1nT/spQpzmoLod+zeh7OxGqRXBCQwp9wtM1FrZuIqKatp7KNVVTLDgR7qlCEfLHC94uEg/dEX6Kh3C9l8crl5G47abAlRVgmnHnFrPyHEoQTILehGhvoYR0ZdOxuK5yEfuuSc5tEYRpXFeZTVszIcLr386hmRVOwgpfGgzR9kfuoI05uk0yQ9kOdufj+GLn8OjtxFCWQwmG6bydEmaR2kElQP0MZdV87mlvH9060jOmG4x3UHkBNzhuQpW76MupuiHnDkXIE5K48lhLxtWA6RJTn+6gBue5ClHmohFxi+ncPs1nft/TzArqXu06yj5BWUlDeDXAyvfvS0e7Nw6FuLdPcV0lcsR3dkQ7LkRzjr+ls4Ai5JdjZl7Pc3SZyOC26Sj6M66rPK6rl7iubvB2AJwDmaN2UkNZLutbf6BbYAAVcv0iM/MIr0V7I+mh8oF96qq/wi9r5L9xXa2WGBjiwILZYaZRgecARcgvh/54dph3lE+29/9v+4IZ19UDgN8xnzNnnidyx+TAzxDtCN1WYdb80RLtb3j9uQ/p65cucZHnbsQaKQe0N0cO9SrsAJzC+18sFz9+LO+k24uL08jZKfs/hh7L/A3Aas4/Gll0/1f++z2uK6NgSqhy46pLMGxtwxVvskwfSxGEd1Dv6w6/3tOrhKEdIe0bcU91tRe1P/ciCEv0R3ttANz5tHAkei3qKCqbyYn8FpKu19t8LpKpe2hAwux/S/sscbzugyLkmY409yXeniHzAjXz3S7FXSKJMiOoWeZBfZYB2jbs2ERiUScbczBqBKkrQ4S8zzXUnqk/bEPEDQPvE9R36HGOLtsxGBq27yFFkROWOF73QREioyCDQrkU0ZwDRRDeTRgUQBbIEsfrPihChBCyEJY4XvfBwARCCCHeoAgRQgjxBkWIEEKINyhChBBCvEERIoQQ4g2KECGEEG/8H4e6e0opY/nPAAAAAElFTkSuQmCC\"\n\n//# sourceURL=webpack:///./src/assets/logo/login-logo.png?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/utils/jsencrypt.js":
|
||||
/*!********************************!*\
|
||||
!*** ./src/utils/jsencrypt.js ***!
|
||||
|
|
Binary file not shown.
|
@ -12,15 +12,15 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n
|
|||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/oa/leave/create.vue?vue&type=template&id=e0c7f4d2&":
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/oa/leave/create.vue?vue&type=template&id=e0c7f4d2&":
|
||||
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"f587f70a-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/oa/leave/create.vue?vue&type=template&id=e0c7f4d2& ***!
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/oa/leave/create.vue?vue&type=template&id=e0c7f4d2& ***!
|
||||
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"app-container\" },\n [\n _c(\n \"el-form\",\n {\n ref: \"form\",\n attrs: { model: _vm.form, rules: _vm.rules, \"label-width\": \"80px\" },\n },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"开始时间\", prop: \"startTime\" } },\n [\n _c(\"el-date-picker\", {\n attrs: {\n clearable: \"\",\n size: \"small\",\n type: \"date\",\n \"value-format\": \"timestamp\",\n placeholder: \"选择开始时间\",\n },\n model: {\n value: _vm.form.startTime,\n callback: function ($$v) {\n _vm.$set(_vm.form, \"startTime\", $$v)\n },\n expression: \"form.startTime\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"结束时间\", prop: \"endTime\" } },\n [\n _c(\"el-date-picker\", {\n attrs: {\n clearable: \"\",\n size: \"small\",\n type: \"date\",\n \"value-format\": \"timestamp\",\n placeholder: \"选择结束时间\",\n },\n model: {\n value: _vm.form.endTime,\n callback: function ($$v) {\n _vm.$set(_vm.form, \"endTime\", $$v)\n },\n expression: \"form.endTime\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"请假类型\", prop: \"type\" } },\n [\n _c(\n \"el-select\",\n {\n attrs: { placeholder: \"请选择\" },\n model: {\n value: _vm.form.type,\n callback: function ($$v) {\n _vm.$set(_vm.form, \"type\", $$v)\n },\n expression: \"form.type\",\n },\n },\n _vm._l(_vm.typeDictData, function (dict) {\n return _c(\"el-option\", {\n key: parseInt(dict.value),\n attrs: { label: dict.label, value: parseInt(dict.value) },\n })\n }),\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"原因\", prop: \"reason\" } },\n [\n _c(\n \"el-col\",\n { attrs: { span: 10 } },\n [\n _c(\"el-input\", {\n attrs: {\n type: \"textarea\",\n rows: 3,\n placeholder: \"请输入原因\",\n },\n model: {\n value: _vm.form.reason,\n callback: function ($$v) {\n _vm.$set(_vm.form, \"reason\", $$v)\n },\n expression: \"form.reason\",\n },\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n [\n _c(\n \"el-button\",\n { attrs: { type: \"primary\" }, on: { click: _vm.submitForm } },\n [_vm._v(\"提 交\")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/oa/leave/create.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22f587f70a-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"app-container\" },\n [\n _c(\n \"el-form\",\n {\n ref: \"form\",\n attrs: { model: _vm.form, rules: _vm.rules, \"label-width\": \"80px\" },\n },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"开始时间\", prop: \"startTime\" } },\n [\n _c(\"el-date-picker\", {\n attrs: {\n clearable: \"\",\n size: \"small\",\n type: \"date\",\n \"value-format\": \"timestamp\",\n placeholder: \"选择开始时间\",\n },\n model: {\n value: _vm.form.startTime,\n callback: function ($$v) {\n _vm.$set(_vm.form, \"startTime\", $$v)\n },\n expression: \"form.startTime\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"结束时间\", prop: \"endTime\" } },\n [\n _c(\"el-date-picker\", {\n attrs: {\n clearable: \"\",\n size: \"small\",\n type: \"date\",\n \"value-format\": \"timestamp\",\n placeholder: \"选择结束时间\",\n },\n model: {\n value: _vm.form.endTime,\n callback: function ($$v) {\n _vm.$set(_vm.form, \"endTime\", $$v)\n },\n expression: \"form.endTime\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"请假类型\", prop: \"type\" } },\n [\n _c(\n \"el-select\",\n {\n attrs: { placeholder: \"请选择\" },\n model: {\n value: _vm.form.type,\n callback: function ($$v) {\n _vm.$set(_vm.form, \"type\", $$v)\n },\n expression: \"form.type\",\n },\n },\n _vm._l(_vm.typeDictData, function (dict) {\n return _c(\"el-option\", {\n key: parseInt(dict.value),\n attrs: { label: dict.label, value: parseInt(dict.value) },\n })\n }),\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"原因\", prop: \"reason\" } },\n [\n _c(\n \"el-col\",\n { attrs: { span: 10 } },\n [\n _c(\"el-input\", {\n attrs: {\n type: \"textarea\",\n rows: 3,\n placeholder: \"请输入原因\",\n },\n model: {\n value: _vm.form.reason,\n callback: function ($$v) {\n _vm.$set(_vm.form, \"reason\", $$v)\n },\n expression: \"form.reason\",\n },\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n [\n _c(\n \"el-button\",\n { attrs: { type: \"primary\" }, on: { click: _vm.submitForm } },\n [_vm._v(\"提 交\")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/oa/leave/create.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
|
@ -68,7 +68,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
|
|||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_create_vue_vue_type_template_id_e0c7f4d2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./create.vue?vue&type=template&id=e0c7f4d2& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"f587f70a-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/oa/leave/create.vue?vue&type=template&id=e0c7f4d2&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_create_vue_vue_type_template_id_e0c7f4d2___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_create_vue_vue_type_template_id_e0c7f4d2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/oa/leave/create.vue?");
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_create_vue_vue_type_template_id_e0c7f4d2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./create.vue?vue&type=template&id=e0c7f4d2& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/oa/leave/create.vue?vue&type=template&id=e0c7f4d2&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_create_vue_vue_type_template_id_e0c7f4d2___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_create_vue_vue_type_template_id_e0c7f4d2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/oa/leave/create.vue?");
|
||||
|
||||
/***/ })
|
||||
|
||||
|
|
Binary file not shown.
|
@ -12,15 +12,15 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n
|
|||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/oa/leave/detail.vue?vue&type=template&id=003aca6c&":
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/oa/leave/detail.vue?vue&type=template&id=003aca6c&":
|
||||
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"f587f70a-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/oa/leave/detail.vue?vue&type=template&id=003aca6c& ***!
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/oa/leave/detail.vue?vue&type=template&id=003aca6c& ***!
|
||||
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"app-container\" },\n [\n _c(\n \"el-form\",\n {\n ref: \"form\",\n attrs: { model: _vm.form, rules: _vm.rules, \"label-width\": \"100px\" },\n },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"开始时间:\", prop: \"startTime\" } },\n [\n _vm._v(\n \" \" +\n _vm._s(_vm.parseTime(_vm.form.startTime, \"{y}-{m}-{d}\")) +\n \" \"\n ),\n ]\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"结束时间:\", prop: \"endTime\" } },\n [\n _vm._v(\n \" \" +\n _vm._s(_vm.parseTime(_vm.form.endTime, \"{y}-{m}-{d}\")) +\n \" \"\n ),\n ]\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"请假类型:\", prop: \"type\" } },\n [\n _c(\"dict-tag\", {\n attrs: {\n type: _vm.DICT_TYPE.BPM_OA_LEAVE_TYPE,\n value: _vm.form.type,\n },\n }),\n ],\n 1\n ),\n _c(\"el-form-item\", { attrs: { label: \"原因:\", prop: \"reason\" } }, [\n _vm._v(\" \" + _vm._s(_vm.form.reason)),\n ]),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/oa/leave/detail.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22f587f70a-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"app-container\" },\n [\n _c(\n \"el-form\",\n {\n ref: \"form\",\n attrs: { model: _vm.form, rules: _vm.rules, \"label-width\": \"100px\" },\n },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"开始时间:\", prop: \"startTime\" } },\n [\n _vm._v(\n \" \" +\n _vm._s(_vm.parseTime(_vm.form.startTime, \"{y}-{m}-{d}\")) +\n \" \"\n ),\n ]\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"结束时间:\", prop: \"endTime\" } },\n [\n _vm._v(\n \" \" +\n _vm._s(_vm.parseTime(_vm.form.endTime, \"{y}-{m}-{d}\")) +\n \" \"\n ),\n ]\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"请假类型:\", prop: \"type\" } },\n [\n _c(\"dict-tag\", {\n attrs: {\n type: _vm.DICT_TYPE.BPM_OA_LEAVE_TYPE,\n value: _vm.form.type,\n },\n }),\n ],\n 1\n ),\n _c(\"el-form-item\", { attrs: { label: \"原因:\", prop: \"reason\" } }, [\n _vm._v(\" \" + _vm._s(_vm.form.reason)),\n ]),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/oa/leave/detail.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
|
@ -68,7 +68,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
|
|||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_003aca6c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./detail.vue?vue&type=template&id=003aca6c& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"f587f70a-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/oa/leave/detail.vue?vue&type=template&id=003aca6c&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_003aca6c___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_003aca6c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/oa/leave/detail.vue?");
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_003aca6c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./detail.vue?vue&type=template&id=003aca6c& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/oa/leave/detail.vue?vue&type=template&id=003aca6c&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_003aca6c___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_003aca6c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/oa/leave/detail.vue?");
|
||||
|
||||
/***/ })
|
||||
|
||||
|
|
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -0,0 +1,4 @@
|
|||
phantomjs_cdnurl=http://cnpmjs.org/downloads
|
||||
chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
|
||||
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
|
||||
registry=https://registry.npmmirror.com
|
|
@ -12,7 +12,8 @@
|
|||
"build:dev": "vue-cli-service build --mode dev",
|
||||
"build:demo1024": "vue-cli-service build --mode demo1024",
|
||||
"preview": "node build/index.js --preview",
|
||||
"lint": "eslint --ext .js,.vue src"
|
||||
"lint": "eslint --ext .js,.vue src",
|
||||
"clean": "rimraf node_modules"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
|
@ -62,11 +63,11 @@
|
|||
"vue-router": "3.4.9",
|
||||
"vuedraggable": "2.24.3",
|
||||
"vuex": "3.6.0",
|
||||
"bpmn-js-token-simulation": "^0.10.0",
|
||||
"min-dash": "^3.5.2",
|
||||
"xml-js": "^1.6.11",
|
||||
"@babel/parser": "^7.7.4",
|
||||
"throttle-debounce": "^2.1.0"
|
||||
"bpmn-js-token-simulation": "0.10.0",
|
||||
"min-dash": "3.5.2",
|
||||
"xml-js": "1.6.11",
|
||||
"@babel/parser": "7.7.4",
|
||||
"throttle-debounce": "2.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "4.4.6",
|
||||
|
|
|
@ -499,7 +499,8 @@ export const selectComponents = [
|
|||
__slot__: {
|
||||
'list-type': true
|
||||
},
|
||||
action: process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload", // 请求地址
|
||||
// action: process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload", // 请求地址
|
||||
action: '/infra/file/upload', // 请求地址
|
||||
disabled: false,
|
||||
accept: '',
|
||||
name: 'file',
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<script>
|
||||
import { deepClone } from '@/utils/index'
|
||||
import render from '@/components/render/render.js'
|
||||
import {getAccessToken} from "@/utils/auth";
|
||||
|
||||
const ruleTrigger = {
|
||||
'el-input': 'blur',
|
||||
|
@ -79,10 +80,51 @@ function formBtns(h) {
|
|||
}
|
||||
|
||||
function renderFormItem(h, elementList) {
|
||||
const that = this
|
||||
const data = this[this.formConf.formModel]
|
||||
// const formRef = that.$refs[that.formConf.formRef] // 这里直接添加有问题,此时还找不到表单 $refs
|
||||
return elementList.map(scheme => {
|
||||
const config = scheme.__config__
|
||||
const layout = layouts[config.layout]
|
||||
|
||||
// edit by 芋道源码,解决 el-upload 上传的问题
|
||||
// 参考 https://github.com/JakHuang/form-generator/blob/master/src/components/parser/example/Index.vue 实现
|
||||
const vModel = scheme.__vModel__
|
||||
const val = data[vModel]
|
||||
if (scheme.__config__.tag === 'el-upload') {
|
||||
// 回显图片
|
||||
scheme['file-list'] = (val || []).map(url => ({ name: url, url }))
|
||||
// 上传地址 + 请求头
|
||||
scheme.action = process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload"
|
||||
scheme.headers = { Authorization: "Bearer " + getAccessToken() }
|
||||
// 注意 on-success 不能绑定箭头函数!!!
|
||||
scheme['on-success'] = function (response, file, fileList) {
|
||||
if (response.code !== 0) {
|
||||
return;
|
||||
}
|
||||
// 添加到 data 中
|
||||
const prev = data[vModel] || []
|
||||
this.$set(data, vModel, [
|
||||
...prev,
|
||||
response.data
|
||||
])
|
||||
// 发起表单校验
|
||||
that.$refs[that.formConf.formRef].validateField(vModel)
|
||||
}
|
||||
// 注意 on-remove 不能绑定箭头函数!!!
|
||||
scheme['on-remove'] = function (file, fileList) {
|
||||
// 移除从 data 中
|
||||
const prev = data[vModel] || []
|
||||
const index = prev.indexOf(file.response.data)
|
||||
if (index === -1) {
|
||||
return
|
||||
}
|
||||
prev.splice(index, 1) // 直接移除即可,无需重复 set,因为 array 是引用
|
||||
// 发起表单校验
|
||||
that.$refs[that.formConf.formRef].validateField(vModel)
|
||||
}
|
||||
}
|
||||
|
||||
if (layout) {
|
||||
return layout.call(this, h, scheme)
|
||||
}
|
||||
|
|
|
@ -152,31 +152,24 @@ export default {
|
|||
})
|
||||
},
|
||||
refreshSelectedTag(view) {
|
||||
this.$store.dispatch('tagsView/delCachedView', view).then(() => {
|
||||
const { fullPath } = view
|
||||
this.$nextTick(() => {
|
||||
this.$router.replace({
|
||||
path: '/redirect' + fullPath
|
||||
})
|
||||
})
|
||||
})
|
||||
this.$tab.refreshPage(view);
|
||||
},
|
||||
closeSelectedTag(view) {
|
||||
this.$store.dispatch('tagsView/delView', view).then(({ visitedViews }) => {
|
||||
this.$tab.closePage(view).then(({ visitedViews }) => {
|
||||
if (this.isActive(view)) {
|
||||
this.toLastView(visitedViews, view)
|
||||
}
|
||||
})
|
||||
},
|
||||
closeRightTags() {
|
||||
this.$store.dispatch('tagsView/delRightTags', this.selectedTag).then(visitedViews => {
|
||||
this.$tab.closeRightPage(this.selectedTag).then(visitedViews => {
|
||||
if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) {
|
||||
this.toLastView(visitedViews)
|
||||
}
|
||||
})
|
||||
},
|
||||
closeLeftTags() {
|
||||
this.$store.dispatch('tagsView/delLeftTags', this.selectedTag).then(visitedViews => {
|
||||
this.$tab.closeLeftPage(this.selectedTag).then(visitedViews => {
|
||||
if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) {
|
||||
this.toLastView(visitedViews)
|
||||
}
|
||||
|
@ -184,12 +177,12 @@ export default {
|
|||
},
|
||||
closeOthersTags() {
|
||||
this.$router.push(this.selectedTag).catch(()=>{});
|
||||
this.$store.dispatch('tagsView/delOthersViews', this.selectedTag).then(() => {
|
||||
this.$tab.closeOtherPage(this.selectedTag).then(() => {
|
||||
this.moveToCurrentTag()
|
||||
})
|
||||
},
|
||||
closeAllTags(view) {
|
||||
this.$store.dispatch('tagsView/delAllViews').then(({ visitedViews }) => {
|
||||
this.$tab.closeAllPage().then(({ visitedViews }) => {
|
||||
if (this.affixTags.some(tag => tag.path === this.$route.path)) {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -69,8 +69,9 @@ import "bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css";
|
|||
import Tinymce from '@/components/tinymce/index.vue'
|
||||
Vue.component('tinymce', Tinymce)
|
||||
import '@/icons'
|
||||
import axios from 'axios'
|
||||
Vue.prototype.$axios = axios
|
||||
import request from "@/utils/request" // 实现 form generator 使用自己定义的 axios request 对象
|
||||
console.log(request)
|
||||
Vue.prototype.$axios = request
|
||||
import '@/styles/index.scss'
|
||||
|
||||
/**
|
||||
|
|
|
@ -2,6 +2,7 @@ import { constantRoutes } from '@/router'
|
|||
import { getRouters } from '@/api/menu'
|
||||
import Layout from '@/layout/index'
|
||||
import ParentView from '@/components/ParentView';
|
||||
import { toCamelCase } from "@/utils";
|
||||
|
||||
const permission = {
|
||||
state: {
|
||||
|
@ -56,6 +57,8 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
|
|||
icon: route.icon,
|
||||
noCache: !route.keepAlive,
|
||||
}
|
||||
// 路由地址转首字母大写驼峰,作为路由名称,适配keepAlive
|
||||
route.name = toCamelCase(route.path, true)
|
||||
route.hidden = !route.visible
|
||||
// 处理 component 属性
|
||||
if (route.children) { // 父节点
|
||||
|
|
|
@ -63,7 +63,7 @@ const mutations = {
|
|||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
DEL_RIGHT_VIEWS: (state, view) => {
|
||||
const index = state.visitedViews.findIndex(v => v.path === view.path)
|
||||
if (index === -1) {
|
||||
|
@ -79,6 +79,23 @@ const mutations = {
|
|||
}
|
||||
return false
|
||||
})
|
||||
},
|
||||
|
||||
DEL_LEFT_VIEWS: (state, view) => {
|
||||
const index = state.visitedViews.findIndex(v => v.path === view.path)
|
||||
if (index === -1) {
|
||||
return
|
||||
}
|
||||
state.visitedViews = state.visitedViews.filter((item, idx) => {
|
||||
if (idx >= index || (item.meta && item.meta.affix)) {
|
||||
return true
|
||||
}
|
||||
const i = state.cachedViews.indexOf(item.name)
|
||||
if (i > -1) {
|
||||
state.cachedViews.splice(i, 1)
|
||||
}
|
||||
return false
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -172,7 +189,14 @@ const actions = {
|
|||
commit('DEL_RIGHT_VIEWS', view)
|
||||
resolve([...state.visitedViews])
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
delLeftTags({ commit }, view) {
|
||||
return new Promise(resolve => {
|
||||
commit('DEL_LEFT_VIEWS', view)
|
||||
resolve([...state.visitedViews])
|
||||
})
|
||||
},
|
||||
}
|
||||
|
||||
export default {
|
||||
|
|
|
@ -1,22 +1,96 @@
|
|||
import Cookies from 'js-cookie'
|
||||
import {decrypt, encrypt} from "@/utils/jsencrypt";
|
||||
|
||||
const AccessTokenKey = 'ACCESS_TOKEN'
|
||||
const RefreshTokenKey = 'REFRESH_TOKEN'
|
||||
|
||||
// ========== Token 相关 ==========
|
||||
|
||||
export function getAccessToken() {
|
||||
return Cookies.get(AccessTokenKey)
|
||||
return localStorage.getItem(AccessTokenKey)
|
||||
}
|
||||
|
||||
export function getRefreshToken() {
|
||||
return Cookies.get(RefreshTokenKey)
|
||||
return localStorage.getItem(RefreshTokenKey)
|
||||
}
|
||||
|
||||
export function setToken(token) {
|
||||
Cookies.set(AccessTokenKey, token.accessToken)
|
||||
Cookies.set(RefreshTokenKey, token.refreshToken)
|
||||
localStorage.setItem(AccessTokenKey, token.accessToken)
|
||||
localStorage.setItem(RefreshTokenKey, token.refreshToken)
|
||||
}
|
||||
|
||||
export function removeToken() {
|
||||
Cookies.remove(AccessTokenKey)
|
||||
Cookies.remove(RefreshTokenKey)
|
||||
localStorage.removeItem(AccessTokenKey)
|
||||
localStorage.removeItem(RefreshTokenKey)
|
||||
}
|
||||
|
||||
// ========== 账号相关 ==========
|
||||
|
||||
const UsernameKey = 'USERNAME'
|
||||
const PasswordKey = 'PASSWORD'
|
||||
const RememberMeKey = 'REMEMBER_ME'
|
||||
|
||||
export function getUsername() {
|
||||
return localStorage.getItem(UsernameKey)
|
||||
}
|
||||
|
||||
export function setUsername(username) {
|
||||
localStorage.setItem(UsernameKey, username)
|
||||
}
|
||||
|
||||
export function removeUsername() {
|
||||
localStorage.removeItem(UsernameKey)
|
||||
}
|
||||
|
||||
export function getPassword() {
|
||||
const password = localStorage.getItem(PasswordKey)
|
||||
return password ? decrypt(password) : undefined
|
||||
}
|
||||
|
||||
export function setPassword(password) {
|
||||
localStorage.setItem(PasswordKey, encrypt(password))
|
||||
}
|
||||
|
||||
export function removePassword() {
|
||||
localStorage.removeItem(PasswordKey)
|
||||
}
|
||||
|
||||
export function getRememberMe() {
|
||||
return localStorage.getItem(RememberMeKey) === 'true'
|
||||
}
|
||||
|
||||
export function setRememberMe(rememberMe) {
|
||||
localStorage.setItem(RememberMeKey, rememberMe)
|
||||
}
|
||||
|
||||
export function removeRememberMe() {
|
||||
localStorage.removeItem(RememberMeKey)
|
||||
}
|
||||
|
||||
// ========== 租户相关 ==========
|
||||
|
||||
const TenantIdKey = 'TENANT_ID'
|
||||
const TenantNameKey = 'TENANT_NAME'
|
||||
|
||||
export function getTenantName() {
|
||||
return localStorage.getItem(TenantNameKey)
|
||||
}
|
||||
|
||||
export function setTenantName(username) {
|
||||
localStorage.setItem(TenantNameKey, username)
|
||||
}
|
||||
|
||||
export function removeTenantName() {
|
||||
localStorage.removeItem(TenantNameKey)
|
||||
}
|
||||
|
||||
export function getTenantId() {
|
||||
return localStorage.getItem(TenantIdKey)
|
||||
}
|
||||
|
||||
export function setTenantId(username) {
|
||||
localStorage.setItem(TenantIdKey, username)
|
||||
}
|
||||
|
||||
export function removeTenantId() {
|
||||
localStorage.removeItem(TenantIdKey)
|
||||
}
|
||||
|
|
|
@ -75,13 +75,13 @@ export const SystemUserSocialTypeEnum = {
|
|||
title: "钉钉",
|
||||
type: 20,
|
||||
source: "dingtalk",
|
||||
img: "https://cdn.jsdelivr.net/gh/justauth/justauth-oauth-logo@1.11/dingtalk.png",
|
||||
img: "https://s1.ax1x.com/2022/05/22/OzMDRs.png",
|
||||
},
|
||||
WECHAT_ENTERPRISE: {
|
||||
title: "企业微信",
|
||||
type: 30,
|
||||
source: "wechat_enterprise",
|
||||
img: "https://cdn.jsdelivr.net/gh/justauth/justauth-oauth-logo@1.11/wechat_enterprise.png",
|
||||
img: "https://s1.ax1x.com/2022/05/22/OzMrzn.png",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -427,3 +427,15 @@ export function isNumberStr(str) {
|
|||
return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str)
|
||||
}
|
||||
|
||||
// -转驼峰
|
||||
export function toCamelCase(str, upperCaseFirst) {
|
||||
str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {
|
||||
return group1.toUpperCase();
|
||||
});
|
||||
|
||||
if (upperCaseFirst && str) {
|
||||
str = str.charAt(0).toUpperCase() + str.slice(1);
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
|
|
@ -1,12 +1,17 @@
|
|||
import axios from 'axios'
|
||||
import { Notification, MessageBox, Message } from 'element-ui'
|
||||
import {Message, MessageBox, Notification} from 'element-ui'
|
||||
import store from '@/store'
|
||||
import {getAccessToken, getRefreshToken, setToken} from '@/utils/auth'
|
||||
import {getAccessToken, getRefreshToken, getTenantId, setToken} from '@/utils/auth'
|
||||
import errorCode from '@/utils/errorCode'
|
||||
import Cookies from "js-cookie";
|
||||
import {getPath, getTenantEnable} from "@/utils/ruoyi";
|
||||
import {refreshToken} from "@/api/login";
|
||||
|
||||
// 需要忽略的提示。忽略后,自动 Promise.reject('error')
|
||||
const ignoreMsgs = [
|
||||
"无效的刷新令牌", // 刷新令牌被删除时,不用提示
|
||||
"刷新令牌已过期" // 使用刷新令牌,刷新获取新的访问令牌时,结果因为过期失败,此时需要忽略。否则,会导致继续 401,无法跳转到登出界面
|
||||
]
|
||||
|
||||
// 是否显示重新登录
|
||||
export let isRelogin = { show: false };
|
||||
// Axios 无感知刷新令牌,参考 https://www.dashingdog.cn/article/11 与 https://segmentfault.com/a/1190000020210980 实现
|
||||
|
@ -21,7 +26,9 @@ const service = axios.create({
|
|||
// axios中请求配置有baseURL选项,表示请求URL公共部分
|
||||
baseURL: process.env.VUE_APP_BASE_API + '/admin-api/', // 此处的 /admin-api/ 地址,原因是后端的基础路径为 /admin-api/
|
||||
// 超时
|
||||
timeout: 30000
|
||||
timeout: 30000,
|
||||
// 禁用 Cookie 等信息
|
||||
withCredentials: false,
|
||||
})
|
||||
// request拦截器
|
||||
service.interceptors.request.use(config => {
|
||||
|
@ -32,7 +39,7 @@ service.interceptors.request.use(config => {
|
|||
}
|
||||
// 设置租户
|
||||
if (getTenantEnable()) {
|
||||
const tenantId = Cookies.get('tenantId');
|
||||
const tenantId = getTenantId();
|
||||
if (tenantId) {
|
||||
config.headers['tenant-id'] = tenantId;
|
||||
}
|
||||
|
@ -66,85 +73,84 @@ service.interceptors.request.use(config => {
|
|||
})
|
||||
|
||||
// 响应拦截器
|
||||
service.interceptors.response.use( async res => {
|
||||
// 未设置状态码则默认成功状态
|
||||
const code = res.data.code || 200;
|
||||
// 获取错误信息
|
||||
const msg = errorCode[code] || res.data.msg || errorCode['default']
|
||||
if (code === 401) {
|
||||
// 如果未认证,并且未进行刷新令牌,说明可能是访问令牌过期了
|
||||
if (!isRefreshToken) {
|
||||
isRefreshToken = true;
|
||||
// 1. 如果获取不到刷新令牌,则只能执行登出操作
|
||||
if (!getRefreshToken()) {
|
||||
return handleAuthorized();
|
||||
}
|
||||
// 2. 进行刷新访问令牌
|
||||
try {
|
||||
const refreshTokenRes = await refreshToken()
|
||||
// 2.1 刷新成功,则回放队列的请求 + 当前请求
|
||||
setToken(refreshTokenRes.data)
|
||||
requestList.forEach(cb => cb())
|
||||
return service(res.config)
|
||||
} catch (e) {// 为什么需要 catch 异常呢?刷新失败时,请求因为 Promise.reject 触发异常。
|
||||
// 2.2 刷新失败,只回放队列的请求
|
||||
requestList.forEach(cb => cb())
|
||||
// 提示是否要登出。即不回放当前请求!不然会形成递归
|
||||
return handleAuthorized();
|
||||
} finally {
|
||||
requestList = []
|
||||
isRefreshToken = false
|
||||
}
|
||||
} else {
|
||||
// 添加到队列,等待刷新获取到新的令牌
|
||||
return new Promise(resolve => {
|
||||
requestList.push(() => {
|
||||
res.config.headers['Authorization'] = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
||||
resolve(service(res.config))
|
||||
})
|
||||
})
|
||||
service.interceptors.response.use(async res => {
|
||||
// 未设置状态码则默认成功状态
|
||||
const code = res.data.code || 200;
|
||||
// 获取错误信息
|
||||
const msg = res.data.msg || errorCode[code] || errorCode['default']
|
||||
if (ignoreMsgs.indexOf(msg) !== -1) { // 如果是忽略的错误码,直接返回 msg 异常
|
||||
return Promise.reject(msg)
|
||||
} else if (code === 401) {
|
||||
// 如果未认证,并且未进行刷新令牌,说明可能是访问令牌过期了
|
||||
if (!isRefreshToken) {
|
||||
isRefreshToken = true;
|
||||
// 1. 如果获取不到刷新令牌,则只能执行登出操作
|
||||
if (!getRefreshToken()) {
|
||||
return handleAuthorized();
|
||||
}
|
||||
} else if (code === 500) {
|
||||
Message({
|
||||
message: msg,
|
||||
type: 'error'
|
||||
})
|
||||
return Promise.reject(new Error(msg))
|
||||
} else if (code === 901) {
|
||||
Message({
|
||||
type: 'error',
|
||||
duration: 0,
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: '<div>演示模式,无法进行写操作</div>'
|
||||
+ '<div> </div>'
|
||||
+ '<div>参考 https://doc.iocoder.cn/ 教程</div>'
|
||||
+ '<div> </div>'
|
||||
+ '<div>5 分钟搭建本地环境</div>',
|
||||
})
|
||||
return Promise.reject(new Error(msg))
|
||||
} else if (code !== 200) {
|
||||
if (msg === '无效的刷新令牌') { // hard coding:忽略这个提示,直接登出
|
||||
console.log('无效的刷新令牌')
|
||||
} else {
|
||||
Notification.error({
|
||||
title: msg
|
||||
})
|
||||
// 2. 进行刷新访问令牌
|
||||
try {
|
||||
const refreshTokenRes = await refreshToken()
|
||||
// 2.1 刷新成功,则回放队列的请求 + 当前请求
|
||||
setToken(refreshTokenRes.data)
|
||||
requestList.forEach(cb => cb())
|
||||
return service(res.config)
|
||||
} catch (e) {// 为什么需要 catch 异常呢?刷新失败时,请求因为 Promise.reject 触发异常。
|
||||
// 2.2 刷新失败,只回放队列的请求
|
||||
requestList.forEach(cb => cb())
|
||||
// 提示是否要登出。即不回放当前请求!不然会形成递归
|
||||
return handleAuthorized();
|
||||
} finally {
|
||||
requestList = []
|
||||
isRefreshToken = false
|
||||
}
|
||||
return Promise.reject('error')
|
||||
} else {
|
||||
return res.data
|
||||
// 添加到队列,等待刷新获取到新的令牌
|
||||
return new Promise(resolve => {
|
||||
requestList.push(() => {
|
||||
res.config.headers['Authorization'] = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
||||
resolve(service(res.config))
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
error => {
|
||||
} else if (code === 500) {
|
||||
Message({
|
||||
message: msg,
|
||||
type: 'error'
|
||||
})
|
||||
return Promise.reject(new Error(msg))
|
||||
} else if (code === 901) {
|
||||
Message({
|
||||
type: 'error',
|
||||
duration: 0,
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: '<div>演示模式,无法进行写操作</div>'
|
||||
+ '<div> </div>'
|
||||
+ '<div>参考 https://doc.iocoder.cn/ 教程</div>'
|
||||
+ '<div> </div>'
|
||||
+ '<div>5 分钟搭建本地环境</div>',
|
||||
})
|
||||
return Promise.reject(new Error(msg))
|
||||
} else if (code !== 200) {
|
||||
if (msg === '无效的刷新令牌') { // hard coding:忽略这个提示,直接登出
|
||||
console.log(msg)
|
||||
} else {
|
||||
Notification.error({
|
||||
title: msg
|
||||
})
|
||||
}
|
||||
return Promise.reject('error')
|
||||
} else {
|
||||
return res.data
|
||||
}
|
||||
}, error => {
|
||||
console.log('err' + error)
|
||||
let { message } = error;
|
||||
let {message} = error;
|
||||
if (message === "Network Error") {
|
||||
message = "后端接口连接异常";
|
||||
}
|
||||
else if (message.includes("timeout")) {
|
||||
} else if (message.includes("timeout")) {
|
||||
message = "系统接口请求超时";
|
||||
}
|
||||
else if (message.includes("Request failed with status code")) {
|
||||
} else if (message.includes("Request failed with status code")) {
|
||||
message = "系统接口" + message.substr(message.length - 3) + "异常";
|
||||
}
|
||||
Message({
|
||||
|
@ -159,7 +165,7 @@ service.interceptors.response.use( async res => {
|
|||
export function getBaseHeader() {
|
||||
return {
|
||||
'Authorization': "Bearer " + getAccessToken(),
|
||||
'tenant-id': Cookies.get('tenantId'),
|
||||
'tenant-id': getTenantId(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -429,7 +429,7 @@ export default {
|
|||
this.$modal.confirm('是否删除该流程!!').then(function() {
|
||||
deleteModel(row.id).then(response => {
|
||||
that.getList();
|
||||
that.msgSuccess("删除成功");
|
||||
that.$modal.msgSuccess("删除成功");
|
||||
})
|
||||
}).catch(() => {});
|
||||
},
|
||||
|
@ -439,7 +439,7 @@ export default {
|
|||
this.$modal.confirm('是否部署该流程!!').then(function() {
|
||||
deployModel(row.id).then(response => {
|
||||
that.getList();
|
||||
that.msgSuccess("部署成功");
|
||||
that.$modal.msgSuccess("部署成功");
|
||||
})
|
||||
}).catch(() => {});
|
||||
},
|
||||
|
|
|
@ -55,10 +55,9 @@
|
|||
<script>
|
||||
import {getProcessDefinitionBpmnXML, getProcessDefinitionList} from "@/api/bpm/definition";
|
||||
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
|
||||
import {getForm} from "@/api/bpm/form";
|
||||
import {decodeFields} from "@/utils/formGenerator";
|
||||
import Parser from '@/components/parser/Parser'
|
||||
import {createProcessInstance, getMyProcessInstancePage} from "@/api/bpm/processInstance";
|
||||
import {createProcessInstance} from "@/api/bpm/processInstance";
|
||||
|
||||
// 流程实例的发起
|
||||
export default {
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="当前审批任务" align="center" prop="tasks">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-for="task in scope.row.tasks" type="text" @click="handleFormDetail(task.id)">
|
||||
<el-button v-for="task in scope.row.tasks" :key="task.id" type="text" @click="handleFormDetail(task.id)">
|
||||
<span>{{ task.name }}</span>
|
||||
</el-button>
|
||||
</template>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="规则范围" align="center" prop="options" width="440px">
|
||||
<template slot-scope="scope">
|
||||
<el-tag size="medium" v-if="scope.row.options" v-for="option in scope.row.options">
|
||||
<el-tag size="medium" v-if="scope.row.options" :key="option" v-for="option in scope.row.options">
|
||||
{{ getAssignRuleOptionName(scope.row.type, option) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
|
|
|
@ -107,9 +107,17 @@
|
|||
import {getCodeImg, sendSmsCode, socialAuthRedirect} from "@/api/login";
|
||||
import {getTenantIdByName} from "@/api/system/tenant";
|
||||
import Cookies from "js-cookie";
|
||||
import {decrypt, encrypt} from '@/utils/jsencrypt'
|
||||
import {SystemUserSocialTypeEnum} from "@/utils/constants";
|
||||
import {getTenantEnable} from "@/utils/ruoyi";
|
||||
import {
|
||||
getPassword,
|
||||
getRememberMe, getTenantName,
|
||||
getUsername,
|
||||
removePassword, removeRememberMe, removeTenantName,
|
||||
removeUsername,
|
||||
setPassword, setRememberMe, setTenantId, setTenantName,
|
||||
setUsername
|
||||
} from "@/utils/auth";
|
||||
|
||||
export default {
|
||||
name: "Login",
|
||||
|
@ -161,7 +169,7 @@ export default {
|
|||
const tenantId = res.data;
|
||||
if (tenantId && tenantId >= 0) {
|
||||
// 设置租户
|
||||
Cookies.set("tenantId", tenantId);
|
||||
setTenantId(tenantId)
|
||||
callback();
|
||||
} else {
|
||||
callback('租户不存在');
|
||||
|
@ -172,8 +180,6 @@ export default {
|
|||
}
|
||||
]
|
||||
},
|
||||
|
||||
|
||||
loading: false,
|
||||
redirect: undefined,
|
||||
// 枚举
|
||||
|
@ -213,21 +219,16 @@ export default {
|
|||
});
|
||||
},
|
||||
getCookie() {
|
||||
const username = Cookies.get("username");
|
||||
const password = Cookies.get("password");
|
||||
const rememberMe = Cookies.get('rememberMe')
|
||||
const tenantName = Cookies.get('tenantName');
|
||||
const mobile = Cookies.get('mobile');
|
||||
const mobileCode = Cookies.get('mobileCode');
|
||||
const loginType = Cookies.get('loginType');
|
||||
const username = getUsername();
|
||||
const password = getPassword();
|
||||
const rememberMe = getRememberMe();
|
||||
const tenantName = getTenantName();
|
||||
this.loginForm = {
|
||||
username: username === undefined ? this.loginForm.username : username,
|
||||
password: password === undefined ? this.loginForm.password : decrypt(password),
|
||||
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
|
||||
tenantName: tenantName === undefined ? this.loginForm.tenantName : tenantName,
|
||||
mobile: mobile === undefined ? this.loginForm.mobile : mobile,
|
||||
mobileCode: mobileCode === undefined ? this.loginForm.mobileCode : mobileCode,
|
||||
loginType: loginType === undefined ? this.loginForm.loginType : loginType,
|
||||
...this.loginForm,
|
||||
username: username ? username : this.loginForm.username,
|
||||
password: password ? password : this.loginForm.password,
|
||||
rememberMe: rememberMe ? getRememberMe() : false,
|
||||
tenantName: tenantName ? tenantName : this.loginForm.tenantName,
|
||||
};
|
||||
},
|
||||
handleLogin() {
|
||||
|
@ -236,18 +237,18 @@ export default {
|
|||
this.loading = true;
|
||||
// 设置 Cookie
|
||||
if (this.loginForm.rememberMe) {
|
||||
Cookies.set("username", this.loginForm.username, {expires: 30});
|
||||
Cookies.set("password", encrypt(this.loginForm.password), {expires: 30});
|
||||
Cookies.set('rememberMe', this.loginForm.rememberMe, {expires: 30});
|
||||
Cookies.set('tenantName', this.loginForm.tenantName, {expires: 30});
|
||||
setUsername(this.loginForm.username)
|
||||
setPassword(this.loginForm.password)
|
||||
setRememberMe(this.loginForm.rememberMe)
|
||||
setTenantName(this.loginForm.tenantName)
|
||||
} else {
|
||||
Cookies.remove("username");
|
||||
Cookies.remove("password");
|
||||
Cookies.remove('rememberMe');
|
||||
Cookies.remove('tenantName');
|
||||
removeUsername()
|
||||
removePassword()
|
||||
removeRememberMe()
|
||||
removeTenantName()
|
||||
}
|
||||
// 发起登陆
|
||||
console.log("发起登录", this.loginForm);
|
||||
// console.log("发起登录", this.loginForm);
|
||||
this.$store.dispatch(this.loginForm.loginType === "sms" ? "SmsLogin" : "Login", this.loginForm).then(() => {
|
||||
this.$router.push({path: this.redirect || "/"}).catch(() => {
|
||||
});
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
<!-- <el-table-column label="商户名称" align="center" prop="merchantName" width="120"/>-->
|
||||
<!-- <el-table-column label="应用名称" align="center" prop="appName" width="120"/>-->
|
||||
<el-table-column label="支付渠道" align="center" width="130">
|
||||
<template v-slot="scope">
|
||||
<template slot-scope="scope">
|
||||
<el-popover trigger="hover" placement="top">
|
||||
<p>商户名称: {{ scope.row.merchantName }}</p>
|
||||
<p>应用名称: {{ scope.row.appName }}</p>
|
||||
|
@ -88,7 +88,7 @@
|
|||
<!-- <el-table-column label="交易订单号" align="center" prop="tradeNo" width="140"/>-->
|
||||
<!-- <el-table-column label="商户订单编号" align="center" prop="merchantOrderId" width="140"/>-->
|
||||
<el-table-column label="商户订单号" align="left" width="230">
|
||||
<template v-slot="scope">
|
||||
<template slot-scope="scope">
|
||||
<p class="order-font">
|
||||
<el-tag size="mini">退款</el-tag>
|
||||
{{ scope.row.merchantRefundNo }}
|
||||
|
@ -100,7 +100,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="支付订单号" align="center" prop="merchantRefundNo" width="250">
|
||||
<template v-slot="scope">
|
||||
<template slot-scope="scope">
|
||||
<p class="order-font">
|
||||
<el-tag size="mini">交易</el-tag>
|
||||
{{ scope.row.tradeNo }}
|
||||
|
@ -112,7 +112,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="支付金额(元)" align="center" prop="payAmount" width="100">
|
||||
<template v-slot="scope" class="">
|
||||
<template slot-scope="scope" class="">
|
||||
¥{{ parseFloat(scope.row.payAmount / 100).toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
@ -122,17 +122,17 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="退款类型" align="center" prop="type" width="80">
|
||||
<template v-slot="scope">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :type="DICT_TYPE.PAY_REFUND_ORDER_TYPE" :value="scope.row.type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="退款状态" align="center" prop="status">
|
||||
<template v-slot="scope">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :type="DICT_TYPE.PAY_REFUND_ORDER_STATUS" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="回调状态" align="center" prop="notifyStatus">
|
||||
<template v-slot="scope">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :type="DICT_TYPE.PAY_ORDER_NOTIFY_STATUS" :value="scope.row.notifyStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
@ -183,7 +183,7 @@
|
|||
<el-tag class="tag-purple" size="mini">{{ parseFloat(refundDetail.refundAmount / 100).toFixed(2) }}</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="退款类型">
|
||||
<template v-slot="scope">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :type="DICT_TYPE.PAY_REFUND_ORDER_TYPE" :value="refundDetail.type" />
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<div>
|
||||
<el-form ref="loginForm" :model="loginForm" :rules="LoginRules" class="login-form">
|
||||
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
|
||||
<!-- 账号密码登录 -->
|
||||
<el-form-item prop="username">
|
||||
<el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
|
||||
|
@ -65,16 +65,28 @@
|
|||
<script>
|
||||
import Cookies from "js-cookie";
|
||||
import { encrypt, decrypt } from '@/utils/jsencrypt'
|
||||
import {
|
||||
getPassword, getRememberMe,
|
||||
getUsername,
|
||||
removePassword,
|
||||
removeUsername,
|
||||
setPassword,
|
||||
setRememberMe,
|
||||
setUsername
|
||||
} from "@/utils/auth";
|
||||
import {getCodeImg} from "@/api/login";
|
||||
|
||||
export default {
|
||||
name: "ThirdLogin",
|
||||
data() {
|
||||
return {
|
||||
codeUrl: "",
|
||||
captchaEnable: true,
|
||||
loginForm: {
|
||||
loginType: "uname",
|
||||
username: "admin",
|
||||
password: "admin123",
|
||||
rememberMe: false, // TODO 芋艿:后面看情况,去掉这块
|
||||
rememberMe: false,
|
||||
},
|
||||
loginRules: {
|
||||
username: [
|
||||
|
@ -104,6 +116,7 @@ export default {
|
|||
this.getCookie();
|
||||
// 重定向地址
|
||||
this.redirect = this.$route.query.redirect;
|
||||
this.getCode();
|
||||
// 社交登录相关
|
||||
this.type = this.$route.query.type;
|
||||
this.code = this.$route.query.code;
|
||||
|
@ -119,16 +132,30 @@ export default {
|
|||
});
|
||||
},
|
||||
methods: {
|
||||
getCode() {
|
||||
// 只有开启的状态,才加载验证码。默认开启
|
||||
if (!this.captchaEnable) {
|
||||
return;
|
||||
}
|
||||
// 请求远程,获得验证码
|
||||
getCodeImg().then(res => {
|
||||
res = res.data;
|
||||
this.captchaEnable = res.enable;
|
||||
if (this.captchaEnable) {
|
||||
this.codeUrl = "data:image/gif;base64," + res.img;
|
||||
this.loginForm.uuid = res.uuid;
|
||||
}
|
||||
});
|
||||
},
|
||||
getCookie() {
|
||||
const username = Cookies.get("username");
|
||||
const password = Cookies.get("password");
|
||||
const rememberMe = Cookies.get('rememberMe')
|
||||
const loginType = Cookies.get('loginType');
|
||||
const username = getUsername();
|
||||
const password = getPassword();
|
||||
const rememberMe = getRememberMe();
|
||||
this.loginForm = {
|
||||
username: username === undefined ? this.loginForm.username : username,
|
||||
password: password === undefined ? this.loginForm.password : decrypt(password),
|
||||
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
|
||||
loginType: loginType === undefined ? this.loginForm.loginType : loginType,
|
||||
username: username ? username : this.loginForm.username,
|
||||
password: password ? password : this.loginForm.password,
|
||||
rememberMe: rememberMe ? getRememberMe() : false,
|
||||
loginType: this.loginForm.loginType,
|
||||
};
|
||||
},
|
||||
handleLogin() {
|
||||
|
@ -136,11 +163,12 @@ export default {
|
|||
if (valid) {
|
||||
this.loading = true;
|
||||
if (this.loginForm.rememberMe) {
|
||||
Cookies.set("username", this.loginForm.username, { expires: 30 });
|
||||
Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
|
||||
setUsername(this.loginForm.username)
|
||||
setPassword(this.loginForm.password)
|
||||
setRememberMe(this.loginForm.rememberMe)
|
||||
} else {
|
||||
Cookies.remove("username");
|
||||
Cookies.remove("password");
|
||||
removeUsername()
|
||||
removePassword()
|
||||
}
|
||||
this.$store.dispatch("SocialLogin2", {
|
||||
code: this.code,
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="授权类型" align="center" prop="authorizedGrantTypes">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :disable-transitions="true" v-for="(authorizedGrantType, index) in scope.row.authorizedGrantTypes" :index="index">
|
||||
<el-tag :disable-transitions="true" :key="index" v-for="(authorizedGrantType, index) in scope.row.authorizedGrantTypes" :index="index">
|
||||
{{ authorizedGrantType }}
|
||||
</el-tag>
|
||||
</template>
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
<el-table-column label="描述" align="center" prop="description"/>
|
||||
<el-table-column label="标签" align="center" prop="tags">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :disable-transitions="true" v-for="(tag, index) in scope.row.tags" :index="index">
|
||||
<el-tag :disable-transitions="true" :key="index" v-for="(tag, index) in scope.row.tags" :index="index">
|
||||
{{ tag }}
|
||||
</el-tag>
|
||||
</template>
|
||||
|
|
|
@ -147,7 +147,7 @@
|
|||
<el-form-item label="手机号" prop="mobile">
|
||||
<el-input v-model="sendSmsForm.mobile" placeholder="请输入手机号" />
|
||||
</el-form-item>
|
||||
<el-form-item v-for="param in sendSmsForm.params" :label="'参数 {' + param + '}'" :prop="'templateParams.' + param">
|
||||
<el-form-item v-for="param in sendSmsForm.params" :key="param" :label="'参数 {' + param + '}'" :prop="'templateParams.' + param">
|
||||
<el-input v-model="sendSmsForm.templateParams[param]" :placeholder="'请输入 ' + param + ' 参数'" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
|
|
@ -111,7 +111,7 @@
|
|||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="归属部门" prop="deptId">
|
||||
<treeselect v-model="form.deptId" :options="deptOptions" :show-count="true"
|
||||
<treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" :clearable="false"
|
||||
placeholder="请选择归属部门" :normalizer="normalizer"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
@ -304,7 +304,7 @@ export default {
|
|||
// 设置上传的请求头部
|
||||
headers: getBaseHeader(),
|
||||
// 上传的地址
|
||||
url: process.env.VUE_APP_BASE_API + '/admin-api/' + "/system/user/import"
|
||||
url: process.env.VUE_APP_BASE_API + '/admin-api/system/user/import'
|
||||
},
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
|
|
Loading…
Reference in New Issue