#if($insertAndUpdate.isSupportInsertAndUpdate)
@@ -116,17 +130,17 @@
@@ -145,6 +159,8 @@
#foreach ($import in $frontImportList)
$!{import}
#end
+ //import FilePreview from '/@/components/support/file-preview/index.vue'; // 图片预览组件
+
// ---------------------------- 表格列 ----------------------------
const columns = ref([
diff --git a/smart-admin-api/sa-base/src/main/resources/dev/sa-base.yaml b/smart-admin-api/sa-base/src/main/resources/dev/sa-base.yaml
index ed7d3064..3cde2409 100644
--- a/smart-admin-api/sa-base/src/main/resources/dev/sa-base.yaml
+++ b/smart-admin-api/sa-base/src/main/resources/dev/sa-base.yaml
@@ -3,14 +3,14 @@ spring:
datasource:
url: jdbc:p6spy:mysql://127.0.0.1:3306/smart_admin_v3?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: root
- password: Zhuoda1024lab
+ password: SmartAdmin666
+ driver-class-name: com.p6spy.engine.spy.P6SpyDriver
initial-size: 2
min-idle: 2
max-active: 10
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
- driver-class-name: com.p6spy.engine.spy.P6SpyDriver
filters: stat
druid:
username: druid
@@ -34,11 +34,22 @@ spring:
max-idle: 3
max-wait: 30000ms
- # 上传文件大小配置
- servlet:
- multipart:
- max-file-size: 30MB
- max-request-size: 30MB
+ # 邮件,置以SSL的方式发送, 这个需要使用这种方式并且端口是465
+ mail:
+ host: smtp.163.com
+ port: 465
+ username: lab1024@163.com
+ password: ROIASDFJKHQFTA
+ properties:
+ mail:
+ smtp:
+ auth: true
+ ssl:
+ enable: true
+ socketFactory:
+ class: com.sun.mail.util.MailSSLSocketFactory
+ fallback: false
+ debug: false
# json序列化相关配置
jackson:
@@ -87,6 +98,7 @@ springdoc:
enabled: true # 开关
doc-expansion: none #关闭展开
tags-sorter: alpha
+ server-base-url:
api-docs:
enabled: true # 开关
knife4j:
diff --git a/smart-admin-api/sa-base/src/main/resources/mapper/support/OperateLogMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/OperateLogMapper.xml
index 1d22bee1..fcf1d8e1 100644
--- a/smart-admin-api/sa-base/src/main/resources/mapper/support/OperateLogMapper.xml
+++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/OperateLogMapper.xml
@@ -22,6 +22,12 @@
AND INSTR(operate_user_name,#{query.userName})
+
+ AND (INSTR(`module`,#{query.keywords}) OR INSTR(content,#{query.keywords}))
+
+
+ AND (INSTR(`url`,#{query.requestKeywords}) OR INSTR(`method`,#{query.requestKeywords}) OR INSTR(`param`,#{query.requestKeywords}))
+
AND success_flag = #{query.successFlag}
diff --git a/smart-admin-api/sa-base/src/main/resources/mapper/support/PasswordLogMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/PasswordLogMapper.xml
new file mode 100644
index 00000000..84ef7980
--- /dev/null
+++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/PasswordLogMapper.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/smart-admin-api/sa-base/src/main/resources/pre/sa-base.yaml b/smart-admin-api/sa-base/src/main/resources/pre/sa-base.yaml
index 257f8ac5..13718676 100644
--- a/smart-admin-api/sa-base/src/main/resources/pre/sa-base.yaml
+++ b/smart-admin-api/sa-base/src/main/resources/pre/sa-base.yaml
@@ -3,14 +3,14 @@ spring:
datasource:
url: jdbc:p6spy:mysql://127.0.0.1:3306/smart_admin_v3?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: root
- password: Zhuoda1024lab
+ password: SmartAdmin666
+ driver-class-name: com.p6spy.engine.spy.P6SpyDriver
initial-size: 2
min-idle: 2
max-active: 10
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
- driver-class-name: com.p6spy.engine.spy.P6SpyDriver
filters: stat
druid:
username: druid
@@ -34,11 +34,22 @@ spring:
max-idle: 3
max-wait: 30000ms
- # 上传文件大小配置
- servlet:
- multipart:
- max-file-size: 30MB
- max-request-size: 30MB
+ # 邮件,置以SSL的方式发送, 这个需要使用这种方式并且端口是465
+ mail:
+ host: smtp.163.com
+ port: 465
+ username: lab1024@163.com
+ password: ROIASDFJKHQFTA
+ properties:
+ mail:
+ smtp:
+ auth: true
+ ssl:
+ enable: true
+ socketFactory:
+ class: com.sun.mail.util.MailSSLSocketFactory
+ fallback: false
+ debug: false
# json序列化相关配置
jackson:
@@ -65,7 +76,6 @@ server:
max-days: 7
pattern: "%t %{X-Forwarded-For}i %a %r %s (%D ms) %I (%B byte)"
-
# 文件上传 配置
file:
storage:
@@ -82,13 +92,13 @@ file:
url-prefix: https://${file.storage.cloud.bucket-name}.${file.storage.cloud.endpoint}/
private-url-expire-seconds: 3600
-
# open api配置
springdoc:
swagger-ui:
enabled: true # 开关
doc-expansion: none #关闭展开
tags-sorter: alpha
+ server-base-url:
api-docs:
enabled: true # 开关
knife4j:
@@ -112,11 +122,11 @@ access-control-allow-origin: '*'
# 心跳配置
heart-beat:
- interval-seconds: 60
+ interval-seconds: 300
# 热加载配置
reload:
- interval-seconds: 60
+ interval-seconds: 300
# sa-token 配置
sa-token:
@@ -135,9 +145,9 @@ sa-token:
# 是否打开自动续签 (如果此值为true,框架会在每次直接或间接调用 getLoginId() 时进行一次过期检查与续签操作)
auto-renew: true
# 是否输出操作日志
- is-log: false
+ is-log: true
# 日志等级(trace、debug、info、warn、error、fatal)
- log-level: warn
+ log-level: debug
# 启动时的字符画打印
is-print: false
# 是否从cookie读取token
diff --git a/smart-admin-api/sa-base/src/main/resources/prod/sa-base.yaml b/smart-admin-api/sa-base/src/main/resources/prod/sa-base.yaml
index 4758a75d..1644a5d4 100644
--- a/smart-admin-api/sa-base/src/main/resources/prod/sa-base.yaml
+++ b/smart-admin-api/sa-base/src/main/resources/prod/sa-base.yaml
@@ -3,14 +3,14 @@ spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/smart_admin_v3_dev?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: root
- password: Zhuoda#1024lab
+ password: SmartAdmin666
+ driver-class-name: com.mysql.cj.jdbc.Driver
initial-size: 10
min-idle: 10
max-active: 100
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
- driver-class-name: com.mysql.cj.jdbc.Driver
filters: stat
druid:
username: druid
@@ -33,12 +33,22 @@ spring:
min-idle: 10
max-idle: 50
max-wait: 30000ms
-
- # 上传文件大小配置
- servlet:
- multipart:
- max-file-size: 30MB
- max-request-size: 30MB
+ # 邮件,置以SSL的方式发送, 这个需要使用这种方式并且端口是465
+ mail:
+ host: smtp.163.com
+ port: 465
+ username: lab1024@163.com
+ password: ROIASDFJKHQFTA
+ properties:
+ mail:
+ smtp:
+ auth: true
+ ssl:
+ enable: true
+ socketFactory:
+ class: com.sun.mail.util.MailSSLSocketFactory
+ fallback: false
+ debug: false
# json序列化相关配置
jackson:
@@ -74,9 +84,9 @@ file:
upload-path: /home/smart_admin_v3/upload/ #文件上传目录
url-prefix:
cloud:
- region: oss-cn-qingdao
- endpoint: oss-cn-qingdao.aliyuncs.com
- bucket-name: common
+ region: oss-cn-hangzhou
+ endpoint: oss-cn-hangzhou.aliyuncs.com
+ bucket-name: 1024lab-smart-admin
access-key:
secret-key:
url-prefix: https://${file.storage.cloud.bucket-name}.${file.storage.cloud.endpoint}/
diff --git a/smart-admin-api/sa-base/src/main/resources/test/sa-base.yaml b/smart-admin-api/sa-base/src/main/resources/test/sa-base.yaml
index e9fc251d..3cde2409 100644
--- a/smart-admin-api/sa-base/src/main/resources/test/sa-base.yaml
+++ b/smart-admin-api/sa-base/src/main/resources/test/sa-base.yaml
@@ -3,14 +3,14 @@ spring:
datasource:
url: jdbc:p6spy:mysql://127.0.0.1:3306/smart_admin_v3?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: root
- password: Zhuoda1024lab
+ password: SmartAdmin666
+ driver-class-name: com.p6spy.engine.spy.P6SpyDriver
initial-size: 2
min-idle: 2
max-active: 10
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
- driver-class-name: com.p6spy.engine.spy.P6SpyDriver
filters: stat
druid:
username: druid
@@ -34,11 +34,22 @@ spring:
max-idle: 3
max-wait: 30000ms
- # 上传文件大小配置
- servlet:
- multipart:
- max-file-size: 30MB
- max-request-size: 30MB
+ # 邮件,置以SSL的方式发送, 这个需要使用这种方式并且端口是465
+ mail:
+ host: smtp.163.com
+ port: 465
+ username: lab1024@163.com
+ password: ROIASDFJKHQFTA
+ properties:
+ mail:
+ smtp:
+ auth: true
+ ssl:
+ enable: true
+ socketFactory:
+ class: com.sun.mail.util.MailSSLSocketFactory
+ fallback: false
+ debug: false
# json序列化相关配置
jackson:
@@ -65,7 +76,6 @@ server:
max-days: 7
pattern: "%t %{X-Forwarded-For}i %a %r %s (%D ms) %I (%B byte)"
-
# 文件上传 配置
file:
storage:
@@ -82,20 +92,19 @@ file:
url-prefix: https://${file.storage.cloud.bucket-name}.${file.storage.cloud.endpoint}/
private-url-expire-seconds: 3600
-
# open api配置
springdoc:
swagger-ui:
enabled: true # 开关
doc-expansion: none #关闭展开
tags-sorter: alpha
- server-base-url: http://smartadmin.dev.1024lab.net/api/
+ server-base-url:
api-docs:
enabled: true # 开关
knife4j:
enable: true
basic:
- enable: true
+ enable: false
username: api # Basic认证用户名
password: 1024 # Basic认证密码
diff --git a/smart-admin-web/javascript-ant-design-vue3/.env.development b/smart-admin-web/javascript-ant-design-vue3/.env.development
index df615c53..7ae8066c 100644
--- a/smart-admin-web/javascript-ant-design-vue3/.env.development
+++ b/smart-admin-web/javascript-ant-design-vue3/.env.development
@@ -1,3 +1,3 @@
NODE_ENV=development
VITE_APP_TITLE='SmartAdmin 开发环境(Dev)'
-VITE_APP_API_URL='http://smartadmin.dev.1024lab.net/api/'
+VITE_APP_API_URL='http://127.0.0.1:1024'
\ No newline at end of file
diff --git a/smart-admin-web/javascript-ant-design-vue3/.env.test b/smart-admin-web/javascript-ant-design-vue3/.env.test
index d034749e..66243b33 100644
--- a/smart-admin-web/javascript-ant-design-vue3/.env.test
+++ b/smart-admin-web/javascript-ant-design-vue3/.env.test
@@ -1,3 +1,3 @@
NODE_ENV=production
VITE_APP_TITLE='SmartAdmin 测试环境(Test)'
-VITE_APP_API_URL='http://smartadmin.dev.1024lab.net/api/'
+VITE_APP_API_URL='http://127.0.0.1:1024'
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/api/support/data-masking-api.js b/smart-admin-web/javascript-ant-design-vue3/src/api/support/data-masking-api.js
new file mode 100644
index 00000000..16e670bb
--- /dev/null
+++ b/smart-admin-web/javascript-ant-design-vue3/src/api/support/data-masking-api.js
@@ -0,0 +1,17 @@
+/**
+ * 数据脱敏api
+ *
+ * @Author: 1024创新实验室-主任-卓大
+ * @Date: 2024-07-31 21:02:37
+ * @Copyright 1024创新实验室
+ */
+import { getRequest } from '/src/lib/axios';
+
+export const dataMaskingApi = {
+ /**
+ * 查询脱敏数据
+ */
+ query: () => {
+ return getRequest('/support/dataMasking/demo/query');
+ },
+};
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/api/support/level3-protect-api.js b/smart-admin-web/javascript-ant-design-vue3/src/api/support/level3-protect-api.js
new file mode 100644
index 00000000..c6be240f
--- /dev/null
+++ b/smart-admin-web/javascript-ant-design-vue3/src/api/support/level3-protect-api.js
@@ -0,0 +1,24 @@
+/**
+ * 三级等保 api 封装
+ *
+ * @Author: 1024创新实验室-主任-卓大
+ * @Date: 2024-07-31 21:02:37
+ * @Copyright 1024创新实验室
+ */
+import { postRequest, getRequest } from '/src/lib/axios';
+
+export const level3ProtectApi = {
+ /**
+ * 查询 三级等保配置 @author 1024创新实验室-主任-卓大
+ */
+ getConfig: () => {
+ return getRequest('/support/protect/level3protect/getConfig');
+ },
+
+ /**
+ * 更新三级等保配置 @author 1024创新实验室-主任-卓大
+ */
+ updateConfig: (form) => {
+ return postRequest('/support/protect/level3protect/updateConfig', form);
+ },
+};
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/api/system/employee-api.js b/smart-admin-web/javascript-ant-design-vue3/src/api/system/employee-api.js
index dd02ec6f..3929911e 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/api/system/employee-api.js
+++ b/smart-admin-web/javascript-ant-design-vue3/src/api/system/employee-api.js
@@ -8,7 +8,7 @@
* @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012
*/
-import { getRequest, postRequest } from '/src/lib/axios';
+import { getRequest, postEncryptRequest, postRequest } from '/src/lib/axios';
export const employeeApi = {
/**
@@ -72,11 +72,19 @@ export const employeeApi = {
return getRequest(`/employee/update/password/reset/${employeeId}`);
},
/**
- * 修改面面
+ * 修改密码
*/
updateEmployeePassword: (param) => {
- return postRequest('/employee/update/password', param);
+ return postEncryptRequest('/employee/update/password', param);
},
+
+ /**
+ * 获取密码复杂度
+ */
+ getPasswordComplexityEnabled: () => {
+ return getRequest('/employee/getPasswordComplexityEnabled');
+ },
+
/**
* 更新员工禁用状态
*/
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/api/system/login-api.js b/smart-admin-web/javascript-ant-design-vue3/src/api/system/login-api.js
index 5c1593fc..08fe20ce 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/api/system/login-api.js
+++ b/smart-admin-web/javascript-ant-design-vue3/src/api/system/login-api.js
@@ -37,4 +37,18 @@ export const loginApi = {
getLoginInfo: () => {
return getRequest('/login/getLoginInfo');
},
+
+ /**
+ * 获取邮箱登录验证码 @author 卓大
+ */
+ sendLoginEmailCode: (loginName) => {
+ return getRequest(`/login/sendEmailCode/${loginName}`);
+ },
+
+ /**
+ * 获取双因子登录标识 @author 卓大
+ */
+ getTwoFactorLoginFlag: () => {
+ return getRequest('/login/getTwoFactorLoginFlag');
+ },
};
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/components/framework/wangeditor/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/components/framework/wangeditor/index.vue
index 6da8f0ab..2ecdeac6 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/components/framework/wangeditor/index.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/components/framework/wangeditor/index.vue
@@ -61,7 +61,6 @@
watch(
() => props.modelValue,
(nVal) => {
- console.log(nVal);
editorHtml.value = nVal;
},
{
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/components/support/dict-key-select/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/components/support/dict-key-select/index.vue
index 1c2dffc5..2fd3eb24 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/components/support/dict-key-select/index.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/components/support/dict-key-select/index.vue
@@ -27,9 +27,13 @@
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/components/support/table-operator/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/components/support/table-operator/index.vue
index cf94f487..f77fc2a5 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/components/support/table-operator/index.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/components/support/table-operator/index.vue
@@ -1,11 +1,11 @@
@@ -98,10 +98,12 @@
//取消全屏
exitFullscreen(document.querySelector('#smartAdminLayoutContent'));
fullScreenFlag.value = false;
+ document.querySelector('#smartAdminPageTag').style.visibility = 'visible';
} else {
//全屏
launchFullScreen(document.querySelector('#smartAdminLayoutContent'));
fullScreenFlag.value = true;
+ document.querySelector('#smartAdminPageTag').style.visibility = 'hidden';
}
}
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/components/system/employee-table-select-modal/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/components/system/employee-table-select-modal/index.vue
index 4f140555..352d9b23 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/components/system/employee-table-select-modal/index.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/components/system/employee-table-select-modal/index.vue
@@ -40,7 +40,7 @@
selectedRowKeyList.value.length > 0);
+ const hasSelected = computed(() => selectedRowKeyList.value.length !== originalRowKeyList.value.length);
function onSelectChange(selectedRowKeys) {
selectedRowKeyList.value = selectedRowKeys;
@@ -156,10 +158,19 @@
message.warning('请选择角色人员');
return;
}
- emits('selectData', selectedRowKeyList.value);
+ // 过滤出新选择的人员id
+ const newEmployeeIdList = selectedRowKeyList.value.filter((id) => !originalRowKeyList.value.includes(id));
+ emits('selectData', newEmployeeIdList);
closeModal();
}
+ function getCheckboxProps(record) {
+ return {
+ // 角色员工列表的添加员工弹窗中 禁止添加选择已存在该角色的员工
+ disabled: originalRowKeyList.value.includes(record.employeeId),
+ };
+ }
+
// ----------------------- 员工表格渲染 ---------------------
const tableData = ref([]);
//字段
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/constants/local-storage-key-const.js b/smart-admin-web/javascript-ant-design-vue3/src/constants/local-storage-key-const.js
index 384c6e74..b48a1f6c 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/constants/local-storage-key-const.js
+++ b/smart-admin-web/javascript-ant-design-vue3/src/constants/local-storage-key-const.js
@@ -18,8 +18,6 @@ const KEY_PREFIX = 'smart_admin_';
export default {
// 用户token
USER_TOKEN: `${KEY_PREFIX}user_token`,
- // 用户信息
- USER_INFO: `${KEY_PREFIX}user_info`,
// 用户权限点
USER_POINTS: `${KEY_PREFIX}user_points`,
// 用户的tag列表
@@ -30,4 +28,6 @@ export default {
HOME_QUICK_ENTRY: `${KEY_PREFIX}home_quick_entry`,
// 通知信息已读
NOTICE_READ: `${KEY_PREFIX}notice_read`,
+ // 待办
+ TO_BE_DONE: `${KEY_PREFIX}to_be_done`,
};
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/constants/regular-const.js b/smart-admin-web/javascript-ant-design-vue3/src/constants/regular-const.js
index 0633dc87..4c1338c8 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/constants/regular-const.js
+++ b/smart-admin-web/javascript-ant-design-vue3/src/constants/regular-const.js
@@ -25,4 +25,5 @@ export const regular = {
isElseFileReg: new RegExp(/\.(doc|docx|xls|xlsx|txt|ppt|pptx|pps|ppxs)/),
isIdentityCard: /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/, // 验证身份证号
isChinese: /^[\u4e00-\u9fa5]+$/gi, // 验证是否汉字
+
};
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/change-password/regular-change-password-modal.vue b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/change-password/regular-change-password-modal.vue
new file mode 100644
index 00000000..2f863e6e
--- /dev/null
+++ b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/change-password/regular-change-password-modal.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-avatar.vue b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-avatar.vue
index 5af75daa..7540c1b0 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-avatar.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-avatar.vue
@@ -37,7 +37,6 @@
import { computed, ref, onMounted } from 'vue';
import { loginApi } from '/src/api/system/login-api';
import { useUserStore } from '/@/store/modules/system/user';
- import { localClear } from '/@/utils/local-util';
import { smartSentry } from '/@/lib/smart-sentry';
import HeaderResetPassword from './header-reset-password-modal/index.vue';
import { useRouter } from 'vue-router';
@@ -53,7 +52,6 @@
} catch (e) {
smartSentry.captureError(e);
} finally {
- localClear();
useUserStore().logout();
location.reload();
}
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-message-detail-modal.vue b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-message-detail-modal.vue
new file mode 100644
index 00000000..3e0e7a35
--- /dev/null
+++ b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-message-detail-modal.vue
@@ -0,0 +1,47 @@
+
+
+
+ {{ $smartEnumPlugin.getDescByValue('MESSAGE_TYPE_ENUM', messageDetail.messageType) }}
+
+ {{ messageDetail.createTime }}
+ {{ messageDetail.title }}
+
+ {{ messageDetail.content }}
+
+
+
+ 关闭
+
+
+
+
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-message.vue b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-message.vue
index d50337b5..9ce7c71d 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-message.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-message.vue
@@ -9,26 +9,31 @@
-->
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
-
+
+
+ 未读消息
+
+
@@ -36,157 +41,218 @@
+
+ 查看更多
+
-
-
+
+
+ 待办工作
+
+
+
+
+
+
+
+ 重要
+ {{ item.title }}
+
+
+
+
-
-
-
+
+
+
+
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-reset-password-modal/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-reset-password-modal/index.vue
index 4de4c872..4166733c 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-reset-password-modal/index.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-reset-password-modal/index.vue
@@ -1,11 +1,11 @@
@@ -31,7 +31,7 @@
const visible = ref(false);
const formRef = ref();
- const tips = '密码长度8-20位且包含大写字母、小写字母、数字三种'; //校验规则
+ const tips = '密码必须为长度8-20位且包含大小写字母、数字、特殊符号三种及以上组合'; //校验规则
const reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,20}$/;
const rules = {
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-setting.vue b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-setting.vue
index 77b4cb07..9fdbbc34 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-setting.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/header-setting.vue
@@ -18,7 +18,7 @@
-
+
@@ -34,7 +34,7 @@
>
+ />
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/index.vue
index 62c2e413..96e4cbe9 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/index.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/header-user-space/index.vue
@@ -10,13 +10,6 @@
-
@@ -57,12 +50,6 @@
headerSetting.value.show();
}
- //消息通知
- const headerMessage = ref();
- function showMessage() {
- headerMessage.value.showMessage();
- }
-
//帮助文档
function showHelpDoc() {
useAppConfigStore().showHelpDoc();
@@ -76,11 +63,6 @@
return useAppConfigStore().helpDocExpandFlag;
});
- //搜索
- function search() {
- window.open('https://1024lab.net');
- }
-
const { useToken } = theme;
const { token } = useToken();
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/page-tag/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/page-tag/index.vue
index 27abf8cd..048d2c01 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/layout/components/page-tag/index.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/layout/components/page-tag/index.vue
@@ -8,8 +8,10 @@
* @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012
-->
-
-
+
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/lib/axios.js b/smart-admin-web/javascript-ant-design-vue3/src/lib/axios.js
index e77c4419..2ee2b2d1 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/lib/axios.js
+++ b/smart-admin-web/javascript-ant-design-vue3/src/lib/axios.js
@@ -9,7 +9,8 @@
*/
import { message, Modal } from 'ant-design-vue';
import axios from 'axios';
-import { localClear, localRead } from '/@/utils/local-util';
+import { localRead } from '/@/utils/local-util';
+import { useUserStore } from '/@/store/modules/system/user';
import { decryptData, encryptData } from './encrypt';
import { DATA_TYPE_ENUM } from '../constants/common-const';
import _ from 'lodash';
@@ -25,7 +26,7 @@ const smartAxios = axios.create({
// 退出系统
function logout() {
- localClear();
+ useUserStore().logout();
location.href = '/';
}
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/router/index.js b/smart-admin-web/javascript-ant-design-vue3/src/router/index.js
index b34d2b7b..e8e3f7d9 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/router/index.js
+++ b/smart-admin-web/javascript-ant-design-vue3/src/router/index.js
@@ -33,7 +33,7 @@ router.beforeEach(async (to, from, next) => {
nProgress.start();
// 公共页面,任何时候都可以跳转
- if (to.path === PAGE_PATH_404 || to.path === PAGE_PATH_LOGIN) {
+ if (to.path === PAGE_PATH_404) {
next();
return;
}
@@ -41,8 +41,18 @@ router.beforeEach(async (to, from, next) => {
// 验证登录
const token = localRead(LocalStorageKeyConst.USER_TOKEN);
if (!token) {
- localClear();
- next({ path: PAGE_PATH_LOGIN });
+ useUserStore().logout();
+ if (to.path === PAGE_PATH_LOGIN) {
+ next();
+ } else {
+ next({ path: PAGE_PATH_LOGIN });
+ }
+ return;
+ }
+
+ // 登录页,则跳转到首页
+ if (to.path === PAGE_PATH_LOGIN) {
+ next({ path: HOME_PAGE_PATH });
return;
}
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/store/modules/system/user.js b/smart-admin-web/javascript-ant-design-vue3/src/store/modules/system/user.js
index becf2140..3c5ed6c9 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/store/modules/system/user.js
+++ b/smart-admin-web/javascript-ant-design-vue3/src/store/modules/system/user.js
@@ -12,10 +12,10 @@ import { defineStore } from 'pinia';
import localKey from '/@/constants/local-storage-key-const';
import { HOME_PAGE_NAME } from '/@/constants/system/home-const';
import { MENU_TYPE_ENUM } from '/@/constants/system/menu-const';
-import { localClear, localRead, localSave } from '/@/utils/local-util';
-import LocalStorageKeyConst from '/@/constants/local-storage-key-const';
import { messageApi } from '/@/api/support/message-api.js';
import { smartSentry } from '/@/lib/smart-sentry.js';
+import { localRead, localSave, localRemove } from '/@/utils/local-util';
+
export const useUserStore = defineStore({
id: 'userStore',
@@ -35,6 +35,8 @@ export const useUserStore = defineStore({
departmentId: '',
//部门名词
departmentName: '',
+ //是否需要修改密码
+ needUpdatePwdFlag: false,
//是否为超级管理员
administratorFlag: true,
//上次登录ip
@@ -61,13 +63,18 @@ export const useUserStore = defineStore({
keepAliveIncludes: [],
// 未读消息数量
unreadMessageCount: 0,
+ // 待办工作数
+ toBeDoneCount: 0,
}),
getters: {
getToken(state) {
if (state.token) {
return state.token;
}
- return localRead(LocalStorageKeyConst.USER_TOKEN);
+ return localRead(localKey.USER_TOKEN);
+ },
+ getNeedUpdatePwdFlag(state){
+ return state.needUpdatePwdFlag;
},
//是否初始化了 路由
getMenuRouterInitFlag(state) {
@@ -113,9 +120,10 @@ export const useUserStore = defineStore({
this.token = '';
this.menuList = [];
this.tagNav = [];
- this.userInfo = {};
this.unreadMessageCount = 0;
- localClear();
+ localRemove(localKey.USER_TOKEN);
+ localRemove(localKey.USER_POINTS);
+ localRemove(localKey.USER_TAG_NAV);
},
// 查询未读消息数量
async queryUnreadMessageCount() {
@@ -126,6 +134,16 @@ export const useUserStore = defineStore({
smartSentry.captureError(e);
}
},
+ async queryToBeDoneList() {
+ try {
+ let localToBeDoneList = localRead(localKey.TO_BE_DONE);
+ if (localToBeDoneList) {
+ this.toBeDoneCount = JSON.parse(localToBeDoneList).filter((e) => !e.doneFlag).length;
+ }
+ } catch (err) {
+ smartSentry.captureError(err);
+ }
+ },
//设置登录信息
setUserLoginInfo(data) {
// 用户基本信息
@@ -137,6 +155,7 @@ export const useUserStore = defineStore({
this.phone = data.phone;
this.departmentId = data.departmentId;
this.departmentName = data.departmentName;
+ this.needUpdatePwdFlag = data.needUpdatePwdFlag;
this.administratorFlag = data.administratorFlag;
this.lastLoginIp = data.lastLoginIp;
this.lastLoginIpRegion = data.lastLoginIpRegion;
@@ -157,6 +176,8 @@ export const useUserStore = defineStore({
// 获取用户未读消息
this.queryUnreadMessageCount();
+ // 获取待办工作数
+ this.queryToBeDoneList();
},
setToken(token) {
this.token = token;
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/utils/local-util.js b/smart-admin-web/javascript-ant-design-vue3/src/utils/local-util.js
index cb167a33..80e8903b 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/utils/local-util.js
+++ b/smart-admin-web/javascript-ant-design-vue3/src/utils/local-util.js
@@ -19,3 +19,7 @@ export const localRead = (key) => {
export const localClear = () => {
localStorage.clear();
};
+
+export const localRemove = (key) => {
+ localStorage.removeItem(key);
+};
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/business/erp/goods/components/goods-form-modal.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/business/erp/goods/components/goods-form-modal.vue
index f885e42a..c0a72c51 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/business/erp/goods/components/goods-form-modal.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/business/erp/goods/components/goods-form-modal.vue
@@ -20,7 +20,7 @@
-
+
@@ -80,7 +80,7 @@
//商品状态
goodsStatus: GOODS_STATUS_ENUM.APPOINTMENT.value,
//产地
- place: undefined,
+ place: [],
//商品价格
price: undefined,
//上架状态
@@ -107,9 +107,8 @@
Object.assign(form, rowData);
}
if (form.place && form.place.length > 0) {
- form.place = form.place[0].valueCode;
+ form.place = form.place.map((e) => e.valueCode);
}
- console.log(form);
visible.value = true;
nextTick(() => {
formRef.value.clearValidate();
@@ -127,14 +126,10 @@
.then(async () => {
SmartLoading.show();
try {
- let params = _.cloneDeep(form);
- if (params.place && Array.isArray(params.place) && params.place.length > 0) {
- params.place = params.place[0].valueCode;
- }
if (form.goodsId) {
- await goodsApi.updateGoods(params);
+ await goodsApi.updateGoods(form);
} else {
- await goodsApi.addGoods(params);
+ await goodsApi.addGoods(form);
}
message.success(`${form.goodsId ? '修改' : '添加'}成功`);
onClose();
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/business/erp/goods/goods-list.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/business/erp/goods/goods-list.vue
index 1110f72d..7fcafd7e 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/business/erp/goods/goods-list.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/business/erp/goods/goods-list.vue
@@ -109,7 +109,7 @@
>
- {{ text && text.length > 0 ? text[0].valueName : '' }}
+ {{ text && text.length > 0 ? text.map((e) => e.valueName).join(',') : '' }}
{{ $smartEnumPlugin.getDescByValue('GOODS_STATUS_ENUM', text) }}
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/code-generator-util.js b/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/code-generator-util.js
index 8c1385a7..5c2942ba 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/code-generator-util.js
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/code-generator-util.js
@@ -2,6 +2,7 @@ import { convertUpperCamel } from '/@/utils/str-util';
// -------------------------------- java 类型 --------------------------------
export const JavaTypeMap = new Map();
+JavaTypeMap.set('bit', 'Boolean');
JavaTypeMap.set('int', 'Integer');
JavaTypeMap.set('tinyint', 'Integer');
JavaTypeMap.set('smallint', 'Integer');
@@ -37,6 +38,7 @@ export function getJavaType(dataType) {
// -------------------------------- js 类型 --------------------------------
export const JsTypeMap = new Map();
+JsTypeMap.set('bit', 'Boolean');
JsTypeMap.set('int', 'Number');
JsTypeMap.set('tinyint', 'Number');
JsTypeMap.set('smallint', 'Number');
@@ -56,11 +58,10 @@ JsTypeMap.set('date', 'Date');
JsTypeMap.set('datetime', 'Date');
export const JsTypeList = [
+ 'Boolean', //
'Number', //
'String', //
'Date', //
- 'Boolean', //
- 'String', //
];
export function getJsType(dataType) {
@@ -70,8 +71,9 @@ export function getJsType(dataType) {
// -------------------------------- 前端组件 --------------------------------
export const FrontComponentMap = new Map();
+FrontComponentMap.set('bit', 'BooleanSelect');
FrontComponentMap.set('int', 'InputNumber');
-FrontComponentMap.set('tinyint', 'BooleanSelect');
+FrontComponentMap.set('tinyint', 'InputNumber');
FrontComponentMap.set('smallint', 'InputNumber');
FrontComponentMap.set('integer', 'InputNumber');
FrontComponentMap.set('year', 'Date');
@@ -84,7 +86,7 @@ FrontComponentMap.set('varchar', 'Input');
FrontComponentMap.set('tinytext', 'Input');
FrontComponentMap.set('text', 'Textarea');
FrontComponentMap.set('longtext', 'Textarea');
-FrontComponentMap.set('blob', 'Upload');
+FrontComponentMap.set('blob', 'FileUpload');
FrontComponentMap.set('date', 'Date');
FrontComponentMap.set('datetime', 'DateTime');
@@ -131,6 +133,7 @@ export const JAVA_FILE_LIST = [
'Dao.java', //
'Mapper.xml', //
...JAVA_DOMAIN_FILE_LIST,
+ 'Menu.sql', //
];
// -------------------------------- 枚举enum --------------------------------
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-delete.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-delete.vue
index 6ce3c30d..f0464847 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-delete.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-delete.vue
@@ -68,11 +68,12 @@
if (deletedFlagColumn) {
deleteFlagColumnName.value = deletedFlagColumn.columnName;
}
+ console.log(deletedFlagColumn);
//表单
- let deleteInfo = config.delete;
+ let deleteInfo = config.deleteInfo;
- formData.isSupportDelete = deleteInfo && deleteInfo.isSupportDelete ? deleteInfo.isSupportDelete : true;
+ formData.isSupportDelete = deleteInfo ? deleteInfo.isSupportDelete : true;
formData.isPhysicallyDeleted = deleteInfo && deleteInfo.isPhysicallyDeleted ? deleteInfo.isPhysicallyDeleted : !deletedFlagColumn;
formData.deleteEnum = deleteInfo && deleteInfo.deleteEnum ? deleteInfo.deleteEnum : CODE_DELETE_ENUM.SINGLE_AND_BATCH.value;
}
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-field.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-field.vue
index 34fe3584..efcbbc0b 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-field.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-field.vue
@@ -11,6 +11,10 @@
+
+
-
+
@@ -81,6 +85,11 @@
import { convertUpperCamel, convertLowerCamel } from '/@/utils/str-util';
import _ from 'lodash';
+ const dictRef = ref();
+ function refreshDict() {
+ dictRef.value.queryDict();
+ }
+
//------------------------ 全局数据 ---------------------
const tableInfo = inject('tableInfo');
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-query-field.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-query-field.vue
index 52576bcc..ecbbf79a 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-query-field.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/support/code-generator/components/form/code-generator-table-config-form-query-field.vue
@@ -75,11 +75,9 @@
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/support/level3protect/level3-protect-config-index.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/support/level3protect/level3-protect-config-index.vue
new file mode 100644
index 00000000..a4aeafb9
--- /dev/null
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/support/level3protect/level3-protect-config-index.vue
@@ -0,0 +1,254 @@
+
+
+
+
+ 三级等保:
+
+
+
+ 1.三级等保是中国国家等级保护认证中的最高级别认证,该认证包含了五个等级保护安全技术要求和五个安全管理要求,共涉及测评分类73类,要求非常严格。
+ 2.三级等保是地市级以上国家机关、重要企事业单位需要达成的认证,在金融行业中,可以看作是除了银行机构以外最高级别的信息安全等级保护。
+ 3.具体三级等保要求,请查看“1024创新实验室”写的相关文档 三级等保文档
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保存配置
+ 恢复三级等保默认配置
+ 清除所有配置
+
+
+
+
+
+
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/support/operate-log/operate-log-list.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/support/operate-log/operate-log-list.vue
index 20c711d5..ce22bf75 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/support/operate-log/operate-log-list.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/support/operate-log/operate-log-list.vue
@@ -10,8 +10,14 @@
+
+
+
+
+
+
-
+
@@ -168,6 +174,8 @@
const queryFormState = {
userName: '',
+ requestKeywords: '',
+ keywords: '',
successFlag: undefined,
startDate: undefined,
endDate: undefined,
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/center/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/center/index.vue
index 7eab2d0b..193aa23f 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/center/index.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/center/index.vue
@@ -95,6 +95,8 @@
departmentId: undefined,
// 是否启用
disabledFlag: undefined,
+ // 邮箱
+ email: undefined,
// 备注
remark: '',
};
@@ -126,6 +128,7 @@
form.employeeId = data.employeeId;
form.loginName = data.loginName;
form.actualName = data.actualName;
+ form.email = data.email;
form.gender = data.gender;
form.phone = data.phone;
form.departmentId = data.departmentId;
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/message/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/message/index.vue
index 885f2054..4156bccb 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/message/index.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/message/index.vue
@@ -6,7 +6,7 @@
-
+
@@ -43,7 +43,7 @@
-
+
{{ $smartEnumPlugin.getDescByValue('MESSAGE_TYPE_ENUM', text) }}
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/password/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/password/index.vue
index bbdff5e9..d510685b 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/password/index.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/system/account/components/password/index.vue
@@ -1,40 +1,75 @@
+
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/components/default-home-card.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/components/default-home-card.vue
index 0b74a5a5..6af4f63b 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/components/default-home-card.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/components/default-home-card.vue
@@ -49,7 +49,6 @@
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/components/to-be-done-card/home-to-be-done.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/components/to-be-done-card/home-to-be-done.vue
new file mode 100644
index 00000000..c9920cb7
--- /dev/null
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/components/to-be-done-card/home-to-be-done.vue
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/components/to-be-done-card/to-be-done-modal.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/components/to-be-done-card/to-be-done-modal.vue
new file mode 100644
index 00000000..1718e7ae
--- /dev/null
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/components/to-be-done-card/to-be-done-modal.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
+
diff --git a/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/index.vue
index 78c997c0..162df5bd 100644
--- a/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/index.vue
+++ b/smart-admin-web/javascript-ant-design-vue3/src/views/system/home/index.vue
@@ -1,11 +1,11 @@
@@ -68,21 +68,17 @@
import { computed } from 'vue';
import HomeHeader from './home-header.vue';
import HomeNotice from './home-notice.vue';
- import HomeQuickEntry from './components/quick-entry/home-quick-entry.vue';
import OfficialAccountCard from './components/official-account-card.vue';
- import ToBeDoneCard from './components/to-be-done-card.vue';
+ import ToBeDoneCard from './components/to-be-done-card/home-to-be-done.vue';
import ChangelogCard from './components/changelog-card.vue';
- import Gauge from './components/echarts/gauge.vue';
import Category from './components/echarts/category.vue';
import Pie from './components/echarts/pie.vue';
import Gradient from './components/echarts/gradient.vue';
- import { Modal } from 'ant-design-vue';
// 业绩完成百分比
const saleTargetPercent = computed(() => {
return 75;
});
-
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
验证码
\r\n
请在验证页面输入此验证码
\r\n
${code}
\r\n
验证码将于此电子邮件发出 5 分钟后过期。
\r\n
如果你未曾提出此请求,可以忽略这封电子邮件。
\r\n
\r\n\r\n
\r\n
\r\n\r\n