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,348 +1,350 @@
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
- abc: "A"
45
- }
46
- },
47
- created() {
48
-
49
- },
50
- beforeDestroy() {
51
- // this.clearImportTimer()
52
- },
53
- methods: {
54
- initResGird() {
55
- var that = this;
56
- let tableRef = 'resGrid';
57
- let resultColumns = this.param.resultColumns || [];
58
- let columns = [
59
- {
60
- type: 'checkbox',
61
- fixed: 'left',
62
- width: 48,
63
- resizable: false,
64
- headerClassName: 'vxe-hcs',
65
- className: 'vxe-hcs'
66
- },
67
- {
68
- field: '_resultContent',
69
- title: this.$t1('结果'),
70
- width: 250,
71
- fixed: 'left',
72
- slots: {
73
- default: ({
74
- row,
75
- $rowIndex,
76
- $table
77
- }) => {
78
- return that.handleRes(row._impReturnMsg);
79
- }
80
- }
81
- },
82
- ...resultColumns
83
- ];
84
- let cCols = this.oriCols.map((oriCol, index) => {
85
- let col = {
86
- field: oriCol.field,
87
- title: oriCol.title,
88
- width: 150
89
- };
90
- if (index == 0) {
91
- col.fixed = 'left';
92
- }
93
- return col;
94
- });
95
- columns = columns.concat(cCols);
96
-
97
- let tableOption = {
98
- vue: this,
99
- tableRef: tableRef,
100
- tableNameRequired: false,
101
- columns: columns,
102
- config: {
103
- toolbarConfig: {
104
- custom: false
105
- }
106
- }
107
- };
108
-
109
- this.$vxeTableUtil.initVxeTable(tableOption).then(opts => {
110
- this.resOption = opts;
111
- this.$nextTick(() => {
112
- let rows = this.resultType == 1 ? this.successRows : this.failRows;
113
- let tDatas = rows.map((item, index) => {
114
- return item;
115
- });
116
- this.$refs.resGrid.loadData(tDatas);
117
- });
118
- });
119
- },
120
- exc() {
121
- this.option = this.param;
122
- this.showContent = true;
123
- this.showImportDialog = true;
124
- this.showImportDialog2 = false;
125
- },
126
- showSuccessResult() {
127
- this.showImportResult = true;
128
- this.resultType = 1;
129
- setTimeout(() => {
130
- this.$nextTick(() => {
131
- this.initResGird();
132
- });
133
- }, 0)
134
- },
135
- showErrorResult() {
136
- this.showImportResult = true;
137
- this.resultType = 0;
138
- setTimeout(() => {
139
- this.$nextTick(() => {
140
- this.initResGird();
141
- });
142
- }, 0)
143
- },
144
- fileChange(file) {
145
- if (file) {
146
- this.fileRaw = file.raw;
147
- } else {
148
- this.fileRaw = false;
149
- }
150
- },
151
- dialogClose1() {
152
- this.$emit("update:visiable", false);
153
- this.showContent = false;
154
- },
155
- openImportDialog() {
156
- this.showImportDialog = true;
157
- },
158
- confirmExport() {
159
-
160
- },
161
- async dialogPrimary1() {
162
- let that = this;
163
- let option = this.option;
164
- let saveUrl = option.saveUrl;
165
- if (!saveUrl) {
166
- return false;
167
- }
168
-
169
- if (!(this.fileRaw)) {
170
- this.$baseAlert(this.$t2('请上传附件', 'components.excelImport.warmMsg1'));
171
- return false;
172
- }
173
- this.showImportDialog = false;
174
- if (!option.onConfirm) {
175
- this.showImportDialog2 = true;
176
- }
177
- this.$nextTick(() => {
178
- this.readExcel(this.fileRaw, function (resultData) {
179
- if (option.onConfirm) {
180
- option.onConfirm(resultData, that.fileRaw);
181
- } else {
182
- that.syncDataForImport({
183
- multi: false,
184
- data: resultData,
185
- saveUrl: saveUrl
186
- });
187
- }
188
- });
189
-
190
- });
191
- },
192
- dialogClose2() {
193
- this.clearImportTimer();
194
- this.showImportDialog2 = false;
195
- this.showContent = false;
196
- this.option.callback && this.option.callback();
197
- },
198
- dialogPrimary2() {
199
- this.clearImportTimer();
200
- this.showImportDialog2 = false;
201
- this.showContent = false;
202
- this.option.callback && this.option.callback(this.resultData);
203
- },
204
- async readExcel(file, callback) {
205
- let that = this;
206
- let option = this.option;
207
-
208
- const fileReader = new FileReader();
209
- fileReader.onload = async (ev) => {
210
- var resultData;
211
- try {
212
- let fileContent = ev.target.result
213
- callback(fileContent);
214
- } catch (et) {
215
- that.showContent = false;
216
- console.error(et)
217
- }
218
- };
219
- fileReader.readAsText(file, 'UTF-8');
220
- },
221
- syncDataForImport(opts) {
222
- let showResult = this.param.showResult;
223
- if (!showResult) {
224
- this.dialogClose1();
225
- }
226
-
227
- let option = this.option
228
- this.$http({
229
- url: opts.saveUrl,
230
- method: `post`,
231
- data: {
232
- data: opts.data
233
- },
234
- isLoading: true,
235
- success: res => {
236
- var successNum = 0;
237
- var failNum = 0;
238
- var multiRows = res.objx;
239
- this.dataSize = multiRows.length;
240
- for (let i = 0; i < multiRows.length; i++) {
241
- let row = multiRows[i];
242
- if (row.impReturnType == "success") {
243
- row._impReturnMsg = this.$t1('导入成功')
244
- successNum++;
245
- this.successRows.push(row);
246
- } else {
247
- row._impReturnMsg = row.impReturnMsg
248
- failNum++;
249
- this.failRows.push(row);
250
- }
251
- }
252
- this.totalSuccessNum = successNum;
253
- this.totalErrorNum = failNum;
254
-
255
- if (!showResult) {
256
- this.$message({
257
- message: res.content,
258
- type: 'success',
259
- duration: 500,
260
- onClose: t => {
261
- option.callback && option.callback(res)
262
- }
263
- });
264
- } else {
265
- this.showImportDialog = false;
266
- this.showImportDialog2 = true;
267
- }
268
-
269
- }
270
- });
271
- },
272
- handleRes(val) {
273
- /* var content = val;
274
- var text = content;
275
- if (content && content.indexOf("Exception") >= 0) {
276
- var index0 = content.lastIndexOf("*]");
277
- if (index0 >= 0) {
278
- text = content.substr(index0);
279
- if (text) {
280
- var index1 = text.indexOf("Exception:");
281
- if (index1 >= 0) {
282
- text = text.substr(index1 + 10);
283
- }
284
- }
285
- }
286
- } */
287
- let text = getErrorMsg(val)
288
- return text;
289
- },
290
- exportToExcel() {
291
- let str = this.resultType === 1 ? this.$t2('成功', 'components.excelImport.success') : this.$t2('失败', 'components.excelImport.fail');
292
- let fileName = this.$t2('导入结果导出', 'components.excelImport.exportFileName') + '(' + str + ')';
293
- let $grid = this.$refs.resGrid;
294
- let columns = $grid.getColumns();
295
- if (columns && columns.length) {
296
- let fields = columns.filter((item, index) => {
297
- return index > 0 && item.property;
298
- }).map((item, index) => {
299
- return item.property;
300
- });
301
- this.$refs.resGrid.exportData({
302
- filename: fileName,
303
- mode: 'all',
304
- type: 'csv',
305
- columns: fields
306
- });
307
- }
308
- },
309
- createImportTimer() {
310
- this.excTime = 0;
311
- let beginTime = new Date().getTime();
312
- importTimer = setInterval(() => {
313
- let nowTime = new Date().getTime();
314
- let diffTime = (nowTime - beginTime) / 1000;
315
- this.$set(this, 'excTime', this.$baseLodash.round(diffTime, 2));
316
- }, 100);
317
- },
318
- clearImportTimer() {
319
- clearInterval(importTimer);
320
- loadingObj && loadingObj.close();
321
- },
322
- async dialogPrimary3() {
323
- if (!(this.fileRaw)) {
324
- this.$baseAlert(this.$t2('请上传附件', 'components.excelImport.warmMsg1'));
325
- return false;
326
- }
327
- let that = this;
328
- let option = this.option;
329
- loadingObj = this.$baseLoading({
330
- target: document.body,
331
- background: 'unset'
332
- });
333
- this.readExcel(this.fileRaw, function (resultData) {
334
- try {
335
- if (option.callback && option.callback(resultData) !== false) {
336
- that.showImportDialog = false;
337
- }
338
- } catch (et) {
339
- console.error(et);
340
- }
341
- setTimeout(function () {
342
- loadingObj && loadingObj.close();
343
- }, 200);
344
- });
345
- }
346
- }
347
- };
348
- 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
+ abc: "A"
45
+ }
46
+ },
47
+ created() {
48
+
49
+ },
50
+ beforeDestroy() {
51
+ // this.clearImportTimer()
52
+ },
53
+ methods: {
54
+ initResGird() {
55
+ var that = this;
56
+ let tableRef = 'resGrid';
57
+ let resultColumns = this.param.resultColumns || [];
58
+ let columns = [
59
+ {
60
+ type: 'checkbox',
61
+ fixed: 'left',
62
+ width: 48,
63
+ resizable: false,
64
+ headerClassName: 'vxe-hcs',
65
+ className: 'vxe-hcs'
66
+ },
67
+ {
68
+ field: '_resultContent',
69
+ title: this.$t1('结果'),
70
+ width: 250,
71
+ fixed: 'left',
72
+ slots: {
73
+ default: ({
74
+ row,
75
+ $rowIndex,
76
+ $table
77
+ }) => {
78
+ return that.handleRes(row._impReturnMsg);
79
+ }
80
+ }
81
+ },
82
+ ...resultColumns
83
+ ];
84
+ let cCols = this.oriCols.map((oriCol, index) => {
85
+ let col = {
86
+ field: oriCol.field,
87
+ title: oriCol.title,
88
+ width: 150
89
+ };
90
+ if (index == 0) {
91
+ col.fixed = 'left';
92
+ }
93
+ return col;
94
+ });
95
+ columns = columns.concat(cCols);
96
+
97
+ let tableOption = {
98
+ vue: this,
99
+ tableRef: tableRef,
100
+ tableNameRequired: false,
101
+ columns: columns,
102
+ config: {
103
+ toolbarConfig: {
104
+ custom: false
105
+ }
106
+ }
107
+ };
108
+
109
+ this.$vxeTableUtil.initVxeTable(tableOption).then(opts => {
110
+ this.resOption = opts;
111
+ this.$nextTick(() => {
112
+ let rows = this.resultType == 1 ? this.successRows : this.failRows;
113
+ let tDatas = rows.map((item, index) => {
114
+ return item;
115
+ });
116
+ this.$refs.resGrid.loadData(tDatas);
117
+ });
118
+ });
119
+ },
120
+ exc() {
121
+ this.option = this.param;
122
+ this.showContent = true;
123
+ this.showImportDialog = true;
124
+ this.showImportDialog2 = false;
125
+ },
126
+ showSuccessResult() {
127
+ this.showImportResult = true;
128
+ this.resultType = 1;
129
+ setTimeout(() => {
130
+ this.$nextTick(() => {
131
+ this.initResGird();
132
+ });
133
+ }, 0)
134
+ },
135
+ showErrorResult() {
136
+ this.showImportResult = true;
137
+ this.resultType = 0;
138
+ setTimeout(() => {
139
+ this.$nextTick(() => {
140
+ this.initResGird();
141
+ });
142
+ }, 0)
143
+ },
144
+ fileChange(file) {
145
+ if (file) {
146
+ this.fileRaw = file.raw;
147
+ } else {
148
+ this.fileRaw = false;
149
+ }
150
+ },
151
+ dialogClose1() {
152
+ this.$emit("update:visiable", false);
153
+ this.showContent = false;
154
+ },
155
+ openImportDialog() {
156
+ this.showImportDialog = true;
157
+ },
158
+ confirmExport() {
159
+
160
+ },
161
+ async dialogPrimary1() {
162
+ let that = this;
163
+ let option = this.option;
164
+ let saveUrl = option.saveUrl;
165
+ if (!saveUrl) {
166
+ return false;
167
+ }
168
+
169
+ if (!(this.fileRaw)) {
170
+ this.$baseAlert(this.$t2('请上传附件', 'components.excelImport.warmMsg1'));
171
+ return false;
172
+ }
173
+ this.showImportDialog = false;
174
+ if (!option.onConfirm) {
175
+ this.showImportDialog2 = true;
176
+ }
177
+ this.$nextTick(() => {
178
+ this.readExcel(this.fileRaw, function (resultData) {
179
+ if (option.onConfirm) {
180
+ option.onConfirm(resultData, that.fileRaw);
181
+ } else {
182
+ that.syncDataForImport({
183
+ multi: false,
184
+ data: resultData,
185
+ saveUrl: saveUrl
186
+ });
187
+ }
188
+ });
189
+
190
+ });
191
+ },
192
+ dialogClose2() {
193
+ this.clearImportTimer();
194
+ this.showImportDialog2 = false;
195
+ this.showContent = false;
196
+ this.option.callback && this.option.callback();
197
+ },
198
+ dialogPrimary2() {
199
+ this.clearImportTimer();
200
+ this.showImportDialog2 = false;
201
+ this.showContent = false;
202
+ this.option.callback && this.option.callback(this.resultData);
203
+ },
204
+ async readExcel(file, callback) {
205
+ let that = this;
206
+ let option = this.option;
207
+
208
+ const fileReader = new FileReader();
209
+ fileReader.onload = async (ev) => {
210
+ var resultData;
211
+ try {
212
+ let fileContent = ev.target.result
213
+ callback(fileContent);
214
+ } catch (et) {
215
+ that.showContent = false;
216
+ console.error(et)
217
+ }
218
+ };
219
+ fileReader.readAsText(file, 'UTF-8');
220
+ },
221
+ syncDataForImport(opts) {
222
+ let showResult = this.param.showResult;
223
+ if (!showResult) {
224
+ this.dialogClose1();
225
+ }
226
+
227
+ let option = this.option
228
+ this.$http({
229
+ url: opts.saveUrl,
230
+ method: `post`,
231
+ data: {
232
+ data: opts.data
233
+ },
234
+ isLoading: true,
235
+ success: res => {
236
+ var successNum = 0;
237
+ var failNum = 0;
238
+ var multiRows = res.objx;
239
+ this.dataSize = multiRows.length;
240
+ for (let i = 0; i < multiRows.length; i++) {
241
+ let row = multiRows[i];
242
+ if (row.impReturnType == "success") {
243
+ row._impReturnMsg = this.$t1('导入成功')
244
+ successNum++;
245
+ this.successRows.push(row);
246
+ } else {
247
+ row._impReturnMsg = row.impReturnMsg
248
+ failNum++;
249
+ this.failRows.push(row);
250
+ }
251
+ }
252
+ this.totalSuccessNum = successNum;
253
+ this.totalErrorNum = failNum;
254
+
255
+ if (!showResult) {
256
+ this.$message({
257
+ message: res.content,
258
+ type: 'success',
259
+ duration: 500,
260
+ onClose: t => {
261
+ option.callback && option.callback(res)
262
+ }
263
+ });
264
+ } else {
265
+ this.showImportDialog = false;
266
+ this.showImportDialog2 = true;
267
+ }
268
+
269
+ }
270
+ });
271
+ },
272
+ handleRes(val) {
273
+ /* var content = val;
274
+ var text = content;
275
+ if (content && content.indexOf("Exception") >= 0) {
276
+ var index0 = content.lastIndexOf("*]");
277
+ if (index0 >= 0) {
278
+ text = content.substr(index0);
279
+ if (text) {
280
+ var index1 = text.indexOf("Exception:");
281
+ if (index1 >= 0) {
282
+ text = text.substr(index1 + 10);
283
+ }
284
+ }
285
+ }
286
+ } */
287
+ let text = getErrorMsg(val)
288
+ return text;
289
+ },
290
+ exportToExcel() {
291
+ let str = this.resultType === 1 ? this.$t2('成功', 'components.excelImport.success') : this.$t2('失败', 'components.excelImport.fail');
292
+ let fileName = this.$t2('导入结果导出', 'components.excelImport.exportFileName') + '(' + str + ')';
293
+ let $grid = this.$refs.resGrid;
294
+ let columns = $grid.getColumns();
295
+ if (columns && columns.length) {
296
+ let fields = columns.filter((item, index) => {
297
+ return index > 0 && item.property;
298
+ }).map((item, index) => {
299
+ return item.property;
300
+ });
301
+ this.$refs.resGrid.exportData({
302
+ filename: fileName,
303
+ mode: 'all',
304
+ type: 'csv',
305
+ columns: fields
306
+ });
307
+ }
308
+ },
309
+ createImportTimer() {
310
+ this.excTime = 0;
311
+ let beginTime = new Date().getTime();
312
+ this.importTimer = setInterval(() => {
313
+ let nowTime = new Date().getTime();
314
+ let diffTime = (nowTime - beginTime) / 1000;
315
+ this.$set(this, 'excTime', this.$baseLodash.round(diffTime, 2));
316
+ }, 100);
317
+ },
318
+ clearImportTimer() {
319
+ clearInterval(this.importTimer);
320
+ this.importTimer = null;
321
+ this.loadingObj && this.loadingObj.close();
322
+ this.loadingObj = null;
323
+ },
324
+ async dialogPrimary3() {
325
+ if (!(this.fileRaw)) {
326
+ this.$baseAlert(this.$t2('请上传附件', 'components.excelImport.warmMsg1'));
327
+ return false;
328
+ }
329
+ let that = this;
330
+ let option = this.option;
331
+ this.loadingObj = this.$baseLoading({
332
+ target: document.body,
333
+ background: 'unset'
334
+ });
335
+ this.readExcel(this.fileRaw, function (resultData) {
336
+ try {
337
+ if (option.callback && option.callback(resultData) !== false) {
338
+ that.showImportDialog = false;
339
+ }
340
+ } catch (et) {
341
+ console.error(et);
342
+ }
343
+ setTimeout(function () {
344
+ that.loadingObj && that.loadingObj.close();
345
+ }, 200);
346
+ });
347
+ }
348
+ }
349
+ };
350
+ export const mixins = tmixins;