vue2-client 1.8.239 → 1.8.241

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 (210) hide show
  1. package/.env +19 -19
  2. package/.eslintrc.js +90 -90
  3. package/CHANGELOG.md +824 -824
  4. package/Components.md +60 -60
  5. package/babel.config.js +21 -21
  6. package/docs/index.md +30 -30
  7. package/docs/lowcode.md +188 -188
  8. package/docs/lowcodeForDeveloper.md +192 -192
  9. package/index.js +31 -31
  10. package/jest-transform-stub.js +8 -8
  11. package/jest.config.js +21 -21
  12. package/jest.setup.js +7 -7
  13. package/package.json +98 -98
  14. package/public/index.html +27 -27
  15. package/src/App.vue +188 -188
  16. package/src/ReportView.js +19 -19
  17. package/src/assets/img/querySlotDemo.svg +15 -15
  18. package/src/assets/svg/badtwo.svg +1 -1
  19. package/src/assets/svg/goodtwo.svg +1 -1
  20. package/src/base-client/components/common/AMisRender/index.js +3 -3
  21. package/src/base-client/components/common/AMisRender/index.vue +263 -263
  22. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +408 -408
  23. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  24. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  25. package/src/base-client/components/common/CitySelect/CitySelect.vue +346 -346
  26. package/src/base-client/components/common/CitySelect/index.js +3 -3
  27. package/src/base-client/components/common/CitySelect/index.md +109 -109
  28. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  29. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  30. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  31. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  32. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  33. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  34. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  35. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  36. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  37. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  38. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  39. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  40. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  41. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  42. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  43. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +355 -386
  44. package/src/base-client/components/common/LowCodePageRender/LowCodePageRender.vue +29 -29
  45. package/src/base-client/components/common/LowCodePageRender/editorPageRender.vue +467 -467
  46. package/src/base-client/components/common/LowCodePageRender/index.js +3 -3
  47. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  48. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  49. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  50. package/src/base-client/components/common/Tree/index.js +2 -2
  51. package/src/base-client/components/common/Upload/Upload.vue +197 -197
  52. package/src/base-client/components/common/Upload/index.js +3 -3
  53. package/src/base-client/components/common/XAddForm/XAddForm.vue +92 -92
  54. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +729 -729
  55. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  56. package/src/base-client/components/common/XAddNativeForm/lowcodeEditorRegister.js +12 -12
  57. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  58. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  59. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  60. package/src/base-client/components/common/XBadge/XBadge.vue +78 -78
  61. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  62. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  63. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  64. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  65. package/src/base-client/components/common/XDescriptions/XDescriptions.vue +167 -167
  66. package/src/base-client/components/common/XDescriptions/XDescriptionsGroup.vue +299 -299
  67. package/src/base-client/components/common/XDescriptions/demo.vue +50 -50
  68. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  69. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  70. package/src/base-client/components/common/XDescriptions/lowcodeEditorRegister.js +1 -3
  71. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +214 -214
  72. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  73. package/src/base-client/components/common/XForm/XForm.vue +256 -256
  74. package/src/base-client/components/common/XForm/XFormItem.vue +766 -761
  75. package/src/base-client/components/common/XForm/XTreeSelect.vue +206 -206
  76. package/src/base-client/components/common/XForm/index.md +178 -178
  77. package/src/base-client/components/common/XFormCol/XFormCol.vue +36 -36
  78. package/src/base-client/components/common/XFormGroup/XFormGroup.vue +242 -242
  79. package/src/base-client/components/common/XFormGroup/demo.vue +40 -40
  80. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  81. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  82. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  83. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  84. package/src/base-client/components/common/XFormTable/XFormTable.vue +519 -519
  85. package/src/base-client/components/common/XFormTable/index.md +98 -98
  86. package/src/base-client/components/common/XFormTable/lowcodeEditorRegister.js +12 -12
  87. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +147 -147
  88. package/src/base-client/components/common/XReport/XReport.vue +837 -837
  89. package/src/base-client/components/common/XReport/XReportDemo.vue +2225 -2225
  90. package/src/base-client/components/common/XReport/XReportDesign.vue +470 -470
  91. package/src/base-client/components/common/XReport/XReportJsonRender.vue +267 -267
  92. package/src/base-client/components/common/XReport/XReportTrGroup.vue +742 -742
  93. package/src/base-client/components/common/XReport/index.js +3 -3
  94. package/src/base-client/components/common/XReport/index.md +44 -44
  95. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  96. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  97. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  98. package/src/base-client/components/common/XStepView/index.js +3 -3
  99. package/src/base-client/components/common/XStepView/index.md +31 -31
  100. package/src/base-client/components/common/XTable/XTable.vue +636 -636
  101. package/src/base-client/components/common/XTable/index.md +255 -255
  102. package/src/base-client/components/common/XTree/XTree.vue +320 -320
  103. package/src/base-client/components/common/XTree/index.js +3 -3
  104. package/src/base-client/components/common/XTree/index.md +36 -36
  105. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +114 -114
  106. package/src/base-client/components/common/XTreeOne/lowcodeEditorRegister.js +9 -9
  107. package/src/base-client/components/index.js +47 -47
  108. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  109. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  110. package/src/base-client/plugins/AppData.js +115 -115
  111. package/src/base-client/plugins/Config.js +19 -19
  112. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  113. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  114. package/src/bootstrap.js +39 -39
  115. package/src/components/CodeMirror/inedx.vue +118 -118
  116. package/src/components/CodeMirror/setting.js +40 -40
  117. package/src/components/FilePreview/FilePreview.vue +166 -166
  118. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  119. package/src/components/STable/index.js +323 -323
  120. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  121. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  122. package/src/components/menu/SideMenu.vue +75 -75
  123. package/src/components/menu/menu.js +273 -273
  124. package/src/components/tool/AStepItem.vue +60 -60
  125. package/src/config/CreateQueryConfig.js +322 -322
  126. package/src/config/default/antd.config.js +89 -89
  127. package/src/config/default/setting.config.js +55 -55
  128. package/src/font-style/font.css +4 -4
  129. package/src/layouts/CommonLayout.vue +56 -56
  130. package/src/layouts/PageLayout.vue +151 -151
  131. package/src/layouts/SinglePageView.vue +138 -138
  132. package/src/layouts/header/AdminHeader.vue +132 -132
  133. package/src/layouts/header/HeaderNotice.vue +177 -177
  134. package/src/layouts/tabs/TabsHead.vue +189 -189
  135. package/src/layouts/tabs/TabsView.vue +387 -387
  136. package/src/lib.js +1 -1
  137. package/src/main.js +26 -26
  138. package/src/mock/extend/index.js +84 -84
  139. package/src/mock/goods/index.js +108 -108
  140. package/src/pages/AMisDemo/AMisDemo.vue +325 -325
  141. package/src/pages/AMisDemo/AMisDemo2.vue +74 -74
  142. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  143. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  144. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  145. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  146. package/src/pages/DynamicStatistics/FavoriteList.vue +51 -51
  147. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  148. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  149. package/src/pages/DynamicStatistics/index.vue +282 -282
  150. package/src/pages/Example/index.vue +32 -32
  151. package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
  152. package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
  153. package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
  154. package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
  155. package/src/pages/NewDynamicStatistics/FavoriteList.vue +51 -51
  156. package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
  157. package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
  158. package/src/pages/NewDynamicStatistics/index.vue +258 -258
  159. package/src/pages/ServiceReview/index.vue +284 -284
  160. package/src/pages/XReportView/index.vue +62 -62
  161. package/src/pages/login/Login.vue +378 -378
  162. package/src/pages/login/LoginV3.vue +389 -389
  163. package/src/pages/lowCode/lowCodeEditor.vue +1285 -1288
  164. package/src/pages/lowCode/lowCodeRender.vue +39 -39
  165. package/src/pages/resourceManage/orgListManage.vue +98 -98
  166. package/src/pages/system/dictionary/index.vue +44 -44
  167. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  168. package/src/pages/system/monitor/operLog/index.vue +37 -37
  169. package/src/pages/system/settings/modifyPassword.vue +117 -117
  170. package/src/pages/system/ticket/index.vue +480 -480
  171. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  172. package/src/router/async/config.async.js +33 -33
  173. package/src/router/async/router.map.js +107 -107
  174. package/src/router/guards.js +220 -220
  175. package/src/router/index.js +27 -27
  176. package/src/router.js +19 -19
  177. package/src/services/api/TicketDetailsViewApi.js +46 -46
  178. package/src/services/api/cas.js +79 -79
  179. package/src/services/api/common.js +284 -284
  180. package/src/services/api/entity.js +18 -18
  181. package/src/services/api/index.js +17 -17
  182. package/src/services/api/restTools.js +46 -46
  183. package/src/services/apiService.js +14 -14
  184. package/src/services/user.js +71 -71
  185. package/src/store/modules/setting.js +119 -119
  186. package/src/theme/default/style.less +57 -57
  187. package/src/theme/global.less +130 -130
  188. package/src/utils/authority-utils.js +85 -85
  189. package/src/utils/errorCode.js +6 -6
  190. package/src/utils/htmlToPDF.js +108 -108
  191. package/src/utils/htmlToPDFApi.js +5 -5
  192. package/src/utils/indexedDB.js +201 -201
  193. package/src/utils/login.js +144 -144
  194. package/src/utils/lowcode/lowcodeComponentMixin.js +78 -78
  195. package/src/utils/lowcode/lowcodeLog.js +29 -29
  196. package/src/utils/lowcode/lowcodeUtils.js +129 -129
  197. package/src/utils/lowcode/registerComponentForEditor.js +11 -11
  198. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  199. package/src/utils/map-utils.js +47 -47
  200. package/src/utils/reg.js +19 -19
  201. package/src/utils/request.js +343 -343
  202. package/src/utils/routerUtil.js +435 -435
  203. package/src/utils/runEvalFunction.js +6 -6
  204. package/src/utils/util.js +231 -231
  205. package/src/utils/waterMark.js +31 -31
  206. package/test/Amis.spec.js +163 -163
  207. package/test/Tree.spec.js +167 -167
  208. package/test/myDialog.spec.js +46 -46
  209. package/vue.config.js +177 -177
  210. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,130 +1,130 @@
1
- @import '~ant-design-vue/es/style/themes/default.less';
2
-
3
- html,
4
- body,
5
- #app, #root {
6
- height: 100%;
7
- }
8
-
9
- .height-fill {
10
- height: 100%;
11
- }
12
-
13
- .bg-white {
14
- background: #fff;
15
- }
16
-
17
- .colorWeak {
18
- filter: invert(80%);
19
- }
20
-
21
- .ant-layout.layout-basic {
22
- height: 100vh;
23
- min-height: 100vh;
24
- }
25
-
26
- canvas {
27
- display: block;
28
- }
29
-
30
- body {
31
- text-rendering: optimizeLegibility;
32
- -webkit-font-smoothing: antialiased;
33
- -moz-osx-font-smoothing: grayscale;
34
- }
35
-
36
- ul,
37
- ol {
38
- list-style: none;
39
- }
40
-
41
- // 数据列表 样式
42
- .table-alert {
43
- margin-bottom: 16px;
44
- }
45
- // 数据列表 操作
46
- .table-operator {
47
- margin-bottom: 18px;
48
-
49
- button {
50
- margin-right: 8px;
51
- }
52
- }
53
-
54
- // 导出组件选择框
55
- #export-checkbox-group .ant-checkbox-group-item {
56
- box-sizing: border-box;
57
- width: 33.33333333%;
58
- min-height: 1px;
59
- font-weight: 700;
60
- margin: 2px 0;
61
- }
62
-
63
- // 数据列表 搜索条件 form表单样式
64
- .table-page-search-wrapper {
65
-
66
- .ant-form-inline {
67
- .ant-form-item {
68
- display: flex;
69
- margin-top: 12px;
70
-
71
- .ant-form-item-control-wrapper {
72
- flex: 1 1;
73
- display: inline-block;
74
- vertical-align: middle;
75
- }
76
-
77
- > .ant-form-item-label {
78
- line-height: 32px;
79
- padding-right: 8px;
80
- width: auto;
81
- // 保留lable文本中的空格和换行
82
- > label {
83
- white-space: pre;
84
- }
85
- }
86
- .ant-form-item-control {
87
- height: 32px;
88
- line-height: 32px;
89
- }
90
- }
91
- }
92
-
93
- // 日期选择框的样式
94
- .ant-calendar-picker {
95
- min-width: 0;
96
- width: 100% !important;
97
- }
98
-
99
- .table-page-search-submitButtons {
100
- display: block;
101
- margin: 12px 0;
102
- float: right;
103
- white-space: nowrap;
104
- // 按钮间隔
105
- .detailed-condition ~ button {
106
- margin-left: 8px
107
- }
108
- }
109
- }
110
-
111
- .ant-layout-footer {
112
- display: none;
113
- }
114
-
115
- @media (max-width: @screen-xs) {
116
- .ant-table {
117
- width: 100%;
118
- overflow-x: auto;
119
- &-thead > tr,
120
- &-tbody > tr {
121
- > th,
122
- > td {
123
- white-space: pre;
124
- > span {
125
- display: block;
126
- }
127
- }
128
- }
129
- }
130
- }
1
+ @import '~ant-design-vue/es/style/themes/default.less';
2
+
3
+ html,
4
+ body,
5
+ #app, #root {
6
+ height: 100%;
7
+ }
8
+
9
+ .height-fill {
10
+ height: 100%;
11
+ }
12
+
13
+ .bg-white {
14
+ background: #fff;
15
+ }
16
+
17
+ .colorWeak {
18
+ filter: invert(80%);
19
+ }
20
+
21
+ .ant-layout.layout-basic {
22
+ height: 100vh;
23
+ min-height: 100vh;
24
+ }
25
+
26
+ canvas {
27
+ display: block;
28
+ }
29
+
30
+ body {
31
+ text-rendering: optimizeLegibility;
32
+ -webkit-font-smoothing: antialiased;
33
+ -moz-osx-font-smoothing: grayscale;
34
+ }
35
+
36
+ ul,
37
+ ol {
38
+ list-style: none;
39
+ }
40
+
41
+ // 数据列表 样式
42
+ .table-alert {
43
+ margin-bottom: 16px;
44
+ }
45
+ // 数据列表 操作
46
+ .table-operator {
47
+ margin-bottom: 18px;
48
+
49
+ button {
50
+ margin-right: 8px;
51
+ }
52
+ }
53
+
54
+ // 导出组件选择框
55
+ #export-checkbox-group .ant-checkbox-group-item {
56
+ box-sizing: border-box;
57
+ width: 33.33333333%;
58
+ min-height: 1px;
59
+ font-weight: 700;
60
+ margin: 2px 0;
61
+ }
62
+
63
+ // 数据列表 搜索条件 form表单样式
64
+ .table-page-search-wrapper {
65
+
66
+ .ant-form-inline {
67
+ .ant-form-item {
68
+ display: flex;
69
+ margin-top: 12px;
70
+
71
+ .ant-form-item-control-wrapper {
72
+ flex: 1 1;
73
+ display: inline-block;
74
+ vertical-align: middle;
75
+ }
76
+
77
+ > .ant-form-item-label {
78
+ line-height: 32px;
79
+ padding-right: 8px;
80
+ width: auto;
81
+ // 保留lable文本中的空格和换行
82
+ > label {
83
+ white-space: pre;
84
+ }
85
+ }
86
+ .ant-form-item-control {
87
+ height: 32px;
88
+ line-height: 32px;
89
+ }
90
+ }
91
+ }
92
+
93
+ // 日期选择框的样式
94
+ .ant-calendar-picker {
95
+ min-width: 0;
96
+ width: 100% !important;
97
+ }
98
+
99
+ .table-page-search-submitButtons {
100
+ display: block;
101
+ margin: 12px 0;
102
+ float: right;
103
+ white-space: nowrap;
104
+ // 按钮间隔
105
+ .detailed-condition ~ button {
106
+ margin-left: 8px
107
+ }
108
+ }
109
+ }
110
+
111
+ .ant-layout-footer {
112
+ display: none;
113
+ }
114
+
115
+ @media (max-width: @screen-xs) {
116
+ .ant-table {
117
+ width: 100%;
118
+ overflow-x: auto;
119
+ &-thead > tr,
120
+ &-tbody > tr {
121
+ > th,
122
+ > td {
123
+ white-space: pre;
124
+ > span {
125
+ display: block;
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
@@ -1,85 +1,85 @@
1
- /**
2
- * 判断是否有路由的权限
3
- * @param authority 路由权限配置
4
- * @param permissions 用户权限集合
5
- * @returns {boolean|*}
6
- */
7
- function hasPermission (authority, permissions) {
8
- let required = '*'
9
- if (typeof authority === 'string') {
10
- required = authority
11
- } else if (Array.isArray(authority)) {
12
- required = authority
13
- } else if (typeof authority === 'object') {
14
- required = authority.permission
15
- }
16
- return required === '*' || hasAnyItem(required, permissions, (r, t) => !!(r === t || r === t.id))
17
- }
18
-
19
- /**
20
- * 判断是否有路由需要的角色
21
- * @param authority 路由权限配置
22
- * @param roles 用户角色集合
23
- */
24
- function hasRole (authority, roles) {
25
- let required
26
- if (typeof authority === 'object') {
27
- required = authority.role
28
- }
29
- return authority === '*' || hasAnyItem(required, roles, (r, t) => !!(r === t || r === t.id))
30
- }
31
-
32
- /**
33
- * 判断目标数组是否有所需元素
34
- * @param {String | String[]}required 所需元素,数组或单个元素
35
- * @param {String[]|Object[]} source 目标数组
36
- * @param {Function} filter 匹配条件
37
- * (r: String, s: String|Object) => boolean
38
- * @returns {boolean}
39
- */
40
- function hasAnyItem (required, source, filter) {
41
- if (!required) {
42
- return false
43
- }
44
- const checkedList = Array.isArray(required) ? required : [required]
45
- return !!source.find(s => checkedList.find(r => filter(r, s)))
46
- }
47
-
48
- /**
49
- * 路由权限校验
50
- * @param route 路由
51
- * @param permissions 用户权限集合
52
- * @param roles 用户角色集合
53
- * @returns {boolean}
54
- */
55
- function hasAuthority (route, permissions, roles) {
56
- const authorities = [...route.meta.pAuthorities, route.meta.authority]
57
- for (const authority of authorities) {
58
- if (!hasPermission(authority, permissions) && !hasRole(authority, roles)) {
59
- return false
60
- }
61
- }
62
- return true
63
- }
64
-
65
- /**
66
- * 根据权限配置过滤菜单数据
67
- * @param menuData
68
- * @param permissions
69
- * @param roles
70
- */
71
- function filterMenu (menuData, permissions, roles) {
72
- return menuData.filter(menu => {
73
- if (menu.meta && menu.meta.invisible === undefined) {
74
- if (!hasAuthority(menu, permissions, roles)) {
75
- return false
76
- }
77
- }
78
- if (menu.children && menu.children.length > 0) {
79
- menu.children = filterMenu(menu.children, permissions, roles)
80
- }
81
- return true
82
- })
83
- }
84
-
85
- export { filterMenu, hasAuthority }
1
+ /**
2
+ * 判断是否有路由的权限
3
+ * @param authority 路由权限配置
4
+ * @param permissions 用户权限集合
5
+ * @returns {boolean|*}
6
+ */
7
+ function hasPermission (authority, permissions) {
8
+ let required = '*'
9
+ if (typeof authority === 'string') {
10
+ required = authority
11
+ } else if (Array.isArray(authority)) {
12
+ required = authority
13
+ } else if (typeof authority === 'object') {
14
+ required = authority.permission
15
+ }
16
+ return required === '*' || hasAnyItem(required, permissions, (r, t) => !!(r === t || r === t.id))
17
+ }
18
+
19
+ /**
20
+ * 判断是否有路由需要的角色
21
+ * @param authority 路由权限配置
22
+ * @param roles 用户角色集合
23
+ */
24
+ function hasRole (authority, roles) {
25
+ let required
26
+ if (typeof authority === 'object') {
27
+ required = authority.role
28
+ }
29
+ return authority === '*' || hasAnyItem(required, roles, (r, t) => !!(r === t || r === t.id))
30
+ }
31
+
32
+ /**
33
+ * 判断目标数组是否有所需元素
34
+ * @param {String | String[]}required 所需元素,数组或单个元素
35
+ * @param {String[]|Object[]} source 目标数组
36
+ * @param {Function} filter 匹配条件
37
+ * (r: String, s: String|Object) => boolean
38
+ * @returns {boolean}
39
+ */
40
+ function hasAnyItem (required, source, filter) {
41
+ if (!required) {
42
+ return false
43
+ }
44
+ const checkedList = Array.isArray(required) ? required : [required]
45
+ return !!source.find(s => checkedList.find(r => filter(r, s)))
46
+ }
47
+
48
+ /**
49
+ * 路由权限校验
50
+ * @param route 路由
51
+ * @param permissions 用户权限集合
52
+ * @param roles 用户角色集合
53
+ * @returns {boolean}
54
+ */
55
+ function hasAuthority (route, permissions, roles) {
56
+ const authorities = [...route.meta.pAuthorities, route.meta.authority]
57
+ for (const authority of authorities) {
58
+ if (!hasPermission(authority, permissions) && !hasRole(authority, roles)) {
59
+ return false
60
+ }
61
+ }
62
+ return true
63
+ }
64
+
65
+ /**
66
+ * 根据权限配置过滤菜单数据
67
+ * @param menuData
68
+ * @param permissions
69
+ * @param roles
70
+ */
71
+ function filterMenu (menuData, permissions, roles) {
72
+ return menuData.filter(menu => {
73
+ if (menu.meta && menu.meta.invisible === undefined) {
74
+ if (!hasAuthority(menu, permissions, roles)) {
75
+ return false
76
+ }
77
+ }
78
+ if (menu.children && menu.children.length > 0) {
79
+ menu.children = filterMenu(menu.children, permissions, roles)
80
+ }
81
+ return true
82
+ })
83
+ }
84
+
85
+ export { filterMenu, hasAuthority }
@@ -1,6 +1,6 @@
1
- export default {
2
- 401: '认证失败,无法访问系统资源',
3
- 403: '当前操作没有权限',
4
- 404: '访问资源不存在',
5
- default: '系统未知错误,请反馈给管理员'
6
- }
1
+ export default {
2
+ 401: '认证失败,无法访问系统资源',
3
+ 403: '当前操作没有权限',
4
+ 404: '访问资源不存在',
5
+ default: '系统未知错误,请反馈给管理员'
6
+ }
@@ -1,108 +1,108 @@
1
- import html2Canvas from 'html2canvas'
2
-
3
- import jsPDF from 'jspdf'
4
-
5
- // 该方法接收4个参数
6
- // title: PDF的文件名
7
- // id: 需要转PDF的HTML标签的id值
8
- // left: 左右边距,默认是10,单位是mm
9
- // top: 上下边距,默认是10,单位是mm
10
-
11
- const HtmlToPdf = {
12
-
13
- getPdf (title, id, left = 10, top = 20) {
14
- html2Canvas(document.querySelector(id), {
15
-
16
- allowTaint: false,
17
-
18
- taintTest: false,
19
-
20
- logging: false,
21
-
22
- useCORS: true,
23
-
24
- dpi: window.devicePixelRatio * 4, // 将分辨率提高到特定的DPI 提高四倍
25
-
26
- scale: 4 // 按比例增加分辨率
27
-
28
- }).then(canvas => {
29
- // eslint-disable-next-line new-cap
30
- const pdf = new jsPDF('p', 'mm', 'a4') // A4纸,纵向
31
-
32
- const ctx = canvas.getContext('2d')
33
-
34
- const a4w = 210 - (left * 2)
35
-
36
- const a4h = 297 - (top * 2) // A4大小,210mm x 297mm,四边各保留10mm的边距,显示区域190x277
37
-
38
- const imgHeight = Math.floor((a4h * canvas.width) / a4w) // 按A4显示比例换算一页图像的像素高度
39
-
40
- let renderedHeight = 0
41
-
42
- while (renderedHeight < canvas.height) {
43
- const page = document.createElement('canvas')
44
-
45
- page.width = canvas.width
46
-
47
- page.height = Math.min(imgHeight, canvas.height - renderedHeight) // 可能内容不足一页
48
-
49
- // 用getImageData剪裁指定区域,并画到前面创建的canvas对象中
50
-
51
- page.getContext('2d').putImageData(
52
-
53
- ctx.getImageData(
54
-
55
- 0,
56
-
57
- renderedHeight,
58
-
59
- canvas.width,
60
-
61
- Math.min(imgHeight, canvas.height - renderedHeight)
62
-
63
- ),
64
-
65
- 0,
66
-
67
- 0
68
-
69
- )
70
-
71
- pdf.addImage(
72
-
73
- page.toDataURL('image/jpeg', 1.0),
74
-
75
- 'JPEG',
76
-
77
- left,
78
-
79
- top,
80
-
81
- a4w,
82
-
83
- Math.min(a4h, (a4w * page.height) / page.width)
84
-
85
- ) // 添加图像到页面,保留10mm边距
86
-
87
- renderedHeight += imgHeight
88
-
89
- if (renderedHeight < canvas.height) {
90
- pdf.addPage() // 如果后面还有内容,添加一个空页
91
- }
92
-
93
- // delete page;
94
- }
95
-
96
- // 保存文件
97
-
98
- pdf.save(title + '.pdf')
99
-
100
- // loading = false;
101
-
102
- // console.log(loading);
103
- })
104
- }
105
-
106
- }
107
-
108
- export default HtmlToPdf
1
+ import html2Canvas from 'html2canvas'
2
+
3
+ import jsPDF from 'jspdf'
4
+
5
+ // 该方法接收4个参数
6
+ // title: PDF的文件名
7
+ // id: 需要转PDF的HTML标签的id值
8
+ // left: 左右边距,默认是10,单位是mm
9
+ // top: 上下边距,默认是10,单位是mm
10
+
11
+ const HtmlToPdf = {
12
+
13
+ getPdf (title, id, left = 10, top = 20) {
14
+ html2Canvas(document.querySelector(id), {
15
+
16
+ allowTaint: false,
17
+
18
+ taintTest: false,
19
+
20
+ logging: false,
21
+
22
+ useCORS: true,
23
+
24
+ dpi: window.devicePixelRatio * 4, // 将分辨率提高到特定的DPI 提高四倍
25
+
26
+ scale: 4 // 按比例增加分辨率
27
+
28
+ }).then(canvas => {
29
+ // eslint-disable-next-line new-cap
30
+ const pdf = new jsPDF('p', 'mm', 'a4') // A4纸,纵向
31
+
32
+ const ctx = canvas.getContext('2d')
33
+
34
+ const a4w = 210 - (left * 2)
35
+
36
+ const a4h = 297 - (top * 2) // A4大小,210mm x 297mm,四边各保留10mm的边距,显示区域190x277
37
+
38
+ const imgHeight = Math.floor((a4h * canvas.width) / a4w) // 按A4显示比例换算一页图像的像素高度
39
+
40
+ let renderedHeight = 0
41
+
42
+ while (renderedHeight < canvas.height) {
43
+ const page = document.createElement('canvas')
44
+
45
+ page.width = canvas.width
46
+
47
+ page.height = Math.min(imgHeight, canvas.height - renderedHeight) // 可能内容不足一页
48
+
49
+ // 用getImageData剪裁指定区域,并画到前面创建的canvas对象中
50
+
51
+ page.getContext('2d').putImageData(
52
+
53
+ ctx.getImageData(
54
+
55
+ 0,
56
+
57
+ renderedHeight,
58
+
59
+ canvas.width,
60
+
61
+ Math.min(imgHeight, canvas.height - renderedHeight)
62
+
63
+ ),
64
+
65
+ 0,
66
+
67
+ 0
68
+
69
+ )
70
+
71
+ pdf.addImage(
72
+
73
+ page.toDataURL('image/jpeg', 1.0),
74
+
75
+ 'JPEG',
76
+
77
+ left,
78
+
79
+ top,
80
+
81
+ a4w,
82
+
83
+ Math.min(a4h, (a4w * page.height) / page.width)
84
+
85
+ ) // 添加图像到页面,保留10mm边距
86
+
87
+ renderedHeight += imgHeight
88
+
89
+ if (renderedHeight < canvas.height) {
90
+ pdf.addPage() // 如果后面还有内容,添加一个空页
91
+ }
92
+
93
+ // delete page;
94
+ }
95
+
96
+ // 保存文件
97
+
98
+ pdf.save(title + '.pdf')
99
+
100
+ // loading = false;
101
+
102
+ // console.log(loading);
103
+ })
104
+ }
105
+
106
+ }
107
+
108
+ export default HtmlToPdf
@@ -1,5 +1,5 @@
1
- import HtmlToPdf from '@vue2-client/utils/htmlToPDF'
2
-
3
- export function exportHTMLNodeToPDF (fileName, nodeId) {
4
- HtmlToPdf.getPdf(fileName, nodeId)
5
- }
1
+ import HtmlToPdf from '@vue2-client/utils/htmlToPDF'
2
+
3
+ export function exportHTMLNodeToPDF (fileName, nodeId) {
4
+ HtmlToPdf.getPdf(fileName, nodeId)
5
+ }