cloud-web-corejs 1.0.258 → 1.0.259

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 (248) hide show
  1. package/package.json +32 -25
  2. package/src/components/VabUpload/fileLibraryDialog.vue +296 -0
  3. package/src/components/VabUpload/index.js +22 -2
  4. package/src/components/VabUpload/index.vue +242 -231
  5. package/src/components/VabUpload/mixins/fileLibraryDialog.js +1112 -0
  6. package/src/components/VabUpload/mixins.js +1971 -1829
  7. package/src/components/VabUpload/privateProfileDialog.vue +2 -2
  8. package/src/components/baseArea/index.vue +1628 -0
  9. package/src/components/baseInputExport/mixins.js +48 -31
  10. package/src/components/baseInputNumber/index.vue +9 -9
  11. package/src/components/baseTabs/index.vue +16 -8
  12. package/src/components/code-editor/async.js +29 -0
  13. package/src/components/code-editor/index.vue +93 -4
  14. package/src/components/errorMsg/index.js +10 -9
  15. package/src/components/errorMsg/mixins.js +25 -23
  16. package/src/components/excelExport/exportFieldDialog.vue +40 -18
  17. package/src/components/excelExport/index.js +62 -3
  18. package/src/components/excelExport/index.vue +2 -1
  19. package/src/components/excelExport/mixins.js +496 -340
  20. package/src/components/excelImport/index.js +69 -7
  21. package/src/components/excelImport/mixins.js +841 -9
  22. package/src/components/fileLibrary/categoryMoveDialog.vue +109 -109
  23. package/src/components/fileLibrary/fileHistoryDialog.vue +1 -1
  24. package/src/components/fileLibrary/fileObjAuthDialog.vue +297 -298
  25. package/src/components/fileLibrary/fileObjAuthEdit.vue +1 -1
  26. package/src/components/fileLibrary/filterDialog.vue +1 -1
  27. package/src/components/fileLibrary/index.vue +1109 -1110
  28. package/src/components/fileLibrary/mixins/indexMixins.js +10 -0
  29. package/src/components/fileLibrary/propertiesDialog.vue +190 -190
  30. package/src/components/fileLibrary/recycleBinDialog.vue +237 -236
  31. package/src/components/formOplog/mixins.js +85 -80
  32. package/src/components/hiprint/view/design/index.vue +7 -2
  33. package/src/components/jsonImport/exportUtil.js +106 -0
  34. package/src/components/jsonImport/index.js +75 -50
  35. package/src/components/jsonImport/mixins.js +350 -348
  36. package/src/components/langImport/mixins.js +502 -500
  37. package/src/components/micro-view-host/contract.js +66 -0
  38. package/src/components/micro-view-host/index.vue +148 -0
  39. package/src/components/mobile/file/index.vue +10 -0
  40. package/src/components/mobile/wf/mixins/wfModifyDialogMixin.js +51 -47
  41. package/src/components/obsUpload/index.vue +234 -231
  42. package/src/components/obsUpload/mixins.js +1542 -1476
  43. package/src/components/onlineTalk/talkUserDialog.vue +1 -1
  44. package/src/components/table/CellSlot.vue +12 -10
  45. package/src/components/table/config.js +74 -1
  46. package/src/components/table/index.js +1208 -1
  47. package/src/components/table/tableFormMixin.js +285 -1
  48. package/src/components/table/util/index.js +38 -40
  49. package/src/components/table/vxeFilter/index.js +153 -2
  50. package/src/components/table/vxeFilter/mixin.js +305 -3
  51. package/src/components/tempStorage/tempStorageDialog.vue +1 -1
  52. package/src/components/vb-tabs/x-tabs.vue +10 -5
  53. package/src/components/wf/addTaskUserdialog.vue +1 -1
  54. package/src/components/wf/mixins/setCandidateDialog.js +217 -217
  55. package/src/components/wf/mixins/setCandidateDialog2.js +252 -252
  56. package/src/components/wf/wf.js +2224 -2203
  57. package/src/components/wf/wfUtil.js +2 -1
  58. package/src/components/xform/docs/2026-08 /345/210/227/350/241/250/345/257/274/345/207/272/350/204/261/346/225/217/345/210/227/345/211/224/351/231/244/350/220/275/345/234/260/346/226/207/346/241/243.md" +173 -0
  59. package/src/components/xform/form-designer/designer.js +1 -0
  60. package/src/components/xform/form-designer/form-widget/container-widget/containerMixin.js +110 -1
  61. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +282 -1
  62. package/src/components/xform/form-designer/form-widget/field-widget/area-select-widget.vue +272 -0
  63. package/src/components/xform/form-designer/form-widget/field-widget/autocomplete-widget.vue +119 -0
  64. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +14 -0
  65. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +18 -73
  66. package/src/components/xform/form-designer/form-widget/field-widget/mixins/autocomplete-mixin.js +451 -0
  67. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +157 -0
  68. package/src/components/xform/form-designer/form-widget/field-widget/mixins/utc-transform-mixin.js +75 -0
  69. package/src/components/xform/form-designer/form-widget/field-widget/save_submit_wf_button-widget.vue +112 -0
  70. package/src/components/xform/form-designer/form-widget/field-widget/script-input-widget.vue +149 -0
  71. package/src/components/xform/form-designer/form-widget/indexMixin.js +179 -1
  72. package/src/components/xform/form-designer/indexMixin.js +823 -1
  73. package/src/components/xform/form-designer/refMixinDesign.js +27 -1
  74. package/src/components/xform/form-designer/setting-panel/action-button-config-dialog.vue +241 -0
  75. package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +601 -0
  76. package/src/components/xform/form-designer/setting-panel/form-setting.vue +6 -0
  77. package/src/components/xform/form-designer/setting-panel/index.vue +314 -309
  78. package/src/components/xform/form-designer/setting-panel/indexMixin.js +324 -1
  79. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +8 -7
  80. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +8 -7
  81. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +344 -0
  82. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +2 -2
  83. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaDataType-editor.vue +25 -0
  84. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaMinLevel-editor.vue +50 -0
  85. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaName-editor.vue +20 -0
  86. package/src/components/xform/form-designer/setting-panel/property-editor/field-autocomplete/autocomplete-vabSearchName-editor.vue +199 -0
  87. package/src/components/xform/form-designer/setting-panel/property-editor/field-baseAttachment/baseAttachment-fileTypes-editor.vue +23 -0
  88. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/showAllLevels-editor.vue +21 -0
  89. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-dateLimit-editor.vue +157 -0
  90. package/src/components/xform/form-designer/setting-panel/property-editor/field-script-input/script-input-editor.vue +55 -0
  91. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload/vabUpload-fileTypes-editor.vue +23 -0
  92. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesEditorMixin.js +116 -0
  93. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesSelect.vue +176 -0
  94. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +3 -3
  95. package/src/components/xform/form-designer/setting-panel/property-editor/utcTransformEnabled-editor.vue +19 -0
  96. package/src/components/xform/form-designer/setting-panel/widgetPropertyDialogMixin.js +186 -0
  97. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +566 -1
  98. package/src/components/xform/form-designer/widget-panel/indexMixin.js +290 -1
  99. package/src/components/xform/form-render/compareDelList.vue +83 -0
  100. package/src/components/xform/form-render/compareView.vue +76 -0
  101. package/src/components/xform/form-render/container-item/containerItemMixin.js +378 -1
  102. package/src/components/xform/form-render/container-item/data-table-mixin.js +35 -0
  103. package/src/components/xform/form-render/container-item/detail-item.vue +41 -0
  104. package/src/components/xform/form-render/container-item/dynamicFieldEngine.js +285 -0
  105. package/src/components/xform/form-render/container-item/dynamicFieldMixin.js +416 -0
  106. package/src/components/xform/form-render/container-item/list-h5-item.vue +12 -0
  107. package/src/components/xform/form-render/dynamicDialogRender.js +195 -1
  108. package/src/components/xform/form-render/dynamicDrawerRender.js +229 -0
  109. package/src/components/xform/form-render/formDynamicFieldMixin.js +131 -0
  110. package/src/components/xform/form-render/refMixin.js +29 -1
  111. package/src/components/xform/mixins/scriptHttp.js +172 -1
  112. package/src/components/xform/utils/dynamicSchemaUtil.js +361 -0
  113. package/src/components/xform/utils/tableCellValidateUtil.js +148 -0
  114. package/src/components/xform/utils/textMaskUtil.js +179 -0
  115. package/src/components/xform/utils/treeTableUtil.js +1265 -0
  116. package/src/components/xform/utils/util.js +1 -0
  117. package/src/components/xform/utils/validators.js +133 -1
  118. package/src/directive/LimitNumber/index.js +143 -124
  119. package/src/microRouter/index.js +447 -0
  120. package/src/mixins/tableTree/index.js +77 -14
  121. package/src/permission.js +132 -107
  122. package/src/public-path.js +38 -0
  123. package/src/router/index.js +3 -3
  124. package/src/store/modules/micro.js +57 -0
  125. package/src/store/modules/permission.js +535 -371
  126. package/src/store/modules/tagsView.js +38 -21
  127. package/src/store/modules/user.js +409 -370
  128. package/src/utils/aes.js +9 -3
  129. package/src/utils/auth.js +1 -1
  130. package/src/utils/componentDialog.js +162 -40
  131. package/src/utils/global.js +35 -34
  132. package/src/utils/index.js +579 -579
  133. package/src/utils/keepAlive.js +8 -4
  134. package/src/utils/lazyPlugin.js +66 -0
  135. package/src/utils/menuAdapter.js +277 -0
  136. package/src/utils/repeatOpen.js +48 -0
  137. package/src/utils/request.js +417 -395
  138. package/src/utils/resolveViewComponent.js +203 -0
  139. package/src/utils/vab.js +14 -3
  140. package/src/utils/validate.js +104 -106
  141. package/src/views/bd/setting/bd_attach_setting/dialog.vue +1 -1
  142. package/src/views/bd/setting/bd_attach_setting/list.vue +1 -1
  143. package/src/views/bd/setting/bd_company_env/dialog.vue +1 -1
  144. package/src/views/bd/setting/bd_company_env/list.vue +1 -1
  145. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +488 -489
  146. package/src/views/bd/setting/form_import_log/list.vue +1 -1
  147. package/src/views/bd/setting/form_script/dialog.vue +1 -1
  148. package/src/views/bd/setting/form_script/form_list.vue +174 -166
  149. package/src/views/bd/setting/form_script/list.vue +1 -1
  150. package/src/views/bd/setting/form_script/list1.vue +1 -1
  151. package/src/views/bd/setting/form_script/mixins/form_list.js +330 -322
  152. package/src/views/bd/setting/form_template/dialog.vue +1 -1
  153. package/src/views/bd/setting/form_template/formDesignerDialog.vue +172 -171
  154. package/src/views/bd/setting/form_template/ftHistoryDialog.vue +1 -1
  155. package/src/views/bd/setting/form_template/itemList.vue +1 -1
  156. package/src/views/bd/setting/form_template/list.vue +3 -3
  157. package/src/views/bd/setting/form_template/mixins/edit.js +3 -3
  158. package/src/views/bd/setting/form_template/mixins/list.js +3 -3
  159. package/src/views/bd/setting/form_template/mixins/list2.js +3 -3
  160. package/src/views/bd/setting/form_template/mixins/wf_list.js +3 -3
  161. package/src/views/bd/setting/form_template/wfObjConfigDialog.vue +253 -254
  162. package/src/views/bd/setting/form_template/wf_list.vue +3 -3
  163. package/src/views/bd/setting/logic_param/edit.vue +20 -20
  164. package/src/views/bd/setting/logic_param/list.vue +1 -1
  165. package/src/views/bd/setting/menu_kind/dialog.vue +1 -1
  166. package/src/views/bd/setting/menu_kind/list.vue +1 -1
  167. package/src/views/bd/setting/push_data/list.vue +1 -1
  168. package/src/views/bd/setting/push_data_h/list.vue +1 -1
  169. package/src/views/bd/setting/request_async_setting/list.vue +1 -1
  170. package/src/views/bd/setting/request_setting/list.vue +1 -1
  171. package/src/views/bd/setting/table_model/dialog.vue +1 -1
  172. package/src/views/bd/setting/table_model/list.vue +1 -1
  173. package/src/views/bd/setting/table_model/zdDialog.vue +1 -1
  174. package/src/views/user/access_log/list.vue +1 -1
  175. package/src/views/user/access_log/list2.vue +1 -1
  176. package/src/views/user/api_request/list.vue +1 -1
  177. package/src/views/user/area/dialog.vue +1 -1
  178. package/src/views/user/area/list.vue +1 -1
  179. package/src/views/user/bill_setting/list.vue +1 -1
  180. package/src/views/user/bill_setting/userDialog.vue +1 -1
  181. package/src/views/user/code_rules/list.vue +1 -1
  182. package/src/views/user/commMenu/index.vue +2 -2
  183. package/src/views/user/common_attribute/list.vue +2 -2
  184. package/src/views/user/common_script/list.vue +1 -1
  185. package/src/views/user/company_info/dialog.vue +1 -1
  186. package/src/views/user/country/dialog.vue +1 -1
  187. package/src/views/user/country/list.vue +1 -1
  188. package/src/views/user/data_type_setting/dialog.vue +1 -1
  189. package/src/views/user/extend_datasource/dialog.vue +4 -1
  190. package/src/views/user/extend_datasource/edit.vue +2 -1
  191. package/src/views/user/extend_datasource/list.vue +4 -1
  192. package/src/views/user/fieldTranslation/list.vue +1 -1
  193. package/src/views/user/field_values_invisible/list.vue +1 -1
  194. package/src/views/user/file_type/list.vue +1 -1
  195. package/src/views/user/file_view_area/list.vue +1 -1
  196. package/src/views/user/file_view_ins/list.vue +22 -1
  197. package/src/views/user/form/view/list.vue +64 -1
  198. package/src/views/user/groups/dialog.vue +1 -1
  199. package/src/views/user/groups/list.vue +1 -1
  200. package/src/views/user/home/default.vue +2 -2
  201. package/src/views/user/home/default2.vue +1158 -1148
  202. package/src/views/user/home/index.vue +3 -10
  203. package/src/views/user/lang_tag/dialog.vue +1 -1
  204. package/src/views/user/lang_tag/list.vue +1 -1
  205. package/src/views/user/language_setting/list.vue +1 -1
  206. package/src/views/user/login/default.vue +0 -8
  207. package/src/views/user/login/indexMixin.js +547 -556
  208. package/src/views/user/menu/list.vue +25 -2
  209. package/src/views/user/menuFallback/index.vue +123 -0
  210. package/src/views/user/mobile_menu/list.vue +1 -1
  211. package/src/views/user/notify_message/dialog.vue +22 -1
  212. package/src/views/user/notify_message/list.vue +1 -1
  213. package/src/views/user/notify_template/list.vue +1 -1
  214. package/src/views/user/notify_template/list2.vue +1 -1
  215. package/src/views/user/oplog/list.vue +1 -1
  216. package/src/views/user/outLink/form_view.vue +5 -14
  217. package/src/views/user/outLink/index.vue +6 -1
  218. package/src/views/user/outLink/view.vue +5 -13
  219. package/src/views/user/position/dialog.vue +1 -1
  220. package/src/views/user/position/list.vue +1 -1
  221. package/src/views/user/project_tag/dialog.vue +1 -1
  222. package/src/views/user/project_tag/list.vue +1 -1
  223. package/src/views/user/push_setting/list.vue +1 -1
  224. package/src/views/user/request_setting/list.vue +1 -1
  225. package/src/views/user/role/dialog.vue +1 -1
  226. package/src/views/user/role/list.vue +1 -1
  227. package/src/views/user/sale_org/dialog.vue +1 -1
  228. package/src/views/user/sale_org/list.vue +1 -1
  229. package/src/views/user/system_notice/list.vue +1 -1
  230. package/src/views/user/system_parameter/list.vue +1 -1
  231. package/src/views/user/user/dialog.vue +1 -1
  232. package/src/views/user/user/edit.vue +306 -159
  233. package/src/views/user/user/form_dialog.vue +1 -1
  234. package/src/views/user/user/form_list.vue +1 -1
  235. package/src/views/user/user/list.vue +2 -2
  236. package/src/views/user/user_log_classify/list.vue +1 -1
  237. package/src/views/user/wf/iframe/index.vue +6 -1
  238. package/src/views/user/wf/iframe/index2.vue +6 -1
  239. package/src/views/user/wf/wfReport/index.vue +12 -6
  240. package/src/views/user/wf/wf_auto_submit_data/list.vue +2 -2
  241. package/src/views/user/wf/wf_manage/list.vue +97 -24
  242. package/src/views/user/wf/wf_manage/list2.vue +875 -0
  243. package/src/views/user/wf/wf_manage/wfContentDialog.vue +23 -1
  244. package/src/views/user/wf/wf_obj_config/dialog.vue +1 -1
  245. package/src/views/user/wf/wf_obj_config/list.vue +1 -1
  246. package/src/views/user/wf/wf_obj_config/list_form.vue +1 -1
  247. package/src/views/user/wf/wf_transfer_setting/list.vue +1 -1
  248. package/src/views/user/workbench_menu/list.vue +1 -1
@@ -1,500 +1,502 @@
1
- /**version-1.0*/
2
- import {read, utils} from 'xlsx'
3
-
4
- let tmixins = {};
5
- var XLSX = window.XLSX || {read, utils};
6
- import {
7
- getToken
8
- } from '../../utils/auth';
9
- import { getErrorMsg } from '@base/utils/index.js'
10
-
11
- let configUtil = {
12
- baseUrl: process.env.VUE_APP_BASE_API,
13
- XLSX,
14
- getToken
15
- };
16
- let importTimer = null;
17
- let loadingObj = null
18
- tmixins = {
19
- name: 'excelImport',
20
- props: ['param'],
21
- data() {
22
- return {
23
- excTime: 0,
24
- showImportDialog: false,
25
- showImportDialog2: false,
26
- falseValue: false,
27
- fileRaw: false,
28
- isEnd: false,
29
- currentIndex: 0,
30
- excelTemplate: "",
31
- prefix: '/user',
32
- dataSize: 0,
33
- totalSuccessNum: 0,
34
- totalErrorNum: 0,
35
- percentageNum: 0,
36
- successRows: [],
37
- failRows: [],
38
- oriCols: [],
39
- showImportResult: false,
40
- resultType: '',
41
- option: {},
42
- showContent: false,
43
- resOption: {}
44
- }
45
- },
46
- created() {
47
-
48
- },
49
- beforeDestroy() {
50
- this.clearImportTimer()
51
- },
52
- methods: {
53
- initResGird() {
54
- var that = this;
55
- let tableRef = 'resGrid';
56
- let columns = [{
57
- type: 'checkbox',
58
- fixed: 'left',
59
- width: 48,
60
- resizable: false,
61
- headerClassName: 'vxe-hcs',
62
- className: 'vxe-hcs'
63
- },
64
- {
65
- field: 'impNumber',
66
- title: this.$t2('行号', 'components.excelImport.impNumber'),
67
- width: 100,
68
- fixed: 'left'
69
- },
70
- {
71
- field: '_resultContent',
72
- title: this.$t2('结果', 'components.excelImport.resultContent'),
73
- width: 250,
74
- fixed: 'left',
75
- slots: {
76
- default: ({
77
- row,
78
- $rowIndex,
79
- $table
80
- }) => {
81
- return that.handleRes(row._resultContent);
82
- }
83
- }
84
- }
85
- ];
86
- let cCols = this.oriCols.map((oriCol, index) => {
87
- let col = {
88
- field: oriCol.field,
89
- title: oriCol.title,
90
- width: 150
91
- };
92
- if (index == 0) {
93
- col.fixed = 'left';
94
- }
95
- return col;
96
- });
97
- columns = columns.concat(cCols);
98
-
99
- let tableOption = {
100
- vue: this,
101
- tableRef: tableRef,
102
- tableNameRequired: false,
103
- columns: columns,
104
- config: {
105
- toolbarConfig: {
106
- custom: false
107
- }
108
- }
109
- };
110
-
111
- this.$vxeTableUtil.initVxeTable(tableOption).then(opts => {
112
- this.resOption = opts;
113
- });
114
- },
115
- exc() {
116
- this.option = this.param;
117
- this.showContent = true;
118
- this.showImportDialog = true;
119
- this.showImportDialog2 = false;
120
- },
121
- showSuccessResult() {
122
- this.showImportResult = true;
123
- this.resultType = 1;
124
- this.$nextTick(() => {
125
- this.initResGird();
126
- this.$nextTick(() => {
127
- let tDatas = this.successRows.map((item, index) => {
128
- // item.id = index;
129
- return item;
130
- });
131
- this.$refs.resGrid.loadData(tDatas);
132
- });
133
- });
134
- },
135
- showErrorResult() {
136
- this.showImportResult = true;
137
- this.resultType = 0;
138
- this.$nextTick(() => {
139
- this.initResGird();
140
- this.$nextTick(() => {
141
- let tDatas = this.failRows.map((item, index) => {
142
- // item.id = index;
143
- return item;
144
- });
145
- this.$refs.resGrid.loadData(tDatas);
146
- });
147
- });
148
- },
149
- fileChange(file) {
150
- if (file) {
151
- this.fileRaw = file.raw;
152
- } else {
153
- this.fileRaw = false;
154
- }
155
- },
156
- dialogClose1() {
157
- this.$emit("update:visiable", false);
158
- this.showContent = false;
159
- },
160
- async dialogPrimary1() {
161
- let that = this;
162
- let option = this.option;
163
- let saveUrl = option.saveUrl;
164
- if (!saveUrl) {
165
- this.dialogPrimary3();
166
- return false;
167
- }
168
-
169
- if (!(this.fileRaw)) {
170
- this.$baseAlert(this.$t2('请上传附件', 'components.excelImport.warmMsg1'));
171
- return false;
172
- }
173
- this.createImportTimer();
174
- this.showImportDialog = false;
175
- if (!option.onConfirm) {
176
- this.showImportDialog2 = true;
177
- }
178
- this.$nextTick(() => {
179
- try {
180
- this.readExcel(this.fileRaw, function (resultData) {
181
- if (option.onConfirm) {
182
- option.onConfirm(resultData.data, that.fileRaw);
183
- } else {
184
- that.syncDataForImport({
185
- multi: false,
186
- data: resultData,
187
- saveUrl: saveUrl
188
- });
189
- }
190
- });
191
- } catch (et) {
192
- that.clearImportTimer();
193
- console.error(et);
194
- }
195
- });
196
- },
197
- async langdialogPrimary() {
198
- let that = this;
199
- let option = this.option;
200
- let saveUrl = option.saveUrl;
201
- if (!saveUrl) {
202
- this.dialogPrimary3();
203
- return false;
204
- }
205
-
206
- if (!(this.fileRaw)) {
207
- this.$baseAlert(this.$t2('请上传附件', 'components.excelImport.warmMsg1'));
208
- return false;
209
- }
210
- this.createImportTimer();
211
- this.showImportDialog = false;
212
- if (!option.onConfirm) {
213
- this.showImportDialog2 = true;
214
- }
215
- this.$nextTick(() => {
216
- try {
217
- this.readExcel(this.fileRaw, function (resultData) {
218
- if (option.onConfirm) {
219
- option.onConfirm(resultData.data, that.fileRaw);
220
- } else {
221
- that.syncDataForImport({
222
- multi: false,
223
- data: resultData,
224
- saveUrl: saveUrl
225
- });
226
- }
227
- });
228
- } catch (et) {
229
- that.clearImportTimer();
230
- console.error(et);
231
- }
232
- });
233
- },
234
- dialogClose2() {
235
- this.clearImportTimer();
236
- this.showImportDialog2 = false;
237
- this.showContent = false;
238
- this.option.callback && this.option.callback();
239
- },
240
- dialogPrimary2() {
241
- this.clearImportTimer();
242
- this.showImportDialog2 = false;
243
- this.showContent = false;
244
- this.option.callback && this.option.callback(this.resultData);
245
- },
246
- async readExcel(file, callback) {
247
- let that = this;
248
- let option = this.option;
249
-
250
- const fileReader = new FileReader();
251
- fileReader.onload = async (ev) => {
252
- var resultData;
253
- try {
254
- /*const arrayBuffer = ev.target.result;
255
- const decoder = new TextDecoder('gbk'); // 指定为 GBK 编码
256
- const fileContent = decoder.decode(arrayBuffer);*/
257
-
258
- let fileContent = ev.target.result
259
- const data = JSON.parse(fileContent);
260
-
261
- var titles = Object.keys(data[0]);
262
- var fields = titles;
263
- var columns = [];
264
- var cols = fields.map(item => {
265
- return {
266
- field: item,
267
- title: item,
268
- width: 100,
269
- }
270
- });
271
- var oriCols = JSON.parse(JSON.stringify(cols));//列信息
272
- this.oriCols = oriCols;
273
-
274
- resultData = {
275
- data: data,
276
- titles: titles,
277
- fields: fields,
278
- oriCols: oriCols
279
- };
280
- this.resultData = resultData;
281
- callback(resultData);
282
- } catch (et) {
283
- that.showContent = false;
284
- that.clearImportTimer();
285
- console.error(et)
286
- }
287
- };
288
- // fileReader.readAsBinaryString(file);
289
- fileReader.readAsText(file, 'UTF-8');
290
-
291
-
292
- },
293
- syncDataForImport(opts) {
294
- let that = this;
295
- var multi = this.option.multi;
296
- var resultData = opts.data;
297
- var datas = resultData.data;
298
- var titles = resultData.titles;
299
- var fields = resultData.fields;
300
- let uniqueFields = resultData.uniqueFields || [];
301
- var saveUrl = opts.saveUrl;
302
- var size = datas.length;
303
- var index = 0;
304
- var successNum = 0;
305
- var failNum = 0;
306
- var dialogObj = this.$refs.importDialog.$el;
307
- var successNumObj = dialogObj.querySelector(".successNum");
308
- var failNumObj = dialogObj.querySelector(".failNum");
309
- var percentageObj = dialogObj.querySelector(".percentage");
310
- var doneNumObj = dialogObj.querySelector(".doneNum");
311
- dialogObj.querySelector(".dataSize").innerText = size;
312
-
313
- that.successRows = [];
314
- that.failRows = [];
315
-
316
- var multiSize = opts.multiSize || 2;
317
-
318
- let groupIndex = 0;
319
- let groupDatas = [];
320
-
321
- var compareV = function (property) {
322
- return function (a, b) {
323
- var value1 = a[property];
324
- var value2 = b[property];
325
- return value1 - value2;
326
- }
327
- }
328
-
329
- var prevHandleData = function (percentageStr, excNum) {
330
-
331
- successNumObj.innerText = successNum;
332
- failNumObj.innerText = failNum;
333
- doneNumObj.innerText = successNum + failNum;
334
- that.percentageNum = percentageStr;
335
- let isEnd = false;
336
- if (uniqueFields.length) {
337
- isEnd = groupIndex + 1 >= groupDatas.length;
338
- } else {
339
- isEnd = index + excNum >= size;
340
- }
341
- if (!isEnd) {
342
- index = index + excNum;
343
- groupIndex = groupIndex + 1;
344
- setTimeout(function () {
345
- handleData();
346
- }, 1);
347
- } else {
348
- setTimeout(function () {
349
- that.clearImportTimer();
350
- }, 300);
351
- }
352
- };
353
-
354
- let getDefaultValue = (row) => {
355
- let value = null;
356
- let defaultValue = this.option.defaultValue;
357
- if (defaultValue) {
358
- if (typeof defaultValue == "function") {
359
- value = defaultValue(row) || {};
360
- } else {
361
- value = defaultValue || {};
362
- }
363
- }
364
- return value;
365
- }
366
-
367
- let handleData = () => {
368
- if (!that.isEnd && index < size) {
369
- let a = 1
370
- var param;
371
- var excNum;
372
-
373
- var data = datas[index];
374
- data.impSeq = index;
375
- data.impNumber = index + 1;
376
- excNum = 1;
377
- datas[index] = data;
378
-
379
- param = data;
380
- let defaultValue = getDefaultValue(data);
381
- if (defaultValue) {
382
- Object.assign(param, defaultValue);
383
- }
384
-
385
- var percentageStr = parseInt((index + excNum) * 100 / size);
386
- if (param == null || param.length == 0) {
387
- if (that.showContent) {
388
- prevHandleData(percentageStr, excNum);
389
- }
390
- return;
391
- }
392
-
393
- that.$http({
394
- url: saveUrl,
395
- method: "post",
396
- data: param,
397
- resultType: "special",
398
- modal: false,
399
- callback: (resultMsg) => {
400
- var data = datas[index];
401
- data._resultType = resultMsg.type;
402
- data._resultContent = (resultMsg.type == "success") ? this.$t2('导入成功', 'components.excelImport.importSucess') : resultMsg.content;
403
-
404
- if (resultMsg.type == "success") {
405
- successNum++;
406
- that.successRows.push(data);
407
- } else {
408
- failNum++;
409
- that.failRows.push(data);
410
- }
411
- if (that.showContent) {
412
- prevHandleData(percentageStr, excNum);
413
- }
414
- }
415
- }).catch(function (et) {
416
- that.isEnd = true;
417
- that.clearImportTimer();
418
- console.error(et);
419
- });
420
- }
421
- }
422
- handleData();
423
- },
424
- handleRes(val) {
425
- /* var content = val;
426
- var text = content;
427
- if (content && content.indexOf("Exception") >= 0) {
428
- var index0 = content.lastIndexOf("*]");
429
- if (index0 >= 0) {
430
- text = content.substr(index0);
431
- if (text) {
432
- var index1 = text.indexOf("Exception:");
433
- if (index1 >= 0) {
434
- text = text.substr(index1 + 10);
435
- }
436
- }
437
- }
438
- } */
439
- let text = getErrorMsg(val)
440
- return text;
441
- },
442
- exportToExcel() {
443
- let str = this.resultType === 1 ? this.$t2('成功', 'components.excelImport.success') : this.$t2('失败', 'components.excelImport.fail');
444
- let fileName = this.$t2('导入结果导出', 'components.excelImport.exportFileName') + '(' + str + ')';
445
- let $grid = this.$refs.resGrid;
446
- let columns = $grid.getColumns();
447
- if (columns && columns.length) {
448
- let fields = columns.filter((item, index) => {
449
- return index > 0 && item.property;
450
- }).map((item, index) => {
451
- return item.property;
452
- });
453
- this.$refs.resGrid.exportData({
454
- filename: fileName,
455
- mode: 'all',
456
- type: 'csv',
457
- columns: fields
458
- });
459
- }
460
- },
461
- createImportTimer() {
462
- this.excTime = 0;
463
- let beginTime = new Date().getTime();
464
- importTimer = setInterval(() => {
465
- let nowTime = new Date().getTime();
466
- let diffTime = (nowTime - beginTime) / 1000;
467
- this.$set(this, 'excTime', this.$baseLodash.round(diffTime, 2));
468
- }, 100);
469
- },
470
- clearImportTimer() {
471
- clearInterval(importTimer);
472
- loadingObj && loadingObj.close();
473
- },
474
- async dialogPrimary3() {
475
- if (!(this.fileRaw)) {
476
- this.$baseAlert(this.$t2('请上传附件', 'components.excelImport.warmMsg1'));
477
- return false;
478
- }
479
- let that = this;
480
- let option = this.option;
481
- loadingObj = this.$baseLoading({
482
- target: document.body,
483
- background: 'unset'
484
- });
485
- this.readExcel(this.fileRaw, function (resultData) {
486
- try {
487
- if (option.callback && option.callback(resultData) !== false) {
488
- that.showImportDialog = false;
489
- }
490
- } catch (et) {
491
- console.error(et);
492
- }
493
- setTimeout(function () {
494
- loadingObj && loadingObj.close();
495
- }, 200);
496
- });
497
- }
498
- }
499
- };
500
- export const mixins = tmixins;
1
+ /**version-1.0*/
2
+ import {read, utils} from 'xlsx'
3
+
4
+ let tmixins = {};
5
+ var XLSX = window.XLSX || {read, utils};
6
+ import {
7
+ getToken
8
+ } from '../../utils/auth';
9
+ import { getErrorMsg } from '@base/utils/index.js'
10
+
11
+ let configUtil = {
12
+ baseUrl: process.env.VUE_APP_BASE_API,
13
+ XLSX,
14
+ getToken
15
+ };
16
+ // importTimer / loadingObj 原为模块级单例:两个导入弹窗并存时后者覆盖前者引用,
17
+ // 前一个 interval(100ms/次)与 loading 永久失控——已改为实例属性 this.importTimer / this.loadingObj
18
+ tmixins = {
19
+ name: 'excelImport',
20
+ props: ['param'],
21
+ data() {
22
+ return {
23
+ excTime: 0,
24
+ showImportDialog: false,
25
+ showImportDialog2: false,
26
+ falseValue: false,
27
+ fileRaw: false,
28
+ isEnd: false,
29
+ currentIndex: 0,
30
+ excelTemplate: "",
31
+ prefix: '/user',
32
+ dataSize: 0,
33
+ totalSuccessNum: 0,
34
+ totalErrorNum: 0,
35
+ percentageNum: 0,
36
+ successRows: [],
37
+ failRows: [],
38
+ oriCols: [],
39
+ showImportResult: false,
40
+ resultType: '',
41
+ option: {},
42
+ showContent: false,
43
+ resOption: {}
44
+ }
45
+ },
46
+ created() {
47
+
48
+ },
49
+ beforeDestroy() {
50
+ this.clearImportTimer()
51
+ },
52
+ methods: {
53
+ initResGird() {
54
+ var that = this;
55
+ let tableRef = 'resGrid';
56
+ let columns = [{
57
+ type: 'checkbox',
58
+ fixed: 'left',
59
+ width: 48,
60
+ resizable: false,
61
+ headerClassName: 'vxe-hcs',
62
+ className: 'vxe-hcs'
63
+ },
64
+ {
65
+ field: 'impNumber',
66
+ title: this.$t2('行号', 'components.excelImport.impNumber'),
67
+ width: 100,
68
+ fixed: 'left'
69
+ },
70
+ {
71
+ field: '_resultContent',
72
+ title: this.$t2('结果', 'components.excelImport.resultContent'),
73
+ width: 250,
74
+ fixed: 'left',
75
+ slots: {
76
+ default: ({
77
+ row,
78
+ $rowIndex,
79
+ $table
80
+ }) => {
81
+ return that.handleRes(row._resultContent);
82
+ }
83
+ }
84
+ }
85
+ ];
86
+ let cCols = this.oriCols.map((oriCol, index) => {
87
+ let col = {
88
+ field: oriCol.field,
89
+ title: oriCol.title,
90
+ width: 150
91
+ };
92
+ if (index == 0) {
93
+ col.fixed = 'left';
94
+ }
95
+ return col;
96
+ });
97
+ columns = columns.concat(cCols);
98
+
99
+ let tableOption = {
100
+ vue: this,
101
+ tableRef: tableRef,
102
+ tableNameRequired: false,
103
+ columns: columns,
104
+ config: {
105
+ toolbarConfig: {
106
+ custom: false
107
+ }
108
+ }
109
+ };
110
+
111
+ this.$vxeTableUtil.initVxeTable(tableOption).then(opts => {
112
+ this.resOption = opts;
113
+ });
114
+ },
115
+ exc() {
116
+ this.option = this.param;
117
+ this.showContent = true;
118
+ this.showImportDialog = true;
119
+ this.showImportDialog2 = false;
120
+ },
121
+ showSuccessResult() {
122
+ this.showImportResult = true;
123
+ this.resultType = 1;
124
+ this.$nextTick(() => {
125
+ this.initResGird();
126
+ this.$nextTick(() => {
127
+ let tDatas = this.successRows.map((item, index) => {
128
+ // item.id = index;
129
+ return item;
130
+ });
131
+ this.$refs.resGrid.loadData(tDatas);
132
+ });
133
+ });
134
+ },
135
+ showErrorResult() {
136
+ this.showImportResult = true;
137
+ this.resultType = 0;
138
+ this.$nextTick(() => {
139
+ this.initResGird();
140
+ this.$nextTick(() => {
141
+ let tDatas = this.failRows.map((item, index) => {
142
+ // item.id = index;
143
+ return item;
144
+ });
145
+ this.$refs.resGrid.loadData(tDatas);
146
+ });
147
+ });
148
+ },
149
+ fileChange(file) {
150
+ if (file) {
151
+ this.fileRaw = file.raw;
152
+ } else {
153
+ this.fileRaw = false;
154
+ }
155
+ },
156
+ dialogClose1() {
157
+ this.$emit("update:visiable", false);
158
+ this.showContent = false;
159
+ },
160
+ async dialogPrimary1() {
161
+ let that = this;
162
+ let option = this.option;
163
+ let saveUrl = option.saveUrl;
164
+ if (!saveUrl) {
165
+ this.dialogPrimary3();
166
+ return false;
167
+ }
168
+
169
+ if (!(this.fileRaw)) {
170
+ this.$baseAlert(this.$t2('请上传附件', 'components.excelImport.warmMsg1'));
171
+ return false;
172
+ }
173
+ this.createImportTimer();
174
+ this.showImportDialog = false;
175
+ if (!option.onConfirm) {
176
+ this.showImportDialog2 = true;
177
+ }
178
+ this.$nextTick(() => {
179
+ try {
180
+ this.readExcel(this.fileRaw, function (resultData) {
181
+ if (option.onConfirm) {
182
+ option.onConfirm(resultData.data, that.fileRaw);
183
+ } else {
184
+ that.syncDataForImport({
185
+ multi: false,
186
+ data: resultData,
187
+ saveUrl: saveUrl
188
+ });
189
+ }
190
+ });
191
+ } catch (et) {
192
+ that.clearImportTimer();
193
+ console.error(et);
194
+ }
195
+ });
196
+ },
197
+ async langdialogPrimary() {
198
+ let that = this;
199
+ let option = this.option;
200
+ let saveUrl = option.saveUrl;
201
+ if (!saveUrl) {
202
+ this.dialogPrimary3();
203
+ return false;
204
+ }
205
+
206
+ if (!(this.fileRaw)) {
207
+ this.$baseAlert(this.$t2('请上传附件', 'components.excelImport.warmMsg1'));
208
+ return false;
209
+ }
210
+ this.createImportTimer();
211
+ this.showImportDialog = false;
212
+ if (!option.onConfirm) {
213
+ this.showImportDialog2 = true;
214
+ }
215
+ this.$nextTick(() => {
216
+ try {
217
+ this.readExcel(this.fileRaw, function (resultData) {
218
+ if (option.onConfirm) {
219
+ option.onConfirm(resultData.data, that.fileRaw);
220
+ } else {
221
+ that.syncDataForImport({
222
+ multi: false,
223
+ data: resultData,
224
+ saveUrl: saveUrl
225
+ });
226
+ }
227
+ });
228
+ } catch (et) {
229
+ that.clearImportTimer();
230
+ console.error(et);
231
+ }
232
+ });
233
+ },
234
+ dialogClose2() {
235
+ this.clearImportTimer();
236
+ this.showImportDialog2 = false;
237
+ this.showContent = false;
238
+ this.option.callback && this.option.callback();
239
+ },
240
+ dialogPrimary2() {
241
+ this.clearImportTimer();
242
+ this.showImportDialog2 = false;
243
+ this.showContent = false;
244
+ this.option.callback && this.option.callback(this.resultData);
245
+ },
246
+ async readExcel(file, callback) {
247
+ let that = this;
248
+ let option = this.option;
249
+
250
+ const fileReader = new FileReader();
251
+ fileReader.onload = async (ev) => {
252
+ var resultData;
253
+ try {
254
+ /*const arrayBuffer = ev.target.result;
255
+ const decoder = new TextDecoder('gbk'); // 指定为 GBK 编码
256
+ const fileContent = decoder.decode(arrayBuffer);*/
257
+
258
+ let fileContent = ev.target.result
259
+ const data = JSON.parse(fileContent);
260
+
261
+ var titles = Object.keys(data[0]);
262
+ var fields = titles;
263
+ var columns = [];
264
+ var cols = fields.map(item => {
265
+ return {
266
+ field: item,
267
+ title: item,
268
+ width: 100,
269
+ }
270
+ });
271
+ var oriCols = JSON.parse(JSON.stringify(cols));//列信息
272
+ this.oriCols = oriCols;
273
+
274
+ resultData = {
275
+ data: data,
276
+ titles: titles,
277
+ fields: fields,
278
+ oriCols: oriCols
279
+ };
280
+ this.resultData = resultData;
281
+ callback(resultData);
282
+ } catch (et) {
283
+ that.showContent = false;
284
+ that.clearImportTimer();
285
+ console.error(et)
286
+ }
287
+ };
288
+ // fileReader.readAsBinaryString(file);
289
+ fileReader.readAsText(file, 'UTF-8');
290
+
291
+
292
+ },
293
+ syncDataForImport(opts) {
294
+ let that = this;
295
+ var multi = this.option.multi;
296
+ var resultData = opts.data;
297
+ var datas = resultData.data;
298
+ var titles = resultData.titles;
299
+ var fields = resultData.fields;
300
+ let uniqueFields = resultData.uniqueFields || [];
301
+ var saveUrl = opts.saveUrl;
302
+ var size = datas.length;
303
+ var index = 0;
304
+ var successNum = 0;
305
+ var failNum = 0;
306
+ var dialogObj = this.$refs.importDialog.$el;
307
+ var successNumObj = dialogObj.querySelector(".successNum");
308
+ var failNumObj = dialogObj.querySelector(".failNum");
309
+ var percentageObj = dialogObj.querySelector(".percentage");
310
+ var doneNumObj = dialogObj.querySelector(".doneNum");
311
+ dialogObj.querySelector(".dataSize").innerText = size;
312
+
313
+ that.successRows = [];
314
+ that.failRows = [];
315
+
316
+ var multiSize = opts.multiSize || 2;
317
+
318
+ let groupIndex = 0;
319
+ let groupDatas = [];
320
+
321
+ var compareV = function (property) {
322
+ return function (a, b) {
323
+ var value1 = a[property];
324
+ var value2 = b[property];
325
+ return value1 - value2;
326
+ }
327
+ }
328
+
329
+ var prevHandleData = function (percentageStr, excNum) {
330
+
331
+ successNumObj.innerText = successNum;
332
+ failNumObj.innerText = failNum;
333
+ doneNumObj.innerText = successNum + failNum;
334
+ that.percentageNum = percentageStr;
335
+ let isEnd = false;
336
+ if (uniqueFields.length) {
337
+ isEnd = groupIndex + 1 >= groupDatas.length;
338
+ } else {
339
+ isEnd = index + excNum >= size;
340
+ }
341
+ if (!isEnd) {
342
+ index = index + excNum;
343
+ groupIndex = groupIndex + 1;
344
+ setTimeout(function () {
345
+ handleData();
346
+ }, 1);
347
+ } else {
348
+ setTimeout(function () {
349
+ that.clearImportTimer();
350
+ }, 300);
351
+ }
352
+ };
353
+
354
+ let getDefaultValue = (row) => {
355
+ let value = null;
356
+ let defaultValue = this.option.defaultValue;
357
+ if (defaultValue) {
358
+ if (typeof defaultValue == "function") {
359
+ value = defaultValue(row) || {};
360
+ } else {
361
+ value = defaultValue || {};
362
+ }
363
+ }
364
+ return value;
365
+ }
366
+
367
+ let handleData = () => {
368
+ if (!that.isEnd && index < size) {
369
+ let a = 1
370
+ var param;
371
+ var excNum;
372
+
373
+ var data = datas[index];
374
+ data.impSeq = index;
375
+ data.impNumber = index + 1;
376
+ excNum = 1;
377
+ datas[index] = data;
378
+
379
+ param = data;
380
+ let defaultValue = getDefaultValue(data);
381
+ if (defaultValue) {
382
+ Object.assign(param, defaultValue);
383
+ }
384
+
385
+ var percentageStr = parseInt((index + excNum) * 100 / size);
386
+ if (param == null || param.length == 0) {
387
+ if (that.showContent) {
388
+ prevHandleData(percentageStr, excNum);
389
+ }
390
+ return;
391
+ }
392
+
393
+ that.$http({
394
+ url: saveUrl,
395
+ method: "post",
396
+ data: param,
397
+ resultType: "special",
398
+ modal: false,
399
+ callback: (resultMsg) => {
400
+ var data = datas[index];
401
+ data._resultType = resultMsg.type;
402
+ data._resultContent = (resultMsg.type == "success") ? this.$t2('导入成功', 'components.excelImport.importSucess') : resultMsg.content;
403
+
404
+ if (resultMsg.type == "success") {
405
+ successNum++;
406
+ that.successRows.push(data);
407
+ } else {
408
+ failNum++;
409
+ that.failRows.push(data);
410
+ }
411
+ if (that.showContent) {
412
+ prevHandleData(percentageStr, excNum);
413
+ }
414
+ }
415
+ }).catch(function (et) {
416
+ that.isEnd = true;
417
+ that.clearImportTimer();
418
+ console.error(et);
419
+ });
420
+ }
421
+ }
422
+ handleData();
423
+ },
424
+ handleRes(val) {
425
+ /* var content = val;
426
+ var text = content;
427
+ if (content && content.indexOf("Exception") >= 0) {
428
+ var index0 = content.lastIndexOf("*]");
429
+ if (index0 >= 0) {
430
+ text = content.substr(index0);
431
+ if (text) {
432
+ var index1 = text.indexOf("Exception:");
433
+ if (index1 >= 0) {
434
+ text = text.substr(index1 + 10);
435
+ }
436
+ }
437
+ }
438
+ } */
439
+ let text = getErrorMsg(val)
440
+ return text;
441
+ },
442
+ exportToExcel() {
443
+ let str = this.resultType === 1 ? this.$t2('成功', 'components.excelImport.success') : this.$t2('失败', 'components.excelImport.fail');
444
+ let fileName = this.$t2('导入结果导出', 'components.excelImport.exportFileName') + '(' + str + ')';
445
+ let $grid = this.$refs.resGrid;
446
+ let columns = $grid.getColumns();
447
+ if (columns && columns.length) {
448
+ let fields = columns.filter((item, index) => {
449
+ return index > 0 && item.property;
450
+ }).map((item, index) => {
451
+ return item.property;
452
+ });
453
+ this.$refs.resGrid.exportData({
454
+ filename: fileName,
455
+ mode: 'all',
456
+ type: 'csv',
457
+ columns: fields
458
+ });
459
+ }
460
+ },
461
+ createImportTimer() {
462
+ this.excTime = 0;
463
+ let beginTime = new Date().getTime();
464
+ this.importTimer = setInterval(() => {
465
+ let nowTime = new Date().getTime();
466
+ let diffTime = (nowTime - beginTime) / 1000;
467
+ this.$set(this, 'excTime', this.$baseLodash.round(diffTime, 2));
468
+ }, 100);
469
+ },
470
+ clearImportTimer() {
471
+ clearInterval(this.importTimer);
472
+ this.importTimer = null;
473
+ this.loadingObj && this.loadingObj.close();
474
+ this.loadingObj = null;
475
+ },
476
+ async dialogPrimary3() {
477
+ if (!(this.fileRaw)) {
478
+ this.$baseAlert(this.$t2('请上传附件', 'components.excelImport.warmMsg1'));
479
+ return false;
480
+ }
481
+ let that = this;
482
+ let option = this.option;
483
+ this.loadingObj = this.$baseLoading({
484
+ target: document.body,
485
+ background: 'unset'
486
+ });
487
+ this.readExcel(this.fileRaw, function (resultData) {
488
+ try {
489
+ if (option.callback && option.callback(resultData) !== false) {
490
+ that.showImportDialog = false;
491
+ }
492
+ } catch (et) {
493
+ console.error(et);
494
+ }
495
+ setTimeout(function () {
496
+ that.loadingObj && that.loadingObj.close();
497
+ }, 200);
498
+ });
499
+ }
500
+ }
501
+ };
502
+ export const mixins = tmixins;