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,864 @@
1
+ <template>
2
+ <div class="sysOrgTree-content" style="width: 100%;height: 100%" @click="menuVisible=false">
3
+ <el-container style="height: 100%;background-color: white" v-if="!noAuth">
4
+ <!--鼠标右键点击出现页面-->
5
+ <el-menu
6
+ :style="{'position': 'fixed','z-index':'99','top':top,'left':left}"
7
+ class="el-menu-vertical"
8
+ @select="handleRightSelect"
9
+ active-text-color="#fff" v-show="menuVisible"
10
+ text-color="#fff">
11
+ <el-menu-item index="addArea" class="menuItem">
12
+ <span slot="title">添加行政区划<i class="el-icon-s-home"></i></span>
13
+ </el-menu-item>
14
+ <el-menu-item index="addOgn" class="menuItem" v-show="ognVisible">
15
+ <span slot="title">添加下级{{((pageSetting['ognName'] || "").length > 5 ? pageSetting['ognName'].substring(0,5) + "…":pageSetting['ognName']) || '组织'}}
16
+ <i class="saspiconfont pl-icon-organ"></i>
17
+ </span>
18
+ </el-menu-item>
19
+ <el-menu-item index="addDept" class="menuItem">
20
+ <span slot="title">添加下级{{((pageSetting['deptName'] || "").length > 5 ? pageSetting['deptName'].substring(0,5) + "…":pageSetting['deptName']) || '部门'}}
21
+ <i class="saspiconfont pl-icon-untitled85"></i>
22
+ </span>
23
+ </el-menu-item>
24
+ <div style="width: 100%;height: 2px;background: #ffffff;"></div>
25
+ <el-menu-item index="removeCurrent" class="menuItem">
26
+ <span slot="title">删除当前组织</span>
27
+ </el-menu-item>
28
+ <el-menu-item index="removeCheck" class="menuItem">
29
+ <span slot="title">删除勾选组织</span>
30
+ </el-menu-item>
31
+ <div style="width: 100%;height: 2px;background: #ffffff;"></div>
32
+ <el-menu-item index="addRoot" class="menuItem">
33
+ <span slot="title">添加根组织</span>
34
+ </el-menu-item>
35
+ <el-menu-item index="unfold" class="menuItem">
36
+ <span slot="title">展开所有下级</span>
37
+ </el-menu-item>
38
+ <el-menu-item index="retract" class="menuItem">
39
+ <span slot="title">收起所有下级</span>
40
+ </el-menu-item>
41
+ </el-menu>
42
+ <div class="leftTree" style="width: 350px;height: 100%;position: relative;box-sizing: border-box;padding:10px 5px 8px 10px;">
43
+ <div style="border: 1px solid #ddd;box-sizing: border-box;padding: 5px;width: 100%;height: 100%">
44
+ <el-header style="height: auto;padding: 10px 0 10px 0">
45
+ <el-select v-model="currentOrgDim" style="width: 65%;"
46
+ @change="dimChange" size="small">
47
+ <el-option v-for="item in sysOrgDimensionArr"
48
+ :value="item.id" :label="item.dimName" :key="item.id">
49
+
50
+ </el-option>
51
+ </el-select>
52
+ <el-button type="warning" @click="validData" size="small"><i
53
+ class="saspiconfont pl-icon-fuzhibidui"></i>数据校验
54
+ </el-button>
55
+ <el-input
56
+ :placeholder="searchPlaceHolder"
57
+ v-model="filterText" style="width: 133px;margin-top: 10px" size="small">
58
+ </el-input>
59
+ <el-button type="primary" icon="el-icon-circle-plus" size="small" @click="addOrgData()"
60
+ style="margin-left: 4px">添加根节点
61
+ </el-button>
62
+ <el-button type="danger" icon="el-icon-remove" size="small" style="margin-left: 4px;"
63
+ @click="removeCheck()">删除
64
+ </el-button>
65
+ </el-header>
66
+ <el-aside style="width: 100%;height: calc(100% - 100px);position: relative" class="asideTree">
67
+ <common-tree v-if="showTree" :request-url="api.sysOrg.listNopageDim"
68
+ :request-param="treeRequestParam"
69
+ :deal-tree-data="dealTreeData"
70
+ :default-props="defaultProps" parent-id="orgParentId" :filter-text="filterText"
71
+ :refresh-proper="currentOrgDim" :right-click="rightClickNode"
72
+ :node-click="nodeClick" :expand-onclick-node="false"
73
+ :init-call-back="initExpandOrignOrg" ref="orgTreeRef" :default-shift-key-select=true
74
+ :default-ctrl-key-select=true :draggable=true :tree-node-drop="treeNodeDrop"
75
+ :tree-allow-drop="treeAllowDrop" :tree-node-collapse="treeNodeCollapse"
76
+ :tree-node-expand="treeNodeExpand" :filter-text-call-back="filterTextCallBack"
77
+ >
78
+
79
+ </common-tree>
80
+ </el-aside>
81
+ </div>
82
+ </div>
83
+ <div class="rightContent" style="width: calc(100% - 350px);float: right;box-sizing:border-box;">
84
+ <!--<sys-org-pos-user-tree v-if="showPosUser" :org-dim="currentOrgDim" :org-id="currentOrgId"-->
85
+ <!--:org-obj="currentObj" :page-obj="pageSetting" :update-call-back="updateCallBack">-->
86
+
87
+ <!--</sys-org-pos-user-tree>-->
88
+ <sys-org-pos-user-detail v-if="showPosUser" :org-dim="currentOrgDim" :org-id="currentOrgId"
89
+ :org-obj-real="currentObj" :page-setting="pageSetting" :org-type-obj="orgTypeObj"
90
+ :update-call-back="updateCallBack" :sys-data-obj="sysDataObj" @saveRollBack="saveRollBack">
91
+
92
+ </sys-org-pos-user-detail>
93
+ </div>
94
+ <el-dialog :close-on-click-modal=false :visible.sync="orgTreeDialog" title="添加组织信息" :width="orgTreeFormData.orgType == 'area' ? '40%' : '60%'" top="20vh">
95
+ <el-form :model="orgTreeFormData" :rules="rules" ref="orgTreeFormRef">
96
+ <el-row v-if="orgTreeFormData.orgType != 'area'">
97
+ <el-col :span="24">
98
+ <el-form-item label="组织名称" label-width="120px" prop="orgName">
99
+ <el-input type="textarea" v-model="orgTreeFormData.orgName"
100
+ :autosize="{minRows:4,maxRows:8}"></el-input>
101
+ </el-form-item>
102
+ </el-col>
103
+ </el-row>
104
+ <el-row v-if="orgTreeFormData.orgType != 'area'">
105
+ <el-col :span="12">
106
+ <el-form-item label="上级组织" label-width="120px">
107
+ <el-input readonly v-model="orgTreeFormData.orgParentName"></el-input>
108
+ </el-form-item>
109
+ </el-col>
110
+ <el-col :span="12">
111
+ <el-form-item label="组织类型" label-width="120px">
112
+ <el-select style="width: 100%" v-model="orgTreeFormData.orgType"
113
+ :disabled="orgTypeDisabled">
114
+ <el-option v-for="item in orgTypeArr"
115
+ :label="item.label" :value="item.value" :key="item.value">
116
+ </el-option>
117
+ </el-select>
118
+ </el-form-item>
119
+ </el-col>
120
+ </el-row>
121
+ <el-row>
122
+ <el-col :span="12" v-if="ifShowClassify && orgTreeFormData.orgType != 'area'">
123
+ <el-form-item label="部门分类" label-width="120px">
124
+ <el-select style="width: 100%" v-model="orgTreeFormData.orgClassify">
125
+ <el-option v-for="item in deptTypeArr"
126
+ :label="item.label" :value="item.value" :key="item.value">
127
+
128
+ </el-option>
129
+ </el-select>
130
+ </el-form-item>
131
+ </el-col>
132
+ <el-col :span="12">
133
+ <el-form-item label="所在地区" label-width="120px">
134
+ <el-cascader style="width: 100%" v-model="orgTreeFormData.region" change-on-select :disabled="regionDisable"
135
+ :options="cascadeOptionsClone" :props="cascadeProps" :show-all-levels="false">
136
+ </el-cascader>
137
+ </el-form-item>
138
+ </el-col>
139
+ </el-row>
140
+ </el-form>
141
+ <div slot="footer" class="dialog-footer">
142
+ <el-button type="primary" @click="saveTreeForm()" size="small" icon="el-icon-success">确定</el-button>
143
+ <el-button @click="orgTreeDialog = false" size="small" icon="el-icon-error">取 消</el-button>
144
+ </div>
145
+ </el-dialog>
146
+ <el-dialog :close-on-click-modal=false title="监管地区数据校验" height="90%" width="90%" top="5vh" @close="closeSafeValidate"
147
+ class="safeValidateDialog" :visible.sync="safeValidateDialog">
148
+ <safe-validate :orgDim="currentOrgDim"></safe-validate>
149
+ </el-dialog>
150
+ </el-container>
151
+ <el-container v-else>没有权限</el-container>
152
+ </div>
153
+ </template>
154
+
155
+ <script>
156
+ import SafeValidate from "./safeValidate/safeValidate";
157
+ import SysOrgPosUserTree from "./sysOrgPosUserTree";
158
+ import SysOrgPosUserDetail from "./sysOrgPosUserDetail";
159
+
160
+ export default {
161
+ name: "sys-org-tree",
162
+ components: {SysOrgPosUserDetail, SysOrgPosUserTree, SafeValidate},
163
+ data() {
164
+ return {
165
+ currentOrgDim: "", // 当前维度
166
+ orgType: "", // 当前组织类型
167
+ orgTypeObj:{},
168
+ defaultProps: {children: 'children', label: 'orgName'},
169
+ sysOrgDimensionArr: [], // 所有维度
170
+ filterText: "", // 过滤树节点的变量
171
+ menuVisible: false, // 菜单可见
172
+ objectID: null, // 右击时节点id,如果与上次相同则菜单保持显示
173
+ orgTreeDialog: false, // 弹出form对话框
174
+ orgTypeArr: [], // 所有组织类型
175
+ deptTypeArr: [{"value": "0", "label": "普通部门"}, {"value": "1", "label": "处室"}, {
176
+ "value": "2",
177
+ "label": "安监局"
178
+ }], // 部门类型
179
+ cascadeProps: {"value": "id", "label": "dataName"}, // 地区【配置
180
+ cascadeOptions: [], // 地区选项
181
+ cascadeOptionsClone:[],
182
+ orgTreeFormData: {}, // 组织添加表单
183
+ ifShowClassify: false, // 是否显示部门分类
184
+ ognVisible: true, // 部门添加下级时无法添加组织
185
+ orgTypeDisabled: true, // 是否禁用组织类型
186
+ // orgParentNameRead:false, // 上级组织是否只读
187
+ rules: {
188
+ orgName: [{required: true, message: '请填写内容', trigger: 'blur'}]
189
+ },
190
+ pageSetting: {}, // 维度配置
191
+ searchPlaceHolder: "组织名称",
192
+ closeMainPos: false, // 关闭主岗位
193
+ closePos: false, // 关闭主岗位
194
+ safeValidateDialog: false, // 数据校验对话框
195
+ currentOrgId: "", // 当前组织id
196
+ currentObj: {}, // 当前节点数据
197
+ showTree: false, // 显示树的时机
198
+ showPosUser: false, // 显示组织岗位的时机
199
+ noAuth: false, // 没有权限
200
+ regionDisable:false, // 所在地区禁用
201
+ loginUser:{}, // 登录用户
202
+ treeRequestParam:{}, // 组织树的过滤条件
203
+ top:0,
204
+ left:0,
205
+ sysDataObj:{},
206
+ }
207
+ },
208
+ created() { // 初始化创建
209
+ let vm = this;
210
+ vm.initOriginData(); // 初始化下拉数据等,并初始化权限,仅初始化一次
211
+ },
212
+ methods: {
213
+ initOriginData() { // 初始化下拉数据等,仅初始化一次
214
+ let vm = this;
215
+ vm.noAuth = false;
216
+ vm.axios.post(vm.api.param.getSysParams, {"key": "SysDataOperation"}).then(function (res) {
217
+ let jsonOpt = JSON.parse(vm.platStringUtil.replaceAll(res.data,"'","\"") || "{}");
218
+ if (jsonOpt.opt === '否') {
219
+ vm.init();
220
+ } else {
221
+ vm.loginUser = vm.USER_GLOBAL.getLoginUser() || {};
222
+ if (vm.loginUser.userType === 'sup' || vm.loginUser.userType === 'dev') {
223
+ vm.init();
224
+ }else{
225
+ vm.axios.post(vm.api.sysOrgPosUser.find,{"userId":vm.loginUser.id}).then(posUserRes => {
226
+ if(posUserRes && posUserRes.data.length > 0){
227
+ let orgTreeId = ""; // 组织树上级
228
+ let dim = ""; // 所在维度
229
+ for(let i = 0; i<posUserRes.data.length;i++){
230
+ if(posUserRes.data[i].orgId){
231
+ if(!dim){
232
+ dim = posUserRes.data[i].orgDim;
233
+ }
234
+ if(posUserRes.data[i].orgDim==dim){
235
+ orgTreeId += ","+posUserRes.data[i].orgId;
236
+ }
237
+ }
238
+ }
239
+ if(orgTreeId.length>0){
240
+ orgTreeId = orgTreeId.substring(1);
241
+ }
242
+ vm.$set(vm.treeRequestParam,"orgParentTreeSelfs",orgTreeId);
243
+ vm.init(dim);
244
+ }else{
245
+ vm.noAuth = true; // 查不到组织架构
246
+ }
247
+ })
248
+ }
249
+ }
250
+ });
251
+ vm.axios.post(vm.api.param.getSysParams, {
252
+ 'key': 'SysOrgType'
253
+ }).then(res => { // 组织类型
254
+ if(res&&res.data){
255
+ vm.orgTypeObj = res.data;
256
+ }
257
+ if(typeof vm.orgTypeObj == 'string'){
258
+ vm.orgTypeObj = JSON.parse(vm.platStringUtil.replaceAll(vm.orgTypeObj,"'","\""));
259
+ }
260
+ Object.keys(vm.orgTypeObj).forEach(function (key) {
261
+ let obj = {};
262
+ obj["value"] = key;
263
+ obj["label"] = vm.orgTypeObj[key];
264
+ vm.orgTypeArr.push(obj);
265
+ });
266
+ });
267
+
268
+ vm.axios.post(vm.api.param.getSysParams, {'key': 'sysProvince'}).then(paramRes => {
269
+ if(paramRes && paramRes.data){
270
+ let paramJson = paramRes.data;
271
+ vm.axios.post(vm.api.data.getDataByType, {'typeId': '522eb83216004493b0e0eb729c564941'}).then(res => {
272
+ (res.data || []).forEach(sysDataObj => {
273
+ vm.sysDataObj[sysDataObj.id] = sysDataObj;
274
+ });
275
+ let result = vm.COMMON_FUNC.buildElTree(res.data||[])|| [];
276
+ if(paramJson == "-1"){
277
+ vm.cascadeOptions = result;
278
+ }else{
279
+ result.forEach(function (data) {
280
+ if (data.id == paramJson) {
281
+ let arr = [];
282
+ arr.push(data);
283
+ vm.cascadeOptions = arr;
284
+ }
285
+ });
286
+ }
287
+ });
288
+ }
289
+ });
290
+ },
291
+ init(dim) { // 初始化,dim选择的维度
292
+ let vm = this;
293
+ vm.showPosUser = false;
294
+ vm.showTree = false;
295
+ vm.sysOrgDimensionArr = [];
296
+ vm.axios.post(vm.api.sysOrgDimension.find,{"order":"sort"}).then(res => {
297
+ let data = res.data;
298
+ for (let item of data) {
299
+ if (item.isUse === '1') {
300
+ vm.sysOrgDimensionArr.push(item);
301
+ }
302
+ }
303
+ if (vm.sysOrgDimensionArr) {
304
+ if(dim){
305
+ vm.currentOrgDim = dim;
306
+ }else{
307
+ vm.currentOrgDim = vm.sysOrgDimensionArr[0].id;
308
+ }
309
+ vm.sysOrgDimensionArr.forEach(dimension => {
310
+ if(dimension.id == vm.currentOrgDim){
311
+ vm.initDimSetting(dimension);
312
+ }
313
+ });
314
+ vm.showTree = true;
315
+ vm.showPosUser = true;
316
+ }
317
+ });
318
+ },
319
+ initDimSetting(data) { // 初始化维度配置
320
+ let vm = this;
321
+ let pageSetting = {
322
+ "closeDept": false, // 设置为true时此维度下不包含部门(左侧组织树只有组织)
323
+ "allowAddUser":false, // 允许添加用户
324
+ "ognName": "组织", // 定义组织名称
325
+ "deptName": "部门", // 定义部门名称
326
+ "posName": "岗位", // 定义岗位名称
327
+ "ognOpenIcon": "saspiconfont pl-icon-organ", // 树中组织展开时使用的图标
328
+ "ognCloseIcon": "saspiconfont pl-icon-organ", // 树中组织收缩时使用的图标
329
+ "deptOpenIcon": "saspiconfont pl-icon-untitled85", // 树中组织展开时使用的图标
330
+ "deptCloseIcon": "saspiconfont pl-icon-untitled85", // 树中组织收缩时使用的图标
331
+ "closeMainPos": false, // 关闭主岗位
332
+ "posIcon": "saspiconfont pl-icon-account", // 岗位图标
333
+ "posMainIcon": "saspiconfont pl-icon-yonghu", // 主岗位图标
334
+ "chooseUserType": "" // 可选择的用户类型(默认可选择所有类型用户,如设置ent就只可以选择ent)
335
+ };
336
+ let dimSpec = JSON.parse(data["dimSpec"] || "{}");
337
+ vm.pageSetting = Object.assign({}, pageSetting, dimSpec);
338
+ vm.searchPlaceHolder = (vm.pageSetting['ognName'] || '组织') + "名称";
339
+ vm.closeMainPos = vm.pageSetting["closeMainPos"];
340
+ vm.closePos = vm.pageSetting["closePos"];
341
+ vm.orgType = vm.pageSetting["closeDept"] ? "ogn" : ""; // 关闭部门后不抓取部门数据
342
+ if(vm.orgType){
343
+ vm.$set(vm.treeRequestParam,"orgType",vm.orgType);
344
+ }
345
+ vm.$set(vm.treeRequestParam,"orgDim",vm.currentOrgDim);
346
+ },
347
+ initExpandOrignOrg(treeVm) { // 初始化展开第一级组织\
348
+ let vm = this;
349
+ let nodesMap = treeVm.getAllNode();
350
+ for (let key in nodesMap) {
351
+ if (nodesMap[key].level === 1 && nodesMap[key].data["orgType"] === 'ogn') {
352
+ nodesMap[key].expanded = true;
353
+ nodesMap[key].data.className = vm.pageSetting["ognOpenIcon"];
354
+ }
355
+ }
356
+ },
357
+ dimChange(value) { // 维度切换事件
358
+ let vm = this;
359
+ vm.currentOrgId = "$";
360
+ vm.currentObj = {};
361
+ for (let elem of vm.sysOrgDimensionArr) {
362
+ if (elem.id === value) {
363
+ vm.initDimSetting(elem);
364
+ break;
365
+ }
366
+ }
367
+ },
368
+ dealTreeData(data) { // 给节点添加自定义图标
369
+ let vm = this;
370
+ for (let elem of data) {
371
+ if (elem["orgType"] == "ogn") {
372
+ elem.className = vm.pageSetting["ognCloseIcon"] || "saspiconfont pl-icon-organ";
373
+ }
374
+ if (elem["orgType"] === "dept") {
375
+ elem.className = vm.pageSetting["deptCloseIcon"] || "saspiconfont pl-icon-untitled85";
376
+ }
377
+ }
378
+ },
379
+ filterTextCallBack() {
380
+ let vm = this;
381
+ vm.$nextTick(function () {
382
+ let nodesMap = vm.$refs.orgTreeRef.getAllNode();
383
+ for (let [key, node] of Object.entries(nodesMap)) {
384
+ if (node.expanded) {
385
+ if (node.data["orgType"] === "ogn") {
386
+ node.data.className = vm.pageSetting["ognOpenIcon"] || "saspiconfont pl-icon-organ";
387
+ }
388
+ if (node.data["orgType"] === "dept") {
389
+ node.data.className = vm.pageSetting["deptOpenIcon"] || "saspiconfont pl-icon-untitled85";
390
+ }
391
+ } else {
392
+ if (node.data["orgType"] === "ogn") {
393
+ node.data.className = vm.pageSetting["ognCloseIcon"] || "saspiconfont pl-icon-organ";
394
+ }
395
+ if (node.data["orgType"] === "dept") {
396
+ node.data.className = vm.pageSetting["deptCloseIcon"] || "saspiconfont pl-icon-untitled85";
397
+ }
398
+ }
399
+ }
400
+ });
401
+ },
402
+ treeNodeExpand(data, node, comp) {
403
+ let vm = this;
404
+ if (data.orgType === "ogn") {
405
+ data.className = vm.pageSetting["ognOpenIcon"] || "saspiconfont pl-icon-organ";
406
+ }
407
+ if (data.orgType === "dept") {
408
+ data.className = vm.pageSetting["deptOpenIcon"] || "saspiconfont pl-icon-untitled85";
409
+ }
410
+ },
411
+ treeNodeCollapse(data, node, comp) {
412
+ let vm = this;
413
+ if (data.orgType === "ogn") {
414
+ data.className = vm.pageSetting["ognCloseIcon"] || "saspiconfont pl-icon-organ";
415
+ }
416
+ if (data.orgType === "dept") {
417
+ data.className = vm.pageSetting["deptCloseIcon"] || "saspiconfont pl-icon-untitled85";
418
+ }
419
+ },
420
+ nodeClick(data, node) { // 节点点击事件
421
+ let vm = this;
422
+ vm.menuVisible = false;
423
+ vm.currentOrgId = data["id"];
424
+ vm.currentObj = Object.assign({}, data);
425
+ },
426
+ updateCallBack(updateObj) { // 修改组织信息时的回调
427
+ let vm = this;
428
+ let currentData = vm.$refs.orgTreeRef.getTreeCurrentNode();
429
+ currentData["orgName"] = updateObj["orgName"];
430
+ currentData["orgClassify"] = updateObj["orgClassify"];
431
+ },
432
+ handleRightSelect(key) { // 右键菜单选择事件
433
+ let vm = this;
434
+ switch (key) {
435
+ case 'addArea':
436
+ vm.addOrgData('area');
437
+ break;
438
+ case 'addOgn':
439
+ vm.addOrgData('ogn');
440
+ break;
441
+ case 'addDept':
442
+ vm.addOrgData('dept');
443
+ break;
444
+ case 'addRoot':
445
+ vm.addOrgData();
446
+ break;
447
+ case 'removeCurrent':
448
+ vm.removeCurrent();
449
+ break;
450
+ case 'removeCheck':
451
+ vm.removeCheck();
452
+ break;
453
+ case 'unfold': // 展开
454
+ vm.toggleTree(true);
455
+ break;
456
+ case 'retract': // 收起
457
+ vm.toggleTree(false);
458
+ break;
459
+ default:
460
+ console.log('当前选择未定义');
461
+ break;
462
+ }
463
+ },
464
+ addOrgData(type) { // 添加组织触发事件
465
+ let vm = this;
466
+ type = type ? type : 'root'; // 根节点只能添加组织
467
+ vm.ifShowClassify = false;
468
+ vm.orgTypeDisabled = true;
469
+ vm.regionDisable = false;
470
+ let treeComp = vm.$refs.orgTreeRef;
471
+ if (type === "dept" || type === "ogn" || type === "area") { // 下级部门组织
472
+ let currentNode = treeComp.getTreeNodeBykey(treeComp.getTreeCurrentNode("key")); // 当前节点
473
+ let currentData = currentNode.data; // 当前节点数据
474
+ let regionArr = []; // 地区
475
+ let arr = ["province", "city", "area", "street","community"];
476
+ for (let elem of arr) { // 设置地区,如果没有地区设置为根节点
477
+ if (currentData[elem]) {
478
+ regionArr.push(currentData[elem]);
479
+ } else {
480
+ if (!currentData["province"]) {
481
+ if(vm.cascadeOptions[0]){
482
+ regionArr.push(vm.cascadeOptions[0].id);
483
+ }
484
+ }
485
+ break;
486
+ }
487
+ }
488
+
489
+ let degree = regionArr.length > 1 ? regionArr.length : 0;
490
+ let areaArr = JSON.parse(JSON.stringify(this.cascadeOptions));
491
+ vm.setDisabled(areaArr,regionArr,degree,0); // 设置cascade层级禁用
492
+ this.cascadeOptionsClone = areaArr;
493
+ let parentTree = '';
494
+ let orgParentTree = currentData.orgParentTree;
495
+ if (!orgParentTree) { // 根节点父级树有可能是Null
496
+ parentTree = currentData.id + ",";
497
+ } else {
498
+ parentTree = orgParentTree + currentData.id + ",";
499
+ }
500
+ vm.orgTreeFormData = {
501
+ "orgParentId": currentData.id,
502
+ "orgParentTree": parentTree,
503
+ "orgDim": currentData.orgDim,
504
+ "sort": vm.getNextOrder(currentNode),
505
+ "layer": (Number(currentData.layer) + 1),
506
+ "orgParentName": currentData.orgName,
507
+ "orgType": type,
508
+ "region": regionArr
509
+ };
510
+ if (type === "dept") {
511
+ vm.ifShowClassify = true;
512
+ vm.regionDisable = true;
513
+ }
514
+ vm.$set(vm.orgTreeFormData, "orgClassify", "0");
515
+ }
516
+ if (type === 'root') { // 添加根节点
517
+ let regionArr = []; // 地区
518
+ vm.orgTypeDisabled = false; // 根节点组织类型解禁
519
+ regionArr.push((vm.cascadeOptions[0] || {}).id);
520
+ this.cascadeOptionsClone = JSON.parse(JSON.stringify(this.cascadeOptions));
521
+ vm.orgTreeFormData = {
522
+ "orgParentId": "-1", "orgParentTree": "-1,",
523
+ "orgDim": vm.currentOrgDim, "sort": vm.getRootOrder(),
524
+ "layer": "1", "orgParentName": "无", "orgType": "ogn", "region": regionArr
525
+ };// 默认选择根节点组织添加
526
+ }
527
+ vm.orgTreeDialog = true;
528
+ },
529
+ setDisabled(arr,regionArr,level,time) { // 设置下层级数据只读
530
+ if(time >= level){
531
+ return;
532
+ }
533
+ let region = regionArr[time];
534
+ time++;//层级
535
+ for(let i = arr.length - 1;i >= 0;i--){
536
+ if(arr[i] && arr[i].id != region){
537
+ arr.splice(i,1);
538
+ }
539
+ if (arr[i] && arr[i]["children"]) {
540
+ this.setDisabled(arr[i]["children"],regionArr,level,time);
541
+ }
542
+ }
543
+ },
544
+ getNextOrder(node) { // 获取下一排序
545
+ let maxOrder = 0;
546
+ node.childNodes.forEach(function (child) {
547
+ maxOrder = Number(child.data.sort) > maxOrder ? Number(child.data.sort) : maxOrder;
548
+ });
549
+ return maxOrder + 1;
550
+ },
551
+ getRootOrder() { // 获取根节点的新增数据排序
552
+ let vm = this;
553
+ let treeComp = vm.$refs.orgTreeRef;
554
+ let nodesMap = treeComp.$refs.elTree.store.nodesMap; // 获取节点集合
555
+ let rootDatas = []; //根节点集合
556
+ for (let key in nodesMap) {
557
+ if (nodesMap[key].level == 1) {
558
+ rootDatas.push(nodesMap[key].data);
559
+ }
560
+ }
561
+ let maxOrder = 0;
562
+ rootDatas.forEach(function (data) {
563
+ maxOrder = Number(data["sort"]) > maxOrder ? Number(data["sort"]) : maxOrder;
564
+ });
565
+ return maxOrder + 1;
566
+ },
567
+ removeCurrent() { // 删除当前节点
568
+ let vm = this;
569
+ let treeComp = vm.$refs.orgTreeRef;
570
+ let currentNode = treeComp.getTreeCurrentNode();
571
+ let deleteNodeArr = treeComp.getCurrentChildren(currentNode,[]);
572
+ let keys = deleteNodeArr.join(",");
573
+ vm.$confirm('确定删除当前节点?', '警告', {
574
+ confirmButtonText: '确定',
575
+ cancelButtonText: '取消',
576
+ }).then(function () {
577
+ vm.axios.post(vm.api.sysOrg.deleteByOrgIds, {"orgIds": keys}).then(function (res) {
578
+ if (res.data.operateSuccess) {
579
+ treeComp.defaultTreeRemove(currentNode.id);
580
+ }
581
+ vm.$message({
582
+ duration: 1000,
583
+ type: 'success',
584
+ message: res.data.operateMessage
585
+ })
586
+ })
587
+ })
588
+ },
589
+ removeCheck() { // 删除选中节点
590
+ let vm = this;
591
+ let treeComp = vm.$refs.orgTreeRef;
592
+ let checkedKeys = treeComp.getTreeCheckedNodes("key");
593
+ if (checkedKeys.length == 0) {
594
+ vm.$message("请选择要操作的节点!");
595
+ return;
596
+ }
597
+ vm.$confirm('确定删除已勾选节点?', '警告', {
598
+ confirmButtonText: '确定',
599
+ cancelButtonText: '取消',
600
+ }).then(function () {
601
+ vm.axios.post(vm.api.sysOrg.deleteOrgStructure, {"orgStructureIds": checkedKeys.join(",")}).then(function (res) {
602
+ if (res.data.operateSuccess) {
603
+ treeComp.defaultTreeRemove(checkedKeys);
604
+ }
605
+ vm.$message({
606
+ duration: 1000,
607
+ type: 'success',
608
+ message: res.data.operateMessage
609
+ })
610
+ })
611
+ })
612
+ },
613
+ toggleTree(mark){ // 收起
614
+ let vm = this;
615
+ let treeComp = vm.$refs.orgTreeRef;
616
+ let currentNode = treeComp.getTreeCurrentNode();
617
+ let nodesMap = treeComp.getAllNode();
618
+ let allIds = treeComp.getCurrentChildren(currentNode,[]);
619
+ allIds.forEach(item => {
620
+ (nodesMap[item] || {}).expanded = mark;
621
+ });
622
+ },
623
+ /**
624
+ * 获取当前节点的所有子集
625
+ * @param resultArr
626
+ * @param node
627
+ */
628
+ getAllChildren(resultArr,node){
629
+ if(node.childNodes && node.childNodes.length > 0){
630
+ node.childNodes.forEach(item => {
631
+ resultArr.push(item.data);
632
+ if(item.childNodes && item.childNodes.length > 0){
633
+ this.getAllChildren(resultArr,item);
634
+ }
635
+ })
636
+ }
637
+ },
638
+ treeNodeDrop(node, endNode, type) {
639
+ let vm = this;
640
+ let parentId = "";
641
+ let parentTree = "";
642
+ let layer = "";
643
+ if (type == "before" || type == "after") {
644
+ parentId = endNode.data.orgParentId;
645
+ parentTree = endNode.data.orgParentTree;
646
+ layer = endNode.level;
647
+ }
648
+ let sysOrgArr = [];
649
+ let children = [];
650
+ if (type == "inner") {
651
+ parentId = endNode.data.id;
652
+ let tree = endNode.data.orgParentTree ? endNode.data.orgParentTree : "-1"; // tree的父级树是空,根节点有出现的情况,设为-1
653
+ if(tree.lastIndexOf(",") > -1 && tree.lastIndexOf(",") == tree.length - 1){
654
+ parentTree = tree + endNode.data.id;
655
+ }else{
656
+ parentTree = tree + "," + endNode.data.id;
657
+ }
658
+ layer = endNode.level + 1;
659
+ }
660
+ if (node.data.orgParentId == parentId || !parentId || !node.data.id) { // 同级拖动或出现异常无上级数据不操作
661
+ return;
662
+ }
663
+ if(parentTree.indexOf(",") != 0){
664
+ parentTree = "," + parentTree;
665
+ }
666
+ if(parentTree.lastIndexOf(",") != (parentTree.length - 1)){
667
+ parentTree = parentTree + ",";
668
+ }
669
+ sysOrgArr.push({
670
+ "orgParentId": parentId,
671
+ "orgParentTree": parentTree,
672
+ "id": node.data.id,
673
+ "layer": layer
674
+ });
675
+
676
+ if(node.childNodes && node.childNodes.length > 0){
677
+ this.getAllChildren(children,node);
678
+ }
679
+ // 更新子类的父级树
680
+ children.forEach(eachData => {
681
+ let tempOrgParentTree = eachData.orgParentTree;
682
+ let tempIndex = tempOrgParentTree.lastIndexOf(node.data.id);
683
+ if(tempIndex > -1){
684
+ tempOrgParentTree = parentTree + tempOrgParentTree.substring(tempIndex);
685
+ let templateLayer = Number(eachData.layer) + (Number(layer) - node.level);
686
+ sysOrgArr.push({
687
+ "orgParentTree": tempOrgParentTree,
688
+ "id": eachData.id,
689
+ "layer": templateLayer
690
+ })
691
+ eachData.layer = templateLayer;
692
+ }
693
+ })
694
+
695
+ vm.axios.post(vm.api.sysOrg.batchUpdateSysOrg,{"sysOrgs":JSON.stringify(sysOrgArr)}).then(function (res) {
696
+ if (!res.data.operateSuccess) {
697
+ //操作失败重新初始化数据
698
+ vm.init(vm.currentOrgDim);
699
+ vm.$message({
700
+ duration: 1200,
701
+ message: "操作失败,已重新加载数据!",
702
+ });
703
+ } else {
704
+ node.data.orgParentId = parentId;
705
+ node.data.orgParentTree = parentTree;
706
+ }
707
+ });
708
+ },
709
+ treeAllowDrop(draggingNode, dropNode, type) {
710
+ let parentId = "";
711
+ if (type == "next" || type == "prev") {
712
+ parentId = dropNode.data.orgParentId;
713
+ }
714
+ if (type == "inner") {
715
+ parentId = dropNode.data.id;
716
+ }
717
+ if (draggingNode.data.orgParentId == parentId || !parentId || !draggingNode.data.id) { // 同级拖动或出现异常无上级数据不操作
718
+ return;
719
+ }
720
+ return true;
721
+ },
722
+ saveTreeForm() { // 保存组织表单数据
723
+ let vm = this;
724
+ //提交表单时先进行验证,验证完成后转化region至省市区
725
+ vm.$refs.orgTreeFormRef.validate(function (valid) {
726
+ if (valid) {
727
+ let submitObj = Object.assign({}, vm.orgTreeFormData); // 复制数据防止树数据污染
728
+ //转换地区数据
729
+ let region = submitObj["region"];
730
+ let objTemp = {"province": 0, "city": 1, "area": 2, "street": 3,"community":4};
731
+ for (let key in objTemp) {
732
+ submitObj[key] = region[objTemp[key]] || "";
733
+ }
734
+ if(submitObj.orgType == "area" && submitObj.region){
735
+ let sysDataId = submitObj.region[submitObj.region.length - 1];
736
+ submitObj.orgName = vm.sysDataObj[sysDataId].dataName;
737
+ }
738
+ delete submitObj["region"]; // 移除假属性region
739
+
740
+ let orgParentTree = submitObj["orgParentTree"];
741
+ if(orgParentTree.indexOf(",") != 0){
742
+ orgParentTree = "," + orgParentTree;
743
+ }
744
+ if(orgParentTree.lastIndexOf(",") != (orgParentTree.length - 1)){
745
+ orgParentTree = orgParentTree + ",";
746
+ }
747
+ submitObj["orgParentTree"] = orgParentTree;
748
+
749
+ vm.axios.post(vm.api.sysOrg.batchAdd, submitObj).then(function (res) {
750
+ if (res.data.operateSuccess) {
751
+ res.data.operateObj.forEach(function (data) {
752
+ if(data["orgType"] == "ogn"){
753
+ data.className = vm.pageSetting["ognCloseIcon"] || "saspiconfont pl-icon-organ";
754
+ }
755
+ if(data["orgType"] == "dept"){
756
+ data.className = vm.pageSetting["deptCloseIcon"] || "saspiconfont pl-icon-untitled85";
757
+ }
758
+ });
759
+ let treeComp = vm.$refs.orgTreeRef;
760
+ if (vm.pageSetting["closeDept"] && submitObj["orgType"] === "dept") { // 如果关闭了部门显示,添加时不显示在树节点,提示
761
+ vm.$message({
762
+ duration: 1500,
763
+ message: "添加成功,但由于关闭了部门,当前不显示!",
764
+ })
765
+ } else {
766
+ if (!submitObj["orgParentId"] || submitObj["orgParentId"] === '-1') { // 根节点横向插入
767
+ let nodesMap = treeComp.$refs.elTree.store.nodesMap; // 获取节点集合
768
+ let rootDatas = []; //根节点集合
769
+ for (let key in nodesMap) {
770
+ if (nodesMap[key].level === 1) {
771
+ rootDatas.push(nodesMap[key]);
772
+ }
773
+ }
774
+ let maxObj = {"id": 0};
775
+ rootDatas.forEach(function (data) {
776
+ maxObj = Number(data["id"]) > Number(maxObj["id"]) ? data : maxObj;
777
+ });
778
+ if (maxObj["id"] === 0) { // 当前没有树
779
+ treeComp.init();
780
+ } else {
781
+ treeComp.defaultTreeInsertAfter(res.data.operateObj, maxObj);
782
+ }
783
+ } else { // 子节点下级添加
784
+ treeComp.defaultTreeAppend(res.data.operateObj, submitObj["orgParentId"]);
785
+ }
786
+ vm.$message({
787
+ duration: 1000,
788
+ type: 'success',
789
+ message: res.data.operateMessage
790
+ });
791
+ }
792
+ } else {
793
+ vm.$message({
794
+ duration: 1000,
795
+ message: res.data.operateMessage
796
+ });
797
+ }
798
+ vm.orgTreeDialog = false;
799
+ });
800
+ }
801
+ })
802
+ },
803
+ rightClickNode(event, data, node) { // 右击节点事件
804
+ let expand = node.expanded;
805
+ let target = window.event.target;
806
+ if (target.tagName == 'DIV') {
807
+ target.click(); // 右键时点击当前节点
808
+ } else {
809
+ let pNode = target.parentNode;
810
+ if (target.className == 'el-checkbox__inner') { // 右击checkBox
811
+ pNode.parentNode.parentNode.click();
812
+ } else { // 右击下拉图标
813
+ pNode.click();
814
+ }
815
+ }
816
+ node.expanded = expand; // 右击仅选中当前节点保持当前节点展开情况不变
817
+ let vm = this;
818
+ vm.ognVisible = true;
819
+ if (data.orgType == 'dept') {
820
+ vm.ognVisible = false; // 部门添加下级不能添加组织
821
+ }
822
+ if (vm.objectID !== data.id) {
823
+ vm.objectID = data.id;
824
+ vm.menuVisible = true;
825
+ } else {
826
+ vm.menuVisible = !vm.menuVisible;
827
+ }
828
+ vm.left = window.event.clientX + "px";
829
+ vm.top = window.event.clientY + "px";
830
+ },
831
+ validData() {
832
+ let vm = this;
833
+ vm.safeValidateDialog = true;
834
+ },
835
+ closeSafeValidate() { // 关闭数据校验回调
836
+ let vm = this;
837
+ vm.init(vm.currentOrgDim);
838
+ },
839
+ saveRollBack(obj){//保存回调
840
+ let vm = this;
841
+ //vm.$refs.orgTreeRef.defaultTreeUpdate(obj.id, obj);
842
+ vm.$refs.orgTreeRef.init();
843
+ },
844
+ }
845
+ }
846
+ </script>
847
+
848
+ <style scoped>
849
+ #rightClickMenu {
850
+ z-index: 99;
851
+ }
852
+
853
+ .el-menu-vertical {
854
+ background-color: #555C63;
855
+ opacity: 0.9;
856
+ border-radius: 8px;
857
+ z-index: 99;
858
+ min-width: 180px;
859
+ }
860
+
861
+ .safeValidateDialog /deep/ .el-dialog__body {
862
+ height: calc(100% - 80px);
863
+ }
864
+ </style>