@skyfox2000/webui 1.5.4 → 1.5.9
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/lib/assets/modules/{baseLayout-BEy-FjcZ.js → baseLayout-DfTxHOFc.js} +7 -7
- package/lib/assets/modules/file-upload-DTOdV5vM.js +211 -0
- package/lib/assets/modules/{index-BTD6d1d_.js → index-BwMaOrJT.js} +1 -1
- package/lib/assets/modules/{index-DyE2ppxB.js → index-DUBY49Au.js} +27 -27
- package/lib/assets/modules/{index-BFxnKhwl.js → index-M1qERbea.js} +99 -99
- package/lib/assets/modules/{menuTabs-DUBWuf7t.js → menuTabs-DWaBSRNr.js} +42 -42
- package/lib/assets/modules/{toolIcon-DQLIuud3.js → toolIcon-BYnHhAy-.js} +1 -1
- package/lib/assets/modules/upload-template-BKm9mFq8.js +6764 -0
- package/lib/assets/modules/uploadList-CHvr6Hp1.js +472 -0
- package/lib/es/AceEditor/index.js +3 -3
- package/lib/es/BasicLayout/index.js +2 -2
- package/lib/es/Error403/index.js +14 -15
- package/lib/es/Error404/index.js +16 -17
- package/lib/es/ExcelForm/index.js +244 -244
- package/lib/es/MenuLayout/index.js +5 -5
- package/lib/es/TemplateFile/index.js +53 -54
- package/lib/es/UploadForm/index.js +61 -63
- package/lib/locales/default.d.ts +287 -103
- package/lib/webui.css +1 -1
- package/lib/webui.es.js +1476 -1622
- package/package.json +1 -1
- package/src/components/common/icon/fullscreen.vue +1 -1
- package/src/components/content/dialog/excelForm.vue +32 -28
- package/src/components/content/dialog/index.vue +4 -3
- package/src/components/content/dialog/templateFile.vue +3 -2
- package/src/components/content/dialog/uploadForm.vue +5 -4
- package/src/components/content/drawer/index.vue +5 -3
- package/src/components/content/list/index.vue +2 -1
- package/src/components/content/list/listOperate.vue +6 -7
- package/src/components/content/search/index.vue +3 -2
- package/src/components/content/table/index.vue +2 -1
- package/src/components/content/table/tableOperate.vue +8 -9
- package/src/components/content/toolbar/icontool.vue +1 -5
- package/src/components/content/toolbar/index.vue +4 -5
- package/src/components/content/toolpanel/index.vue +20 -20
- package/src/components/error/error403.vue +2 -2
- package/src/components/error/error404.vue +2 -2
- package/src/components/form/input/index.vue +3 -1
- package/src/components/form/select/index.vue +3 -2
- package/src/components/form/textarea/index.vue +3 -1
- package/src/components/form/transfer/index.vue +2 -1
- package/src/components/form/upload/uploadList.vue +23 -19
- package/src/components/layout/header/headerExits.vue +5 -5
- package/src/components/layout/menu/menuTabs.vue +1 -1
- package/src/const/options.ts +17 -16
- package/src/locales/default.ts +297 -176
- package/src/locales/en-US.json +320 -0
- package/src/stores/appInfo.ts +2 -1
- package/src/stores/userInfo.ts +6 -5
- package/src/utils/data.ts +9 -8
- package/src/utils/download.ts +5 -4
- package/src/utils/excel-preview.ts +4 -3
- package/src/utils/export-table.ts +7 -6
- package/src/utils/file-upload.ts +15 -14
- package/src/utils/form-csv.ts +4 -3
- package/src/utils/form-excel.ts +14 -13
- package/src/utils/form-validate.ts +18 -17
- package/src/utils/form.ts +6 -5
- package/src/utils/icon-loader.ts +3 -2
- package/src/utils/options.ts +2 -1
- package/src/utils/tools.ts +18 -17
- package/lib/assets/modules/file-upload-_mcZy7EK.js +0 -211
- package/lib/assets/modules/upload-template-DZuy1BOF.js +0 -6465
- package/lib/assets/modules/uploadList-CCquj3c_.js +0 -466
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { defineComponent as _, onMounted as I, createBlock as s, openBlock as o, unref as e, withCtx as l, createCommentVNode as r, createVNode as p, createElementVNode as x, createElementBlock as y, toDisplayString as g, renderSlot as h } from "vue";
|
|
2
2
|
import { Layout as i, LayoutSider as k } from "ant-design-vue";
|
|
3
|
-
import { a as b } from "./toolIcon-
|
|
4
|
-
import { I as C, _ as S, f as w, d as $, g as
|
|
5
|
-
import {
|
|
3
|
+
import { a as b } from "./toolIcon-BYnHhAy-.js";
|
|
4
|
+
import { I as C, _ as S, f as w, d as $, g as v } from "./menuTabs-DWaBSRNr.js";
|
|
5
|
+
import { at as N, a as B, av as E } from "./upload-template-BKm9mFq8.js";
|
|
6
6
|
import "@skyfox2000/microbase";
|
|
7
7
|
import "@skyfox2000/fapi";
|
|
8
8
|
import L from "vue-m-message";
|
|
9
9
|
import "async-validator";
|
|
10
10
|
import "dayjs";
|
|
11
11
|
import "vue-draggable-next";
|
|
12
|
-
const V = { class: "h-[40px] max-h-[40px] bg-[rgba(240,240,240,0.2)] flex flex-nowrap items-center justify-center text-white font-bold text-lg overflow-hidden text-ellipsis" },
|
|
12
|
+
const V = { class: "h-[40px] max-h-[40px] bg-[rgba(240,240,240,0.2)] flex flex-nowrap items-center justify-center text-white font-bold text-lg overflow-hidden text-ellipsis" }, z = {
|
|
13
13
|
key: 0,
|
|
14
14
|
class: "ml-[10px]"
|
|
15
15
|
}, H = /* @__PURE__ */ _({
|
|
@@ -18,7 +18,7 @@ const V = { class: "h-[40px] max-h-[40px] bg-[rgba(240,240,240,0.2)] flex flex-n
|
|
|
18
18
|
routes: {}
|
|
19
19
|
},
|
|
20
20
|
setup(m) {
|
|
21
|
-
const f = m, a =
|
|
21
|
+
const f = m, a = N(), t = B(), u = E();
|
|
22
22
|
return I(() => {
|
|
23
23
|
L.closeAll();
|
|
24
24
|
}), (d, c) => (o(), s(e(i), { class: "h-screen" }, {
|
|
@@ -53,7 +53,7 @@ const V = { class: "h-[40px] max-h-[40px] bg-[rgba(240,240,240,0.2)] flex flex-n
|
|
|
53
53
|
}),
|
|
54
54
|
_: 1
|
|
55
55
|
}, 8, ["title"]),
|
|
56
|
-
e(t).menuCollapse ? r("", !0) : (o(), y("span",
|
|
56
|
+
e(t).menuCollapse ? r("", !0) : (o(), y("span", z, g(e(a).appInfo.Name), 1))
|
|
57
57
|
]),
|
|
58
58
|
p(w, {
|
|
59
59
|
routes: f.routes
|
|
@@ -64,7 +64,7 @@ const V = { class: "h-[40px] max-h-[40px] bg-[rgba(240,240,240,0.2)] flex flex-n
|
|
|
64
64
|
p(e(i), { class: "overflow-y-auto block" }, {
|
|
65
65
|
default: l(() => [
|
|
66
66
|
e(t).fullscreen ? r("", !0) : (o(), s($, { key: 0 })),
|
|
67
|
-
e(u).TabEnabled ? (o(), s(
|
|
67
|
+
e(u).TabEnabled ? (o(), s(v, { key: 1 })) : r("", !0),
|
|
68
68
|
h(d.$slots, "default")
|
|
69
69
|
]),
|
|
70
70
|
_: 3
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
var b = Object.defineProperty;
|
|
2
|
+
var E = (o, r, a) => r in o ? b(o, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : o[r] = a;
|
|
3
|
+
var h = (o, r, a) => E(o, typeof r != "symbol" ? r + "" : r, a);
|
|
4
|
+
import { hostUrl as m } from "@skyfox2000/fapi";
|
|
5
|
+
import U from "dayjs";
|
|
6
|
+
import f from "vue-m-message";
|
|
7
|
+
import { $ as u, T as y, u as g } from "./upload-template-BKm9mFq8.js";
|
|
8
|
+
import { isMicroApp as F } from "@skyfox2000/microbase";
|
|
9
|
+
var i = /* @__PURE__ */ ((o) => (o.Pending = "pending", o.Uploading = "uploading", o.Success = "success", o.Error = "error", o.Online = "online", o.Offline = "offline", o))(i || {});
|
|
10
|
+
class x {
|
|
11
|
+
/**
|
|
12
|
+
* 连接路径参数,已判断 undefined 或 null 值
|
|
13
|
+
* @param args 路径参数数组
|
|
14
|
+
* @returns 连接后的路径字符串
|
|
15
|
+
*/
|
|
16
|
+
static join(...r) {
|
|
17
|
+
return r.filter((s) => s != null).join("/").replace(/[\/]+/, "/");
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
class S {
|
|
21
|
+
/**
|
|
22
|
+
* AsyncUploader 构造函数
|
|
23
|
+
* @param urlInfo 文件上传的 API 配置(IUrlInfo 对象)
|
|
24
|
+
* @param maxConcurrent 最大允许并发上传的文件数量
|
|
25
|
+
*/
|
|
26
|
+
constructor(r, a = 3) {
|
|
27
|
+
/**
|
|
28
|
+
* 设置 API 端点和最大并发数,所有上传文件通过该类控制
|
|
29
|
+
*/
|
|
30
|
+
h(this, "urlInfo");
|
|
31
|
+
/**
|
|
32
|
+
* 最大并发上传数
|
|
33
|
+
*/
|
|
34
|
+
h(this, "maxConcurrent");
|
|
35
|
+
/**
|
|
36
|
+
* 控制上传任务的中断信号
|
|
37
|
+
*/
|
|
38
|
+
h(this, "abortController");
|
|
39
|
+
this.urlInfo = r, this.maxConcurrent = a;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 执行上传
|
|
43
|
+
* @param fileList 文件列表
|
|
44
|
+
* @param loading 加载状态
|
|
45
|
+
* @param continueOnError 错误时是否继续上传
|
|
46
|
+
* @param onComplete 上传完成回调
|
|
47
|
+
* @param onProgress 上传进度回调
|
|
48
|
+
* @returns 上传结果
|
|
49
|
+
*/
|
|
50
|
+
async doUpload(r, a, l, s, t) {
|
|
51
|
+
if (r.length) {
|
|
52
|
+
if (r.length === 0) {
|
|
53
|
+
f.warning(u("webui.utils.fileUpload.pleaseSelectFile"));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
a.value = !0, await this.uploadFiles(r, t, (d) => {
|
|
57
|
+
let e = !1, p = 0;
|
|
58
|
+
for (const n of d)
|
|
59
|
+
n.status === i.Error && p++;
|
|
60
|
+
p ? p < d.length ? l ? (f.error(u("webui.utils.fileUpload.partialUploadFailed")), f.warning(u("webui.utils.fileUpload.saveUploadSuccess")), e = !0) : f.error(u("webui.utils.fileUpload.partialUploadFailedCancel")) : f.error(u("webui.utils.fileUpload.allUploadFailed")) : (f.success(u("webui.utils.fileUpload.allUploadSuccess")), e = !0), a.value = !1, s == null || s(e, d);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 上传多个文件,控制并发数量
|
|
66
|
+
* @param files 文件列表(File[] 或 FileList)
|
|
67
|
+
* @param onProgress 上传进度回调
|
|
68
|
+
* @param onComplete 上传完成回调
|
|
69
|
+
*/
|
|
70
|
+
async uploadFiles(r, a, l) {
|
|
71
|
+
if (!r.length) return;
|
|
72
|
+
const s = Math.min(this.maxConcurrent, r.length), t = [];
|
|
73
|
+
for (const e of r)
|
|
74
|
+
switch (e.status) {
|
|
75
|
+
case i.Success:
|
|
76
|
+
case i.Online:
|
|
77
|
+
case i.Offline:
|
|
78
|
+
break;
|
|
79
|
+
default:
|
|
80
|
+
e.status = i.Pending, t.push(e);
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
const d = [];
|
|
84
|
+
this.abortController = new AbortController();
|
|
85
|
+
try {
|
|
86
|
+
for (; d.length < s && t.length > 0; ) {
|
|
87
|
+
const e = t.shift();
|
|
88
|
+
if (!e) break;
|
|
89
|
+
d.push(this.handleFileStatus(e, d, t, a));
|
|
90
|
+
}
|
|
91
|
+
await Promise.all(d);
|
|
92
|
+
} catch (e) {
|
|
93
|
+
r.forEach((p) => {
|
|
94
|
+
p.status = i.Error, p.error = e instanceof Error ? e : new Error("上传失败"), a == null || a(p);
|
|
95
|
+
});
|
|
96
|
+
} finally {
|
|
97
|
+
l == null || l(r);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 处理单个文件的上传逻辑
|
|
102
|
+
* @param file 当前上传的文件
|
|
103
|
+
* @param activeUploads 当前正在上传的文件列表
|
|
104
|
+
* @param pendingFiles 等待上传的文件列表
|
|
105
|
+
* @param onProgress 上传进度回调
|
|
106
|
+
*/
|
|
107
|
+
async handleFileStatus(r, a, l, s) {
|
|
108
|
+
try {
|
|
109
|
+
await this.uploadFile(r, this.abortController.signal, (t) => {
|
|
110
|
+
r.percent = t, s == null || s(r);
|
|
111
|
+
});
|
|
112
|
+
} catch (t) {
|
|
113
|
+
r.error = t instanceof Error ? t : new Error("上传失败");
|
|
114
|
+
} finally {
|
|
115
|
+
if (l.length > 0) {
|
|
116
|
+
const t = l.shift();
|
|
117
|
+
t && a.push(this.handleFileStatus(t, a, l, s));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 使用 XMLHttpRequest 上传文件
|
|
123
|
+
* @param file 文件对象
|
|
124
|
+
* @param signal 中断信号
|
|
125
|
+
* @param onProgress 上传进度回调
|
|
126
|
+
*/
|
|
127
|
+
async uploadFile(r, a, l) {
|
|
128
|
+
return r.status = i.Uploading, new Promise(async (s, t) => {
|
|
129
|
+
const d = new FormData();
|
|
130
|
+
if (d.append("file", r.originFileObj), r.params)
|
|
131
|
+
for (const n in r.params)
|
|
132
|
+
d.append(n, r.params[n]);
|
|
133
|
+
const e = new XMLHttpRequest(), p = m(this.urlInfo);
|
|
134
|
+
if (p === !1) return Promise.resolve(r);
|
|
135
|
+
if (e.open("POST", p, !0), this.urlInfo.header && typeof this.urlInfo.header == "object" && Object.entries(this.urlInfo.header).forEach(([n, c]) => {
|
|
136
|
+
e.setRequestHeader(n, c);
|
|
137
|
+
}), this.urlInfo.authorize) {
|
|
138
|
+
const n = F() ? await y.getToken() : g().getToken();
|
|
139
|
+
if (!n) {
|
|
140
|
+
t(new Error(u("webui.utils.fileUpload.unauthorized")));
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
e.setRequestHeader("Authorization", "Bearer " + n);
|
|
144
|
+
}
|
|
145
|
+
e.upload.addEventListener("progress", (n) => {
|
|
146
|
+
if (n.lengthComputable && n.total > 0) {
|
|
147
|
+
const c = Math.round(n.loaded / n.total * 100);
|
|
148
|
+
l(c);
|
|
149
|
+
}
|
|
150
|
+
}), e.addEventListener("load", () => {
|
|
151
|
+
if (e.status >= 200 && e.status < 300) {
|
|
152
|
+
const n = e.getResponseHeader("Content-Type");
|
|
153
|
+
if (!n || !n.includes("application/json")) {
|
|
154
|
+
t(new Error(u("webui.utils.fileUpload.invalidJsonFormat")));
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
const c = JSON.parse(e.response);
|
|
159
|
+
if (c.status === "success")
|
|
160
|
+
c.data && (r.minioFile = {
|
|
161
|
+
ETag: c.data.ETag,
|
|
162
|
+
Bucket: c.data.Bucket,
|
|
163
|
+
FileName: r.fileName,
|
|
164
|
+
Key: c.data.Key,
|
|
165
|
+
Size: c.data.Size,
|
|
166
|
+
Type: r.type,
|
|
167
|
+
UpdateTime: U().format("YYYY-MM-DD HH:mm:ss"),
|
|
168
|
+
Status: i.Success
|
|
169
|
+
}), r.status = i.Success, s(r);
|
|
170
|
+
else {
|
|
171
|
+
const w = c.msg;
|
|
172
|
+
r.status = i.Error, t(new Error(w));
|
|
173
|
+
}
|
|
174
|
+
} catch (c) {
|
|
175
|
+
r.status = i.Error, t(new Error(u("webui.utils.fileUpload.jsonParseError") + ": " + c));
|
|
176
|
+
}
|
|
177
|
+
} else
|
|
178
|
+
r.status = i.Error, t(new Error(u("webui.utils.fileUpload.uploadFailed") + `:${e.status}`));
|
|
179
|
+
}), e.addEventListener("error", () => {
|
|
180
|
+
r.status = i.Error, t(new Error(u("webui.utils.fileUpload.networkError")));
|
|
181
|
+
}), e.send(d), a.addEventListener("abort", () => {
|
|
182
|
+
e.abort(), t(new Error(u("webui.utils.fileUpload.uploadCancelled")));
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* 取消当前所有的上传任务
|
|
188
|
+
*/
|
|
189
|
+
cancelUpload() {
|
|
190
|
+
this.abortController && this.abortController.abort();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
const M = async (o, r) => {
|
|
194
|
+
const a = new S(o, 1), l = [r];
|
|
195
|
+
await a.uploadFiles(
|
|
196
|
+
l,
|
|
197
|
+
(s) => {
|
|
198
|
+
r.percent = s.percent;
|
|
199
|
+
},
|
|
200
|
+
(s) => {
|
|
201
|
+
const t = s[0];
|
|
202
|
+
r.percent = t.percent, t.status === i.Success ? (r.status = i.Online, f.success(u("webui.utils.fileUpload.fileUploadSuccess"))) : (r.status = i.Error, f.error(u("webui.utils.fileUpload.fileUploadFailed")));
|
|
203
|
+
}
|
|
204
|
+
);
|
|
205
|
+
};
|
|
206
|
+
export {
|
|
207
|
+
S as A,
|
|
208
|
+
i as U,
|
|
209
|
+
M as f,
|
|
210
|
+
x as p
|
|
211
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent as d, useAttrs as f, createElementBlock as u, openBlock as x, createVNode as e, withCtx as n, unref as o, mergeProps as r, renderSlot as p } from "vue";
|
|
2
2
|
import { Button as _ } from "ant-design-vue";
|
|
3
|
-
import { a as P, _ as k } from "./toolIcon-
|
|
3
|
+
import { a as P, _ as k } from "./toolIcon-BYnHhAy-.js";
|
|
4
4
|
const C = /* @__PURE__ */ d({
|
|
5
5
|
inheritAttrs: !1,
|
|
6
6
|
__name: "index",
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { defineComponent as B, provide as N, ref as
|
|
2
|
-
import { _ as
|
|
3
|
-
import { Modal as D, Space as
|
|
1
|
+
import { defineComponent as B, provide as N, ref as A, watch as p, onMounted as _, createBlock as n, openBlock as r, unref as a, withCtx as s, createElementVNode as V, renderSlot as C, createVNode as $, createCommentVNode as d, createTextVNode as m, toDisplayString as u } from "vue";
|
|
2
|
+
import { _ as v } from "./index-BwMaOrJT.js";
|
|
3
|
+
import { Modal as D, Space as E } from "ant-design-vue";
|
|
4
4
|
import "@skyfox2000/fapi";
|
|
5
|
-
import { P as
|
|
5
|
+
import { P as M, e as P, $ as f, b as K, d as U } from "./upload-template-BKm9mFq8.js";
|
|
6
6
|
import "@skyfox2000/microbase";
|
|
7
7
|
import "vue-m-message";
|
|
8
8
|
import "async-validator";
|
|
9
9
|
import "dayjs";
|
|
10
10
|
import "vue-draggable-next";
|
|
11
|
-
const
|
|
11
|
+
const j = { class: "overflow-y-auto w-full h-full" }, W = /* @__PURE__ */ B({
|
|
12
12
|
__name: "index",
|
|
13
13
|
props: {
|
|
14
14
|
saveText: {},
|
|
@@ -22,10 +22,10 @@ const U = { class: "overflow-y-auto w-full h-full" }, R = /* @__PURE__ */ B({
|
|
|
22
22
|
open: { type: Boolean }
|
|
23
23
|
},
|
|
24
24
|
emits: ["update:open"],
|
|
25
|
-
setup(T, { emit:
|
|
25
|
+
setup(T, { emit: b }) {
|
|
26
26
|
const l = T, e = l.editorCtrl;
|
|
27
|
-
N(
|
|
28
|
-
const t =
|
|
27
|
+
N(M.EditorControl, e);
|
|
28
|
+
const t = A(l.open ?? !1), h = b, k = A(l.width ?? 430);
|
|
29
29
|
p(
|
|
30
30
|
() => e == null ? void 0 : e.visible.value,
|
|
31
31
|
(o) => {
|
|
@@ -39,58 +39,58 @@ const U = { class: "overflow-y-auto w-full h-full" }, R = /* @__PURE__ */ B({
|
|
|
39
39
|
), p(
|
|
40
40
|
() => t.value,
|
|
41
41
|
(o) => {
|
|
42
|
-
h("update:open", o), o ||
|
|
42
|
+
h("update:open", o), o || c();
|
|
43
43
|
}
|
|
44
44
|
), _(() => {
|
|
45
45
|
t.value = (e == null ? void 0 : e.visible.value) ?? !1;
|
|
46
46
|
});
|
|
47
47
|
const x = () => {
|
|
48
|
-
l.dialogSave ? l.dialogSave() : e &&
|
|
48
|
+
l.dialogSave ? l.dialogSave() : e && K(e);
|
|
49
49
|
}, F = () => {
|
|
50
|
-
l.dialogSaveAs ? l.dialogSaveAs() : e &&
|
|
51
|
-
},
|
|
52
|
-
e ?
|
|
50
|
+
l.dialogSaveAs ? l.dialogSaveAs() : e && U(e);
|
|
51
|
+
}, c = () => {
|
|
52
|
+
e ? P(e) : t.value = !1;
|
|
53
53
|
};
|
|
54
|
-
return (o,
|
|
54
|
+
return (o, g) => (r(), n(a(D), {
|
|
55
55
|
open: t.value,
|
|
56
|
-
"onUpdate:open":
|
|
56
|
+
"onUpdate:open": g[0] || (g[0] = (i) => t.value = i),
|
|
57
57
|
wrapClassName: "modal mx-auto min-w-[430px] " + (o.full ? "full-modal w-full" : ""),
|
|
58
58
|
width: k.value
|
|
59
59
|
}, {
|
|
60
60
|
footer: s(() => [
|
|
61
61
|
C(o.$slots, "footer", {}, () => [
|
|
62
|
-
|
|
62
|
+
$(a(E), null, {
|
|
63
63
|
default: s(() => {
|
|
64
|
-
var i,
|
|
64
|
+
var i, w, S, y;
|
|
65
65
|
return [
|
|
66
|
-
o.cancelText !== "" ? (r(), n(a(
|
|
66
|
+
o.cancelText !== "" ? (r(), n(a(v), {
|
|
67
67
|
key: 0,
|
|
68
|
-
onClick:
|
|
68
|
+
onClick: c
|
|
69
69
|
}, {
|
|
70
70
|
default: s(() => [
|
|
71
|
-
u(
|
|
71
|
+
m(u(o.cancelText ?? a(f)("webui.common.cancel")), 1)
|
|
72
72
|
]),
|
|
73
73
|
_: 1
|
|
74
74
|
})) : d("", !0),
|
|
75
|
-
o.saveAsText !== "" && ((i = a(e)) == null ? void 0 : i.saveAsBtnVisible) !== !1 ? (r(), n(a(
|
|
75
|
+
o.saveAsText !== "" && ((i = a(e)) == null ? void 0 : i.saveAsBtnVisible) !== !1 ? (r(), n(a(v), {
|
|
76
76
|
key: 1,
|
|
77
77
|
onClick: F,
|
|
78
78
|
type: "primary",
|
|
79
|
-
loading: (
|
|
79
|
+
loading: (w = a(e)) == null ? void 0 : w.isFormSaving.value
|
|
80
80
|
}, {
|
|
81
81
|
default: s(() => [
|
|
82
|
-
u(
|
|
82
|
+
m(u(o.saveAsText ?? a(f)("webui.common.saveAs")), 1)
|
|
83
83
|
]),
|
|
84
84
|
_: 1
|
|
85
85
|
}, 8, ["loading"])) : d("", !0),
|
|
86
|
-
o.saveText !== "" && ((S = a(e)) == null ? void 0 : S.saveBtnVisible) !== !1 ? (r(), n(a(
|
|
86
|
+
o.saveText !== "" && ((S = a(e)) == null ? void 0 : S.saveBtnVisible) !== !1 ? (r(), n(a(v), {
|
|
87
87
|
key: 2,
|
|
88
88
|
onClick: x,
|
|
89
89
|
type: "primary",
|
|
90
90
|
loading: (y = a(e)) == null ? void 0 : y.isFormSaving.value
|
|
91
91
|
}, {
|
|
92
92
|
default: s(() => [
|
|
93
|
-
u(
|
|
93
|
+
m(u(o.saveText ?? a(f)("webui.common.save")), 1)
|
|
94
94
|
]),
|
|
95
95
|
_: 1
|
|
96
96
|
}, 8, ["loading"])) : d("", !0)
|
|
@@ -101,7 +101,7 @@ const U = { class: "overflow-y-auto w-full h-full" }, R = /* @__PURE__ */ B({
|
|
|
101
101
|
])
|
|
102
102
|
]),
|
|
103
103
|
default: s(() => [
|
|
104
|
-
|
|
104
|
+
V("div", j, [
|
|
105
105
|
C(o.$slots, "default")
|
|
106
106
|
])
|
|
107
107
|
]),
|
|
@@ -110,5 +110,5 @@ const U = { class: "overflow-y-auto w-full h-full" }, R = /* @__PURE__ */ B({
|
|
|
110
110
|
}
|
|
111
111
|
});
|
|
112
112
|
export {
|
|
113
|
-
|
|
113
|
+
W as _
|
|
114
114
|
};
|