@skyfox2000/webui 1.4.22 → 1.4.24

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.
@@ -1,8 +1,8 @@
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-9zQ4jiFD.js";
4
- import { I as C, _ as S, f as w, d as $, g as N } from "./menuTabs-C9wkt-m9.js";
5
- import { ah as v, a as B, aj as E } from "./upload-template-CM0O990W.js";
3
+ import { a as b } from "./toolIcon-DWurTPaB.js";
4
+ import { I as C, _ as S, f as w, d as $, g as N } from "./menuTabs-CvAiSVNW.js";
5
+ import { ah as v, a as B, aj as E } from "./upload-template-BuaWOXY_.js";
6
6
  import "@skyfox2000/microbase";
7
7
  import "@skyfox2000/fapi";
8
8
  import L from "vue-m-message";
@@ -4,7 +4,7 @@ var d = (n, r, s) => m(n, typeof r != "symbol" ? r + "" : r, s);
4
4
  import { hostUrl as w } from "@skyfox2000/fapi";
5
5
  import y from "dayjs";
6
6
  import f from "vue-m-message";
7
- import { M as b, u as g } from "./upload-template-CM0O990W.js";
7
+ import { M as b, u as g } from "./upload-template-BuaWOXY_.js";
8
8
  import { isMicroApp as O } from "@skyfox2000/microbase";
9
9
  var i = /* @__PURE__ */ ((n) => (n.Pending = "pending", n.Uploading = "uploading", n.Success = "success", n.Error = "error", n.Online = "online", n.Offline = "offline", n))(i || {});
10
10
  class M {
@@ -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-9zQ4jiFD.js";
3
+ import { a as P, _ as k } from "./toolIcon-DWurTPaB.js";
4
4
  const C = /* @__PURE__ */ d({
5
5
  inheritAttrs: !1,
6
6
  __name: "index",
@@ -1,8 +1,8 @@
1
1
  import { defineComponent as B, provide as N, ref as w, watch as p, onMounted as _, createBlock as n, openBlock as r, unref as a, withCtx as s, createElementVNode as b, renderSlot as C, createVNode as V, createCommentVNode as d, createTextVNode as u, toDisplayString as v } from "vue";
2
- import { _ as m } from "./index-ClMWx3tg.js";
2
+ import { _ as m } from "./index-BpsqYPCw.js";
3
3
  import { Modal as D, Space as $ } from "ant-design-vue";
4
4
  import "@skyfox2000/fapi";
5
- import { P as E, d as M, o as P, b as K } from "./upload-template-CM0O990W.js";
5
+ import { P as E, d as M, o as P, b as K } from "./upload-template-BuaWOXY_.js";
6
6
  import "@skyfox2000/microbase";
7
7
  import "vue-m-message";
8
8
  import "async-validator";
@@ -1,10 +1,10 @@
1
1
  import H from "async-validator";
2
2
  import { httpPost as M, ResStatus as V } from "@skyfox2000/fapi";
3
- import { i as T, am as U, L as $, u as z } from "./upload-template-CM0O990W.js";
3
+ import { i as T, am as U, L as $, u as z } from "./upload-template-BuaWOXY_.js";
4
4
  import m from "vue-m-message";
5
5
  import { defineComponent as _, useAttrs as B, createElementBlock as A, openBlock as b, createVNode as O, unref as v, mergeProps as S, computed as E, createBlock as R, withCtx as L, normalizeStyle as N } from "vue";
6
6
  import { Spin as K, Alert as P } from "ant-design-vue";
7
- import { _ as W } from "./toolIcon-9zQ4jiFD.js";
7
+ import { _ as W } from "./toolIcon-DWurTPaB.js";
8
8
  const D = (i) => {
9
9
  const e = i.split(`
10
10
  `).filter((l) => l.trim() !== "");
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as x, createBlock as h, createCommentVNode as I, openBlock as u, unref as t, mergeProps as C, useAttrs as V, computed as j, ref as y, watch as k, withCtx as d, createElementBlock as g, normalizeStyle as T, createElementVNode as m, inject as W, onMounted as N, createVNode as l, toDisplayString as $, Fragment as R, createTextVNode as K, reactive as Y, nextTick as q, renderList as J, withModifiers as X } from "vue";
2
- import { a as w, _ as b } from "./toolIcon-9zQ4jiFD.js";
3
- import { c as L, W as M, aj as P, Z as E, Y as U, u as D, M as Z, a as F, X as G, r as H, ah as z } from "./upload-template-CM0O990W.js";
2
+ import { a as w, _ as b } from "./toolIcon-DWurTPaB.js";
3
+ import { c as L, W as M, aj as P, Z as E, Y as U, u as D, M as Z, a as F, X as G, r as H, ah as z } from "./upload-template-BuaWOXY_.js";
4
4
  import { _ as Q } from "./_plugin-vue_export-helper-CHgC5LLL.js";
5
5
  import { theme as O, Breadcrumb as ee, Modal as te, Flex as ne, LayoutHeader as oe, Space as se, Menu as ie, Tabs as ce, TabPane as ae } from "ant-design-vue";
6
6
  import { isMicroApp as le } from "@skyfox2000/microbase";
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as i, createBlock as s, openBlock as l, unref as a, withCtx as p, renderSlot as f, createCommentVNode as u, mergeProps as d } from "vue";
2
2
  import { Tooltip as I } from "ant-design-vue";
3
3
  import { SERVER_HOST as r } from "@skyfox2000/fapi";
4
- import { c as S } from "./upload-template-CM0O990W.js";
4
+ import { c as S } from "./upload-template-BuaWOXY_.js";
5
5
  const T = /* @__PURE__ */ i({
6
6
  __name: "index",
7
7
  props: {
@@ -1,7 +1,7 @@
1
1
  var mt = Object.defineProperty;
2
2
  var vt = (e, a, t) => a in e ? mt(e, a, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[a] = t;
3
3
  var P = (e, a, t) => vt(e, typeof a != "symbol" ? a + "" : a, t);
4
- import { ref as c, h as H, nextTick as gt, inject as se, provide as $e, watch as g, toRaw as et, shallowRef as J, defineComponent as Z, reactive as yt, computed as St, onMounted as Ie, onUnmounted as le, createBlock as Ae, createCommentVNode as W, openBlock as O, unref as b, mergeProps as ue, useAttrs as Ee, onActivated as xe, createElementBlock as $, createVNode as C, withCtx as Q, createTextVNode as we, toDisplayString as Y, Fragment as oe, renderList as He, normalizeClass as tt, createElementVNode as bt } from "vue";
4
+ import { ref as c, h as H, nextTick as gt, inject as se, provide as $e, watch as y, toRaw as et, shallowRef as J, defineComponent as Z, reactive as yt, computed as St, onMounted as Ie, onUnmounted as le, createBlock as Ae, createCommentVNode as W, openBlock as O, unref as b, mergeProps as ue, useAttrs as Ee, onActivated as xe, createElementBlock as $, createVNode as C, withCtx as Q, createTextVNode as we, toDisplayString as Y, Fragment as oe, renderList as He, normalizeClass as tt, createElementVNode as bt } from "vue";
5
5
  import { Switch as It, AutoComplete as At, Input as Et, CheckboxGroup as xt, Checkbox as wt, RadioGroup as Rt, Radio as Ot, Select as Tt, SelectOption as Pt } from "ant-design-vue";
6
6
  import { createPinia as kt, defineStore as ce } from "pinia";
7
7
  import Lt from "pinia-plugin-persistedstate";
@@ -202,7 +202,11 @@ const pe = {
202
202
  if (t.length === 0 && !s)
203
203
  return !0;
204
204
  let l = !1, u = !1;
205
- return t.length > 0 && (l = r.hasRole(t)), s && (u = r.hasPermit(e.path, ":page")), l || u;
205
+ if (t.length > 0 && (l = r.hasRole(t)), s) {
206
+ const i = e.path.replace(/\/:[^/]+/g, "");
207
+ u = r.hasPermit(i, ":page");
208
+ }
209
+ return l || u;
206
210
  }
207
211
  }
208
212
  return !1;
@@ -977,9 +981,9 @@ const Da = (e) => {
977
981
  const i = ["string", "number", "array"];
978
982
  for (const f of i)
979
983
  if (u === f && t[f]) {
980
- const p = t[f], h = ["len", "min", "max", "range"];
981
- for (const m of h)
982
- m === "range" && r.min != null && r.max != null && p.range ? n(p.range, o, { min: r.min, max: r.max }, l) : m !== "range" && r[m] != null && p[m] && n(p[m], o, { [m]: r[m] }, l);
984
+ const d = t[f], p = ["len", "min", "max", "range"];
985
+ for (const m of p)
986
+ m === "range" && r.min != null && r.max != null && d.range ? n(d.range, o, { min: r.min, max: r.max }, l) : m !== "range" && r[m] != null && d[m] && n(d[m], o, { [m]: r[m] }, l);
983
987
  }
984
988
  if (r.required && t.required && n(t.required, o, {}, l), r.pattern && t.pattern && n(r.message, o, {}, l), r.enum && Array.isArray(r.enum) && t.enum) {
985
989
  const f = r.enum.join(", ");
@@ -991,8 +995,8 @@ const Da = (e) => {
991
995
  let i;
992
996
  if (typeof o == "function") {
993
997
  const f = [r];
994
- for (const p in l)
995
- f.push(l[p]);
998
+ for (const d in l)
999
+ f.push(l[d]);
996
1000
  i = o.apply(null, f), i && u.push(i);
997
1001
  } else {
998
1002
  i = String(o);
@@ -1042,7 +1046,7 @@ const Da = (e) => {
1042
1046
  if (!e.label || !e.rule)
1043
1047
  return t;
1044
1048
  const s = a == null ? void 0 : a.ruleResults;
1045
- return g(
1049
+ return y(
1046
1050
  () => s == null ? void 0 : s.value,
1047
1051
  (n) => {
1048
1052
  if (t.value.errClass = "", t.value.msg = "", !F(n)) {
@@ -1080,9 +1084,9 @@ const Da = (e) => {
1080
1084
  const i = a[u.field];
1081
1085
  if (i) {
1082
1086
  const f = n.value.match(l);
1083
- f && f.forEach((p) => {
1084
- const h = p.replace("${", "").replace("}", "");
1085
- n.value = n.value.replace(p, i[h] ?? "");
1087
+ f && f.forEach((d) => {
1088
+ const p = d.replace("${", "").replace("}", "");
1089
+ n.value = n.value.replace(d, i[p] ?? "");
1086
1090
  });
1087
1091
  }
1088
1092
  }), s.value.length > 0 && (o.value = "error"), { msg: n, ruleErrors: s, errClass: o };
@@ -1139,16 +1143,16 @@ const Da = (e) => {
1139
1143
  if (l && l.length > 2 && l[1] && l[2]) {
1140
1144
  const u = l[1], i = l[2].replace(/Idx_/g, "").split("_"), f = e.formRules.value;
1141
1145
  if (f && i.length > 0) {
1142
- const p = {};
1143
- i.forEach((h) => {
1144
- f[h] && (p[h] = [
1146
+ const d = {};
1147
+ i.forEach((p) => {
1148
+ f[p] && (d[p] = [
1145
1149
  {
1146
- field: h,
1150
+ field: p,
1147
1151
  fieldValue: u,
1148
1152
  message: "数据重复"
1149
1153
  }
1150
1154
  ]);
1151
- }), Object.keys(p).length > 0 && (console.error("保存失败!", p), e.ruleResults.value = p);
1155
+ }), Object.keys(d).length > 0 && (console.error("保存失败!", d), e.ruleResults.value = d);
1152
1156
  }
1153
1157
  x.error(`保存失败!数据 \`${u}\` 已存在!`);
1154
1158
  } else x.error((n == null ? void 0 : n.msg) ?? "保存失败!");
@@ -1310,7 +1314,7 @@ const B = new na(), ee = (e, a, t) => {
1310
1314
  }, B.on(t.reloadEvent, s.reloadHandler);
1311
1315
  }
1312
1316
  if (t != null && t.data)
1313
- g(
1317
+ y(
1314
1318
  () => t.data,
1315
1319
  () => {
1316
1320
  je(a, t.data, !0);
@@ -1439,10 +1443,10 @@ const B = new na(), ee = (e, a, t) => {
1439
1443
  l.every((i) => {
1440
1444
  const f = be(u, { selectedValues: t });
1441
1445
  try {
1442
- const p = JSON.parse(f);
1443
- B.emit(i, p, t, n);
1444
- } catch (p) {
1445
- console.error("eventParamsValue: ", f, p);
1446
+ const d = JSON.parse(f);
1447
+ B.emit(i, d, t, n);
1448
+ } catch (d) {
1449
+ console.error("eventParamsValue: ", f, d);
1446
1450
  }
1447
1451
  });
1448
1452
  else {
@@ -1560,7 +1564,7 @@ const B = new na(), ee = (e, a, t) => {
1560
1564
  updateUrl: e.urls.update,
1561
1565
  deleteUrl: e.urls.delete
1562
1566
  };
1563
- return g(
1567
+ return y(
1564
1568
  () => s.reload.value,
1565
1569
  (n) => {
1566
1570
  n && (setTimeout(() => {
@@ -1581,7 +1585,7 @@ const B = new na(), ee = (e, a, t) => {
1581
1585
  data: J(void 0),
1582
1586
  isTreeLoading: c(!1)
1583
1587
  };
1584
- return g(
1588
+ return y(
1585
1589
  () => t.reload.value,
1586
1590
  (s) => {
1587
1591
  s && (setTimeout(() => {
@@ -1603,7 +1607,7 @@ const B = new na(), ee = (e, a, t) => {
1603
1607
  options: c([]),
1604
1608
  isOptionLoading: c(!1)
1605
1609
  };
1606
- return g(
1610
+ return y(
1607
1611
  () => t.reload.value,
1608
1612
  (s) => {
1609
1613
  s && (setTimeout(() => {
@@ -1661,25 +1665,25 @@ const B = new na(), ee = (e, a, t) => {
1661
1665
  const l = c(o.icon), u = c(0), i = () => {
1662
1666
  o.icons && u.value++;
1663
1667
  };
1664
- return g(
1668
+ return y(
1665
1669
  () => o.iconIndex,
1666
1670
  (f) => {
1667
1671
  f !== void 0 && (u.value = f);
1668
1672
  },
1669
1673
  { immediate: !0 }
1670
- ), g(
1674
+ ), y(
1671
1675
  () => u.value,
1672
1676
  (f) => {
1673
1677
  o.icons && (f >= o.icons.length && (u.value = 0), l.value = o.icons[u.value], ge(t, l, l.value), r("update:iconIndex", u.value));
1674
1678
  },
1675
1679
  { immediate: !0 }
1676
- ), g(
1680
+ ), y(
1677
1681
  () => G.value,
1678
1682
  () => {
1679
1683
  ge(t, l, l.value);
1680
1684
  },
1681
1685
  { deep: !0 }
1682
- ), g(
1686
+ ), y(
1683
1687
  () => o.icon,
1684
1688
  (f) => {
1685
1689
  ge(t, l, f);
@@ -1811,21 +1815,22 @@ const B = new na(), ee = (e, a, t) => {
1811
1815
  }, ns = (e, a, t, s) => {
1812
1816
  ht(e, [], t, s).forEach((o) => a.push(o));
1813
1817
  }, ht = (e, a, t, s) => {
1814
- var r, l, u, i, f;
1818
+ var r, l, u, i, f, d;
1815
1819
  const n = [], o = N();
1816
1820
  for (const p of e) {
1817
- if (p.redirect || p.path.includes("/login") || p.path.includes("/error") || p.path.includes("/:page(.*)") || (l = (r = p.meta) == null ? void 0 : r.roles) != null && l.length && !o.hasRole(p.meta.roles) && (u = p.meta) != null && u.permission && !o.hasPermit(p.meta.permission, ":page"))
1821
+ if (p.redirect || (r = p.meta) != null && r.hidden || // 隐藏菜单
1822
+ p.path.includes("/login") || p.path.includes("/error") || p.path.includes("/:page(.*)") || (u = (l = p.meta) == null ? void 0 : l.roles) != null && u.length && !o.hasRole(p.meta.roles) && (i = p.meta) != null && i.permission && !o.hasPermit(p.meta.permission, ":page"))
1818
1823
  continue;
1819
- const h = p.path.split("/");
1820
- h.unshift(...a);
1821
- const m = ht(p.children || [], h, t, s), A = {
1822
- key: h.join("/"),
1823
- label: ((i = p.name) == null ? void 0 : i.toString()) ?? "",
1824
- title: ((f = p.name) == null ? void 0 : f.toString()) ?? "",
1824
+ const m = p.path.split("/");
1825
+ m.unshift(...a);
1826
+ const I = ht(p.children || [], m, t, s), g = {
1827
+ key: m.join("/"),
1828
+ label: ((f = p.name) == null ? void 0 : f.toString()) ?? "",
1829
+ title: ((d = p.name) == null ? void 0 : d.toString()) ?? "",
1825
1830
  icon: p.icon ? H(t, { ...s, icon: p.icon }) : void 0,
1826
- children: m.length > 0 ? m : void 0
1831
+ children: I.length > 0 ? I : void 0
1827
1832
  };
1828
- (m.length > 0 || !p.children) && n.push(A);
1833
+ (I.length > 0 || !p.children) && n.push(g);
1829
1834
  }
1830
1835
  return n;
1831
1836
  }, Ze = yt([]), rs = () => {
@@ -2006,10 +2011,10 @@ const B = new na(), ee = (e, a, t) => {
2006
2011
  const t = e, s = X(), n = me(t.url, t), o = t.optionCtrl ?? n.optionCtrl;
2007
2012
  o.inputFactory = J(s);
2008
2013
  const r = c([]);
2009
- o && g(
2014
+ o && y(
2010
2015
  () => o.options.value,
2011
- (h) => {
2012
- r.value = h || [];
2016
+ (p) => {
2017
+ r.value = p || [];
2013
2018
  },
2014
2019
  { immediate: !0, deep: !0 }
2015
2020
  );
@@ -2020,8 +2025,8 @@ const B = new na(), ee = (e, a, t) => {
2020
2025
  default:
2021
2026
  return "w-[58px]";
2022
2027
  }
2023
- }), p = (h) => {
2024
- i != null && i.value.errClass && u && de(u), l("change", h);
2028
+ }), d = (p) => {
2029
+ i != null && i.value.errClass && u && de(u), l("change", p);
2025
2030
  };
2026
2031
  return Ie(() => {
2027
2032
  if (!t.data || t.data.length != 2) {
@@ -2031,13 +2036,13 @@ const B = new na(), ee = (e, a, t) => {
2031
2036
  o && ee(o.autoload, o, t);
2032
2037
  }), le(() => {
2033
2038
  o && he(o, t);
2034
- }), (h, m) => {
2035
- var A;
2039
+ }), (p, m) => {
2040
+ var I;
2036
2041
  return r.value.length === 2 ? (O(), Ae(b(It), ue({
2037
2042
  key: 0,
2038
2043
  size: e.size,
2039
2044
  class: [
2040
- ((A = b(i)) == null ? void 0 : A.errClass) === "error" ? "error !border-red-300 shadow-[0_0_3px_0px_#ff4d4f]" : "",
2045
+ ((I = b(i)) == null ? void 0 : I.errClass) === "error" ? "error !border-red-300 shadow-[0_0_3px_0px_#ff4d4f]" : "",
2041
2046
  "bg-blue-300",
2042
2047
  f.value
2043
2048
  ],
@@ -2045,8 +2050,8 @@ const B = new na(), ee = (e, a, t) => {
2045
2050
  checkedValue: r.value[0].value,
2046
2051
  unCheckedChildren: r.value[1].label,
2047
2052
  unCheckedValue: r.value[1].value,
2048
- onChange: p
2049
- }, h.$attrs), null, 16, ["size", "class", "checkedChildren", "checkedValue", "unCheckedChildren", "unCheckedValue"])) : W("", !0);
2053
+ onChange: d
2054
+ }, p.$attrs), null, 16, ["size", "class", "checkedChildren", "checkedValue", "unCheckedChildren", "unCheckedValue"])) : W("", !0);
2050
2055
  };
2051
2056
  }
2052
2057
  }), us = /* @__PURE__ */ Z({
@@ -2077,59 +2082,59 @@ const B = new na(), ee = (e, a, t) => {
2077
2082
  ...r == null ? void 0 : r.fieldMap
2078
2083
  };
2079
2084
  const l = c(void 0);
2080
- g(
2085
+ y(
2081
2086
  () => t.value,
2082
2087
  () => {
2083
2088
  l.value = t.value;
2084
2089
  },
2085
2090
  { immediate: !0 }
2086
- ), g(
2091
+ ), y(
2087
2092
  () => l.value,
2088
- (y) => {
2089
- t.autoClean && t.formData && t.outFields && y !== t.value && ft(t.formData, t.outFields, null);
2093
+ (g) => {
2094
+ t.autoClean && t.formData && t.outFields && g !== t.value && ft(t.formData, t.outFields, null);
2090
2095
  }
2091
2096
  );
2092
- const { editorCtrl: u, errInfo: i, labelText: f } = n, p = a;
2093
- n.inputEmit = p;
2094
- const h = c((r == null ? void 0 : r.options.value) || []);
2095
- r && g(
2097
+ const { editorCtrl: u, errInfo: i, labelText: f } = n, d = a;
2098
+ n.inputEmit = d;
2099
+ const p = c((r == null ? void 0 : r.options.value) || []);
2100
+ r && y(
2096
2101
  () => r.options.value,
2097
- (y) => {
2098
- h.value = y || [];
2102
+ (g) => {
2103
+ p.value = g || [];
2099
2104
  },
2100
2105
  { immediate: !0, deep: !0 }
2101
2106
  );
2102
- const m = (y) => {
2103
- if (h.value = [], y === "") return;
2104
- let d = {
2107
+ const m = (g) => {
2108
+ if (p.value = [], g === "") return;
2109
+ let h = {
2105
2110
  Query: {
2106
- SearchField: "%" + y.trim() + "%"
2111
+ SearchField: "%" + g.trim() + "%"
2107
2112
  }
2108
2113
  };
2109
- r.params = fe(r.params, d), r && ee(!0, r, t);
2110
- }, A = (y) => {
2111
- const w = Le(r, t, y);
2112
- p("update:value", y), p("select", y);
2113
- const d = ke(w);
2114
- p("update:labels", d), i != null && i.value.errClass && u && de(u);
2114
+ r.params = fe(r.params, h), r && ee(!0, r, t);
2115
+ }, I = (g) => {
2116
+ const w = Le(r, t, g);
2117
+ d("update:value", g), d("select", g);
2118
+ const h = ke(w);
2119
+ d("update:labels", h), i != null && i.value.errClass && u && de(u);
2115
2120
  };
2116
2121
  return xe(() => {
2117
2122
  r && r.autoload && (r.reload.value = !0);
2118
2123
  }), le(() => {
2119
2124
  r && he(r, t);
2120
- }), (y, w) => {
2121
- var d;
2125
+ }), (g, w) => {
2126
+ var h;
2122
2127
  return O(), $("div", null, [
2123
2128
  C(b(At), ue({
2124
2129
  value: l.value,
2125
- "onUpdate:value": w[0] || (w[0] = (I) => l.value = I),
2126
- class: ["w-full", (d = b(i)) == null ? void 0 : d.errClass],
2127
- options: h.value,
2130
+ "onUpdate:value": w[0] || (w[0] = (A) => l.value = A),
2131
+ class: ["w-full", (h = b(i)) == null ? void 0 : h.errClass],
2132
+ options: p.value,
2128
2133
  onSearch: m,
2129
- onSelect: A
2134
+ onSelect: I
2130
2135
  }, b(s), { "allow-clear": !1 }), {
2131
- option: Q(({ label: I }) => [
2132
- we(Y(I), 1)
2136
+ option: Q(({ label: A }) => [
2137
+ we(Y(A), 1)
2133
2138
  ]),
2134
2139
  default: Q(() => [
2135
2140
  C(b(Et), {
@@ -2166,28 +2171,28 @@ const B = new na(), ee = (e, a, t) => {
2166
2171
  },
2167
2172
  emits: ["change", "update:labels"],
2168
2173
  setup(e, { emit: a }) {
2169
- var h, m, A;
2174
+ var p, m, I;
2170
2175
  const t = e, s = Ee(), n = X(), o = me(t.url, t), r = t.optionCtrl ?? o.optionCtrl;
2171
2176
  r.inputFactory = J(n);
2172
2177
  const l = c({
2173
2178
  ...r == null ? void 0 : r.url,
2174
- url: ((h = r == null ? void 0 : r.url) == null ? void 0 : h.url) || "",
2179
+ url: ((p = r == null ? void 0 : r.url) == null ? void 0 : p.url) || "",
2175
2180
  fieldMap: (r == null ? void 0 : r.fieldMap) || ((m = r == null ? void 0 : r.url) == null ? void 0 : m.fieldMap),
2176
- params: (r == null ? void 0 : r.params) || ((A = r == null ? void 0 : r.url) == null ? void 0 : A.params),
2181
+ params: (r == null ? void 0 : r.params) || ((I = r == null ? void 0 : r.url) == null ? void 0 : I.params),
2177
2182
  loadingText: !1
2178
2183
  }), { errInfo: u } = n, i = a;
2179
2184
  n.inputEmit = i;
2180
2185
  const f = c((r == null ? void 0 : r.options.value) || []);
2181
- r && g(
2186
+ r && y(
2182
2187
  () => r.options.value,
2183
- (y) => {
2184
- f.value = y || [];
2188
+ (g) => {
2189
+ f.value = g || [];
2185
2190
  },
2186
2191
  { immediate: !0, deep: !0 }
2187
2192
  );
2188
- const p = (y) => {
2189
- const d = Le(r, t, y), I = ke(d);
2190
- i("update:labels", I);
2193
+ const d = (g) => {
2194
+ const h = Le(r, t, g), A = ke(h);
2195
+ i("update:labels", A);
2191
2196
  };
2192
2197
  return xe(() => {
2193
2198
  r && r.autoload && (r.reload.value = !0);
@@ -2200,27 +2205,27 @@ const B = new na(), ee = (e, a, t) => {
2200
2205
  }), r && ee(r.autoload, r, t);
2201
2206
  }), le(() => {
2202
2207
  r && he(r, t);
2203
- }), (y, w) => (O(), $("div", ya, [
2208
+ }), (g, w) => (O(), $("div", ya, [
2204
2209
  C(b(xt), ue({
2205
- onChange: p,
2210
+ onChange: d,
2206
2211
  class: "w-full mb-[-3px]"
2207
2212
  }, b(s)), {
2208
2213
  default: Q(() => [
2209
- f.value.length > 0 ? (O(!0), $(oe, { key: 0 }, He(f.value, (d) => {
2210
- var I;
2214
+ f.value.length > 0 ? (O(!0), $(oe, { key: 0 }, He(f.value, (h) => {
2215
+ var A;
2211
2216
  return O(), Ae(b(wt), {
2212
- key: d.value,
2213
- value: d.value,
2214
- disabled: d.disabled || d.value && e.disabledItems && e.disabledItems.indexOf(d.value.toString()) > -1,
2217
+ key: h.value,
2218
+ value: h.value,
2219
+ disabled: h.disabled || h.value && e.disabledItems && e.disabledItems.indexOf(h.value.toString()) > -1,
2215
2220
  class: tt([
2216
- ((I = b(u)) == null ? void 0 : I.errClass) === "error" ? "error !text-red-400" : "",
2221
+ ((A = b(u)) == null ? void 0 : A.errClass) === "error" ? "error !text-red-400" : "",
2217
2222
  "text-nowrap",
2218
2223
  "pb-1",
2219
2224
  e.wrap ? `w-1/${t.wrap}` : ""
2220
2225
  ])
2221
2226
  }, {
2222
2227
  default: Q(() => [
2223
- we(Y(d.label), 1)
2228
+ we(Y(h.label), 1)
2224
2229
  ]),
2225
2230
  _: 2
2226
2231
  }, 1032, ["value", "disabled", "class"]);
@@ -2255,42 +2260,42 @@ const B = new na(), ee = (e, a, t) => {
2255
2260
  },
2256
2261
  emits: ["change", "update:value", "update:labels"],
2257
2262
  setup(e, { emit: a }) {
2258
- var A, y, w;
2263
+ var I, g, w;
2259
2264
  const t = e, s = Ee(), n = X(), o = me(t.url, t), r = t.optionCtrl ?? o.optionCtrl;
2260
2265
  r.inputFactory = J(n);
2261
2266
  const l = c({
2262
2267
  ...r == null ? void 0 : r.url,
2263
- url: ((A = r == null ? void 0 : r.url) == null ? void 0 : A.url) || "",
2264
- fieldMap: (r == null ? void 0 : r.fieldMap) || ((y = r == null ? void 0 : r.url) == null ? void 0 : y.fieldMap),
2268
+ url: ((I = r == null ? void 0 : r.url) == null ? void 0 : I.url) || "",
2269
+ fieldMap: (r == null ? void 0 : r.fieldMap) || ((g = r == null ? void 0 : r.url) == null ? void 0 : g.fieldMap),
2265
2270
  params: (r == null ? void 0 : r.params) || ((w = r == null ? void 0 : r.url) == null ? void 0 : w.params),
2266
2271
  loadingText: !1
2267
- }), u = c(t.value), { errInfo: i } = n, f = c((r == null ? void 0 : r.options.value) || []), p = a;
2268
- n.inputEmit = p, r && g(
2272
+ }), u = c(t.value), { errInfo: i } = n, f = c((r == null ? void 0 : r.options.value) || []), d = a;
2273
+ n.inputEmit = d, r && y(
2269
2274
  () => r.options.value,
2270
- (d) => {
2271
- f.value = d || [];
2275
+ (h) => {
2276
+ f.value = h || [];
2272
2277
  },
2273
2278
  { immediate: !0, deep: !0 }
2274
- ), g(
2279
+ ), y(
2275
2280
  () => t.value,
2276
- (d) => {
2277
- u.value = d;
2281
+ (h) => {
2282
+ u.value = h;
2278
2283
  }
2279
- ), g(
2284
+ ), y(
2280
2285
  () => u.value,
2281
- (d) => {
2282
- p("update:value", d);
2286
+ (h) => {
2287
+ d("update:value", h);
2283
2288
  }
2284
2289
  );
2285
- const h = (d, I) => {
2286
- if (typeof d == "object" && typeof I == "object") {
2287
- const T = JSON.stringify(d) === JSON.stringify(I);
2288
- return T && (u.value = d), T;
2290
+ const p = (h, A) => {
2291
+ if (typeof h == "object" && typeof A == "object") {
2292
+ const T = JSON.stringify(h) === JSON.stringify(A);
2293
+ return T && (u.value = h), T;
2289
2294
  }
2290
- return d === I;
2291
- }, m = (d) => {
2292
- const I = d.target.value, T = Le(r, t, I), q = ke(T);
2293
- p("update:labels", q);
2295
+ return h === A;
2296
+ }, m = (h) => {
2297
+ const A = h.target.value, T = Le(r, t, A), q = ke(T);
2298
+ d("update:labels", q);
2294
2299
  };
2295
2300
  return xe(() => {
2296
2301
  r && r.autoload && (r.reload.value = !0);
@@ -2302,10 +2307,10 @@ const B = new na(), ee = (e, a, t) => {
2302
2307
  }), r && ee(r.autoload, r, t);
2303
2308
  }), le(() => {
2304
2309
  r && he(r, t);
2305
- }), (d, I) => (O(), $("div", ba, [
2310
+ }), (h, A) => (O(), $("div", ba, [
2306
2311
  C(b(Rt), ue({
2307
2312
  value: u.value,
2308
- "onUpdate:value": I[0] || (I[0] = (T) => u.value = T),
2313
+ "onUpdate:value": A[0] || (A[0] = (T) => u.value = T),
2309
2314
  autocheck: !1,
2310
2315
  onChange: m,
2311
2316
  class: "w-full flex align-items flex-wrap mb-[-3px]"
@@ -2318,7 +2323,7 @@ const B = new na(), ee = (e, a, t) => {
2318
2323
  }, [
2319
2324
  T.visible !== !1 ? (O(), Ae(b(Ot), {
2320
2325
  key: 0,
2321
- checked: h(T.value, t.value),
2326
+ checked: p(T.value, t.value),
2322
2327
  value: T.value,
2323
2328
  class: tt([
2324
2329
  ((q = b(i)) == null ? void 0 : q.errClass) === "error" ? "error !text-red-400" : "",
@@ -2377,21 +2382,21 @@ const B = new na(), ee = (e, a, t) => {
2377
2382
  },
2378
2383
  emits: ["change", "update:value", "update:label", "update:labels"],
2379
2384
  setup(e, { emit: a }) {
2380
- var I, T, q;
2385
+ var A, T, q;
2381
2386
  const t = e, s = t.value === void 0 ? !0 : t.undefValue, n = X(), { editorCtrl: o, errInfo: r, labelText: l } = n, u = me(t.url, t), i = t.optionCtrl ?? u.optionCtrl;
2382
2387
  i.inputFactory = J(n);
2383
- const f = Ee(), p = c({
2388
+ const f = Ee(), d = c({
2384
2389
  ...i == null ? void 0 : i.url,
2385
- url: ((I = i == null ? void 0 : i.url) == null ? void 0 : I.url) || "",
2390
+ url: ((A = i == null ? void 0 : i.url) == null ? void 0 : A.url) || "",
2386
2391
  fieldMap: (i == null ? void 0 : i.fieldMap) || ((T = i == null ? void 0 : i.url) == null ? void 0 : T.fieldMap),
2387
2392
  params: (i == null ? void 0 : i.params) || ((q = i == null ? void 0 : i.url) == null ? void 0 : q.params),
2388
2393
  loadingText: !1
2389
- }), h = c(f.placeholder), m = c(i == null ? void 0 : i.selected.value), A = a;
2390
- n.inputEmit = A;
2391
- const y = (v) => {
2394
+ }), p = c(f.placeholder), m = c(i == null ? void 0 : i.selected.value), I = a;
2395
+ n.inputEmit = I;
2396
+ const g = (v) => {
2392
2397
  const L = Le(i, t, v), D = ke(L);
2393
- m.value = v, A("update:labels", D), A("update:label", D.join(";")), A("change", v, L), r != null && r.value.errClass && o && de(o);
2394
- }, w = c((i == null ? void 0 : i.options.value) || []), d = (v) => {
2398
+ m.value = v, I("update:labels", D), I("update:label", D.join(";")), I("change", v, L), r != null && r.value.errClass && o && de(o);
2399
+ }, w = c((i == null ? void 0 : i.options.value) || []), h = (v) => {
2395
2400
  if (v.length > 0 && F(t.value) && t.selectFirst)
2396
2401
  for (let L = 0; L < v.length; L++) {
2397
2402
  const D = v[L];
@@ -2401,55 +2406,55 @@ const B = new na(), ee = (e, a, t) => {
2401
2406
  }
2402
2407
  }
2403
2408
  else v.length > 0 && (m.value = t.value === null ? void 0 : t.value);
2404
- v.length > 0 && m.value !== void 0 && y(m.value);
2409
+ v.length > 0 && m.value !== void 0 && g(m.value);
2405
2410
  };
2406
- return i && (g(
2411
+ return i && (y(
2407
2412
  () => i.options.value,
2408
2413
  (v) => {
2409
2414
  w.value = v || [];
2410
2415
  },
2411
2416
  { immediate: !0, deep: !0 }
2412
- ), g(
2417
+ ), y(
2413
2418
  () => i.selected.value,
2414
2419
  (v) => {
2415
2420
  m.value = v;
2416
2421
  }
2417
- )), g(
2422
+ )), y(
2418
2423
  () => w.value,
2419
2424
  (v) => {
2420
- d(v);
2425
+ h(v);
2421
2426
  }
2422
- ), g(
2423
- () => p.value.loading,
2427
+ ), y(
2428
+ () => d.value.loading,
2424
2429
  (v) => {
2425
- v ? h.value = "" : h.value || (h.value = "请选择" + l.value);
2430
+ v ? p.value = "" : p.value || (p.value = "请选择" + l.value);
2426
2431
  },
2427
2432
  { immediate: !0 }
2428
- ), g(
2433
+ ), y(
2429
2434
  () => t.value,
2430
2435
  (v) => {
2431
2436
  m.value = v;
2432
2437
  },
2433
2438
  { immediate: !0 }
2434
- ), g(
2439
+ ), y(
2435
2440
  () => m.value,
2436
2441
  (v) => {
2437
2442
  const L = v === void 0 ? s ? void 0 : null : v;
2438
- i && (i.selected.value = L), A("update:value", L);
2443
+ i && (i.selected.value = L), I("update:value", L);
2439
2444
  }
2440
2445
  ), xe(() => {
2441
2446
  i && i.autoload && (i.reload.value = !0);
2442
2447
  }), Ie(() => {
2443
- if (p.value && !p.value.fieldMap && (p.value.fieldMap = {
2448
+ if (d.value && !d.value.fieldMap && (d.value.fieldMap = {
2444
2449
  label: "Name",
2445
2450
  value: "Id",
2446
2451
  key: "Id"
2447
2452
  }), t.dataKey) {
2448
2453
  const v = JSON.parse(JSON.stringify(_.getOptions(t.dataKey)));
2449
- w.value = v, d(v);
2454
+ w.value = v, h(v);
2450
2455
  } else if (i) {
2451
2456
  const v = i.options.value || [];
2452
- v.length > 0 ? (w.value = v, d(v)) : ee(i.autoload, i, t);
2457
+ v.length > 0 ? (w.value = v, h(v)) : ee(i.autoload, i, t);
2453
2458
  }
2454
2459
  }), le(() => {
2455
2460
  i && he(i, t);
@@ -2465,8 +2470,8 @@ const B = new na(), ee = (e, a, t) => {
2465
2470
  value: m.value,
2466
2471
  "onUpdate:value": L[0] || (L[0] = (z) => m.value = z),
2467
2472
  "allow-clear": !0,
2468
- onChange: y,
2469
- placeholder: h.value,
2473
+ onChange: g,
2474
+ placeholder: p.value,
2470
2475
  "label-in-value": !1
2471
2476
  }, b(f)), {
2472
2477
  default: Q(() => [
@@ -1,9 +1,9 @@
1
1
  import { defineComponent as pe, ref as O, computed as $, watch as T, resolveDirective as de, createElementBlock as d, openBlock as c, normalizeClass as z, unref as n, createElementVNode as h, withDirectives as x, createCommentVNode as w, createBlock as V, mergeProps as q, withCtx as v, createVNode as p, createTextVNode as P, toDisplayString as I, Fragment as me, renderList as fe } from "vue";
2
- import { _ as G } from "./index-ClMWx3tg.js";
3
- import { a as B, _ as R } from "./toolIcon-9zQ4jiFD.js";
2
+ import { _ as G } from "./index-BpsqYPCw.js";
3
+ import { a as B, _ as R } from "./toolIcon-DWurTPaB.js";
4
4
  import { httpPost as K, ResStatus as N } from "@skyfox2000/fapi";
5
- import { L as W, u as X, v as he, _ as ve } from "./upload-template-CM0O990W.js";
6
- import { U as i, f as ye, p as H } from "./file-upload-D11e2io7.js";
5
+ import { L as W, u as X, v as he, _ as ve } from "./upload-template-BuaWOXY_.js";
6
+ import { U as i, f as ye, p as H } from "./file-upload-CKMd0H11.js";
7
7
  import { combineParams as Y } from "@skyfox2000/microbase";
8
8
  import _ from "vue-m-message";
9
9
  import "async-validator";
@@ -0,0 +1,27 @@
1
+ import { ButtonTool } from '../../../typings/tools.d';
2
+ import { VNodeProps, AllowedComponentProps, ComponentCustomProps, PublicProps, ShallowUnwrapRef, VNode } from 'vue';
3
+ export type GroupType = 'tools' | 'split' | 'space';
4
+ export interface ExtendedButtonTool extends ButtonTool {
5
+ component?: any;
6
+ props?: Record<string, any>;
7
+ }
8
+ export interface ToolGroup {
9
+ type: GroupType;
10
+ tools?: ExtendedButtonTool[];
11
+ width?: string;
12
+ }
13
+ declare const _default: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
14
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & VNodeProps & AllowedComponentProps & ComponentCustomProps, never>, never> & {
15
+ groupTools: ToolGroup[];
16
+ } & Partial<{}>> & PublicProps;
17
+ expose(exposed: ShallowUnwrapRef<{}>): void;
18
+ attrs: any;
19
+ slots: {};
20
+ emit: {};
21
+ }>) => VNode & {
22
+ __ctx?: Awaited<typeof __VLS_setup>;
23
+ };
24
+ export default _default;
25
+ type __VLS_PrettifyLocal<T> = {
26
+ [K in keyof T]: T[K];
27
+ } & {};
@@ -0,0 +1,4 @@
1
+ export { default as GroupTools } from './groupTools.vue';
2
+ export { default as IconTool } from './icontool.vue';
3
+ export { default as Toolbar } from './index.vue';
4
+ export type { ToolGroup } from './groupTools.vue';
@@ -1,13 +1,13 @@
1
1
  import { defineComponent as F, defineAsyncComponent as M, ref as m, watch as V, onMounted as J, createElementBlock as x, openBlock as p, Fragment as K, createElementVNode as v, createVNode as _, toDisplayString as W, unref as i, createBlock as P, withKeys as f, normalizeClass as N, withModifiers as w, withCtx as z, createCommentVNode as L } from "vue";
2
2
  import "ant-design-vue";
3
- import { _ as q } from "../../assets/modules/toolIcon-9zQ4jiFD.js";
3
+ import { _ as q } from "../../assets/modules/toolIcon-DWurTPaB.js";
4
4
  import "@skyfox2000/fapi";
5
- import "../../assets/modules/upload-template-CM0O990W.js";
5
+ import "../../assets/modules/upload-template-BuaWOXY_.js";
6
6
  import "@skyfox2000/microbase";
7
7
  import "vue-m-message";
8
8
  import "async-validator";
9
9
  import "dayjs";
10
- import { _ as D } from "../../assets/modules/index-CO9_YadW.js";
10
+ import { _ as D } from "../../assets/modules/index-DvozNhVM.js";
11
11
  import "vue-draggable-next";
12
12
  const h = async (s) => window.ace ? window.ace : new Promise((l, t) => {
13
13
  const o = document.createElement("script");
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as f, ref as d, watch as _, onMounted as v, resolveComponent as h, createBlock as o, openBlock as t, withCtx as s, createElementVNode as C, normalizeClass as x, createVNode as w, KeepAlive as y, unref as n, resolveDynamicComponent as I } from "vue";
2
- import { _ as g } from "../../assets/modules/baseLayout-BcSEYvus.js";
3
- import { ah as A, a as S } from "../../assets/modules/upload-template-CM0O990W.js";
2
+ import { _ as g } from "../../assets/modules/baseLayout-DiqAUz2h.js";
3
+ import { ah as A, a as S } from "../../assets/modules/upload-template-BuaWOXY_.js";
4
4
  import "@skyfox2000/microbase";
5
5
  import "@skyfox2000/fapi";
6
6
  import b from "vue-m-message";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as i, createBlock as p, openBlock as m, unref as r, withCtx as e, createVNode as n, createTextVNode as a } from "vue";
2
- import { r as s } from "../../assets/modules/upload-template-CM0O990W.js";
2
+ import { r as s } from "../../assets/modules/upload-template-BuaWOXY_.js";
3
3
  import "@skyfox2000/microbase";
4
4
  import "@skyfox2000/fapi";
5
5
  import "vue-m-message";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as i, createBlock as p, openBlock as m, unref as r, withCtx as e, createVNode as n, createTextVNode as a } from "vue";
2
- import { r as s } from "../../assets/modules/upload-template-CM0O990W.js";
2
+ import { r as s } from "../../assets/modules/upload-template-BuaWOXY_.js";
3
3
  import "@skyfox2000/microbase";
4
4
  import "@skyfox2000/fapi";
5
5
  import "vue-m-message";
@@ -1,12 +1,12 @@
1
1
  import { defineComponent as we, ref as f, computed as T, watch as H, onMounted as be, createBlock as W, openBlock as d, unref as n, withCtx as S, renderSlot as J, createElementBlock as g, createCommentVNode as K, createElementVNode as h, createVNode as C, createTextVNode as X, toDisplayString as E, normalizeClass as Ce, Fragment as ie, renderList as ne } from "vue";
2
- import { _ as Y } from "../../assets/modules/index-ClMWx3tg.js";
2
+ import { _ as Y } from "../../assets/modules/index-BpsqYPCw.js";
3
3
  import { Modal as Fe, Upload as ue, Space as _e } from "ant-design-vue";
4
4
  import { httpGet as Ue, ResStatus as fe } from "@skyfox2000/fapi";
5
- import { G as Te, a5 as Se, ab as Ee } from "../../assets/modules/upload-template-CM0O990W.js";
6
- import { A as Re, p as De, U as ce } from "../../assets/modules/file-upload-D11e2io7.js";
5
+ import { G as Te, a5 as Se, ab as Ee } from "../../assets/modules/upload-template-BuaWOXY_.js";
6
+ import { A as Re, p as De, U as ce } from "../../assets/modules/file-upload-CKMd0H11.js";
7
7
  import "@skyfox2000/microbase";
8
8
  import p from "vue-m-message";
9
- import { c as ke, _ as Z, h as Le, p as Ne, i as Ke } from "../../assets/modules/index-voAmrZ30.js";
9
+ import { c as ke, _ as Z, h as Le, p as Ne, i as Ke } from "../../assets/modules/index-gmbMtZa2.js";
10
10
  import "dayjs";
11
11
  import "vue-draggable-next";
12
12
  import "async-validator";
@@ -307,7 +307,7 @@ const Be = (l) => l.includes(",") || l.includes(`
307
307
  return p.error(v), ue.LIST_IGNORE;
308
308
  try {
309
309
  if (A(), y.value = t.name, q.value = u ? "text/csv" : "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", u) {
310
- const w = await t.arrayBuffer(), O = new TextDecoder("utf-8").decode(w), { csvToExcelView: G } = await import("../../assets/modules/index-voAmrZ30.js").then((he) => he.j), M = await G(O, t.name);
310
+ const w = await t.arrayBuffer(), O = new TextDecoder("utf-8").decode(w), { csvToExcelView: G } = await import("../../assets/modules/index-gmbMtZa2.js").then((he) => he.j), M = await G(O, t.name);
311
311
  if (!M.success)
312
312
  throw new Error(M.error || "CSV文件处理失败");
313
313
  const oe = await (await fetch(M.blobUrl)).arrayBuffer();
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as f, ref as d, watch as _, onMounted as h, resolveComponent as v, createBlock as o, openBlock as t, withCtx as s, createElementVNode as C, normalizeClass as x, createVNode as w, KeepAlive as I, unref as n, resolveDynamicComponent as g } from "vue";
2
- import { _ as y } from "../../assets/modules/baseLayout-BcSEYvus.js";
3
- import { ah as A, a as S } from "../../assets/modules/upload-template-CM0O990W.js";
2
+ import { _ as y } from "../../assets/modules/baseLayout-DiqAUz2h.js";
3
+ import { ah as A, a as S } from "../../assets/modules/upload-template-BuaWOXY_.js";
4
4
  import "@skyfox2000/microbase";
5
5
  import "@skyfox2000/fapi";
6
6
  import k from "vue-m-message";
@@ -1,15 +1,15 @@
1
1
  import { defineComponent as x, ref as o, watch as S, onMounted as h, createBlock as C, openBlock as F, unref as m, withCtx as s, createVNode as f, createTextVNode as q } from "vue";
2
- import { _ as L } from "../../assets/modules/index-ClMWx3tg.js";
2
+ import { _ as L } from "../../assets/modules/index-BpsqYPCw.js";
3
3
  import { Modal as z, Space as D } from "ant-design-vue";
4
4
  import { httpPost as N, ResStatus as O } from "@skyfox2000/fapi";
5
- import { ak as d } from "../../assets/modules/upload-template-CM0O990W.js";
6
- import { U as b } from "../../assets/modules/file-upload-D11e2io7.js";
5
+ import { ak as d } from "../../assets/modules/upload-template-BuaWOXY_.js";
6
+ import { U as b } from "../../assets/modules/file-upload-CKMd0H11.js";
7
7
  import "@skyfox2000/microbase";
8
8
  import "vue-m-message";
9
9
  import "async-validator";
10
10
  import "dayjs";
11
11
  import "vue-draggable-next";
12
- import { U as g } from "../../assets/modules/uploadList-DhkFSkqE.js";
12
+ import { U as g } from "../../assets/modules/uploadList-De6KfTAV.js";
13
13
  const _ = /* @__PURE__ */ x({
14
14
  __name: "templateFile",
15
15
  props: {
@@ -1,15 +1,15 @@
1
1
  import { defineComponent as S, ref as s, watch as b, onMounted as F, createBlock as z, openBlock as y, unref as p, withCtx as n, createVNode as v, mergeProps as D, createTextVNode as w } from "vue";
2
- import { _ as c } from "../../assets/modules/index-ClMWx3tg.js";
2
+ import { _ as c } from "../../assets/modules/index-BpsqYPCw.js";
3
3
  import { Modal as _, Space as L } from "ant-design-vue";
4
4
  import { ResStatus as k } from "@skyfox2000/fapi";
5
- import { a7 as T } from "../../assets/modules/upload-template-CM0O990W.js";
5
+ import { a7 as T } from "../../assets/modules/upload-template-BuaWOXY_.js";
6
6
  import "@skyfox2000/microbase";
7
7
  import E from "vue-m-message";
8
8
  import "async-validator";
9
9
  import "dayjs";
10
- import { A as N } from "../../assets/modules/file-upload-D11e2io7.js";
10
+ import { A as N } from "../../assets/modules/file-upload-CKMd0H11.js";
11
11
  import "vue-draggable-next";
12
- import { U as A } from "../../assets/modules/uploadList-DhkFSkqE.js";
12
+ import { U as A } from "../../assets/modules/uploadList-De6KfTAV.js";
13
13
  const K = /* @__PURE__ */ S({
14
14
  __name: "uploadForm",
15
15
  props: {
package/lib/webui.css CHANGED
@@ -1 +1 @@
1
- *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.visible{visibility:visible}.static{position:static}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.bottom-\[3px\]{bottom:3px}.left-0{left:0}.left-\[2px\]{left:2px}.left-\[85px\]{left:85px}.top-0{top:0}.top-\[-2px\]{top:-2px}.z-10{z-index:10}.z-\[1\]{z-index:1}.z-\[9999\]{z-index:9999}.\!m-0{margin:0!important}.m-\[10px\]{margin:10px}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-\[5px\]{margin-left:5px;margin-right:5px}.mx-\[6px\]{margin-left:6px;margin-right:6px}.mx-auto{margin-left:auto;margin-right:auto}.\!ml-\[10px\]{margin-left:10px!important}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-7{margin-bottom:1.75rem}.mb-\[-3px\]{margin-bottom:-3px}.mb-\[10px\]{margin-bottom:10px}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-5{margin-left:1.25rem}.ml-\[10px\]{margin-left:10px}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-\[10px\]{margin-right:10px}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-\[-2px\]{margin-top:-2px}.mt-\[3px\]{margin-top:3px}.mt-\[5px\]{margin-top:5px}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.\!h-4{height:1rem!important}.\!h-5{height:1.25rem!important}.h-10{height:2.5rem}.h-16{height:4rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-\[100px\]{height:100px}.h-\[12px\]{height:12px}.h-\[14px\]{height:14px}.h-\[15px\]{height:15px}.h-\[17px\]{height:17px}.h-\[18\.5px\]{height:18.5px}.h-\[18px\]{height:18px}.h-\[19px\]{height:19px}.h-\[240px\]{height:240px}.h-\[24px\]{height:24px}.h-\[30px\]{height:30px}.h-\[40px\]{height:40px}.h-\[500px\]{height:500px}.h-\[60px\]{height:60px}.h-\[calc\(100vh-100px\)\]{height:calc(100vh - 100px)}.h-\[calc\(100vh-40px\)\]{height:calc(100vh - 40px)}.h-\[calc\(100vh-80px\)\]{height:calc(100vh - 80px)}.h-\[calc\(100vh-81px\)\]{height:calc(100vh - 81px)}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[40px\]{max-height:40px}.\!min-h-\[calc\(100vh-100px\)\]{min-height:calc(100vh - 100px)!important}.min-h-\[32px\]{min-height:32px}.min-h-\[480px\]{min-height:480px}.min-h-full{min-height:100%}.\!w-4{width:1rem!important}.\!w-5{width:1.25rem!important}.\!w-\[46px\]{width:46px!important}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-16{width:4rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-\[100\%\]{width:100%}.w-\[12px\]{width:12px}.w-\[14px\]{width:14px}.w-\[15px\]{width:15px}.w-\[17px\]{width:17px}.w-\[18px\]{width:18px}.w-\[19px\]{width:19px}.w-\[22\%\]{width:22%}.w-\[248px\]{width:248px}.w-\[24px\]{width:24px}.w-\[3\%\]{width:3%}.w-\[33\%\]{width:33%}.w-\[46px\]{width:46px}.w-\[50\%\]{width:50%}.w-\[500px\]{width:500px}.w-\[58px\]{width:58px}.w-\[60px\]{width:60px}.w-\[64\%\]{width:64%}.w-\[80\%\]{width:80%}.w-\[80px\]{width:80px}.w-\[90\%\]{width:90%}.w-\[95\%\]{width:95%}.w-\[99\.3\%\]{width:99.3%}.w-full{width:100%}.min-w-\[100px\]{min-width:100px}.min-w-\[170px\]{min-width:170px}.min-w-\[430px\]{min-width:430px}.max-w-\[200px\]{max-width:200px}.max-w-\[248px\]{max-width:248px}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.scale-\[1\.1\]{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-nowrap{text-wrap:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-l-\[5px\]{border-top-left-radius:5px;border-bottom-left-radius:5px}.rounded-r-\[5px\]{border-top-right-radius:5px;border-bottom-right-radius:5px}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.\!border-red-300{--tw-border-opacity: 1 !important;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))!important}.border-\[\#b3e0ff\]{--tw-border-opacity: 1;border-color:rgb(179 224 255 / var(--tw-border-opacity, 1))}.border-\[\#ccc\]{--tw-border-opacity: 1;border-color:rgb(204 204 204 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.bg-\[\#ccc\]{--tw-bg-opacity: 1;background-color:rgb(204 204 204 / var(--tw-bg-opacity, 1))}.bg-\[\#e6f7ff\]{--tw-bg-opacity: 1;background-color:rgb(230 247 255 / var(--tw-bg-opacity, 1))}.bg-\[\#fcfcfc\]{--tw-bg-opacity: 1;background-color:rgb(252 252 252 / var(--tw-bg-opacity, 1))}.bg-\[rgba\(240\,240\,240\,0\.2\)\]{background-color:#f0f0f033}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-blue-300{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-opacity-50{--tw-bg-opacity: .5}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-0{padding:0!important}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-\[10px\]{padding:10px}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-\[10px\]{padding-left:10px;padding-right:10px}.px-\[5px\]{padding-left:5px;padding-right:5px}.px-\[8px\]{padding-left:8px;padding-right:8px}.py-0{padding-top:0;padding-bottom:0}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-\[2px\]{padding-top:2px;padding-bottom:2px}.py-\[4px\]{padding-top:4px;padding-bottom:4px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pl-5{padding-left:1.25rem}.pr-4{padding-right:1rem}.pr-5{padding-right:1.25rem}.pt-1{padding-top:.25rem}.pt-\[5px\]{padding-top:5px}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-\[\'Courier\'\]{font-family:Courier}.\!text-\[12px\]{font-size:12px!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.leading-\[2\.5\]{line-height:2.5}.leading-\[3\]{line-height:3}.\!text-red-400{--tw-text-opacity: 1 !important;color:rgb(248 113 113 / var(--tw-text-opacity, 1))!important}.text-\[\#555\]{--tw-text-opacity: 1;color:rgb(85 85 85 / var(--tw-text-opacity, 1))}.text-\[\#666\]{--tw-text-opacity: 1;color:rgb(102 102 102 / var(--tw-text-opacity, 1))}.text-\[\#888\]{--tw-text-opacity: 1;color:rgb(136 136 136 / var(--tw-text-opacity, 1))}.text-\[\#999\]{--tw-text-opacity: 1;color:rgb(153 153 153 / var(--tw-text-opacity, 1))}.text-\[\#ff4d4f\]{--tw-text-opacity: 1;color:rgb(255 77 79 / var(--tw-text-opacity, 1))}.text-\[\#ff4d4fcc\]{color:#ff4d4fcc}.text-\[rgba\(0\,0\,0\,0\.45\)\]{color:#00000073}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.line-through{text-decoration-line:line-through}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-30{opacity:.3}.shadow-\[0_-3px_6px_\#000\]{--tw-shadow: 0 -3px 6px #000;--tw-shadow-colored: 0 -3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_3px_0px_\#ff4d4f\]{--tw-shadow: 0 0 3px 0px #ff4d4f;--tw-shadow-colored: 0 0 3px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.disabled{opacity:.3;cursor:not-allowed;filter:grayscale(90%)}.last\:mb-0:last-child{margin-bottom:0}.hover\:z-10:hover{z-index:10}.hover\:border-\[\#8abeff\]:hover{--tw-border-opacity: 1;border-color:rgb(138 190 255 / var(--tw-border-opacity, 1))}.hover\:border-blue-500:hover{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.hover\:bg-\[\#b3e0ff\]:hover{--tw-bg-opacity: 1;background-color:rgb(179 224 255 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\:text-blue-400:hover{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.hover\:text-blue-700:hover{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.\[\&\>div\]\:ml-\[-1px\]>div{margin-left:-1px}.first\:\[\&\>div\]\:ml-0>div:first-child{margin-left:0}.re-icon-container[data-v-0146f00c]{position:relative;display:inline-flex;vertical-align:middle;justify-content:center;align-items:center;overflow:hidden}.re-icon.symbol[data-v-0146f00c]{position:relative;margin:5px 0;width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden}.re-icon.fontclass[data-v-0146f00c]{position:relative;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale}.re-icon[disabled][data-v-0146f00c]{pointer-events:none;cursor:not-allowed;color:#666}.clickable[data-v-0146f00c]{cursor:pointer}.rotate[data-v-0146f00c]{animation:rotate 2s linear infinite}.flip[data-v-0146f00c]{transform:scaleX(-1)}.ant-switch-small .ant-switch-inner-checked,.ant-switch-small .ant-switch-inner-unchecked{font-size:10px!important}.error[data-v-87722b44] .ant-select-selector{border-color:#ff4d4f80;box-shadow:0 0 3px #ff4d4f}[data-v-87722b44] input::-webkit-search-cancel-button,[data-v-87722b44] input::-webkit-clear-button{display:none!important}.error[data-v-51ddfce3] .ant-select-selector{border-color:#ef444480;box-shadow:0 0 3px #ff4d4f}.error[data-v-249ea772] input+span{border-color:#ff717190;box-shadow:0 0 3px #ff4d4f}.error[data-v-358b82ef] .ant-input-group-addon,.error[data-v-358b82ef] .ant-input-affix-wrapper{border-color:#ff4d4f80;box-shadow:0 0 3px #ff4d4f}.error[data-v-aa237552] input+span{border-color:#ff7171;box-shadow:0 0 3px #ff4d4f}.error[data-v-b33df95f] .ant-select-selector{border-color:#ff4d4f80;box-shadow:0 0 3px #ff4d4f}.error[data-v-71d50074] .ant-select-selector{border-color:#ef444480;box-shadow:0 0 3px #ff4d4f}.error[data-v-26d707cc]{border-color:#ff4d4f80;box-shadow:0 0 3px #ff4d4f}.error-text[data-v-26d707cc]{color:#ff4d4f!important}.image-item[data-v-26d707cc]{transition:all .3s}.error[data-v-7ba0982f]{border-color:#ff4d4f80;box-shadow:0 0 3px #ff4d4f}.error-text[data-v-7ba0982f]{color:#ff4d4f!important}body{margin:0}.x-spreadsheet{font-size:13px;line-height:normal;-webkit-user-select:none;user-select:none;-moz-user-select:none;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;box-sizing:content-box;background:#fff;-webkit-font-smoothing:antialiased}.x-spreadsheet textarea{font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif}.x-spreadsheet-sheet{position:relative;overflow:hidden}.x-spreadsheet-table{vertical-align:bottom}.x-spreadsheet-tooltip{font-family:inherit;position:absolute;padding:5px 10px;color:#fff;border-radius:1px;background:#000;font-size:12px;z-index:201}.x-spreadsheet-tooltip:before{pointer-events:none;position:absolute;left:calc(50% - 4px);top:-4px;content:"";width:8px;height:8px;background:inherit;transform:rotate(45deg);z-index:1;box-shadow:1px 1px 3px -1px #0000004d}.x-spreadsheet-color-palette{padding:5px}.x-spreadsheet-color-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:2;background:#fff}.x-spreadsheet-color-palette table td{margin:0;cursor:pointer;border:1px solid transparent}.x-spreadsheet-color-palette table td:hover{border-color:#ddd}.x-spreadsheet-color-palette table td .x-spreadsheet-color-palette-cell{width:16px;height:16px}.x-spreadsheet-border-palette{padding:6px}.x-spreadsheet-border-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:0;background:#fff;table-layout:fixed}.x-spreadsheet-border-palette table td{margin:0}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left{border-right:1px solid #eee;padding-right:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell{width:30px;height:30px;cursor:pointer;text-align:center}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell:hover{background-color:#eee}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right{padding-left:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right .x-spreadsheet-line-type{position:relative;left:0;top:-3px}.x-spreadsheet-dropdown{position:relative}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-content{position:absolute;z-index:200;background:#fff;box-shadow:1px 2px 5px 2px #33333326}.x-spreadsheet-dropdown.bottom-left .x-spreadsheet-dropdown-content{top:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.bottom-right .x-spreadsheet-dropdown-content{top:calc(100% + 5px);right:0}.x-spreadsheet-dropdown.top-left .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.top-right .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);right:0}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-title{padding:0 5px;display:inline-block}.x-spreadsheet-resizer{position:absolute;z-index:11}.x-spreadsheet-resizer .x-spreadsheet-resizer-hover{background-color:#4b89ff40}.x-spreadsheet-resizer .x-spreadsheet-resizer-line{position:absolute}.x-spreadsheet-resizer.horizontal{cursor:row-resize}.x-spreadsheet-resizer.horizontal .x-spreadsheet-resizer-line{border-bottom:2px dashed #4b89ff;left:0;bottom:0}.x-spreadsheet-resizer.vertical{cursor:col-resize}.x-spreadsheet-resizer.vertical .x-spreadsheet-resizer-line{border-right:2px dashed #4b89ff;top:0;right:0}.x-spreadsheet-scrollbar{position:absolute;bottom:0;right:0;background-color:#f4f5f8;opacity:.9;z-index:12}.x-spreadsheet-scrollbar.horizontal{right:15px;overflow-x:scroll;overflow-y:hidden}.x-spreadsheet-scrollbar.horizontal>div{height:1px;background:#ddd}.x-spreadsheet-scrollbar.vertical{bottom:15px;overflow-x:hidden;overflow-y:scroll}.x-spreadsheet-scrollbar.vertical>div{width:1px;background:#ddd}.x-spreadsheet-overlayer{position:absolute;left:0;top:0;z-index:10}.x-spreadsheet-overlayer .x-spreadsheet-overlayer-content{position:absolute;overflow:hidden;pointer-events:none;width:100%;height:100%}.x-spreadsheet-editor,.x-spreadsheet-selector{box-sizing:content-box;position:absolute;overflow:hidden;pointer-events:none;top:0;left:0;width:100%;height:100%}.x-spreadsheet-selector .hide-input{position:absolute;z-index:0}.x-spreadsheet-selector .hide-input input{padding:0;width:0;border:none!important}.x-spreadsheet-selector .x-spreadsheet-selector-area{position:absolute;border:2px solid #4b89ff;background:#4b89ff1a;z-index:5}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard,.x-spreadsheet-selector .x-spreadsheet-selector-autofill{position:absolute;background:transparent;z-index:100}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard{border:2px dashed #4b89ff}.x-spreadsheet-selector .x-spreadsheet-selector-autofill{border:1px dashed rgba(0,0,0,.45)}.x-spreadsheet-selector .x-spreadsheet-selector-corner{pointer-events:auto;position:absolute;cursor:crosshair;font-size:0;height:5px;width:5px;right:-5px;bottom:-5px;border:2px solid #ffffff;background:#4b89ff}.x-spreadsheet-editor{z-index:20}.x-spreadsheet-editor .x-spreadsheet-editor-area{position:absolute;text-align:left;border:2px solid #4b89ff;line-height:0;z-index:100;pointer-events:auto}.x-spreadsheet-editor .x-spreadsheet-editor-area textarea{box-sizing:content-box;border:none;padding:0 3px;outline:none;resize:none;text-align:start;overflow-y:hidden;font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif;color:inherit;white-space:normal;word-wrap:break-word;line-height:22px;margin:0}.x-spreadsheet-editor .x-spreadsheet-editor-area .textline{overflow:hidden;visibility:hidden;position:fixed;top:0;left:0}.x-spreadsheet-item{-webkit-user-select:none;-moz-user-select:none;user-select:none;background:0;border:1px solid transparent;outline:none;height:26px;color:#000000e6;line-height:26px;list-style:none;padding:2px 10px;cursor:default;text-align:left;overflow:hidden}.x-spreadsheet-item.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-item:hover,.x-spreadsheet-item.active{background:#0000000d}.x-spreadsheet-item.divider{height:0;padding:0;margin:5px 0;border:none;border-bottom:1px solid rgba(0,0,0,.1)}.x-spreadsheet-item .label{float:right;opacity:.65;font-size:1em}.x-spreadsheet-item.state,.x-spreadsheet-header.state{padding-left:35px!important;position:relative}.x-spreadsheet-item.state:before,.x-spreadsheet-header.state:before{content:"";position:absolute;width:10px;height:10px;left:12px;top:calc(50% - 5px);background:#00000014;border-radius:2px}.x-spreadsheet-item.state.checked:before,.x-spreadsheet-header.state.checked:before{background:#4b89ff}.x-spreadsheet-checkbox{position:relative;display:inline-block;backface-visibility:hidden;outline:0;vertical-align:baseline;font-style:normal;font-size:1rem;line-height:1em}.x-spreadsheet-checkbox>input{position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:-1}.x-spreadsheet-suggest,.x-spreadsheet-contextmenu,.x-spreadsheet-sort-filter{position:absolute;box-shadow:1px 2px 5px 2px #33333326;background:#fff;z-index:100;width:260px;pointer-events:auto;overflow:auto}.x-spreadsheet-suggest{width:200px}.x-spreadsheet-filter{border:1px solid #e9e9e9;font-size:12px;margin:10px}.x-spreadsheet-filter .x-spreadsheet-header{padding:.5em .75em;background:#f8f8f9;border-bottom:1px solid #e9e9e9;border-left:1px solid transparent}.x-spreadsheet-filter .x-spreadsheet-body{height:200px;overflow-y:auto}.x-spreadsheet-filter .x-spreadsheet-body .x-spreadsheet-item{height:20px;line-height:20px}.x-spreadsheet-sort-filter .x-spreadsheet-buttons{margin:10px}.x-spreadsheet-bottombar{height:40px;padding:0 30px;text-align:left;background:#f5f6f7;display:flex;position:relative;border-top:1px solid #e0e2e4}.x-spreadsheet-bottombar .x-spreadsheet-menu>li{line-height:40px;height:40px;padding-top:0;padding-bottom:0;vertical-align:middle;border-right:1px solid #e8eaed}.x-spreadsheet-menu{display:flex;overflow-x:auto;list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.x-spreadsheet-menu>li{float:left;line-height:1.25em;padding:.785em 1em;margin:0;vertical-align:middle;text-align:left;font-weight:400;color:#80868b;white-space:nowrap;cursor:pointer;transition:all .3s;font-weight:700}.x-spreadsheet-menu>li.active{background-color:#fff;color:#000000a6}.x-spreadsheet-menu>li .x-spreadsheet-dropdown{display:inline-block}.x-spreadsheet-print{position:absolute;left:0;top:0;z-index:100;width:100%;height:100%;display:flex;flex-direction:column}.x-spreadsheet-print-bar{background:#424242;height:60px;line-height:60px;padding:0 30px}.x-spreadsheet-print-bar .-title{color:#fff;font-weight:700;font-size:1.2em;float:left}.x-spreadsheet-print-bar .-right{float:right;margin-top:12px}.x-spreadsheet-print-content{display:flex;flex:auto;flex-direction:row;background:#d0d0d0;height:calc(100% - 60px)}.x-spreadsheet-print-content .-sider{flex:0 0 300px;width:300px;border-left:2px solid #ccc;background:#fff}.x-spreadsheet-print-content .-content{flex:auto;overflow-x:auto;overflow-y:scroll;height:100%}.x-spreadsheet-canvas-card-wraper{margin:40px 20px}.x-spreadsheet-canvas-card{background:#fff;margin:auto;page-break-before:auto;page-break-after:always;box-shadow:0 8px 10px 1px #00000024,0 3px 14px 3px #0000001f,0 4px 5px #0003}.x-spreadsheet-calendar{color:#000000a6;background:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none}.x-spreadsheet-calendar .calendar-header{font-weight:700;line-height:30px;text-align:center;width:100%;float:left;background:#f9fafb}.x-spreadsheet-calendar .calendar-header .calendar-header-left{padding-left:5px;float:left}.x-spreadsheet-calendar .calendar-header .calendar-header-right{float:right}.x-spreadsheet-calendar .calendar-header .calendar-header-right a{padding:3px 0;margin-right:2px;border-radius:2px}.x-spreadsheet-calendar .calendar-header .calendar-header-right a:hover{background:#00000014}.x-spreadsheet-calendar .calendar-body{border-collapse:collapse;border-spacing:0}.x-spreadsheet-calendar .calendar-body th,.x-spreadsheet-calendar .calendar-body td{width:14.28571429%;min-width:32px;text-align:center;font-weight:700;line-height:30px;padding:0}.x-spreadsheet-calendar .calendar-body td>.cell:hover{background:#ecf6fd}.x-spreadsheet-calendar .calendar-body td>.cell.active,.x-spreadsheet-calendar .calendar-body td>.cell.active:hover{background:#ecf6fd;color:#2185d0}.x-spreadsheet-calendar .calendar-body td>.cell.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-datepicker{box-shadow:2px 2px 5px #0003;position:absolute;left:0;top:calc(100% + 5px);z-index:10;width:auto}.x-spreadsheet-buttons{display:flex;justify-content:flex-end}.x-spreadsheet-buttons .x-spreadsheet-button{margin-left:8px}.x-spreadsheet-button{display:inline-block;border-radius:3px;line-height:1em;min-height:1em;white-space:nowrap;text-align:center;cursor:pointer;font-size:1em;font-weight:700;padding:.75em 1em;color:#0009;background:#e0e1e2;text-decoration:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;outline:none;vertical-align:baseline;zoom:1;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .1s linear}.x-spreadsheet-button.active,.x-spreadsheet-button:hover{background-color:#c0c1c2;color:#000c}.x-spreadsheet-button.primary{color:#fff;background-color:#2185d0}.x-spreadsheet-button.primary:hover,.x-spreadsheet-button.primary.active{color:#fff;background-color:#1678c2}.x-spreadsheet-form-input{font-size:1em;position:relative;font-weight:400;display:inline-flex;color:#000000de}.x-spreadsheet-form-input input{z-index:1;margin:0;max-width:100%;flex:1 0 auto;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:30px;height:30px;padding:0 8px;background:#fff;border:1px solid #e9e9e9;border-radius:3px;transition:box-shadow .1s ease,border-color .1s ease;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-input input:focus{border-color:#4b89ff;box-shadow:inset 0 1px 2px #4b89ff33}.x-spreadsheet-form-select{position:relative;display:inline-block;background:#fff;border:1px solid #e9e9e9;border-radius:2px;cursor:pointer;color:#000000de;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-select .input-text{text-overflow:ellipsis;white-space:nowrap;min-width:60px;width:auto;height:30px;line-height:30px;padding:0 8px}.x-spreadsheet-form-fields{display:flex;flex-direction:row;flex-wrap:wrap}.x-spreadsheet-form-fields .x-spreadsheet-form-field{flex:0 1 auto}.x-spreadsheet-form-fields .x-spreadsheet-form-field .label{display:inline-block;margin:0 10px 0 0}.x-spreadsheet-form-field{display:block;vertical-align:middle;margin-left:10px;margin-bottom:10px}.x-spreadsheet-form-field:first-child{margin-left:0}.x-spreadsheet-form-field.error .x-spreadsheet-form-select,.x-spreadsheet-form-field.error input{border-color:#f04134}.x-spreadsheet-form-field .tip{color:#f04134;font-size:.9em}.x-spreadsheet-dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:#0009;opacity:0;animation-fill-mode:both;animation-duration:.5s;transition:background-color .5s linear;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1000}.x-spreadsheet-dimmer.active{display:block;opacity:1}form fieldset{border:none}form fieldset label{display:block;margin-bottom:.5em;font-size:1em;color:#666}form fieldset select{font-size:1.1em;width:100%;background-color:#fff;border:none;border-bottom:2px solid #ddd;padding:.5em .85em;border-radius:2px}.x-spreadsheet-modal,.x-spreadsheet-toast{font-size:13px;position:fixed;z-index:1001;text-align:left;line-height:1.25em;min-width:360px;color:#000000de;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;border-radius:4px;border:1px solid rgba(0,0,0,.1);background-color:#fff;background-clip:padding-box;box-shadow:#0003 0 2px 8px}.x-spreadsheet-toast{background-color:#ffffffd9}.x-spreadsheet-modal-header,.x-spreadsheet-toast-header{font-weight:600;background-clip:padding-box;background-color:#ffffffd9;border-bottom:1px solid rgba(0,0,0,.05);border-radius:4px 4px 0 0}.x-spreadsheet-toast-header{color:#f2711c}.x-spreadsheet-modal-header{border-bottom:1px solid #e0e2e4;background:#00000014;font-size:1.0785em}.x-spreadsheet-modal-header,.x-spreadsheet-modal-content,.x-spreadsheet-toast-header,.x-spreadsheet-toast-content{padding:.75em 1em}.x-spreadsheet-menu li:first-child{display:none}.vue-office-excel{height:100%}.modal .ant-modal-content{padding:16px}.full-modal .ant-modal{width:100%!important;max-width:100%;top:0;padding-bottom:0;margin:0}.full-modal .ant-modal-content{display:flex;flex-direction:column;height:100vh}.full-modal .ant-modal-body{flex:1}
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.visible{visibility:visible}.static{position:static}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.bottom-\[3px\]{bottom:3px}.left-0{left:0}.left-\[2px\]{left:2px}.left-\[85px\]{left:85px}.top-0{top:0}.top-\[-2px\]{top:-2px}.z-10{z-index:10}.z-\[1\]{z-index:1}.z-\[9999\]{z-index:9999}.\!m-0{margin:0!important}.m-\[10px\]{margin:10px}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-\[5px\]{margin-left:5px;margin-right:5px}.mx-\[6px\]{margin-left:6px;margin-right:6px}.mx-\[8px\]{margin-left:8px;margin-right:8px}.mx-auto{margin-left:auto;margin-right:auto}.\!ml-\[10px\]{margin-left:10px!important}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-7{margin-bottom:1.75rem}.mb-\[-3px\]{margin-bottom:-3px}.mb-\[10px\]{margin-bottom:10px}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-5{margin-left:1.25rem}.ml-\[10px\]{margin-left:10px}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-\[10px\]{margin-right:10px}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-\[-2px\]{margin-top:-2px}.mt-\[3px\]{margin-top:3px}.mt-\[5px\]{margin-top:5px}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.\!h-4{height:1rem!important}.\!h-5{height:1.25rem!important}.h-10{height:2.5rem}.h-16{height:4rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-\[100px\]{height:100px}.h-\[12px\]{height:12px}.h-\[14px\]{height:14px}.h-\[15px\]{height:15px}.h-\[16px\]{height:16px}.h-\[17px\]{height:17px}.h-\[18\.5px\]{height:18.5px}.h-\[18px\]{height:18px}.h-\[19px\]{height:19px}.h-\[240px\]{height:240px}.h-\[24px\]{height:24px}.h-\[30px\]{height:30px}.h-\[40px\]{height:40px}.h-\[500px\]{height:500px}.h-\[60px\]{height:60px}.h-\[calc\(100vh-100px\)\]{height:calc(100vh - 100px)}.h-\[calc\(100vh-40px\)\]{height:calc(100vh - 40px)}.h-\[calc\(100vh-80px\)\]{height:calc(100vh - 80px)}.h-\[calc\(100vh-81px\)\]{height:calc(100vh - 81px)}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[40px\]{max-height:40px}.\!min-h-\[calc\(100vh-100px\)\]{min-height:calc(100vh - 100px)!important}.min-h-\[32px\]{min-height:32px}.min-h-\[480px\]{min-height:480px}.min-h-full{min-height:100%}.\!w-4{width:1rem!important}.\!w-5{width:1.25rem!important}.\!w-\[46px\]{width:46px!important}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-16{width:4rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-\[100\%\]{width:100%}.w-\[12px\]{width:12px}.w-\[14px\]{width:14px}.w-\[15px\]{width:15px}.w-\[17px\]{width:17px}.w-\[18px\]{width:18px}.w-\[19px\]{width:19px}.w-\[1px\]{width:1px}.w-\[22\%\]{width:22%}.w-\[248px\]{width:248px}.w-\[24px\]{width:24px}.w-\[3\%\]{width:3%}.w-\[33\%\]{width:33%}.w-\[46px\]{width:46px}.w-\[50\%\]{width:50%}.w-\[500px\]{width:500px}.w-\[58px\]{width:58px}.w-\[60px\]{width:60px}.w-\[64\%\]{width:64%}.w-\[80\%\]{width:80%}.w-\[80px\]{width:80px}.w-\[90\%\]{width:90%}.w-\[95\%\]{width:95%}.w-\[99\.3\%\]{width:99.3%}.w-full{width:100%}.min-w-\[100px\]{min-width:100px}.min-w-\[170px\]{min-width:170px}.min-w-\[430px\]{min-width:430px}.max-w-\[200px\]{max-width:200px}.max-w-\[248px\]{max-width:248px}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.scale-\[1\.1\]{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-nowrap{text-wrap:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-l-\[5px\]{border-top-left-radius:5px;border-bottom-left-radius:5px}.rounded-r-\[5px\]{border-top-right-radius:5px;border-bottom-right-radius:5px}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.\!border-red-300{--tw-border-opacity: 1 !important;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))!important}.border-\[\#b3e0ff\]{--tw-border-opacity: 1;border-color:rgb(179 224 255 / var(--tw-border-opacity, 1))}.border-\[\#ccc\]{--tw-border-opacity: 1;border-color:rgb(204 204 204 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.bg-\[\#ccc\]{--tw-bg-opacity: 1;background-color:rgb(204 204 204 / var(--tw-bg-opacity, 1))}.bg-\[\#d9d9d9\]{--tw-bg-opacity: 1;background-color:rgb(217 217 217 / var(--tw-bg-opacity, 1))}.bg-\[\#e6f7ff\]{--tw-bg-opacity: 1;background-color:rgb(230 247 255 / var(--tw-bg-opacity, 1))}.bg-\[\#fcfcfc\]{--tw-bg-opacity: 1;background-color:rgb(252 252 252 / var(--tw-bg-opacity, 1))}.bg-\[rgba\(240\,240\,240\,0\.2\)\]{background-color:#f0f0f033}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-blue-300{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-opacity-50{--tw-bg-opacity: .5}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-0{padding:0!important}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-\[10px\]{padding:10px}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-\[10px\]{padding-left:10px;padding-right:10px}.px-\[5px\]{padding-left:5px;padding-right:5px}.px-\[8px\]{padding-left:8px;padding-right:8px}.py-0{padding-top:0;padding-bottom:0}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-\[2px\]{padding-top:2px;padding-bottom:2px}.py-\[4px\]{padding-top:4px;padding-bottom:4px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pl-5{padding-left:1.25rem}.pr-4{padding-right:1rem}.pr-5{padding-right:1.25rem}.pt-1{padding-top:.25rem}.pt-\[5px\]{padding-top:5px}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-\[\'Courier\'\]{font-family:Courier}.\!text-\[12px\]{font-size:12px!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.leading-\[2\.5\]{line-height:2.5}.leading-\[3\]{line-height:3}.\!text-red-400{--tw-text-opacity: 1 !important;color:rgb(248 113 113 / var(--tw-text-opacity, 1))!important}.text-\[\#555\]{--tw-text-opacity: 1;color:rgb(85 85 85 / var(--tw-text-opacity, 1))}.text-\[\#666\]{--tw-text-opacity: 1;color:rgb(102 102 102 / var(--tw-text-opacity, 1))}.text-\[\#888\]{--tw-text-opacity: 1;color:rgb(136 136 136 / var(--tw-text-opacity, 1))}.text-\[\#999\]{--tw-text-opacity: 1;color:rgb(153 153 153 / var(--tw-text-opacity, 1))}.text-\[\#ff4d4f\]{--tw-text-opacity: 1;color:rgb(255 77 79 / var(--tw-text-opacity, 1))}.text-\[\#ff4d4fcc\]{color:#ff4d4fcc}.text-\[rgba\(0\,0\,0\,0\.45\)\]{color:#00000073}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.line-through{text-decoration-line:line-through}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-30{opacity:.3}.shadow-\[0_-3px_6px_\#000\]{--tw-shadow: 0 -3px 6px #000;--tw-shadow-colored: 0 -3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_3px_0px_\#ff4d4f\]{--tw-shadow: 0 0 3px 0px #ff4d4f;--tw-shadow-colored: 0 0 3px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.disabled{opacity:.3;cursor:not-allowed;filter:grayscale(90%)}.last\:mb-0:last-child{margin-bottom:0}.hover\:z-10:hover{z-index:10}.hover\:border-\[\#8abeff\]:hover{--tw-border-opacity: 1;border-color:rgb(138 190 255 / var(--tw-border-opacity, 1))}.hover\:border-blue-500:hover{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.hover\:bg-\[\#b3e0ff\]:hover{--tw-bg-opacity: 1;background-color:rgb(179 224 255 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\:text-blue-400:hover{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.hover\:text-blue-700:hover{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.\[\&\>button\]\:ml-\[-1px\]>button{margin-left:-1px}.first\:\[\&\>button\]\:ml-0>button:first-child{margin-left:0}.\[\&\>div\]\:ml-\[-1px\]>div{margin-left:-1px}.first\:\[\&\>div\]\:ml-0>div:first-child{margin-left:0}.re-icon-container[data-v-0146f00c]{position:relative;display:inline-flex;vertical-align:middle;justify-content:center;align-items:center;overflow:hidden}.re-icon.symbol[data-v-0146f00c]{position:relative;margin:5px 0;width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden}.re-icon.fontclass[data-v-0146f00c]{position:relative;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale}.re-icon[disabled][data-v-0146f00c]{pointer-events:none;cursor:not-allowed;color:#666}.clickable[data-v-0146f00c]{cursor:pointer}.rotate[data-v-0146f00c]{animation:rotate 2s linear infinite}.flip[data-v-0146f00c]{transform:scaleX(-1)}.ant-switch-small .ant-switch-inner-checked,.ant-switch-small .ant-switch-inner-unchecked{font-size:10px!important}.error[data-v-87722b44] .ant-select-selector{border-color:#ff4d4f80;box-shadow:0 0 3px #ff4d4f}[data-v-87722b44] input::-webkit-search-cancel-button,[data-v-87722b44] input::-webkit-clear-button{display:none!important}.error[data-v-51ddfce3] .ant-select-selector{border-color:#ef444480;box-shadow:0 0 3px #ff4d4f}.error[data-v-249ea772] input+span{border-color:#ff717190;box-shadow:0 0 3px #ff4d4f}.error[data-v-358b82ef] .ant-input-group-addon,.error[data-v-358b82ef] .ant-input-affix-wrapper{border-color:#ff4d4f80;box-shadow:0 0 3px #ff4d4f}.error[data-v-aa237552] input+span{border-color:#ff7171;box-shadow:0 0 3px #ff4d4f}.error[data-v-b33df95f] .ant-select-selector{border-color:#ff4d4f80;box-shadow:0 0 3px #ff4d4f}.error[data-v-71d50074] .ant-select-selector{border-color:#ef444480;box-shadow:0 0 3px #ff4d4f}.error[data-v-26d707cc]{border-color:#ff4d4f80;box-shadow:0 0 3px #ff4d4f}.error-text[data-v-26d707cc]{color:#ff4d4f!important}.image-item[data-v-26d707cc]{transition:all .3s}.error[data-v-7ba0982f]{border-color:#ff4d4f80;box-shadow:0 0 3px #ff4d4f}.error-text[data-v-7ba0982f]{color:#ff4d4f!important}body{margin:0}.x-spreadsheet{font-size:13px;line-height:normal;-webkit-user-select:none;user-select:none;-moz-user-select:none;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;box-sizing:content-box;background:#fff;-webkit-font-smoothing:antialiased}.x-spreadsheet textarea{font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif}.x-spreadsheet-sheet{position:relative;overflow:hidden}.x-spreadsheet-table{vertical-align:bottom}.x-spreadsheet-tooltip{font-family:inherit;position:absolute;padding:5px 10px;color:#fff;border-radius:1px;background:#000;font-size:12px;z-index:201}.x-spreadsheet-tooltip:before{pointer-events:none;position:absolute;left:calc(50% - 4px);top:-4px;content:"";width:8px;height:8px;background:inherit;transform:rotate(45deg);z-index:1;box-shadow:1px 1px 3px -1px #0000004d}.x-spreadsheet-color-palette{padding:5px}.x-spreadsheet-color-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:2;background:#fff}.x-spreadsheet-color-palette table td{margin:0;cursor:pointer;border:1px solid transparent}.x-spreadsheet-color-palette table td:hover{border-color:#ddd}.x-spreadsheet-color-palette table td .x-spreadsheet-color-palette-cell{width:16px;height:16px}.x-spreadsheet-border-palette{padding:6px}.x-spreadsheet-border-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:0;background:#fff;table-layout:fixed}.x-spreadsheet-border-palette table td{margin:0}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left{border-right:1px solid #eee;padding-right:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell{width:30px;height:30px;cursor:pointer;text-align:center}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell:hover{background-color:#eee}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right{padding-left:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right .x-spreadsheet-line-type{position:relative;left:0;top:-3px}.x-spreadsheet-dropdown{position:relative}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-content{position:absolute;z-index:200;background:#fff;box-shadow:1px 2px 5px 2px #33333326}.x-spreadsheet-dropdown.bottom-left .x-spreadsheet-dropdown-content{top:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.bottom-right .x-spreadsheet-dropdown-content{top:calc(100% + 5px);right:0}.x-spreadsheet-dropdown.top-left .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.top-right .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);right:0}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-title{padding:0 5px;display:inline-block}.x-spreadsheet-resizer{position:absolute;z-index:11}.x-spreadsheet-resizer .x-spreadsheet-resizer-hover{background-color:#4b89ff40}.x-spreadsheet-resizer .x-spreadsheet-resizer-line{position:absolute}.x-spreadsheet-resizer.horizontal{cursor:row-resize}.x-spreadsheet-resizer.horizontal .x-spreadsheet-resizer-line{border-bottom:2px dashed #4b89ff;left:0;bottom:0}.x-spreadsheet-resizer.vertical{cursor:col-resize}.x-spreadsheet-resizer.vertical .x-spreadsheet-resizer-line{border-right:2px dashed #4b89ff;top:0;right:0}.x-spreadsheet-scrollbar{position:absolute;bottom:0;right:0;background-color:#f4f5f8;opacity:.9;z-index:12}.x-spreadsheet-scrollbar.horizontal{right:15px;overflow-x:scroll;overflow-y:hidden}.x-spreadsheet-scrollbar.horizontal>div{height:1px;background:#ddd}.x-spreadsheet-scrollbar.vertical{bottom:15px;overflow-x:hidden;overflow-y:scroll}.x-spreadsheet-scrollbar.vertical>div{width:1px;background:#ddd}.x-spreadsheet-overlayer{position:absolute;left:0;top:0;z-index:10}.x-spreadsheet-overlayer .x-spreadsheet-overlayer-content{position:absolute;overflow:hidden;pointer-events:none;width:100%;height:100%}.x-spreadsheet-editor,.x-spreadsheet-selector{box-sizing:content-box;position:absolute;overflow:hidden;pointer-events:none;top:0;left:0;width:100%;height:100%}.x-spreadsheet-selector .hide-input{position:absolute;z-index:0}.x-spreadsheet-selector .hide-input input{padding:0;width:0;border:none!important}.x-spreadsheet-selector .x-spreadsheet-selector-area{position:absolute;border:2px solid #4b89ff;background:#4b89ff1a;z-index:5}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard,.x-spreadsheet-selector .x-spreadsheet-selector-autofill{position:absolute;background:transparent;z-index:100}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard{border:2px dashed #4b89ff}.x-spreadsheet-selector .x-spreadsheet-selector-autofill{border:1px dashed rgba(0,0,0,.45)}.x-spreadsheet-selector .x-spreadsheet-selector-corner{pointer-events:auto;position:absolute;cursor:crosshair;font-size:0;height:5px;width:5px;right:-5px;bottom:-5px;border:2px solid #ffffff;background:#4b89ff}.x-spreadsheet-editor{z-index:20}.x-spreadsheet-editor .x-spreadsheet-editor-area{position:absolute;text-align:left;border:2px solid #4b89ff;line-height:0;z-index:100;pointer-events:auto}.x-spreadsheet-editor .x-spreadsheet-editor-area textarea{box-sizing:content-box;border:none;padding:0 3px;outline:none;resize:none;text-align:start;overflow-y:hidden;font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif;color:inherit;white-space:normal;word-wrap:break-word;line-height:22px;margin:0}.x-spreadsheet-editor .x-spreadsheet-editor-area .textline{overflow:hidden;visibility:hidden;position:fixed;top:0;left:0}.x-spreadsheet-item{-webkit-user-select:none;-moz-user-select:none;user-select:none;background:0;border:1px solid transparent;outline:none;height:26px;color:#000000e6;line-height:26px;list-style:none;padding:2px 10px;cursor:default;text-align:left;overflow:hidden}.x-spreadsheet-item.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-item:hover,.x-spreadsheet-item.active{background:#0000000d}.x-spreadsheet-item.divider{height:0;padding:0;margin:5px 0;border:none;border-bottom:1px solid rgba(0,0,0,.1)}.x-spreadsheet-item .label{float:right;opacity:.65;font-size:1em}.x-spreadsheet-item.state,.x-spreadsheet-header.state{padding-left:35px!important;position:relative}.x-spreadsheet-item.state:before,.x-spreadsheet-header.state:before{content:"";position:absolute;width:10px;height:10px;left:12px;top:calc(50% - 5px);background:#00000014;border-radius:2px}.x-spreadsheet-item.state.checked:before,.x-spreadsheet-header.state.checked:before{background:#4b89ff}.x-spreadsheet-checkbox{position:relative;display:inline-block;backface-visibility:hidden;outline:0;vertical-align:baseline;font-style:normal;font-size:1rem;line-height:1em}.x-spreadsheet-checkbox>input{position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:-1}.x-spreadsheet-suggest,.x-spreadsheet-contextmenu,.x-spreadsheet-sort-filter{position:absolute;box-shadow:1px 2px 5px 2px #33333326;background:#fff;z-index:100;width:260px;pointer-events:auto;overflow:auto}.x-spreadsheet-suggest{width:200px}.x-spreadsheet-filter{border:1px solid #e9e9e9;font-size:12px;margin:10px}.x-spreadsheet-filter .x-spreadsheet-header{padding:.5em .75em;background:#f8f8f9;border-bottom:1px solid #e9e9e9;border-left:1px solid transparent}.x-spreadsheet-filter .x-spreadsheet-body{height:200px;overflow-y:auto}.x-spreadsheet-filter .x-spreadsheet-body .x-spreadsheet-item{height:20px;line-height:20px}.x-spreadsheet-sort-filter .x-spreadsheet-buttons{margin:10px}.x-spreadsheet-bottombar{height:40px;padding:0 30px;text-align:left;background:#f5f6f7;display:flex;position:relative;border-top:1px solid #e0e2e4}.x-spreadsheet-bottombar .x-spreadsheet-menu>li{line-height:40px;height:40px;padding-top:0;padding-bottom:0;vertical-align:middle;border-right:1px solid #e8eaed}.x-spreadsheet-menu{display:flex;overflow-x:auto;list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.x-spreadsheet-menu>li{float:left;line-height:1.25em;padding:.785em 1em;margin:0;vertical-align:middle;text-align:left;font-weight:400;color:#80868b;white-space:nowrap;cursor:pointer;transition:all .3s;font-weight:700}.x-spreadsheet-menu>li.active{background-color:#fff;color:#000000a6}.x-spreadsheet-menu>li .x-spreadsheet-dropdown{display:inline-block}.x-spreadsheet-print{position:absolute;left:0;top:0;z-index:100;width:100%;height:100%;display:flex;flex-direction:column}.x-spreadsheet-print-bar{background:#424242;height:60px;line-height:60px;padding:0 30px}.x-spreadsheet-print-bar .-title{color:#fff;font-weight:700;font-size:1.2em;float:left}.x-spreadsheet-print-bar .-right{float:right;margin-top:12px}.x-spreadsheet-print-content{display:flex;flex:auto;flex-direction:row;background:#d0d0d0;height:calc(100% - 60px)}.x-spreadsheet-print-content .-sider{flex:0 0 300px;width:300px;border-left:2px solid #ccc;background:#fff}.x-spreadsheet-print-content .-content{flex:auto;overflow-x:auto;overflow-y:scroll;height:100%}.x-spreadsheet-canvas-card-wraper{margin:40px 20px}.x-spreadsheet-canvas-card{background:#fff;margin:auto;page-break-before:auto;page-break-after:always;box-shadow:0 8px 10px 1px #00000024,0 3px 14px 3px #0000001f,0 4px 5px #0003}.x-spreadsheet-calendar{color:#000000a6;background:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none}.x-spreadsheet-calendar .calendar-header{font-weight:700;line-height:30px;text-align:center;width:100%;float:left;background:#f9fafb}.x-spreadsheet-calendar .calendar-header .calendar-header-left{padding-left:5px;float:left}.x-spreadsheet-calendar .calendar-header .calendar-header-right{float:right}.x-spreadsheet-calendar .calendar-header .calendar-header-right a{padding:3px 0;margin-right:2px;border-radius:2px}.x-spreadsheet-calendar .calendar-header .calendar-header-right a:hover{background:#00000014}.x-spreadsheet-calendar .calendar-body{border-collapse:collapse;border-spacing:0}.x-spreadsheet-calendar .calendar-body th,.x-spreadsheet-calendar .calendar-body td{width:14.28571429%;min-width:32px;text-align:center;font-weight:700;line-height:30px;padding:0}.x-spreadsheet-calendar .calendar-body td>.cell:hover{background:#ecf6fd}.x-spreadsheet-calendar .calendar-body td>.cell.active,.x-spreadsheet-calendar .calendar-body td>.cell.active:hover{background:#ecf6fd;color:#2185d0}.x-spreadsheet-calendar .calendar-body td>.cell.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-datepicker{box-shadow:2px 2px 5px #0003;position:absolute;left:0;top:calc(100% + 5px);z-index:10;width:auto}.x-spreadsheet-buttons{display:flex;justify-content:flex-end}.x-spreadsheet-buttons .x-spreadsheet-button{margin-left:8px}.x-spreadsheet-button{display:inline-block;border-radius:3px;line-height:1em;min-height:1em;white-space:nowrap;text-align:center;cursor:pointer;font-size:1em;font-weight:700;padding:.75em 1em;color:#0009;background:#e0e1e2;text-decoration:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;outline:none;vertical-align:baseline;zoom:1;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .1s linear}.x-spreadsheet-button.active,.x-spreadsheet-button:hover{background-color:#c0c1c2;color:#000c}.x-spreadsheet-button.primary{color:#fff;background-color:#2185d0}.x-spreadsheet-button.primary:hover,.x-spreadsheet-button.primary.active{color:#fff;background-color:#1678c2}.x-spreadsheet-form-input{font-size:1em;position:relative;font-weight:400;display:inline-flex;color:#000000de}.x-spreadsheet-form-input input{z-index:1;margin:0;max-width:100%;flex:1 0 auto;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:30px;height:30px;padding:0 8px;background:#fff;border:1px solid #e9e9e9;border-radius:3px;transition:box-shadow .1s ease,border-color .1s ease;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-input input:focus{border-color:#4b89ff;box-shadow:inset 0 1px 2px #4b89ff33}.x-spreadsheet-form-select{position:relative;display:inline-block;background:#fff;border:1px solid #e9e9e9;border-radius:2px;cursor:pointer;color:#000000de;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-select .input-text{text-overflow:ellipsis;white-space:nowrap;min-width:60px;width:auto;height:30px;line-height:30px;padding:0 8px}.x-spreadsheet-form-fields{display:flex;flex-direction:row;flex-wrap:wrap}.x-spreadsheet-form-fields .x-spreadsheet-form-field{flex:0 1 auto}.x-spreadsheet-form-fields .x-spreadsheet-form-field .label{display:inline-block;margin:0 10px 0 0}.x-spreadsheet-form-field{display:block;vertical-align:middle;margin-left:10px;margin-bottom:10px}.x-spreadsheet-form-field:first-child{margin-left:0}.x-spreadsheet-form-field.error .x-spreadsheet-form-select,.x-spreadsheet-form-field.error input{border-color:#f04134}.x-spreadsheet-form-field .tip{color:#f04134;font-size:.9em}.x-spreadsheet-dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:#0009;opacity:0;animation-fill-mode:both;animation-duration:.5s;transition:background-color .5s linear;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1000}.x-spreadsheet-dimmer.active{display:block;opacity:1}form fieldset{border:none}form fieldset label{display:block;margin-bottom:.5em;font-size:1em;color:#666}form fieldset select{font-size:1.1em;width:100%;background-color:#fff;border:none;border-bottom:2px solid #ddd;padding:.5em .85em;border-radius:2px}.x-spreadsheet-modal,.x-spreadsheet-toast{font-size:13px;position:fixed;z-index:1001;text-align:left;line-height:1.25em;min-width:360px;color:#000000de;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;border-radius:4px;border:1px solid rgba(0,0,0,.1);background-color:#fff;background-clip:padding-box;box-shadow:#0003 0 2px 8px}.x-spreadsheet-toast{background-color:#ffffffd9}.x-spreadsheet-modal-header,.x-spreadsheet-toast-header{font-weight:600;background-clip:padding-box;background-color:#ffffffd9;border-bottom:1px solid rgba(0,0,0,.05);border-radius:4px 4px 0 0}.x-spreadsheet-toast-header{color:#f2711c}.x-spreadsheet-modal-header{border-bottom:1px solid #e0e2e4;background:#00000014;font-size:1.0785em}.x-spreadsheet-modal-header,.x-spreadsheet-modal-content,.x-spreadsheet-toast-header,.x-spreadsheet-toast-content{padding:.75em 1em}.x-spreadsheet-menu li:first-child{display:none}.vue-office-excel{height:100%}.modal .ant-modal-content{padding:16px}.full-modal .ant-modal{width:100%!important;max-width:100%;top:0;padding-bottom:0;margin:0}.full-modal .ant-modal-content{display:flex;flex-direction:column;height:100vh}.full-modal .ant-modal-body{flex:1}
package/lib/webui.es.js CHANGED
@@ -1,7 +1,7 @@
1
- import { u as Le, i as ce, a as Ue, L as xt, c as kt, P as ae, o as We, b as wt, d as Ct, e as qe, g as He, r as ue, f as Qe, h as Ge, j as Je, k as St, l as me, m as Xe, _ as Ze, n as et, O as Ne, p as $t, q as tt, s as Tt, t as It, v as q, w as Dt, x as Ft, y as Pt, z as Et, A as Lt, B as Ut, C as le, D as Nt, E as Bt, F as Mt, G as at, M as zt } from "./assets/modules/upload-template-CM0O990W.js";
2
- import { ad as fr, T as vr, U as mr, Y as hr, ac as gr, aa as br, ab as yr, ae as _r, a0 as xr, W as kr, a8 as wr, a5 as Cr, R as Sr, a7 as $r, X as Tr, I as Ir, a2 as Dr, a6 as Fr, a9 as Pr, S as Er, V as Lr, af as Ur, H as Nr, a4 as Br, ag as Mr, $ as zr, a1 as Or, Z as Ar, al as Rr, ak as Kr, ah as jr, J as Vr, K as Yr, ai as Wr, Q as qr, aj as Hr, N as Qr, a3 as Gr } from "./assets/modules/upload-template-CM0O990W.js";
3
- import { f as Ot, p as Oe } from "./assets/modules/file-upload-D11e2io7.js";
4
- import { A as Xr, U as Zr } from "./assets/modules/file-upload-D11e2io7.js";
1
+ import { u as Le, i as ce, a as Ue, L as xt, c as kt, P as ae, o as We, b as wt, d as Ct, e as qe, g as He, r as ue, f as Qe, h as Ge, j as Je, k as St, l as me, m as Xe, _ as Ze, n as et, O as Ne, p as $t, q as tt, s as Tt, t as It, v as q, w as Dt, x as Ft, y as Pt, z as Et, A as Lt, B as Ut, C as le, D as Nt, E as Bt, F as Mt, G as at, M as zt } from "./assets/modules/upload-template-BuaWOXY_.js";
2
+ import { ad as fr, T as vr, U as mr, Y as hr, ac as gr, aa as br, ab as yr, ae as _r, a0 as xr, W as kr, a8 as wr, a5 as Cr, R as Sr, a7 as $r, X as Tr, I as Ir, a2 as Dr, a6 as Fr, a9 as Pr, S as Er, V as Lr, af as Ur, H as Nr, a4 as Br, ag as Mr, $ as zr, a1 as Or, Z as Ar, al as Rr, ak as Kr, ah as jr, J as Vr, K as Yr, ai as Wr, Q as qr, aj as Hr, N as Qr, a3 as Gr } from "./assets/modules/upload-template-BuaWOXY_.js";
3
+ import { f as Ot, p as Oe } from "./assets/modules/file-upload-CKMd0H11.js";
4
+ import { A as Xr, U as Zr } from "./assets/modules/file-upload-CKMd0H11.js";
5
5
  import { EnvConfig as Ae, isMicroApp as At } from "@skyfox2000/microbase";
6
6
  import { FrontCache as ve, httpPost as Be, ResStatus as Me, SERVER_HOST as Rt, fieldMapping as he } from "@skyfox2000/fapi";
7
7
  import G from "vue-m-message";
@@ -10,15 +10,15 @@ import "async-validator";
10
10
  import Pe from "dayjs";
11
11
  import { Popover as Wt, theme as rt, Drawer as qt, Space as ie, Form as st, message as Ht, FormItem as ot, ConfigProvider as be, Popconfirm as nt, DropdownButton as it, Menu as ke, MenuItem as we, Dropdown as Ee, Checkbox as Qt, List as Gt, ListItem as Jt, Card as Xt, Button as ut, Table as ct, Tree as Zt, Cascader as ea, DatePicker as ta, Input as de, InputPassword as aa, InputNumber as la, RangePicker as ra, Textarea as sa, TimePicker as oa, Transfer as na, TreeSelect as ia, Upload as ua, Image as ca, LayoutContent as da } from "ant-design-vue";
12
12
  import { VueDraggableNext as pa } from "vue-draggable-next";
13
- import { d as fa } from "./assets/modules/uploadList-DhkFSkqE.js";
14
- import { C as ts, U as as, a as ls, p as rs } from "./assets/modules/uploadList-DhkFSkqE.js";
15
- import { c as dt } from "./assets/modules/index-voAmrZ30.js";
16
- import { _ as os, h as ns, b as is, a as us, d as cs, e as ds, g as ps, f as fs, n as vs, p as ms, t as hs, v as gs } from "./assets/modules/index-voAmrZ30.js";
17
- import { _ as Q } from "./assets/modules/index-ClMWx3tg.js";
18
- import { _ as K } from "./assets/modules/toolIcon-9zQ4jiFD.js";
19
- import { a as ys } from "./assets/modules/toolIcon-9zQ4jiFD.js";
20
- import { _ as xs, b as ks, c as ws, d as Cs, e as Ss, I as $s, f as Ts, g as Is, a as Ds } from "./assets/modules/menuTabs-C9wkt-m9.js";
21
- import { _ as Ps } from "./assets/modules/index-CO9_YadW.js";
13
+ import { d as fa } from "./assets/modules/uploadList-De6KfTAV.js";
14
+ import { C as ts, U as as, a as ls, p as rs } from "./assets/modules/uploadList-De6KfTAV.js";
15
+ import { c as dt } from "./assets/modules/index-gmbMtZa2.js";
16
+ import { _ as os, h as ns, b as is, a as us, d as cs, e as ds, g as ps, f as fs, n as vs, p as ms, t as hs, v as gs } from "./assets/modules/index-gmbMtZa2.js";
17
+ import { _ as Q } from "./assets/modules/index-BpsqYPCw.js";
18
+ import { _ as K } from "./assets/modules/toolIcon-DWurTPaB.js";
19
+ import { a as ys } from "./assets/modules/toolIcon-DWurTPaB.js";
20
+ import { _ as xs, b as ks, c as ws, d as Cs, e as Ss, I as $s, f as Ts, g as Is, a as Ds } from "./assets/modules/menuTabs-CvAiSVNW.js";
21
+ import { _ as Ps } from "./assets/modules/index-DvozNhVM.js";
22
22
  import { _ as se } from "./assets/modules/_plugin-vue_export-helper-CHgC5LLL.js";
23
23
  const Ke = (r, a, e, t = "remove") => {
24
24
  if (!e)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyfox2000/webui",
3
- "version": "1.4.22",
3
+ "version": "1.4.24",
4
4
  "description": "后台前端通用组件定义",
5
5
  "type": "module",
6
6
  "keywords": [],
@@ -71,4 +71,4 @@
71
71
  "vite-plugin-dts": "^4.5.4",
72
72
  "vue-tsc": "^2.2.0"
73
73
  }
74
- }
74
+ }
@@ -0,0 +1,115 @@
1
+ <script setup lang="ts" generic="T">
2
+ import { Button, ToolIcon } from '../../common';
3
+ import type { ButtonTool } from '@/typings/tools.d';
4
+
5
+ /**
6
+ * 工具组类型定义
7
+ */
8
+ export type GroupType = 'tools' | 'split' | 'space';
9
+
10
+ /**
11
+ * 扩展的工具定义,支持自定义组件
12
+ */
13
+ export interface ExtendedButtonTool extends ButtonTool {
14
+ /**
15
+ * 自定义组件
16
+ */
17
+ component?: any;
18
+ /**
19
+ * 组件属性
20
+ */
21
+ props?: Record<string, any>;
22
+ }
23
+
24
+ /**
25
+ * 工具组定义
26
+ */
27
+ export interface ToolGroup {
28
+ /**
29
+ * 组类型
30
+ * - tools: 工具组
31
+ * - split: 竖线分割
32
+ * - space: 空白区域
33
+ */
34
+ type: GroupType;
35
+ /**
36
+ * 工具列表,当type为tools时有效
37
+ */
38
+ tools?: ExtendedButtonTool[];
39
+ /**
40
+ * 空白区域宽度,当type为space时有效
41
+ */
42
+ width?: string;
43
+ }
44
+
45
+ defineProps<{
46
+ /**
47
+ * 分组工具配置
48
+ */
49
+ groupTools: ToolGroup[];
50
+ }>();
51
+
52
+ /**
53
+ * 处理工具点击事件
54
+ */
55
+ const onToolClick = (tool: ExtendedButtonTool) => {
56
+ if (tool.click) {
57
+ // 传入必要的参数,这里使用空对象作为占位符,实际使用时由外部传入
58
+ tool.click({} as any, undefined as any, undefined as any);
59
+ }
60
+ };
61
+
62
+ /**
63
+ * 判断工具是否可见
64
+ */
65
+ const isToolVisible = (tool: ExtendedButtonTool): boolean => {
66
+ if (typeof tool.visible === 'boolean') return tool.visible;
67
+ if (typeof tool.visible === 'function') return tool.visible({} as any);
68
+ return true;
69
+ };
70
+
71
+ /**
72
+ * 判断工具是否禁用
73
+ */
74
+ const isToolDisabled = (tool: ExtendedButtonTool): boolean => {
75
+ if (typeof tool.disabled === 'boolean') return tool.disabled;
76
+ if (typeof tool.disabled === 'function') return tool.disabled({} as any);
77
+ return false;
78
+ };
79
+ </script>
80
+
81
+ <template>
82
+ <div class="flex items-center">
83
+ <template v-for="(group, groupIndex) in groupTools" :key="groupIndex">
84
+ <!-- 工具组 -->
85
+ <div v-if="group.type === 'tools'" class="inline-flex [&>button]:ml-[-1px] first:[&>button]:ml-0">
86
+ <template v-for="(tool, toolIndex) in group.tools" :key="tool.key">
87
+ <Button v-if="isToolVisible(tool) && !tool.children" :class="[
88
+ 'px-[8px] py-[2px] relative border-[#ccc] bg-[#fcfcfc] rounded-none text-[#666] hover:z-10',
89
+ toolIndex === 0 ? 'rounded-l-[5px]' : '',
90
+ toolIndex === (group.tools?.length || 0) - 1 ? 'rounded-r-[5px]' : '',
91
+ tool.class || ''
92
+ ]" :type="tool.type" :danger="tool.danger" :disabled="isToolDisabled(tool)" :tiptext="tool.label"
93
+ @click="onToolClick(tool)">
94
+ <template v-if="tool.icon">
95
+ <ToolIcon :icon="tool.icon" class="w-[18px] h-[18.5px]" clickable />
96
+ </template>
97
+ <template v-if="tool.label">
98
+ {{ tool.label }}
99
+ </template>
100
+ </Button>
101
+
102
+ <!-- 自定义组件 -->
103
+ <component v-else-if="tool.component" :is="tool.component" v-bind="tool.props"
104
+ @click="onToolClick(tool)" />
105
+ </template>
106
+ </div>
107
+
108
+ <!-- 竖线分割 -->
109
+ <div v-else-if="group.type === 'split'" class="w-[1px] h-[16px] bg-[#d9d9d9] mx-[8px]"></div>
110
+
111
+ <!-- 空白区域 -->
112
+ <div v-else-if="group.type === 'space'" :class="group.width ? group.width : 'flex-1'"></div>
113
+ </template>
114
+ </div>
115
+ </template>
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 工具栏组件导出
3
+ */
4
+ export { default as GroupTools } from './groupTools.vue';
5
+ export { default as IconTool } from './icontool.vue';
6
+ export { default as Toolbar } from './index.vue';
7
+
8
+ /**
9
+ * 工具栏相关类型定义
10
+ */
11
+ export type { ToolGroup } from './groupTools.vue';
@@ -93,7 +93,9 @@ const hasPermission = (route: RouteRecord, isLogin: boolean): boolean => {
93
93
 
94
94
  // 检查功能权限
95
95
  if (permission) {
96
- hasPermitPermission = userInfoStore.hasPermit(route.path, ':page');
96
+ // 将动态路由路径转换为权限路径,移除动态参数
97
+ const permissionPath = route.path.replace(/\/:[^/]+/g, '');
98
+ hasPermitPermission = userInfoStore.hasPermit(permissionPath, ':page');
97
99
  }
98
100
 
99
101
  // 任意一个有权限即可访问
package/src/utils/menu.ts CHANGED
@@ -37,6 +37,7 @@ const routeToMenu = <T>(
37
37
  for (const route of routes) {
38
38
  if (
39
39
  route.redirect ||
40
+ route.meta?.hidden || // 隐藏菜单
40
41
  route.path.includes('/login') ||
41
42
  route.path.includes('/error') ||
42
43
  route.path.includes('/:page(.*)')