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,1576 @@
1
+ <template>
2
+ <el-tabs v-model="activeName" class="role-menu-contain" >
3
+ <el-tab-pane label="关联菜单" name="1" >
4
+ <el-container class="comomSettiingStyle" v-loading="commonLoading" element-loading-text="加载中">
5
+ <el-main style="height: 100%;overflow: hidden;padding: 0px">
6
+ <div class="aside-tree" >
7
+ <el-select v-model="cdss" @change="cdssChange" style="width: 100%;margin-bottom: 5px">
8
+ <el-option v-for="(text,index) in cdssArr" :key="index" :label="dimensionObj[text]" :value="text"></el-option>
9
+ </el-select>
10
+ <el-input v-model="filterAllowMenu" size="small" prefix-icon="el-icon-search" style="margin-bottom: 5px" placeholder="输入关键字过滤"></el-input>
11
+ <div style="height: 100%;width: 100%;overflow-y: auto">
12
+ <common-tree parent-id="parentCode"
13
+ :default-props="defaultProps"
14
+ v-if="showAllowMenuTree"
15
+ :renderContentFunc="renderContent"
16
+ :root-datas="rootDatas"
17
+ ref="allowMenuSettingTreeRef"
18
+ :filter-text="filterAllowMenu"
19
+ :refresh-proper="allowMenurefreshProper"
20
+ :expand-onclick-node=false
21
+ :node-click="nodeClick"
22
+ :init-check="initCheck"
23
+ :default-expand-all="true"
24
+ >
25
+ </common-tree>
26
+ </div>
27
+ </div>
28
+
29
+ <div class="opt-div-class">
30
+ <el-card class="role-menu-opt-card" shadow="never " >
31
+ <div slot="header" class="clearfix" style="background-color: #E8F1FF;">
32
+ <span><i class="el-icon-document"></i>操作权限配置
33
+ <span style="position: relative;left: 5px;"
34
+ class="clearfix" v-if="((allSettingObj[currentMenuId] || {})['optArr'] || []).length > 0
35
+ || ((allSettingObj[currentMenuId] || {})['complexFieldArr'] || []).length > 0">
36
+ (
37
+ <el-checkbox label="全选" v-model="(allSettingObj[currentMenuId] || {})['checkAll']" @change="optAllChange" size="medium"></el-checkbox>
38
+ )
39
+ </span>
40
+ </span>
41
+ </div>
42
+ <el-card class="role-menu-opt-card-card" shadow="never">
43
+
44
+ <div v-if="((allSettingObj[currentMenuId] || {})['optArr'] || []).length == 0
45
+ && ((allSettingObj[currentMenuId] || {})['complexFieldArr'] || []).length == 0" style="text-align: center">无需进行操作权限设置</div>
46
+ <div v-else style="text-align: left">
47
+ <div v-for="(item,index) in ((allSettingObj[currentMenuId] || {})['optArr'] || [])"
48
+ :key="index" :class="item.checked?'opt-button-class':'opt-button-no-class'">
49
+ <el-checkbox v-model="item.checked" :label="item.name" @change="operateChange('optArr')">
50
+ </el-checkbox>
51
+ </div>
52
+ <fieldset v-for="(item,index) in ((allSettingObj[currentMenuId] || {})['complexFieldArr'] || [])" :key="index" style="padding: 10px">
53
+ <legend>{{item.legendName}}( <el-checkbox label="是否启用该标签" v-model="item.legendChecked" @change="operateChange('complexFieldArr')"></el-checkbox> )</legend>
54
+ <div v-for="(fieldItem,fieldIndex) in (item['buttonArr'] || [])" :key="fieldIndex"
55
+ :class="fieldItem['checked']?'opt-button-class':'opt-button-no-class'">
56
+ <el-checkbox :label="fieldItem['buttonName']" v-model="fieldItem['checked']" @change="operateChange('complexFieldArr')">
57
+ </el-checkbox>
58
+ </div>
59
+ <div v-show="(item['buttonArr'] || []).length == 0" style="text-align: center">无需进行操作权限设置</div>
60
+ </fieldset>
61
+ </div>
62
+
63
+ </el-card>
64
+ </el-card>
65
+
66
+ <el-card class="role-menu-opt-card" shadow="never" style="margin-top: 5px;">
67
+ <div slot="header" class="clearfix" style="background-color: #E8F1FF;">
68
+ <span>
69
+ <i class="el-icon-tickets"></i>数据权限配置
70
+ <span style="position: relative;left: 5px;"
71
+ class="clearfix" v-if="(allSettingObj[currentMenuId] || {})['hasDataOpt']">
72
+ (
73
+ <el-checkbox label="全选" @change="powerChange" v-model="allDataPower" style="margin-right: 0"></el-checkbox>
74
+ )
75
+ </span>
76
+
77
+ </span>
78
+ </div>
79
+
80
+ <el-card class="role-menu-opt-card-card" shadow="never">
81
+ <div v-if = "!(allSettingObj[currentMenuId] || {})['hasDataOpt']" style="text-align: center">无需进行数据权限设置</div>
82
+ <div v-else style="text-align: left" class="data-power-class">
83
+ <div v-show = "(allSettingObj[currentMenuId] || {})['hasDataOpt']">
84
+ <el-button type="primary" icon="el-icon-circle-plus"
85
+ @click="addSelectUser" size="small">添加</el-button>
86
+ <el-button type="danger" icon="el-icon-remove"
87
+ @click="removePosUser" size="small">删除</el-button>
88
+ <br>
89
+
90
+ <div :class="item.checked?'opt-card-class':'opt-card-no-class'" style=""
91
+ shadow="never" v-for="(item,index) in (allSettingObj[currentMenuId] || {})['chooseDataArr']":key="index "
92
+ >
93
+ <el-checkbox :label="item.showName" v-model="item.checked" @change="changeDataPower" style="position: relative;"
94
+ ></el-checkbox>
95
+ <el-tooltip class="item" effect="dark" content="数据权限包含其下级组织" placement="right-start">>
96
+ <el-checkbox type="radio" v-model="item.link" @change="changeDataPower"
97
+ :disabled="!item.checked" style="float: right;"></el-checkbox>
98
+ </el-tooltip>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ </el-card>
103
+
104
+ </el-card>
105
+
106
+ </div>
107
+ </el-main>
108
+
109
+ <!--关联人员 选择 -->
110
+ <el-dialog :close-on-click-modal=false title="人员选择" width="80%" height="90%" top="5vh" :visible.sync="chooseDialogVisible" :modal=false >
111
+ <sys-org-pos-user-select
112
+ :default-choose-ids="(allSettingObj[currentMenuId] || {})['chooseIds']"
113
+ :org-dims="orgDims"
114
+ :refresh-proper="refreshUserDialog"
115
+ ref="posUserSelectRef"
116
+ :orgTreeIds="orgTreeIds"
117
+
118
+ >
119
+ </sys-org-pos-user-select>
120
+ <div slot="footer" class="dialog-footer">
121
+ <el-button type="primary" @click="saveSelect()" size="small" icon="el-icon-success">确定</el-button>
122
+ <el-button @click="chooseDialogVisible = false" size="small" icon="el-icon-error">取 消</el-button>
123
+ </div>
124
+ </el-dialog>
125
+
126
+
127
+ </el-container>
128
+
129
+ </el-tab-pane>
130
+ <el-tab-pane label="关联人员" name="2" >
131
+ <sys-org-pos-user-select
132
+ :choose-param="{'roleId':currentRowObj.id}" :refresh-proper="roleSettingDialog"
133
+ :choose-url="api.roleUser.listNoPage"
134
+ choose-field="userAttach"
135
+ choose-field-cascade-data="cascadeData"
136
+ :filterUserParam="{'commonUserType':'common' }"
137
+ ref="staffSetRef"
138
+ :orgTreeIds="orgTreeIds"
139
+ :org-dims="orgDims"
140
+ v-if="showPosUserSelect"
141
+ :open-low-level-checkbox="true"
142
+ >
143
+ </sys-org-pos-user-select>
144
+ </el-tab-pane>
145
+ </el-tabs>
146
+
147
+
148
+
149
+
150
+ </template>
151
+
152
+ <script>
153
+ import SysOrgPosUserSelect from "../../../../components/public/org/sysOrgPosUserSelect";
154
+ export default {
155
+ name: "common-setting",
156
+ components:{SysOrgPosUserSelect},
157
+ props:['currentRowObj',"roleSettingDialog","roleType","uuIdkey"],
158
+ data(){
159
+ return {
160
+ commonLoading:false, //加载条
161
+ defaultProps:{"children":"children","label":"menuShowName"},
162
+ defaultLinkProps:{"children":"children","label":"menuName"},
163
+ activeName:"1", // 当前激活的tab页名称
164
+ roleRequestParam:{}, // 权限
165
+ filterAllowMenu:"",
166
+ filterLinkMenu:"",
167
+ showAuthTree:false, // 权限关联菜单树是否显示
168
+ linkMenuModel:"$$$$", // 权限关联菜单的数据来源
169
+ cdssArr:[],
170
+ cdss:"", // 当前菜单所在的模块
171
+ lastCdss:"", // 上一次菜单所在的模块
172
+ allowMenuParam:{},
173
+ showAllowMenuTree:false,
174
+ allowMenurefreshProper:"", // 刷新可分配菜单树的办法
175
+ checkAll:false, //默认全选
176
+ operateNameMap:{}, // 操作按钮名称代码对应关系
177
+ complexFieldArr:[],
178
+ currentMenuId:"", // 当前点击的菜单idvm.rootDatas = arr.concat(data)
179
+ loginUser:{}, // vm.rootDatas = arr.concat(data)
180
+ caseSup:false, // 是否是开发者
181
+ initCheck:{}, // 初始化选中
182
+ authLinkInitCheck:{}, // 关联菜单初始化选中
183
+ rootDatas:[], // 可分配菜单的树数据
184
+ linkMenuRootDatas:[], // 关联菜单的树数据
185
+ allSettingObj:{}, // 所有按钮配置数据,
186
+ currentRoleOptAll:{}, // 可分配菜单数据库已选择的Opt数据
187
+ menuOptAll:{}, // 当前用户拥有的所有操作权限,如果是开发者那么视为所有
188
+ menuAllBaseInfo:{}, // 菜单对应的基础信息
189
+ userMap:{}, // 已选择人员信息的集合
190
+ userDataMap:{}, //
191
+ openDataPowerDisable:false, //是否启用数据按钮
192
+ chooseDialogVisible:false, //关联人员弹出窗选择
193
+ currenTime:"",
194
+ allDataPower:true, // 全选按钮
195
+ openOptDataDisable:false, //是否启用按钮
196
+ seacherRoleId:'', //关联菜单关联的id
197
+ refreshUserDialog:false, //刷新人员弹窗
198
+ orgTreeIds:"",
199
+ operationAddObj:{}, // 增加的操作权限数据
200
+ operationDeleteObj:{}, // 删除的操作权限数据
201
+ showPosUserSelect:false,
202
+ allMenuObj:{}, //所有的菜单数据
203
+ orgDims:"",
204
+
205
+ caseDataParentData:{},
206
+ levelOrgUserMap:{}, //已选的是否开启上下级
207
+ levelOrgUserDataMap:{},
208
+ caseDataMap:{}, //保存原开启下级部门权限的所有子数据
209
+ caseDataParentMap:{}, //保存所有开启父级部门的数据
210
+ dimensionObj:{},//存放菜单归属
211
+ dimensionOrder:{}, // 维度顺序
212
+ }
213
+ },
214
+ watch:{
215
+ chooseDialogVisible(){
216
+ if(this.chooseDialogVisible){
217
+ this.refreshUserDialog = true;
218
+ }else{
219
+ this.refreshUserDialog = false;
220
+ }
221
+ },
222
+ //下拉列表数据值变化(解决页面初次打开时下拉列表默认选中为空问题)
223
+ cdssArr(){
224
+ let vm = this;
225
+ //初始化cdss默认选中值
226
+ vm.$nextTick(function () {
227
+ vm.cdssArr.length > 0 && (vm.cdss = vm.cdssArr[0]) && (vm.lastCdss = vm.cdssArr[0]);
228
+ });
229
+ },
230
+ cdss(){
231
+ this.dealTreeData();
232
+ this.allowMenurefreshProper = this.cdss;
233
+ },
234
+ roleSettingDialog(){
235
+ let vm = this;
236
+ vm.activeName = "1";
237
+ if(vm.roleSettingDialog){
238
+ vm.commonLoading = true;
239
+ vm.showAllowMenuTree = false;
240
+ vm.$nextTick(function () {
241
+ vm.cdssArr.length > 0 && (vm.cdss = vm.cdssArr[0]) && (vm.lastCdss = vm.cdssArr[0]);
242
+ vm.init();
243
+ });
244
+ }
245
+ },
246
+ uuIdkey(){
247
+ //清空默认搜索框值
248
+ let vm = this;
249
+ vm.filterAllowMenu = "";
250
+ //关联人员设置处于关闭状态
251
+ vm.chooseDialogVisible = false;
252
+ vm.initRootData();
253
+ vm.activeName = "1";
254
+ if(vm.roleSettingDialog){
255
+ vm.showAllowMenuTree = false;
256
+ vm.$nextTick(function () {
257
+ vm.cdssArr.length > 0 && (vm.cdss = vm.cdssArr[0]) && (vm.lastCdss = vm.cdssArr[0]);
258
+ vm.init();
259
+ })
260
+ }
261
+ vm.orgDims = vm.roleType;
262
+ }
263
+ },
264
+ created(){
265
+ let vm = this;
266
+ //判断当前用户
267
+ vm.axios.post(vm.api.sysOrgDimension.find).then((res) => {
268
+ let {data} = res;
269
+ for (let {dimSpec, id, isUse,sort} of data) {
270
+ //判断是否启用和dimSpec是否有值
271
+ if (isUse === '1' && dimSpec) {
272
+ let dimSpecObj = JSON.parse(dimSpec);
273
+ if(dimSpecObj.hasOwnProperty("menuLocalName")&&vm.roleType==id){
274
+ vm.dimensionObj[id]=dimSpecObj["menuLocalName"];
275
+ }
276
+ vm.dimensionOrder[id] = Number(sort || "0");
277
+ vm.dimensionOrder["sys"] = 99;
278
+ }
279
+ }
280
+ vm.dimensionObj["sys"]="系统";
281
+ vm.axios.post(vm.api.sysUser.getLoginUser).then(res=> {
282
+ //获取当前系统登录
283
+ vm.loginUser = res.data; // 如果是开发者逻辑与非开发者不同
284
+ vm.caseSup = vm.loginUser.userType == "sup"; //判断当前用户时候是开发者
285
+ if(vm.caseSup){
286
+ vm.showPosUserSelect = true;
287
+ vm.orgDims = vm.roleType;
288
+
289
+ }else{
290
+ vm.axios.post(vm.api.sysOrgPosUser.find,{"userId":vm.loginUser.id}).then(res => {
291
+ vm.orgTreeIds = res.data[0].orgId;
292
+ vm.orgDims = res.data[0].orgDim;
293
+
294
+ vm.showPosUserSelect = true;
295
+ });
296
+ }
297
+
298
+ vm.axios.post(vm.api.menu.find).then(function (res) {
299
+ (res.data || []).forEach(item => {
300
+ vm.allMenuObj[item.id] = item;
301
+ });
302
+ vm.initRootData();
303
+ });
304
+ });
305
+ });
306
+
307
+ },
308
+ methods:{
309
+ init(){
310
+ this.commonLoading = true;
311
+ this.userMap = {};
312
+ this.userDataMap = {};
313
+ this.currentRoleOptAll = {};
314
+ this.allSettingObj = {};
315
+
316
+ this.levelOrgUserMap = {};
317
+ this.levelOrgUserDataMap = {};
318
+ this.caseDataMap = {};
319
+ this.caseDataParentData = {};
320
+
321
+ this.initAllowTree();
322
+ this.loadLinkTree();
323
+ },
324
+ initAllowTree(){
325
+ let vm = this;
326
+ vm.axios.post(vm.api.sysUser.getLoginMenuOptNow).then(resOpt=>{
327
+ let sessionOpt = resOpt.data;
328
+ let obj = {"caseSup":vm.caseSup};
329
+ // 如果是开发者,可分配菜单是所有,如果是下级授权用户,可分配菜单是根据他的授权id获取
330
+ let authRoleId = "";
331
+ if(vm.caseSup){
332
+ authRoleId = vm.currentRowObj.id;
333
+ }else{
334
+ authRoleId = vm.loginUser.empowerId || "$$$$";
335
+ }
336
+ obj["authRoleId"] = authRoleId;
337
+ obj["menuSfqy"] = "Y";
338
+ vm.axios.post("/platMenuController/findAuthMenu",obj).then(function (res) { // 可分配菜单
339
+ let cdssArr = [];
340
+ (res.data || []).forEach(item=>{
341
+ if(item.cdss && cdssArr.indexOf(item.cdss) == -1&&vm.dimensionObj.hasOwnProperty(item.cdss)){
342
+ cdssArr.push(item.cdss);
343
+ }
344
+ vm.menuAllBaseInfo[item["id"]] = item;
345
+ if(vm.caseSup){
346
+ let result = [];
347
+ try{ // json转换异常时,将数据置空,但是不能影响代码的正常运行
348
+ if(item["menuType"].indexOf("复合视图") > -1){
349
+ let opts = JSON.parse(item.menuOpts || "{}");
350
+ for(let [key,value] of Object.entries(opts)){
351
+ result.push("complexTab:" + key);
352
+ Object.keys(value || {}).forEach(buttonKey => {
353
+ if(buttonKey != 'complexViewName'){
354
+ result.push("complex:" + key + ":" + buttonKey);
355
+ }
356
+ })
357
+ }
358
+ vm.menuOptAll[item.id] = (result || []).join(",");
359
+ }else{
360
+ Object.keys(JSON.parse(item.menuOpts || "{}")).forEach(key => {
361
+ result.push(key);
362
+ });
363
+ vm.menuOptAll[item.id] = result.join(",");
364
+ }
365
+ }catch (e) {
366
+ console.log(e);
367
+ console.log("JSON转换异常");
368
+ }
369
+ }else{
370
+ vm.menuOptAll[item.id] = sessionOpt[item.id];
371
+ }
372
+ });
373
+ cdssArr = cdssArr.sort(vm.compareCdss);
374
+ vm.cdssArr = cdssArr;
375
+ cdssArr.length > 0 && (vm.cdss = cdssArr[0]) && (vm.lastCdss = cdssArr[0]); // 这边菜单所属变化了,触发了
376
+ vm.allDatas = res.data;
377
+ vm.dealTreeData();
378
+ vm.$nextTick(function () {
379
+ vm.loadAllowTree(); // 加载可分配菜单已选中信息
380
+ });
381
+ });
382
+ });
383
+ },
384
+ loadAllowTree(){
385
+ let vm = this;
386
+ //初始化已选中的 人员、部门、岗位
387
+ /* 初始化已选择人员信息 */
388
+ vm.axios.post(vm.api.roleUser.find,{"roleId":vm.currentRowObj.id}).then(function (res) {
389
+ (res.data||[]).forEach(function (info) {
390
+ if(info.cascadeData == 'true'){
391
+ vm.caseDataMap[info.userAttach] = info.id;
392
+ }else if(info.cascadeData == 'parent'){
393
+ //保存原勾选的父菜单(为了方便更新)
394
+ vm.caseDataParentData[info.userAttach] = info.id; //保存原选中的父级信息
395
+ }
396
+ else{
397
+ vm.userMap[info.userAttach] = info.id;
398
+ vm.userDataMap[info.userAttach] = info;
399
+ }
400
+ });
401
+ });
402
+
403
+
404
+
405
+ vm.axios.post(vm.api.roleMenuOpt.find,{"roleId":vm.currentRowObj.id}).then(function (resOpt) {
406
+ let arr = [];
407
+ resOpt.data.forEach(each=>{
408
+ vm.currentRoleOptAll[each.menuId] = {
409
+ 'id': each.id,
410
+ 'operation': each.operation,
411
+ 'enableData': each.enableData,
412
+ 'enableOperation': true,
413
+ 'dataPower': each.dataPower,
414
+ };
415
+ arr.push(each.menuId);
416
+ });
417
+
418
+ vm.initCheck["initCheck"] = arr; // 初始化已经选择的关菜单
419
+ vm.showAllowMenuTree = true;
420
+ vm.commonLoading = false;
421
+ });
422
+ },
423
+ loadLinkTree(){
424
+ let vm = this;
425
+ /* 初始化关联菜单选中 */
426
+ let linkMenu = JSON.parse(vm.currentRowObj.allowAllotMenu || "{}").xz; // 设置已选择
427
+ vm.authLinkInitCheck["initCheck"] = (linkMenu || "").split(","); //已选择信息
428
+ vm.showAuthTree = true;
429
+ },
430
+
431
+ //当页面首次初始化时
432
+ initRootData(){
433
+ let vm = this;
434
+ let operateArr = [];
435
+ vm.cdssArr=[];
436
+ // 获取代码与按钮名称对应关系(仅初始化一次)
437
+ vm.axios.post(vm.api.data.findToArray, {'typeId': 'c2a9831b1d464862b35a64b522be064c'}).then(function (res) {
438
+ res.data.forEach(function (data) {
439
+ vm.operateNameMap[data["dataName"]] = data["dataCode"];
440
+ operateArr.push(data["dataCode"]);
441
+ });
442
+ });
443
+ vm.axios.post(vm.api.param.getSysParams,{"key":"authModel"}).then(res=>{
444
+ vm.linkMenuModel = ((res.data || {}).paramVal) || "$$$$";
445
+ vm.roleRequestParam["menuModel"] = vm.linkMenuModel; // 权限关联菜单的数据来源
446
+ vm.roleRequestParam["menuSfqy"] = "Y";
447
+ vm.axios.post("/platMenuController/listNoPage",vm.roleRequestParam).then(resRoleLink=>{
448
+ if(vm.caseSup){ // 开发者权限为所有
449
+ vm.linkMenuRootDatas = resRoleLink.data;
450
+ }else{
451
+ //当前用户不是开发者,判断 用户表中 EMPWERID 值 加载已经关联菜单
452
+ if(vm.loginUser.empowerId){
453
+ vm.axios.post(vm.api.role.getById,{"id":vm.loginUser.empowerId}).then(roleRes=>{
454
+ let allowArr = (roleRes.data.allowAllotMenu || "").split(",");
455
+ resRoleLink.data.forEach(each=>{
456
+ if(allowArr.indexOf(each["id"]) > -1){
457
+ vm.linkMenuRootDatas.push(each);
458
+ }
459
+ });
460
+ })
461
+ }
462
+ }
463
+ });
464
+ });
465
+ vm.initAllowTree();
466
+ },
467
+ compareCdss(a,b){
468
+ let vm = this;
469
+ return (vm.dimensionOrder[a] || 0) - (vm.dimensionOrder[b] || 0);
470
+ },
471
+ dealTreeData(){
472
+ let vm = this;
473
+ let data = JSON.parse(JSON.stringify(vm.allDatas)); // 重新序列化对象
474
+ let arr = [];
475
+ let modelArr = [];
476
+ data = data.filter(each => {
477
+ if (each["menuModel"] == vm.linkMenuModel || each["cdss"] != vm.cdss) {
478
+ return false;
479
+ }
480
+ return true;
481
+ });
482
+
483
+ if(vm.caseSup){
484
+ data.forEach(function (each) {
485
+ each["parentCode"] = each["menuSjbh"];
486
+ if(each["menuSjbh"] == '-1'){
487
+ each["parentCode"] = each["menuModel"] + "_model";
488
+ }
489
+ each["menuShowName"] = each["menuName"];
490
+ if(modelArr.indexOf(each["menuModel"]) == -1){
491
+ modelArr.push(each["menuModel"]);
492
+ arr.push({
493
+ 'id': each.menuModel + "_model",
494
+ "menuModel":each.menuModel,
495
+ "menuShowName": (each["frontMenuModelName"] || "无") + '(所属模块)',
496
+ 'order': "1",
497
+ 'menuLevel': 0,
498
+ 'menuSjbh': "-2",
499
+ 'parentCode': "-2",
500
+ 'menuPath': "-2",
501
+ 'menuSfqy': "Y"
502
+ });
503
+ }
504
+ });
505
+ vm.rootDatas = arr.concat(data);
506
+ return true;
507
+ }
508
+ let realInfoArr = []; // 实际需要的数据,清除未勾选的数据,但保留已勾选的上级未选中的数据
509
+ let realInfoIds = [];
510
+ data.forEach(function (item) {
511
+ recursionData(vm.allMenuObj[item.id]);
512
+ });
513
+
514
+ function recursionData(data) {
515
+ if(data){
516
+ if(realInfoIds.indexOf(data["id"]) == -1){
517
+ realInfoArr.push(data);
518
+ realInfoIds.push(data["id"]);
519
+ }
520
+ recursionData(vm.allMenuObj[data["menuSjbh"]]);
521
+ }
522
+ }
523
+
524
+ realInfoArr.forEach(function (each) {
525
+ each["parentCode"] = each["menuSjbh"];
526
+ if(each["menuSjbh"] == '-1'){
527
+ each["parentCode"] = each["menuModel"] + "_model";
528
+ }
529
+ each["menuShowName"] = each["menuName"];
530
+ if(modelArr.indexOf(each["menuModel"]) == -1){
531
+ modelArr.push(each["menuModel"]);
532
+ arr.push({
533
+ 'id': each.menuModel + "_model",
534
+ "menuModel":each.menuModel,
535
+ "menuShowName": (each["frontMenuModelName"] || "无") + '(所属模块)',
536
+ 'order': "1",
537
+ 'menuLevel': 0,
538
+ 'menuSjbh': "-2",
539
+ 'parentCode':'-2',
540
+ 'menuPath': "-2",
541
+ 'menuSfqy': "Y",
542
+ });
543
+ }
544
+ });
545
+ let result = arr.concat(realInfoArr).sort(vm.sortData);
546
+ vm.rootDatas = result;
547
+ },
548
+ sortData(a,b){ // 数据排序
549
+ if(a["menuLevel"] == b["menuLevel"]){
550
+ return Number(a["menuOrder"]) - Number(b["menuOrder"]);
551
+ }else{
552
+ return Number(a["menuLevel"]) - Number(b["menuLevel"]);
553
+ }
554
+ },
555
+
556
+ renderContent(h, {node, data, store}) {
557
+ return (
558
+ <span class={node.level == 1 ? 'model-color':''} style={node.level == 1 ? 'letter-spacing:1px':''}>
559
+ <i class={data.className}></i>
560
+ <span style={node.level == 2 ? 'font-weight:bold':""}>{node.label}</span>
561
+ </span>
562
+ );
563
+ },
564
+
565
+ nodeClick(data,node){
566
+ let vm = this;
567
+ if (node.level === 1) { // 第一级数据
568
+ node.expanded = !node.expanded;
569
+ return;
570
+ }
571
+ let arr = ["openOptDataDisable","openDataPowerDisable","hasDataOpt","hasDataOpt"];
572
+ arr.forEach(function (each) {
573
+ vm[each] = false; // 将所有权限先初始化
574
+ });
575
+ //初始化操作权限
576
+ vm.currentMenuId = data.id; // 当前操作的菜单id
577
+ let collectObj = {}; // 收集当前配置,
578
+ vm.dataSetting(data,collectObj);
579
+
580
+ vm.operateSetting(data,collectObj);
581
+
582
+ vm.allSettingObj[data.id] = collectObj;
583
+ },
584
+
585
+
586
+ dataSetting(data,collectObj){ // 数据权限设置
587
+ let vm = this;
588
+ let settingObj = vm.allSettingObj[data.id] || vm.currentRoleOptAll[data.id] || {}; // 当前的数据配置
589
+ if(settingObj["enableData"] && settingObj["enableData"] != "false"){
590
+ collectObj["enableData"] = true;
591
+ }
592
+ let chooseDataArr = [];
593
+ let menuType = data.menuType;
594
+ switch (menuType){
595
+ case "系统功能":
596
+ case "自定义功能菜单":
597
+ if(!data.ifhasdataopt){
598
+ break;
599
+ }
600
+ case "自定义表单":
601
+ case "自定义表单-VUE":
602
+ case "统计报表":
603
+ case "复合视图":
604
+ case "复合视图-VUE":
605
+ collectObj["hasDataOpt"] = true;
606
+ collectObj["dataPower"] = (settingObj["dataPower"] || "");
607
+ let chooseIdsArr = [];
608
+ let dataPowerArr = (settingObj["dataPower"]||"").split(",");
609
+ let nameObj = {"org":"组织","pos":"岗位","user":"用户"};
610
+ dataPowerArr.forEach(function (each) {
611
+ if(each){
612
+ let obj = {};
613
+ let arr = (each || "").split(":");
614
+ obj["name"] = arr[0];obj["dataId"] = arr[1];
615
+ obj["type"] = arr[2];
616
+ if(arr[3] && arr[3] != "false"){
617
+ obj["link"] = true;
618
+ }else{
619
+ obj["link"] = false;
620
+ }
621
+ obj["checked"] = true;
622
+ obj["showName"] = "[" + nameObj[arr[2]] + "]" + arr[0];
623
+ if(arr[0].indexOf("-") > -1){
624
+ let tempArr = arr[0].split("-");
625
+ obj["showName"] = "[" + nameObj[arr[2]] + "]" + tempArr[tempArr.length - 1];
626
+ }
627
+ if(obj["showName"].length>11){
628
+ obj["showName"] = obj["showName"].substring(0,11) + "...";
629
+ }
630
+ chooseIdsArr.push(obj["dataId"]);
631
+ chooseDataArr.push(obj);
632
+ }
633
+ });
634
+ collectObj["chooseDataArr"] = chooseDataArr;
635
+ collectObj["chooseIds"] = chooseIdsArr.join(",");
636
+ break;
637
+ default:
638
+ break;
639
+ }
640
+ },
641
+
642
+ optAllChange(checked){ // 全选
643
+ let vm = this;
644
+ vm.optArr.forEach(function (each) {
645
+ each["checked"] = checked;
646
+ });
647
+ vm.complexFieldArr.forEach(function (each) {
648
+ each["legendChecked"] = checked;
649
+ (each["buttonArr"] || []).forEach(function (button) {
650
+ button["checked"] = checked;
651
+ })
652
+ });
653
+ if(vm.optArr.length > 0){
654
+ vm.operateChange("optArr");
655
+ }
656
+ if(vm.complexFieldArr.length > 0){
657
+ vm.operateChange("complexFieldArr");
658
+ }
659
+ },
660
+ optChange(checked){
661
+ let vm = this;
662
+ vm.optArr.forEach(function (each) {
663
+ each["checked"] = checked;
664
+ });
665
+ vm.complexFieldArr.forEach(function (each) {
666
+ each["legendChecked"] = checked;
667
+ (each["buttonArr"] || []).forEach(function (button) {
668
+ button["checked"] = checked;
669
+ })
670
+ });
671
+ if(vm.optArr.length > 0){
672
+ vm.operateChange("optArr");
673
+ }
674
+ if(vm.complexFieldArr.length > 0){
675
+ vm.operateChange("complexFieldArr");
676
+ }
677
+ },
678
+ operateChange(type){ // 操作权限变更
679
+ let vm = this;
680
+ let CheckedArr = [];
681
+ if(type == "optArr"){
682
+ let arr = vm.allSettingObj[vm.currentMenuId]['optArr'] || [];
683
+ arr.forEach(function (each) {
684
+ each["checked"] && CheckedArr.push(each["value"]);
685
+ })
686
+ }
687
+ if(type == "complexFieldArr"){
688
+ let arr = vm.allSettingObj[vm.currentMenuId]['complexFieldArr'] || [];
689
+ arr.forEach(function (each) {
690
+ each["legendChecked"] && CheckedArr.push(each["legendValue"]);
691
+ (each["buttonArr"] || []).forEach(function (button) {
692
+ button["checked"] && CheckedArr.push(button["value"]);
693
+ })
694
+ })
695
+ }
696
+ vm.comPareOperation(CheckedArr);
697
+ vm.allSettingObj[vm.currentMenuId]['operation'] = CheckedArr.join(",");
698
+ vm.$forceUpdate();
699
+ },
700
+ comPareOperation(checkedArr){ // 比对当前选中的操作权限与初始化的操作权限增删情况
701
+ let vm = this;
702
+ let beforeOperation = (vm.currentRoleOptAll[vm.currentMenuId] || {})["operation"];
703
+ let beforeArr = (beforeOperation || "").split(",");
704
+ let addOperation = [];
705
+ let deleteOperation = [];
706
+ checkedArr.forEach(item => {
707
+ if(beforeArr.indexOf(item) == -1){
708
+ addOperation.push(item);
709
+ }
710
+ });
711
+ beforeArr.forEach(item => {
712
+ if(checkedArr.indexOf(item) == -1){
713
+ deleteOperation.push(item);
714
+ }
715
+ });
716
+ vm.operationAddObj[vm.currentMenuId] = addOperation.join(","); // 增加的操作权限
717
+ vm.operationDeleteObj[vm.currentMenuId] = deleteOperation.join(","); // 删除的操作权限
718
+ },
719
+
720
+ cdssChange(cdss){ // 菜单所属在切换时,要同时记下当前选中与取消的项目
721
+ let vm = this;
722
+ let checkedArr = vm.$refs.allowMenuSettingTreeRef.getTreeCheckedNodes("key"); // 菜单更改前树勾选的数据
723
+ let initCheckArr = vm.initCheck["initCheck"] || [];
724
+ // 对比
725
+ initCheckArr = initCheckArr.filter(item=>{ // item是菜单id
726
+ return (vm.menuAllBaseInfo[item] || {})["cdss"] != vm.lastCdss;
727
+ });
728
+ vm.initCheck["initCheck"] = initCheckArr.concat(checkedArr);
729
+ vm.lastCdss = cdss;
730
+ vm.currentMenuId = "";
731
+ },
732
+ operateSetting(data,collectObj){ // 操作权限设置
733
+ let vm = this;
734
+ vm.complexFieldArr = [];
735
+ vm.optArr=[];
736
+ vm.isNoSetting = false;
737
+ let alReadySet = "";
738
+ let settingObj = vm.allSettingObj[data.id] || vm.currentRoleOptAll[data.id]; // 当前的数据配置
739
+ /* if(vm.caseSup && !settingObj){ // 没有做过任何配置且是开发者登录,将全部按钮置入
740
+ settingObj = {"operation":vm.menuOptAll[data.id]};
741
+ }*/
742
+
743
+
744
+ if(!settingObj){
745
+ vm.isNoSetting = true;
746
+ }
747
+ !settingObj && (settingObj = {});
748
+ let currentOpt = vm.menuOptAll[data.id]; // 当前菜单的opt
749
+ vm.allSettingObj[data.id] = collectObj; // 后面操作collectObj这个对象就可以了
750
+
751
+
752
+ collectObj["enableOperation"] = true;
753
+ collectObj["checkAll"] = settingObj["checkAll"] || false;
754
+ collectObj["operation"] = settingObj["operation"] || "";
755
+ alReadySet = settingObj["operation"] || "";
756
+ let checkedArr = alReadySet ? alReadySet.split(","):[];
757
+ let menuType = data.menuType;
758
+ switch (menuType) {
759
+ case "系统功能":
760
+ case "自定义功能菜单":
761
+ let belong = "";
762
+ if(data.menuType == "系统功能"){
763
+ belong = data.menuXtgn;
764
+ }else{
765
+ belong = data.menuZdygncd;
766
+ }
767
+ vm.axios.post(vm.api.menuOpt.find,{"sscdid":belong}).then(function (res) {
768
+ res.data.forEach(function (opt) {
769
+ let obj = {};
770
+ let value = opt["czbm"];
771
+ if(opt.czbm == "diy"){
772
+ value = opt["czbm"] + "_" + opt["czlx"];
773
+ }
774
+ if(!(currentOpt && currentOpt.indexOf(value) == -1)){
775
+ obj["value"] = value;
776
+ obj["name"] = opt["czlx"];
777
+ obj["checked"] = (checkedArr.indexOf(value))> -1;
778
+ vm.optArr.push(obj);
779
+ }
780
+ collectObj["optArr"] = vm.optArr;
781
+ });
782
+ if(res.data.length == 0){ // 没有操作数据设置按钮禁用
783
+ vm.openOptDataDisable = true;
784
+ collectObj["openOptDataDisable"] = true;
785
+ }
786
+
787
+ vm.$forceUpdate();
788
+ if(vm.isNoSetting){
789
+ collectObj["checkAll"] = true;
790
+ vm.optAllChange(true);
791
+ }
792
+
793
+ });
794
+ break;
795
+ case "自定义单表表单":
796
+ if(currentOpt){
797
+ if(currentOpt.indexOf("view") > -1){
798
+ vm.optArr.push({"name":"仅查看","value":"view","checked":(checkedArr.indexOf("view"))> -1});
799
+ }
800
+ if(currentOpt.indexOf("update") > -1){
801
+ vm.optArr.push({"name":"可修改查看","value":"update","checked":(checkedArr.indexOf("update"))> -1});
802
+ }
803
+ }else{
804
+ vm.optArr.push({"name":"仅查看","value":"view","checked":(checkedArr.indexOf("view"))> -1});
805
+ vm.optArr.push({"name":"可修改查看","value":"update","checked":(checkedArr.indexOf("update"))> -1});
806
+ }
807
+ collectObj["optArr"] = vm.optArr;
808
+ if(vm.isNoSetting){
809
+ collectObj["checkAll"] = true;
810
+ vm.optAllChange(true);
811
+ }
812
+
813
+ break;
814
+ case "自定义表单":
815
+ case "自定义表单-VUE":
816
+ vm.axios.post("/formbuttonController/listNoPage",{"viewId":data.menuViewId}).then(function (res) {
817
+ res.data.forEach(function (button) {
818
+ let obj = {};
819
+ let value = vm.operateNameMap[button.buttonType];
820
+ if(vm.operateNameMap[button.buttonType] == "diy"){
821
+ value = vm.operateNameMap[button.buttonType] + "_" + button.buttonName;
822
+ }
823
+ if(!(currentOpt && currentOpt.indexOf(value) == -1)){ // 如果权限里当前值不存在则跳过
824
+ obj["value"] = value;
825
+ obj["name"] = button.buttonName;
826
+ obj["checked"] = (checkedArr.indexOf(value))> -1;
827
+ vm.optArr.push(obj);
828
+ }
829
+ collectObj["optArr"] = vm.optArr;
830
+ });
831
+ vm.$forceUpdate();
832
+ if(vm.isNoSetting){
833
+ collectObj["checkAll"] = true;
834
+ vm.optAllChange(true);
835
+ }
836
+
837
+ });
838
+ break;
839
+ case "复合视图":
840
+ case "复合视图-VUE":
841
+ let complexId = data.menuGzlId;
842
+ vm.axios.post(vm.api.complextab.findAllLinkData,{'viewId': complexId, 'sort': 'sort', 'order': '0'}).then(function (res) {
843
+ let result = res.data;
844
+ result.forEach(function (data) {
845
+ let complexTab = data.complexTab;
846
+ let value = "complexTab:" + complexTab.id;
847
+ if(!(currentOpt && currentOpt.indexOf(value) == -1)){
848
+ let obj = {};
849
+ let buttonArr = [];
850
+ let urlType = complexTab.urlType;
851
+ let linkData = data.linkData || [];
852
+ let lengendValue = "complexTab:"+complexTab.id;
853
+ obj["legendName"] = complexTab.tabName;
854
+ obj["legendValue"] = lengendValue;
855
+ obj["legendChecked"] = checkedArr.indexOf(lengendValue) > -1 ;
856
+ // 下面两个if可以合并为一个forEach,但是为了代码易读性暂不合并
857
+ if((urlType || "") .indexOf("自定义表单") > -1){
858
+ linkData.forEach(function (each) {
859
+ let optValue = "complex:" + complexTab.id + ":" + vm.operateNameMap[each["buttonType"]];
860
+ if(vm.operateNameMap[each["buttonType"]] == "diy"){
861
+ optValue += "_" + each["buttonName"];
862
+ }
863
+ if(!(currentOpt && currentOpt.indexOf(optValue) == -1)){
864
+ let buttonObj = {};
865
+ buttonObj["checked"] = checkedArr.indexOf(optValue) > -1;
866
+ buttonObj["value"] = optValue;
867
+ buttonObj["buttonName"] = each["buttonName"];
868
+ buttonArr.push(buttonObj);
869
+ }
870
+ })
871
+
872
+ }
873
+ if(urlType == "系统功能" || urlType =="自定义功能" || urlType == '自定义功能-VUE'){
874
+ linkData.forEach(function (each) {
875
+ let optValue = "complex:" + complexTab.id + ":" + each["czbm"];
876
+ if(!(currentOpt && currentOpt.indexOf(optValue) == -1)){
877
+ let buttonObj = {};
878
+ buttonObj["checked"] = checkedArr.indexOf(optValue) > -1;
879
+ buttonObj["value"] = optValue;
880
+ buttonObj["buttonName"] = each["czlx"];
881
+ buttonArr.push(buttonObj);
882
+ }
883
+ })
884
+ }
885
+ obj["buttonArr"] = buttonArr;
886
+ vm.complexFieldArr.push(obj);
887
+ collectObj["complexFieldArr"] = vm.complexFieldArr;
888
+ }
889
+ });
890
+ vm.$forceUpdate();
891
+ if(vm.isNoSetting){
892
+ collectObj["checkAll"] = true;
893
+ vm.optAllChange(true);
894
+ }
895
+ });
896
+ break;
897
+ default:
898
+ vm.openOptDataDisable = true;
899
+ collectObj["openOptDataDisable"] = true;
900
+ break;
901
+ }
902
+ },
903
+
904
+ //对外的保存方法
905
+ async save(){ // 保存人员,保存关联菜单,保存可分配菜单
906
+ let orgPosUserObj = this.saveOrgPosUser(); //保存关联人员
907
+ if(orgPosUserObj){
908
+ let allowMenuObj = await this.saveAllowMenu(); //保存关联菜单
909
+ let submitObj = Object.assign({},orgPosUserObj,allowMenuObj);
910
+
911
+ submitObj["roleId"] = this.currentRowObj.id;
912
+ this.axios.post(this.api.roleMenuOpt.saveAll,submitObj).then(res => {
913
+ this.$message({
914
+ duration: 1200,
915
+ type: "success",
916
+ message: res.data.operateMessage
917
+ });
918
+ this.$emit("closeSettingDialog");
919
+ });
920
+ }
921
+ },
922
+
923
+ //保存关联人员、组织、岗位
924
+ saveOrgPosUser(){
925
+ let vm = this;
926
+ let resultArr = [];
927
+ let levelChildrenOrgArr = []; //保存所有勾选的父级
928
+ let levelParentOrgArr = []; // 所有的父级数据
929
+ let typeArr = ["user","org","pos"];
930
+ typeArr.forEach(function (type) {
931
+ let arr = vm.$refs.staffSetRef.getCheckedInfo(type);
932
+ arr.forEach(function (data) {
933
+ data["roleType"] = type; // 设置角色类型
934
+ });
935
+ resultArr = resultArr.concat(arr);
936
+ });
937
+ let levelOrg = vm.$refs.staffSetRef.getCheckedInfo("levelOrg");
938
+ levelParentOrgArr = levelOrg[0]; // levelParentOrg
939
+ levelChildrenOrgArr = levelOrg[1]; // levelChildrenOrg
940
+ let levelChildrenOrgIds = []; // 级联隐藏数据id
941
+ let parentOrgIdArr = []; // 当前选中的父级数据的Ids
942
+ levelParentOrgArr.forEach(item => {
943
+ item["roleType"] = "levelParentOrg";
944
+ parentOrgIdArr.push(item.id);
945
+ });
946
+ levelChildrenOrgArr.forEach(item => {
947
+ item["roleType"] = "levelChildrenOrg";
948
+ levelChildrenOrgIds.push(item.id);
949
+ });
950
+ let newAttachArr = []; // 当前保存的数据归属集合
951
+ let newMap = {}; // 当前保存的所有数据集合
952
+
953
+ resultArr.forEach(function (data) {
954
+ if(levelParentOrgArr.indexOf(data.id) == -1){
955
+ newMap[data.id] = data;
956
+ newAttachArr.push(data.id);
957
+ }
958
+ });
959
+
960
+ let removeIdArr = []; // 删除的数据集合
961
+ let tempAttachArr = []; // 新增的数据集合
962
+ let removeEmpowerIdUserIdArr = []; // 移除用户时需要将用户的角色关联id去除EmpowerId
963
+ for(let [key] of Object.entries(vm.userMap)){ // 移除无效的用户归属,userMap用户旧归属合集,新归属不存在则移除
964
+ if(newAttachArr.indexOf(key) == -1){
965
+ removeIdArr.push(vm.userMap[key]);
966
+ removeEmpowerIdUserIdArr.push((vm.userDataMap[key] || {})["userId"]);
967
+ }
968
+ }
969
+ let tempArr = Object.keys(vm.userMap);
970
+ for(let [key,val] of Object.entries(newMap)){ // 原归属中已存在的,但当前选择的归属中不存在,则新增
971
+ if(tempArr.indexOf(key) == -1 && parentOrgIdArr.indexOf(key) == -1){
972
+ tempAttachArr.push(val);
973
+ }
974
+ }
975
+
976
+ let addAttachArr = [];
977
+ let tobj = {"org":"orgId","ogn":"orgId","dept":"orgId","pos":"posId","user":"userAttach"};
978
+ let addEmpowerIdUserIdArr = []; // 添加用户时需要将用户的角色关联id加上
979
+ tempAttachArr.forEach(function (data) {
980
+ if(data.roleType != "levelParentOrg" &&data.roleType != "levelChildrenOrg"){
981
+ let obj = {};
982
+ // 提交只需要几个有效属性,id->userAttach
983
+ obj["userAttach"] = data["id"];
984
+ if(data.nodeType){
985
+ obj[tobj[data.nodeType]] = data["id"];
986
+ }
987
+ obj["roleType"] = data.roleType;
988
+ obj["userId"] = data["userId"];
989
+ obj["roleId"] = vm.currentRowObj.id;
990
+ if(data["userId"]){
991
+ addEmpowerIdUserIdArr.push(data["userId"]);
992
+ }
993
+ addAttachArr.push(obj);
994
+ }
995
+ });
996
+
997
+
998
+ let addArr = [];
999
+ removeEmpowerIdUserIdArr.forEach(id =>{
1000
+ id && (addArr.push(id));
1001
+ });
1002
+
1003
+ //需要移除的下级部门子数据
1004
+ let removeArrOrg = [];
1005
+ for(let [key,value] of Object.entries(vm.caseDataMap)){
1006
+ //移除现在取消的组织
1007
+ if(levelChildrenOrgIds.indexOf(key) == -1){
1008
+ //不存在则需要删除
1009
+ removeArrOrg.push(value);
1010
+ }
1011
+ }
1012
+ removeIdArr = removeIdArr.concat(removeArrOrg);
1013
+
1014
+ //需要更新的原父级数据数据
1015
+ // let updateParentOrgKey = [];
1016
+ let removedateParentOrgKey = [];
1017
+ Object.keys(vm.caseDataParentData).forEach(key => {
1018
+ if(parentOrgIdArr.indexOf(key) == -1){
1019
+ removedateParentOrgKey.push(vm.caseDataParentData[key]);
1020
+ }
1021
+ });
1022
+
1023
+ //保存已经选中的数据
1024
+ let addLevelOrgArr = []; //保存开启上下级组织的信息
1025
+ levelChildrenOrgArr.forEach(function (data) {
1026
+ if(!vm.caseDataMap[data["id"]]){ // 新增
1027
+ let obj = {};
1028
+ // 提交只需要几个有效属性,
1029
+ obj["cascadeData"] = "true"; //这里我只保存已经选中的
1030
+ obj["userAttach"] = data["id"];
1031
+ if(data.nodeType){
1032
+ obj[tobj[data.nodeType]] = data["id"];
1033
+ }
1034
+ obj["roleType"] = data.roleType;
1035
+ obj["userId"] = data["userId"];
1036
+ obj["roleId"] = vm.currentRowObj.id;
1037
+ addLevelOrgArr.push(obj);
1038
+ }
1039
+ });
1040
+
1041
+ //保存所有的父级数据(后台直接执行更新方法)
1042
+ let updateLevelParentOrgArr = []; //后台批量更新父级数据
1043
+ levelParentOrgArr.forEach(function (data) {
1044
+ if(!vm.caseDataParentData[data["id"]]){
1045
+ let obj = {};
1046
+ //提交
1047
+ obj["cascadeData"] = "parent"; // 其中 cascadeData 为 parent 为了 区别子集数据
1048
+ obj["userAttach"] = data["id"];
1049
+ if(data.nodeType) {
1050
+ obj[tobj[data.nodeType]] = data["id"];
1051
+ }
1052
+ obj["roleType"] = data.roleType;
1053
+ obj["userId"] = data["userId"];
1054
+ obj["roleId"] = vm.currentRowObj.id;
1055
+ updateLevelParentOrgArr.push(obj);
1056
+ }
1057
+ });
1058
+
1059
+ return {"userList":JSON.stringify(addAttachArr),"removeRoleUserIds":removeIdArr.join(","),
1060
+ "removeEmpowerIdUserIds":addArr.join(","),"addEmpowerIdUserIds":addEmpowerIdUserIdArr.join(","),
1061
+ "leveParentOrgUserList":JSON.stringify(updateLevelParentOrgArr),"removeLevelOrgUserList":removedateParentOrgKey.join(","),
1062
+ "leveOrgUserList":JSON.stringify(addLevelOrgArr)
1063
+ };
1064
+ },
1065
+
1066
+ async saveAllowMenu(){ // 保存可分配菜单
1067
+ let vm = this;
1068
+ let allowMenu = []; // 实时获取拥有的菜单权限
1069
+ await vm.axios.post(vm.api.sysUser.getLoginMenuOptNow).then(resOpt=>{
1070
+ Object.keys(resOpt.data || {}).forEach(key => {
1071
+ allowMenu.push(key);
1072
+ })
1073
+ });
1074
+ /* 计算树所有的勾选数据id */
1075
+ let checkedArr = vm.$refs.allowMenuSettingTreeRef.getTreeCheckedNodes("key"); // 当前菜单树勾选的数据
1076
+
1077
+ let initCheckArr = vm.initCheck["initCheck"] || [];
1078
+ // 对比
1079
+ initCheckArr = initCheckArr.filter(item=>{ // item是菜单id
1080
+ return (vm.menuAllBaseInfo[item] || {})["cdss"] != vm.cdss;
1081
+ });
1082
+ vm.initCheck["initCheck"] = initCheckArr.concat(checkedArr);
1083
+ /* 结束 */
1084
+ /* 获取所有勾选菜单的基础信息 */
1085
+ let menuArr = []; // 勾选菜单的信息集合
1086
+ let keysArr = []; // 选中的所有menuIds
1087
+ let menuMap = {};
1088
+ vm.initCheck["initCheck"].forEach(menuId => {
1089
+ if(vm.loginUser.userType == 'dev' || vm.loginUser.userType == 'sup' || allowMenu.indexOf(menuId) > -1) {
1090
+ if (vm.menuAllBaseInfo[menuId]) {
1091
+ menuArr.push(vm.menuAllBaseInfo[menuId]);
1092
+ menuMap[menuId] = vm.menuAllBaseInfo[menuId];
1093
+ keysArr.push(menuId);
1094
+ }
1095
+ }
1096
+ });
1097
+
1098
+ let allArr = Object.keys(vm.currentRoleOptAll); // 原来保存的menuIds;
1099
+ let [removeArr,removeMenuArr,updateArr,addArr] = [[],[],[],[]];
1100
+ allArr.forEach(function (before) { // 需要移除与更新的数据
1101
+ if(keysArr.indexOf(before) == -1){ // remove
1102
+ removeArr.push(vm.currentRoleOptAll[before].id);
1103
+ removeMenuArr.push(before);
1104
+ }else{ // update
1105
+ updateArr.push(before);
1106
+ }
1107
+ });
1108
+ keysArr.forEach(function (after) { // 需要新增的数据
1109
+ if(allArr.indexOf(after) == -1){ // add
1110
+ addArr.push(after);
1111
+ }
1112
+ });
1113
+ /**
1114
+ * 修改权限时需要考虑到下级的同步,新增删除与修改
1115
+ * 菜单移除:将下级的权限全部移除,这是强制的
1116
+ * 菜单新增:提示框询问下级是否同步
1117
+ * 按钮权限在菜单权限的基础上进行,只有菜单权限新增修改进行,移除不操作
1118
+ * 按钮移除:下级全部移除
1119
+ * 按钮新增:提示
1120
+ * 这边主要通过PARENT_USER_TREE进行关联操作
1121
+ */
1122
+
1123
+ let [updateObjArr,addObjArr] = [[],[]];
1124
+ let [addOperationCollect,deleteOperationCollect,insertCollect] = [{},{},{}];
1125
+
1126
+ updateArr.forEach(function (update) {
1127
+ let setting = vm.allSettingObj[update]; // 需要更新的数据只有在打开过才执行更新,否则不变动
1128
+ if(setting){
1129
+ let temObj = {};
1130
+
1131
+ temObj["enableOperation"] = true;
1132
+ temObj["operation"] = setting["operation"] || "";
1133
+ temObj["dataPower"] = setting["dataPower"] || "";
1134
+ temObj["enableData"] = setting["enableData"] || "";
1135
+
1136
+ temObj["menuPath"] = menuMap[update]["menuPath"] || "";
1137
+ if(vm.currentRoleOptAll[update]){
1138
+ temObj["id"] = vm.currentRoleOptAll[update]["id"] || "";
1139
+ }
1140
+
1141
+ temObj["roleId"] = vm.currentRowObj.id;
1142
+ temObj["menuId"] = update;
1143
+ updateObjArr.push(temObj); // 更新的数据
1144
+
1145
+ if(vm.operationDeleteObj[update]){
1146
+ deleteOperationCollect[update] = vm.operationDeleteObj[update];
1147
+ }
1148
+ if(vm.operationAddObj[update]){
1149
+ addOperationCollect[update] = vm.operationAddObj[update];
1150
+ }
1151
+
1152
+ }
1153
+
1154
+
1155
+ });
1156
+ addArr.forEach(function (add) {
1157
+ let setting = vm.allSettingObj[add];
1158
+ let temObj = {};
1159
+ temObj["enableOperation"] = true;
1160
+ if(setting){ // 有配置
1161
+ temObj["operation"] = setting["operation"] || "";
1162
+ temObj["dataPower"] = setting["dataPower"];
1163
+ temObj["enableData"] = setting["enableData"];
1164
+ }else{ // 都不配置
1165
+ temObj["operation"] = vm.menuOptAll[add];
1166
+ temObj["enableData"] = false;
1167
+ temObj["dataPower"] = "";
1168
+ }
1169
+
1170
+ insertCollect[add] = temObj["operation"] || "";
1171
+ temObj["id"] = "";
1172
+ temObj["roleId"] = vm.currentRowObj.id;
1173
+ temObj["menuId"] = add;
1174
+ temObj["menuPath"] = menuMap[add]["menuPath"] ||"";
1175
+ addObjArr.push(temObj);
1176
+
1177
+ });
1178
+ let menuNameArr = [];
1179
+ menuArr.forEach(function (each) { // 更新拥有的菜单
1180
+ menuNameArr.push(each["menuName"]);
1181
+ });
1182
+ return {"remark":menuNameArr.join(","),
1183
+ "removeIds":removeArr.join(","),
1184
+ "updateObj":JSON.stringify(updateObjArr),"addObj":JSON.stringify(addObjArr),
1185
+ "addOperationCollect":JSON.stringify(addOperationCollect),
1186
+ "removeMenuIds":removeMenuArr.join(","),
1187
+ "insertCollect":JSON.stringify(insertCollect),
1188
+ };
1189
+ },
1190
+
1191
+ setToArray(set){ // set转array
1192
+ let arr = [];
1193
+ for(let item of set.keys()){
1194
+ arr.push(item);
1195
+ }
1196
+ return arr;
1197
+ },
1198
+
1199
+ //添加关联人员弹出窗
1200
+ addSelectUser(){
1201
+ let vm = this;
1202
+ vm.currenTime = new Date().getTime() + "";
1203
+
1204
+ vm.refreshUserDialog =true;
1205
+
1206
+ vm.chooseDialogVisible = true;
1207
+ },
1208
+
1209
+ //保存已经选中的人员弹窗数据
1210
+ saveSelect(){ // 保存已选择的组织人员岗位
1211
+ let vm = this;
1212
+ let typeObj = {"org":"orgName","pos":"posName","user":"userName"};
1213
+ let nameObj = {"org":"组织","pos":"岗位","user":"用户"};
1214
+ let chooseIdsArr = [];
1215
+ let chooseDataArr = [];
1216
+ Object.keys(typeObj).forEach(function (type) {
1217
+ let arr = vm.$refs.posUserSelectRef.getCheckedInfo(type);
1218
+ arr.forEach(function (each) {
1219
+ let obj = {};
1220
+ let name = each[typeObj[type]];
1221
+ obj["name"] = name;
1222
+ obj["dataId"] = each["id"];
1223
+ obj["type"] = type;
1224
+ obj["checked"] = true;
1225
+ obj["link"] = false;
1226
+ obj["showName"] = "[" + nameObj[type] + "]" + name;
1227
+ if(name.indexOf("-") > -1){
1228
+ let tempArr =name.split("-");
1229
+ obj["showName"] = "[" + nameObj[type] + "]" + tempArr[tempArr.length - 1];
1230
+ }
1231
+ if(obj["showName"].length>11){
1232
+ obj["showName"] = obj["showName"].substring(0,11) + "...";
1233
+ }
1234
+ chooseIdsArr.push(obj["dataId"]);
1235
+ chooseDataArr.push(obj);
1236
+ })
1237
+ });
1238
+ let tempArr =[];
1239
+ chooseDataArr.forEach(function (each) {
1240
+ tempArr.push(each["name"] + ":" + each["dataId"] + ":" + each["type"] + ":" + each["link"]);
1241
+ });
1242
+ vm.allSettingObj[vm.currentMenuId]["dataPower"] = tempArr.join(",");
1243
+ vm.allSettingObj[vm.currentMenuId]["chooseDataArr"] = chooseDataArr;
1244
+ vm.allSettingObj[vm.currentMenuId]["chooseIds"] = chooseIdsArr.join(",");
1245
+ vm.chooseDialogVisible = false;
1246
+ },
1247
+
1248
+
1249
+ //删除关联人员弹出窗
1250
+ removePosUser(){ // 删除选中的岗位组织用户信息
1251
+ let vm = this;
1252
+ let allArr = vm.allSettingObj[vm.currentMenuId]["chooseDataArr"] || [];
1253
+ let checkedArr = [];
1254
+ allArr.forEach(function (each) {
1255
+ if(each["checked"]){
1256
+ checkedArr.push(each["dataId"]);
1257
+ }
1258
+ });
1259
+ if(checkedArr.length==0){
1260
+ vm.$message({
1261
+ message:"请至少选择一条需要删除的数据!",
1262
+ duration:1500
1263
+ });
1264
+ return;
1265
+ }
1266
+ vm.$confirm('是否确定删除选中的'+checkedArr.length+'条数据?', '警告', {
1267
+ confirmButtonText: '确定',
1268
+ cancelButtonText: '取消',
1269
+ }).then(function () {
1270
+ allArr = allArr.filter(each => {
1271
+ return checkedArr.indexOf(each["dataId"]) == -1;
1272
+ });
1273
+ let tempArr = [];
1274
+ let chooseIdsArr = [];
1275
+ allArr.forEach(function (each) {
1276
+ chooseIdsArr.push(each["dataId"]);
1277
+ tempArr.push(each["name"] + ":" + each["dataId"] + ":" + each["type"] + ":" + each["link"]);
1278
+ });
1279
+ vm.allSettingObj[vm.currentMenuId]["dataPower"] = tempArr.join(",");
1280
+ vm.allSettingObj[vm.currentMenuId]["chooseDataArr"] = allArr;
1281
+ vm.allSettingObj[vm.currentMenuId]["chooseIds"] = chooseIdsArr.join(",");
1282
+ vm.$forceUpdate();
1283
+ });
1284
+ },
1285
+
1286
+
1287
+ powerChange(checked){
1288
+ let vm = this;
1289
+ (vm.allSettingObj[vm.currentMenuId]['chooseDataArr'] || []).forEach(function (each) {
1290
+ each["checked"] = checked;
1291
+ });
1292
+ vm.changeDataPower();
1293
+ },
1294
+ forceUpdate(checked){
1295
+ this.$forceUpdate();
1296
+ },
1297
+
1298
+
1299
+ //添加弹窗数据变更
1300
+ changeDataPower(){ // 数据权限变更
1301
+ let vm = this;
1302
+ let isSelectAll = true;
1303
+
1304
+ let tempArr =[];
1305
+ (vm.allSettingObj[vm.currentMenuId]['chooseDataArr'] || []).forEach(function (each) {
1306
+ if(!each["checked"]){
1307
+ //存在没有选中的 全选去除
1308
+ isSelectAll = false;
1309
+ }
1310
+ each["checked"] && tempArr.push(each["name"] + ":" + each["dataId"] + ":" + each["type"] + ":" + each["link"]);
1311
+ });
1312
+ vm.allDataPower = isSelectAll;
1313
+
1314
+ vm.$forceUpdate();
1315
+
1316
+ vm.allSettingObj[vm.currentMenuId]["dataPower"] = tempArr.join(",");
1317
+ },
1318
+
1319
+
1320
+
1321
+ }
1322
+ }
1323
+ </script>
1324
+
1325
+ <style scoped>
1326
+ .clearfix{
1327
+ line-height: 25px;
1328
+ text-align: left;
1329
+ }
1330
+ .aside-tree{
1331
+ width:380px;
1332
+ height: calc(100% - 80px);
1333
+ float: left;
1334
+ padding:0 5px;
1335
+ box-sizing: border-box;
1336
+ }
1337
+
1338
+ .aside-tree /deep/ .model-color span{
1339
+ font-size: 16px;
1340
+ }
1341
+
1342
+ .aside-tree /deep/ .el-tree > .el-tree-node > .el-tree-node__content{ /* 选中第一级菜单 */
1343
+ background-color:#1A598A;
1344
+ text-decoration: none;
1345
+ border: 1px silver solid;
1346
+ color:#fff;
1347
+ /*text-align: center;*/
1348
+ height: 35px;
1349
+ }
1350
+
1351
+ .opt-button-class{
1352
+ float: left;
1353
+ height: 20px;
1354
+ line-height: 20px;
1355
+ margin: 10px 10px 0 0;
1356
+ border: 1px solid rgb(235, 238, 245);
1357
+ padding: 5px 15px;
1358
+ text-align: center;
1359
+ }
1360
+ .opt-button-class /deep/ .el-checkbox{
1361
+ height: 20px;
1362
+ line-height: 20px;
1363
+ }
1364
+
1365
+ .opt-button-class /deep/ .el-checkbox{
1366
+ height: 20px;
1367
+ line-height: 20px;
1368
+ }
1369
+
1370
+ .opt-button-class /deep/ .el-checkbox__label{
1371
+ color: white;
1372
+ }
1373
+ .opt-button-class{
1374
+ background-color: #409EFF;
1375
+ }
1376
+
1377
+
1378
+ .opt-button-no-class{
1379
+ float: left;
1380
+ height: 20px;
1381
+ line-height: 20px;
1382
+ margin: 10px 10px 0 0;
1383
+ border: 1px solid rgb(235, 238, 245);
1384
+ padding: 5px 15px;
1385
+ text-align: center;
1386
+ }
1387
+
1388
+
1389
+ .opt-card-class /deep/ .el-checkbox{
1390
+ height: 20px;
1391
+ line-height: 20px;
1392
+ }
1393
+
1394
+ .opt-card-class{
1395
+ width: 250px;
1396
+ float: left;
1397
+ height: 20px;
1398
+ line-height: 20px;
1399
+ margin: 10px 10px 0 0;
1400
+ border: 1px solid rgb(235, 238, 245);
1401
+ padding: 5px 15px;
1402
+ text-align: center;
1403
+ }
1404
+ .opt-card-class /deep/ .el-checkbox{
1405
+ height: 20px;
1406
+ line-height: 20px;
1407
+ }
1408
+
1409
+ .opt-card-class /deep/ .el-checkbox__label{
1410
+ color: white;
1411
+ }
1412
+ .opt-card-class{
1413
+ background-color: #409EFF;
1414
+ }
1415
+
1416
+ .opt-card-no-class{
1417
+ width: 250px;
1418
+ float: left;
1419
+ height: 20px;
1420
+ line-height: 20px;
1421
+ margin: 10px 10px 0 0;
1422
+ border: 1px solid rgb(235, 238, 245);
1423
+ padding: 5px 15px;
1424
+ text-align: center;
1425
+ }
1426
+
1427
+ .opt-card-class .el-checkbox{
1428
+ line-height: 20px;
1429
+
1430
+ }
1431
+
1432
+
1433
+ fieldset{
1434
+ border: 1px solid #EBEEF5;
1435
+ border-radius: 5px;
1436
+ height: 100%;
1437
+ box-sizing: border-box;
1438
+ padding-left: 20px;
1439
+ }
1440
+ legend{
1441
+ height: 30px;
1442
+ line-height: 30px;
1443
+ }
1444
+
1445
+ .role-menu-contain /deep/ .el-tabs__item{
1446
+ font-size: 16px;
1447
+ }
1448
+
1449
+ .role-menu-contain /deep/ .el-tabs__nav-scroll{
1450
+ padding: 0 20px;
1451
+ }
1452
+
1453
+
1454
+ .comomSettiingStyle{
1455
+ height: 100%;
1456
+ width: calc(100% - 20px);
1457
+ float: left;
1458
+ box-sizing: border-box;
1459
+ padding-right: 5px
1460
+ }
1461
+ .opt-div-class{
1462
+ float: right;
1463
+ width: calc(100% - 380px);
1464
+ box-sizing: border-box;
1465
+ height: 100%;
1466
+ }
1467
+
1468
+ .role-menu-opt-card{
1469
+ height: 100%;
1470
+ }
1471
+
1472
+ .role-menu-opt-card-card /deep/ .el-checkbox__label{
1473
+ color: black;
1474
+ }
1475
+
1476
+
1477
+ .role-menu-opt-card /deep/ >.el-card__header{
1478
+ padding: 0;
1479
+ }
1480
+
1481
+ legend /deep/ .el-checkbox__input.is-checked+.el-checkbox__label{
1482
+ color: black!important;
1483
+ }
1484
+ .tab-contain{
1485
+ height: 100%;
1486
+ width: calc(100% - 300px);
1487
+ float: left;
1488
+ box-sizing: border-box;
1489
+ padding-right: 5px;
1490
+ }
1491
+ .tab-header{
1492
+ line-height: 25px;
1493
+ border-bottom: 1px solid #c2c2c2;
1494
+ font-size: 16px;
1495
+ }
1496
+
1497
+ .opt-div-class /deep/ .el-card__body{
1498
+ height: calc(100% - 30px);
1499
+ overflow-y: auto;
1500
+ }
1501
+
1502
+
1503
+ fieldset{
1504
+ border: 1px solid #EBEEF5;
1505
+ border-radius: 5px;
1506
+ height: 100%;
1507
+ box-sizing: border-box;
1508
+ padding-left: 20px;
1509
+ }
1510
+ legend{
1511
+ height: 30px;
1512
+ line-height: 30px;
1513
+ }
1514
+ .link-contain{
1515
+ height: 100%;
1516
+ width: 300px;
1517
+ float: right;
1518
+ box-sizing: border-box;
1519
+ border-left: 1px solid #c2c2c2;
1520
+ padding-left: 5px;
1521
+ }
1522
+ .link-header{
1523
+ line-height: 25px;
1524
+ border-bottom: 1px solid #c2c2c2;
1525
+ font-size: 16px;
1526
+ }
1527
+ .link-tabs /deep/ .el-tabs__item{
1528
+ font-size: 16px;
1529
+ }
1530
+
1531
+
1532
+
1533
+ .opt-div-class /deep/ .el-checkbox__input.is-checked+.el-checkbox__label{
1534
+ color: white;
1535
+ }
1536
+
1537
+ .opt-div-class /deep/ .el-checkbox, .el-checkbox-button__inner{
1538
+ color: white;
1539
+ }
1540
+
1541
+ .opt-div-class /deep/ .el-checkbox__inner{
1542
+ background-color: white;
1543
+ }
1544
+ .clearfix /deep/ .el-checkbox__input.is-checked+.el-checkbox__label{
1545
+ color: black;
1546
+ }
1547
+ .clearfix /deep/ .el-checkbox, .el-checkbox-button__inner{
1548
+ color: black;
1549
+ }
1550
+
1551
+ .opt-div-class /deep/ .el-checkbox__inner::after{
1552
+ border: 1px solid #409EFF;
1553
+ border-left: 0;
1554
+ border-top: 0;
1555
+ }
1556
+
1557
+
1558
+ .dataRoleStyle{
1559
+ width: 200px;
1560
+ height: 50px;
1561
+
1562
+ position: relative;
1563
+ float: left;
1564
+ margin: 10px 10px 10px 0;
1565
+ padding: 0 5px
1566
+ }
1567
+
1568
+ .el-checkbox__label {
1569
+ display: inline;
1570
+ }
1571
+
1572
+ .el-checkbox, .el-checkbox__input {
1573
+ white-space: normal;
1574
+ }
1575
+
1576
+ </style>