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.
- package/es/components/hyBatchUploadDialog/batchUploadDialog.vue.mjs +278 -0
- package/es/components/hyBatchUploadDialog/index.mjs +6 -0
- package/es/components/hyBatchUploadDialog/style/batchUploadDialog.scss +0 -0
- package/es/components/hyButton/style/button.scss +1 -1
- package/es/components/hyDialog/dialog.vue.mjs +10 -6
- package/es/components/hyTableActionButton/tableActionButton.vue.mjs +3 -4
- package/es/components/hyTableForm/batchTableForm.vue.mjs +93 -31
- package/es/components/hyTableForm/style/batchTableForm.scss +62 -0
- package/es/components/hyTableForm/tableForm.vue.mjs +3 -1
- package/es/components/index.mjs +1 -0
- package/es/index.mjs +2 -0
- package/es/utils/index.mjs +1 -0
- package/es/utils/permission.mjs +498 -0
- package/es/version.mjs +1 -1
- package/lib/components/hyBatchUploadDialog/batchUploadDialog.vue.js +282 -0
- package/lib/components/hyBatchUploadDialog/index.js +11 -0
- package/lib/components/hyBatchUploadDialog/style/batchUploadDialog.scss +0 -0
- package/lib/components/hyButton/style/button.scss +1 -1
- package/lib/components/hyDialog/dialog.vue.js +9 -5
- package/lib/components/hyTableActionButton/tableActionButton.vue.js +1 -2
- package/lib/components/hyTableForm/batchTableForm.vue.js +91 -29
- package/lib/components/hyTableForm/style/batchTableForm.scss +62 -0
- package/lib/components/hyTableForm/tableForm.vue.js +3 -1
- package/lib/components/index.js +38 -36
- package/lib/index.js +40 -36
- package/lib/utils/index.js +2 -0
- package/lib/utils/permission.js +500 -0
- package/lib/version.js +1 -1
- 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;
|
|
File without changes
|
|
@@ -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.
|
|
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(
|
|
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: [
|
|
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.
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
vue.
|
|
310
|
-
vue.
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
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
|
-
|
|
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"])
|
|
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.
|
|
452
|
+
templateFileName.value ? (vue.openBlock(), vue.createElementBlock(
|
|
395
453
|
"span",
|
|
396
|
-
{
|
|
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
|
-
]),
|
|
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,
|