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,16 @@
1
+ <template>
2
+ <complex-view-rendering :resource-id="this.$route.query.resourceId"
3
+ ></complex-view-rendering>
4
+ </template>
5
+
6
+ <script>
7
+ import ComplexViewRendering from '../../../components/complexViewRendering'
8
+ export default {
9
+ name: "complex-how",
10
+ components: {ComplexViewRendering},
11
+ }
12
+ </script>
13
+
14
+ <style scoped>
15
+
16
+ </style>
@@ -0,0 +1,560 @@
1
+ <template>
2
+ <div style="width: 100%;height: 100%" @click="menuVisible = false">
3
+ <el-container style="height: 100%;position: relative">
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="addChild" class="menuItem">
12
+ <span slot="title">添加下级数据(A)</span>
13
+ </el-menu-item>
14
+ <el-menu-item index="addSame" class="menuItem">
15
+ <span slot="title">添加同级数据(C)</span>
16
+ </el-menu-item>
17
+ <hr style="color: #ffffff">
18
+ <el-menu-item index="removeCurrent" class="menuItem">
19
+ <span slot="title">删除当前节点(R)</span>
20
+ </el-menu-item>
21
+ <el-menu-item index="removeCheck" class="menuItem">
22
+ <span slot="title">删除勾选节点(D)</span>
23
+ </el-menu-item>
24
+ </el-menu>
25
+ <div class = "leftBlock">
26
+ <el-header style="height: 40px;padding: 0">
27
+ <el-input
28
+ placeholder="输入关键字进行过滤"
29
+ v-model="filterText" style="width: 209px;margin-top: 5px;" size="small">
30
+ </el-input>
31
+ <el-button @click="addNode()" style="margin-left: 15px" type="primary" icon="el-icon-circle-plus" size="small">添加</el-button>
32
+ <el-button @click="removeNode" style="margin-left: 15px" type="danger" icon="el-icon-delete" size="small">删除</el-button>
33
+ </el-header>
34
+ <el-aside class="asideTree">
35
+ <common-tree :rootDatas="rootDatas" :refreshProper="typeId" :nodekey="nodekey" ref="commonTreeRef" :defaultProps="defaultProps"
36
+ :treeAllowDrag="treeAllowDrag" :treeNodeDrop="treeNodeDrop" :tree-allow-drop="treeAllowDrop" :draggable=true
37
+ :filterText="filterText" :expandOnclickNode=false :defaulExpand="defaulExpand" :rightClick="rightClick"
38
+ :nodeClick="nodeClick" :requestUrl="api.data.getDataByType" :requestParam="{'typeId':typeId,'getOutDate':'1'}"
39
+ :default-shift-key-select=true :default-ctrl-key-select=true
40
+ >
41
+
42
+ </common-tree>
43
+ </el-aside>
44
+ </div>
45
+ <div class="rightBlock">
46
+ <el-main style="padding-top: 0;height: 100%">
47
+ <el-form :model="formData" :rules="rules" style="width: 100%" ref="submitForm" size="small" label-width="110px">
48
+ <el-form-item label="数据字典名称" prop="dataName">
49
+ <el-input type="textarea" v-model="formData.dataName" ref="dataNameTextarea" :autosize="{minRows:4,maxRows:6}"></el-input>
50
+ </el-form-item>
51
+ <el-form-item label="数据字典编码">
52
+ <el-input v-model="formData.dataCode"></el-input>
53
+ </el-form-item>
54
+ <el-form-item label="图标">
55
+ <el-input v-model="formData.dataicon" style="display: none"></el-input><el-button @click="menuIconDialog = true">
56
+ <i :class="currentIcon" style="font-size:20px"></i></el-button>
57
+ <el-button style="position: relative;top:-4px" @click="clearIcon()">清空</el-button>
58
+ </el-form-item>
59
+ <el-form-item label="字典状态">
60
+ <el-radio v-model="formData.outDate" label="0">正常</el-radio>
61
+ <el-radio v-model="formData.outDate" label="1">过期</el-radio>
62
+ </el-form-item>
63
+ <el-form-item label="描述">
64
+ <el-input type="textarea" v-model="formData.dataDesc" :autosize="{minRows:2,maxRows:4}"></el-input>
65
+ </el-form-item>
66
+ <el-form-item label="排序" prop="dataOrder">
67
+ <el-input v-model="formData.dataOrder"></el-input>
68
+ </el-form-item>
69
+ </el-form>
70
+ <el-footer style="text-align: center">
71
+ <el-button icon="el-icon-circle-check" @click="save" :disabled="saveDisabled" type="primary" size="small">保存</el-button>
72
+ </el-footer>
73
+ </el-main>
74
+ </div>
75
+ <el-dialog :close-on-click-modal=false :visible.sync="menuIconDialog" class="font-dialog" title="选择图标" width="70%" height="80%" top="10vh" :modal=false>
76
+ <font-icon :callback="getmenuIcon"></font-icon>
77
+ </el-dialog>
78
+ </el-container>
79
+ </div>
80
+ </template>
81
+ <script>
82
+ import {FontIcon} from 'sasp-base';
83
+
84
+ export default {
85
+ name: "data-manage",
86
+ components: {FontIcon},
87
+ props:{
88
+ typeId:{required:true,default:""},
89
+ typeName:{required:false,default:""},
90
+ },
91
+ data(){
92
+ return {
93
+ nodekey:'id',
94
+ filterText:'', // 需要过滤节点的关键字
95
+ rootDatas:[], // tree的根节点数据
96
+ defaultProps: { // tree中节点属性
97
+ children: 'children',
98
+ label: 'dataName',
99
+ // isLeaf: 'leaf',
100
+ },
101
+ menuVisible:false, // 右击菜单显示的控制
102
+ defaulExpand:['-1'], // 默认展开节点
103
+ orginParentId:['-1'], // 根节点id
104
+ objectID:null, // 右击时节点id,如果与上次相同则菜单保持显示
105
+ formData:{
106
+ "parentId":'-1',
107
+ "dataName":'',
108
+ "dataCode":'',
109
+ "dataicon":'',
110
+ "dataDesc":'',
111
+ "dataOrder":'',
112
+ "outDate":"0",
113
+ "id":'-1', // 默认为第一层级数据
114
+ },
115
+ loading:true, // tree控件中的加载条
116
+ shiftKeyData:'', // shift鼠标左击快捷操作
117
+ saveDisabled:false, // 保存按钮不能频繁点击
118
+ menuIconDialog:false,
119
+ currentIcon:'saspiconfont pl-icon-tuxiang',
120
+ rules:{
121
+ dataName:[
122
+ { required: true, message: '请填写内容', trigger: 'blur' }
123
+ ],
124
+ dataOrder:[
125
+ {validator:this.platValidator.checkNumber,trigger:'blur'}
126
+ ]
127
+ },
128
+ top:0,
129
+ left:0,
130
+ currentNode:{},//当前选中的节点
131
+ };
132
+ },
133
+ created(){
134
+ let vm = this;
135
+ vm.init();
136
+ document.onkeyup = function (e) { // 右键菜单快捷键
137
+ if(vm.menuVisible){
138
+ let key = e.key.toLowerCase();
139
+ switch (key) {
140
+ case "a":
141
+ vm.menuVisible = false;
142
+ vm.handleRightSelect('addChild');
143
+ break;
144
+ case "c":
145
+ vm.menuVisible = false;
146
+ vm.handleRightSelect('addSame');
147
+ break;
148
+ case "r":
149
+ vm.menuVisible = false;
150
+ vm.handleRightSelect('removeCurrent');
151
+ break;
152
+ case "d":
153
+ vm.menuVisible = false;
154
+ vm.handleRightSelect('removeCheck');
155
+ break;
156
+ default:
157
+ break;
158
+ }
159
+ }
160
+ }
161
+ },
162
+ watch:{
163
+ typeId(){
164
+ this.typeId && this.init();
165
+ },
166
+ },
167
+ methods: {
168
+ // 初始化
169
+ init() {
170
+ let vm = this;
171
+ vm.loading = true; // 每次typeId变化时初始化数据
172
+ vm.currentFinish = false;
173
+ vm.filterText = '';
174
+ vm.rootDatas = [];
175
+ vm.initFormData();
176
+ vm.rootDatas.push({
177
+ "dataName": vm.typeName,
178
+ "id": "-1",
179
+ "parentId": null,
180
+ "dataOrder": 1,
181
+ "dataState": 1,
182
+ });
183
+ vm.$nextTick(function () { // 清除表單校驗
184
+ vm.$refs.submitForm.clearValidate();
185
+ })
186
+ },
187
+ // 节点操作
188
+ addNode(key) {
189
+ key = key ? key : "addChild"; // 默认添加子元素
190
+ let vm = this;
191
+ let currentNode = vm.$refs.commonTreeRef.$refs.elTree.getCurrentNode();
192
+ let parentId = '';
193
+ if (key == 'addChild') {
194
+ if (!currentNode) { // 如果没选中默认添加第一级
195
+ parentId = '-1';
196
+ } else {
197
+ parentId = currentNode.id; // 当前选中节点的id是新增数据的父级,如果没选默认是-1
198
+ }
199
+ } else { // 添加同级数据
200
+ if (vm.orginParentId.indexOf(currentNode.id) > -1) {
201
+ vm.$message("不能添加根节点数据!");
202
+ return;
203
+ }
204
+ parentId = currentNode.parentId;
205
+ }
206
+
207
+ vm.$refs.dataNameTextarea.$el.children[0].focus(); // 焦点事件完成后设置初始化数据
208
+ vm.formData = {
209
+ "parentId": parentId,
210
+ "dataName": '',
211
+ "dataCode":'',
212
+ "dataicon": '',
213
+ "dataDesc": '',
214
+ "dataOrder": '',
215
+ "outDate":"0",
216
+ "id": '',
217
+ };
218
+ },
219
+ removeCurrentNode() { // 删除当前节点
220
+ let vm = this;
221
+ vm.$confirm('确定删除当前节点?', '警告', {
222
+ confirmButtonText: '确定',
223
+ cancelButtonText: '取消',
224
+ }).then(function () {
225
+ let currentNode = vm.$refs.commonTreeRef.$refs.elTree.getCurrentNode();
226
+ let removeNodeArr = vm.getCurrentChildren(currentNode, []);
227
+ vm.axios.post(vm.api.data.deleteData, {"ids": removeNodeArr.join(",")}).then(function (res) {
228
+ if (res.data.operateSuccess) {
229
+ vm.initTreeRootData();
230
+ vm.$refs.commonTreeRef.init();
231
+ }
232
+ vm.initFormData();
233
+ vm.$message({
234
+ duration: 1000,
235
+ type: 'success',
236
+ message: res.data.operateMessage
237
+ }
238
+ );
239
+ });
240
+ }).catch(function () {
241
+ vm.$message({
242
+ duration: 1000,
243
+ type: 'info',
244
+ message: '已取消'
245
+ });
246
+ });
247
+ },
248
+ initTreeRootData() {
249
+ let vm = this;
250
+ vm.rootDatas = [];
251
+ vm.rootDatas.push({
252
+ "dataName": vm.typeName,
253
+ "id": "-1",
254
+ "parentId": null,
255
+ "dataOrder": 1,
256
+ "dataState": 1,
257
+ });
258
+ },
259
+ removeNode() { // 刪除勾選節點
260
+ let vm = this;
261
+ let removeArr = vm.$refs.commonTreeRef.getTreeCheckedNodes("key");
262
+ if (removeArr.length == 0) {
263
+ vm.$message("请勾选需要删除的节点!");
264
+ return;
265
+ }
266
+ vm.$confirm('确定删除已勾选节点?', '警告', {
267
+ confirmButtonText: '确定',
268
+ cancelButtonText: '取消',
269
+ }).then(function () {
270
+ vm.axios.post(vm.api.data.deleteData, {"ids": removeArr.join(",")}).then(function (res) {
271
+ if (res.data.operateSuccess) {
272
+ vm.$refs.commonTreeRef.defaultTreeRemove(removeArr);
273
+ /* vm.initTreeRootData();
274
+ vm.$refs.commonTreeRef.init();*/
275
+ }
276
+ vm.$message({
277
+ duration: 1000,
278
+ type: 'success',
279
+ message: res.data.operateMessage
280
+ }
281
+ );
282
+ vm.initFormData();
283
+ })
284
+ }).catch(function () {
285
+ vm.$message({
286
+ duration: 1000,
287
+ type: 'info',
288
+ message: '已取消'
289
+ });
290
+ });
291
+ },
292
+ save() { // 提交
293
+ let vm = this;
294
+ let submitData = {};
295
+ Object.assign(submitData, vm.formData);
296
+ if (submitData.id == '-1') { // 如果是-1说明是进来什么都没做直接添加的,置空
297
+ submitData.id = '';
298
+ }
299
+
300
+ if (!submitData.parentId) {
301
+ vm.$message("请选择对应操作节点后再执行添加!");
302
+ return;
303
+ }
304
+
305
+ if (!submitData.dataOrder && submitData.dataOrder != 0) {//dataOrder没写,获取当前同级节点的数量,从0开始。不+1
306
+ submitData.dataOrder = vm.$refs.commonTreeRef.$refs.elTree.store.nodesMap[submitData.parentId].data.children.length;
307
+ }
308
+ submitData.dataOrder = Number(submitData.dataOrder);
309
+ vm.$refs.submitForm.validate(function (valid) {
310
+ if (!valid) { // 验证不通过返回
311
+ return;
312
+ }
313
+ vm.saveDisabled = true; // 设置按钮不可点击
314
+ submitData.typeId = vm.typeId; // 设置typeId
315
+ if (submitData.id) { // 修改
316
+ let children=[];
317
+ if(vm.currentNode.children){
318
+ children=vm.currentNode.children;
319
+ }
320
+ vm.axios.post(vm.api.data.update, submitData).then(function (res) {
321
+ vm.saveDisabled = false;
322
+ if (res.data.operateSuccess) {
323
+ // vm.$refs.commonTreeRef.init();
324
+ let obj=res.data.operateObj||{};
325
+ let node = vm.$refs.commonTreeRef.getNode(obj.id);
326
+ Object.assign(node.data,obj)
327
+ if(children.length>0){
328
+ obj.children=children;
329
+ }
330
+ // vm.$set( vm.rootDatas[0].children[0].children[0],"dataName","aaa")
331
+ vm.$refs.commonTreeRef.defaultTreeUpdate(obj.id, obj);
332
+ // 根据 data 获取tree组件中的 node
333
+ setTimeout(()=>{
334
+ vm.defaulExpand=Object.assign([],obj.id)
335
+ vm.nodeClick(obj,node);
336
+ },0)
337
+ }
338
+ vm.$message({
339
+ duration: 1000,
340
+ type: 'success',
341
+ message: res.data.operateMessage
342
+ }
343
+ );
344
+ });
345
+ } else {//新增
346
+ vm.axios.post(vm.api.data.add, submitData).then(function (res) {
347
+ vm.saveDisabled = false;
348
+ if (res.data.operateSuccess) {
349
+ //vm.$refs.commonTreeRef.init();
350
+ let obj= res.data.operateObj[0]||{};
351
+ let parentCode=obj.parentId||"";
352
+ vm.$refs.commonTreeRef.defaultTreeAppend(res.data.operateObj, parentCode);
353
+ // 根据 data 获取tree组件中的 node
354
+ let node = vm.$refs.commonTreeRef.getNode(obj);
355
+ vm.nodeClick(obj,node);
356
+ vm.$refs.commonTreeRef.setTreeCurrentKey(obj.id);
357
+ }
358
+ vm.$message({
359
+ duration: 1000,
360
+ type: 'success',
361
+ message: res.data.operateMessage
362
+ }
363
+ );
364
+ });
365
+ }
366
+ vm.initFormData();
367
+ setTimeout(function () { // 添加修改异常时 1.5秒后解除按钮禁用
368
+ vm.saveDisabled = false;
369
+ }, 1500);
370
+ });
371
+ },
372
+ getCurrentChildren(node, allNodeArr) { // 获取指定节点的所有下级(包括自己)的id
373
+ let childProper = "children";
374
+ if (node.id != '-1') {
375
+ allNodeArr.push(node.id);
376
+ }
377
+ if (node[childProper] && node[childProper].length > 0) {
378
+ for (let elem of node[childProper]) {
379
+ this.getCurrentChildren(elem, allNodeArr);
380
+ }
381
+ }
382
+ return allNodeArr;
383
+ },
384
+ //初始化表单数据
385
+ initFormData() {
386
+ let vm = this;
387
+ vm.formData = {
388
+ "parentId": '-1',
389
+ "dataName": '',
390
+ "dataCode":'',
391
+ "dataicon": '',
392
+ "dataDesc": '',
393
+ "dataOrder": '',
394
+ "outDate":"0",
395
+ "id": '-1', // 默认为第一层级数据
396
+ };
397
+ vm.currentIcon = 'saspiconfont pl-icon-tuxiang';
398
+ },
399
+ // 树拖拽操作
400
+ treeAllowDrop(draggingNode, dropNode, type) { // 允许拖动的位置
401
+ let vm = this;
402
+ return !((type == 'next' || type == 'prev') && vm.orginParentId.indexOf(dropNode.data.id) > -1);
403
+ },
404
+ treeAllowDrag(node) { // 允许拖动的节点
405
+ let vm = this;
406
+ return vm.orginParentId.indexOf(node.data.id) <= -1;
407
+ },
408
+ treeNodeDrop(node, endNode, type) { // 拖拽完成后修改数据
409
+ let vm = this;
410
+ let parentId = '';
411
+ if (type == 'inner') {
412
+ parentId = endNode.data.id; // 下级
413
+ }
414
+ if (type == 'before' || type == 'after') {
415
+ parentId = endNode.data.parentId; // 同级
416
+ }
417
+ if (node.data.parentId == parentId || !parentId || !node.data.id) { // 同级拖动或出现异常无上级数据不操作
418
+ return;
419
+ }
420
+ node.data.parentId = parentId; // 修改当前树节点的数据
421
+ vm.axios.post(vm.api.data.update, {
422
+ "parentId": parentId,
423
+ "id": node.data.id,
424
+ "typeId": vm.typeId
425
+ }).then(function () {
426
+ vm.$refs.commonTreeRef.init();//重新渲染树,这样是为了重新将eltree节点排序,以进行节点快捷选择
427
+ }); // 修改实际数据
428
+ },
429
+ handleRightSelect(key) {
430
+ let vm = this;
431
+ switch (key) {
432
+ case "addChild":
433
+ case "addSame":
434
+ vm.addNode(key);
435
+ break;
436
+ case "removeCurrent":
437
+ vm.removeCurrentNode();
438
+ break;
439
+ case "removeCheck":
440
+ vm.removeNode();
441
+ break;
442
+ default:
443
+ console.log("未检测到当前操作的对应方法!");
444
+ break;
445
+ }
446
+ },
447
+ nodeClick(data, node) { // 节点点击事件
448
+ let vm = this;
449
+ vm.menuVisible = false;
450
+ vm.currentNode=JSON.parse(JSON.stringify(node.data));
451
+ if (data["id"] != '-1') { // 根节点不参与修改,因为它不是真实数据
452
+ if(!data.outDate){
453
+ data.outDate = "0";
454
+ }
455
+ let submitArr = ["id", "parentId", "dataOrder", "dataState", "dataicon", "dataName", "dataCode", "dataDesc","outDate"];
456
+ for (let elem of submitArr) {
457
+ vm.formData[elem] = data[elem];// 复制数据
458
+ }
459
+ vm.currentIcon = vm.formData["dataicon"] || "saspiconfont pl-icon-tuxiang";
460
+ } else {
461
+ node.expanded = !node.expanded;
462
+ vm.initFormData();
463
+ }
464
+ },
465
+ rightClick(event, data, node) { // 右击菜单事件
466
+ let expand = node.expanded;
467
+ let target = window.event.target;
468
+ if (target.tagName == 'DIV') {
469
+ target.click(); // 右键时点击当前节点
470
+ } else {
471
+ let pNode = target.parentNode;
472
+ if (target.className == 'el-checkbox__inner') { // 右击checkBox
473
+ pNode.parentNode.parentNode.click();
474
+ } else { // 右击下拉图标
475
+ pNode.click();
476
+ }
477
+ }
478
+ node.expanded = expand; // 右击仅选中当前节点保持当前节点展开情况不变
479
+ let vm = this;
480
+ if (vm.objectID !== data.id) {
481
+ vm.objectID = data.id;
482
+ vm.menuVisible = true;
483
+ } else {
484
+ vm.menuVisible = !vm.menuVisible;
485
+ }
486
+ vm.left = window.event.clientX + "px";
487
+ vm.top = window.event.clientY + "px";
488
+ },
489
+ getmenuIcon(icon) {
490
+ let vm = this;
491
+ if(icon.startsWith("el-icon-")){
492
+ vm.formData.dataicon = icon;
493
+ vm.currentIcon = icon;
494
+ }else{
495
+ vm.formData.dataicon = 'saspiconfont ' + icon;
496
+ vm.currentIcon = 'saspiconfont ' + icon;
497
+ }
498
+ vm.menuIconDialog = false;
499
+ },
500
+ clearIcon() { // 清空图标
501
+ let vm = this;
502
+ vm.formData.dataicon = '';
503
+ vm.currentIcon = 'saspiconfont pl-icon-tuxiang';
504
+ }
505
+ }
506
+ }
507
+ </script>
508
+ <style>
509
+ .el-menu-vertical .el-menu-item{
510
+ height: 40px;
511
+ line-height: 40px;
512
+ font-size: 14px;
513
+ }
514
+ </style>
515
+
516
+ <style scoped>
517
+ .el-menu-vertical{
518
+ background-color: #555C63;
519
+ opacity: 0.9;
520
+ border-radius: 8px;
521
+ width: 150px;
522
+ z-index: 99;
523
+ }
524
+ .leftBlock,.rightBlock{
525
+ box-sizing: border-box;
526
+ height: 100%;
527
+ padding: 5px;
528
+ border:1px solid #DCDFE6;
529
+ margin-top: -5px;
530
+ }
531
+ .leftBlock{
532
+ width: 400px;
533
+ border-right-width: 0;
534
+ border-radius: 8px 0 0 8px;
535
+ }
536
+ .rightBlock{
537
+ width: calc(100% - 400px);
538
+ float: right;
539
+ border-radius: 0 8px 8px 0;
540
+ }
541
+ .asideTree{
542
+ overflow-y: auto;
543
+ width: 100%!important;
544
+ height:calc(100% - 45px);
545
+ position: relative;
546
+ margin-top: 10px;
547
+ }
548
+ .asideTree /deep/ .el-tree > .el-tree-node > .el-tree-node__content { /* 选中第一级菜单 */
549
+ background-color: #1A598A;
550
+ text-decoration: none;
551
+ border: 1px silver solid;
552
+ color: #fff;
553
+ text-align: center;
554
+ height: 35px;
555
+ }
556
+ .font-dialog /deep/ .el-dialog__body{
557
+ padding: 0;
558
+ height: calc(100% - 50px);
559
+ }
560
+ </style>