Browse Source

update

main
wangshaoping 1 year ago
parent
commit
6ad6d18a76
  1. 2
      gradle.properties
  2. 2
      io.sc.platform.core.frontend/package.json
  3. 6
      io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts
  4. 4
      io.sc.platform.core.frontend/template-project/package.json
  5. 2
      io.sc.platform.developer.frontend/package.json
  6. 2
      io.sc.platform.lcdp.frontend/package.json
  7. 2
      io.sc.platform.mvc.frontend/package.json
  8. 2
      io.sc.platform.security.frontend/package.json
  9. 2
      io.sc.platform.system.frontend/package.json
  10. 58
      io.sc.platform.system.frontend/src/i18n/messages.json
  11. 119
      io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json
  12. 63
      io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json
  13. 23
      io.sc.platform.system.frontend/src/views/announcement/AnnouncementManager.vue
  14. 76
      io.sc.platform.system.frontend/src/views/announcement/WEditor.vue
  15. 30
      io.sc.platform.system.frontend/src/views/corporation/Corporation.vue
  16. 29
      io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue
  17. 18
      io.sc.platform.system.frontend/src/views/i18n/I18n.vue
  18. 119
      io.sc.platform.system.frontend/src/views/menu/AddMenuDialog.vue
  19. 103
      io.sc.platform.system.frontend/src/views/menu/AddTopMenuDialog.vue
  20. 128
      io.sc.platform.system.frontend/src/views/menu/EditMenuDialog.vue
  21. 64
      io.sc.platform.system.frontend/src/views/menu/Menu.vue
  22. 105
      io.sc.platform.system.frontend/src/views/menu/SelectRoleDialog.vue
  23. 4
      io.sc.platform.system.frontend/src/views/monitor/AuditLog.vue
  24. 29
      io.sc.platform.system.frontend/src/views/notification/NotificationManager.vue
  25. 52
      io.sc.platform.system.frontend/src/views/org/Org.vue
  26. 48
      io.sc.platform.system.frontend/src/views/parameter/Parameter.vue
  27. 38
      io.sc.platform.system.frontend/src/views/role/Role.vue
  28. 5
      io.sc.platform.system.frontend/src/views/shared/SelectMenuTreeGrid.vue
  29. 4
      io.sc.platform.system.frontend/src/views/shared/SelectOrgTreeGrid.vue
  30. 56
      io.sc.platform.system.frontend/src/views/shared/SelectRoleGrid.vue
  31. 63
      io.sc.platform.system.frontend/src/views/shared/SelectUserGrid.vue
  32. 45
      io.sc.platform.system.frontend/src/views/user/User.vue

2
gradle.properties

@ -38,7 +38,7 @@ application_version=1.0.0
platform_group=io.sc
platform_version=8.1.22
platform_plugin_version=8.1.13
platform_core_frontend_version=8.1.95
platform_core_frontend_version=8.1.100
###########################################################
# dependencies version

2
io.sc.platform.core.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.1.96",
"version": "8.1.100",
"description": "前端核心包,用于快速构建前端的脚手架",
"//main": "库的主文件",
"main": "dist/platform-core.js",

6
io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts

@ -7,6 +7,12 @@ import { EnumFormater } from './EnumFormater';
class Formater {
static #enumFormaterMap = {};
public static none() {
return (value) => {
return value;
};
}
public static enableTag() {
return enableTagFormater;
}

4
io.sc.platform.core.frontend/template-project/package.json

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.1.96",
"version": "8.1.100",
"description": "前端核心包,用于快速构建前端的脚手架",
"private": false,
"keywords": [],
@ -92,7 +92,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
"platform-core": "8.1.96",
"platform-core": "8.1.100",
"quasar": "2.14.2",
"tailwindcss": "3.4.0",
"vue": "3.4.3",

2
io.sc.platform.developer.frontend/package.json

@ -78,7 +78,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
"platform-core": "8.1.95",
"platform-core": "8.1.100",
"quasar": "2.14.2",
"tailwindcss": "3.4.0",
"vue": "3.4.3",

2
io.sc.platform.lcdp.frontend/package.json

@ -91,7 +91,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
"platform-core": "8.1.95",
"platform-core": "8.1.100",
"quasar": "2.14.2",
"tailwindcss": "3.4.0",
"vue": "3.4.3",

2
io.sc.platform.mvc.frontend/package.json

@ -78,7 +78,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
"platform-core": "8.1.95",
"platform-core": "8.1.100",
"quasar": "2.14.2",
"tailwindcss": "3.4.0",
"vue": "3.4.3",

2
io.sc.platform.security.frontend/package.json

@ -99,6 +99,6 @@
"vue-dompurify-html": "5.0.1",
"vue-i18n": "9.8.0",
"vue-router": "4.2.5",
"platform-core": "8.1.95"
"platform-core": "8.1.100"
}
}

2
io.sc.platform.system.frontend/package.json

@ -78,7 +78,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
"platform-core": "8.1.96",
"platform-core": "8.1.100",
"quasar": "2.14.2",
"tailwindcss": "3.4.0",
"vue": "3.4.3",

58
io.sc.platform.system.frontend/src/i18n/messages.json

@ -21,34 +21,32 @@
"menu.system.monitor.resources" : "Resources",
"menu.system.license" : "License",
"system.shared.selectUser.grid.title": "User List",
"system.shared.selectUser.grid.toolbar.add":"Add User",
"system.shared.selectUser.grid.toolbar.remove":"Remove User",
"system.shared.selectUser.grid.toolbar.remove.tip":"Are you sure to remove the users?",
"system.shared.selectUser.grid.toolbar.addAll":"Add All User",
"system.shared.selectUser.grid.toolbar.addAll.tip":"Are you sure to add ALL users?",
"system.shared.selectUser.grid.toolbar.removeAll":"Remove All User",
"system.shared.selectUser.grid.toolbar.removeAll.tip":"Are you sure to remove ALL users?",
"system.shared.selectUser.grid.title": "Included User List",
"system.shared.selectUser.grid.toolbar.selectIn":"Select In",
"system.shared.selectUser.grid.toolbar.selectOut":"Select Out",
"system.shared.selectUser.grid.toolbar.selectOut.tip":"Are you sure to select out the users?",
"system.shared.selectUser.grid.toolbar.selectAllIn":"Select All In",
"system.shared.selectUser.grid.toolbar.selectAllIn.tip":"Are you sure to select in ALL users?",
"system.shared.selectUser.grid.toolbar.selectAllOut":"Select All Out",
"system.shared.selectUser.grid.toolbar.selectAllOut.tip":"Are you sure to select out ALL users?",
"system.shared.selectUser.dialog.title": "Select Users",
"system.shared.selectUser.dialog.grid.title": "Available User List",
"system.shared.selectRole.grid.title": "Role List",
"system.shared.selectRole.grid.toolbar.add":"Add Role",
"system.shared.selectRole.grid.toolbar.remove":"Remove Role",
"system.shared.selectRole.grid.toolbar.remove.tip":"Are you sure to remove the roles?",
"system.shared.selectRole.grid.toolbar.addAll":"Add All Role",
"system.shared.selectRole.grid.toolbar.addAll.tip":"Are you sure to add ALL roles?",
"system.shared.selectRole.grid.toolbar.removeAll":"Remove All Role",
"system.shared.selectRole.grid.toolbar.removeAll.tip":"Are you sure to remove ALL roles?",
"system.shared.selectRole.grid.title": "Included Role List",
"system.shared.selectRole.grid.toolbar.selectIn":"Select In",
"system.shared.selectRole.grid.toolbar.selectOut":"Select Out",
"system.shared.selectRole.grid.toolbar.selectOut.tip":"Are you sure to select out the roles?",
"system.shared.selectRole.grid.toolbar.selectAllIn":"Select All In",
"system.shared.selectRole.grid.toolbar.selectAllIn.tip":"Are you sure to select in ALL roles?",
"system.shared.selectRole.grid.toolbar.selectAllOut":"Select All Out",
"system.shared.selectRole.grid.toolbar.selectAllOut.tip":"Are you sure to select out ALL roles?",
"system.shared.selectRole.dialog.title": "Select Roles",
"system.shared.selectRole.dialog.grid.title": "Available Role List",
"system.shared.selectOrg.grid.title": "Organization Tree",
"system.shared.selectOrg.grid.toolbar.save":"Save",
"system.shared.selectOrg.grid.toolbar.save.tip":"Are you sure to update organizations?",
"system.shared.selectMenu.grid.title": "Menu Tree",
"system.shared.selectMenu.grid.toolbar.save":"Save",
"system.shared.selectMenu.grid.toolbar.save.tip":"Are you sure to update menus?",
"system.shared.importMenuPlugin.dialog.title": "Import Menu Plugins",
@ -68,8 +66,12 @@
"system.role.grid.title":"Role List",
"system.org.grid.title":"Organization Tree",
"system.org.grid.toolbar.addTop":"Add Top Organization",
"system.org.grid.toolbar.addChild":"Add Child Organization",
"system.menu.grid.title":"Menu Tree",
"system.menu.grid.toolbar.addTop":"Add Top Menu",
"system.menu.grid.toolbar.addChild":"Add Child Menu",
"system.menu.grid.entity.titleI18nKey":"Title i18n Key",
"system.menu.grid.entity.javaScript":"JavaScript",
"system.menu.grid.entity.routeName":"Route Name",
@ -80,19 +82,29 @@
"system.announcementManager.grid.title":"Announcement List",
"system.notification.grid.title":"Messages List",
"system.notification.grid.entity.sender":"Sender",
"system.notification.grid.entity.sendDate":"Send Date",
"system.notification.grid.entity.receiver":"Receiver",
"system.notification.grid.entity.receiveDate":"Receive Date",
"system.parameter.grid.title":"Parameters",
"system.dictionary.grid.title":"Dictionaries List",
"system.i18n.grid.title":"I18n Messages List",
"system.i18n.grid.toolbar.removeAll.tip":"Are you sure to remove ALL i18n messages?",
"system.i18n.grid.toolbar.importAll.tip":"Are you sure to import ALL i18n messages?",
"system.monitor.auditlog.grid.title":"Audit Logs List",
"system.monitor.log.tab.view":"Log View",
"system.monitor.log.tab.download":"Log Download",
"system.monitor.log.tab.level":"Log Level",
"system.monitor.log.viewer.logRows":"The Last Row Count of Log File",
"system.monitor.log.viewer.autoRefresh":"Auto Refresh(1 / 2 sec, stop after 300 times auto refreshed)",
"system.monitor.log.viewer.action.refreshNow":"Refresh",
"system.monitor.log.download.grid.title":"Log File List",
"system.monitor.log.level.grid.title":"Log Level List",
"system.monitor.log.level.entity.configuredLevel":"Configured",
"system.monitor.log.level.entity.effectiveLevel":"Effective",
"system.monitor.log.tab.view":"Log View",
"system.monitor.log.tab.download":"Log Download",
"system.monitor.log.tab.level":"Log Level"
"system.monitor.log.level.entity.effectiveLevel":"Effective"
}

119
io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json

@ -21,79 +21,57 @@
"menu.system.monitor.resources" : "系統資源",
"menu.system.license" : "許可證管理",
"system.user.grid.title":"用戶列表",
"system.user.grid.toolbar.setPassword":"設置密碼",
"system.user.grid.toolbar.setAllPassword":"設置所有密碼",
"system.user.grid.toolbar.resetPassword":"重置密碼",
"system.user.grid.toolbar.resetPassword.tip":"您确定要重置用戶密碼嗎?",
"system.user.grid.toolbar.resetAllPassword":"重置所有密碼",
"system.user.grid.toolbar.resetAllPassword.tip":"您确定要重置所有用戶密碼嗎?",
"system.user.selectRole.grid.title":"角色列表",
"system.user.selectRole.grid.toolbar.addRole":"添加角色",
"system.user.selectRole.grid.toolbar.addAllRole":"添加所有角色",
"system.user.selectRole.grid.toolbar.addAllRole.tip":"您确定要给用戶添加所有角色嗎?",
"system.user.selectRole.grid.toolbar.removeRole":"移除角色",
"system.user.selectRole.grid.toolbar.removeRole.tip":"您确定要移除用戶的角色嗎?",
"system.user.selectRole.grid.toolbar.removeAllRole":"移除所有角色",
"system.user.selectRole.grid.toolbar.removeAllRole.tip":"您确定要將用戶的所有角色移除嗎?",
"system.user.selectRole.dialog.title":"可選角色列表",
"system.user.selectOrg.grid.title":"機構樹",
"system.role.grid.title":"角色列表",
"system.role.selectUser.grid.title":"用戶列表",
"system.role.selectUser.grid.toolbar.addUser":"添加用戶",
"system.role.selectUser.grid.toolbar.addAllUser":"添加所有用戶",
"system.role.selectUser.grid.toolbar.addAllUser.tip":"您确定要给角色添加所有用戶嗎?",
"system.role.selectUser.grid.toolbar.removeUser":"移除用戶",
"system.role.selectUser.grid.toolbar.removeUser.tip":"您确定要移除角色的用戶嗎?",
"system.role.selectUser.grid.toolbar.removeAllUser":"移除所有用戶",
"system.role.selectUser.grid.toolbar.removeAllUser.tip":"您确定要移除角色的所有用戶嗎?",
"system.role.selectUser.dialog.title":"可選用戶列表",
"system.role.selectMenu.grid.title":"菜單樹",
"system.org.grid.title":"機構樹",
"system.org.grid.toolbar.addTop":"新增頂級機構",
"system.org.grid.toolbar.addChild":"新增子機構",
"system.shared.selectUser.grid.title": "用戶列表",
"system.shared.selectUser.grid.toolbar.add":"添加用戶",
"system.shared.selectUser.grid.toolbar.remove":"移除用戶",
"system.shared.selectUser.grid.toolbar.remove.tip":"您确定要移除用戶嗎?",
"system.shared.selectUser.grid.toolbar.addAll":"添加所有用戶",
"system.shared.selectUser.grid.toolbar.addAll.tip":"您确定要添加所有用戶嗎?",
"system.shared.selectUser.grid.toolbar.removeAll":"移除所有用戶",
"system.shared.selectUser.grid.toolbar.removeAll.tip":"您确定要移除所有用戶嗎?",
"system.shared.selectUser.grid.title": "已包含用戶列表",
"system.shared.selectUser.grid.toolbar.selectIn":"選入",
"system.shared.selectUser.grid.toolbar.selectOut":"選出",
"system.shared.selectUser.grid.toolbar.selectOut.tip":"您確定要選出用戶嗎?",
"system.shared.selectUser.grid.toolbar.selectAllIn":"選入所有用戶",
"system.shared.selectUser.grid.toolbar.selectAllIn.tip":"您確定要選入全部用戶嗎?",
"system.shared.selectUser.grid.toolbar.selectAllOut":"選出所有用戶",
"system.shared.selectUser.grid.toolbar.selectAllOut.tip":"您確定要選出全部用戶嗎?",
"system.shared.selectUser.dialog.title": "選擇用戶",
"system.shared.selectUser.dialog.grid.title": "可選用戶列表",
"system.shared.selectRole.grid.title": "角色列表",
"system.shared.selectRole.grid.toolbar.add":"添加角色",
"system.shared.selectRole.grid.toolbar.remove":"移除角色",
"system.shared.selectRole.grid.toolbar.remove.tip":"您确定要移除角色嗎?",
"system.shared.selectRole.grid.toolbar.addAll":"添加所有角色",
"system.shared.selectRole.grid.toolbar.addAll.tip":"您确定要添加所有角色嗎?",
"system.shared.selectRole.grid.toolbar.removeAll":"移除所有角色",
"system.shared.selectRole.grid.toolbar.removeAll.tip":"您确定要移除所有角色嗎?",
"system.shared.selectRole.grid.title": "已包含角色列表",
"system.shared.selectRole.grid.toolbar.selectIn":"選入",
"system.shared.selectRole.grid.toolbar.selectOut":"選出",
"system.shared.selectRole.grid.toolbar.selectOut.tip":"您確定要選出角色嗎?",
"system.shared.selectRole.grid.toolbar.selectAllIn":"選入所有角色",
"system.shared.selectRole.grid.toolbar.selectAllIn.tip":"您確定要選入全部角色嗎?",
"system.shared.selectRole.grid.toolbar.selectAllOut":"選出所有角色",
"system.shared.selectRole.grid.toolbar.selectAllOut.tip":"您確定要選出全部角色嗎?",
"system.shared.selectRole.dialog.title": "選擇角色",
"system.shared.selectRole.dialog.grid.title": "可選角色列表",
"system.shared.selectOrg.grid.title": "機構樹",
"system.shared.selectOrg.grid.toolbar.save":"保存",
"system.shared.selectOrg.grid.toolbar.save.tip":"您确定要更新機構吗?",
"system.shared.selectMenu.grid.title": "菜單树",
"system.shared.selectMenu.grid.toolbar.save":"保存",
"system.shared.selectMenu.grid.toolbar.save.tip":"您确定要更新菜單吗?",
"system.shared.importMenuPlugin.dialog.title": "導入菜單插件",
"system.corporation.grid.title":"法人樹",
"system.corporation.grid.toolbar.addTop":"新增頂級法人",
"system.corporation.grid.toolbar.addChild":"新增子法人",
"system.announcement.gridTitle":"公告列表",
"system.monitor.auditlog.gridTitle":"審計日誌列表",
"system.user.grid.title":"用戶列表",
"system.user.grid.toolbar.setPassword":"設置密碼",
"system.user.grid.toolbar.setAllPassword":"設置所有密碼",
"system.user.grid.toolbar.resetPassword":"重置密碼",
"system.user.grid.toolbar.resetPassword.tip":"您确定要重置用戶密碼嗎?",
"system.user.grid.toolbar.resetAllPassword":"重置所有密碼",
"system.user.grid.toolbar.resetAllPassword.tip":"您确定要重置所有用戶密碼嗎?",
"system.role.grid.title":"角色列表",
"system.org.grid.title":"機構樹",
"system.org.grid.toolbar.addTop":"新增頂級機構",
"system.org.grid.toolbar.addChild":"新增子機構",
"system.menu.grid.title":"菜單樹",
"system.menu.grid.toolbar.addTop":"新增頂級菜單",
"system.menu.grid.toolbar.addChild":"新增子菜單",
"system.menu.grid.entity.titleI18nKey":"標題多語言消息鍵",
"system.menu.grid.entity.javaScript":"JavaScript",
"system.menu.grid.entity.routeName":"路由名稱",
@ -101,27 +79,32 @@
"system.menu.grid.entity.url":"URL",
"system.menu.grid.entity.urlOpenType":"URL 打開方式",
"system.announcementManager.grid.title":"公告列表",
"system.announcementManager.gridTitle":"公告列表",
"system.notification.grid.title":"消息列表",
"system.notification.grid.entity.sender":"發送者",
"system.notification.grid.entity.sendDate":"發送日期",
"system.notification.grid.entity.receiver":"接收者",
"system.notification.grid.entity.receiveDate":"接收日期",
"system.parameter.grid.title":"系統參數",
"system.dictionary.grid.title":"數據字典列表",
"system.i18n.grid.title":"多语言消息列表",
"system.i18n.grid.toolbar.removeAll.tip":"您確定要刪除所有多語言消息嗎?",
"system.i18n.grid.toolbar.importAll.tip":"您確定要所導入所有多語言消息嗎?",
"system.monitor.auditlog.grid.title":"審計日誌列表",
"system.monitor.log.tab.view":"日誌查看",
"system.monitor.log.tab.download":"日誌下載",
"system.monitor.log.tab.level":"日誌級別",
"system.monitor.log.viewer.logRows":"顯示日誌文件最後行數",
"system.monitor.log.viewer.autoRefresh":"自動刷新(頻率:1次/2秒,超過 300 次后停止自動刷新)",
"system.monitor.log.viewer.action.refreshNow":"刷新",
"system.monitor.log.download.grid.title":"日誌文件列表",
"system.monitor.log.level.grid.title":"日誌級別列表",
"system.monitor.log.level.entity.configuredLevel":"配置級別",
"system.monitor.log.level.entity.effectiveLevel":"生效級別",
"system.corporation.action.addTop":"新增頂級法人",
"system.corporation.action.addChild":"新增子法人",
"system.monitor.log.tab.view":"日誌查看",
"system.monitor.log.tab.download":"日誌下載",
"system.monitor.log.tab.level":"日誌級別",
"system.monitor.log.level.entity.effectiveLevel":"生效級別"
}

63
io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json

@ -21,34 +21,32 @@
"menu.system.monitor.resources" : "系统资源",
"menu.system.license" : "许可证管理",
"system.shared.selectUser.grid.title": "用户列表",
"system.shared.selectUser.grid.toolbar.add":"添加用户",
"system.shared.selectUser.grid.toolbar.remove":"移除用户",
"system.shared.selectUser.grid.toolbar.remove.tip":"您确定要移除用户吗?",
"system.shared.selectUser.grid.toolbar.addAll":"添加所有用户",
"system.shared.selectUser.grid.toolbar.addAll.tip":"您确定要添加所有用户吗?",
"system.shared.selectUser.grid.toolbar.removeAll":"移除所有用户",
"system.shared.selectUser.grid.toolbar.removeAll.tip":"您确定要移除所有用户吗?",
"system.shared.selectUser.grid.title": "已包含用户列表",
"system.shared.selectUser.grid.toolbar.selectIn":"选入",
"system.shared.selectUser.grid.toolbar.selectOut":"选出",
"system.shared.selectUser.grid.toolbar.selectOut.tip":"您确定要选出用户吗?",
"system.shared.selectUser.grid.toolbar.selectAllIn":"选入所有用户",
"system.shared.selectUser.grid.toolbar.selectAllIn.tip":"您确定要选入全部用户吗?",
"system.shared.selectUser.grid.toolbar.selectAllOut":"选出所有用户",
"system.shared.selectUser.grid.toolbar.selectAllOut.tip":"您确定要选出全部用户吗?",
"system.shared.selectUser.dialog.title": "选择用户",
"system.shared.selectUser.dialog.grid.title": "可选用户列表",
"system.shared.selectRole.grid.title": "角色列表",
"system.shared.selectRole.grid.toolbar.add":"添加角色",
"system.shared.selectRole.grid.toolbar.remove":"移除角色",
"system.shared.selectRole.grid.toolbar.remove.tip":"您确定要移除角色吗?",
"system.shared.selectRole.grid.toolbar.addAll":"添加所有角色",
"system.shared.selectRole.grid.toolbar.addAll.tip":"您确定要添加所有角色吗?",
"system.shared.selectRole.grid.toolbar.removeAll":"移除所有角色",
"system.shared.selectRole.grid.toolbar.removeAll.tip":"您确定要移除所有角色吗?",
"system.shared.selectRole.grid.title": "已包含角色列表",
"system.shared.selectRole.grid.toolbar.selectIn":"选入",
"system.shared.selectRole.grid.toolbar.selectOut":"选出",
"system.shared.selectRole.grid.toolbar.selectOut.tip":"您确定要选出角色吗?",
"system.shared.selectRole.grid.toolbar.selectAllIn":"选入所有角色",
"system.shared.selectRole.grid.toolbar.selectAllIn.tip":"您确定要选入全部角色吗?",
"system.shared.selectRole.grid.toolbar.selectAllOut":"选出所有角色",
"system.shared.selectRole.grid.toolbar.selectAllOut.tip":"您确定要选出全部角色吗?",
"system.shared.selectRole.dialog.title": "选择角色",
"system.shared.selectRole.dialog.grid.title": "可选角色列表",
"system.shared.selectOrg.grid.title": "机构树",
"system.shared.selectOrg.grid.toolbar.save":"保存",
"system.shared.selectOrg.grid.toolbar.save.tip":"您确定要更新机构吗?",
"system.shared.selectMenu.grid.title": "菜单树",
"system.shared.selectMenu.grid.toolbar.save":"保存",
"system.shared.selectMenu.grid.toolbar.save.tip":"您确定要更新菜单吗?",
"system.shared.importMenuPlugin.dialog.title": "导入菜单插件",
@ -68,8 +66,12 @@
"system.role.grid.title":"角色列表",
"system.org.grid.title":"机构树",
"system.org.grid.toolbar.addTop":"新增顶级机构",
"system.org.grid.toolbar.addChild":"新增子机构",
"system.menu.grid.title":"菜单树",
"system.menu.grid.toolbar.addTop":"新增顶级菜单",
"system.menu.grid.toolbar.addChild":"新增子菜单",
"system.menu.grid.entity.titleI18nKey":"标题多语言消息键",
"system.menu.grid.entity.javaScript":"JavaScript",
"system.menu.grid.entity.routeName":"路由名称",
@ -80,26 +82,29 @@
"system.announcementManager.grid.title":"公告列表",
"system.notification.grid.title":"消息列表",
"system.notification.grid.entity.sender":"发送者",
"system.notification.grid.entity.sendDate":"发送日期",
"system.notification.grid.entity.receiver":"接收者",
"system.notification.grid.entity.receiveDate":"接收日期",
"system.parameter.grid.title":"系统参数",
"system.dictionary.grid.title":"数据字典列表",
"system.i18n.grid.title":"多语言消息列表",
"system.i18n.grid.toolbar.removeAll.tip":"您确定要删除所有多语言消息吗?",
"system.i18n.grid.toolbar.importAll.tip":"您确定要导入所有多语言消息吗?",
"system.monitor.auditlog.grid.title":"审计日志列表",
"system.monitor.log.tab.view":"日志查看",
"system.monitor.log.tab.download":"日志下载",
"system.monitor.log.tab.level":"日志级别",
"system.monitor.log.viewer.logRows":"显示日志文件最后行数",
"system.monitor.log.viewer.autoRefresh":"自动刷新(频率:1次/2秒,超过 300 次后停止自动刷新)",
"system.monitor.log.viewer.action.refreshNow":"刷新",
"system.monitor.log.download.grid.title":"日志文件列表",
"system.monitor.log.level.grid.title":"日志级别列表",
"system.monitor.log.level.entity.configuredLevel":"配置级别",
"system.monitor.log.level.entity.effectiveLevel":"生效级别",
"system.announcement.gridTitle":"公告列表",
"system.monitor.auditlog.gridTitle":"审计日志列表",
"system.monitor.log.tab.view":"日志查看",
"system.monitor.log.tab.download":"日志下载",
"system.monitor.log.tab.level":"日志级别",
"system.monitor.log.level.entity.effectiveLevel":"生效级别"
}

23
io.sc.platform.system.frontend/src/views/announcement/AnnouncementManager.vue

@ -10,18 +10,15 @@
sortBy: 'lastModifyDate',
descending: true,
}"
:query-form-fields="[
{ name: 'title', label: $t('title'), type: 'text' },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), type: 'select', options: Options.enum(DataComeFromEnum), queryOperator: 'equals' },
]"
:query-form-cols-num="2"
:query-form-fields="[{ name: 'title', label: $t('title'), type: 'text' }]"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="['query', 'refresh', 'separator', 'add', 'clone', 'edit', 'remove', 'separator', 'view', 'export']"
:toolbar-actions="['query', 'refresh', 'separator', 'add', 'clone', 'edit', 'remove', 'separator', 'view', 'separator', 'export']"
:columns="[
{ width: 300, name: 'title', label: $t('title') },
{ width: '100%', name: 'content', label: $t('content') },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
{ width: '100%', name: 'content', label: $t('content'), sortable: false },
{ width: 120, name: 'lastModifier', label: $t('lastModifier') },
{ width: 120, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
]"
:editor="{
dialog: {
@ -43,11 +40,11 @@
{ name: 'id', label: $t('id') },
{ name: 'title', label: $t('title') },
{ name: 'content', label: $t('content') },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
@ -55,7 +52,5 @@
></w-grid>
</template>
<script setup lang="ts">
import { Environment, EnumTools, Options, Formater } from 'platform-core';
const DataComeFromEnum = await EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom');
import { Environment, Formater } from 'platform-core';
</script>

76
io.sc.platform.system.frontend/src/views/announcement/WEditor.vue

@ -1,76 +0,0 @@
<template>
<q-editor v-model="editor" min-height="5rem" v-bind="attrs" />
</template>
<script setup lang="ts">
import { ref, computed, defineProps, useAttrs } from 'vue';
import { FormValidators } from 'platform-core';
const editor = ref();
const textareaRef = ref();
const attrs = useAttrs();
const inRules = attrs.rules;
const props = defineProps({
hideIf: {
type: Function,
default: () => {
return false;
},
},
required: {
type: Boolean,
default: false,
},
requiredIf: {
type: Function,
default: undefined,
},
readonlyIf: {
type: Function,
default: () => {
return false;
},
},
disableIf: {
type: Function,
default: () => {
return false;
},
},
form: {
type: Object,
default: undefined,
},
});
const rulesComputed = computed(() => {
let rules = inRules || <any>[];
if (!hideIfComputed.value && requiredIfComputed.value) {
rules.push(FormValidators.required());
} else if (hideIfComputed.value) {
rules = [];
}
if (textareaRef?.value) {
textareaRef.value.resetValidation();
}
return rules;
});
const hideIfComputed = computed(() => {
return props.hideIf(props.form);
});
const requiredIfComputed = computed(() => {
if (props.requiredIf) {
return props.requiredIf(props.form) || false;
} else if (props.required) {
return true;
}
return false;
});
const readonlyIfComputed = computed(() => {
return props.readonlyIf(props.form);
});
const disableIfComputed = computed(() => {
return props.disableIf(props.form);
});
</script>

30
io.sc.platform.system.frontend/src/views/corporation/Corporation.vue

@ -1,5 +1,5 @@
<template>
<q-splitter :model-value="65" class="w-full h-full">
<q-splitter :model-value="60" class="w-full h-full">
<template #before>
<div class="pr-1">
<w-grid
@ -30,6 +30,8 @@
'remove',
'separator',
'view',
'separator',
'export',
]"
:columns="[
{ width: '100%', name: 'name', label: $t('name') },
@ -61,12 +63,12 @@
{ name: 'code', label: $t('code') },
{ name: 'name', label: $t('name') },
{ name: 'description', label: $t('description') },
{ name: 'enable', label: $t('enable'), format: (value) => value },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: (value) => value },
{ name: 'enable', label: $t('enable'), format: Formater.none() },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.none() },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: (value) => value },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
],
},
}"
@ -93,10 +95,10 @@
:fetch-other-data-url="Environment.apiContextPath('/api/system/user/queryOtherUsersByCorporation')"
foreign-key="corporationCode"
:foreign-value="currentSelectedCorporationCode"
@add="add"
@remove="remove"
@add-all="addAll"
@remove-all="removeAll"
@select-in="selectIn"
@select-out="selectOut"
@select-all-in="selectAllIn"
@select-all-out="selectAllOut"
>
</SelectUserGrid>
</div>
@ -105,16 +107,14 @@
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { axios, Environment, Formater, EnumTools } from 'platform-core';
import { axios, Environment, Formater } from 'platform-core';
import SelectUserGrid from '../shared/SelectUserGrid.vue';
const DataComeFromEnum = await EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom');
const corporationTreeGridRef = ref();
const userGridRef = ref();
const currentSelectedCorporationCode = ref('');
const add = (ids: string[], gridComponent, dialogComponent) => {
const selectIn = (ids: string[], gridComponent, dialogComponent) => {
axios
.post(Environment.apiContextPath('/api/system/corporation/addUsers'), {
one: corporationTreeGridRef.value.getSelectedRows()[0].code,
@ -126,7 +126,7 @@ const add = (ids: string[], gridComponent, dialogComponent) => {
});
};
const remove = (ids, gridComponent) => {
const selectOut = (ids, gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/corporation/removeUsers'), {
one: corporationTreeGridRef.value.getSelectedRows()[0].code,
@ -137,7 +137,7 @@ const remove = (ids, gridComponent) => {
});
};
const addAll = (gridComponent) => {
const selectAllIn = (gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/corporation/addAllUsers'), {
one: corporationTreeGridRef.value.getSelectedRows()[0].code,
@ -148,7 +148,7 @@ const addAll = (gridComponent) => {
});
};
const removeAll = (gridComponent) => {
const selectAllOut = (gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/corporation/removeAllUsers'), {
one: corporationTreeGridRef.value.getSelectedRows()[0].code,

29
io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue

@ -1,25 +1,21 @@
<template>
<w-grid
ref="dictionaryGridRef"
:title="$t('system.user.grid.title')"
:title="$t('system.dictionary.grid.title')"
:config-button="true"
selection="multiple"
:checkbox-selection="true"
:data-url="Environment.apiContextPath('/api/system/dictionary')"
:query-form-fields="[
{ name: 'code', label: $t('code'), type: 'text' },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), type: 'select', options: Options.enum(DataComeFromEnum), queryOperator: 'equals' },
]"
:query-form-fields="[{ name: 'code', label: $t('code'), type: 'text' }]"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'view', 'export']"
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'view', 'separator', 'export']"
:columns="[
{ width: 200, name: 'code', label: $t('code') },
{ width: 200, name: 'value', label: $t('value') },
{ width: '100%', name: 'value', label: $t('displayValue'), format: (value) => $t(value) },
{ width: '100%', name: 'value', label: $t('displayValue'), sortable: false, format: (value) => $t(value) },
{ width: 100, name: 'order', label: $t('order'), align: 'right' },
{ width: 100, name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ width: 100, name: 'lastModifier', label: $t('lastModifier') },
{ width: 100, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
{ width: 150, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
]"
:editor="{
dialog: {
@ -42,11 +38,17 @@
{ name: 'id', label: $t('id') },
{ name: 'code', label: $t('code') },
{ name: 'value', label: $t('value') },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate') },
{ name: 'lastModifier', label: $t('lastModifier'), format: Formater.none() },
{
name: 'lastModifyDate',
label: $t('lastModifyDate'),
format: (value) => {
return value;
},
},
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
@ -56,10 +58,9 @@
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { Environment, axios, EnumTools, Formater, Options } from 'platform-core';
import { Environment, axios, Formater } from 'platform-core';
const dictionaryGridRef = ref();
const DataComeFromEnum = await EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom');
const rowDragDropAfter = () => {
const rows = dictionaryGridRef.value.getRowsFun();

18
io.sc.platform.system.frontend/src/views/i18n/I18n.vue

@ -1,7 +1,7 @@
<template>
<w-grid
ref="i18nGridRef"
:title="$t('system.user.grid.title')"
:title="$t('system.i18n.grid.title')"
:config-button="true"
selection="multiple"
:checkbox-selection="true"
@ -10,7 +10,6 @@
{ name: 'code', label: $t('code'), type: 'text' },
{ name: 'message', label: $t('i18nMessage'), type: 'text' },
{ name: 'lang', label: $t('language'), type: 'select', options: Options.enum(LanguageEnum), queryOperator: 'equals' },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), type: 'select', options: Options.enum(DataComeFromEnum), queryOperator: 'equals' },
]"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="[
@ -50,15 +49,15 @@
},
'separator',
'view',
'separator',
'export',
]"
:columns="[
{ name: 'code', label: $t('code') },
{ name: 'lang', label: $t('language'), format: Formater.enum(LanguageEnum) },
{ name: 'message', label: $t('i18nMessage') },
{ width: 100, name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ width: 200, name: 'code', label: $t('code') },
{ width: 100, name: 'lang', label: $t('language'), format: Formater.enum(LanguageEnum) },
{ width: '100%', name: 'message', label: $t('i18nMessage') },
{ width: 100, name: 'lastModifier', label: $t('lastModifier') },
{ width: 100, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
{ width: 150, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
]"
:editor="{
dialog: {
@ -80,13 +79,13 @@
fields: [
{ name: 'id', label: $t('id') },
{ name: 'code', label: $t('code') },
{ name: 'lang', label: $t('language') },
{ name: 'lang', label: $t('language'), format: Formater.none() },
{ name: 'message', label: $t('i18nMessage') },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
@ -99,6 +98,5 @@ import { ref } from 'vue';
import { axios, Environment, EnumTools, Formater, Options, DialogManager, NotifyManager } from 'platform-core';
const i18nGridRef = ref();
const DataComeFromEnum = await EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom');
const LanguageEnum = await EnumTools.fetch('io.sc.platform.core.enums.Language');
</script>

119
io.sc.platform.system.frontend/src/views/menu/AddMenuDialog.vue

@ -1,119 +0,0 @@
<template>
<div>
<q-dialog ref="dialogRef" allow-focus-outside v-bind="attrs">
<q-card
:style="{
width: attrs.maximized ? '100vw' : width,
'max-width': '100vw',
height: attrs.maximized ? '100vh' : height,
'max-height': '100vh',
}"
>
<q-card-section :style="headerStyle">
<div class="flex justify-between">
<div class="text-h6">{{ title }}</div>
<div class="flex justify-end q-gutter-md">
<q-btn :label="$t('confirm')" dense color="primary" style="width: 100px" @click="addMenu" />
<q-btn v-close-popup dense flat icon="close" :title="$t('close')"> </q-btn>
</div>
</div>
</q-card-section>
<q-card-section class="q-pt-none" :style="bodyStyle">
<div class="row">
<div class="col-12">
<q-input v-model="name" type="input" label="名称" outlined autocomplete="false" class="p-1" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-input v-model="icon" type="input" label="图标" outlined autocomplete="false" class="p-1" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-checkbox v-model="enable" label="是否可用" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-input v-model="routeName" type="input" label="前端路由名称" outlined autocomplete="false" class="p-1" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-input v-model="routeQuery" type="input" label="前端路由参数" outlined autocomplete="false" class="p-1" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-input v-model="order" type="input" label="排序" outlined autocomplete="false" class="p-1" />
</div>
</div>
</q-card-section>
</q-card>
</q-dialog>
</div>
</template>
<script setup lang="ts">
import { useAttrs, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import { axios, Environment } from 'platform-core';
const attrs = useAttrs();
const props = defineProps({
headerStyle: { type: String, default: 'width:100%;padding: 16px 8px 4px 16px' },
bodyStyle: { type: String, default: 'padding: 0px 8px 0px 8px;height:calc(100%)' },
title: { type: String, default: '' },
width: { type: String, default: '70%' },
height: { type: String, default: '70%' },
});
const { t } = useI18n();
const dialogRef = ref();
const parentIdRef = ref();
const callbackRef = ref();
const name = ref();
const icon = ref();
const enable = ref(true);
const routeName = ref();
const routeQuery = ref();
const order = ref(0);
const addMenu = () => {
const data = {
type: 'ROUTE',
enable: enable.value,
order: order.value,
parentId: parentIdRef.value,
name: name.value,
icon: icon.value,
routeName: routeName.value,
routeQuery: routeQuery.value,
};
axios.post(Environment.apiContextPath('/api/system/menu/addMenu'), data).then(() => {
dialogRef.value.hide();
if (callbackRef.value) {
callbackRef.value();
}
});
};
const show = (parentId, callback) => {
parentIdRef.value = parentId;
callbackRef.value = callback;
dialogRef.value.show();
};
const hide = () => {
dialogRef.value.hide();
};
defineExpose({
show,
hide,
});
</script>

103
io.sc.platform.system.frontend/src/views/menu/AddTopMenuDialog.vue

@ -1,103 +0,0 @@
<template>
<div>
<q-dialog ref="dialogRef" allow-focus-outside v-bind="attrs">
<q-card
:style="{
width: attrs.maximized ? '100vw' : width,
'max-width': '100vw',
height: attrs.maximized ? '100vh' : height,
'max-height': '100vh',
}"
>
<q-card-section :style="headerStyle">
<div class="flex justify-between">
<div class="text-h6">{{ title }}</div>
<div class="flex justify-end q-gutter-md">
<q-btn :label="$t('confirm')" dense color="primary" style="width: 100px" @click="addMenu" />
<q-btn v-close-popup dense flat icon="close" :title="$t('close')"> </q-btn>
</div>
</div>
</q-card-section>
<q-card-section class="q-pt-none" :style="bodyStyle">
<div class="row">
<div class="col-12">
<q-input v-model="name" type="input" label="名称" outlined autocomplete="false" class="p-1" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-input v-model="icon" type="input" label="图标" outlined autocomplete="false" class="p-1" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-checkbox v-model="enable" label="是否可用" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-input v-model="order" type="input" label="排序" outlined autocomplete="false" class="p-1" />
</div>
</div>
</q-card-section>
</q-card>
</q-dialog>
</div>
</template>
<script setup lang="ts">
import { useAttrs, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import { axios, Environment } from 'platform-core';
const attrs = useAttrs();
const props = defineProps({
headerStyle: { type: String, default: 'width:100%;padding: 16px 8px 4px 16px' },
bodyStyle: { type: String, default: 'padding: 0px 8px 0px 8px;height:calc(100%)' },
title: { type: String, default: '' },
width: { type: String, default: '70%' },
height: { type: String, default: '70%' },
});
const { t } = useI18n();
const dialogRef = ref();
const callbackRef = ref();
const name = ref();
const icon = ref();
const enable = ref(true);
const order = ref(0);
const addMenu = () => {
const data = {
type: 'ROUTE',
enable: enable.value,
order: order.value,
parentId: null,
name: name.value,
icon: icon.value,
};
axios.post(Environment.apiContextPath('/api/system/menu/addMenu'), data).then(() => {
dialogRef.value.hide();
if (callbackRef.value) {
callbackRef.value();
}
});
};
const show = (callback) => {
callbackRef.value = callback;
dialogRef.value.show();
};
const hide = () => {
dialogRef.value.hide();
};
defineExpose({
show,
hide,
});
</script>

128
io.sc.platform.system.frontend/src/views/menu/EditMenuDialog.vue

@ -1,128 +0,0 @@
<template>
<div>
<q-dialog ref="dialogRef" allow-focus-outside v-bind="attrs">
<q-card
:style="{
width: attrs.maximized ? '100vw' : width,
'max-width': '100vw',
height: attrs.maximized ? '100vh' : height,
'max-height': '100vh',
}"
>
<q-card-section :style="headerStyle">
<div class="flex justify-between">
<div class="text-h6">{{ title }}</div>
<div class="flex justify-end q-gutter-md">
<q-btn :label="$t('confirm')" dense color="primary" style="width: 100px" @click="updateMenu" />
<q-btn v-close-popup dense flat icon="close" :title="$t('close')"> </q-btn>
</div>
</div>
</q-card-section>
<q-card-section class="q-pt-none" :style="bodyStyle">
<div class="row">
<div class="col-12">
<q-input v-model="name" type="input" label="名称" outlined autocomplete="false" class="p-1" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-input v-model="icon" type="input" label="图标" outlined autocomplete="false" class="p-1" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-checkbox v-model="enable" label="是否可用" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-input v-model="routeName" type="input" label="前端路由名称" outlined autocomplete="false" class="p-1" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-input v-model="routeQuery" type="input" label="前端路由参数" outlined autocomplete="false" class="p-1" />
</div>
</div>
<div class="row">
<div class="col-12">
<q-input v-model="order" type="input" label="排序" outlined autocomplete="false" class="p-1" />
</div>
</div>
</q-card-section>
</q-card>
</q-dialog>
</div>
</template>
<script setup lang="ts">
import { useAttrs, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import { axios, Environment, Tools } from 'platform-core';
const attrs = useAttrs();
const props = defineProps({
headerStyle: { type: String, default: 'width:100%;padding: 16px 8px 4px 16px' },
bodyStyle: { type: String, default: 'padding: 0px 8px 0px 8px;height:calc(100%)' },
title: { type: String, default: '' },
width: { type: String, default: '70%' },
height: { type: String, default: '70%' },
});
const { t } = useI18n();
const dialogRef = ref();
const parentIdRef = ref();
const callbackRef = ref();
const id = ref('');
const name = ref('');
const icon = ref('');
const enable = ref(true);
const routeName = ref('');
const routeQuery = ref('');
const order = ref(0);
const updateMenu = () => {
const data = {
id: id.value,
type: 'ROUTE',
enable: enable.value,
order: order.value,
parentId: parentIdRef.value,
name: name.value,
icon: icon.value,
routeName: routeName.value,
routeQuery: routeQuery.value,
};
axios.post(Environment.apiContextPath('/api/system/menu/updateMenu'), data).then(() => {
dialogRef.value.hide();
if (callbackRef.value) {
callbackRef.value();
}
});
};
const show = (node, callback) => {
callbackRef.value = callback;
id.value = node.id;
name.value = node.name;
icon.value = node.icon;
enable.value = node.enable;
routeName.value = node.routeName;
routeQuery.value = Tools.object2Json(node.routeQuery || {});
order.value = node.order;
dialogRef.value.show();
};
const hide = () => {
dialogRef.value.hide();
};
defineExpose({
show,
hide,
});
</script>

64
io.sc.platform.system.frontend/src/views/menu/Menu.vue

@ -26,7 +26,16 @@
:toolbar-actions="[
'refresh',
'separator',
['addTop', 'addChild'],
[
{
extend: 'addTop',
label: $t('system.menu.grid.toolbar.addTop'),
},
{
extend: 'addChild',
label: $t('system.menu.grid.toolbar.addChild'),
},
],
'edit',
'remove',
'separator',
@ -40,6 +49,7 @@
},
'separator',
'view',
'separator',
'export',
]"
:columns="[
@ -58,12 +68,11 @@
}
},
},
{ name: 'type', label: $t('type'), sortable: false, format: Formater.menuType() },
{ name: 'order', label: $t('order'), align: 'right', sortable: false },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), sortable: false, format: Formater.enum(DataComeFromEnum) },
{ name: 'lastModifier', label: $t('lastModifier'), sortable: false },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), sortable: false, format: Formater.dateOnly() },
{ width: 100, name: 'enable', label: $t('status'), sortable: false, format: Formater.enableTag() },
{ width: 80, name: 'type', label: $t('type'), sortable: false, format: Formater.menuType() },
{ width: 80, name: 'order', label: $t('order'), align: 'right', sortable: false },
{ width: 100, name: 'lastModifier', label: $t('lastModifier'), sortable: false },
{ width: 100, name: 'lastModifyDate', label: $t('lastModifyDate'), sortable: false, format: Formater.dateOnly() },
{ width: 80, name: 'enable', label: $t('status'), sortable: false, format: Formater.enableTag() },
]"
:editor="{
dialog: {
@ -128,11 +137,11 @@
columnNum: 1,
fields: [
{ name: 'id', label: $t('id') },
{ name: 'type', label: $t('type') },
{ name: 'type', label: $t('type'), format: Formater.none() },
{ name: 'name', label: $t('name') },
{ name: 'titleI18nKey', label: $t('titleI18nKey') },
{ name: 'icon', label: $t('icon') },
{ name: 'enable', label: $t('enable') },
{ name: 'enable', label: $t('enable'), format: Formater.none() },
{ name: 'order', label: $t('order') },
{ name: 'javaScript', label: $t('javaScript') },
{ name: 'url', label: $t('url') },
@ -144,7 +153,7 @@
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
@ -156,6 +165,13 @@
orgTreeGridRef?.refresh();
}
"
@before-request-data="
() => {
currentSelectedMenuId = '';
roleGridRef?.refresh();
orgTreeGridRef?.refresh();
}
"
></w-grid>
</div>
</template>
@ -174,10 +190,10 @@
:fetch-other-data-url="Environment.apiContextPath('/api/system/role/queryOtherRolesByMenu')"
foreign-key="menuId"
:foreign-value="currentSelectedMenuId"
@add="add"
@remove="remove"
@add-all="addAll"
@remove-all="removeAll"
@select-in="selectIn"
@select-out="selectOut"
@select-all-in="selectAllIn"
@select-all-out="selectAllOut"
></SelectRoleGrid>
</q-tab-panel>
@ -194,9 +210,6 @@
</div>
</template>
<ImportMenuPluginDialog ref="importMenuPluginDialogRef"></ImportMenuPluginDialog>
<AddTopMenuDialog ref="addTopMenuDialog" title="菜单" :maximized="false" width="50%" height="340px"></AddTopMenuDialog>
<AddMenuDialog ref="addMenuDialog" title="菜单" :maximized="false" width="50%" height="440px"></AddMenuDialog>
<EditMenuDialog ref="editMenuDialog" title="菜单" :maximized="false" width="50%" height="440px"></EditMenuDialog>
</q-splitter>
</template>
<script setup lang="ts">
@ -205,14 +218,9 @@ import { Environment, axios, EnumTools, Formater, Options } from 'platform-core'
import SelectRoleGrid from '../shared/SelectRoleGrid.vue';
import SelectOrgTreeGrid from '../shared/SelectOrgTreeGrid.vue';
import ImportMenuPluginDialog from './ImportMenuPluginDialog.vue';
import AddTopMenuDialog from './AddTopMenuDialog.vue';
import AddMenuDialog from './AddMenuDialog.vue';
import EditMenuDialog from './EditMenuDialog.vue';
const DataComeFromEnum = await EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom');
const MenuTypeEnum = await EnumTools.fetch('io.sc.platform.system.enums.MenuType');
const UrlOpenTypeEnum = await EnumTools.fetch('io.sc.platform.system.enums.UrlOpenType');
console.log(Options.enum(UrlOpenTypeEnum, false));
const menuTreeGridRef = ref();
const roleGridRef = ref();
@ -222,11 +230,7 @@ const importMenuPluginDialogRef = ref();
const selectedTabRef = ref('role');
const currentSelectedMenuId = ref('');
const addTopMenuDialog = ref();
const addMenuDialog = ref();
const editMenuDialog = ref();
const add = (ids: string[], gridComponent, dialogComponent) => {
const selectIn = (ids: string[], gridComponent, dialogComponent) => {
axios
.post(Environment.apiContextPath('/api/system/menu/addRoles'), {
one: menuTreeGridRef.value.getSelectedRows()[0].id,
@ -238,7 +242,7 @@ const add = (ids: string[], gridComponent, dialogComponent) => {
});
};
const remove = (ids, gridComponent) => {
const selectOut = (ids, gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/menu/removeRoles'), {
one: menuTreeGridRef.value.getSelectedRows()[0].id,
@ -249,7 +253,7 @@ const remove = (ids, gridComponent) => {
});
};
const addAll = (gridComponent) => {
const selectAllIn = (gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/menu/addAllRoles'), {
one: menuTreeGridRef.value.getSelectedRows()[0].id,
@ -260,7 +264,7 @@ const addAll = (gridComponent) => {
});
};
const removeAll = (gridComponent) => {
const selectAllOut = (gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/menu/removeAllRoles'), {
one: menuTreeGridRef.value.getSelectedRows()[0].id,

105
io.sc.platform.system.frontend/src/views/menu/SelectRoleDialog.vue

@ -1,105 +0,0 @@
<template>
<w-dialog
ref="dialogRef"
:title="$t('system.selectRoleByUserDialog.title')"
width="800px"
height="500px"
:can-maximize="false"
:buttons="[
{
label: $t('confirm'),
click: () => {
const roleIds = Tools.extractProperties(gridRef.getSelectedRows(), 'id');
axios
.post(Environment.apiContextPath('/api/system/user/addRoles'), {
one: parentId,
many: roleIds,
})
.then((response) => {
parentComponent?.refresh();
close();
});
},
},
]"
>
<div class="px-2">
<w-grid
ref="gridRef"
:title="$t('system.role.grid.title')"
selection="multiple"
:full-screen-button="false"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="['query', 'refresh']"
:query-form-fields="[
{ name: 'code', label: $t('code'), type: 'text' },
{ name: 'name', label: $t('name'), type: 'text' },
{
name: 'enable',
label: $t('enable'),
type: 'select',
options: Options.yesNo(),
queryOperator: 'equals',
},
{
name: 'dataComeFrom',
label: $t('dataComeFrom'),
type: 'select',
options: Options.enum(DataComeFromEnum),
queryOperator: 'equals',
},
]"
:auto-fetch-data="false"
:fetch-data-url="Environment.apiContextPath('/api/system/role/queryOtherRolesByUser?userId=' + parentId)"
:columns="[
{ name: 'code', label: $t('code') },
{ name: 'name', label: $t('name') },
{
name: 'status',
label: t('status'),
format: Formater.enableTag(),
},
{ name: 'lastModifier', label: t('lastModifier') },
{ name: 'lastModifyDate', label: t('lastModifyDate') },
]"
></w-grid>
</div>
</w-dialog>
</template>
<script setup lang="ts">
import { ref, nextTick } from 'vue';
import { useI18n } from 'vue-i18n';
import { axios, Environment, Tools, EnumTools, Options, Formater } from 'platform-core';
const { t } = useI18n();
const dialogRef = ref();
const gridRef = ref();
let DataComeFromEnum = ref();
EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom').then((data) => {
DataComeFromEnum.value = data;
});
let parentId, parentComponent;
const open = (param: object) => {
parentId = param.parentId;
parentComponent = param.parentComponent;
dialogRef.value.show();
nextTick(() => {
gridRef.value.refresh();
});
};
const close = () => {
dialogRef.value.hide();
};
defineExpose({
open,
close,
});
</script>

4
io.sc.platform.system.frontend/src/views/monitor/AuditLog.vue

@ -1,7 +1,7 @@
<template>
<w-grid
ref="auditLogGridRef"
:title="$t('system.user.grid.title')"
:title="$t('system.monitor.auditlog.grid.title')"
:config-button="true"
selection="multiple"
:checkbox-selection="false"
@ -13,7 +13,7 @@
{ name: 'startDate', label: $t('startDate'), type: 'text' },
]"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="['query', 'refresh', 'separator', 'view', 'export']"
:toolbar-actions="['query', 'refresh', 'separator', 'view', 'separator', 'export']"
:pagination="{
sortBy: 'startDate',
descending: true,

29
io.sc.platform.system.frontend/src/views/notification/NotificationManager.vue

@ -7,21 +7,24 @@
:checkbox-selection="true"
:data-url="Environment.apiContextPath('/api/system/notification')"
:pagination="{
sortBy: 'lastModifyDate',
sortBy: 'sendDate',
descending: true,
}"
:query-form-cols-num="4"
:query-form-fields="[
{ name: 'sender', label: $t('system.notification.grid.entity.sender'), type: 'text' },
{ name: 'receiver', label: $t('system.notification.grid.entity.receiver'), type: 'text' },
{ name: 'title', label: $t('title'), type: 'text' },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), type: 'select', options: Options.enum(DataComeFromEnum), queryOperator: 'equals' },
]"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="['query', 'refresh', 'separator', 'add', 'clone', 'edit', 'remove', 'separator', 'view', 'export']"
:toolbar-actions="['query', 'refresh', 'separator', 'add', 'clone', 'edit', 'remove', 'separator', 'view', 'separator', 'export']"
:columns="[
{ width: 100, name: 'sender', label: $t('system.notification.grid.entity.sender') },
{ width: 150, name: 'sendDate', label: $t('system.notification.grid.entity.sendDate') },
{ width: 300, name: 'title', label: $t('title') },
{ width: '100%', name: 'content', label: $t('content') },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
{ width: '100%', name: 'content', label: $t('content'), sortable: false },
{ width: 100, name: 'receiver', label: $t('system.notification.grid.entity.receiver') },
{ width: 150, name: 'receiveDate', label: $t('system.notification.grid.entity.receiveDate') },
]"
:editor="{
dialog: {
@ -42,9 +45,13 @@
columnNum: 1,
fields: [
{ name: 'id', label: $t('id') },
{ name: 'sender', label: $t('system.notification.grid.entity.sender') },
{ name: 'sendDate', label: $t('system.notification.grid.entity.sendDate') },
{ name: 'title', label: $t('title') },
{ name: 'content', label: $t('content') },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ name: 'content', label: $t('content'), sortable: false },
{ name: 'receiver', label: $t('system.notification.grid.entity.receiver') },
{ name: 'receiveDate', label: $t('system.notification.grid.entity.receiveDate') },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
@ -56,7 +63,5 @@
></w-grid>
</template>
<script setup lang="ts">
import { Environment, EnumTools, Options, Formater } from 'platform-core';
const DataComeFromEnum = await EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom');
import { Environment } from 'platform-core';
</script>

52
io.sc.platform.system.frontend/src/views/org/Org.vue

@ -17,11 +17,26 @@
:data-url="Environment.apiContextPath('/api/system/org')"
:pageable="false"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="['refresh', 'separator', ['addTop', 'addChild'], 'edit', 'remove', 'separator', 'view', 'export']"
:toolbar-actions="[
'refresh',
'separator',
[
{ extend: 'addTop', label: $t('system.org.grid.toolbar.addTop') },
{ extend: 'addChild', label: $t('system.org.grid.toolbar.addChild') },
],
'edit',
'remove',
'separator',
'view',
'separator',
'export',
]"
:columns="[
{ width: '100%', name: 'name', label: $t('name') },
{ width: 200, name: 'code', label: $t('code') },
{ width: 100, name: 'enable', label: $t('status'), sortable: false, format: Formater.enableTag() },
{ width: 120, name: 'code', label: $t('code') },
{ width: 100, name: 'lastModifier', label: $t('lastModifier') },
{ width: 110, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
{ width: 80, name: 'enable', label: $t('status'), sortable: false, format: Formater.enableTag() },
]"
:editor="{
dialog: {
@ -46,12 +61,12 @@
{ name: 'code', label: $t('code') },
{ name: 'name', label: $t('name') },
{ name: 'description', label: $t('description') },
{ name: 'enable', label: $t('enable'), format: Formater.yesNo() },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ name: 'enable', label: $t('enable'), format: Formater.none() },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
@ -63,6 +78,13 @@
menuTreeGridRef?.refresh();
}
"
@before-request-data="
() => {
currentSelectedOrgId = '';
userGridRef?.refresh();
menuTreeGridRef?.refresh();
}
"
></w-grid>
</div>
</template>
@ -81,10 +103,10 @@
:fetch-other-data-url="Environment.apiContextPath('/api/system/user/queryOtherUsersByOrg')"
foreign-key="orgId"
:foreign-value="currentSelectedOrgId"
@add="add"
@remove="remove"
@add-all="addAll"
@remove-all="removeAll"
@select-in="selectIn"
@select-out="selectOut"
@select-all-in="selectAllIn"
@select-all-out="selectAllOut"
>
</SelectUserGrid>
</q-tab-panel>
@ -108,8 +130,6 @@ import { Environment, axios, EnumTools, Formater } from 'platform-core';
import SelectUserGrid from '../shared/SelectUserGrid.vue';
import SelectMenuTreeGrid from '../shared/SelectMenuTreeGrid.vue';
const DataComeFromEnum = await EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom');
const orgTreeGridRef = ref();
const userGridRef = ref();
const menuTreeGridRef = ref();
@ -117,7 +137,7 @@ const menuTreeGridRef = ref();
const selectedTabRef = ref('user');
const currentSelectedOrgId = ref('');
const add = (ids: string[], gridComponent, dialogComponent) => {
const selectIn = (ids: string[], gridComponent, dialogComponent) => {
axios
.post(Environment.apiContextPath('/api/system/org/addUsers'), {
one: orgTreeGridRef.value.getSelectedRows()[0].id,
@ -129,7 +149,7 @@ const add = (ids: string[], gridComponent, dialogComponent) => {
});
};
const remove = (ids, gridComponent) => {
const selectOut = (ids, gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/org/removeUsers'), {
one: orgTreeGridRef.value.getSelectedRows()[0].id,
@ -140,7 +160,7 @@ const remove = (ids, gridComponent) => {
});
};
const addAll = (gridComponent) => {
const selectAllIn = (gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/org/addAllUsers'), {
one: orgTreeGridRef.value.getSelectedRows()[0].id,
@ -151,7 +171,7 @@ const addAll = (gridComponent) => {
});
};
const removeAll = (gridComponent) => {
const selectAllOut = (gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/org/removeAllUsers'), {
one: orgTreeGridRef.value.getSelectedRows()[0].id,

48
io.sc.platform.system.frontend/src/views/parameter/Parameter.vue

@ -1,7 +1,7 @@
<template>
<w-grid
ref="parameterTreeGridRef"
:title="$t('system.menu.grid.title')"
:title="$t('system.parameter.grid.title')"
:config-button="true"
selection="multiple"
:checkbox-selection="false"
@ -29,22 +29,32 @@
},
},
'separator',
{
extend: 'view',
enableIf: (selecteds) => {
if (selecteds && selecteds.length > 0) {
return !Tools.isUndefinedOrNull(selecteds[0].value);
}
return false;
},
},
'separator',
'export',
]"
:columns="[
{
width: 300,
name: 'code',
label: $t('code'),
name: 'name',
label: $t('name'),
sortable: false,
format: (value) => {
return $t(value);
format: (value, row) => {
return $t(row.code);
},
},
{ width: '100%', name: 'value', label: $t('value'), sortable: false },
{ width: 100, name: 'dataComeFrom', label: $t('dataComeFrom'), sortable: false, format: Formater.enum(DataComeFromEnum) },
{ width: 100, name: 'lastModifier', label: $t('lastModifier'), sortable: false },
{ width: 100, name: 'lastModifyDate', label: $t('lastModifyDate'), sortable: false, format: Formater.dateOnly() },
{ width: 300, name: 'code', label: $t('code') },
{ width: '100%', name: 'value', label: $t('value') },
{ width: 100, name: 'lastModifier', label: $t('lastModifier') },
{ width: 150, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
]"
:editor="{
dialog: {
@ -64,23 +74,13 @@
columnNum: 1,
fields: [
{ name: 'id', label: $t('id') },
{ name: 'type', label: $t('type') },
{ name: 'name', label: $t('name') },
{ name: 'titleI18nKey', label: $t('titleI18nKey') },
{ name: 'icon', label: $t('icon') },
{ name: 'enable', label: $t('enable') },
{ name: 'order', label: $t('order') },
{ name: 'javaScript', label: $t('javaScript') },
{ name: 'url', label: $t('url') },
{ name: 'urlOpenType', label: $t('urlOpenType') },
{ name: 'routeName', label: $t('routeName') },
{ name: 'routeQuery', label: $t('routeQuery') },
{ name: 'code', label: $t('code') },
{ name: 'value', label: $t('value') },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
@ -89,7 +89,5 @@
></w-grid>
</template>
<script setup lang="ts">
import { Environment, Tools, EnumTools, Formater, Options } from 'platform-core';
const DataComeFromEnum = await EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom');
import { Environment, Tools, Formater } from 'platform-core';
</script>

38
io.sc.platform.system.frontend/src/views/role/Role.vue

@ -13,19 +13,18 @@
sortBy: 'name',
descending: false,
}"
:query-form-cols-num="3"
:query-form-fields="[
{ name: 'code', label: $t('code'), type: 'text' },
{ name: 'name', label: $t('name'), type: 'text' },
{ name: 'enable', label: $t('isEnable'), type: 'select', options: Options.yesNo() },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), type: 'select', options: Options.enum(DataComeFromEnum) },
]"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="['query', 'refresh', 'separator', 'add', 'clone', 'edit', 'remove', 'separator', 'view', 'export']"
:toolbar-actions="['query', 'refresh', 'separator', 'add', 'clone', 'edit', 'remove', 'separator', 'view', 'separator', 'export']"
:columns="[
{ name: 'code', label: $t('code') },
{ name: 'name', label: $t('name') },
{ width: 150, name: 'code', label: $t('code') },
{ width: '100%', name: 'name', label: $t('name') },
{ width: 80, name: 'enable', label: $t('status'), format: Formater.enableTag() },
{ width: 100, name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ width: 120, name: 'lastModifier', label: $t('lastModifier') },
{ width: 120, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
]"
@ -52,12 +51,12 @@
{ name: 'code', label: $t('code') },
{ name: 'name', label: $t('name') },
{ name: 'description', label: $t('description') },
{ name: 'enable', label: $t('enable'), format: Formater.yesNo() },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ name: 'enable', label: $t('enable'), format: Formater.none() },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
@ -65,8 +64,15 @@
@row-click="
(evt, row, index) => {
currentSelectedRoleId = row.id;
menuTreeGridRef?.refresh();
userGridRef?.refresh();
}
"
@before-request-data="
() => {
currentSelectedRoleId = '';
menuTreeGridRef?.refresh();
userGridRef?.refresh();
}
"
>
@ -98,10 +104,10 @@
:fetch-other-data-url="Environment.apiContextPath('/api/system/user/queryOtherUsersByRole')"
foreign-key="roleId"
:foreign-value="currentSelectedRoleId"
@add="add"
@remove="remove"
@add-all="addAll"
@remove-all="removeAll"
@select-in="selectIn"
@select-out="selectOut"
@select-all-in="selectAllIn"
@select-all-out="selectAllOut"
>
</SelectUserGrid>
</q-tab-panel>
@ -125,7 +131,7 @@ const menuTreeGridRef = ref();
const selectedTabRef = ref('menu');
const currentSelectedRoleId = ref('');
const add = (ids: string[], gridComponent, dialogComponent) => {
const selectIn = (ids: string[], gridComponent, dialogComponent) => {
axios
.post(Environment.apiContextPath('/api/system/role/addUsers'), {
one: roleGridRef.value.getSelectedRows()[0].id,
@ -137,7 +143,7 @@ const add = (ids: string[], gridComponent, dialogComponent) => {
});
};
const remove = (ids, gridComponent) => {
const selectOut = (ids, gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/role/removeUsers'), {
one: roleGridRef.value.getSelectedRows()[0].id,
@ -148,7 +154,7 @@ const remove = (ids, gridComponent) => {
});
};
const addAll = (gridComponent) => {
const selectAllIn = (gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/role/addAllUsers'), {
one: roleGridRef.value.getSelectedRows()[0].id,
@ -159,7 +165,7 @@ const addAll = (gridComponent) => {
});
};
const removeAll = (gridComponent) => {
const selectAllOut = (gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/role/removeAllUsers'), {
one: roleGridRef.value.getSelectedRows()[0].id,

5
io.sc.platform.system.frontend/src/views/shared/SelectMenuTreeGrid.vue

@ -27,7 +27,10 @@
'separator',
{
name: 'save',
label: $t('system.shared.selectMenu.grid.toolbar.save'),
label: $t('save'),
enableIf: () => {
return foreignValue && treeGridRef?.getRows()?.length > 0;
},
click: (selecteds) => {
DialogManager.confirm($t('system.shared.selectMenu.grid.toolbar.save.tip'), () => {
const ids = Tools.extractProperties(selecteds, 'id');

4
io.sc.platform.system.frontend/src/views/shared/SelectOrgTreeGrid.vue

@ -21,7 +21,7 @@
'separator',
{
name: 'save',
label: $t('system.shared.selectOrg.grid.toolbar.save'),
label: $t('save'),
click: () => {
DialogManager.confirm($t('system.shared.selectOrg.grid.toolbar.save.tip'), () => {
const ids = Tools.extractProperties(treeGridRef?.getTickedRows(), 'id');
@ -35,7 +35,7 @@
:columns="[
{ width: '100%', name: 'name', label: $t('name') },
{ width: 100, name: 'code', label: $t('code') },
{ width: 60, name: 'enable', label: $t('status'), format: Formater.enableTag(), sortable: false },
{ width: 80, name: 'enable', label: $t('status'), format: Formater.enableTag(), sortable: false },
]"
:viewer="{
panel: {

56
io.sc.platform.system.frontend/src/views/shared/SelectRoleGrid.vue

@ -12,8 +12,8 @@
'refresh',
'separator',
{
name: 'addRoles',
label: $t('system.shared.selectRole.grid.toolbar.add'),
name: 'selectIn',
label: $t('system.shared.selectRole.grid.toolbar.selectIn'),
enableIf: () => {
return foreignValue ? true : false;
},
@ -22,40 +22,40 @@
},
},
{
name: 'removeRoles',
label: $t('system.shared.selectRole.grid.toolbar.remove'),
name: 'selectOut',
label: $t('system.shared.selectRole.grid.toolbar.selectOut'),
enableIf: () => {
return foreignValue && gridRef?.getSelectedRows()?.length > 0;
},
click: (selecteds) => {
const ids = Tools.extractProperties(selecteds, 'id');
DialogManager.confirm($t('system.shared.selectRole.grid.toolbar.remove.tip'), () => {
emit('remove', ids, gridRef);
DialogManager.confirm($t('system.shared.selectRole.grid.toolbar.selectOut.tip'), () => {
emit('selectOut', ids, gridRef);
});
},
},
'separator',
{
name: 'addAllRoles',
label: $t('system.shared.selectRole.grid.toolbar.addAll'),
name: 'selectAllIn',
label: $t('system.shared.selectRole.grid.toolbar.selectAllIn'),
enableIf: () => {
return foreignValue ? true : false;
},
click: () => {
DialogManager.confirm($t('system.shared.selectRole.grid.toolbar.addAll.tip'), () => {
emit('addAll', gridRef);
DialogManager.confirm($t('system.shared.selectRole.grid.toolbar.selectAllIn.tip'), () => {
emit('selectAllIn', gridRef);
});
},
},
{
name: 'removeAllRoles',
label: $t('system.shared.selectRole.grid.toolbar.removeAll'),
name: 'selectAllOut',
label: $t('system.shared.selectRole.grid.toolbar.selectAllOut'),
enableIf: () => {
return foreignValue && gridRef?.getRows()?.length > 0;
},
click: () => {
DialogManager.confirm($t('system.shared.selectRole.grid.toolbar.removeAll.tip'), () => {
emit('removeAll', gridRef);
DialogManager.confirm($t('system.shared.selectRole.grid.toolbar.selectAllOut.tip'), () => {
emit('selectAllOut', gridRef);
});
},
},
@ -63,10 +63,10 @@
'view',
]"
:columns="[
{ width: 100, name: 'code', label: $t('code') },
{ width: 100, name: 'name', label: $t('name') },
{ width: 150, name: 'code', label: $t('code') },
{ width: '100%', name: 'name', label: $t('name') },
{
width: 60,
width: 80,
name: 'enable',
label: $t('status'),
format: Formater.enableTag(),
@ -80,8 +80,8 @@
{ name: 'code', label: $t('code') },
{ name: 'name', label: $t('name') },
{ name: 'description', label: $t('description') },
{ name: 'enable', label: $t('enable'), format: Formater.yesNo() },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ name: 'enable', label: $t('enable') },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
@ -99,15 +99,15 @@
:foreign-value="foreignValue"
@after-selected="
(ids: string[]) => {
emit('add', ids, gridRef, dialogRef);
emit('selectIn', ids, gridRef, dialogRef);
}
"
></SelectRoleDialog>
</template>
<script setup lang="ts">
import { ref, nextTick } from 'vue';
import { useI18n } from 'vue-i18n';
import { Environment, axios, EnumTools, NotifyManager, DialogManager, Formater, Options, Tools, OperatorTypeEnum } from 'platform-core';
import { ref } from 'vue';
import { EnumTools, DialogManager, Formater, Tools } from 'platform-core';
import SelectRoleDialog from './SelectRoleDialog.vue';
const props = defineProps({
@ -118,10 +118,10 @@ const props = defineProps({
});
const emit = defineEmits<{
(e: 'add', ids: string[], gridComponent: any, dialogComponent: any): void;
(e: 'remove', ids: string[], gridComponent: any): void;
(e: 'addAll', gridComponent: any): void;
(e: 'removeAll', gridComponent: any): void;
(e: 'selectIn', ids: string[], gridComponent: any, dialogComponent: any): void;
(e: 'selectOut', ids: string[], gridComponent: any): void;
(e: 'selectAllIn', gridComponent: any): void;
(e: 'selectAllOut', gridComponent: any): void;
}>();
const gridRef = ref();
@ -134,6 +134,4 @@ const refresh = () => {
defineExpose({
refresh,
});
const DataComeFromEnum = await EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom');
</script>

63
io.sc.platform.system.frontend/src/views/shared/SelectUserGrid.vue

@ -12,8 +12,8 @@
'refresh',
'separator',
{
name: 'addUsers',
label: $t('system.shared.selectUser.grid.toolbar.add'),
name: 'selectIn',
label: $t('system.shared.selectUser.grid.toolbar.selectIn'),
enableIf: () => {
return foreignValue ? true : false;
},
@ -22,40 +22,40 @@
},
},
{
name: 'removeUsers',
label: $t('system.shared.selectUser.grid.toolbar.remove'),
name: 'selectOut',
label: $t('system.shared.selectUser.grid.toolbar.selectOut'),
enableIf: () => {
return foreignValue && gridRef?.getSelectedRows()?.length > 0;
},
click: (selecteds) => {
const ids = Tools.extractProperties(selecteds, 'id');
DialogManager.confirm($t('system.shared.selectUser.grid.toolbar.remove.tip'), () => {
emit('remove', ids, gridRef);
DialogManager.confirm($t('system.shared.selectUser.grid.toolbar.selectOut.tip'), () => {
emit('selectOut', ids, gridRef);
});
},
},
'separator',
{
name: 'addAllUsers',
label: $t('system.shared.selectUser.grid.toolbar.addAll'),
name: 'selectAllIn',
label: $t('system.shared.selectUser.grid.toolbar.selectAllIn'),
enableIf: () => {
return foreignValue ? true : false;
},
click: () => {
DialogManager.confirm($t('system.shared.selectUser.grid.toolbar.addAll.tip'), () => {
emit('addAll', gridRef);
DialogManager.confirm($t('system.shared.selectUser.grid.toolbar.selectAllIn.tip'), () => {
emit('selectAllIn', gridRef);
});
},
},
{
name: 'removeAllUsers',
label: $t('system.shared.selectUser.grid.toolbar.removeAll'),
name: 'selectAllOut',
label: $t('system.shared.selectUser.grid.toolbar.selectAllOut'),
enableIf: () => {
return foreignValue && gridRef?.getRows()?.length > 0;
},
click: () => {
DialogManager.confirm($t('system.shared.selectUser.grid.toolbar.removeAll.tip'), () => {
emit('removeAll', gridRef);
DialogManager.confirm($t('system.shared.selectUser.grid.toolbar.selectAllOut.tip'), () => {
emit('selectAllOut', gridRef);
});
},
},
@ -63,9 +63,10 @@
'view',
]"
:columns="[
{ width: 100, name: 'loginName', label: $t('loginName') },
{ width: 100, name: 'userName', label: $t('userName') },
{ width: 150, name: 'loginName', label: $t('loginName') },
{ width: '100%', name: 'userName', label: $t('userName') },
{
width: 150,
name: 'enable',
label: $t('status'),
format: (value, row) => {
@ -84,16 +85,22 @@
{ name: 'loginName', label: $t('loginName') },
{ name: 'userName', label: $t('userName') },
{ name: 'description', label: $t('description') },
{ name: 'enable', label: $t('enable'), format: Formater.yesNo() },
{ name: 'accountExpired', label: $t('accountExpired'), format: Formater.yesNo() },
{ name: 'accountLocked', label: $t('accountLocked'), format: Formater.yesNo() },
{ name: 'credentialsExpired', label: $t('credentialsExpired'), format: Formater.yesNo() },
{
name: 'enable',
label: $t('enable'),
format: (value) => {
return value;
},
},
{ name: 'accountExpired', label: $t('accountExpired') },
{ name: 'accountLocked', label: $t('accountLocked') },
{ name: 'credentialsExpired', label: $t('credentialsExpired') },
{ name: 'email', label: $t('email') },
{ name: 'phone', label: $t('phone') },
{ name: 'mobile', label: $t('mobile') },
{ name: 'weixin', label: $t('weixin') },
{ name: 'qq', label: $t('qq') },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
@ -111,14 +118,14 @@
:foreign-value="foreignValue"
@after-selected="
(ids: string[]) => {
emit('add', ids, gridRef, dialogRef);
emit('selectIn', ids, gridRef, dialogRef);
}
"
></SelectUserDialog>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { EnumTools, DialogManager, Formater, Tools } from 'platform-core';
import { DialogManager, Tools } from 'platform-core';
import SelectUserDialog from './SelectUserDialog.vue';
import UserStatusTag from './UserStatusTag.vue';
@ -130,10 +137,10 @@ const props = defineProps({
});
const emit = defineEmits<{
(e: 'add', ids: string[], gridComponent: any, dialogComponent: any): void;
(e: 'remove', ids: string[], gridComponent: any): void;
(e: 'addAll', gridComponent: any): void;
(e: 'removeAll', gridComponent: any): void;
(e: 'selectIn', ids: string[], gridComponent: any, dialogComponent: any): void;
(e: 'selectOut', ids: string[], gridComponent: any): void;
(e: 'selectAllIn', gridComponent: any): void;
(e: 'selectAllOut', gridComponent: any): void;
}>();
const gridRef = ref();
@ -146,6 +153,4 @@ const refresh = () => {
defineExpose({
refresh,
});
const DataComeFromEnum = await EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom');
</script>

45
io.sc.platform.system.frontend/src/views/user/User.vue

@ -14,11 +14,11 @@
sortBy: 'loginName',
descending: false,
}"
:query-form-cols-num="3"
:query-form-fields="[
{ name: 'loginName', label: $t('loginName'), type: 'text' },
{ name: 'userName', label: $t('userName'), type: 'text' },
{ name: 'enable', label: $t('isEnable'), type: 'select', options: Options.yesNo(), queryOperator: 'equals' },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), type: 'select', options: Options.enum(DataComeFromEnum), queryOperator: 'equals' },
]"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="[
@ -87,12 +87,14 @@
},
'separator',
'view',
'separator',
'export',
]"
:columns="[
{ name: 'loginName', label: $t('loginName') },
{ name: 'userName', label: $t('userName') },
{ width: 150, name: 'loginName', label: $t('loginName') },
{ width: '100%', name: 'userName', label: $t('userName') },
{
width: 150,
name: 'enable',
label: $t('status'),
format: (value, row) => {
@ -102,9 +104,8 @@
};
},
},
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
{ width: 100, name: 'lastModifier', label: $t('lastModifier') },
{ width: 110, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },
]"
:editor="{
dialog: {
@ -150,20 +151,20 @@
{ name: 'loginName', label: $t('loginName') },
{ name: 'userName', label: $t('userName') },
{ name: 'description', label: $t('description') },
{ name: 'enable', label: $t('enable'), format: Formater.yesNo() },
{ name: 'accountExpired', label: $t('accountExpired'), format: Formater.yesNo() },
{ name: 'accountLocked', label: $t('accountLocked'), format: Formater.yesNo() },
{ name: 'credentialsExpired', label: $t('credentialsExpired'), format: Formater.yesNo() },
{ name: 'enable', label: $t('enable'), format: Formater.none() },
{ name: 'accountExpired', label: $t('accountExpired') },
{ name: 'accountLocked', label: $t('accountLocked') },
{ name: 'credentialsExpired', label: $t('credentialsExpired') },
{ name: 'email', label: $t('email') },
{ name: 'phone', label: $t('phone') },
{ name: 'mobile', label: $t('mobile') },
{ name: 'weixin', label: $t('weixin') },
{ name: 'qq', label: $t('qq') },
{ name: 'dataComeFrom', label: $t('dataComeFrom'), format: Formater.enum(DataComeFromEnum) },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
@ -200,10 +201,10 @@
:fetch-other-data-url="Environment.apiContextPath('/api/system/role/queryOtherRolesByUser')"
foreign-key="userId"
:foreign-value="currentSelectedUserId"
@add="add"
@remove="remove"
@add-all="addAll"
@remove-all="removeAll"
@select-in="selectIn"
@select-out="selectOut"
@select-all-in="selectAllIn"
@select-all-out="selectAllOut"
></SelectRoleGrid>
</q-tab-panel>
<q-tab-panel name="org" class="px-0">
@ -224,14 +225,12 @@
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { Environment, axios, EnumTools, NotifyManager, DialogManager, Formater, Options, Tools } from 'platform-core';
import { Environment, axios, NotifyManager, DialogManager, Formater, Options, Tools } from 'platform-core';
import SelectRoleGrid from '../shared/SelectRoleGrid.vue';
import SelectOrgTreeGrid from '../shared/SelectOrgTreeGrid.vue';
import UserStatusTag from '../shared/UserStatusTag.vue';
import SetPasswordDialog from './SetPasswordDialog.vue';
const DataComeFromEnum = await EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom');
const userGridRef = ref();
const roleGridRef = ref();
const orgTreeGridRef = ref();
@ -240,7 +239,7 @@ const selectedTabRef = ref('role');
const setPasswordDialogRef = ref();
const currentSelectedUserId = ref('');
const add = (ids: string[], gridComponent, dialogComponent) => {
const selectIn = (ids: string[], gridComponent, dialogComponent) => {
axios
.post(Environment.apiContextPath('/api/system/user/addRoles'), {
one: userGridRef.value.getSelectedRows()[0].id,
@ -252,7 +251,7 @@ const add = (ids: string[], gridComponent, dialogComponent) => {
});
};
const remove = (ids, gridComponent) => {
const selectOut = (ids, gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/user/removeRoles'), {
one: userGridRef.value.getSelectedRows()[0].id,
@ -263,7 +262,7 @@ const remove = (ids, gridComponent) => {
});
};
const addAll = (gridComponent) => {
const selectAllIn = (gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/user/addAllRoles'), {
one: userGridRef.value.getSelectedRows()[0].id,
@ -274,7 +273,7 @@ const addAll = (gridComponent) => {
});
};
const removeAll = (gridComponent) => {
const selectAllOut = (gridComponent) => {
axios
.post(Environment.apiContextPath('/api/system/user/removeAllRoles'), {
one: userGridRef.value.getSelectedRows()[0].id,

Loading…
Cancel
Save