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