hy-dispatch-ui-v3 0.2.39 → 0.2.41

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 (29) hide show
  1. package/es/components/hyBatchUploadDialog/batchUploadDialog.vue.mjs +278 -0
  2. package/es/components/hyBatchUploadDialog/index.mjs +6 -0
  3. package/es/components/hyBatchUploadDialog/style/batchUploadDialog.scss +0 -0
  4. package/es/components/hyButton/style/button.scss +1 -1
  5. package/es/components/hyDialog/dialog.vue.mjs +10 -6
  6. package/es/components/hyTableActionButton/tableActionButton.vue.mjs +3 -4
  7. package/es/components/hyTableForm/batchTableForm.vue.mjs +93 -31
  8. package/es/components/hyTableForm/style/batchTableForm.scss +62 -0
  9. package/es/components/hyTableForm/tableForm.vue.mjs +3 -1
  10. package/es/components/index.mjs +1 -0
  11. package/es/index.mjs +2 -0
  12. package/es/utils/index.mjs +1 -0
  13. package/es/utils/permission.mjs +498 -0
  14. package/es/version.mjs +1 -1
  15. package/lib/components/hyBatchUploadDialog/batchUploadDialog.vue.js +282 -0
  16. package/lib/components/hyBatchUploadDialog/index.js +11 -0
  17. package/lib/components/hyBatchUploadDialog/style/batchUploadDialog.scss +0 -0
  18. package/lib/components/hyButton/style/button.scss +1 -1
  19. package/lib/components/hyDialog/dialog.vue.js +9 -5
  20. package/lib/components/hyTableActionButton/tableActionButton.vue.js +1 -2
  21. package/lib/components/hyTableForm/batchTableForm.vue.js +91 -29
  22. package/lib/components/hyTableForm/style/batchTableForm.scss +62 -0
  23. package/lib/components/hyTableForm/tableForm.vue.js +3 -1
  24. package/lib/components/index.js +38 -36
  25. package/lib/index.js +40 -36
  26. package/lib/utils/index.js +2 -0
  27. package/lib/utils/permission.js +500 -0
  28. package/lib/version.js +1 -1
  29. package/package.json +1 -1
@@ -0,0 +1,282 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var vue = require('vue');
6
+ var elementPlus = require('element-plus');
7
+ var iconsVue = require('@element-plus/icons-vue');
8
+ var index = require('../hyDialog/index.js');
9
+ var index$1 = require('../hyTableForm/index.js');
10
+ var index$2 = require('../hyTooltip/index.js');
11
+ var index$3 = require('../hyButton/index.js');
12
+
13
+ import "./style/batchUploadDialog.scss";
14
+
15
+ const __default__ = vue.defineComponent({
16
+ name: "HyBatchUploadDialog"
17
+ });
18
+ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
19
+ props: /* @__PURE__ */ vue.mergeModels({
20
+ // 弹窗
21
+ title: {
22
+ type: String
23
+ },
24
+ width: {
25
+ type: String,
26
+ default: "920"
27
+ },
28
+ dialogType: {
29
+ type: String,
30
+ default: "right"
31
+ },
32
+ // 是否可缩小化
33
+ ifShrink: { type: Boolean, default: false },
34
+ // 是否拖拽
35
+ ifDraggable: { type: Boolean, default: true },
36
+ // 表格配置项
37
+ tableColumns: {
38
+ // 表格的列
39
+ type: Array,
40
+ required: true,
41
+ default: () => []
42
+ },
43
+ formColumns: {
44
+ type: Array,
45
+ default: () => []
46
+ },
47
+ rules: {
48
+ type: Object,
49
+ default: () => ({})
50
+ },
51
+ emptyText: {
52
+ // 空数据时显示的文本内容
53
+ type: String
54
+ },
55
+ fontSize: {
56
+ // 字体大小
57
+ type: Number,
58
+ default: 14
59
+ },
60
+ rowClickExpand: {
61
+ // 点击行展开
62
+ type: Boolean,
63
+ required: false,
64
+ default: true
65
+ },
66
+ // 表单配置项
67
+ columnNum: {
68
+ type: Number,
69
+ default: 2
70
+ },
71
+ size: {
72
+ type: String,
73
+ default: "default"
74
+ // 'large' | 'default' | 'small'
75
+ },
76
+ // 其他配置项
77
+ beforeDataHandle: {
78
+ type: Function
79
+ },
80
+ submitHandler: {
81
+ type: Function
82
+ }
83
+ }, {
84
+ "modelValue": { type: Boolean, default: false },
85
+ "modelModifiers": {}
86
+ }),
87
+ emits: /* @__PURE__ */ vue.mergeModels([
88
+ "uploading",
89
+ "uploaded",
90
+ "reset",
91
+ "validate",
92
+ "submitting",
93
+ "submit"
94
+ ], ["update:modelValue"]),
95
+ setup(__props, { expose: __expose, emit: __emit }) {
96
+ const emits = __emit;
97
+ const batchTableFormRef = vue.useTemplateRef("batchTableFormRef");
98
+ const visible = vue.useModel(__props, "modelValue");
99
+ const showSubmit = vue.ref(false);
100
+ const isSubmitting = vue.ref(false);
101
+ const failedCount = vue.ref(0);
102
+ const failedStatus = vue.ref(null);
103
+ async function show() {
104
+ visible.value = true;
105
+ showSubmit.value = false;
106
+ failedCount.value = 0;
107
+ failedStatus.value = null;
108
+ }
109
+ function onTableUploadingHandler(...args) {
110
+ emits("uploading", ...args);
111
+ }
112
+ function onTableUploadedHandler(...args) {
113
+ showSubmit.value = true;
114
+ emits("uploaded", ...args);
115
+ }
116
+ function onTableResetHandler(...args) {
117
+ failedCount.value = 0;
118
+ failedStatus.value = null;
119
+ showSubmit.value = false;
120
+ emits("reset", ...args);
121
+ }
122
+ function onTableValidateHandler(params) {
123
+ const { row, prop, isValid, message, total, success, failed } = params;
124
+ failedCount.value = failed;
125
+ failedStatus.value = !failed ? null : failedStatus.value || "validate";
126
+ emits("validate", params);
127
+ }
128
+ function onTableSubmittingHandler(...args) {
129
+ isSubmitting.value = true;
130
+ emits("submitting", ...args);
131
+ }
132
+ function onTableSubmitHandler(params) {
133
+ const { total, success, failed, result } = params;
134
+ if (result) {
135
+ visible.value = false;
136
+ failedCount.value = null;
137
+ failedStatus.value = null;
138
+ } else {
139
+ failedCount.value = failed;
140
+ failedStatus.value = "submit";
141
+ }
142
+ isSubmitting.value = false;
143
+ emits("submit", params);
144
+ }
145
+ async function onSubmitHandler() {
146
+ await batchTableFormRef.value.validate();
147
+ batchTableFormRef.value.submitDataSource();
148
+ }
149
+ __expose({
150
+ show,
151
+ getTableDataSource: () => {
152
+ return batchTableFormRef.value.getTableDataSource();
153
+ },
154
+ validate: async () => {
155
+ return await batchTableFormRef.value.validate();
156
+ },
157
+ submitDataSource: () => {
158
+ return batchTableFormRef.value.submitDataSource();
159
+ }
160
+ });
161
+ return (_ctx, _cache) => {
162
+ return vue.openBlock(), vue.createBlock(vue.unref(index.HyDialog), vue.mergeProps({
163
+ modelValue: visible.value,
164
+ "onUpdate:modelValue": ($event) => visible.value = $event,
165
+ loading: isSubmitting.value,
166
+ "onUpdate:loading": ($event) => isSubmitting.value = $event,
167
+ title: __props.title,
168
+ width: __props.width,
169
+ "dialog-type": __props.dialogType,
170
+ "show-operate": true,
171
+ "show-submit": false,
172
+ "show-cancel": !isSubmitting.value,
173
+ ifShrink: __props.ifShrink,
174
+ ifDraggable: __props.ifDraggable
175
+ }, _ctx.$attrs), vue.createSlots({
176
+ "operate-left-box": vue.withCtx(() => [
177
+ failedCount.value ? (vue.openBlock(), vue.createElementBlock("div", {
178
+ key: 0,
179
+ class: "flex items-center gap-1.5 text-xs text-warning"
180
+ }, [
181
+ vue.createVNode(vue.unref(elementPlus.ElIcon), null, {
182
+ default: vue.withCtx(() => [
183
+ vue.createVNode(vue.unref(iconsVue.Warning))
184
+ ]),
185
+ _: 1
186
+ /* STABLE */
187
+ }),
188
+ failedStatus.value === "validate" ? (vue.openBlock(), vue.createElementBlock(
189
+ "span",
190
+ { key: 0 },
191
+ "\u5F53\u524D " + vue.toDisplayString(failedCount.value) + " \u6761\u5F02\u5E38\u6570\u636E\uFF0C\u70B9\u51FB\u5BFC\u5165\u5C06\u4EC5\u5BFC\u5165\u5C31\u7EEA\u6570\u636E\uFF0C\u5F02\u5E38\u6570\u636E\u5C06\u88AB\u5FFD\u7565\u3002",
192
+ 1
193
+ /* TEXT */
194
+ )) : (vue.openBlock(), vue.createElementBlock(
195
+ "span",
196
+ { key: 1 },
197
+ "\u5F53\u524D " + vue.toDisplayString(failedCount.value) + " \u6761\u5F02\u5E38\u6570\u636E\uFF0C\u8BF7\u4FEE\u6B63\u5185\u5BB9",
198
+ 1
199
+ /* TEXT */
200
+ ))
201
+ ])) : vue.createCommentVNode("v-if", true)
202
+ ]),
203
+ "operate-right-box": vue.withCtx(() => [
204
+ showSubmit.value ? (vue.openBlock(), vue.createBlock(vue.unref(index$2.HyTooltip), {
205
+ key: 0,
206
+ disabled: !isSubmitting.value,
207
+ content: "\u6570\u636E\u6B63\u5728\u5BFC\u5165\u4E2D\uFF0C\u8BF7\u7A0D\u7B49"
208
+ }, {
209
+ default: vue.withCtx(() => [
210
+ vue.createVNode(vue.unref(index$3.HyButton), {
211
+ type: "primary",
212
+ loading: isSubmitting.value,
213
+ class: "!min-w-[120px]",
214
+ onClick: onSubmitHandler
215
+ }, {
216
+ default: vue.withCtx(() => [
217
+ vue.createTextVNode(
218
+ vue.toDisplayString(isSubmitting.value ? "\u6B63\u5728\u5BFC\u5165" : "\u786E\u8BA4\u5BFC\u5165"),
219
+ 1
220
+ /* TEXT */
221
+ )
222
+ ]),
223
+ _: 1
224
+ /* STABLE */
225
+ }, 8, ["loading"])
226
+ ]),
227
+ _: 1
228
+ /* STABLE */
229
+ }, 8, ["disabled"])) : vue.createCommentVNode("v-if", true)
230
+ ]),
231
+ default: vue.withCtx(() => [
232
+ visible.value ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.HyBatchTableForm), {
233
+ key: 0,
234
+ ref_key: "batchTableFormRef",
235
+ ref: batchTableFormRef,
236
+ tableColumns: __props.tableColumns,
237
+ formColumns: __props.formColumns,
238
+ rules: __props.rules,
239
+ emptyText: __props.emptyText,
240
+ fontSize: __props.fontSize,
241
+ rowClickExpand: __props.rowClickExpand,
242
+ columnNum: __props.columnNum,
243
+ size: __props.size,
244
+ beforeDataHandle: __props.beforeDataHandle,
245
+ "submit-handler": __props.submitHandler,
246
+ onUploading: onTableUploadingHandler,
247
+ onUploaded: onTableUploadedHandler,
248
+ onReset: onTableResetHandler,
249
+ onValidate: onTableValidateHandler,
250
+ onSubmitting: onTableSubmittingHandler,
251
+ onSubmit: onTableSubmitHandler
252
+ }, vue.createSlots({
253
+ _: 2
254
+ /* DYNAMIC */
255
+ }, [
256
+ vue.renderList(_ctx.$slots, (_, slotName) => {
257
+ return {
258
+ name: slotName,
259
+ fn: vue.withCtx((scope) => [
260
+ vue.renderSlot(_ctx.$slots, slotName, vue.normalizeProps(vue.guardReactiveProps(scope)))
261
+ ])
262
+ };
263
+ })
264
+ ]), 1032, ["tableColumns", "formColumns", "rules", "emptyText", "fontSize", "rowClickExpand", "columnNum", "size", "beforeDataHandle", "submit-handler"])) : vue.createCommentVNode("v-if", true)
265
+ ]),
266
+ _: 2
267
+ /* DYNAMIC */
268
+ }, [
269
+ vue.renderList(_ctx.$slots, (_, slotName) => {
270
+ return {
271
+ name: slotName,
272
+ fn: vue.withCtx((scope) => [
273
+ vue.renderSlot(_ctx.$slots, slotName, vue.normalizeProps(vue.guardReactiveProps(scope)))
274
+ ])
275
+ };
276
+ })
277
+ ]), 1040, ["modelValue", "onUpdate:modelValue", "loading", "onUpdate:loading", "title", "width", "dialog-type", "show-cancel", "ifShrink", "ifDraggable"]);
278
+ };
279
+ }
280
+ });
281
+
282
+ exports.default = _sfc_main;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var batchUploadDialog = require('./batchUploadDialog.vue.js');
6
+ var handler = require('../../utils/handler.js');
7
+
8
+ const HyBatchUploadDialog = handler.withInstall(batchUploadDialog.default);
9
+
10
+ exports.HyBatchUploadDialog = HyBatchUploadDialog;
11
+ exports.default = HyBatchUploadDialog;
@@ -1,6 +1,5 @@
1
1
  .hy-button {
2
2
  height: 32px;
3
- border: 0;
4
3
  outline: none;
5
4
  appearance: none;
6
5
  -webkit-appearance: none;
@@ -10,6 +9,7 @@
10
9
  white-space: nowrap;
11
10
  font-size: 14px;
12
11
  padding: 2px;
12
+ border: 1px solid transparent;
13
13
  box-sizing: border-box;
14
14
 
15
15
  &:disabled,
@@ -67,15 +67,17 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
67
67
  onSubmit: Function
68
68
  }, {
69
69
  "modelValue": { type: Boolean, default: false },
70
- "modelModifiers": {}
70
+ "modelModifiers": {},
71
+ "loading": { type: Boolean, default: false },
72
+ "loadingModifiers": {}
71
73
  }),
72
- emits: /* @__PURE__ */ vue.mergeModels(["onMinimized", "onDialogMousedown"], ["update:modelValue"]),
74
+ emits: /* @__PURE__ */ vue.mergeModels(["onMinimized", "onDialogMousedown"], ["update:modelValue", "update:loading"]),
73
75
  setup(__props, { expose: __expose, emit: __emit }) {
74
76
  const props = __props;
75
77
  const emits = __emit;
76
78
  const { t } = useLocale.useLocale();
77
79
  const visible = vue.useModel(__props, "modelValue");
78
- const loading = vue.ref(false);
80
+ const loading = vue.useModel(__props, "loading");
79
81
  const dialogTypeRight = vue.computed(() => {
80
82
  return props.dialogType === "right";
81
83
  });
@@ -238,6 +240,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
238
240
  ]),
239
241
  default: vue.withCtx(() => [
240
242
  vue.createElementVNode("div", { class: "h-full flex flex-col text-main" }, [
243
+ vue.renderSlot(_ctx.$slots, "before-content"),
241
244
  vue.renderSlot(_ctx.$slots, "content", {}, () => [
242
245
  vue.createElementVNode(
243
246
  "div",
@@ -253,11 +256,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
253
256
  /* CLASS */
254
257
  )
255
258
  ]),
259
+ vue.renderSlot(_ctx.$slots, "after-content"),
256
260
  __props.showOperate ? (vue.openBlock(), vue.createElementBlock("div", {
257
261
  key: 0,
258
262
  class: "flex items-center flex-row-reverse justify-between p-5 pr-[26px] mt-auto box-border"
259
263
  }, [
260
- vue.renderSlot(_ctx.$slots, "operate-left-box"),
261
264
  vue.createElementVNode("div", { class: "flex items-center" }, [
262
265
  vue.renderSlot(_ctx.$slots, "operate", {}, () => [
263
266
  __props.showCancel ? (vue.openBlock(), vue.createBlock(vue.unref(index.HyButton), {
@@ -298,7 +301,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
298
301
  }, 8, ["type", "disabled"])) : vue.createCommentVNode("v-if", true)
299
302
  ]),
300
303
  vue.renderSlot(_ctx.$slots, "operate-right-box")
301
- ])
304
+ ]),
305
+ vue.renderSlot(_ctx.$slots, "operate-left-box")
302
306
  ])) : vue.createCommentVNode("v-if", true)
303
307
  ])
304
308
  ]),
@@ -123,7 +123,6 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
123
123
  vue.watch(() => props.operateList, setSelectedData, { deep: true, immediate: true });
124
124
  __expose({});
125
125
  return (_ctx, _cache) => {
126
- const _component_ArrowDown = vue.resolveComponent("ArrowDown");
127
126
  return dataList.value.length ? (vue.openBlock(), vue.createElementBlock("div", {
128
127
  key: 0,
129
128
  class: "hy-table-action-button"
@@ -207,7 +206,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
207
206
  }])
208
207
  }, {
209
208
  default: vue.withCtx(() => [
210
- vue.createVNode(_component_ArrowDown)
209
+ vue.createVNode(vue.unref(iconsVue.ArrowDown))
211
210
  ]),
212
211
  _: 1
213
212
  /* STABLE */
@@ -4,10 +4,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vue = require('vue');
6
6
  var elementPlus = require('element-plus');
7
+ var iconsVue = require('@element-plus/icons-vue');
7
8
  var tableForm = require('./tableForm.vue.js');
8
9
  var index$2 = require('./js/index.js');
9
10
  var useApi = require('../../hooks/useApi.js');
10
11
  var useLocale = require('../../hooks/useLocale.js');
12
+ var is = require('../../utils/is.js');
11
13
  var index = require('../hyIcon/index.js');
12
14
  var index$1 = require('../hyButton/index.js');
13
15
  var index$3 = require('../hyConfirmDialog/index.js');
@@ -81,7 +83,13 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
81
83
  type: Function
82
84
  }
83
85
  },
84
- emits: ["submitting", "submit"],
86
+ emits: [
87
+ "uploading",
88
+ "uploaded",
89
+ "reset",
90
+ "submitting",
91
+ "submit"
92
+ ],
85
93
  setup(__props, { expose: __expose, emit: __emit }) {
86
94
  const props = __props;
87
95
  const emits = __emit;
@@ -108,10 +116,12 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
108
116
  description: "\u4EE5\u5F53\u524D\u6570\u636E\u4E3A\u51C6<br/>\u6267\u884C\u6279\u91CF\u5BFC\u5165\u6DFB\u52A0\u6570\u636E"
109
117
  }
110
118
  ];
119
+ const isUploading = vue.ref(false);
111
120
  const templateFileName = vue.ref("");
112
121
  const submitNumber = vue.ref(0);
113
122
  const submitting = vue.ref(false);
114
123
  const submitProgress = vue.ref(0);
124
+ const submitModel = vue.ref("default");
115
125
  function setData(data = []) {
116
126
  if (!tableRef.value) return;
117
127
  tableRef.value.setData(data);
@@ -137,16 +147,27 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
137
147
  if (type.indexOf("application") !== -1) {
138
148
  const files = { 0: file.raw };
139
149
  try {
150
+ isUploading.value = true;
151
+ emits("uploading");
140
152
  const data = await index$2.doReadExcel(files, props);
141
153
  if (!data) {
142
154
  elementPlus.ElMessage.warning("\u8BFB\u53D6\u6587\u4EF6\u5931\u8D25");
155
+ isUploading.value = false;
156
+ return;
157
+ }
158
+ if (!data.length) {
159
+ elementPlus.ElMessage.warning("\u8BE5\u6587\u4EF6\u6CA1\u6709\u6570\u636E");
160
+ isUploading.value = false;
143
161
  return;
144
162
  }
145
163
  active.value++;
164
+ isUploading.value = false;
165
+ emits("uploaded");
146
166
  await vue.nextTick();
147
167
  setData(data);
148
168
  templateFileName.value = file.name;
149
169
  } catch (err) {
170
+ isUploading.value = false;
150
171
  console.error(err);
151
172
  return;
152
173
  }
@@ -176,6 +197,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
176
197
  templateFileName.value = "";
177
198
  active.value = 1;
178
199
  submitNumber.value = 0;
200
+ emits("reset");
179
201
  }
180
202
  async function submitDataSource() {
181
203
  if (!props.url && !props.submitHandler) {
@@ -192,11 +214,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
192
214
  let { dataSource, total, success, failed } = res;
193
215
  if (!total) {
194
216
  elementPlus.ElMessage.warning("\u8BF7\u6DFB\u52A0\u6570\u636E");
195
- return;
217
+ return Promise.reject();
196
218
  }
197
219
  if (!success) {
198
220
  elementPlus.ElMessage.warning("\u8BF7\u586B\u5199\u6709\u6548\u4E0A\u4F20\u6570\u636E");
199
- return;
221
+ return Promise.reject();
200
222
  }
201
223
  if (failed) {
202
224
  try {
@@ -238,6 +260,9 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
238
260
  prop: null,
239
261
  message: res2.msg
240
262
  };
263
+ if (submitModel.value === "force") {
264
+ break;
265
+ }
241
266
  }
242
267
  } catch (err) {
243
268
  target.errorMsg = {
@@ -245,6 +270,9 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
245
270
  message: err?.msg ? err.msg : err
246
271
  };
247
272
  console.error(err);
273
+ if (submitModel.value === "force") {
274
+ break;
275
+ }
248
276
  }
249
277
  }
250
278
  deleteData(submitList);
@@ -267,8 +295,18 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
267
295
  }
268
296
  }
269
297
  __expose({
270
- setData,
298
+ setData: async (dataSource) => {
299
+ if (!is.isArray(dataSource) || !dataSource.length) return;
300
+ active.value = 2;
301
+ await vue.nextTick();
302
+ setData(dataSource);
303
+ },
271
304
  deleteData,
305
+ clearData: () => {
306
+ templateFileName.value = "";
307
+ active.value = 1;
308
+ submitNumber.value = 0;
309
+ },
272
310
  getTableDataSource,
273
311
  validate,
274
312
  submitDataSource
@@ -301,18 +339,39 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
301
339
  "svg-name": "analytics-echarts-sos",
302
340
  "class-name": "!w-[58px] !h-[66px] mb-4"
303
341
  }),
304
- vue.createElementVNode("div", { class: "mb-1.5 text-main" }, [
305
- vue.createElementVNode("span", null, "\u70B9\u51FB\u6216\u5C06 \u6587\u4EF6 \u62D6\u62FD\u5230\u6B64\u5904\u4E0A\u4F20")
306
- ]),
307
- vue.createElementVNode("div", { class: "text-auxiliary text-xs" }, "\u4E00\u6B21\u4EC5\u652F\u6301\u4E0A\u4F20\u4E00\u4E2A\u6587\u4EF6"),
308
- vue.createElementVNode("div", { class: "w-full text-main absolute left-1/2 bottom-4 transform -translate-x-1/2" }, [
309
- vue.createElementVNode("div", { class: "flex items-center justify-center text-xs text-auxiliary gap-2" }, [
310
- vue.createElementVNode("span", null, "\u6587\u4EF6\u652F\u6301\uFF1A"),
311
- vue.createElementVNode("div", { class: "border border-border rounded py-1 px-2.5 bg-background-4" }, " .xls "),
312
- vue.createElementVNode("div", { class: "border border-border rounded py-1 px-2.5 bg-background-4" }, " .xlsx "),
313
- vue.createElementVNode("span", null, "\u5355\u6587\u4EF6\u4E0D\u8D85\u8FC7 10 MB")
314
- ])
315
- ])
342
+ isUploading.value ? (vue.openBlock(), vue.createElementBlock("div", {
343
+ key: 0,
344
+ class: "flex items-center gap-2 text-auxiliary"
345
+ }, [
346
+ vue.createElementVNode("span", { class: "text-xs" }, "\u6587\u4EF6\u4E0A\u4F20\u4E2D"),
347
+ vue.createVNode(vue.unref(elementPlus.ElIcon), { class: "is-loading" }, {
348
+ default: vue.withCtx(() => [
349
+ vue.createVNode(vue.unref(iconsVue.Loading))
350
+ ]),
351
+ _: 1
352
+ /* STABLE */
353
+ })
354
+ ])) : (vue.openBlock(), vue.createElementBlock(
355
+ vue.Fragment,
356
+ { key: 1 },
357
+ [
358
+ vue.createElementVNode("div", { class: "mb-1.5 text-main" }, [
359
+ vue.createElementVNode("span", null, "\u70B9\u51FB\u6216\u5C06 \u6587\u4EF6 \u62D6\u62FD\u5230\u6B64\u5904\u4E0A\u4F20")
360
+ ]),
361
+ vue.createElementVNode("div", { class: "text-auxiliary text-xs" }, "\u4E00\u6B21\u4EC5\u652F\u6301\u4E0A\u4F20\u4E00\u4E2A\u6587\u4EF6"),
362
+ vue.createElementVNode("div", { class: "w-full text-main absolute left-1/2 bottom-4 transform -translate-x-1/2" }, [
363
+ vue.createElementVNode("div", { class: "flex items-center justify-center text-xs text-auxiliary gap-2" }, [
364
+ vue.createElementVNode("span", null, "\u6587\u4EF6\u652F\u6301\uFF1A"),
365
+ vue.createElementVNode("div", { class: "border border-border rounded py-1 px-2.5 bg-background-4" }, " .xls "),
366
+ vue.createElementVNode("div", { class: "border border-border rounded py-1 px-2.5 bg-background-4" }, " .xlsx "),
367
+ vue.createElementVNode("span", null, "\u5355\u6587\u4EF6\u4E0D\u8D85\u8FC7 10 MB")
368
+ ])
369
+ ])
370
+ ],
371
+ 64
372
+ /* STABLE_FRAGMENT */
373
+ )),
374
+ vue.createElementVNode("div", { class: "hy-batch-table-form-upload-bg" })
316
375
  ]),
317
376
  _: 1
318
377
  /* STABLE */
@@ -356,9 +415,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
356
415
  innerHTML: item.description,
357
416
  class: "text-auxiliary text-center mb-3 whitespace-nowrap"
358
417
  }, null, 8, ["innerHTML"]),
359
- vue.renderSlot(_ctx.$slots, "template-down", {}, () => [
360
- index === 0 ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.HyButton), {
361
- key: 0,
418
+ index === 0 ? vue.renderSlot(_ctx.$slots, "template-down", {}, () => [
419
+ vue.createVNode(vue.unref(index$1.HyButton), {
362
420
  type: "primary",
363
421
  link: "",
364
422
  onClick: () => vue.unref(index$2.downloadTemplateHandler)(props)
@@ -372,8 +430,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
372
430
  ]),
373
431
  _: 1
374
432
  /* STABLE */
375
- }, 8, ["onClick"])) : vue.createCommentVNode("v-if", true)
376
- ])
433
+ }, 8, ["onClick"])
434
+ ], void 0, 1) : vue.createCommentVNode("v-if", true)
377
435
  ]);
378
436
  }),
379
437
  64
@@ -385,19 +443,22 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
385
443
  key: 1,
386
444
  class: "h-full flex flex-col"
387
445
  }, [
388
- vue.createElementVNode("div", { class: "hy-batch-table-form-template-box" }, [
446
+ vue.createElementVNode("div", { class: "hy-batch-table-form-template-box mb-4" }, [
389
447
  vue.createElementVNode("div", { class: "flex items-center gap-2" }, [
390
448
  vue.createVNode(vue.unref(index.HyIcon), {
391
449
  "svg-name": "analytics-echarts-sos",
392
450
  "class-name": "!w-[18px] !h-[22px]"
393
451
  }),
394
- vue.createElementVNode(
452
+ templateFileName.value ? (vue.openBlock(), vue.createElementBlock(
395
453
  "span",
396
- { class: "text-theme" },
454
+ {
455
+ key: 0,
456
+ class: "text-theme"
457
+ },
397
458
  vue.toDisplayString(templateFileName.value),
398
459
  1
399
460
  /* TEXT */
400
- ),
461
+ )) : vue.createCommentVNode("v-if", true),
401
462
  vue.createElementVNode("span", { class: "text-auxiliary" }, "\u89E3\u6790\u5B8C\u6210")
402
463
  ]),
403
464
  vue.createVNode(vue.unref(index$1.HyButton), {
@@ -413,9 +474,10 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
413
474
  /* STABLE */
414
475
  })
415
476
  ]),
416
- vue.createVNode(tableForm.default, {
477
+ vue.createVNode(tableForm.default, vue.mergeProps({
417
478
  ref_key: "tableRef",
418
- ref: tableRef,
479
+ ref: tableRef
480
+ }, _ctx.$attrs, {
419
481
  tableColumns: __props.tableColumns,
420
482
  formColumns: __props.formColumns,
421
483
  rules: __props.rules,
@@ -423,7 +485,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
423
485
  columnNum: __props.columnNum,
424
486
  size: __props.size,
425
487
  class: "h-0 flex-1"
426
- }, vue.createSlots({
488
+ }), vue.createSlots({
427
489
  _: 2
428
490
  /* DYNAMIC */
429
491
  }, [
@@ -435,7 +497,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
435
497
  ])
436
498
  };
437
499
  })
438
- ]), 1032, ["tableColumns", "formColumns", "rules", "rowClickExpand", "columnNum", "size"])
500
+ ]), 1040, ["tableColumns", "formColumns", "rules", "rowClickExpand", "columnNum", "size"])
439
501
  ])) : vue.createCommentVNode("v-if", true),
440
502
  submitting.value ? (vue.openBlock(), vue.createElementBlock("div", {
441
503
  key: 2,