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,469 @@
1
+ <template>
2
+ <el-container style="height: 100%" class="topContain">
3
+ <el-header style="height: auto">
4
+ <div style="background-color: #F2F2F2;">
5
+ <i class="saspiconfont pl-icon-comment"></i>该部分操作用于校验系统所在行政区划与监管地区以及组织架构的差异;
6
+ </div>
7
+ <div style="width: 100%">
8
+ <div class="data-title">
9
+ 缺失数据
10
+ <el-button size="small" type="primary" @click="getMissingInfo" :disabled="repaireDisabled">获取</el-button>
11
+ <el-button size="small" type="primary" @click="dealTnsertData" :disabled="repaireDisabled">修复</el-button>
12
+ </div>
13
+ <div class="data-title">
14
+ 无效数据
15
+ <el-button size="small" type="primary" @click="getInvalidData" :disabled="repaireDisabled">获取</el-button>
16
+ <el-button size="small" type="primary" @click="deleteInvalidData" :disabled="repaireDisabled">修复</el-button>
17
+ </div>
18
+ <div v-if="!loading" class="number-reparie">
19
+ <label>
20
+ <input type="checkbox" @click="repaireAllChange" v-if="repaireNumber>0" v-model="repaireAllCheck"/>共{{repaireNumber}}条数据待修复
21
+ </label>
22
+ </div>
23
+ <div v-if="!removeLoading" class="number-remove">
24
+ <label>
25
+ <input type="checkbox" @click="removeAllChange" v-if="removeNumber>0" v-model="removeAllCheck"/>共{{removeNumber}}条数据待删除
26
+ </label>
27
+ </div>
28
+ </div>
29
+ </el-header>
30
+ <el-container style="position: relative;border: 1px solid #c2c2c2;box-sizing: border-box;padding: 10px;height: calc(100% - 200px)">
31
+ <el-aside v-loading="loading" style="width: 50%;box-sizing: border-box;position: relative" class="validate-aside">
32
+ <fieldset>
33
+ <legend>第一级别</legend>
34
+ <table ref="degreeOneRef" element-loading-text="加载中">
35
+ <tr v-for="item in degreeOne">
36
+ <td>
37
+ <label>
38
+ <input type='checkbox' v-model="item.check" :value="item.id" @click="clickCheck(item)"
39
+ @change="repaireChange(item)" style="margin-right: 2px"/>{{item.regionName}}
40
+ </label>
41
+ </td>
42
+ </tr>
43
+ <tr v-if="degreeOne.length == 0">
44
+ <td>
45
+ 恭喜您,未发现需要修复的数据!
46
+ </td>
47
+ </tr>
48
+ </table>
49
+ </fieldset>
50
+ <fieldset>
51
+ <legend>第二级别</legend>
52
+ <table ref="degreeTwoRef">
53
+ <tr v-for="item in degreeTwo">
54
+ <td>
55
+ <label>
56
+ <input type='checkbox' v-model="item.check" @click="clickCheck(item)"
57
+ @change="repaireChange(item)" style="margin-right: 2px"/>{{item.regionName}}
58
+ </label>
59
+ </td>
60
+ </tr>
61
+ <tr v-if="degreeTwo.length == 0">
62
+ <td>
63
+ 恭喜您,未发现需要修复的数据!
64
+ </td>
65
+ </tr>
66
+ </table>
67
+ </fieldset>
68
+ <fieldset>
69
+ <legend>第三级别</legend>
70
+ <table ref="degreeThreeRef">
71
+ <tr v-for="item in degreeThree">
72
+ <td>
73
+ <label>
74
+ <input type='checkbox' v-model="item.check" @click="clickCheck(item)"
75
+ @change="repaireChange(item)" style="margin-right: 2px"/>{{item.regionName}}
76
+ </label>
77
+ </td>
78
+ </tr>
79
+ <tr v-if="degreeThree.length == 0">
80
+ <td>
81
+ 恭喜您,未发现需要修复的数据!
82
+ </td>
83
+ </tr>
84
+ </table>
85
+ </fieldset>
86
+ <fieldset>
87
+ <legend>第四级别</legend>
88
+ <table ref="degreeFourRef">
89
+ <tr v-for="item in degreeFour">
90
+ <td>
91
+ <label>
92
+ <input type='checkbox' v-model="item.check" @click="clickCheck(item)"
93
+ @change="repaireChange(item)" style="margin-right: 2px"/>{{item.regionName}}
94
+ </label>
95
+ </td>
96
+ </tr>
97
+ <tr v-if="degreeFour.length == 0">
98
+ <td>
99
+ 恭喜您,未发现需要修复的数据!
100
+ </td>
101
+ </tr>
102
+ </table>
103
+ </fieldset>
104
+ <fieldset>
105
+ <legend>第五级别</legend>
106
+ <table ref="degreeFiveRef">
107
+ <tr v-for="item in degreeFive">
108
+ <td>
109
+ <label>
110
+ <input type='checkbox' v-model="item.check" @click="clickCheck(item)"
111
+ @change="repaireChange(item)" style="margin-right: 2px"/>{{item.regionName}}
112
+ </label>
113
+ </td>
114
+ </tr>
115
+ <tr v-if="degreeFour.length == 0">
116
+ <td>
117
+ 恭喜您,未发现需要修复的数据!
118
+ </td>
119
+ </tr>
120
+ </table>
121
+ </fieldset>
122
+ </el-aside>
123
+ <el-main style="padding: 0 10px;box-sizing: border-box;">
124
+ <fieldset>
125
+ <legend>待删除</legend>
126
+ <table ref="removeRef" v-loading="removeLoading" element-loading-text="加载中" style="width: 100%">
127
+ <tr v-for="item in removeData">
128
+ <td>
129
+ <label>
130
+ <input type='checkbox' v-model="item.check" @click="clickRemoveCheck(item)" style="margin-right: 2px"/>{{item.showMark}}
131
+ </label>
132
+ </td>
133
+ </tr>
134
+ <tr v-if="removeData.length == 0">
135
+ <td>
136
+ 恭喜您,未发现需要删除的数据!
137
+ </td>
138
+ </tr>
139
+ </table>
140
+ </fieldset>
141
+ </el-main>
142
+ </el-container>
143
+ <!-- <el-footer style="text-align: center;line-height: 80px">-->
144
+ <!-- <el-button type="primary" @click="repaire" :disabled="repaireDisabled">修复数据</el-button>-->
145
+ <!-- </el-footer>-->
146
+ </el-container>
147
+ </template>
148
+
149
+ <script>
150
+ export default {
151
+ name: "safe-validate",
152
+ props:{
153
+ orgDim:{required:true,type:String} // 维度
154
+ },
155
+ data(){
156
+ return {
157
+ degreeOne:[], // 第一层级table数据
158
+ degreeTwo:[], // 第二层级table数据
159
+ degreeThree:[], // 第三层级table数据
160
+ degreeFour:[], // 第四层级table数据
161
+ degreeFive:[],
162
+ removeData:[], // 待删除的数据
163
+ repaireNumber:0, // 待修复数据数量
164
+ removeNumber:0, // 待删除数据数量
165
+ loading:false, // 加载条
166
+ removeLoading:false, // 加载条
167
+ needRepaireData:[], // 选中修复的数据
168
+ needRemoveData:[], // 选中删除的数据
169
+ repaireAllCheck:false,
170
+ removeAllCheck:false,
171
+ repaireDisabled:false,
172
+ }
173
+ },
174
+ created(){
175
+ this.init();
176
+ },
177
+ watch:{
178
+ orgDim(){
179
+ this.orgDim && this.init();
180
+ }
181
+ },
182
+ methods:{
183
+ init(callback){
184
+
185
+ },
186
+ getMissingInfo(){
187
+ let vm = this;
188
+ let arr = ["degreeOne","degreeTwo","degreeThree","degreeFour","degreeFive"];
189
+ arr.forEach(function (param) {
190
+ vm[param] = [];
191
+ });
192
+ vm.loading = true;
193
+ vm.repaireAllCheck = false;
194
+ vm.axios.post(vm.api.sysOrg.validInsert,
195
+ {
196
+ "orgDim":vm.orgDim,
197
+ "orderSql":"TB.REGION_TIER,TB.REGIONS,TB.PROVINCE DESC,TB.CITY DESC,TB.AREA DESC,TB.STREET DESC,TB.COMMUNITY DESC"
198
+ }).then(function (resInsert) {
199
+ vm.repaireNumber = 0;
200
+ let obj = {"1":"degreeOne","2":"degreeTwo","3":"degreeThree","4":"degreeFour","5":"degreeFive"};
201
+ let xzqharr = ["provinceName","cityName","areaName","streetName","communityName"];
202
+ if(resInsert.data.length>0){
203
+ vm.repaireNumber = resInsert.data.length;
204
+ let regionId = "";
205
+ let regionName = "";
206
+ let currentDq = "0";
207
+ resInsert.data.forEach(item =>{
208
+ if(item.community){
209
+ currentDq = "5";
210
+ }else if(item.street){
211
+ currentDq = "4";
212
+ }else if(item.area){
213
+ currentDq = "3";
214
+ }else if(item.city){
215
+ currentDq = "2";
216
+ }else if(item.province){
217
+ currentDq = "1";
218
+ }
219
+ regionId = item.community||item.street||item.area||item.city||item.province;
220
+ regionName = "";
221
+ xzqharr.forEach(function (result) {
222
+ item[result] && (regionName += "-"+item[result]);
223
+ });
224
+ regionName && (regionName = regionName.substring(1));
225
+ item["regionName"] = regionName;
226
+ item["check"] = false; // checkbox是否选中
227
+ obj[currentDq] && vm[obj[currentDq]].push(item);
228
+ })
229
+ }
230
+ vm.loading = false;
231
+ });
232
+ },
233
+ dealTnsertData(){
234
+ let vm = this;
235
+ let arr = ["degreeOne","degreeTwo","degreeThree","degreeFour","degreeFive"];
236
+ let allData = {};
237
+ let ids = "";
238
+ arr.forEach(function (name) {
239
+ ids = "";
240
+ vm[name].forEach(function (data) {
241
+ if(data["check"]){
242
+ ids += "," + data.id;
243
+ }
244
+ });
245
+ if(ids){
246
+ ids = ids.substring(1);
247
+ }
248
+ allData[name] = ids;
249
+ });
250
+ if(!allData||Object.keys(allData).length == 0){
251
+ vm.$message("请选择需要修复的数据!");
252
+ return;
253
+ }
254
+ vm.repaireDisabled = true; // 按钮禁用
255
+ vm.loading = true;
256
+ vm.axios.post(vm.api.sysOrg.initOrgData, {
257
+ "oneregionIds": allData["degreeOne"],
258
+ "tworegionIds": allData["degreeTwo"],
259
+ "threeregionIds": allData["degreeThree"],
260
+ "fourregionIds": allData["degreeFour"],
261
+ "fiveregionIds": allData["degreeFive"],
262
+ "orgDim": vm.orgDim
263
+ }).then(data=>{
264
+ let insertflag=data.data.operateSuccess;
265
+ vm.getMissingInfo();
266
+ vm.repaireDisabled = false;
267
+ (insertflag)?vm.$message("修复数据成功!"):vm.$message("修复数据失败!");
268
+ });
269
+ },
270
+ getInvalidData(){
271
+ let vm = this;
272
+ vm.removeLoading = true;
273
+ vm.removeAllCheck = false;
274
+ vm.axios.post(vm.api.sysOrg.validRemove,{"orgDim":vm.orgDim}).then(function (res) {
275
+ vm.removeData = res.data;
276
+ res.data.forEach(function (data) {
277
+ data["mark"] && data["mark"].indexOf("$$$$") > -1 && (data["showMark"] = data["mark"].split("$$$$")[0]
278
+ + "---[" + data["mark"].split("$$$$")[1] + "]");
279
+ data["check"] = false;
280
+ });
281
+ vm.removeNumber = res.data.length;
282
+ vm.removeLoading = false;
283
+ });
284
+ },
285
+ deleteInvalidData(){
286
+ let vm = this;
287
+ let deleteIds = "";
288
+
289
+ vm.removeData.forEach(function (data) {
290
+ if(data["check"]){
291
+ deleteIds += ","+data["id"];
292
+ }
293
+ });
294
+ if(!deleteIds){
295
+ vm.$message("请选择需要删除的数据!");
296
+ return;
297
+ }else{
298
+ deleteIds = deleteIds.substring(1);
299
+ }
300
+ vm.removeLoading = true;
301
+ vm.axios.post(vm.api.sysOrg.removeOrgData,{"deleteIds":deleteIds}).then(function (res) {
302
+ if(res.data.operateSuccess){
303
+ vm.getInvalidData();
304
+ vm.removeLoading = false;
305
+ vm.repaireDisabled = false;
306
+ vm.$message("修复成功!");
307
+ }else{
308
+ vm.getInvalidData();
309
+ vm.removeLoading = false;
310
+ vm.repaireDisabled = false;
311
+ vm.$message("修复失败!");
312
+ }
313
+ })
314
+ },
315
+ repaireAllChange(){
316
+ let checked = window.event.target.checked;
317
+ let vm = this;
318
+ let arr = ["degreeOne","degreeTwo","degreeThree","degreeFour","degreeFive"];
319
+ arr.forEach(function (name) {
320
+ vm[name].forEach(function (data) {
321
+ data["check"] = checked;
322
+ })
323
+ });
324
+ },
325
+ removeAllChange(){
326
+ let checked = window.event.target.checked;
327
+ let vm = this;
328
+ let arr = ["removeData"];
329
+ arr.forEach(function (name) {
330
+ vm[name].forEach(function (data) {
331
+ data["check"] = checked;
332
+ })
333
+ });
334
+ },
335
+ clickCheck(item){
336
+ let vm = this;
337
+ vm.$nextTick(function () {
338
+ let checked = item.check;
339
+ if(!checked){
340
+ vm.repaireAllCheck = checked;
341
+ }else{
342
+ let arr = ["degreeOne","degreeTwo","degreeThree","degreeFour","degreeFive"];
343
+ vm.repaireAllCheck = vm.checkAllClick(arr);
344
+ }
345
+ })
346
+ },
347
+ clickRemoveCheck(item){
348
+ let vm = this;
349
+ vm.$nextTick(function () {
350
+ let checked = item.check;
351
+ if(!checked){
352
+ vm.removeAllCheck = checked;
353
+ }else{
354
+ let arr = ["removeData"];
355
+ vm.removeAllCheck = vm.checkAllClick(arr);
356
+ }
357
+ });
358
+ },
359
+ checkAllClick(arr){
360
+ let vm = this;
361
+ let flag = true;
362
+ for(let name of arr){
363
+ let nameFlag = false;
364
+ for(let data of vm[name]){
365
+ if(!data['check']){ // 有没选中的
366
+ nameFlag = true;
367
+ flag = false;
368
+ break;
369
+ }
370
+ }
371
+ if(nameFlag){
372
+ break;
373
+ }
374
+ }
375
+ return flag;
376
+ },
377
+
378
+ repaireChange(item){ // 修复数据时选中下级要选中上级
379
+ let vm = this;
380
+ let regions = item.regions?item.regions.split(","):[];
381
+ let allData = vm.degreeOne.concat(vm.degreeTwo).concat(vm.degreeThree).concat(vm.degreeFour);
382
+ if(item.check){ //选中子类选中父类
383
+ regions.forEach(function (region) {
384
+ for(let data of allData){
385
+ if(data.id == region){
386
+ data["check"] = true;
387
+ break;
388
+ }
389
+ }
390
+ })
391
+ }else{ // 子类取消父类若没有下级了则清空
392
+ if(regions.length >= 2){
393
+ regions = regions.reverse().slice(1); //若当前层级为2或更多有父类才进行操作
394
+ regions.forEach(function (region) {
395
+ let count = 0;
396
+ for(let data of allData){
397
+ let tempRegions = data["regions"];
398
+ if(data["check"] && tempRegions.indexOf(region) > -1){
399
+ tempRegions = tempRegions?tempRegions.split(","):[];
400
+ if(tempRegions.indexOf(region) != tempRegions.length-1){ // 不取消选中
401
+ count++;
402
+ break;
403
+ }
404
+ }
405
+ }
406
+ if(count === 0){ // 取消选中
407
+ for(let data of allData){
408
+ if(data.id == region){
409
+ data["check"] = false;
410
+ break;
411
+ }
412
+ }
413
+ }
414
+ });
415
+ }
416
+ }
417
+ },
418
+ }
419
+ }
420
+ </script>
421
+
422
+ <style scoped>
423
+ .data-title{
424
+ width: 50%;float: left;text-align: center;
425
+ }
426
+ .number-reparie,.number-remove{
427
+ width: 50%;text-align: left;font-size: 15px;box-sizing: border-box;font-weight: normal;
428
+ }
429
+ .number-reparie{
430
+ float: left;padding-left: 14px;
431
+ }
432
+ .number-remove{
433
+ float: right;padding-left: 24px;
434
+ }
435
+ .validate-aside .el-table{
436
+ margin-bottom: 5px;
437
+ }
438
+ .validate-aside{
439
+ padding: 0 10px 0 0;
440
+ }
441
+ label:hover{
442
+ cursor: pointer;
443
+ }
444
+ header{
445
+ line-height: 40px;font-weight: bold;font-size: 16px;
446
+ }
447
+ fieldset{
448
+ border:1px solid #c2c2c2;padding: 0 10px 10px;margin-bottom: 10px;
449
+ }
450
+ tr{
451
+ height: 30px;
452
+ font-size: 15px;
453
+ }
454
+ legend{
455
+ margin-left: 18px;
456
+ }
457
+
458
+ input[type='checkbox']{
459
+ width: 14px;
460
+ height: 14px;
461
+ background-color: #fff;
462
+ /*-webkit-appearance:none;*/
463
+ border: 1px solid #c9c9c9;
464
+ border-radius: 2px;
465
+ outline: none;
466
+ position: relative;
467
+ top: 2px;
468
+ }
469
+ </style>