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,1402 @@
1
+ <template>
2
+ <div style="height: 100%;width: 100%;" class="bodydiv">
3
+ <el-container class="select-user-box" style="height: 100%;box-sizing: border-box;overflow-y: hidden;background:none;">
4
+ <el-container class="select-body" :style="{'box-sizing': 'border-box','height': activeName == '1' ? 'calc(100% - 200px)' : 'calc(100% - 40px)'}">
5
+ <el-aside class="asideTree" v-if="userEnable" style="border: none;">
6
+ <div style="background-image: linear-gradient(180deg, rgba(1,245,255,0.00) 0%, rgba(1,245,255,0.10) 100%);border: 1px solid rgb(1, 245, 255, 0.2);height:96%;padding: 10px;">
7
+ <el-select v-model="currentDim" style="width: 100%;" @change="dimChange" size="small" :disabled="disabledDim">
8
+ <el-option v-for="item in dimArr" :value="item.id" :key="item.id" :label="item.dimName">
9
+
10
+ </el-option>
11
+ </el-select>
12
+ <el-input :placeholder="searchPlaceholder" v-model="filterTree" style="margin-top: 5px;" size="small"></el-input>
13
+ <div style="overflow-y: auto;height: calc(100% - 90px);margin-top: 5px;background: none;">
14
+ <common-tree style="background: none;" v-if="showTree" ref="orgSelectTree" :request-url="api.sysOrg.listNopageDim" :request-param="orgSearchParam"
15
+ parent-id="pId" :default-props="defaultProps" :deal-tree-data="dealTreeData" :init-call-back="initExpandOrignOrg"
16
+ :refresh-proper="currentDim" :checkbox="checkbox&&ognEnable" :expand-onclick-node=false :checkel-tree-change="checkelTreeChange"
17
+ :filter-text="filterTree" :node-click="nodeClick" :root-datas="posArr" :root-data-concat-sort=true :init-check="initCheck"
18
+ :render-content-func="renderContentFunc" :tree-node-expand="treeNodeExpand" :tree-node-collapse="treeNodeCollapse"
19
+ :filter-text-call-back="filterTextCallBack">
20
+ </common-tree>
21
+ </div>
22
+ </div>
23
+ </el-aside>
24
+ <el-main class="mainTree" v-if="!userEnable">
25
+ <el-select v-model="currentDim" style="width: 100%;" @change="dimChange" size="small">
26
+ <el-option v-for="item in dimArr" :value="item.id" :key="item.id" :label="item.dimName">
27
+
28
+ </el-option>
29
+ </el-select>
30
+ <el-input :placeholder="searchPlaceholder" v-model="filterTree" style="margin-top: 5px" size="small"></el-input>
31
+ <div style="overflow-y: auto;height: calc(100% - 90px);margin-top: 5px">
32
+ <common-tree v-if="showTree" ref="orgSelectTree" :request-url="api.sysOrg.listNopageDim" :request-param="orgSearchParam"
33
+ parent-id="pId" :default-props="defaultProps" :deal-tree-data="dealTreeData" :init-call-back="initExpandOrignOrg"
34
+ :refresh-proper="currentDim" :checkbox="checkbox" :expand-onclick-node=false :checkel-tree-change="checkelTreeChange"
35
+ :filter-text="filterTree" :node-click="nodeClick" :root-datas="posArr" :root-data-concat-sort=true :init-check="initCheck"
36
+ :render-content-func="renderContentFunc" :tree-node-expand="treeNodeExpand" :tree-node-collapse="treeNodeCollapse"
37
+ :filter-text-call-back="filterTextCallBack"
38
+
39
+ >
40
+
41
+ </common-tree>
42
+
43
+ </div>
44
+ </el-main>
45
+ <el-main class="detail-info" v-show="userEnable">
46
+ <el-container style="height: 100%">
47
+ <el-header style="height: auto;padding-left: 0;background: none;">
48
+ <div class="search-form-parent el-card" style="margin-top: 0;background: none;border: none;padding:0;" >
49
+ <el-form :inline="true" :model="crud.searchForm" @submit.native.prevent size="small" class="demo-form-inline"
50
+ @keyup.enter.native="doSearch()" onSubmit="return false;">
51
+ <el-form-item label="用户名称">
52
+ <el-input v-model="crud.searchForm.userNamePinYin" placeholder="中文、拼音全拼、简拼"></el-input>
53
+ </el-form-item>
54
+ <el-form-item>
55
+ <el-button style="background: rgba(1, 245, 255, 0.56);border: none;" type="primary" icon="el-icon-search" @click="doSearch()">查询</el-button>
56
+ <el-button style="background: rgb(1, 245, 255,0.18);color:#ffffff;border: none;" icon="el-icon-close" @click="resetSearch()">清空</el-button>
57
+ </el-form-item>
58
+ </el-form>
59
+ </div>
60
+ </el-header>
61
+
62
+ <el-main id="tableMain" style="height:100%;width: 100%;padding-bottom: 10px;padding-left: 0">
63
+ <el-table :data="crud.dataStore.records" :ref="crud.tableRef" @select="tableSelect" :class="checkbox?'':'pos-user-table'"
64
+ @selection-change="selectChange" style="width: 100%;height: 100%;border: 1px solid rgb(1, 245, 255,0.2);" @row-click="rowClick">
65
+ <el-table-column type="selection" width="45" align="center"></el-table-column>
66
+ <el-table-column type="index" label="序号" align="center" width="60"></el-table-column>
67
+ <el-table-column prop="userName" label="用户名称" align="center"></el-table-column>
68
+ <el-table-column prop="orgName" label="所属组织" align="center"></el-table-column>
69
+ <el-table-column prop="posName" label="所属岗位" align="center"></el-table-column>
70
+ </el-table>
71
+ </el-main>
72
+ <el-footer style="height: 40px">
73
+ <el-pagination
74
+ :ref="crud.pageRef"
75
+ :page-sizes="crud.pageSizes"
76
+ :page-size="crud.pageSize"
77
+ :current-page="crud.page"
78
+ :total="crud.dataStore.total"
79
+ @size-change="crud.sizeChange(checkSelected)"
80
+ @current-change="crud.currentPage(checkSelected)"
81
+ layout="total, sizes, prev, pager, next, jumper">
82
+ </el-pagination>
83
+ </el-footer>
84
+ </el-container>
85
+ </el-main>
86
+ </el-container>
87
+ <el-footer :style="{'height':activeName == '1' ? '200px':'40px','box-sizing': 'border-box'}" class="select-footer">
88
+ <el-collapse accordion v-model="activeName">
89
+ <el-collapse-item name="1">
90
+ <template slot="title">
91
+ <i class="saspiconfont pl-icon-yonghu2" style="margin:0 5px 0 10px"></i>已选择信息
92
+ </template>
93
+ <el-row style="height: 160px;overflow-y: auto;box-sizing: border-box;margin-bottom: 0" class="selectRow">
94
+ <el-col :span="blockLength" v-if="ognEnable">
95
+ <!--<fieldset>
96
+ <legend>已选择组织({{checkedOrg.length}})</legend>
97
+ <div class="alreadyChoose">
98
+ <el-tooltip effect="dark" content="点击删除" placement="top-end" v-for="(org,index) in checkedOrg" :key="index">
99
+ <el-button @click="removeOgn(org.id)" plain type="primary" size="small">
100
+ {{org.name}}
101
+ </el-button>
102
+ </el-tooltip>
103
+ </div>
104
+ </fieldset>-->
105
+ <div class="yxzxxdiv">
106
+ <div class="yxzxxtitle">
107
+ 已选择组织({{checkedOrg.length}})
108
+ </div>
109
+ <div style="padding-top: 5px;">
110
+ <el-tooltip effect="dark" content="点击删除" placement="top-end" v-for="(org,index) in checkedOrg" :key="index">
111
+ <el-button @click="removeOgn(org.id)" plain type="primary" size="small">
112
+ {{org.name}}
113
+ </el-button>
114
+ </el-tooltip>
115
+ </div>
116
+ </div>
117
+ </el-col>
118
+ <el-col :span="blockLength" v-if="posEnable">
119
+ <!--<fieldset>
120
+ <legend>已选择岗位({{checkedPos.length}})</legend>
121
+ <div class="alreadyChoose">
122
+ <el-tooltip effect="dark" content="点击删除" placement="top-end" v-for="(pos,index) in checkedPos" :key="index">
123
+ <el-button @click="removePos(pos.id)" plain type="primary" size="small">
124
+ {{pos.name}}
125
+ </el-button>
126
+ </el-tooltip>
127
+ </div>
128
+ </fieldset>-->
129
+ <div class="yxzxxdiv">
130
+ <div class="yxzxxtitle">
131
+ 已选择岗位({{checkedPos.length}})
132
+ </div>
133
+ <div style="padding-top: 5px;">
134
+ <el-tooltip effect="dark" content="点击删除" placement="top-end" v-for="(pos,index) in checkedPos" :key="index">
135
+ <el-button @click="removePos(pos.id)" plain type="primary" size="small">
136
+ {{pos.name}}
137
+ </el-button>
138
+ </el-tooltip>
139
+ </div>
140
+ </div>
141
+ </el-col>
142
+ <el-col :span="blockLength" v-if="userEnable">
143
+ <!--<fieldset>
144
+ <legend>已选择用户({{checkedUser.length}})</legend>
145
+ <div class="alreadyChoose">
146
+ <el-tooltip effect="dark" content="点击删除" placement="top-end" v-for="(posUser,index) in checkedUser" :key="index">
147
+ <el-button @click="removePosUser(posUser.id)" plain type="primary" size="small">
148
+ {{posUser.name}}
149
+ </el-button>
150
+ </el-tooltip>
151
+ </div>
152
+ </fieldset>-->
153
+ <div class="yxzxxdiv">
154
+ <div class="yxzxxtitle">
155
+ 已选择用户({{checkedUser.length}})
156
+ </div>
157
+ <div style="padding-top: 5px;">
158
+ <el-tooltip effect="dark" content="点击删除" placement="top-end" v-for="(posUser,index) in checkedUser" :key="index">
159
+ <el-button @click="removePosUser(posUser.id)" plain type="primary" size="small">
160
+ {{posUser.name}}
161
+ </el-button>
162
+ </el-tooltip>
163
+ </div>
164
+ </div>
165
+ </el-col>
166
+ </el-row>
167
+ </el-collapse-item>
168
+ </el-collapse>
169
+ </el-footer>
170
+ </el-container>
171
+ </div>
172
+
173
+ </template>
174
+
175
+ <script>
176
+ /**
177
+ * 使用当前人员选择组件时,在保存时获取的数据为,已选择的岗位:checkedPos,已选择的组织:checkedOrg,已选择的用户:checkedUser(posUser)
178
+ * 使用getCheckedInfo方法获取。
179
+ */
180
+ export default {
181
+ name: "sys-org-pos-user-select-dark",
182
+ props:{
183
+ chooseUrl:{type:String,default:""}, // 已选择信息的url
184
+ chooseParam:{type:Object,default:() => ({})}, // 已选择信息的url参数
185
+ chooseField:{type:String,default:""}, // 获取已选择信息对应的字段
186
+ orgDims:{type:String,default:""}, // 逗号分隔的维度字符串,也就是roleType
187
+ orgTreeIds:{type:String,default:""}, // 过滤组织的条件
188
+ defaultChooseIds:{type:String,default:""}, // 已选择的人员信息
189
+ defaultOrgIds:{type:String,default:""},
190
+ defaultPosIds:{type:String,default:""},
191
+ defaultUserIds:{type:String,default:""},
192
+ ognEnable:{type:Boolean,default:true}, // 组织可用
193
+ posEnable:{type:Boolean,default:true}, // 岗位可用
194
+ userEnable:{type:Boolean,default:true}, // 人员可用
195
+ filterUserSource:{type:String,default:""}, // 限定用户来源
196
+ checkbox:{type:Boolean,default:true}, // 复选(true)、单选(false)
197
+ refreshProper:{type:Boolean,default:false}, // 刷新当前组件的办法(true为刷新,false为不刷新)
198
+ filterUserParam:{type:Object,default:() => ({})}, // 查询用户时需要过滤的额外条件
199
+ caseAuth:{type:Boolean,default:false}, // 如果是授权角色的人员设置需要在移除人员时做提示
200
+ openLowLevelCheckbox:{type:Boolean,default:false},//是否开启组织下级权限复选框
201
+ filterOrgParam:{}, // 过滤组织数据
202
+ filterPosParam:{}, // 过滤岗位数据
203
+
204
+ tenantId:{type:String,default:""}, //租户id
205
+ tenantCreated:{type:String,default:''}, //租户创建者
206
+ },
207
+
208
+ data(){
209
+ return {
210
+ crud: new this.CrudUtil({
211
+ vue: this,
212
+ entityName: "sysOrgPosUser",
213
+ searchUrl: this.api.sysOrgPosUser.findPageParam,
214
+ noClearSearchColumns:["orgTreeId","posTreeId","noneUserId","authUserType",
215
+ "created","empowerId","commonUserType","filterUserSource","userLinkIdPam",'filterLoginUser','tenantId'],
216
+ searchForm:{"orgTreeId":"$$$$$","tenantId":this.tenantId}, // 初始化时虽然不会产生数据因为nosearch,但是输入跳转会触发搜索,当前没条件就会生成所有数据,加上这个不查数据,树节点点击时清空它了
217
+ initNoSearch:true,
218
+ }),
219
+ defaultProps:{children: 'children', label: 'name'}, // 树组件的配置信息
220
+ chooseIds:"", // 已选择数据ids
221
+ chooseOrgIds:"",
222
+ choosePosIds:"",
223
+ chooseUserIds:"",
224
+ dimArr:[], // 维度集合
225
+ currentDim:"", // 当前维度
226
+ searchPlaceholder:"组织名称",
227
+ showTree:false, // 树组件的加载时机
228
+ highlightcurrentKey:"", // 高亮选中项的key
229
+ filterTree:"", // 搜索框过滤
230
+ activeName:"0", // 默认展开的折叠面板
231
+ checkedOrg:[],
232
+ checkedPos:[],
233
+ checkedUser:[],
234
+ blockLength:8, // 已选择信息各个块的宽度
235
+ posArr:[], // 岗位数据
236
+ availabelLength:0, // 可用的模块(组织,列表,岗位)
237
+ initCheck:{}, // 初始化选中的数据
238
+ defaultDim:"", // 初始化默认维度
239
+ orgSearchParam:{},
240
+ posSearchParam:{"sort":"TB.PARENT_POS_ID,TB.SORT"},
241
+ pageSetting:{}, // 页面配置参数
242
+ userDeptDimId:"", // 企业部门id
243
+ loginUser:{}, // 登录用户
244
+ refreshTableId:"", // 刷新当前table的办法
245
+ roleTypeMap:{}, // 权限名称对应的map
246
+ roleTypeName:"", // 政府权限
247
+
248
+ //节点位置
249
+ levelParentOrg:[], // 保存所有的父节点数据
250
+ levelChildrenOrg:[], // 保存所有的子节点数据
251
+ chooseCascadeDataIds:"", // 保存所有开启下级权限的子集数据 id
252
+ chooseCascadeParentDataIds:"",// 保存所有开启下级权限的父级数据id
253
+ isChecked:{},
254
+ expandOrignArr:[], // 保存一级组织Id数组
255
+ stopChange:false, // 阻止节点change事件
256
+ entOrgDim:"",
257
+
258
+ tenantOrgId:'',
259
+ disabledDim:false,
260
+ tenantDim:'',//租户维度
261
+ }
262
+ },
263
+ created(){
264
+ let vm = this;
265
+ if(!vm.tenantId){
266
+ vm.disabledDim = true;
267
+ }
268
+ vm.loginUser = vm.USER_GLOBAL.getLoginUser() || {};
269
+ vm.axios.post(vm.api.param.getSysParams,{"key":"userDimension"}).then(function (res) {
270
+ let sysParamObj = res.data;
271
+ // vm.entOrgDim = JSON.parse(vm.platStringUtil.replaceAll(sysParamObj["sysEntDim.id"],"'","\"") || "{}");;
272
+ vm. roleTypeMap= JSON.parse(vm.platStringUtil.replaceAll(sysParamObj,"'","\"") || "{}");
273
+ vm.init();
274
+ });
275
+ /*vm.axios.post("/sysParamController/getPropertiesParams",{"key":"sysEntDim.id"}).then(function (res) {
276
+ vm.entOrgDim = res.data;
277
+ vm.axios.post("/sysParamController/getSysParams",{"key":"userDimension"}).then(function (res) {
278
+ vm.roleTypeMap = JSON.parse(vm.platStringUtil.replaceAll(res.data.paramVal,"'","\"") || "{}");
279
+ vm.init();
280
+ });
281
+ });*/
282
+ },
283
+ watch:{
284
+ refreshProper(){
285
+ if(!this.refreshProper){
286
+ return;
287
+ }
288
+ this.$refs.orgSelectTree && this.$refs.orgSelectTree.setTreeCurrentKey(null); // 刷新时不选中节点
289
+ this.crud.searchForm["orgTreeId"] = "$$$$$";
290
+ this.crud.search();
291
+ this.init();
292
+ },
293
+ refreshTableId(){ // orgId变化时刷新右边的table内容
294
+ let vm = this;
295
+ let searchForm = vm.crud.searchForm;
296
+ let data = vm.$refs.orgSelectTree.getTreeCurrentNode() || {};
297
+ searchForm["orgTreeId"] = "";
298
+ searchForm["posTreeId"] = "";
299
+ searchForm["page"] = 1;
300
+ searchForm["filterUserSource"] = vm.filterUserSource;
301
+ vm.$refs[vm.crud.setting.pageRef]["internalCurrentPage"] = 1;
302
+ if(vm.currentdim != vm.entorgdim){ // 不等于entorgdim企业部门纬度
303
+ vm.crud.searchform = object.assign({},searchform,vm.pagesetting["userselectdefaultparams"])
304
+ }
305
+ vm.crud.searchForm = Object.assign({},searchForm,(vm.filterUserParam || {}));
306
+ if(data["nodeType"] == 'pos'){
307
+ vm.crud.searchForm["posTreeId"] = data["id"];
308
+ }else{
309
+ vm.crud.searchForm["orgTreeId"] = data["id"] || "$$$$$";
310
+ }
311
+ // if(vm.currentDim == vm.entOrgDim && vm.filterUserParam['authUserType'] != 'empower'){
312
+ // vm.crud.searchForm["userLinkIdPam"]="entDept";
313
+ // }
314
+ if(vm.tenantId){
315
+ vm.crud.searchForm["tenantId"] = vm.tenantId;
316
+ }
317
+ vm.crud.search(vm.checkSelected);
318
+ }
319
+ },
320
+ methods:{
321
+ init(){
322
+ let vm = this;
323
+ let arr = ["ognEnable","posEnable","userEnable"];
324
+ vm.availabelLength = 0;
325
+ arr.forEach(function (name) {
326
+ vm[name] && vm["availabelLength"]++;
327
+ });
328
+ vm.refreshTableId = "";
329
+ vm.chooseIds = vm.defaultChooseIds; // 子组件不能修改父组件的变量,这里用它来接收做改变
330
+ vm.availabelLength && (vm.blockLength = 24/vm.availabelLength) && (vm.activeName = '1');
331
+ !vm.availabelLength && (vm.activeName = '0'); // 初始化可选择的块
332
+ let nameArr = ["checkedOrg","checkedPos","checkedUser"];
333
+ nameArr.forEach(function (name) {
334
+ vm[name] = [];
335
+ });
336
+
337
+ vm.isChecked = {}; //清空
338
+
339
+ vm.levelParentOrg = [];
340
+ vm.levelChildrenOrg = [];
341
+
342
+
343
+ Object.keys(vm.roleTypeMap).forEach(function (key) {
344
+ if(key == (vm.orgDims || "").split(",")[0]){
345
+ vm.roleTypeName = vm.roleTypeMap[key];
346
+ }
347
+ });
348
+ if(vm.chooseUrl && vm.chooseField){
349
+ vm.axios.post(vm.chooseUrl,vm.chooseParam).then(function (chooseRes) {
350
+ vm.chooseCascadeDataIds = "";
351
+ vm.chooseCascadeParentDataIds = "";
352
+ let tempArr = [];
353
+ let orgArr=[];
354
+ let posArr=[];
355
+ let userArr=[];
356
+ let tempCascadeArr = []; //保存所有选中的子集数据
357
+ let tempCascadeParentArr = []; //保存所有的选中的父级数据
358
+
359
+ chooseRes.data.forEach(function (chooseData) {
360
+ if(chooseData["userId"]){
361
+ userArr.push(chooseData[vm.chooseField]);
362
+ tempArr.push(chooseData[vm.chooseField]);
363
+ }else{
364
+ if(chooseData["orgId"]){
365
+ orgArr.push(chooseData["orgId"]);
366
+ }
367
+ if(chooseData["posId"]){
368
+ posArr.push(chooseData["posId"]);
369
+ }
370
+ tempArr.push(chooseData["id"]);
371
+ }
372
+ if(vm.openLowLevelCheckbox){
373
+ if(chooseData.cascadeData == 'true'){
374
+ tempCascadeArr.push(chooseData[vm.chooseField]);
375
+ }
376
+
377
+ //如果是父级勾选的 cascadeData 设置为 parent
378
+ if(chooseData.cascadeData == 'parent'){
379
+ tempCascadeParentArr.push(chooseData[vm.chooseField]);
380
+ }
381
+ }
382
+ });
383
+ vm.chooseOrgIds = orgArr.join(",");
384
+ vm.choosePosIds = posArr.join(",");
385
+ vm.chooseUserIds = userArr.join(",");
386
+ vm.chooseIds += tempArr.join(",");
387
+ vm.chooseCascadeDataIds += tempCascadeArr.join(","); //所有开启下级权限的子集数据
388
+ vm.chooseCascadeParentDataIds += tempCascadeParentArr.join(","); //所有开启下级权限的父级
389
+ vm.initChooseInfo(); // 初始化已选择的内容
390
+ });
391
+ }else{
392
+ vm.initChooseInfo();
393
+ }
394
+ },
395
+ async initChooseInfo(){ // 初始化选中信息
396
+ let vm = this;
397
+ vm.defaultDim = "";
398
+ if(vm.chooseIds){
399
+ let objArr = [{"url":vm.api.sysOrg.find,"name":"orgName","arr":"checkedOrg",param:{"id":vm.defaultOrgIds || vm.chooseOrgIds||vm.chooseIds}},
400
+ {"url":vm.api.sysPos.find,"name":"posName","arr":"checkedPos",param:{"id":vm.defaultPosIds || vm.choosePosIds||vm.chooseIds}},
401
+ {"url":vm.api.sysOrgPosUser.findNoPage,"name":"userName","arr":"checkedUser",param:{"ids":vm.defaultUserIds || vm.chooseUserIds||vm.chooseIds}}];
402
+ for(let obj of objArr){
403
+ await vm.axios.post(obj["url"],obj.param).then(function (result) {
404
+ (result.data || []).forEach(function (data) {
405
+ data["name"] = data[obj["name"]];
406
+ if(vm.openLowLevelCheckbox && (obj["arr"]== "checkedOrg" || obj["arr"] == "checkedPos" )){
407
+ //如果开启 chooseCascadeDataIds
408
+ if(vm.chooseCascadeDataIds == ''){
409
+ vm[obj["arr"]].push(data);
410
+ }
411
+ let chooseCascadeDataArr = (vm.chooseCascadeDataIds || '').split(",") || [];
412
+ if(vm.chooseCascadeDataIds !='' && chooseCascadeDataArr.indexOf(data.id) == -1){ //
413
+ vm[obj["arr"]].push(data);
414
+ }
415
+ }else{
416
+ vm[obj["arr"]].push(data);
417
+ }
418
+ });
419
+ if(result.data.length > 0){
420
+ vm.defaultDim = result.data[0]["orgDim"]; // 当前维度
421
+ }
422
+ });
423
+ }
424
+ vm.dataFinish();
425
+ }else{
426
+ vm.initTeantIdOrg().then(()=>{
427
+ vm.initTree();
428
+ });
429
+ }
430
+ },
431
+ dataFinish(){ // 初始化已选择的信息,当信息获取完成后再初始化树
432
+ let vm = this;
433
+ if(!vm.checkbox){ // 单选,单选时仅保留一个选项
434
+ let arr = ["checkedOrg","checkedPos","checkedUser"];
435
+ for(let name of arr){
436
+ if(vm[name].length > 0){
437
+ arr.forEach(function (empty) {
438
+ if(empty != name){
439
+ vm[empty] = [];
440
+ }
441
+ });
442
+ vm[name] = [vm[name][0]];
443
+ vm.highlightcurrentKey = vm[name][0];
444
+ break;
445
+ }
446
+ }
447
+ }
448
+ vm.initTeantIdOrg().then(()=>{
449
+ vm.initTree();
450
+ });
451
+ },
452
+ initTree(dim){ // 初始化树
453
+ let vm = this;
454
+ vm.showTree = false;
455
+ vm.posArr = [];
456
+ let paramObj = {"order":"sort"};
457
+ if(vm.orgDims){
458
+ paramObj = {"id":vm.orgDims,"order":"sort"};
459
+ }
460
+ if(vm.tenantId){
461
+ paramObj = {"dimName":"租户维度"};
462
+ }
463
+ vm.axios.post(vm.api.sysOrgDimension.find,paramObj).then(function (res) {
464
+ vm.dimArr = res.data;
465
+ // 如果默认维度中不在所有维度中,则重新设置默认维度
466
+ let arrIds = [];
467
+ vm.dimArr.forEach(item => {
468
+ arrIds.push(item.id);
469
+ if(item.dimName == '租户维度'){
470
+ vm.tenantDim = item.id;
471
+ }
472
+ });
473
+ if(vm.defaultDim && arrIds.indexOf(vm.defaultDim) > -1){
474
+ vm.currentDim = vm.defaultDim;
475
+ }else if(res && res.data){
476
+ vm.currentDim = res.data[0].id;
477
+ }
478
+ dim && (vm.currentDim = dim);
479
+ vm.initPageSetting();
480
+ if(vm.currentDim == vm.userDeptDimId){ // 如果是企业部门id我们新增noneUserId过滤当前用户
481
+ vm.crud.searchForm["noneUserId"] = vm.loginUser["linkId"];
482
+ }
483
+ vm.crud.searchForm = Object.assign({},vm.crud.searchForm,(vm.filterUserParam || {}));
484
+ vm.orgSearchParam["orgDim"] = vm.currentDim; // 过滤维度
485
+ vm.orgSearchParam = Object.assign(vm.orgSearchParam,vm.filterOrgParam); // 过滤组织数据
486
+ vm.orgSearchParam["orgParentTreeSelfs"] = vm.orgTreeIds || ""; // 过滤组织
487
+ vm.posSearchParam["orgDim"] = vm.currentDim;
488
+ vm.posSearchParam["orgDim"] = vm.currentDim;
489
+ vm.posSearchParam["orgTreeIds"] = vm.orgTreeIds || "";
490
+ if(vm.tenantId && vm.tenantCreated && vm.currentDim == vm.tenantDim){
491
+ vm.orgSearchParam["orgParentTreeSelfs"] = ''; // 过滤组织
492
+ vm.orgSearchParam["tenantCreated"] = vm.tenantCreated;
493
+ vm.posSearchParam["orgTreeIds"] = vm.tenantOrgId;
494
+ }
495
+ vm.posSearchParam = Object.assign(vm.posSearchParam,vm.filterPosParam); // 过滤组织数据
496
+ if((vm.userEnable || vm.posEnable) && !vm.caseAuth){ // 岗位可用时抓取数据,既不选岗位也不选人员不加载岗位
497
+ vm.axios.post(vm.api.sysPos.findNoPage,vm.posSearchParam).then(function (resPos) { // 处理岗位数据defaultDim
498
+ resPos.data.forEach(function (pos) {
499
+ pos["name"] = pos["posName"];
500
+ pos["nodeType"] = "pos";
501
+ pos["className"] = vm.pageSetting["posIcon"] || "saspiconfont pl-icon-account";
502
+ if(pos["layer"] == '1'){
503
+ pos["pId"] = pos["orgId"];
504
+ }else{
505
+ pos["pId"] = pos["parentPosId"];
506
+ }
507
+ if(pos["isMainpos"] == '1'){
508
+ pos["name"] = pos["posName"] + "[主岗位]";
509
+ pos["className"] = vm.pageSetting["posMainIcon"] || "saspiconfont pl-icon-yonghu";
510
+ }
511
+ vm.posArr.push(pos);
512
+ });
513
+ vm.initCheckData();
514
+ vm.showTree = true;
515
+ });
516
+ }else{ // 直接生成组织数据
517
+ vm.initCheckData();
518
+ vm.showTree = true;
519
+ }
520
+ });
521
+ },
522
+ dealTreeData(data){ // 给节点添加自定义图标
523
+ let vm = this;
524
+ vm.posArr.forEach(elem =>{ //先比较额外数据岗位
525
+ if(vm.openLowLevelCheckbox){
526
+ if(vm.openLowLevelCheckbox){
527
+ if(vm.expandOrignArr.join(",").indexOf(elem.id)!=-1){
528
+ //设置一级节点为可选中状态
529
+ vm.$set(elem,'disabled',false);
530
+ }else {
531
+ if(vm.chooseCascadeDataIds.indexOf(elem["id"])!= -1 ){
532
+ //则设置其子节点也
533
+ vm.$set(elem,'disabled',true);
534
+ }else{
535
+ vm.$set(elem,'disabled',false);
536
+ }
537
+ }
538
+
539
+ vm.$set(vm.isChecked, elem.id, (vm.chooseCascadeParentDataIds.indexOf(elem.id)!= -1)); //设置默认选中状态
540
+
541
+ }
542
+ }
543
+ });
544
+ data.forEach(function (elem) {
545
+ elem["pId"] = elem["orgParentId"];
546
+ if(elem["posName"]){
547
+ elem["name"] = elem["posName"];
548
+ }else{
549
+ elem["name"] = elem["orgName"];
550
+ }
551
+ if(elem["orgType"]){
552
+ elem["nodeType"] = elem["orgType"];
553
+ }
554
+
555
+ if(elem["orgType"] == "ogn"||elem["orgType"] == "area"){
556
+ elem.className = vm.pageSetting["ognCloseIcon"] || "saspiconfont pl-icon-organ";
557
+ }
558
+ if(elem["orgType"] == "dept"){
559
+ elem.className = vm.pageSetting["deptCloseIcon"] || "saspiconfont pl-icon-untitled85";
560
+ }
561
+ if(vm.openLowLevelCheckbox){
562
+ if(vm.expandOrignArr.join(",").indexOf(elem.id)!=-1){
563
+ //设置一级节点为可选中状态
564
+ vm.$set(elem,'disabled',false);
565
+ }else {
566
+ if(vm.chooseCascadeDataIds.indexOf(elem["id"])!= -1 ){
567
+ //则设置其子节点也
568
+ vm.$set(elem,'disabled',true);
569
+ }else{
570
+ vm.$set(elem,'disabled',false);
571
+ }
572
+ }
573
+ vm.$set(vm.isChecked, elem.id, (vm.chooseCascadeParentDataIds.indexOf(elem.id)!= -1)); //设置默认选中状态
574
+ }
575
+ });
576
+
577
+ },
578
+
579
+
580
+ initPageSetting(){ // 初始化纬度配置信息
581
+ let vm = this;
582
+ for(let dim of vm.dimArr){
583
+ if(vm.currentDim == dim.id){
584
+ vm.initSetting(dim);
585
+ break;
586
+ }
587
+ }
588
+ },
589
+ initSetting(settingObj){
590
+ let vm = this;
591
+ vm.pageSetting = {
592
+ "closeDept":false, // 设置为true时此维度下不包含部门(左侧组织树只有机构)
593
+ "ognName":"组织", // 定义机构名称
594
+ "deptName":"部门", // 定义部门名称
595
+ "posName":"岗位", // 定义岗位名称
596
+ "closePos":false, // 关闭岗位
597
+ "ognOpenIcon":"saspiconfont pl-icon-organ", // 树中组织展开时使用的图标
598
+ "ognCloseIcon":"saspiconfont pl-icon-organ", // 树中组织收缩时使用的图标
599
+ "deptOpenIcon":"saspiconfont pl-icon-untitled85", // 树中组织展开时使用的图标
600
+ "deptCloseIcon":"saspiconfont pl-icon-untitled85", // 树中组织收缩时使用的图标
601
+ "closeMainPos":false, // 关闭主岗位
602
+ "posIcon":"saspiconfont pl-icon-account", // 岗位图标
603
+ "posMainIcon":"saspiconfont pl-icon-yonghu", // 主岗位图标
604
+ "chooseUserType":"", // 可选择的用户类型(默认可选择所有类型用户,如设置ent就只可以选择ent)
605
+ "userSelectDefaultParams":{}, // 通过组织岗位用户选择插件时用户的默认带上的查询条件(目前用于过滤有效企业)
606
+ "orgSelectDefaultParams":{} // 通过组织岗位用户选择插件时组织的默认带上的查询条件
607
+ };
608
+ let dimSpec = JSON.parse(vm.platStringUtil.replaceAll(settingObj["dimSpec"],"'","\"") || "{}");
609
+ vm.pageSetting = Object.assign({},vm.pageSetting,dimSpec); // 覆盖默认属性
610
+ vm.orgSearchParam = Object.assign({},vm.pageSetting["orgSelectDefaultParams"] || {},vm.orgSearchParam); // 添加上组织的配置筛选条件
611
+
612
+ },
613
+ initExpandOrignOrg(treeVm){ // 初始化展开第一级组织
614
+ let vm = this;
615
+ vm.expandOrignArr = [];
616
+ let nodesMap = treeVm.getAllNode();
617
+ Object.keys(nodesMap).forEach(key => {
618
+ if(nodesMap[key].level == 1 && (nodesMap[key].data["orgType"] == 'ogn'||nodesMap[key].data["orgType"] == 'area')){
619
+ nodesMap[key].expanded = true;
620
+ nodesMap[key].data.className = vm.pageSetting["ognOpenIcon"];
621
+ vm.expandOrignArr.push(nodesMap[key].data.id);
622
+ }
623
+ });
624
+
625
+ if(!vm.checkbox){ // 单选高亮当前行,如果当前没有选中树也没关系,那么就不会选中
626
+ treeVm.highlightCurrent && treeVm.$refs.elTree.setCurrentKey(vm.highlightcurrentKey);
627
+ }
628
+ vm.$nextTick(function () {
629
+ if(vm.checkbox){
630
+ let domCollection = document.getElementsByClassName("noCheckBox");
631
+ for(let i = 0;i < domCollection.length;i++){
632
+ if(domCollection[i].parentNode.getElementsByTagName("label").length>0){
633
+ domCollection[i].parentNode.getElementsByTagName("label")[0].style.display = 'none';
634
+ }
635
+ }
636
+ }
637
+ vm.dealTreeData(treeVm.data);//初始化树数据
638
+
639
+ //初始化请求第一级数据 add by luyy
640
+ vm.initCrudData(treeVm.data[0]||{});
641
+
642
+ })
643
+ },
644
+
645
+ initCrudData(data){
646
+ let vm = this;
647
+ let searchForm = vm.crud.searchForm;
648
+ searchForm["orgTreeId"] = "";
649
+ searchForm["posTreeId"] = "";
650
+ searchForm["page"] = 1;
651
+ searchForm["filterUserSource"] = vm.filterUserSource;
652
+ if(vm.currentDim != vm.entOrgDim){ // 不等于entOrgDim企业部门纬度
653
+ vm.crud.searchForm = Object.assign({},searchForm,vm.pageSetting["userSelectDefaultParams"])
654
+ }
655
+ vm.crud.searchForm = Object.assign({},searchForm,(vm.filterUserParam || {}));
656
+ if(data["nodeType"] == 'pos'){
657
+ vm.crud.searchForm["posTreeId"] = data["id"];
658
+ }else{
659
+ vm.crud.searchForm["orgTreeId"] = data["id"] || "$$$$$";
660
+ }
661
+ vm.$refs.orgSelectTree.setTreeCurrentKey(data["id"]);
662
+ // if(vm.currentDim == vm.entOrgDim && vm.filterUserParam['authUserType'] != 'empower'){
663
+ // vm.crud.searchForm["userLinkIdPam"]="entDept";
664
+ // }
665
+ if(vm.tenantId){
666
+ vm.crud.searchForm["tenantId"] = vm.tenantId;
667
+ }
668
+ vm.crud.search(vm.checkSelected);
669
+ },
670
+
671
+ filterTextCallBack(){
672
+ let vm = this;
673
+ vm.$nextTick(function () {
674
+ let nodesMap = vm.$refs.orgSelectTree.getAllNode();
675
+ for(let [key,node] of Object.entries(nodesMap)){
676
+ let elem = node.data;
677
+ if(node.expanded){
678
+ if(node.data["orgType"] == "ogn"||node.data["orgType"] == "area"){
679
+ elem.className = vm.pageSetting["ognOpenIcon"] || "saspiconfont pl-icon-organ";
680
+ }
681
+ if(node.data["orgType"] == "dept"){
682
+ elem.className = vm.pageSetting["deptOpenIcon"] || "saspiconfont pl-icon-untitled85";
683
+ }
684
+ }else{
685
+ if(node.data["orgType"] == "ogn"||node.data["orgType"] == "area"){
686
+ elem.className = vm.pageSetting["ognCloseIcon"] || "saspiconfont pl-icon-organ";
687
+ }
688
+ if(node.data["orgType"] == "dept"){
689
+ elem.className = vm.pageSetting["deptCloseIcon"] || "saspiconfont pl-icon-untitled85";
690
+ }
691
+ }
692
+ }
693
+ });
694
+ },
695
+ treeNodeExpand(data,node,comp){
696
+ let vm = this;
697
+ if(data.orgType == "ogn"||data.orgType == "area"){
698
+ data.className = vm.pageSetting["ognOpenIcon"] || "saspiconfont pl-icon-organ";
699
+ }
700
+ if(data.orgType == "dept"){
701
+ data.className = vm.pageSetting["deptOpenIcon"] || "saspiconfont pl-icon-untitled85";
702
+ }
703
+ vm.$nextTick(function () {
704
+ if(vm.checkbox){
705
+ let domCollection = document.getElementsByClassName("noCheckBox");
706
+ for(let i = 0;i < domCollection.length;i++){
707
+ if(domCollection[i].parentNode.getElementsByTagName("label").length>0){
708
+ domCollection[i].parentNode.getElementsByTagName("label")[0].style.display = 'none';
709
+ }
710
+ }
711
+ }
712
+ })
713
+ },
714
+ treeNodeCollapse(data,node,comp){
715
+ let vm = this;
716
+ if(data.orgType == "ogn"||data.orgType == "area"){
717
+ data.className = vm.pageSetting["ognCloseIcon"] || "saspiconfont pl-icon-organ";
718
+ }
719
+ if(data.orgType == "dept"){
720
+ data.className = vm.pageSetting["deptCloseIcon"] || "saspiconfont pl-icon-untitled85";
721
+ }
722
+ },
723
+ initCheckData(){ // 初始化树完成后在树中勾选已选择的数据
724
+ let vm = this;
725
+ let arr = [];
726
+
727
+ vm.checkedOrg.forEach(function (org) {
728
+ arr.push(org.id);
729
+ });
730
+ vm.checkedPos.forEach(function (pos) {
731
+ if(vm.chooseCascadeDataIds.indexOf(pos.id) == -1){
732
+ arr.push(pos.id);
733
+ }
734
+ });
735
+ vm.initCheck = {"initCheck":arr};
736
+ // if(vm.checkbox){
737
+ // let domCollection = document.getElementsByClassName("noCheckBox");
738
+ // for(let i = 0;i < domCollection.length;i++){
739
+ // if(domCollection[i].parentNode.getElementsByTagName("label").length>0){
740
+ // domCollection[i].parentNode.getElementsByTagName("label")[0].style.display = 'none';
741
+ // }
742
+ // }
743
+ // }
744
+ // setTimeout(()=>{
745
+ // vm.crud.search(vm.checkSelected);
746
+ // },100)
747
+
748
+ },
749
+ dimChange(value){ // 当前维度切换时的事件
750
+ let vm = this;
751
+ vm.initTeantIdOrg().then(()=>{
752
+ vm.initTree(value);
753
+ });
754
+ vm.crud.searchForm = {"orgTreeId":"$$$$$"};
755
+ vm.crud.search();
756
+ },
757
+ renderContentFunc(h, { node, data}){
758
+ let vm = this;
759
+ // if(vm.roleTypeName == "政府权限" && data.nodeType == "ogn"){
760
+ // return (
761
+ // <span class="noCheckBox">
762
+ // <i class={data.className}></i>
763
+ // <span>{node.label}</span>
764
+ // </span>
765
+ // );
766
+ // }
767
+ if(!vm.posEnable && data.nodeType == "pos"){
768
+ return (
769
+ <span class="noCheckBox">
770
+ <i class={data.className}></i>
771
+ <span>{node.label}</span>
772
+ </span>
773
+ );
774
+ }
775
+ if(!vm.ognEnable && (data.nodeType == "ogn" || data.nodeType == "dept"|| data.nodeType == "area")){
776
+ return (
777
+ <span class="noCheckBox">
778
+ <i class={data.className}></i>
779
+ <span>{node.label}</span>
780
+ </span>
781
+ );
782
+ }
783
+ let MyComempte = (
784
+ <span>
785
+ <i class={data.className}></i>
786
+ <span>{node.label}</span>
787
+ </span>
788
+ );
789
+
790
+ if(node.childNodes.length>0 && vm.openLowLevelCheckbox){
791
+ MyComempte = (
792
+ <span>
793
+ <i class={data.className}></i>
794
+ <span>{node.label}</span>
795
+ <el-tooltip placement="right-start" content="是否同步开启下级权限" >
796
+ <el-checkbox style="margin-left:8px"
797
+ v-model={vm.isChecked[data.id]}
798
+ disabled={!node.checked}
799
+ onChange={this.dChange.bind(this,data)} ></el-checkbox>
800
+ </el-tooltip>
801
+ </span>
802
+ );
803
+ }
804
+ return MyComempte;
805
+ },
806
+
807
+ // 当是否开启下级权限同步复选框变化时候 ,如果选中状态自动勾选所有的下级用户(如果下级用户也存在下级则也勾选同步复选框)并且设为禁用
808
+ // 如果取消勾选下级用户,则取消下级用户禁用状态,并且勾选取消
809
+ dChange(data, checked){
810
+ let vm = this;
811
+ let temple = vm.$refs.orgSelectTree;
812
+ let allChilren = temple.getCurrentChildren(data,[]) || []; //获取当前节点下的所有子节点(包含自己)
813
+ let nodesMap = temple.getAllNode(); // 节点集合
814
+
815
+ vm.stopChange = true;
816
+ allChilren.forEach(key => {
817
+ let Tdata = nodesMap[key]["data"];
818
+ if(key == data.id){
819
+ vm.$set(Tdata,"disabled",false);
820
+ Tdata["cascadeData"] = "parent";
821
+ }else{
822
+ vm.$set(Tdata,"disabled",checked);
823
+ Tdata["cascadeData"] = checked?"true":"";
824
+ if(checked){
825
+ this.$set(nodesMap[key],'checked',false);
826
+ this.$set(vm.isChecked,key,false);
827
+ }
828
+ }
829
+ });
830
+ vm.$nextTick(() => {
831
+ vm.stopChange = false;
832
+ })
833
+ },
834
+ checkelTreeChange(data,checked){ // 树节点选中变化时的事件
835
+ let vm = this;
836
+ let tempObj = {"area":"checkedOrg","ogn":"checkedOrg","dept":"checkedOrg","pos":"checkedPos"};
837
+ let operateArr = vm[tempObj[data["nodeType"]]];
838
+ if(checked){
839
+ let flag = false;
840
+ for(let elem of operateArr){
841
+ if(elem["id"] == data["id"]){
842
+ flag = true;
843
+ break;
844
+ }
845
+ }
846
+ if(!flag){
847
+ operateArr.push(data);
848
+ }
849
+ }else{
850
+ if(vm.openLowLevelCheckbox){
851
+ if(!vm.stopChange){
852
+ this.$set(vm.isChecked,data.id,false);
853
+ vm.dChange(data,false);
854
+ }
855
+ }
856
+ vm[tempObj[data["nodeType"]]] = operateArr.filter(item => {
857
+ return item["id"] != data["id"];
858
+ });
859
+ }
860
+ },
861
+ nodeClick(data,node){ // 树节点点击事件,点击时触发右边的用户信息crud刷新事件
862
+ let vm = this;
863
+ let treeComp = vm.$refs.orgSelectTree;
864
+ let nodesMap = treeComp.getAllNode();
865
+ // 节点的快捷键操作要特殊处理,其它都严格遵循上下级无关的策略
866
+ if(vm.checkbox){
867
+ if(window.event.shiftKey){ // shift快捷选择
868
+ if(vm.shiftKeyData){
869
+ let max = vm.shiftKeyData>node.id?vm.shiftKeyData:node.id;
870
+ let min = vm.shiftKeyData>node.id?node.id:vm.shiftKeyData;
871
+ let checkedKeys = [];
872
+ Object.keys(nodesMap).forEach(function (key) {
873
+ let caculateNode = nodesMap[key];
874
+ // if(caculateNode.id >= min && caculateNode.id <= max &&
875
+ // (caculateNode.data["nodeType"] !='ogn' || vm["roleTypeName"] != "政府权限") ){
876
+ // checkedKeys.push(caculateNode.data.id);
877
+ // }
878
+ if(caculateNode.id >= min && caculateNode.id <= max && !caculateNode.disabled){
879
+ checkedKeys.push(caculateNode.data.id);
880
+ }
881
+ });
882
+ treeComp.setTreeCheckedKeys(checkedKeys,false);
883
+ vm.$nextTick(function () {
884
+ vm.shiftCtrlCount();
885
+ });
886
+ }else{
887
+ vm.shiftKeyData = node.id;
888
+ }
889
+ }else{
890
+ vm.shiftKeyData = node.id;
891
+ }
892
+ if(window.event.ctrlKey){ // control键快捷选择
893
+ let arr = treeComp.getCurrentChildren(data,[]);
894
+ let resultArr = [];
895
+ for(let key of arr) {
896
+ // if (!(vm["roleTypeName"] == "政府权限" && nodesMap[key].data.nodeType == "ogn")) { // 政府权限且是机构组织不勾选
897
+ if(!nodesMap[key].disabled){
898
+ resultArr.push(key);
899
+ }
900
+ }
901
+ treeComp.setTreeCheckedKeys(resultArr,false,!node.checked);
902
+ vm.$nextTick(function () {
903
+ vm.shiftCtrlCount();
904
+ });
905
+ }
906
+ }
907
+ vm.refreshTableId = data.id; // 刷新当前table
908
+ vm.singleSelectChange(); // 当前进行单选时触发的操作
909
+ },
910
+ shiftCtrlCount(){
911
+ let vm = this;
912
+ let treeComp = vm.$refs.orgSelectTree;
913
+ let nodesMap = treeComp.getAllNode();
914
+ let arrOgn = [];
915
+ let arrPos = [];
916
+ Object.keys(nodesMap).forEach(function (key) {
917
+ let tempNode = nodesMap[key];
918
+ if(tempNode.checked && (tempNode.data.nodeType == "area" ||tempNode.data.nodeType == "ogn" || tempNode.data.nodeType == "dept")){
919
+ arrOgn.push({"id":tempNode.data.id,"name":tempNode.data.name});
920
+ }
921
+ if(tempNode.checked && (tempNode.data.nodeType == "pos")){
922
+ arrPos.push({"id":tempNode.data.id,"name":tempNode.data.name});
923
+ }
924
+ });
925
+ vm.checkedOrg = arrOgn;
926
+ vm.checkedPos = arrPos;
927
+ },
928
+ singleSelectChange(tableRowData){ // 组织单选时触发的操作
929
+ let vm = this;
930
+ if(!vm.checkbox){
931
+ if(vm.userEnable && tableRowData){ // table变化
932
+ let tableComp = vm.$refs[vm.crud.tableRef];
933
+ tableComp.clearSelection();
934
+ vm.$nextTick(function () {
935
+ tableComp.toggleRowSelection(tableRowData);
936
+ vm.checkedUser = [tableRowData];
937
+ vm.checkedOrg = [];
938
+ vm.checkedPos = [];
939
+ })
940
+ }else{
941
+ let data = vm.$refs.orgSelectTree.getTreeCurrentNode();
942
+ if(vm.ognEnable && (data.nodeType == 'area' || data.nodeType == 'dept' || data.nodeType == 'ogn')){
943
+ vm.checkedOrg = [data];
944
+ vm.checkedPos = [];
945
+ vm.checkedUser = [];
946
+ }
947
+ if(vm.posEnable && data.nodeType == 'pos'){
948
+ vm.checkedPos = [data];
949
+ vm.checkedOrg = [];
950
+ vm.checkedUser = [];
951
+ }
952
+ }
953
+ }
954
+ },
955
+ removeOgn(id){
956
+ let vm = this;
957
+ if(id){
958
+ vm.checkedOrg = vm.checkedOrg.filter(item => {
959
+ return item["id"] != id;
960
+ });
961
+ vm.$refs.orgSelectTree.setTreeCheckedKeys(id,false,false);
962
+ }
963
+ },
964
+ removePos(id){
965
+ let vm = this;
966
+ if(id){
967
+ vm.checkedPos = vm.checkedPos.filter(item => {
968
+ return item["id"] != id;
969
+ });
970
+ vm.$refs.orgSelectTree.setTreeCheckedKeys(id,false,false);
971
+ }
972
+ },
973
+ removePosUser(id){
974
+ let vm = this;
975
+ if(vm.caseAuth){
976
+ vm.$confirm('移除该用户将会同步移除该用户的所有下级关联权限,是否继续?', '警告', {
977
+ confirmButtonText: '确定',
978
+ cancelButtonText: '取消',
979
+ }).then(function () {
980
+ vm.removeUser(id);
981
+ });
982
+ }else{
983
+ vm.removeUser(id);
984
+ }
985
+ },
986
+ removeUser(id){
987
+ let vm = this;
988
+ if(id){
989
+ // 先移除数组的元素,再取消table的选中状态。如果根据selectionChange事件,可能当前数据还没渲染。
990
+ vm.checkedUser = vm.checkedUser.filter(item => {
991
+ return item["id"] != id;
992
+ });
993
+ let tableComp = vm.$refs[vm.crud.tableRef];
994
+ let selection = tableComp.selection;
995
+ for(let select of selection){
996
+ if(select["id"] == id){
997
+ tableComp.toggleRowSelection(select);
998
+ break;
999
+ }
1000
+ }
1001
+ }
1002
+ },
1003
+ /**
1004
+ * table操作事件
1005
+ */
1006
+ resetSearch(){ // 重置查询
1007
+ let vm = this;
1008
+ let crud = vm.crud;
1009
+ let objData = {};
1010
+ let searchForm = crud.searchForm;
1011
+ crud.noClearSearchColumns && crud.noClearSearchColumns.forEach(function (key) {
1012
+ objData[key] = searchForm[key];
1013
+ });
1014
+ objData["page"] = "1";
1015
+ crud.searchForm = Object.assign({}, objData);
1016
+ crud.search(vm.checkSelectedMsg);
1017
+ },
1018
+ doSearch(){ // 查询
1019
+ let vm = this;
1020
+ if(vm.tenantId){
1021
+ vm.crud.searchForm["tenantId"] = vm.tenantId;
1022
+ }
1023
+ vm.crud.search(vm.checkSelectedMsg);
1024
+ },
1025
+ rowClick(row){ // table行点击事件
1026
+ let vm = this;
1027
+ if(vm.caseAuth){
1028
+ let selection = vm.$refs[vm.crud.tableRef].selection;
1029
+ let obj = {};
1030
+ selection.forEach(item => {
1031
+ obj[item.id] = item;
1032
+ });
1033
+ if(obj[row.id]){ // 原来已选择,现在是取消,提示
1034
+ vm.$confirm('移除该用户将会同步移除该用户的所有下级关联权限,是否继续?', '警告', {
1035
+ confirmButtonText: '确定',
1036
+ cancelButtonText: '取消',
1037
+ }).then(function () {
1038
+ vm.$refs[vm.crud.tableRef].toggleRowSelection(row);
1039
+ });
1040
+ }else{
1041
+ vm.$refs[vm.crud.tableRef].toggleRowSelection(row);
1042
+ }
1043
+ }else{
1044
+ vm.$refs[vm.crud.tableRef].toggleRowSelection(row); // 行点击选中当前行
1045
+ }
1046
+ },
1047
+ tableSelect(selection, row){
1048
+ let vm = this;
1049
+ if(vm.caseAuth){
1050
+ let obj = {};
1051
+ selection.forEach(item => {
1052
+ obj[item.id] = item;
1053
+ });
1054
+ if(!obj[row.id]){ // 取消选中
1055
+ vm.$refs[vm.crud.tableRef].toggleRowSelection(row);
1056
+ vm.$confirm('移除该用户将会同步移除该用户的所有下级关联权限,是否继续?', '警告', {
1057
+ confirmButtonText: '确定',
1058
+ cancelButtonText: '取消',
1059
+ }).then(function () {
1060
+ vm.$refs[vm.crud.tableRef].toggleRowSelection(row);
1061
+ });
1062
+ }
1063
+ }
1064
+ },
1065
+ selectChange(selection){ // 当行的选中状态发生变化时
1066
+ let vm = this;
1067
+ let noSelection = vm.getCurrentNoSelect();
1068
+ vm.checkedUser = vm.checkedUser.filter(item => { // 移除已选择用户但是当前行并没有再选中的
1069
+ let flag = true;
1070
+ for(let elem of noSelection){
1071
+ if(elem["id"] == item["id"]){
1072
+ flag = false;
1073
+ break;
1074
+ }
1075
+ }
1076
+ return flag;
1077
+ });
1078
+ selection.forEach(function (select) { // 新增当前table中选中的但是已选择用户中没有的数据
1079
+ let flag = true;
1080
+ for(let elem of vm.checkedUser){
1081
+ if(elem["id"] == select["id"]){
1082
+ flag = false;
1083
+ break;
1084
+ }
1085
+ }
1086
+ if(flag){
1087
+ select["name"] = select["userName"];
1088
+ vm.checkedUser.push(select);
1089
+ vm.singleSelectChange(select);
1090
+ }
1091
+ });
1092
+ },
1093
+ getCurrentNoSelect(){ // 获取当前行未选择的数据
1094
+ let vm = this;
1095
+ let selection = vm.$refs[vm.crud.tableRef].selection;
1096
+ let data = vm.$refs[vm.crud.tableRef].data;
1097
+ let arr = [];
1098
+ arr = data.filter(item => {
1099
+ let flag = true;
1100
+ for(let elem of selection){
1101
+ if(elem["id"] == item["id"]){
1102
+ flag = false;
1103
+ break;
1104
+ }
1105
+ }
1106
+ return flag;
1107
+ });
1108
+ return arr;
1109
+ },
1110
+ checkSelectedMsg(callbackVm,data){ // table渲染完成后选中已选择的数据
1111
+ let vm = this;
1112
+ let arr = [];
1113
+ data.records.forEach(function (elem) {
1114
+ for(let posUser of vm.checkedUser){
1115
+ if(elem["id"] == posUser["id"]){
1116
+ arr.push(elem);
1117
+ break;
1118
+ }
1119
+ }
1120
+ });
1121
+ callbackVm.$nextTick(function () {
1122
+ arr.forEach(function(elem){
1123
+ callbackVm.$refs[callbackVm.crud.tableRef].toggleRowSelection(elem);
1124
+ }
1125
+ );
1126
+ callbackVm.$message({
1127
+ duration: 1000,
1128
+ type: "success",
1129
+ message: "查询成功"
1130
+ })
1131
+ });
1132
+ },
1133
+ checkSelected(callbackVm,data){
1134
+ let vm = this;
1135
+ let arr = [];
1136
+ (data.records || []).forEach(function (elem) {
1137
+ for(let posUser of vm.checkedUser){
1138
+ if(elem["id"] == posUser["id"]){
1139
+ arr.push(elem);
1140
+ break;
1141
+ }
1142
+ }
1143
+ });
1144
+ callbackVm.$nextTick(function () {
1145
+ arr.forEach(function(elem){
1146
+ callbackVm.$refs[callbackVm.crud.tableRef].toggleRowSelection(elem);
1147
+ }
1148
+ )
1149
+ });
1150
+ },
1151
+ /**
1152
+ * 对外返回数据
1153
+ */
1154
+ getCheckedInfo(type){ // type:user,org,pos //对外返回数据 如果勾选开启同步下级组织 levelOrg 选中的下级组织权限,
1155
+ let vm = this;
1156
+ let temple = vm.$refs.orgSelectTree;
1157
+ let checkedOrgData = [];
1158
+ let obj = {"user":"checkedUser","pos":"checkedPos","org":"checkedOrg"};
1159
+
1160
+ let checkedOrgTemp = [];
1161
+ let checkedParamData = [];
1162
+ if(vm.openLowLevelCheckbox && type == "levelOrg"){
1163
+ let allData = temple.getAllNodeLazyData();
1164
+ Object.keys(vm.isChecked).forEach(key => {
1165
+ if(vm.isChecked[key]){
1166
+ checkedOrgTemp.push(allData[key].data);
1167
+ }
1168
+ });
1169
+ if(checkedOrgTemp.length>0){
1170
+ //父级需要单独保存 cacseData 设置 为 parent
1171
+ checkedOrgTemp.forEach(function (data) {
1172
+ checkedOrgData = checkedOrgData.concat(temple.getCurrentChildren(data,[]).slice(1)); //保存所有子集的
1173
+ });
1174
+ checkedOrgData.forEach(key => {
1175
+ checkedParamData.push(allData[key].data);
1176
+ });
1177
+ }
1178
+ let returnArr = [];
1179
+ returnArr.push(checkedOrgTemp || []); //保存所有的父级数据
1180
+ returnArr.push(checkedParamData || []); //保存所有的子集数据
1181
+ return returnArr;
1182
+ }
1183
+
1184
+ if(obj[type]){
1185
+ return vm[obj[type]].slice(0);
1186
+ }
1187
+ return null;
1188
+ },
1189
+
1190
+ /**
1191
+ * 初始化获取租户所在组织
1192
+ */
1193
+ initTeantIdOrg(){
1194
+ return new Promise(resolve => {
1195
+ if(!this.tenantId){
1196
+ resolve();
1197
+ }else {
1198
+ //查询当前租户所在的 组织 orgId
1199
+ // this.axios.post(this.api.sysOrgPosUser.findNoPage,{})
1200
+ this.axios.post(this.api.sysOrgPosUser.findNoPage,{"tenantKey":this.tenantId}).then(res =>{
1201
+ if(res.data && res.data.length >0){
1202
+ this.tenantOrgId = res.data[0].orgId;
1203
+ }
1204
+ resolve();
1205
+ });
1206
+ }
1207
+ })
1208
+
1209
+ }
1210
+
1211
+ }
1212
+ }
1213
+ </script>
1214
+
1215
+ <style scoped>
1216
+ .bodydiv{
1217
+ /*background-image: url("./bg.png");
1218
+ background-repeat: no-repeat;
1219
+ background-size: 100% 100%;*/
1220
+ background-color: #05293e;
1221
+ }
1222
+ fieldset{
1223
+ border: 1px solid #EBEEF5;
1224
+ border-radius: 5px;
1225
+ height: 100%;
1226
+ box-sizing: border-box;
1227
+ }
1228
+ legend{
1229
+ margin-left: 20px;
1230
+ }
1231
+ .selectRow .el-col{
1232
+ height: calc(100% - 8px);
1233
+ box-sizing: border-box;
1234
+ padding:0 5px;
1235
+ }
1236
+ .selectRow .el-button{
1237
+ margin-left: 10px;
1238
+ margin-top: 5px;
1239
+ }
1240
+ .select-footer{
1241
+ padding: 0;
1242
+ }
1243
+ .select-footer /deep/ .el-collapse-item__content{
1244
+ padding-bottom: 0;
1245
+ }
1246
+ .select-footer /deep/ .el-collapse-item__header{
1247
+ height: 40px;
1248
+ box-sizing: border-box;
1249
+ }
1250
+ .alreadyChoose{
1251
+ height: calc(100% - 23px);
1252
+ overflow-y: auto;
1253
+ }
1254
+ .asideTree{
1255
+ width: 300px;
1256
+ position: relative;
1257
+ overflow-y: hidden;
1258
+ padding: 5px;
1259
+ box-sizing: border-box;
1260
+ }
1261
+ .mainTree{
1262
+ overflow-y: hidden;
1263
+ padding: 5px;
1264
+ box-sizing: border-box;
1265
+ }
1266
+ .detail-info{
1267
+ height:98%;
1268
+ margin: 5px 5px 5px 15px;
1269
+ padding: 15px 10px 0 20px;
1270
+ overflow-x: hidden;
1271
+ box-sizing: border-box;
1272
+ border: 1px solid rgba(1, 245, 255, 0.2);
1273
+ }
1274
+ #tableMain /deep/ .el-table__body-wrapper{
1275
+ height: calc(100% - 60px);
1276
+ overflow-y: auto;
1277
+ }
1278
+ .pos-user-table /deep/ th .el-checkbox__original {
1279
+ display:none;
1280
+ }
1281
+ .pos-user-table /deep/ th .el-checkbox {
1282
+ display:none;
1283
+ }
1284
+ /deep/.el-input.is-disabled .el-input__inner{
1285
+ background: rgba(0,0,0,0.20)!important;
1286
+ border: 1px solid rgb(1, 245, 255,0.3);
1287
+ border-radius: 1px;
1288
+ color:#DEDEDE;
1289
+ }
1290
+ /deep/.el-input__inner{
1291
+ border: 1px solid rgb(1, 245, 255,0.3)!important;
1292
+ border-radius: 1px!important;
1293
+ background: rgba(0,0,0,0.20)!important;
1294
+ color:#DEDEDE!important;
1295
+ }
1296
+ /deep/.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
1297
+ background-color: rgba(1, 245, 255, 0.10);
1298
+ color: #01F5FF;
1299
+ }
1300
+ /deep/.el-tree-node__content{
1301
+ color:#ffffff;
1302
+ }
1303
+ /deep/.el-form-item__label{
1304
+ color: #ffffff;
1305
+ }
1306
+ /deep/.el-table, .el-table__expanded-cell{
1307
+ background: none;
1308
+ }
1309
+ /deep/.el-tree-node__content:hover{
1310
+ background: rgba(1,245,255,0.10);
1311
+ }
1312
+ /deep/.el-tree-node:focus>.el-tree-node__content{
1313
+ background: none!important;
1314
+ }
1315
+ /deep/.el-table__body tr{
1316
+ background: none!important;
1317
+ }
1318
+ /deep/.el-table__header tr{
1319
+ background: none!important;
1320
+ }
1321
+ /deep/.el-table__header th{
1322
+ background: none!important;
1323
+ border-bottom: 1px solid rgba(1, 245, 255, 0.2);
1324
+ }
1325
+ /deep/.el-table thead {
1326
+ color: #01F5FF;
1327
+ font-weight: 500;
1328
+ background-image: linear-gradient(180deg, rgba(2,251,255,0.04) 0%, rgba(1,245,255,0.10) 100%);
1329
+ }
1330
+ /deep/.el-table{
1331
+ color:#ffffff;
1332
+ background-image: linear-gradient(180deg, rgba(1,245,255,0.00) 1%, rgba(1,245,255,0.10) 100%);
1333
+ }
1334
+ /deep/.el-table td, .el-table th.is-leaf {
1335
+ border-bottom: 1px solid rgba(1, 245, 255, 0.2);
1336
+ }
1337
+ /deep/.el-table--border::after, .el-table--group::after, .el-table::before{
1338
+ background:none;
1339
+ }
1340
+ /deep/.el-pagination__total{
1341
+ color:#fff;
1342
+ }
1343
+ /deep/.el-pagination__jump{
1344
+ color:#fff;
1345
+ }
1346
+ /deep/.el-pager li{
1347
+ background: none;
1348
+ color:#fff;
1349
+ }
1350
+ /deep/.el-pager li.active {
1351
+ color: #01F5FF!important;
1352
+ cursor: default;
1353
+ }
1354
+ /deep/.el-pagination button:disabled{
1355
+ background: none;
1356
+ }
1357
+ /deep/.el-pagination .btn-next, .el-pagination .btn-prev{
1358
+ background: none;
1359
+ color:#C0C4CC;
1360
+ }
1361
+ /deep/.el-pagination .btn-prev{
1362
+ background: none;
1363
+ color:#C0C4CC;
1364
+ }
1365
+ /deep/.el-table--enable-row-hover .el-table__body tr:hover>td{
1366
+ background-image: linear-gradient(180deg, rgba(2,251,255,0.04) 0%, rgba(1,245,255,0.20) 100%);
1367
+ background-color: unset;
1368
+ }
1369
+ .bodydiv ::-webkit-scrollbar-thumb{
1370
+ border-radius: 5px !important;
1371
+ background-color: rgba(1, 245, 255, 0.4) !important;
1372
+ }
1373
+ /deep/.el-collapse-item__header{
1374
+ background: none;
1375
+ color:#ffffff;
1376
+ }
1377
+ .el-collapse{
1378
+ border-top: 0;
1379
+ }
1380
+ /deep/.el-collapse-item__wrap{
1381
+ background-color: unset;
1382
+ }
1383
+ .yxzxxdiv{
1384
+ background-image: linear-gradient(180deg, rgba(0,206,255,0.00) 0%, rgba(0,206,255,0.20) 100%);
1385
+ border: 1px solid rgba(1, 245, 255, 0.5);
1386
+ height: 100%;
1387
+ width: 98%;
1388
+ }
1389
+ .yxzxxtitle{
1390
+ height:40px;
1391
+ width: 100%;
1392
+ color:#fff;
1393
+ text-align: center;
1394
+ line-height: 40px;
1395
+ border-bottom: 1px dashed rgb(1, 245, 255,0.3);
1396
+ }
1397
+ /deep/.el-button--primary.is-plain{
1398
+ background: rgba(1, 245, 255, 0.14);
1399
+ border: none;
1400
+ color:#01F5FF;
1401
+ }
1402
+ </style>