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,226 @@
1
+ <template>
2
+ <div style="width: 100%;height: 100%;">
3
+ <el-card class="box-card">
4
+ <div slot="header" class="clearfix" style="text-align: center;">
5
+ <div style="float:left;padding-left: 20px;box-sizing: border-box;">
6
+ <el-checkbox v-model="checkAll" true-label="1" false-label="0" @change="checkAllData">全选</el-checkbox>
7
+ </div>
8
+ <span style="font-size: 16px;">{{cardTitle}}</span>
9
+ </div>
10
+ <el-tree ref="elTree"
11
+ class="tree"
12
+ :data="powerDataTree"
13
+ node-key="id"
14
+ :props="defaultProps"
15
+ default-expand-all
16
+ show-checkbox
17
+ :render-content="renderOperateContent"
18
+ @check="checkNode">
19
+ </el-tree>
20
+ </el-card>
21
+ </div>
22
+ </template>
23
+
24
+ <script>
25
+ export default {
26
+ name: "roleMenuPower",
27
+ props:{
28
+ cardTitle:{type:String,default:"操作权限"},//卡片名称
29
+ powerData:{type:Array,default:() => {return [];}},//数据(最底层数据)
30
+ powerDataTree:{type:Array,default:() => {return [];}},//数据(树数据)
31
+ currentClickNode:{type:Object,default:() => {return {};}},//当前点击节点
32
+ type:{type:String,default:""},//类型
33
+ checkOptPower:{type:Object,default:() => {return {};}},//勾选的菜单操作权限
34
+ checkDataPower:{type:Object,default:() => {return {};}},//勾选的菜单数据权限
35
+ operationAddObj:{type:Object,default:() => {return {};}},//新增的操作权限
36
+ operationDeleteObj:{type:Object,default:() => {return {};}},//删除的操作权限
37
+ },
38
+ data(){
39
+ return {
40
+ checkAll:"0",
41
+ defaultProps:{children: 'children', label: 'powerName',id:"id"},
42
+ checkedData:[],//选中节点
43
+ ownOptLastData:[],
44
+ }
45
+ },
46
+ created(){
47
+ },
48
+
49
+ mounted(){
50
+ let id = this.currentClickNode.id || this.currentClickNode.key;
51
+ let checkData = [];
52
+ if(this.type == "opt"){
53
+ checkData = this.checkOptPower[id];
54
+ }else{
55
+ checkData = this.checkDataPower[id];
56
+ }
57
+ if(checkData){
58
+ this.$refs.elTree && this.$refs.elTree.setCheckedKeys(checkData);
59
+ }else{
60
+ this.checkAll = "1";
61
+ this.checkAllData("1");
62
+ }
63
+ let halfKey = this.$refs.elTree.getHalfCheckedKeys();
64
+ this.isCheckAll(halfKey,checkData);
65
+
66
+ if(this.powerDataTree.length!=0 && this.powerDataTree.length==this.$refs.elTree.getCheckedKeys().length){
67
+ this.checkAll = "1";
68
+ }else{
69
+ this.checkAll = "0";
70
+ }
71
+ },
72
+
73
+ methods:{
74
+ checkAllData(value){
75
+ let id = this.currentClickNode.id || this.currentClickNode.key;
76
+ this.checkedData = [];
77
+ if(value == "1"){ //全选
78
+ this.checkedData = (this.powerData);
79
+ if(this.type == "opt"){
80
+ this.checkOptPower[id] = this.powerData;
81
+ }else{
82
+ this.checkDataPower[id] = this.powerData;
83
+ }
84
+ }else{ //取消全选
85
+ this.checkedData = [];
86
+ this.$set(this.currentClickNode,"optPower",[]);
87
+ if(this.type == "opt"){
88
+ this.checkOptPower[id] = "";
89
+ }else{
90
+ this.checkDataPower[id] = "";
91
+ }
92
+ }
93
+ this.$refs.elTree && this.$refs.elTree.setCheckedKeys(this.checkedData);
94
+ },
95
+
96
+ checkNode(data,checked){
97
+ let checkedPower = [];
98
+ let checkedKeys = checked.checkedKeys || [];
99
+ checkedKeys.forEach(item => {
100
+ if(this.powerData.indexOf(item) > -1){
101
+ checkedPower.push(item);
102
+ }
103
+ });
104
+ let id = this.currentClickNode.id || this.currentClickNode.key;
105
+ if(this.type == "opt"){
106
+ this.$set(this.checkOptPower,id,checkedPower);
107
+ }else{
108
+ this.$set(this.checkDataPower,id,checkedPower);
109
+ }
110
+ let halfKeys = checked.halfCheckedKeys || [];
111
+ this.isCheckAll(halfKeys,checkedKeys);
112
+ },
113
+
114
+ //递归删除未选择的数据
115
+ getHalfTreeData(checkedKeys,halfCheckedNodes){
116
+ halfCheckedNodes.forEach(item => {
117
+ (item.childrens || []).forEach((node,index) => {
118
+ if(checkedKeys.indexOf(node.key) == -1){ //设置当前节点 isCheked:false
119
+ item["childrens"].splice(index,1);
120
+ }
121
+ halfCheckedNodes = item["childrens"];
122
+ this.getHalfTreeData(checkedKeys,halfCheckedNodes);
123
+ });
124
+ });
125
+ },
126
+
127
+ //获取最后一层数据
128
+ getLastLayerData(dataArr){
129
+ (dataArr || []).forEach(item => {
130
+ if(item.childrens && item.childrens.length > 0){
131
+ this.getLastLayerData(item.childrens)
132
+ }else{
133
+ this.ownOptLastData.push(item);
134
+ }
135
+ });
136
+ },
137
+ //全选的状态
138
+ isCheckAll(halfKey,checkData){
139
+ if(!this.currentClickNode || !this.currentClickNode.bindSource){
140
+ this.checkAll = "0";
141
+ return;
142
+ }
143
+ let bindSourceType = JSON.parse(this.currentClickNode.bindSource)[0];
144
+ let checkedTree=this.$refs.elTree.getCheckedKeys();
145
+ let powerDataTreeArr= JSON.parse(JSON.stringify(this.powerDataTree));
146
+ let allSizes=this.powerDataTree.length;
147
+ if( powerDataTreeArr){
148
+ powerDataTreeArr.forEach(parent =>{
149
+ if(parent.children){
150
+ allSizes=allSizes+parent.children.length;
151
+ }
152
+ });
153
+ }
154
+ if(this.powerDataTree.length==0){
155
+ this.checkAll = "0";
156
+ }else if(bindSourceType == "cview"){
157
+ if(checkData.length == allSizes || checkedTree.length==allSizes){
158
+ this.checkAll = "1";
159
+ }else{
160
+ this.checkAll = "0";
161
+ }
162
+ }else{
163
+ if((checkData || []).length == (this.powerDataTree || []).length){
164
+ this.checkAll = "1";
165
+ }else{
166
+ this.checkAll = "0";
167
+ }
168
+ }
169
+ },
170
+
171
+ /**
172
+ * 操作权限
173
+ * @param h
174
+ * @param node
175
+ * @param data
176
+ * @param store
177
+ * @returns {*}
178
+ */
179
+ renderOperateContent(h, { node, data, store }) {
180
+ if(this.type == "opt"){
181
+ let type = "按钮";
182
+ if((data.powerKey || "").indexOf("tree") > -1){
183
+ type = "树"
184
+ }
185
+ return (
186
+ <span >
187
+ <span>{node.label}</span>
188
+ <span class="custom-operate-tree-node">
189
+ ({type})
190
+ </span>
191
+ </span>);
192
+ }else {
193
+ return (
194
+ <span>{node.label}</span>
195
+ );
196
+ }
197
+
198
+ },
199
+ }
200
+ }
201
+ </script>
202
+
203
+ <style scoped lang="scss">
204
+ .tree /deep/.custom-operate-tree-node {
205
+ margin-left: 10px;
206
+ font-size: 11px;
207
+ color: #409EFF;
208
+ }
209
+ .box-card{
210
+ /deep/.el-card_header{
211
+ height: 60px;
212
+ }
213
+ /deep/.el-card__body{
214
+ height: calc(90% - 60px);
215
+ overflow-y:scroll;
216
+ ::-webkit-scrollbar-thumb {
217
+ border-radius: 3px;
218
+ background-color: #dddddd !important;
219
+ }
220
+ ::-webkit-scrollbar-thumb {
221
+ background-color: #ddd !important;
222
+ border-radius: 3px !important;
223
+ }
224
+ }
225
+ }
226
+ </style>
@@ -0,0 +1,69 @@
1
+ <template>
2
+ <el-container style="width: 100%;height: 100%;">
3
+ <div style="width: 50%;height: 100%;">
4
+ <role-menu-power
5
+ ref="optPowerRef"
6
+ card-title="操作权限"
7
+ :power-data="optPower"
8
+ :power-data-tree="optPowerTree"
9
+ type="opt"
10
+ :current-click-node="currentClickNode"
11
+ :check-opt-power="checkOptPower"
12
+ :check-data-power="checkDataPower"
13
+ :operation-add-obj="operationAddObj"
14
+ :operation-delete-obj="operationDeleteObj">
15
+ </role-menu-power>
16
+ </div>
17
+ <div style="width: 50%;height: 100%;margin-left: 20px;">
18
+ <role-menu-power
19
+ ref="dataPowerRef"
20
+ card-title="数据权限"
21
+ :power-data="dataPower"
22
+ :power-data-tree="dataPowerTree"
23
+ type="data"
24
+ :current-click-node="currentClickNode"
25
+ :check-opt-power="checkOptPower"
26
+ :check-data-power="checkDataPower"
27
+ :operation-add-obj="operationAddObj"
28
+ :operation-delete-obj="operationDeleteObj">
29
+ </role-menu-power>
30
+ </div>
31
+ </el-container>
32
+ </template>
33
+
34
+ <script>
35
+ import RoleMenuPower from "./roleMenuPower";
36
+ export default {
37
+ name: "roleMenuPowerSetting",
38
+ components: {RoleMenuPower},
39
+ props:{
40
+ optPower:{type:Array,default:() => {return []}},//操作权限(最底层数据)
41
+ dataPower:{type:Array,default:() => {return []}},//数据权限(最底层数据)
42
+ optPowerTree:{type:Array,default:() => {return []}},//操作权限(树数据)
43
+ dataPowerTree:{type:Array,default:() => {return []}},//数据权限(树数据)
44
+ checkOptPower:{type:Object,default:() => {return {};}},//勾选的菜单操作权限
45
+ checkDataPower:{type:Object,default:() => {return {};}},//勾选的菜单数据权限
46
+ currentClickNode:{type:Object,default:() => {return {};}},//当前点击节点
47
+ operationAddObj:{type:Object,default:() => {return {};}},//新增的操作权限
48
+ operationDeleteObj:{type:Object,default:() => {return {};}},//删除的操作权限
49
+ },
50
+ data(){
51
+ return {
52
+ }
53
+ },
54
+ watch:{
55
+
56
+ },
57
+
58
+ created(){
59
+ },
60
+ methods:{
61
+ }
62
+ }
63
+ </script>
64
+
65
+ <style scoped>
66
+ /deep/ .el-card{
67
+ height: 100%;
68
+ }
69
+ </style>
@@ -0,0 +1,365 @@
1
+ <template>
2
+ <div style="height: 100%;width: 100%;">
3
+ <el-select v-model="cdss" style="width: 100%;margin-bottom: 5px" @change="changeCdss">
4
+ <el-option v-for="(text,index) in cdssArr" :key="index" :label="orgDimObj[text]" :value="text"></el-option>
5
+ </el-select>
6
+ <el-input v-model="filterMenu" size="small" prefix-icon="el-icon-search" style="margin-bottom: 5px" placeholder="输入关键字过滤"></el-input>
7
+ <div style="height: calc(100% - 80px);overflow-y: auto">
8
+ <common-tree v-if="showMenuTree" v-show="showMenuTreeShow"
9
+ ref="menuTree"
10
+ :root-datas="menuShowDatas"
11
+ parent-id="menuChiefNum"
12
+ :default-props="defaultProps"
13
+ :filter-text="filterMenu"
14
+ :default-expand-all="true"
15
+ :expand-onclick-node="false"
16
+ :node-click="nodeClick"
17
+ :init-check="initCheck"
18
+ :init-call-back="initCallBack">
19
+ </common-tree>
20
+ </div>
21
+ </div>
22
+ </template>
23
+
24
+ <script>
25
+ export default {
26
+ name: "RoleMenuSetting",
27
+ props:{
28
+ roleId:{type:String,default:""},//角色权限id
29
+ roleType:{type:String,default:""},
30
+ checkMenuOptPower:{type:Object,default:() => {return {};}},//勾选的菜单操作权限
31
+ checkMenuDataPower:{type:Object,default:() => {return {};}},//勾选的菜单数据权限
32
+ tenantId:{type:String,default:''},//租户id
33
+ },
34
+ data(){
35
+ return {
36
+ cdss:"",//组织维度
37
+ cdssArr:[],//组织维度
38
+ menuDatas:[],//用户可分配的所有菜单数据
39
+ menuShowDatas:[],//需要显示的菜单
40
+ loginUser:{},//当前登录用户
41
+ orgDimObj:{},//组织维度
42
+ allMenuObj:{},//所有菜单信息
43
+ menuOptPowerTree:{},//菜单拥有的操作权限(树数据)
44
+ menuDataPowerTree:{},//菜单拥有的数据权限(树数据)
45
+ menuOptPower:{},//菜单拥有的操作权限(最底层数据)
46
+ menuDataPower:{},//菜单拥有的数据权限(最底层数据)
47
+ defaultProps:{"children":"children","label":"menuName"},//树数据显示配置
48
+ filterMenu:"",//搜索菜单的参数
49
+ showMenuTree:false,
50
+ showMenuTreeShow:true,//用于控制树生成后数据还未加载完成页面不显示
51
+ initCheck:{initCheck:""},
52
+ oldChecked:[],
53
+ oldData:{},
54
+ oldDataArray:[],
55
+ paramSetting:{"id":"id","pId":"parentId","children":"children"},
56
+ checkedArr:[],//选中模块(树数据)
57
+ checkedObj:{},//选中对象数组(树数据)
58
+ isChange:false,
59
+ cdssBak:"",//记录上一个cdss
60
+
61
+ tenantCdss:'', //租户维度
62
+ }
63
+ },
64
+ watch:{
65
+ roleId(){
66
+ this.getCheckedData();
67
+ this.initTreeData();
68
+ }
69
+ },
70
+ created(){
71
+ this.getCheckedData();
72
+ this.initTreeData();
73
+ },
74
+ methods:{
75
+ /**
76
+ * 获取需默认勾取的菜单
77
+ */
78
+ async getCheckedData(){
79
+ this.oldChecked = [];
80
+ let res = await this.axios.post(this.api.roleMenuOpt.find,{roleId:this.roleId || "$$$$",type:"menu"});
81
+ if(res && res.data){
82
+ res.data.forEach(item => {
83
+ this.oldChecked.push(item.menuId);
84
+ this.oldData[item.menuId] = item.id;
85
+ });
86
+ this.$set(this.initCheck,"initCheck",this.oldChecked);
87
+ }
88
+ },
89
+ /**
90
+ * 获取树数据
91
+ */
92
+ async initTreeData(){
93
+ this.$emit("setMenuLoading",true);
94
+ //获取当前登录用户信息
95
+ this.loginUser = this.USER_GLOBAL.getLoginUser() || {};
96
+ //用户类型
97
+ let userType = this.loginUser.userType;
98
+ //组织维度
99
+ await this.getOrgDim();
100
+ //当前登录用户拥有的菜单权限
101
+ let userMenuOptTRes = await this.axios.post(this.api.sysUser.getLoginMenuOpt,{userId:this.loginUser.id,userType:userType});
102
+ let userMenuOptObj = {};
103
+ if(userMenuOptTRes && userMenuOptTRes.data && userMenuOptTRes.data.operateObj){
104
+ userMenuOptObj = userMenuOptTRes.data.operateObj || {};
105
+ }
106
+ //是否是开发者
107
+ let caseSup = userType == "sup";
108
+ //如果是开发者,可分配菜单是所有,如果是下级授权用户,可分配菜单是根据授权id获取
109
+ let authRoleId = this.roleId;
110
+ let empowerCheckPower = {};
111
+ if(!caseSup){
112
+ authRoleId = this.loginUser.empowerId || "$$$$";
113
+ if(this.tenantId){
114
+ authRoleId = this.roleId;
115
+ }
116
+ let powerRes = await this.axios.post(this.api.roleMenuOpt.find,{roleId:this.roleId});
117
+ if(powerRes && powerRes.data){
118
+ (powerRes.data || []).forEach(item => {
119
+ empowerCheckPower[item.menuId] = item;
120
+ });
121
+ }
122
+ }
123
+ //菜单查询参数
124
+ let paramObj = {caseSup:caseSup,authRoleId:authRoleId,menuChiefNum:"Y",menuIsUse:"Y"};
125
+ if(this.tenantId){
126
+ paramObj["caseSup"] = "true";
127
+ //传组织维度
128
+ // paramObj["cdss"] = this.tenantCdss ||'';
129
+ }
130
+ //可分配菜单
131
+ let menuRes = await this.axios.post(this.api.menu.findAuthMenu,paramObj);
132
+ if(menuRes && menuRes.data && menuRes.data.operateObj){
133
+ let data = menuRes.data.operateObj || [];
134
+ //菜单归属
135
+ let cdssArr = [];
136
+ let parentTree = "";
137
+ let menuIdMap = {};
138
+ data.forEach(menu => {
139
+ parentTree += "," + menu.menuPath;
140
+ let menuId = menu.id;
141
+ menuIdMap[menuId] = menu;
142
+ //记录菜单归属
143
+ if(menu.cdss && cdssArr.indexOf(menu.cdss) == -1 && this.orgDimObj.hasOwnProperty(menu.cdss)){
144
+ cdssArr.push(menu.cdss);
145
+ }
146
+ //保存菜单信息
147
+ this.allMenuObj[menuId] = menu;
148
+ //开发者拥有菜单所有的操作权限和数据权限,授权用户拥有被下发的操作权限和数据权限
149
+ if(caseSup || this.tenantId){
150
+ //菜单操作权限
151
+ if(menu.operatePermis){
152
+ //可操作的操作权限权限
153
+ this.menuOptPower[menuId] = menu.operatePermis.split(",");
154
+ this.menuOptPowerTree[menuId] = this.COMMON_FUNC.buildElTree(menu.optAllPower || [],this.paramSetting);
155
+ //勾选的操作权限,未配置的默认全选
156
+ if(this.oldChecked.indexOf(menuId) > -1){
157
+ let optArr = menu.optPower ? menu.optPower.split(",") : [];
158
+ this.checkMenuOptPower[menuId] = optArr;
159
+ }else{
160
+ this.checkMenuOptPower[menuId] = menu.operatePermis.split(",");
161
+ }
162
+ }
163
+ //菜单数据权限
164
+ if(menu.dataPermis){
165
+ //可操作的数据权限
166
+ this.menuDataPower[menuId] = menu.dataPermis.split(",");
167
+ this.menuDataPowerTree[menuId] = this.COMMON_FUNC.buildElTree(menu.dataAllPower || [],this.paramSetting);
168
+ //勾选的数据权限,未配置的默认全选
169
+ if(this.oldChecked.indexOf(menuId) > -1){
170
+ let dataArr = menu.dataPower ? menu.dataPower.split(",") : [];
171
+ this.checkMenuDataPower[menuId] = dataArr;
172
+ }else{
173
+ this.checkMenuDataPower[menuId] = menu.dataPermis.split(",");
174
+ }
175
+ }
176
+ }else{
177
+ if(menu.optPower){
178
+ //可操作的操作权限权限
179
+ this.menuOptPower[menuId] = menu.optPower.split(",");
180
+ this.menuOptPowerTree[menuId] = this.COMMON_FUNC.buildElTree(menu.optAllPower || [],this.paramSetting);
181
+ if (this.oldChecked.indexOf(menuId) > -1){
182
+ let optPower = (empowerCheckPower[menuId] || {}).optPower;
183
+ let optArr = optPower ? optPower.split(",") : [];
184
+ this.checkMenuOptPower[menuId] = optArr;
185
+ }else{
186
+ this.checkMenuOptPower[menuId] = menu.optPower.split(",");
187
+ }
188
+ }
189
+ if(menu.dataPower){
190
+ //可操作的数据权限权限
191
+ this.menuDataPower[menuId] = menu.dataPower.split(",");
192
+ this.menuDataPowerTree[menuId] = this.COMMON_FUNC.buildElTree(menu.dataAllPower || [],this.paramSetting);
193
+ if (this.oldChecked.indexOf(menuId) > -1){
194
+ let dataPower = (empowerCheckPower[menuId] || {}).dataPower;
195
+ let dataArr = dataPower ? dataPower.split(",") : [];
196
+ this.checkMenuDataPower[menuId] = dataArr;
197
+ }else{
198
+ this.checkMenuDataPower[menuId] = menu.dataPower.split(",");
199
+ }
200
+ }
201
+ }
202
+ });
203
+ //获取授权用户可分配菜单的上级菜单
204
+ if(!caseSup){
205
+ let empowerMenuRes = await this.axios.post(this.api.menu.find,{id:parentTree.substring(1)});
206
+ let parentMenuArr = [];
207
+ if(empowerMenuRes && empowerMenuRes.data){
208
+ empowerMenuRes.data.forEach(item => {
209
+ item.disabled = true;
210
+ if(!menuIdMap.hasOwnProperty(item.id)){
211
+ parentMenuArr.push(item);
212
+ }
213
+ });
214
+ data = data.concat(parentMenuArr);
215
+ }
216
+ }
217
+ this.initCheckedObj();
218
+ this.cdssArr = cdssArr;
219
+ if(this.cdssArr && this.cdssArr.length > 0){
220
+ this.cdss = this.cdssArr[0];
221
+ }
222
+ this.menuDatas = data;
223
+ this.dealTreeData();
224
+ this.$emit("setMenuLoading",false);
225
+ }
226
+ },
227
+
228
+ /**
229
+ * 整理树数据
230
+ */
231
+ dealTreeData(){
232
+ let vm=this;
233
+ this.showMenuTree= false;
234
+ let data = JSON.parse(JSON.stringify(this.menuDatas));
235
+ this.menuShowDatas = data.filter(each => {
236
+ if (each["cdss"] == this.cdss) {
237
+ return true;
238
+ }
239
+ });
240
+ this.$nextTick(() => {
241
+ vm.showMenuTree = true;
242
+ vm.showMenuTreeShow=false;
243
+ });
244
+ },
245
+ initCallBack(treeVm){
246
+ let vm=this;
247
+ if(vm.isChange){
248
+ // 置空选项
249
+ vm.$refs.menuTree.setTreeCheckedKeys([],true);
250
+ }else{ //没切换选项就不走
251
+ vm.showMenuTreeShow=true;
252
+ return ;
253
+ }
254
+ if(vm.checkedArr && Object.keys(vm.checkedObj).length>0){
255
+ //用于切换选项卡 记录之前的选项
256
+ let arr=[];
257
+ Object.keys(vm.checkedObj).forEach(item=>{
258
+ arr=arr.concat(vm.checkedObj[item]);
259
+ });
260
+ if(arr.length>0){
261
+ vm.$refs.menuTree.setTreeCheckedKeys(arr,false,true);
262
+ }
263
+ vm.showMenuTreeShow=true;
264
+ }else{
265
+ vm.$refs.menuTree.setTreeCheckedKeys([],true);
266
+ }
267
+ vm.showMenuTreeShow=true;
268
+ },
269
+ /**
270
+ * 获取组织维度
271
+ * @returns {Promise<void>}
272
+ */
273
+ async getOrgDim(){
274
+ this.orgDimObj=[];
275
+ let orgDimRes = await this.axios(this.api.sysOrgDimension.find,{isUse:"1"});
276
+ if(orgDimRes && orgDimRes.data){
277
+ orgDimRes.data.forEach(orgDim => {
278
+ if(orgDim.dimSpec){
279
+ let dimSpecObj = JSON.parse(orgDim.dimSpec);
280
+ if(dimSpecObj.hasOwnProperty("menuLocalName")&&(this.roleType==orgDim.id||this.loginUser.userType=="sup")){
281
+ this.orgDimObj[orgDim.id] = dimSpecObj["menuLocalName"];
282
+ }
283
+ }
284
+ });
285
+ }
286
+ this.orgDimObj["sys"] = "系统";
287
+ },
288
+
289
+ /**
290
+ * 菜单归属change事件
291
+ */
292
+ changeCdss(){
293
+ this.isChange=true;
294
+ this.checkedArr = this.$refs.menuTree.$refs.elTree.getCheckedNodes();
295
+ this.checkedObj[this.cdssBak]=[];
296
+ this.checkedObj[this.cdssBak] = this.checkedArr;
297
+ this.cdssBak=JSON.parse(JSON.stringify(this.cdss));
298
+ this.dealTreeData();
299
+ },
300
+
301
+
302
+ /**
303
+ * 树节点点击事件
304
+ */
305
+ nodeClick(data,node){
306
+ this.$emit("setMenuPower",this.menuOptPower[data.id],this.menuDataPower[data.id],
307
+ this.menuOptPowerTree[data.id],this.menuDataPowerTree[data.id]);
308
+ this.$emit("setCurrentMenuNode",data);
309
+ },
310
+
311
+ /**
312
+ *
313
+ */
314
+ getCheckData(){
315
+ let checkedArr = this.$refs.menuTree.$refs.elTree.getCheckedNodes();
316
+ if(checkedArr.length > 0){
317
+ this.checkedArr = this.checkedArr.concat(this.$refs.menuTree.$refs.elTree.getCheckedNodes());
318
+ }
319
+ return this.checkedArr;
320
+ // return this.$refs.menuTree.$refs.elTree.getCheckedNodes();
321
+ },
322
+
323
+ renderContent(h, {node, data, store}) {
324
+ return (
325
+ <span class={node.level == 1 ? 'model-color':''} style={node.level == 1 ? 'letter-spacing:1px':''}>
326
+ <i class={data.className}></i>
327
+ <span style={node.level == 2 ? 'font-weight:bold':""}>{node.label}</span>
328
+ </span>
329
+ );
330
+ },
331
+ initCheckedObj(){
332
+ this.axios.post(this.api.menu.findByIds,{"ids":this.oldChecked.join(",")}).then(res=>{
333
+ if(res.data){
334
+ this.oldDataArray=res.data || [];
335
+ this.oldDataArray.forEach(item=>{
336
+ if(!this.checkedObj[item.cdss]){
337
+ this.checkedObj[item.cdss]=[];
338
+ }
339
+ this.checkedObj[item.cdss].push(item);
340
+ })
341
+ }
342
+ this.cdssBak=JSON.parse(JSON.stringify(this.cdss));
343
+ })
344
+ },
345
+ }
346
+ }
347
+ </script>
348
+
349
+ <style scoped>
350
+ /* 滚动条宽度 */
351
+ ::-webkit-scrollbar {
352
+ width: 5px;
353
+ }
354
+
355
+ /* 滚动槽 */
356
+ ::-webkit-scrollbar-track {
357
+ background: none;
358
+ }
359
+
360
+ /* 滚动条滑块 */
361
+ ::-webkit-scrollbar-thumb {
362
+ background-color: #a9a9a9;
363
+ border-radius: 3px;
364
+ }
365
+ </style>