sasp-admin 0.2.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/index.js +227 -0
  2. package/package.json +19 -0
  3. package/router.js +83 -0
  4. package/src/assets/font/iconfont.css +1346 -0
  5. package/src/assets/font/iconfont.eot +0 -0
  6. package/src/assets/font/iconfont.js +1 -0
  7. package/src/assets/font/iconfont.svg +827 -0
  8. package/src/assets/font/iconfont.ttf +0 -0
  9. package/src/assets/font/iconfont.woff +0 -0
  10. package/src/assets/images/loading-bar.gif +0 -0
  11. package/src/assets/js/adminInstall.js +36 -0
  12. package/src/assets/js/api/apiAdmin.js +613 -0
  13. package/src/assets/js/global/dataGlobal.js +260 -0
  14. package/src/assets/js/global/logGlobal.js +22 -0
  15. package/src/assets/js/global/paramGlobal.js +67 -0
  16. package/src/assets/js/global/resGlobal.js +91 -0
  17. package/src/assets/js/global/userGlobal.js +283 -0
  18. package/src/components/complexViewRendering.vue +601 -0
  19. package/src/components/ifmLink.vue +71 -0
  20. package/src/components/public/data/plDataCascader.vue +85 -0
  21. package/src/components/public/data/plDataRadio.vue +73 -0
  22. package/src/components/public/data/plDataRadioGroup.vue +70 -0
  23. package/src/components/public/data/plDataSelect.vue +856 -0
  24. package/src/components/public/data/plDatePicker.vue +159 -0
  25. package/src/components/public/org/bg.png +0 -0
  26. package/src/components/public/org/sysOrgPosUserSelect.vue +1237 -0
  27. package/src/components/public/org/sysOrgPosUserSelectDark.vue +1402 -0
  28. package/src/components/public/org/sysOrgPosUserSelectNew.vue +1527 -0
  29. package/src/components/public/upload/images/compress.png +0 -0
  30. package/src/components/public/upload/images/emipty.png +0 -0
  31. package/src/components/public/upload/images/excel.png +0 -0
  32. package/src/components/public/upload/images/file.png +0 -0
  33. package/src/components/public/upload/images/pdf.png +0 -0
  34. package/src/components/public/upload/images/powerpoint.png +0 -0
  35. package/src/components/public/upload/images/project.png +0 -0
  36. package/src/components/public/upload/images/sound.png +0 -0
  37. package/src/components/public/upload/images/txt.png +0 -0
  38. package/src/components/public/upload/images/video.png +0 -0
  39. package/src/components/public/upload/images/visio.png +0 -0
  40. package/src/components/public/upload/images/word.png +0 -0
  41. package/src/components/public/upload/plImage.vue +287 -0
  42. package/src/components/public/upload/plImgUpload.vue +137 -0
  43. package/src/components/public/upload/plUpload.vue +1124 -0
  44. package/src/components/public/upload/uploadImg.js +8 -0
  45. package/src/main.js +0 -0
  46. package/src/views/VueMenuView.vue +143 -0
  47. package/src/views/cloudMenuView.vue +125 -0
  48. package/src/views/complex/config/complex.vue +501 -0
  49. package/src/views/complex/config/complexSetting.vue +1250 -0
  50. package/src/views/complex/rendering/complexShow.vue +16 -0
  51. package/src/views/data/dataManage.vue +560 -0
  52. package/src/views/data/sysData.vue +292 -0
  53. package/src/views/event/eventManager/vueEventDiy.vue +1184 -0
  54. package/src/views/event/eventManager/vueEventMain.vue +108 -0
  55. package/src/views/event/eventManager/vueEventSys.vue +296 -0
  56. package/src/views/event/js/apiEvent.js +22 -0
  57. package/src/views/fileLog/fileDownloadLog.vue +437 -0
  58. package/src/views/initData/initData.vue +4316 -0
  59. package/src/views/log/dblog/logdbDevelop.vue +306 -0
  60. package/src/views/log/dblog/logdbEnt.vue +331 -0
  61. package/src/views/log/dblog/logdbGov.vue +395 -0
  62. package/src/views/log/error/logError.vue +553 -0
  63. package/src/views/log/loginlog/logManageDevOrSup.vue +357 -0
  64. package/src/views/log/loginlog/logManageEnt.vue +343 -0
  65. package/src/views/log/loginlog/logManageGov.vue +328 -0
  66. package/src/views/log/sms/logSms.vue +308 -0
  67. package/src/views/menu/component/menuManageComponent.vue +2402 -0
  68. package/src/views/menu/component/menuModule.vue +449 -0
  69. package/src/views/menu/menuLocal.vue +223 -0
  70. package/src/views/menu/menuManage.vue +1135 -0
  71. package/src/views/menu/tenantMenuManage.vue +1132 -0
  72. package/src/views/menuRouter/cview/cviewShow.vue +18 -0
  73. package/src/views/menuRouter/cviewMenuRouter.vue +183 -0
  74. package/src/views/menuRouter/menuView.vue +132 -0
  75. package/src/views/menuRouter/urlMenuRouter.vue +160 -0
  76. package/src/views/org/entOrgTree.vue +1050 -0
  77. package/src/views/org/ownerMenu/ownerMenuTree.vue +269 -0
  78. package/src/views/org/safeValidate/safeValidate.vue +469 -0
  79. package/src/views/org/sysEntOrgUserDetail.vue +3390 -0
  80. package/src/views/org/sysOrgDimension.vue +832 -0
  81. package/src/views/org/sysOrgPosUserDetail.vue +1648 -0
  82. package/src/views/org/sysOrgPosUserTree.vue +1101 -0
  83. package/src/views/org/sysOrgTree.vue +864 -0
  84. package/src/views/param/sysParam.vue +987 -0
  85. package/src/views/preview/pdfViewer.vue +82 -0
  86. package/src/views/resources/js/resourcesCommon.js +137 -0
  87. package/src/views/resources/resRouter/resView.vue +161 -0
  88. package/src/views/resources/resourcesTabs.vue +82 -0
  89. package/src/views/resources/tabs/comp/pageResPreview.vue +309 -0
  90. package/src/views/resources/tabs/comp/pageResRegister.vue +1120 -0
  91. package/src/views/resources/tabs/dataResources.vue +843 -0
  92. package/src/views/resources/tabs/pageResources.vue +970 -0
  93. package/src/views/role/allowMenu.vue +148 -0
  94. package/src/views/role/authRole/authRole.vue +427 -0
  95. package/src/views/role/authRole/component/allocateSetting.vue +1056 -0
  96. package/src/views/role/authRole/component/authSetting.vue +1196 -0
  97. package/src/views/role/commonRole/commonRole.vue +677 -0
  98. package/src/views/role/commonRole/compoment/allocateRoleMenuSetting.vue +335 -0
  99. package/src/views/role/commonRole/compoment/authLinkMenuTree.vue +55 -0
  100. package/src/views/role/commonRole/compoment/authSettingNew.vue +190 -0
  101. package/src/views/role/commonRole/compoment/commonSetting.vue +1576 -0
  102. package/src/views/role/commonRole/compoment/commonSettingAdjust.vue +584 -0
  103. package/src/views/role/commonRole/compoment/commonSettingNew.vue +572 -0
  104. package/src/views/role/commonRole/compoment/roleMenuPower.vue +226 -0
  105. package/src/views/role/commonRole/compoment/roleMenuPowerSetting.vue +69 -0
  106. package/src/views/role/commonRole/compoment/roleMenuSetting.vue +365 -0
  107. package/src/views/role/commonRole/compoment/roleSourceSetting.vue +229 -0
  108. package/src/views/role/commonRole/tenantCommonRole.vue +768 -0
  109. package/src/views/role/role.vue +135 -0
  110. package/src/views/role/roleMenuOption.vue +898 -0
  111. package/src/views/role/roleSynchroRemind.vue +399 -0
  112. package/src/views/role/sysRole.vue +1525 -0
  113. package/src/views/role/viewMenuOptDetail.vue +182 -0
  114. package/src/views/sms/sendSms.vue +164 -0
  115. package/src/views/station/orgStation.vue +561 -0
  116. package/src/views/tenant/appContentManager.vue +938 -0
  117. package/src/views/tenant/appManager.vue +642 -0
  118. package/src/views/tenant/tenantRoleManager.vue +670 -0
  119. package/src/views/tenant/tenantUserManager.vue +615 -0
  120. package/src/views/threeinone/compoment/safeCascadeSelect.vue +327 -0
  121. package/src/views/threeinone/init/safeInitRegion.vue +203 -0
  122. package/src/views/threeinone/safeManager.vue +927 -0
  123. package/src/views/threeinone/safeMenuManage.vue +565 -0
  124. package/src/views/threeinone/safeOrgSpv.vue +364 -0
  125. package/src/views/threeinone/safeSpv/safeSpvLeftTree.vue +109 -0
  126. package/src/views/threeinone/safeSpv/safeSpvMain.vue +335 -0
  127. package/src/views/threeinone/safeSpvEconView.vue +569 -0
  128. package/src/views/threeinone/safeValidateRegion.vue +328 -0
  129. package/src/views/urlResource/urlResource.vue +856 -0
  130. package/src/views/user/empowerUser/empowerEntUserManage.vue +415 -0
  131. package/src/views/user/empowerUser/empowerOrgTree.vue +167 -0
  132. package/src/views/user/empowerUser/empowerUserList.vue +633 -0
  133. package/src/views/user/empowerUser/empowerUserListMenuDeatil.vue +656 -0
  134. package/src/views/user/empowerUser/empowerUserListViewMenuTree.vue +257 -0
  135. package/src/views/user/empowerUser/empowerUserManage.vue +99 -0
  136. package/src/views/user/stationUserManage.vue +934 -0
  137. package/src/views/user/userManage.vue +737 -0
  138. package/src/views/user/userMangement.vue +938 -0
  139. package/src/views/user/viewMenu/viewMenu.vue +113 -0
  140. package/src/views/versionupdatetool/versionUpdateTool.vue +225 -0
  141. package/src/views/versionupdatetool/versioninfomation/verisonInfomationManagement.vue +68 -0
@@ -0,0 +1,898 @@
1
+ <template>
2
+ <el-container style="height: 100%" class="role-menu-contain">
3
+ <el-aside style="width: 300px">
4
+ <el-header style="padding-right:0;height: 40px">
5
+ <el-input size="medium"
6
+ prefix-icon="el-icon-search"
7
+ placeholder="输入关键字进行过滤"
8
+ clearable
9
+ v-model="filterText">
10
+ </el-input>
11
+
12
+ </el-header>
13
+ <el-aside class="asideTree">
14
+ <common-tree
15
+ v-if="showTree"
16
+ ref="roleMenuTreeRef"
17
+ :request-url="api.menu.listNoPageByRole"
18
+ :request-param="requestParam"
19
+ :refresh-proper="time + ''"
20
+ parent-id="parentCode"
21
+ :deal-tree-data="dealTreeData"
22
+ :default-props="defaultProps"
23
+ :filterText="filterText"
24
+ :initCheck="initCheck"
25
+ :initCallBack="initCallBack"
26
+ :nodeClick="nodeClick"
27
+ :renderContentFunc="renderContent"
28
+ :expand-onclick-node=false
29
+ :default-shift-key-select="true"
30
+ :default-ctrl-key-select="true"
31
+ >
32
+
33
+ </common-tree>
34
+ </el-aside>
35
+ </el-aside>
36
+ <el-main class="roleMenuOptMain">
37
+ <el-card class="role-menu-opt-card" shadow="never">
38
+ <div slot="header" class="clearfix" style="background-color: #E8F1FF;">
39
+ <span><i class="el-icon-document"></i>操作权限配置(该角色在某菜单项上能有哪些操作)</span>
40
+ </div>
41
+
42
+ <el-card class="role-menu-opt-card-card" shadow="never">
43
+ <div slot="header" class="clearfix">
44
+ <el-checkbox label="全选" @change="optChange" :disabled="!(allSettingObj[currentMenuId] || {})['enableOperation']"
45
+ v-model="allOptData" style="margin-right: 0"></el-checkbox>
46
+ |
47
+ <label>
48
+ <span style="color: #606266;font-size: 14px;cursor: pointer">是否启用操作权限</span>
49
+ <el-switch v-model="(allSettingObj[currentMenuId] || {})['enableOperation']" @change="forceUpdate"
50
+ :disabled="(allSettingObj[currentMenuId] || {})['openOptDataDisable']" style="margin-left: 5px;position: relative;top: -1px;">
51
+ </el-switch>
52
+ </label>
53
+ </div>
54
+ <div v-if="((allSettingObj[currentMenuId] || {})['optArr'] || []).length == 0
55
+ && ((allSettingObj[currentMenuId] || {})['complexFieldArr'] || []).length == 0" style="text-align: center">无需进行操作权限设置</div>
56
+ <div v-else style="text-align: left">
57
+ <div v-for="(item,index) in ((allSettingObj[currentMenuId] || {})['optArr'] || [])"
58
+ :key="index" class="opt-button-class">
59
+ <el-checkbox @change="operateChange('optArr')" v-model="item.checked" :label="item.name"
60
+ :disabled="!(allSettingObj[currentMenuId] || {})['enableOperation']">
61
+
62
+ </el-checkbox>
63
+ </div>
64
+ <fieldset v-for="(item,index) in ((allSettingObj[currentMenuId] || {})['complexFieldArr'] || [])" :key="index" style="padding: 10px">
65
+ <legend>{{item.legendName}}( <el-checkbox label="是否启用该标签" :disabled="!(allSettingObj[currentMenuId] || {})['enableOperation']"
66
+ v-model="item.legendChecked" @change="operateChange('complexFieldArr')"></el-checkbox> )</legend>
67
+ <div v-for="(fieldItem,fieldIndex) in (item['buttonArr'] || [])" :key="fieldIndex" class="opt-button-class">
68
+ <el-checkbox :disabled="!(allSettingObj[currentMenuId] || {})['enableOperation']" :label="fieldItem['buttonName']"
69
+ v-model="fieldItem['checked']" @change="operateChange('complexFieldArr')">
70
+ </el-checkbox>
71
+ </div>
72
+ <div v-show="(item['buttonArr'] || []).length == 0" style="text-align: center">无需进行操作权限设置</div>
73
+ </fieldset>
74
+ </div>
75
+ </el-card>
76
+
77
+ </el-card>
78
+ <el-card class="role-menu-opt-card" shadow="never" style="margin-top: 5px">
79
+ <div slot="header" class="clearfix" style="background-color: #E8F1FF;">
80
+ <span><i class="el-icon-tickets"></i>数据权限配置(该角色在某菜单项上能看哪些人的数据,操作方式同上!注:此项主要针对自定义表的数据权限!)</span>
81
+ </div>
82
+
83
+ <el-card class="role-menu-opt-card-card" shadow="never">
84
+ <div slot="header" class="clearfix">
85
+ <el-checkbox label="全选" @change="powerChange" v-model="allDataPower"
86
+ :disabled="!(allSettingObj[currentMenuId] || {})['enableData']" style="margin-right: 0"></el-checkbox>
87
+ |
88
+ <label>
89
+ <span style="color: #606266;font-size: 14px;cursor: pointer">是否启用数据权限</span>
90
+ <el-switch v-model="(allSettingObj[currentMenuId] || {})['enableData']" @change="forceUpdate"
91
+ :disabled="openDataPowerDisable" style="margin-left: 5px;position: relative;top: -1px;">
92
+ </el-switch>
93
+ </label>
94
+ </div>
95
+ <div v-if = "!(allSettingObj[currentMenuId] || {})['hasDataOpt']" style="text-align: center">无需进行数据权限设置</div>
96
+ <div v-else style="text-align: left" class="data-power-class">
97
+ <div v-show = "(allSettingObj[currentMenuId] || {})['hasDataOpt']">
98
+ <el-button type="primary" icon="el-icon-circle-plus" :disabled="!(allSettingObj[currentMenuId] || {})['enableData']"
99
+ @click="addSelectUser" size="small">添加</el-button>
100
+ <el-button type="danger" icon="el-icon-remove" :disabled="!(allSettingObj[currentMenuId] || {})['enableData']"
101
+ @click="removePosUser" size="small">删除</el-button>
102
+ <br>
103
+ <el-card style="width: 200px;position: relative;float: left;margin: 10px 10px 10px 0;padding: 0 5px"
104
+ shadow="hover" v-for="(item,index) in (allSettingObj[currentMenuId] || {})['chooseDataArr']" :key="index">
105
+ <el-checkbox :label="item.showName" v-model="item.checked" @change="changeDataPower" style="position: relative;top:-8px"
106
+ :disabled="!(allSettingObj[currentMenuId] || {})['enableData']"></el-checkbox>
107
+ <el-tooltip class="item" effect="dark" content="数据权限包含其下级组织" placement="right-start">>
108
+ <el-checkbox type="radio" v-model="item.link" @change="changeDataPower"
109
+ :disabled="!item.checked" style="float: right"></el-checkbox>
110
+ </el-tooltip>
111
+ </el-card>
112
+ </div>
113
+ </div>
114
+ </el-card>
115
+
116
+ </el-card>
117
+ </el-main>
118
+ <div style="text-align: center;position: absolute;right: 0;left: 0;margin: auto;bottom: 10px">
119
+ <el-button type="primary" @click="saveMenuOpt()" icon="el-icon-success" size="small">确 定</el-button>
120
+ <el-button @click="$emit('closeOptDialog')" icon="el-icon-error" size="small">取 消</el-button>
121
+ </div>
122
+ <el-dialog :close-on-click-modal=false title="人员选择" width="90%" height="90%" top="5vh" :visible.sync="chooseDialogVisible" :modal=false class="org-pos-user-select-dialog">
123
+ <sys-org-pos-user-select :default-choose-ids="(allSettingObj[currentMenuId] || {})['chooseIds']" :org-dims="roleType"
124
+ :refresh-proper="chooseDialogVisible" ref="posUserSelectRef"></sys-org-pos-user-select>
125
+ <div slot="footer" class="dialog-footer">
126
+ <el-button type="primary" @click="saveSelect()" size="small" icon="el-icon-success">确定</el-button>
127
+ <el-button @click="chooseDialogVisible = false" size="small" icon="el-icon-error">取 消</el-button>
128
+ </div>
129
+ </el-dialog>
130
+ </el-container>
131
+ </template>
132
+
133
+ <script>
134
+ import SysOrgPosUserSelect from "../../components/public/org/sysOrgPosUserSelect";
135
+
136
+ export default {
137
+ name: "role-menu-option",
138
+ components: {
139
+ SysOrgPosUserSelect
140
+ },
141
+ props: [
142
+ 'roleId',
143
+ 'roleType',
144
+ 'time'
145
+ ],
146
+ data() {
147
+ return {
148
+ filterText: '', // 需要过滤节点的关键字
149
+ loginUser: {}, // 登录用户信息
150
+ menuArr: [],
151
+ requestParam:{"menuSfqy":"Y","menuIds":""},
152
+ userDimensionObj:{}, // 角色类型与名称对应关系
153
+ orgPosUserIds:[],
154
+ showTree:false,
155
+ operateNameMap:{}, // 按钮code与名称的对应关系
156
+ operateAll:"", // 所有的操作代碼
157
+ defaultProps: {
158
+ children: 'children',
159
+ label: 'menuShowName'
160
+ },
161
+ initCheck:{},
162
+ currentRoleOptAll:{}, // 当前角色设置的所有roleMenuOpt
163
+ menuOptAll:{}, // 初始化获取的所有当前用户的opt
164
+ showNoPower:false, // 数据无需配置
165
+ optArr:[], // 操作权限可设置按钮
166
+ complexFieldArr:[], // 复合视图展示的数组
167
+ allOptData:false, // 全选按钮
168
+ openOptDataDisable:false, // 启用操作权限按钮禁用
169
+ allDataPower:false, // 全选按钮
170
+ openDataPowerDisable:false, // 启用数据权限按钮禁用
171
+ chooseDataArr:[], // 选中的数据权限
172
+ chooseIds:"", // 已选择的数据权限ids
173
+ chooseDialogVisible:false,
174
+ allSettingObj:{}, // 收集当前所有处理过的配置
175
+ currentMenuId:"", // 当前点击的菜单id
176
+ }
177
+ },
178
+ created() {
179
+ let vm = this;
180
+ vm.axios.post(vm.api.param.getSysParams,{"key":"userDimension"}).then(function (res) { // 获取系统参数
181
+ vm.userDimensionObj = JSON.parse(vm.platStringUtil.replaceAll(res.data.paramVal,"'","\"") || "{}");
182
+ vm.axios.post(vm.api.sysUser.getLoginUser).then(function (res) { // 登录用户
183
+ vm.axios.post(vm.api.sysOrgPosUser.find,{"userId":res.data.id}).then(function (resPosUser) { // 获取当前用户的组织架构
184
+ vm.orgPosUserIds = resPosUser.data;
185
+ let [orgIdArr,posIdArr] = [[],[]];
186
+ resPosUser.data.forEach(function (posUser) {
187
+ posUser.orgId && (orgIdArr.push(posUser.orgId));
188
+ posUser.posId && (posIdArr.push(posUser.posId));
189
+ });
190
+ vm.axios.post(vm.api.roleMenuOpt.findAllOpt,{"userId":res.data.id,"orgId":orgIdArr.join(","),"posId":posIdArr.join(",")}).then(function (resOpt) {
191
+ let data = resOpt.data || [];
192
+ data.forEach(function (each) {
193
+ vm.menuOptAll[each["menuId"]] = each["operation"];
194
+ });
195
+ vm.getSettingAndInit();
196
+ });
197
+ });
198
+ vm.loginUser = res.data;
199
+ });
200
+ });
201
+ vm.getData(); // 获取元数据对应的操作按钮中文名
202
+ },
203
+ watch: {
204
+ time(){
205
+ this.showTree = false;
206
+ this.getSettingAndInit();
207
+ },
208
+ },
209
+ methods: {
210
+ addSelectUser(){
211
+ let vm = this;
212
+ vm.chooseDialogVisible = true;
213
+ },
214
+ getSettingAndInit(){ // 获取当前配置并初始化
215
+ let vm = this;
216
+ vm.allSettingObj = {};
217
+ vm.currentRoleOptAll = {};
218
+ vm.axios.post(vm.api.roleMenuOpt.find,{"roleId":vm.roleId}).then(function (res) {
219
+ let checkArr = [];
220
+ res.data.forEach(function (each) {
221
+ vm.currentRoleOptAll[each.menuId] = {
222
+ 'id': each.id,
223
+ 'enableOperation': each.enableOperation,
224
+ 'operation': each.operation,
225
+ 'enableData': each.enableData,
226
+ 'dataPower': each.dataPower,
227
+ };
228
+ checkArr.push(each.menuId);
229
+ });
230
+ vm.initCheck["initCheck"] = checkArr; // 初始化选中数据
231
+ vm.init();
232
+ })
233
+ },
234
+ init() {
235
+ let vm = this;
236
+ let arr = ["政府","企业","机构"];
237
+ vm.requestParam = {"menuSfqy":"Y","menuIds":""}; // 初始化请求参数
238
+ vm.showTree = false; // 初始化不显示树
239
+ arr.forEach(function (type) {
240
+ if(vm.userDimensionObj[vm.roleType].indexOf(type) > -1){ // 设置过滤条件
241
+ vm.requestParam["nocdss"] = type;
242
+ }
243
+ });
244
+ if(vm.orgPosUserIds.length > 0){ // 获取有效菜单
245
+ let effectMenuParma = {"userId":vm.loginUser.id,"userType":vm.loginUser.userType};
246
+ effectMenuParma["orgId"] = vm.orgPosUserIds[0].orgId;
247
+ effectMenuParma["posId"] = vm.orgPosUserIds[0].posId;
248
+ vm.axios.post(vm.api.roleUser.getRoleByUser,effectMenuParma).then(function (res) {
249
+ let roleIdArr = [];
250
+ if(res.data.length > 0){
251
+ res.data.forEach(function (roleUser) {
252
+ roleIdArr.push(roleUser["roleId"]);
253
+ });
254
+ vm.axios.post(vm.api.role.find,{"id":roleIdArr.join(",")}).then(function (resultRes) {
255
+ if(resultRes.data.length > 0){
256
+ vm.dealEffectMenu(resultRes.data);
257
+ }else{
258
+ vm.loadTree(); // 是否加载树
259
+ }
260
+ })
261
+ }else{
262
+ vm.loadTree(); // 是否加载树
263
+ }
264
+ })
265
+ }else{
266
+ vm.loadTree(); // 是否加载树
267
+ }
268
+ },
269
+ loadTree(){ // 当前登陆用户没有有效菜单,判断是否是开发者,如果不是则不显示树
270
+ let vm = this;
271
+ let userType = vm.loginUser.userType; // 用户类型
272
+ if(userType != 'dev' && userType != 'sup'){ // 不是开发者也没有有效菜单不显示树数据
273
+ vm.requestParam["menuIds"] = "$$$$";
274
+ }
275
+ vm.showTree = true;
276
+ },
277
+ dealEffectMenu(data){ // 处理有效菜单
278
+ let vm = this;
279
+ let effectMenu = new Set();
280
+ data.forEach(function (role) {
281
+ let jsonAllow = {};
282
+ role.allowAllotMenu && (jsonAllow = JSON.parse(vm.platStringUtil.replaceAll(role.allowAllotMenu,"'","\"") || "{}"));
283
+ if(jsonAllow["sy"]){
284
+ jsonAllow["sy"].split(",").forEach(function (each) {
285
+ effectMenu.add(each);
286
+ })
287
+ }
288
+ });
289
+ let effectMenuArr = [];
290
+ for(let key of effectMenu.keys()){
291
+ effectMenuArr.push(key);
292
+ }
293
+ vm.requestParam["menuIds"] = effectMenuArr.join(",");
294
+ vm.showTree = true; // 加载树
295
+ },
296
+ dealTreeData(data){ // 回调处理数据
297
+ let arr = [];
298
+ let modelArr = [];
299
+ data.forEach(function (each) {
300
+ let belong = "";
301
+ each["parentCode"] = each["menuSjbh"];
302
+ if(each["menuSjbh"] == '-1'){
303
+ each["parentCode"] = each["menuModel"] + "_model";
304
+ }
305
+ // each["cdss"] && (belong = "(" + each["cdss"] + ")");
306
+ each["menuShowName"] = each["menuName"];
307
+ if(modelArr.indexOf(each["menuModel"]) == -1){
308
+ modelArr.push(each["menuModel"]);
309
+ arr.push({
310
+ 'id': each.menuModel + "_model",
311
+ "menuModel":each.menuModel,
312
+ "menuShowName": (each["frontMenuModelName"] || "无") + '(所属模块)',
313
+ 'order': "1",
314
+ 'menuLevel': 0,
315
+ 'menuSjbh': "-2",
316
+ 'parentCode': "-2",
317
+ 'menuPath': "-2",
318
+ 'menuSfqy': "Y",
319
+ });
320
+ }
321
+ });
322
+ return arr.concat(data);
323
+ },
324
+ operateSetting(data,collectObj){ // 操作权限设置
325
+ let vm = this;
326
+ let settingObj = vm.allSettingObj[data.id] || vm.currentRoleOptAll[data.id] || {}; // 当前的数据配置
327
+ let currentOpt = vm.menuOptAll[data.id]; // 当前菜单的opt
328
+ let alReadySet = "";
329
+ if(settingObj["enableOperation"] && settingObj["enableOperation"] != "false"){
330
+ collectObj["enableOperation"] = true;
331
+ collectObj["operation"] = settingObj["operation"] || "";
332
+ alReadySet = settingObj["operation"] || "";
333
+ }
334
+ let checkedArr = alReadySet ? alReadySet.split(","):[];
335
+ let menuType = data.menuType;
336
+ switch (menuType) {
337
+ case "系统功能":
338
+ case "自定义功能菜单":
339
+ let belong = "";
340
+ if(data.menuType == "系统功能"){
341
+ belong = data.menuXtgn;
342
+ }else{
343
+ belong = data.menuZdygncd;
344
+ }
345
+ vm.axios.post(vm.api.menuOpt.find,{"sscdid":belong}).then(function (res) {
346
+ res.data.forEach(function (opt) {
347
+ let obj = {};
348
+ let value = opt["czbm"];
349
+ if(opt.czbm == "diy"){
350
+ value = opt["czbm"] + "_" + opt["czlx"];
351
+ }
352
+ if(!(currentOpt && currentOpt.indexOf(value) == -1)){
353
+ obj["value"] = value;
354
+ obj["name"] = opt["czlx"];
355
+ obj["checked"] = (checkedArr.indexOf(value))> -1;
356
+ vm.optArr.push(obj);
357
+ }
358
+ collectObj["optArr"] = vm.optArr;
359
+ });
360
+ if(res.data.length == 0){ // 没有操作数据设置按钮禁用
361
+ vm.openOptDataDisable = true;
362
+ collectObj["openOptDataDisable"] = true;
363
+ }
364
+ vm.$forceUpdate();
365
+ });
366
+ break;
367
+ case "自定义单表表单":
368
+ if(currentOpt){
369
+ if(currentOpt.indexOf("view") > -1){
370
+ vm.optArr.push({"name":"仅查看","value":"view","checked":(checkedArr.indexOf("view"))> -1});
371
+ }
372
+ if(currentOpt.indexOf("update") > -1){
373
+ vm.optArr.push({"name":"可修改查看","value":"update","checked":(checkedArr.indexOf("update"))> -1});
374
+ }
375
+ }else{
376
+ vm.optArr.push({"name":"仅查看","value":"view","checked":(checkedArr.indexOf("view"))> -1});
377
+ vm.optArr.push({"name":"可修改查看","value":"update","checked":(checkedArr.indexOf("update"))> -1});
378
+ }
379
+ collectObj["optArr"] = vm.optArr;
380
+ break;
381
+ case "自定义表单":
382
+ vm.axios.post("/formbuttonController/listNoPage",{"viewId":data.menuViewId}).then(function (res) {
383
+ res.data.forEach(function (button) {
384
+ let obj = {};
385
+ let value = vm.operateNameMap[button.buttonType];
386
+ if(vm.operateNameMap[button.buttonType] == "diy"){
387
+ value = vm.operateNameMap[button.buttonType] + "_" + button.buttonName;
388
+ }
389
+ if(!(currentOpt && currentOpt.indexOf(value) == -1)){ // 如果权限里当前值不存在则跳过
390
+ obj["value"] = value;
391
+ obj["name"] = button.buttonName;
392
+ obj["checked"] = (checkedArr.indexOf(value))> -1;
393
+ vm.optArr.push(obj);
394
+ }
395
+ collectObj["optArr"] = vm.optArr;
396
+ });
397
+ if(res.data.length == 0){
398
+ vm.openOptDataDisable = true;
399
+ collectObj["openOptDataDisable"] = true;
400
+ }
401
+ vm.$forceUpdate();
402
+ });
403
+ break;
404
+ case "复合视图":
405
+ let complexId = data.menuGzlId;
406
+ vm.axios.post(vm.api.complextab.findAllLinkData,{'viewId': complexId, 'sort': 'sort', 'order': '0'}).then(function (res) {
407
+ let result = res.data;
408
+ result.forEach(function (data) {
409
+ let complexTab = data.complexTab;
410
+ let value = "complexTab:" + complexTab.id;
411
+ if(!(currentOpt && currentOpt.indexOf(value) == -1)){
412
+ let obj = {};
413
+ let buttonArr = [];
414
+ let urlType = complexTab.urlType;
415
+ let linkData = data.linkData;
416
+ let lengendValue = "complexTab:"+complexTab.id;
417
+ obj["legendName"] = complexTab.tabName;
418
+ obj["legendValue"] = lengendValue;
419
+ obj["legendChecked"] = checkedArr.indexOf(lengendValue) > -1 ;
420
+ // 下面两个if可以合并为一个forEach,但是为了代码易读性暂不合并
421
+ if(urlType == "自定义表单"){
422
+ linkData.forEach(function (each) {
423
+ let optValue = "complex:" + complexTab.id + ":" + vm.operateNameMap[each["buttonType"]];
424
+ if(vm.operateNameMap[each["buttonType"]] == "diy"){
425
+ optValue += "_" + each["buttonName"];
426
+ }
427
+ if(!(currentOpt && currentOpt.indexOf(optValue) == -1)){
428
+ let buttonObj = {};
429
+ buttonObj["checked"] = checkedArr.indexOf(optValue) > -1;
430
+ buttonObj["value"] = optValue;
431
+ buttonObj["buttonName"] = each["buttonName"];
432
+ buttonArr.push(buttonObj);
433
+ }
434
+ })
435
+
436
+ }
437
+ if(urlType == "系统功能" || urlType =="自定义功能"){
438
+ linkData.forEach(function (each) {
439
+ let optValue = "complex:" + complexTab.id + ":" + each["czbm"];
440
+ if(!(currentOpt && currentOpt.indexOf(optValue) == -1)){
441
+ let buttonObj = {};
442
+ buttonObj["checked"] = checkedArr.indexOf(optValue) > -1;
443
+ buttonObj["value"] = optValue;
444
+ buttonObj["buttonName"] = each["czlx"];
445
+ buttonArr.push(buttonObj);
446
+ }
447
+ })
448
+ }
449
+ obj["buttonArr"] = buttonArr;
450
+ vm.complexFieldArr.push(obj);
451
+ collectObj["complexFieldArr"] = vm.complexFieldArr;
452
+ }
453
+ });
454
+ vm.$forceUpdate();
455
+ });
456
+ break;
457
+ // case "统计报表": // 统计报表未做逻辑,咱不处理,设为禁用
458
+ // break;
459
+ default:
460
+ vm.openOptDataDisable = true;
461
+ collectObj["openOptDataDisable"] = true;
462
+ }
463
+ },
464
+ dataSetting(data,collectObj){ // 数据权限设置
465
+ let vm = this;
466
+ let settingObj = vm.allSettingObj[data.id] || vm.currentRoleOptAll[data.id] || {}; // 当前的数据配置
467
+ if(settingObj["enableData"] && settingObj["enableData"] != "false"){
468
+ collectObj["enableData"] = true;
469
+ }
470
+ let chooseDataArr = [];
471
+ let menuType = data.menuType;
472
+ switch (menuType){
473
+ case "系统功能":
474
+ case "自定义功能菜单":
475
+ if(!data.ifhasdataopt){
476
+ break;
477
+ }
478
+ case "自定义表单":
479
+ case "统计报表":
480
+ case "复合视图":
481
+ collectObj["hasDataOpt"] = true;
482
+ collectObj["dataPower"] = (settingObj["dataPower"] || "");
483
+ let chooseIdsArr = [];
484
+ let dataPowerArr = (settingObj["dataPower"]||"").split(",");
485
+ let nameObj = {"org":"组织","pos":"岗位","user":"用户"};
486
+ dataPowerArr.forEach(function (each) {
487
+ if(each){
488
+ let obj = {};
489
+ let arr = (each || "").split(":");
490
+ obj["name"] = arr[0];obj["dataId"] = arr[1];
491
+ obj["type"] = arr[2];
492
+ if(arr[3] && arr[3] != "false"){
493
+ obj["link"] = true;
494
+ }else{
495
+ obj["link"] = false;
496
+ }
497
+ obj["checked"] = true;
498
+ obj["showName"] = "[" + nameObj[arr[2]] + "]" + arr[0];
499
+ if(arr[0].indexOf("-") > -1){
500
+ let tempArr = arr[0].split("-");
501
+ obj["showName"] = "[" + nameObj[arr[2]] + "]" + tempArr[tempArr.length - 1];
502
+ }
503
+ if(obj["showName"].length>11){
504
+ obj["showName"] = obj["showName"].substring(0,11) + "...";
505
+ }
506
+ chooseIdsArr.push(obj["dataId"]);
507
+ chooseDataArr.push(obj);
508
+ }
509
+ });
510
+ collectObj["chooseDataArr"] = chooseDataArr;
511
+ collectObj["chooseIds"] = chooseIdsArr.join(",");
512
+ break;
513
+ default:
514
+ break;
515
+ }
516
+ },
517
+ renderContent(h, {node, data, store}) {
518
+ return (
519
+ <span class={node.level == 1 ? 'model-color':''} style={node.level == 1 ? 'letter-spacing:1px':''}>
520
+ <i class={data.className}></i>
521
+ <span style={node.level == 2 ? 'font-weight:bold':""}>{node.label}</span>
522
+ </span>
523
+ );
524
+ },
525
+ nodeClick(data, node) {
526
+ let vm = this;
527
+ if (node.level === 1) { // 第一级数据
528
+ node.expanded = !node.expanded;
529
+ return;
530
+ }
531
+ vm.currentMenuId = data.id;
532
+ vm.optArr=[];
533
+ vm.complexFieldArr = [];
534
+ let arr = ["allOptData","openOptDataDisable","allDataPower","openDataPower","openDataPowerDisable","hasDataOpt"];
535
+ arr.forEach(function (each) {
536
+ vm[each] = false; // 将所有权限先初始化
537
+ });
538
+ // 为了使代码更可读以及精细化区分度,这里分别处理数据权限配置以及操作权限配置
539
+ let collectObj = {}; // 收集当前配置,
540
+ vm.dataSetting(data,collectObj);
541
+ vm.operateSetting(data,collectObj);
542
+ vm.allSettingObj[data.id] = collectObj;
543
+
544
+ },
545
+ initCallBack() { // 树初始化回调函数,展开已勾选的数据
546
+ let vm = this;
547
+ let nodesMap = this.$refs.roleMenuTreeRef.getAllNode();
548
+ for(let [key,node] of Object.entries(nodesMap)){
549
+ if(node.checked){
550
+ node.expanded = true;
551
+ vm.recursionExpand(node);
552
+ }
553
+ }
554
+ },
555
+ recursionExpand(node){ // 递归将上级展开
556
+ let nodesMap = this.$refs.roleMenuTreeRef.getAllNode();
557
+ let parentNode = nodesMap[node.data.parentCode];
558
+ if(parentNode){
559
+ parentNode.expanded = true;
560
+ this.recursionExpand(parentNode);
561
+ }
562
+ },
563
+ getData() { // 元数据中操作权限对应的中文
564
+ let vm = this;
565
+ let operateArr = [];
566
+ vm.axios.post(vm.api.data.findToArray, {'typeId': 'c2a9831b1d464862b35a64b522be064c'}).then(function (res) {
567
+ res.data.forEach(function (data) {
568
+ vm.operateNameMap[data["dataName"]] = data["dataCode"];
569
+ operateArr.push(data["dataCode"]);
570
+ });
571
+ vm.operateAll = operateArr.join(",");
572
+ });
573
+ },
574
+ optChange(checked){
575
+ let vm = this;
576
+ vm.optArr.forEach(function (each) {
577
+ each["checked"] = checked;
578
+ });
579
+ vm.complexFieldArr.forEach(function (each) {
580
+ each["legendChecked"] = checked;
581
+ (each["buttonArr"] || []).forEach(function (button) {
582
+ button["checked"] = checked;
583
+ })
584
+ });
585
+ if(vm.optArr.length > 0){
586
+ vm.operateChange("optArr");
587
+ }
588
+ if(vm.complexFieldArr.length > 0){
589
+ vm.operateChange("complexFieldArr");
590
+ }
591
+ },
592
+ powerChange(checked){
593
+ let vm = this;
594
+ (vm.allSettingObj[vm.currentMenuId]['chooseDataArr'] || []).forEach(function (each) {
595
+ each["checked"] = checked;
596
+ });
597
+ vm.changeDataPower();
598
+ },
599
+ forceUpdate(checked){
600
+ this.$forceUpdate();
601
+ },
602
+ changeDataPower(){ // 数据权限变更
603
+ let vm = this;
604
+ vm.$forceUpdate();
605
+ let tempArr =[];
606
+ (vm.allSettingObj[vm.currentMenuId]['chooseDataArr'] || []).forEach(function (each) {
607
+ each["checked"] && tempArr.push(each["name"] + ":" + each["dataId"] + ":" + each["type"] + ":" + each["link"]);
608
+ });
609
+ vm.allSettingObj[vm.currentMenuId]["dataPower"] = tempArr.join(",");
610
+ },
611
+ operateChange(type){ // 操作权限变更
612
+ let vm = this;
613
+ let CheckedArr = [];
614
+ if(type == "optArr"){
615
+ let arr = vm.allSettingObj[vm.currentMenuId]['optArr'] || [];
616
+ arr.forEach(function (each) {
617
+ each["checked"] && CheckedArr.push(each["value"]);
618
+ })
619
+ }
620
+ if(type == "complexFieldArr"){
621
+ let arr = vm.allSettingObj[vm.currentMenuId]['complexFieldArr'] || [];
622
+ arr.forEach(function (each) {
623
+ each["legendChecked"] && CheckedArr.push(each["legendValue"]);
624
+ (each["buttonArr"] || []).forEach(function (button) {
625
+ button["checked"] && CheckedArr.push(button["value"]);
626
+ })
627
+ })
628
+ }
629
+ vm.allSettingObj[vm.currentMenuId]['operation'] = CheckedArr.join(",");
630
+ },
631
+ removePosUser(){ // 删除选中的岗位组织用户信息
632
+ let vm = this;
633
+ let allArr = vm.allSettingObj[vm.currentMenuId]["chooseDataArr"];
634
+ let checkedArr = [];
635
+ allArr.forEach(function (each) {
636
+ if(each["checked"]){
637
+ checkedArr.push(each["dataId"]);
638
+ }
639
+ });
640
+ vm.$confirm('是否确定删除选中的'+checkedArr.length+'条数据?', '警告', {
641
+ confirmButtonText: '确定',
642
+ cancelButtonText: '取消',
643
+ }).then(function () {
644
+ allArr = allArr.filter(each => {
645
+ return checkedArr.indexOf(each["dataId"]) == -1;
646
+ });
647
+ let tempArr = [];
648
+ let chooseIdsArr = [];
649
+ allArr.forEach(function (each) {
650
+ chooseIdsArr.push(each["dataId"]);
651
+ tempArr.push(each["name"] + ":" + each["dataId"] + ":" + each["type"] + ":" + each["link"]);
652
+ });
653
+ vm.allSettingObj[vm.currentMenuId]["dataPower"] = tempArr.join(",");
654
+ vm.allSettingObj[vm.currentMenuId]["chooseDataArr"] = allArr;
655
+ vm.allSettingObj[vm.currentMenuId]["chooseIds"] = chooseIdsArr.join(",");
656
+ vm.$forceUpdate();
657
+ });
658
+ },
659
+ saveSelect(){ // 保存已选择的组织人员岗位
660
+ let vm = this;
661
+ let typeObj = {"org":"orgName","pos":"posName","user":"userName"};
662
+ let nameObj = {"org":"组织","pos":"岗位","user":"用户"};
663
+ let chooseIdsArr = [];
664
+ let chooseDataArr = [];
665
+ Object.keys(typeObj).forEach(function (type) {
666
+ let arr = vm.$refs.posUserSelectRef.getCheckedInfo(type);
667
+ arr.forEach(function (each) {
668
+ let obj = {};
669
+ let name = each[typeObj[type]];
670
+ obj["name"] = name;
671
+ obj["dataId"] = each["id"];
672
+ obj["type"] = type;
673
+ obj["checked"] = true;
674
+ obj["link"] = false;
675
+ obj["showName"] = "[" + nameObj[type] + "]" + name;
676
+ if(name.indexOf("-") > -1){
677
+ let tempArr =name.split("-");
678
+ obj["showName"] = "[" + nameObj[type] + "]" + tempArr[tempArr.length - 1];
679
+ }
680
+ if(obj["showName"].length>11){
681
+ obj["showName"] = obj["showName"].substring(0,11) + "...";
682
+ }
683
+ chooseIdsArr.push(obj["dataId"]);
684
+ chooseDataArr.push(obj);
685
+ })
686
+ });
687
+ let tempArr =[];
688
+ chooseDataArr.forEach(function (each) {
689
+ tempArr.push(each["name"] + ":" + each["dataId"] + ":" + each["type"] + ":" + each["link"]);
690
+ });
691
+ vm.allSettingObj[vm.currentMenuId]["dataPower"] = tempArr.join(",");
692
+ vm.allSettingObj[vm.currentMenuId]["chooseDataArr"] = chooseDataArr;
693
+ vm.allSettingObj[vm.currentMenuId]["chooseIds"] = chooseIdsArr.join(",");
694
+ vm.chooseDialogVisible = false;
695
+ },
696
+ saveMenuOpt(){ // 首先这里要保存menuopt,同时要保存刷新role的拥有的菜单字段
697
+ let vm = this;
698
+ let keysArr = []; // 当前选中的所有menuIds
699
+ let menuArr = vm.$refs.roleMenuTreeRef.getTreeCheckedNodes(); // 当前选中的所有menu
700
+ let allArr = Object.keys(vm.currentRoleOptAll); // 原来保存的menuIds;
701
+ let menuMap = {};
702
+ menuArr = menuArr.filter(item=>{
703
+ if(item["parentCode"] == "-2"){
704
+ return false;
705
+ }else{
706
+ menuMap[item["id"]] = item;
707
+ keysArr.push(item["id"]);
708
+ return true;
709
+ }
710
+ });
711
+ let [removeArr,updateArr,addArr] = [[],[],[]];
712
+ allArr.forEach(function (before) { // 需要移除与更新的数据
713
+ if(keysArr.indexOf(before) == -1){ // remove
714
+ removeArr.push(vm.currentRoleOptAll[before].id);
715
+ }else{ // update
716
+ updateArr.push(before);
717
+ }
718
+ });
719
+ keysArr.forEach(function (after) { // 需要新增的数据
720
+ if(allArr.indexOf(after) == -1){ // add
721
+ addArr.push(after);
722
+ }
723
+ });
724
+ let [updateObjArr,addObjArr] = [[],[]];
725
+ updateArr.forEach(function (update) {
726
+ let setting = vm.allSettingObj[update]; // 需要更新的数据只有在打开过才执行更新,否则不变动
727
+ if(setting){
728
+ let temObj = {};
729
+ if(setting["enableOperation"] && setting["enableOperation"] != "false"){
730
+ temObj["operation"] = setting["operation"];
731
+ temObj["enableOperation"] = true;
732
+ }else{
733
+ temObj["operation"] = vm.menuOptAll[update] || vm.operateAll;
734
+ temObj["enableOperation"] = false;
735
+ }
736
+ if(setting["enableData"] && setting["enableData"] != "false"){
737
+ temObj["dataPower"] = setting["dataPower"];
738
+ temObj["enableData"] = true;
739
+ }else{
740
+ temObj["dataPower"] = "";
741
+ temObj["enableData"] = false;
742
+ }
743
+ temObj["menuPath"] = menuMap[update]["menuPath"];
744
+ temObj["id"] = vm.currentRoleOptAll[update]["id"];
745
+ temObj["roleId"] = vm.roleId;
746
+ temObj["menuId"] = update;
747
+ updateObjArr.push(temObj); // 更新的数据
748
+ }
749
+ });
750
+ addArr.forEach(function (add) {
751
+ let setting = vm.allSettingObj[add];
752
+ let temObj = {};
753
+ if(setting){ // 有配置
754
+ if(setting["enableOperation"] && setting["enableOperation"] != "false"){
755
+ temObj["operation"] = setting["operation"];
756
+ temObj["enableOperation"] = true;
757
+ }else{
758
+ temObj["operation"] = vm.menuOptAll[add] || vm.operateAll;
759
+ temObj["enableOperation"] = false;
760
+ }
761
+ if(setting["enableData"] && setting["enableData"] != "false"){
762
+ temObj["dataPower"] = setting["dataPower"];
763
+ temObj["enableData"] = true;
764
+ }else{
765
+ temObj["dataPower"] = "";
766
+ temObj["enableData"] = false;
767
+ }
768
+ }else{ // 都不配置
769
+ temObj["enableOperation"] = false;
770
+ temObj["operation"] = vm.menuOptAll[add] || vm.operateAll;
771
+ temObj["enableData"] = false;
772
+ temObj["dataPower"] = "";
773
+ }
774
+ temObj["id"] = "";
775
+ temObj["roleId"] = vm.roleId;
776
+ temObj["menuId"] = add;
777
+ temObj["menuPath"] = menuMap[add]["menuPath"];
778
+ addObjArr.push(temObj);
779
+ });
780
+ let menuNameArr = [];
781
+ menuArr.forEach(function (each) { // 更新拥有的菜单
782
+ menuNameArr.push(each["menuName"]);
783
+ });
784
+ vm.axios.post(vm.api.role.update,{"id":vm.roleId,"remark":menuNameArr.join(",")});
785
+ vm.axios.post(vm.api.roleMenuOpt.saveRoleMenuOpt,{"removeIds":removeArr.join(","),
786
+ "updateObj":JSON.stringify(updateObjArr),"addObj":JSON.stringify(addObjArr)}).then(function (res) {
787
+ vm.$message({
788
+ type:"success",
789
+ message:res.data.operateMessage,
790
+ duration:1200,
791
+ });
792
+ if(res.data.operateSuccess){ // 关闭窗口
793
+ vm.$emit("closeOptDialog");
794
+ }
795
+ })
796
+ },
797
+ }
798
+ }
799
+ </script>
800
+
801
+ <style scoped>
802
+ .role-menu-contain /deep/ .el-card__header{
803
+ background-color: white;
804
+ color:black;
805
+ height: 40px;
806
+ line-height: 40px;
807
+ padding: 5px;
808
+ font-size: 16px;
809
+ box-sizing: border-box;
810
+ border: 0;
811
+ }
812
+ .role-menu-contain /deep/ .el-card__body{
813
+ padding: 0;
814
+ min-height: 50px;
815
+ }
816
+ .role-menu-contain /deep/ .el-card{
817
+ padding: 5px;
818
+ box-sizing: border-box;
819
+ min-height: 50px;
820
+ }
821
+ .role-menu-contain /deep/ .role-menu-opt-card-card{
822
+ min-height: 50px;
823
+ text-align: center;
824
+ line-height: 50px;
825
+ }
826
+ .role-menu-contain /deep/ .roleMenuOptMain{
827
+ padding: 0 10px;
828
+ box-sizing: border-box;
829
+ }
830
+ .clearfix{
831
+ line-height: 25px;
832
+ text-align: left;
833
+ }
834
+ .asideTree {
835
+ overflow-y: auto;
836
+ width: 100% !important;
837
+ height: calc(100% - 45px);
838
+ position: relative;
839
+ margin-top: 5px;
840
+ -webkit-user-select: none;
841
+ -moz-user-select: none;
842
+ -ms-user-select: none;
843
+ user-select: none;
844
+ }
845
+ fieldset{
846
+ border: 1px solid #EBEEF5;
847
+ border-radius: 5px;
848
+ height: 100%;
849
+ box-sizing: border-box;
850
+ padding-left: 20px;
851
+ }
852
+ legend{
853
+ height: 30px;
854
+ line-height: 30px;
855
+ }
856
+ .role-menu-opt-card-card /deep/ .el-checkbox__label{
857
+ padding-left: 5px;
858
+ }
859
+ .data-power-class /deep/ .el-card{
860
+ min-height: 30px;
861
+ }
862
+ .data-power-class /deep/ .el-card__body{
863
+ padding: 0;
864
+ min-height: 30px;
865
+ height: 32px;
866
+ }
867
+ .data-power-class /deep/ .el-checkbox{
868
+ height: 32px;
869
+ line-height: 32px;
870
+ }
871
+ .opt-button-class{
872
+ width: 80px;
873
+ float: left;
874
+ height: 20px;
875
+ line-height: 20px;
876
+ margin-right: 10px;
877
+ border: 1px solid rgb(235, 238, 245);
878
+ padding: 5px 15px;
879
+ text-align: center;
880
+ }
881
+ .opt-button-class /deep/ .el-checkbox{
882
+ height: 20px;
883
+ line-height: 20px;
884
+ }
885
+
886
+ .asideTree /deep/ .model-color span{
887
+ font-size: 16px;
888
+ }
889
+
890
+ .asideTree /deep/ .el-tree > .el-tree-node > .el-tree-node__content{ /* 选中第一级菜单 */
891
+ background-color:#1A598A;
892
+ text-decoration: none;
893
+ border: 1px silver solid;
894
+ color:#fff;
895
+ text-align: center;
896
+ height: 35px;
897
+ }
898
+ </style>