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,970 @@
1
+ <template>
2
+ <el-container style="height: 100%">
3
+ <el-aside width="200px" style="position:relative;">
4
+ <div class="tree-box">
5
+ <el-input
6
+ placeholder="输入关键字进行过滤"
7
+ v-model="filterTreeText"></el-input>
8
+ <el-tree
9
+ class="filter-tree"
10
+ :data="resourceData"
11
+ :highlight-current="true"
12
+ :props="defaultProps"
13
+ node-key="id"
14
+ :expand-on-click-node="false"
15
+ :default-expanded-keys="treeDefaultExpandedKeys"
16
+ @node-click="treeNodeClick"
17
+ :filter-node-method="filterNode"
18
+ ref="tree">
19
+ </el-tree>
20
+ </div>
21
+ </el-aside>
22
+ <el-main style="padding:0;">
23
+ <el-container style="height: 100%">
24
+ <el-header style="height: auto;">
25
+ <div class="search-form-parent el-card">
26
+ <el-form :inline="true" :model="crud.searchForm" size="small" class="demo-form-inline"
27
+ @keyup.enter.native="crud.doSearch()" onSubmit="return false;">
28
+ <el-form-item label="资源名称">
29
+ <el-input v-model="crud.searchForm.rName" style="width:130px;"></el-input>
30
+ </el-form-item>
31
+
32
+ <el-form-item label="代理地址">
33
+ <el-input v-model="crud.searchForm.rAgentUrl" style="width:130px;"></el-input>
34
+ </el-form-item>
35
+
36
+
37
+ <!-- <el-form-item label="资源来源">-->
38
+
39
+ <!-- <el-cascader v-model="crud.searchForm.rSourceAndClassArr" style="width:165px;"-->
40
+ <!-- :options="rClassOptions"-->
41
+ <!-- @change="rSourceAndClassChange"-->
42
+ <!-- :props="{value:'id', label:'name', expandTrigger:'hover', checkStrictly:true}"-->
43
+ <!-- clearable></el-cascader>-->
44
+ <!-- </el-form-item>-->
45
+ <el-form-item label="允许外部访问">
46
+ <el-select v-model="crud.searchForm.externalAccess" style="width:88px;">
47
+ <el-option v-for="item in rCommon.arrWhether" :label="item.name" :value="item.id"
48
+ :key="item.id">
49
+ {{item.name}}
50
+ </el-option>
51
+ </el-select>
52
+ </el-form-item>
53
+
54
+
55
+ <el-form-item label="资源状态">
56
+ <el-select v-model="crud.searchForm.rStatus" style="width:88px;">
57
+ <el-option v-for="item in rCommon.arrRStatus" :label="item.name" :value="item.id"
58
+ :key="item.id">
59
+ {{item.name}}
60
+ </el-option>
61
+ </el-select>
62
+ </el-form-item>
63
+ <el-form-item>
64
+ <el-button type="primary" icon="el-icon-search" @click="crud.doSearch()">查询</el-button>
65
+ <el-button icon="el-icon-close" @click="crud.resetSearch()">清空</el-button>
66
+ </el-form-item>
67
+ </el-form>
68
+ </div>
69
+ </el-header>
70
+ <el-main id="tableMain" style="height: 100%">
71
+ <el-container style="height:100%" class="table-list-container">
72
+ <el-header style="height: auto;" size="medium">
73
+ <el-button type="warning" size="mini" class="saspiconfont pl-icon-ziyuanchi pointer font-18" @click="registerResources()">
74
+ 注册表单
75
+ </el-button>
76
+ </el-header>
77
+ <el-main style="height: 100%;" ref="tableMain">
78
+ <el-table :data="crud.dataStore.records" :ref="crud.tableRef" stripe border height="100%"
79
+ style="width: 100%;">
80
+ <el-table-column type="selection" width="40" align="center"></el-table-column>
81
+ <el-table-column type="index" label="序号" align="center" width="60"></el-table-column>
82
+
83
+ <el-table-column label="资源名称" prop="rname"></el-table-column>
84
+ <el-table-column label="代理地址" prop="ragentUrl"></el-table-column>
85
+ <!-- <el-table-column label="资源类型" prop="rtype">-->
86
+ <!-- <template slot-scope="scope">-->
87
+ <!-- {{rCommon.MapRTypeDatas[scope.row.rtype]}}-->
88
+ <!-- </template>-->
89
+ <!-- </el-table-column>-->
90
+ <el-table-column label="资源来源" align="center" prop="rsource" width="100">
91
+ <template slot-scope="scope">
92
+ {{rCommon.objRSource[scope.row.rsource]}}
93
+ </template>
94
+ </el-table-column>
95
+ <el-table-column label="资源分类" prop="rclass"></el-table-column>
96
+
97
+ <el-table-column label="允许外部访问" align="center" prop="externalAccess" width="110">
98
+ <template slot-scope="scope">
99
+ <el-tag :type="rCommon.objWhetherTag[scope.row.externalAccess]">
100
+ {{rCommon.objWhether[scope.row.externalAccess]}}
101
+ </el-tag>
102
+ </template>
103
+ </el-table-column>
104
+
105
+
106
+ <el-table-column label="资源状态" align="center" prop="rstatus" width="90">
107
+ <template slot-scope="scope">
108
+ <el-tag :type="rCommon.objRStatusTag[scope.row.rstatus]||'danger'">
109
+ {{rCommon.objRStatus[scope.row.rstatus]||'禁用'}}
110
+ </el-tag>
111
+ </template>
112
+ </el-table-column>
113
+
114
+ <el-table-column label="操作" align="center" width="220">
115
+ <template slot-scope="scope">
116
+ <!-- <el-button size="mini" icon="el-icon-edit" type="primary"-->
117
+ <!-- @click="crud.update(scope.row)">-->
118
+ <!-- 修改-->
119
+ <!-- </el-button>-->
120
+
121
+ <el-button size="mini" icon="el-icon-view" type=""
122
+ @click="viewData(scope.row)">
123
+ 查看
124
+ </el-button>
125
+
126
+ <!-- <el-button size="mini" icon="el-icon-notebook-2" type="warning"-->
127
+ <!-- @click="previewRes(scope.row)">-->
128
+ <!-- 预览-->
129
+ <!-- </el-button>-->
130
+
131
+ <template v-if="scope.row.rstatus=='1'">
132
+ <el-popconfirm title="是否确定禁用此项资源?"
133
+ @confirm="switchStatus(scope.row.id, '0')">
134
+ <el-button size="mini" icon="el-icon-error" style="margin-left: 10px;"
135
+ slot="reference"
136
+ type="danger">
137
+ 禁用
138
+ </el-button>
139
+ </el-popconfirm>
140
+ </template>
141
+
142
+ <template v-else>
143
+ <el-popconfirm title="是否确定启用此项资源?"
144
+ @confirm="switchStatus(scope.row.id,'1')">
145
+ <el-button size="mini" icon="el-icon-success" style="margin-left: 10px;"
146
+ type="primary"
147
+ slot="reference">
148
+ 启用
149
+ </el-button>
150
+ </el-popconfirm>
151
+ </template>
152
+
153
+ </template>
154
+ </el-table-column>
155
+ </el-table>
156
+ </el-main>
157
+ </el-container>
158
+ </el-main>
159
+ <el-footer>
160
+ <el-pagination
161
+ :ref="crud.pageRef"
162
+ :page-sizes="crud.pageSizes"
163
+ :page-size="crud.pageSize"
164
+ :current-page="crud.page"
165
+ :total="crud.dataStore.total"
166
+ @size-change="crud.sizeChange()"
167
+ @current-change="crud.currentPage()"
168
+ layout="total, sizes, prev, pager, next, jumper">
169
+ </el-pagination>
170
+ </el-footer>
171
+ </el-container>
172
+ </el-main>
173
+ <!-- </el-main>-->
174
+ <el-dialog title="页面资源" :visible.sync="crud.dialogVisible"
175
+ :close-on-press-escape="false"
176
+ :close-on-click-modal="false" top="5vh" width="70%"
177
+ height="90%" lock-scroll>
178
+ <el-form :ref="crud.addFormRef" :model="crud.formData" label-width="160px"
179
+ :size="setting.formSize"
180
+ style="width:95%;">
181
+
182
+ <el-row>
183
+ <el-col :span="24">
184
+ <h2 style="text-align: center;line-height: 50px;">基础信息</h2>
185
+ </el-col>
186
+ </el-row>
187
+
188
+ <el-row>
189
+ <el-col :span="24">
190
+ <el-form-item label="资源名称" prop="rname">
191
+ <el-input v-model="crud.formData.rname"></el-input>
192
+ </el-form-item>
193
+ </el-col>
194
+ </el-row>
195
+ <el-row v-if="crud.formData.rtype=='data'">
196
+ <!-- <el-col :span="12">-->
197
+ <!-- <el-form-item label="资源key" prop="rKey">-->
198
+ <!-- <el-input v-model="crud.formData.rKey"></el-input>-->
199
+ <!-- </el-form-item>-->
200
+ <!-- </el-col>-->
201
+ <el-col :span="24">
202
+ <el-form-item label="资源方法" prop="rMethodName">
203
+ <el-input v-model="crud.formData.rMethodName"></el-input>
204
+ </el-form-item>
205
+ </el-col>
206
+ </el-row>
207
+ <el-row>
208
+ <el-col :span="12">
209
+ <el-form-item label="资源来源" prop="rsource">
210
+ <el-select v-model="crud.formData.rsource">
211
+ <el-option v-for="item in rCommon.arrRSource"
212
+ :label="item.name" :value="item.id"
213
+ :key="item.id">
214
+ {{item.name}}
215
+ </el-option>
216
+ </el-select>
217
+ </el-form-item>
218
+ </el-col>
219
+ <el-col :span="12">
220
+ <el-form-item label="资源类型" prop="rtype" >
221
+ <el-select v-model="crud.formData.rtype" disabled>
222
+ <el-option v-for="item in rCommon.arrRTypeDatas"
223
+ :label="item.name" :value="item.id"
224
+ :key="item.id">
225
+ {{item.name}}
226
+ </el-option>
227
+ </el-select>
228
+ </el-form-item>
229
+ </el-col>
230
+ </el-row>
231
+
232
+ <el-row>
233
+
234
+ <el-col :span="12">
235
+ <el-form-item label="资源分类" prop="rclass">
236
+ <el-input v-model="crud.formData.rclass"></el-input>
237
+ </el-form-item>
238
+ </el-col>
239
+ <el-col :span="12">
240
+ <el-form-item label="资源分类ID" prop="rclassId">
241
+ <el-input v-model="crud.formData.rclassId"></el-input>
242
+ </el-form-item>
243
+ </el-col>
244
+ </el-row>
245
+
246
+ <el-row>
247
+ <el-col :span="24">
248
+ <el-form-item label="资源状态" prop="rtype">
249
+ <el-radio-group v-model="crud.formData.rstatus">
250
+ <el-radio-button v-for="item in rCommon.arrRStatus"
251
+ :key="item.id" :label="item.id">
252
+ {{item.name}}
253
+ </el-radio-button>
254
+ </el-radio-group>
255
+ </el-form-item>
256
+ </el-col>
257
+ </el-row>
258
+
259
+ <el-row>
260
+ <el-col :span="24">
261
+ <h2 style="text-align: center;line-height: 50px;">权限信息</h2>
262
+ </el-col>
263
+ </el-row>
264
+
265
+ <el-row>
266
+ <el-col :span="24">
267
+ <el-form-item label="操作权限" prop="rOperationAuthoritys">
268
+ <el-input v-model="crud.formData.rOperationAuthoritys"
269
+ type="textarea" :rows="6"></el-input>
270
+ </el-form-item>
271
+ </el-col>
272
+ </el-row>
273
+ <el-row>
274
+ <el-col :span="24">
275
+ <el-form-item label="数据权限" prop="rDataAuthoritys">
276
+ <el-input v-model="crud.formData.rDataAuthoritys"
277
+ type="textarea" :rows="6"></el-input>
278
+ </el-form-item>
279
+ </el-col>
280
+ </el-row>
281
+
282
+
283
+ <el-row>
284
+ <el-col :span="24">
285
+ <h2 style="text-align: center;line-height: 50px;">参数信息</h2>
286
+ </el-col>
287
+ </el-row>
288
+
289
+ <el-row>
290
+ <el-col :span="24">
291
+ <el-form-item label="是否限制入参" prop="rIfRestrictedParams">
292
+ <el-switch
293
+ v-model="crud.formData.rIfRestrictedParams"
294
+ active-text="是"
295
+ active-value="1"
296
+ inactive-text="否"
297
+ inactive-value="0">
298
+ </el-switch>
299
+ </el-form-item>
300
+ </el-col>
301
+ </el-row>
302
+ <el-row>
303
+ <el-col :span="24">
304
+ <el-form-item label="参数列表" prop="rParamLists">
305
+ <el-input v-model="crud.formData.rParamLists" type="textarea"
306
+ :rows="10"></el-input>
307
+ </el-form-item>
308
+ </el-col>
309
+ </el-row>
310
+
311
+ <el-row>
312
+ <el-col :span="24">
313
+ <h2 style="text-align: center;line-height: 50px;">外部访问</h2>
314
+ </el-col>
315
+ </el-row>
316
+
317
+ <el-row>
318
+ <el-col :span="12">
319
+ <el-form-item label="允许外部访问" prop="externalAccess">
320
+ <el-switch
321
+ v-model="crud.formData.externalAccess"
322
+ active-text="是"
323
+ active-value="1"
324
+ inactive-text="否"
325
+ inactive-value="0">
326
+ </el-switch>
327
+ </el-form-item>
328
+ </el-col>
329
+
330
+ <el-col :span="12">
331
+ <el-form-item v-if="crud.formData && crud.formData.externalAccess=='1'" label="代理地址" prop="ragentUrl">
332
+ <el-input v-model="crud.formData.ragentUrl"></el-input>
333
+ </el-form-item>
334
+ </el-col>
335
+ </el-row>
336
+
337
+ <el-row v-if="crud.formData && crud.formData.externalAccess=='1'">
338
+ <el-col :span="12">
339
+ <el-form-item label="外部访问是否需登录" prop="noLoginRequired">
340
+ <el-switch
341
+ v-model="crud.formData.noLoginRequired"
342
+ active-text="是"
343
+ active-value="0"
344
+ inactive-text="否"
345
+ inactive-value="1">
346
+ </el-switch>
347
+ </el-form-item>
348
+ </el-col>
349
+ <el-col :span="12">
350
+ <el-form-item v-if="crud.formData && crud.formData.noLoginRequired=='1'" label="凭密码访问" prop="passSwitch">
351
+ <el-switch
352
+ v-model="crud.formData.passSwitch"
353
+ active-text="开"
354
+ active-value="1"
355
+ inactive-text="关"
356
+ inactive-value="0">
357
+ </el-switch>
358
+ <div v-if="crud.formData && crud.formData.passSwitch=='1'"
359
+ style="width: calc(100% - 110px);float: right;display: inline-block;">
360
+ <el-input placeholder="外部访问密码"
361
+ v-model="crud.formData.externalAccessPwd"></el-input>
362
+ </div>
363
+
364
+ </el-form-item>
365
+ </el-col>
366
+ </el-row>
367
+
368
+ </el-form>
369
+ <div slot="footer" class="dialog-footer">
370
+ <el-button type="primary" @click="crud.formSubmit()">确 定</el-button>
371
+ <el-button @click="crud.dialogVisible = false">取 消</el-button>
372
+ </div>
373
+ </el-dialog>
374
+
375
+ <!-- 查看资源 -->
376
+ <el-dialog :visible.sync="viewDialogVisible" top="5vh" width="80%"
377
+ height="90%" lock-scroll>
378
+ <span slot="title">
379
+ 查看资源
380
+ <template v-if="viewFormData.externalAccess=='1'&&viewFormData.ragentUrl&&viewFormData.rstatus=='1'">
381
+ (资源链接地址:<a :href="pageUrl(viewFormData)" target="view_window">{{pageUrl(viewFormData)}}</a>)
382
+ </template>
383
+ </span>
384
+ <el-form label-width="160px" :disabled="true"
385
+ :size="setting.formSize"
386
+ style="width:100%;">
387
+
388
+ <el-row>
389
+ <el-col :span="24">
390
+ <h2 style="text-align: center;line-height: 50px;">基础信息</h2>
391
+ </el-col>
392
+ </el-row>
393
+
394
+
395
+ <el-row>
396
+ <el-col :span="24">
397
+ <el-form-item label="资源名称" prop="rname">
398
+ <el-input v-model="viewFormData.rname"></el-input>
399
+ </el-form-item>
400
+ </el-col>
401
+ </el-row>
402
+ <el-row v-if="viewFormData.rtype=='data'">
403
+ <el-col :span="24">
404
+ <el-form-item label="资源方法" prop="rMethodName">
405
+ <el-input v-model="viewFormData.rMethodName"></el-input>
406
+ </el-form-item>
407
+ </el-col>
408
+ </el-row>
409
+ <el-row>
410
+ <el-col :span="12">
411
+ <el-form-item label="资源来源" prop="rsource">
412
+ <el-select v-model="viewFormData.rsource">
413
+ <el-option v-for="item in rCommon.arrRSource"
414
+ :label="item.name" :value="item.id"
415
+ :key="item.id">
416
+ {{item.name}}
417
+ </el-option>
418
+ </el-select>
419
+ </el-form-item>
420
+ </el-col>
421
+ <el-col :span="12">
422
+ <el-form-item label="资源类型" prop="rtype" >
423
+ <el-select v-model="viewFormData.rtype">
424
+ <el-option v-for="item in rCommon.arrRTypeDatas"
425
+ :label="item.name" :value="item.id"
426
+ :key="item.id">
427
+ {{item.name}}
428
+ </el-option>
429
+ </el-select>
430
+ </el-form-item>
431
+ </el-col>
432
+ </el-row>
433
+
434
+ <el-row>
435
+ <el-col :span="12">
436
+ <el-form-item label="资源分类" prop="rclass">
437
+ <el-input v-model="viewFormData.rclass"></el-input>
438
+ </el-form-item>
439
+ </el-col>
440
+ <el-col :span="12">
441
+ <el-form-item label="资源分类ID" prop="rclassId">
442
+ <el-input v-model="viewFormData.rclassId"></el-input>
443
+ </el-form-item>
444
+ </el-col>
445
+ </el-row>
446
+ <el-row>
447
+ <el-col :span="24">
448
+ <el-form-item label="资源状态" prop="rtype">
449
+ <!-- <el-radio-group v-model="viewFormData.rstatus">-->
450
+ <!-- <el-radio-button v-for="item in rCommon.arrRStatus"-->
451
+ <!-- :key="item.id" :label="item.id">-->
452
+ <!-- {{item.name}}-->
453
+ <!-- </el-radio-button>-->
454
+ <!-- </el-radio-group>-->
455
+ <el-tag :type="rCommon.objRStatusTag[viewFormData.rstatus]||'danger'">
456
+ {{rCommon.objRStatus[viewFormData.rstatus]||'禁用'}}
457
+ </el-tag>
458
+ </el-form-item>
459
+ </el-col>
460
+ </el-row>
461
+
462
+ <el-row>
463
+ <el-col :span="24">
464
+ <h2 style="text-align: center;line-height: 50px;">权限信息</h2>
465
+ </el-col>
466
+ </el-row>
467
+
468
+ <el-row>
469
+ <el-col :span="12">
470
+
471
+ <el-card class="page-resources-auth-card" style="margin-right:10px;">
472
+ <div slot="header" class="clearfix">
473
+ <h3>操作权限</h3>
474
+ </div>
475
+ <div style="height: 150px;overflow: auto">
476
+
477
+ <div v-if="rCommon.getArrROperationAuthoritys(viewFormData).length==0"
478
+ style="padding-top:25px;text-align: center;color:#999;">
479
+ 暂无数据
480
+ </div>
481
+
482
+ <el-tree v-else :data="rCommon.getArrROperationAuthoritys(viewFormData)" default-expand-all
483
+ :props="{children: 'children', label: 'name'}">
484
+ <span class="custom-tree-node" slot-scope="{ node, data }">
485
+ <span>{{ data.powerName }}({{data.powerCode}}) <span class="custom-tree-node-type">({{rCommon.formatterOpearteType(data)}})</span></span>
486
+
487
+ <!-- <span style="float:right;color:#409EFF;" v-if="data.type">-->
488
+ <!-- {{data.type}}-->
489
+ <!-- </span>-->
490
+ </span>
491
+ </el-tree>
492
+
493
+ <!--<el-tag v-for="item in rCommon.getArrROperationAuthoritys(viewFormData)" :key="item.key"
494
+ type="danger"
495
+ style="margin-right:15px;">
496
+ {{`${item.key}-${item.name}`}}
497
+ </el-tag>-->
498
+ </div>
499
+ </el-card>
500
+ </el-col>
501
+
502
+ <el-col :span="12">
503
+ <el-card style="margin-left:10px;">
504
+ <div slot="header" class="clearfix">
505
+ <h3>数据权限</h3>
506
+ </div>
507
+ <div style="height: 150px;overflow: auto">
508
+ <el-tree :data="rCommon.getArrRDataAuthoritys(viewFormData)" default-expand-all
509
+ :props="{children: 'children', label: 'name'}">
510
+ <span class="custom-tree-node" slot-scope="{ node, data }">
511
+ <span>{{ data.powerName }}({{data.powerCode}})</span>
512
+ <!-- <span style="float:right;color:#409EFF;" v-if="data.type">-->
513
+ <!-- {{data.type}}-->
514
+ <!-- </span>-->
515
+ </span>
516
+ </el-tree>
517
+ </div>
518
+ </el-card>
519
+ </el-col>
520
+ </el-row>
521
+
522
+ <el-row v-if="viewFormData.rtype=='data'">
523
+ <el-col :span="24" >
524
+ <h2 style="text-align: center;line-height: 50px;">参数信息</h2>
525
+ </el-col>
526
+ </el-row>
527
+
528
+ <el-row v-if="viewFormData.rtype=='data'">
529
+ <el-col :span="24">
530
+ <el-form-item label="是否限制入参" prop="rIfRestrictedParams">
531
+ <el-switch
532
+ v-model="viewFormData.rIfRestrictedParams"
533
+ active-text="是"
534
+ active-value="1"
535
+ inactive-text="否"
536
+ inactive-value="0">
537
+ </el-switch>
538
+ </el-form-item>
539
+ </el-col>
540
+ </el-row>
541
+ <el-row v-if="viewFormData.rtype=='data'">
542
+ <el-col :span="24">
543
+
544
+ <el-table :data="rCommon.getArrRParamLists(viewFormData)" stripe border height="100%"
545
+ style="width: 100%;">
546
+ <el-table-column type="index" label="序号" align="center" width="60"></el-table-column>
547
+
548
+ <el-table-column label="参数名称" align="center" min-width="80" prop="key"></el-table-column>
549
+ <el-table-column label="参数描述" align="center" min-width="80" prop="name"></el-table-column>
550
+ <el-table-column label="对应列" align="center" min-width="80" prop="column"></el-table-column>
551
+ <el-table-column label="参数类型" align="center" min-width="100">
552
+ <template slot-scope="scope">
553
+ {{scope.row.mode}}({{scope.row.modeDesc}})
554
+ </template>
555
+ </el-table-column>
556
+ </el-table>
557
+ </el-col>
558
+ </el-row>
559
+
560
+
561
+ <el-row>
562
+ <el-col :span="24">
563
+ <h2 style="text-align: center;line-height: 50px;">外部访问</h2>
564
+ </el-col>
565
+ </el-row>
566
+
567
+ <el-row>
568
+ <el-col :span="12">
569
+ <el-form-item label="允许外部访问" prop="externalAccess">
570
+ <el-switch
571
+ v-model="viewFormData.externalAccess"
572
+ active-text="是"
573
+ active-value="1"
574
+ inactive-text="否"
575
+ inactive-value="0">
576
+ </el-switch>
577
+ </el-form-item>
578
+ </el-col>
579
+
580
+ <el-col :span="12">
581
+ <el-form-item v-if="viewFormData && viewFormData.externalAccess=='1'" label="代理地址" prop="ragentUrl">
582
+ <el-input v-model="viewFormData.ragentUrl"></el-input>
583
+ </el-form-item>
584
+ </el-col>
585
+ </el-row>
586
+
587
+ <el-row v-if="viewFormData && viewFormData.externalAccess=='1'">
588
+ <el-col :span="12">
589
+ <el-form-item label="外部访问是否需登录" prop="rsource">
590
+ <el-switch
591
+ v-model="viewFormData.noLoginRequired"
592
+ active-text="是"
593
+ active-value="0"
594
+ inactive-text="否"
595
+ inactive-value="1">
596
+ </el-switch>
597
+ </el-form-item>
598
+ </el-col>
599
+ <el-col :span="12">
600
+ <el-form-item label="凭密码访问" prop="passSwitch">
601
+ <el-switch
602
+ v-model="viewFormData.passSwitch"
603
+ active-text="开"
604
+ active-value="1"
605
+ inactive-text="关"
606
+ inactive-value="0">
607
+ </el-switch>
608
+ <div v-if="viewFormData && viewFormData.passSwitch=='1'"
609
+ style="width: calc(100% - 110px);float: right;display: inline-block;">
610
+ <el-input placeholder="外部访问密码"
611
+ v-model="viewFormData.externalAccessPwd"></el-input>
612
+ </div>
613
+
614
+ </el-form-item>
615
+ </el-col>
616
+ </el-row>
617
+ </el-form>
618
+ <div slot="footer" class="dialog-footer">
619
+ <!-- <el-button @click="previewRes(viewFormData)" type="primary">-->
620
+ <!-- 预 览-->
621
+ <!-- </el-button>-->
622
+ <el-button @click="viewDialogVisible = false">关 闭</el-button>
623
+ </div>
624
+ </el-dialog>
625
+
626
+ <!-- 预览资源 -->
627
+ <el-dialog :title="`${previewFormData.rname}-资源预览`" :visible.sync="previewDialogVisible" top="3vh" width="96%"
628
+ height="96%" lock-scroll>
629
+ <page-res-preview v-if="previewDialogVisible" :preview-form-data="previewFormData"></page-res-preview>
630
+
631
+ <div slot="footer" class="dialog-footer">
632
+ <el-button @click="previewDialogVisible = false">关 闭</el-button>
633
+ </div>
634
+ </el-dialog>
635
+
636
+ <!--注册到资源池-->
637
+ <el-dialog :close-on-click-modal="false"
638
+ append-to-body
639
+ title="表单资源注册"
640
+ class="resouceClass"
641
+ :visible.sync="registerResourceDialog"
642
+ :width="'75%'" height="75%" top="8vh">
643
+ <page-res-register v-if="registerResourceDialog" @initResourceData="initResourceData">
644
+ </page-res-register>
645
+ </el-dialog>
646
+ </el-container>
647
+ </template>
648
+
649
+ <script>
650
+ import rCommon from "../js/resourcesCommon";
651
+ import PageResPreview from "./comp/pageResPreview";
652
+ import PageResRegister from "./comp/pageResRegister";
653
+
654
+ export default {
655
+ name: "page-resources",
656
+ components: {PageResRegister, PageResPreview},
657
+ props: {},
658
+ data() {
659
+ let vm = this;
660
+ return {
661
+ crud: new this.CrudUtil({
662
+ vue: this,
663
+ url: this.api.resources.url,
664
+ searchForm: {
665
+ rTypes: "page,menu",
666
+ order:"R_SOURCE,R_CLASS"
667
+ },
668
+ noClearSearchColumns: ["rTypes","rClass","rSource","order"],
669
+ afterSubmit() {
670
+ vm.initRClassOptions();
671
+ },
672
+ afterRemoveSuccess() {
673
+ vm.initRClassOptions();
674
+ },
675
+ addDefaultData: {
676
+ rtype: "page",
677
+ rstatus: "1",
678
+ externalAccess: "1",
679
+ noLoginRequired: "1",
680
+ passSwitch: "1",
681
+ rIfRestrictedParams: "0"
682
+ },
683
+
684
+ }),
685
+ resourceData:[],
686
+ viewDialogVisible: false,
687
+ viewFormData: {},
688
+ projUrl: location.href.replace(this.$route.fullPath, "/"),
689
+ rCommon: rCommon,
690
+ rClassOptions: [],
691
+ filterTreeText: "",//树搜索
692
+ previewDialogVisible: false,
693
+ previewFormData: {},
694
+ defaultProps:{"children":"children","label":"label"},//树数据显示配置
695
+ currentPowerArr:[],
696
+ treeDefaultExpandedKeys:[],
697
+ registerResourceDialog: false
698
+ };
699
+ },
700
+
701
+ created() {
702
+ this.init();
703
+ },
704
+ watch: {
705
+ filterTreeText(val) {
706
+ this.$refs.tree.filter(val);
707
+ },
708
+ },
709
+ methods: {
710
+ init() {
711
+ this.initResourceData();
712
+ // this.initRClassOptions();
713
+ },
714
+ filterNode(value, data) {
715
+ if (!value) return true;
716
+ return data.label.indexOf(value) !== -1;
717
+ },
718
+ /**
719
+ * 树节点点击事件
720
+ *
721
+ */
722
+ treeNodeClick(data) {
723
+ let vm = this;
724
+ if(data.id == "all") {
725
+ delete this.crud.searchForm["rClass"];
726
+ delete this.crud.searchForm["rSource"];
727
+ }else{
728
+ if(data.parentId=="all"){
729
+ this.crud.searchForm["rSource"]=data["id"];
730
+ delete this.crud.searchForm["rClass"];
731
+ }else{
732
+ this.crud.searchForm["rSource"]=data["parentId"];
733
+ this.crud.searchForm["rClass"]=data["id"];
734
+ }
735
+ }
736
+ this.crud.doSearch();
737
+ },
738
+ initResourceData(){
739
+ let vm = this;
740
+ let param = Object.assign({},this.crud.searchForm);
741
+ param["groupField"]="R_SOURCE,R_CLASS";
742
+ this.axios.post(this.api.resources.find, param).then(res => {
743
+ if (res && res.data) {
744
+ let treeArr = [];
745
+ treeArr.push({"id": "all", "label": "全部", "value": "全部", "parentId": "-1"});
746
+ let treeData = res.data;
747
+ let treeDefineArr = ["rsource","rclass"];
748
+ let dataMap = {};
749
+ let fieldDataMap = {};
750
+ let fieldDataMapTemp = {};
751
+ for (let i = 0; i < treeDefineArr.length; i++) {
752
+ let cjmap = new Map();
753
+ for (let j = 0; j < treeData.length; j++) {
754
+ let label = "空";
755
+ let value = "eq(null)";
756
+ let tmpId = "";
757
+ if (treeData[j] && treeData[j][treeDefineArr[i]]) {
758
+ let val = treeData[j][treeDefineArr[i]];
759
+ tmpId = val;
760
+ if(treeDefineArr[i]=="rsource"){
761
+ val = vm.rCommon.objRSource[val]||val;
762
+ }
763
+ if (val.indexOf("nocombo") > -1) {
764
+ value = val.split(":")[2];
765
+ label = val.split(":")[1];
766
+ } else if (val.indexOf("combo") > -1) {
767
+ value = val;
768
+ label = val.split(":")[1];
769
+ } else {
770
+ label = val;
771
+ value = val;
772
+ }
773
+ }
774
+ let fieldmap = {};
775
+ fieldmap[treeDefineArr[i]] = value;
776
+ //第一轮,上级是all
777
+ if (i == 0) {
778
+ dataMap[j] = tmpId;
779
+ fieldDataMap[j] = Object.assign({}, fieldmap);
780
+ if ((i == 0 && !cjmap.has(value) || (i > 0 && !cjmap.has(dataMap[j] + "_" + tmpId)))) {
781
+ cjmap.set(value, j);
782
+ treeArr.push({
783
+ "id": tmpId,
784
+ "parentId": "all",
785
+ "label": label,
786
+ "value": value,
787
+ "field": treeDefineArr[i],
788
+ "fielddata": fieldmap
789
+ });
790
+ }
791
+
792
+ } else {
793
+ fieldDataMap[j] = Object.assign(fieldDataMap[j], fieldmap);
794
+ fieldDataMapTemp[j] = Object.assign({},fieldDataMap[j]);
795
+
796
+ if ((i == 0 && !cjmap.has(value) || (i > 0 && !cjmap.has(dataMap[j] + "_" + tmpId)))) {
797
+ cjmap.set(dataMap[j] + "_" + value, j);
798
+ if(label == "空"){
799
+ continue;
800
+ }
801
+ treeArr.push({
802
+ "id": tmpId,
803
+ "parentId": dataMap[j],
804
+ "label": label,
805
+ "value": value,
806
+ "field": treeDefineArr[i],
807
+ "fielddata": fieldDataMapTemp[j]
808
+ });
809
+ }
810
+ dataMap[j] = value;
811
+ }
812
+ }
813
+ }
814
+ // function compareSort(a,b){
815
+ // let sortA = Number(knowledgeObj[a['value']]);
816
+ // let sortB = Number(knowledgeObj[b['value']]);
817
+ // return sortA - sortB;
818
+ // }
819
+ // treeArr = treeArr.sort(compareSort);
820
+ vm.resourceData = vm.COMMON_FUNC.buildElTree(treeArr);
821
+ //默认展开根节点
822
+ vm.treeDefaultExpandedKeys.push(vm.resourceData[0].id);
823
+ }
824
+ });
825
+ },
826
+ /**
827
+ * 初始化资源分类option数据
828
+ */
829
+ initRClassOptions(){
830
+ this.axios.post(this.api.resources.getPageClass).then(res => {
831
+ let setSources = new Set();
832
+ let objSources = {};
833
+ res.data.forEach(data => {
834
+ setSources.add(data.rsource);
835
+
836
+ if (!objSources[data.rsource]) {
837
+ objSources[data.rsource] = [];
838
+ }
839
+ data.id = data.rclass;
840
+ data.name = data.rclass;
841
+ objSources[data.rsource].push(data);
842
+ });
843
+ let rClassOptions = [...this.rCommon.arrRSource];
844
+ for (let i = rClassOptions.length - 1; i >= 0; i--) {
845
+ if (!setSources.has(rClassOptions[i].id)) {
846
+ rClassOptions.splice(i, 1);
847
+ } else {
848
+ (objSources[rClassOptions[i].id]) && (rClassOptions[i].children = objSources[rClassOptions[i].id]);
849
+ }
850
+ }
851
+
852
+ this.rClassOptions = rClassOptions;
853
+ });
854
+ },
855
+
856
+ /**
857
+ * 资源来源分类查询条件触发的方法
858
+ */
859
+ rSourceAndClassChange() {
860
+ this.crud.searchForm.rSourceAndClass = '';
861
+ if (this.crud.searchForm.rSourceAndClassArr.length > 0) {
862
+ this.crud.searchForm.rSourceAndClass = this.crud.searchForm.rSourceAndClassArr[this.crud.searchForm.rSourceAndClassArr.length - 1];
863
+ }
864
+ },
865
+
866
+ /**
867
+ * 切换资源状态
868
+ */
869
+ switchStatus(id, rstatus) {
870
+ this.axios.post(this.api.resources.update, {"id":id, "rStatus":rstatus}).then(res => {
871
+ if (!res.data.operateSuccess) {
872
+ this.$message.error("修改失败");
873
+ return;
874
+ }
875
+ this.crud.search();
876
+ this.$message({
877
+ duration: 1000,
878
+ type: 'success',
879
+ message: `已${rstatus == '0' ? '禁用' : '启用'}资源`
880
+ });
881
+ });
882
+ },
883
+
884
+ /**
885
+ * 查看数据
886
+ * @param data
887
+ */
888
+ viewData(data) {
889
+ this.viewFormData = data;
890
+ this.axios.post(this.api.resources.findResources,{'id':data.id}).then(res =>{ //获取绑定资源数据
891
+ if(res.data && res.data.operateObj&& res.data.operateObj.length>0){
892
+ this.viewFormData = res.data.operateObj[0];
893
+ let operatePermis = this.viewFormData.operatePermisList ||[]; //操作权限
894
+ let dataPermis = this.viewFormData.dataPermisList || []; //数据权限
895
+ let paramSetting = {};
896
+ paramSetting["id"] = "id";
897
+ paramSetting["parentTree"] = "parentTree";
898
+ paramSetting["pId"] = "parentId"; //上级数据
899
+ paramSetting["children"] = "children"; // 设置children可配置
900
+ this.viewFormData.rOperationAuthoritys = JSON.stringify(this.COMMON_FUNC.buildElTree(operatePermis,paramSetting)|| []);
901
+ this.viewFormData.rDataAuthoritys = JSON.stringify(this.COMMON_FUNC.buildElTree(dataPermis,paramSetting)|| []);
902
+ }
903
+ });
904
+ this.viewDialogVisible = true;
905
+ },
906
+
907
+ /**
908
+ * 获取页面地址的方法
909
+ */
910
+ pageUrl(data) {
911
+ if(data.ragentUrl){
912
+ if(data.ragentUrl.indexOf("http://")==0||data.ragentUrl.indexOf("https://")==0){
913
+ return data.ragentUrl;
914
+ }else{
915
+ if(data.ragentUrl.indexOf("/")==0){
916
+ return this.projUrl +"resView"+ data.ragentUrl;
917
+ }else{
918
+ return this.projUrl +"resView/"+ data.ragentUrl;
919
+ }
920
+ }
921
+ }else{
922
+ return "";
923
+ }
924
+ },
925
+
926
+ /**
927
+ * 资源预览
928
+ * @param formData
929
+ */
930
+ previewRes(formData) {
931
+ this.previewDialogVisible = true;
932
+ this.previewFormData = formData;
933
+ },
934
+
935
+ /**
936
+ * 注册表单资源
937
+ */
938
+ registerResources(){
939
+ this.registerResourceDialog = true;
940
+ }
941
+ }
942
+ }
943
+ </script>
944
+
945
+ <style scoped lang="scss">
946
+ .custom-tree-node {
947
+ flex: 1;
948
+ display: flex;
949
+ align-items: center;
950
+ justify-content: space-between;
951
+ font-size: 14px;
952
+ padding-right: 8px;
953
+
954
+ .custom-tree-node-type{
955
+ margin-left: 2px;
956
+ font-size: 11px;
957
+ color: #409EFF;
958
+ }
959
+ }
960
+
961
+ #leftTreeController {
962
+ border: 1px solid #ddd;
963
+ border-radius: 3px;
964
+ position: absolute;
965
+ top: 10px;
966
+ left: 10px;
967
+ right: 10px;
968
+ bottom: 10px;
969
+ }
970
+ </style>