qidian-vue-ui 1.0.70 → 1.0.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/components/config-provider/index.d.ts +3 -0
  2. package/dist/components/config-provider/types.d.ts +1 -0
  3. package/dist/components/config-provider/useConfig.d.ts +4 -0
  4. package/dist/components/config-renderer/types.d.ts +3 -1
  5. package/dist/components/crud/define.d.ts +2 -1
  6. package/dist/components/crud/index.d.ts +3 -2
  7. package/dist/components/crud/list.vue.d.ts +27 -0
  8. package/dist/components/crud/props.d.ts +5 -1
  9. package/dist/components/crud/types.d.ts +7 -3
  10. package/dist/components/dialog/form.vue.d.ts +20 -46
  11. package/dist/components/dialog/index.vue.d.ts +4 -1
  12. package/dist/components/dialog/props.d.ts +1 -1
  13. package/dist/components/dialog/types.d.ts +9 -1
  14. package/dist/components/dict/tag.vue.d.ts +26 -2
  15. package/dist/components/form/props.d.ts +1 -1
  16. package/dist/components/form/types.d.ts +1 -1
  17. package/dist/components/service/index.d.ts +2 -1
  18. package/dist/components/service/list.vue.d.ts +26 -0
  19. package/dist/components/service/props.d.ts +3 -0
  20. package/dist/components/service/types.d.ts +6 -1
  21. package/dist/{en-US-BR5-O75H.mjs → en-US-BD3_KJjx.mjs} +3 -2
  22. package/dist/{en-US-BR5-O75H.mjs.map → en-US-BD3_KJjx.mjs.map} +1 -1
  23. package/dist/{en-US-QRsMT0B0.js → en-US-CMpUZa8x.js} +3 -2
  24. package/dist/{en-US-QRsMT0B0.js.map → en-US-CMpUZa8x.js.map} +1 -1
  25. package/dist/{index-BhiVTQHR.js → index-B9OY1KvY.js} +477 -104
  26. package/dist/index-B9OY1KvY.js.map +1 -0
  27. package/dist/{index-DMFOdSjS.mjs → index-CeExET1J.mjs} +500 -127
  28. package/dist/index-CeExET1J.mjs.map +1 -0
  29. package/dist/locales/en-US.d.ts +1 -0
  30. package/dist/locales/zh-CN.d.ts +1 -0
  31. package/dist/locales/zh-TW.d.ts +1 -0
  32. package/dist/qidian-vue-ui.css +65 -13
  33. package/dist/qidian-vue-ui.js +7 -4
  34. package/dist/qidian-vue-ui.js.map +1 -1
  35. package/dist/qidian-vue-ui.mjs +31 -28
  36. package/dist/{zh-TW-H8f1Xj1a.mjs → zh-TW-BZkNQa_r.mjs} +3 -2
  37. package/dist/{zh-TW-H8f1Xj1a.mjs.map → zh-TW-BZkNQa_r.mjs.map} +1 -1
  38. package/dist/{zh-TW-B2ihPdJF.js → zh-TW-D5Z0fkAS.js} +3 -2
  39. package/dist/{zh-TW-B2ihPdJF.js.map → zh-TW-D5Z0fkAS.js.map} +1 -1
  40. package/package.json +2 -2
  41. package/dist/index-BhiVTQHR.js.map +0 -1
  42. package/dist/index-DMFOdSjS.mjs.map +0 -1
@@ -2,12 +2,12 @@
2
2
  const vue = require("vue");
3
3
  const tdesignVueNext = require("tdesign-vue-next");
4
4
  const tdesignIconsVueNext = require("tdesign-icons-vue-next");
5
- const _hoisted_1$2 = { class: "qd-auto-tooltip" };
6
- const _hoisted_2$1 = {
5
+ const _hoisted_1$3 = { class: "qd-auto-tooltip" };
6
+ const _hoisted_2$2 = {
7
7
  key: 0,
8
8
  class: "pre-wrap"
9
9
  };
10
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
10
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
11
11
  ...{
12
12
  name: "QdAutoTooltip"
13
13
  },
@@ -39,7 +39,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
39
39
  );
40
40
  return (_ctx, _cache) => {
41
41
  const _directive_resize = vue.resolveDirective("resize");
42
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
42
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
43
43
  vue.createVNode(vue.unref(tdesignVueNext.Tooltip), {
44
44
  attach: __props.attach,
45
45
  placement: __props.placement,
@@ -48,7 +48,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
48
48
  }, {
49
49
  content: vue.withCtx(() => [
50
50
  vue.renderSlot(_ctx.$slots, "content", {}, () => [
51
- __props.preWrap ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$1, vue.toDisplayString(__props.content), 1)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
51
+ __props.preWrap ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$2, vue.toDisplayString(__props.content), 1)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
52
52
  vue.createTextVNode(vue.toDisplayString(__props.content), 1)
53
53
  ], 64))
54
54
  ], true)
@@ -79,11 +79,11 @@ const _export_sfc = (sfc, props) => {
79
79
  }
80
80
  return target;
81
81
  };
82
- const index = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__scopeId", "data-v-75d8db87"]]);
82
+ const index = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-75d8db87"]]);
83
83
  const qdCardProps = {
84
84
  bordered: false
85
85
  };
86
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
86
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
87
87
  __name: "index",
88
88
  props: /* @__PURE__ */ vue.mergeDefaults({
89
89
  actions: {},
@@ -1391,6 +1391,14 @@ function extractSlotsWithoutPrefix(slots, prefix) {
1391
1391
  }
1392
1392
  return res;
1393
1393
  }
1394
+ function filterSlots(slots, filterName) {
1395
+ const res = [];
1396
+ for (const key in slots) {
1397
+ if (filterName.includes(key)) continue;
1398
+ res.push(key);
1399
+ }
1400
+ return res;
1401
+ }
1394
1402
  function easyCopy(data) {
1395
1403
  return JSON.parse(JSON.stringify(data));
1396
1404
  }
@@ -8519,14 +8527,14 @@ var Stream = (
8519
8527
  var ASN1 = (
8520
8528
  /** @class */
8521
8529
  (function() {
8522
- function ASN12(stream, header, length, tag, sub) {
8523
- if (!(tag instanceof ASN1Tag)) {
8530
+ function ASN12(stream, header, length, tag2, sub) {
8531
+ if (!(tag2 instanceof ASN1Tag)) {
8524
8532
  throw new Error("Invalid tag value.");
8525
8533
  }
8526
8534
  this.stream = stream;
8527
8535
  this.header = header;
8528
8536
  this.length = length;
8529
- this.tag = tag;
8537
+ this.tag = tag2;
8530
8538
  this.sub = sub;
8531
8539
  }
8532
8540
  ASN12.prototype.typeName = function() {
@@ -8736,7 +8744,7 @@ var ASN1 = (
8736
8744
  stream = str;
8737
8745
  }
8738
8746
  var streamStart = new Stream(stream);
8739
- var tag = new ASN1Tag(stream);
8747
+ var tag2 = new ASN1Tag(stream);
8740
8748
  var len = ASN12.decodeLength(stream);
8741
8749
  var start = stream.pos;
8742
8750
  var header = start - streamStart.pos;
@@ -8767,11 +8775,11 @@ var ASN1 = (
8767
8775
  }
8768
8776
  return ret;
8769
8777
  };
8770
- if (tag.tagConstructed) {
8778
+ if (tag2.tagConstructed) {
8771
8779
  sub = getSub();
8772
- } else if (tag.isUniversal() && (tag.tagNumber == 3 || tag.tagNumber == 4)) {
8780
+ } else if (tag2.isUniversal() && (tag2.tagNumber == 3 || tag2.tagNumber == 4)) {
8773
8781
  try {
8774
- if (tag.tagNumber == 3) {
8782
+ if (tag2.tagNumber == 3) {
8775
8783
  if (stream.get() != 0) {
8776
8784
  throw new Error("BIT STRINGs with unused bits cannot encapsulate.");
8777
8785
  }
@@ -8792,7 +8800,7 @@ var ASN1 = (
8792
8800
  }
8793
8801
  stream.pos = start + Math.abs(len);
8794
8802
  }
8795
- return new ASN12(streamStart, header, len, tag, sub);
8803
+ return new ASN12(streamStart, header, len, tag2, sub);
8796
8804
  };
8797
8805
  return ASN12;
8798
8806
  })()
@@ -12014,8 +12022,8 @@ const QdConfigProvider = vue.defineComponent({
12014
12022
  vue.watchEffect(async () => {
12015
12023
  const localeMap = {
12016
12024
  "zh-CN": () => Promise.resolve().then(() => zhCN$1),
12017
- "zh-TW": () => Promise.resolve().then(() => require("./zh-TW-B2ihPdJF.js")),
12018
- "en-US": () => Promise.resolve().then(() => require("./en-US-QRsMT0B0.js"))
12025
+ "zh-TW": () => Promise.resolve().then(() => require("./zh-TW-D5Z0fkAS.js")),
12026
+ "en-US": () => Promise.resolve().then(() => require("./en-US-CMpUZa8x.js"))
12019
12027
  };
12020
12028
  const loadLocale = localeMap[props.locale] || localeMap["zh-CN"];
12021
12029
  const [err, res] = await to(
@@ -12102,7 +12110,7 @@ var hasOwnProperty$a = objectProto$d.hasOwnProperty;
12102
12110
  var nativeObjectToString$1 = objectProto$d.toString;
12103
12111
  var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : void 0;
12104
12112
  function getRawTag(value) {
12105
- var isOwn = hasOwnProperty$a.call(value, symToStringTag$1), tag = value[symToStringTag$1];
12113
+ var isOwn = hasOwnProperty$a.call(value, symToStringTag$1), tag2 = value[symToStringTag$1];
12106
12114
  try {
12107
12115
  value[symToStringTag$1] = void 0;
12108
12116
  var unmasked = true;
@@ -12111,7 +12119,7 @@ function getRawTag(value) {
12111
12119
  var result = nativeObjectToString$1.call(value);
12112
12120
  if (unmasked) {
12113
12121
  if (isOwn) {
12114
- value[symToStringTag$1] = tag;
12122
+ value[symToStringTag$1] = tag2;
12115
12123
  } else {
12116
12124
  delete value[symToStringTag$1];
12117
12125
  }
@@ -12172,8 +12180,8 @@ function isFunction(value) {
12172
12180
  if (!isObject(value)) {
12173
12181
  return false;
12174
12182
  }
12175
- var tag = baseGetTag(value);
12176
- return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag;
12183
+ var tag2 = baseGetTag(value);
12184
+ return tag2 == funcTag$2 || tag2 == genTag$1 || tag2 == asyncTag || tag2 == proxyTag;
12177
12185
  }
12178
12186
  var coreJsData = root["__core-js_shared__"];
12179
12187
  var maskSrcKey = (function() {
@@ -12940,9 +12948,9 @@ function cloneTypedArray(typedArray, isDeep) {
12940
12948
  }
12941
12949
  var boolTag$2 = "[object Boolean]", dateTag$1 = "[object Date]", mapTag$2 = "[object Map]", numberTag$2 = "[object Number]", regexpTag$1 = "[object RegExp]", setTag$2 = "[object Set]", stringTag$1 = "[object String]", symbolTag$1 = "[object Symbol]";
12942
12950
  var arrayBufferTag$1 = "[object ArrayBuffer]", dataViewTag$1 = "[object DataView]", float32Tag$1 = "[object Float32Array]", float64Tag$1 = "[object Float64Array]", int8Tag$1 = "[object Int8Array]", int16Tag$1 = "[object Int16Array]", int32Tag$1 = "[object Int32Array]", uint8Tag$1 = "[object Uint8Array]", uint8ClampedTag$1 = "[object Uint8ClampedArray]", uint16Tag$1 = "[object Uint16Array]", uint32Tag$1 = "[object Uint32Array]";
12943
- function initCloneByTag(object, tag, isDeep) {
12951
+ function initCloneByTag(object, tag2, isDeep) {
12944
12952
  var Ctor = object.constructor;
12945
- switch (tag) {
12953
+ switch (tag2) {
12946
12954
  case arrayBufferTag$1:
12947
12955
  return cloneArrayBuffer(object);
12948
12956
  case boolTag$2:
@@ -13006,17 +13014,17 @@ function baseClone(value, bitmask, customizer, key, object, stack) {
13006
13014
  if (isArr) {
13007
13015
  result = initCloneArray(value);
13008
13016
  } else {
13009
- var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
13017
+ var tag2 = getTag(value), isFunc = tag2 == funcTag || tag2 == genTag;
13010
13018
  if (isBuffer(value)) {
13011
13019
  return cloneBuffer(value, isDeep);
13012
13020
  }
13013
- if (tag == objectTag || tag == argsTag || isFunc && !object) {
13021
+ if (tag2 == objectTag || tag2 == argsTag || isFunc && !object) {
13014
13022
  result = isFunc ? {} : initCloneObject(value);
13015
13023
  } else {
13016
- if (!cloneableTags[tag]) {
13024
+ if (!cloneableTags[tag2]) {
13017
13025
  return object ? value : {};
13018
13026
  }
13019
- result = initCloneByTag(value, tag, isDeep);
13027
+ result = initCloneByTag(value, tag2, isDeep);
13020
13028
  }
13021
13029
  }
13022
13030
  stack || (stack = new Stack());
@@ -13218,7 +13226,7 @@ function resolveVModelBinding(context, vModel, defaultValue) {
13218
13226
  }
13219
13227
  return bindings;
13220
13228
  }
13221
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
13229
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
13222
13230
  ...{
13223
13231
  name: "QdConfigRenderer"
13224
13232
  },
@@ -13263,7 +13271,10 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
13263
13271
  return value !== false && value !== null && value !== void 0;
13264
13272
  });
13265
13273
  const resolvedComponent = vue.computed(() => {
13266
- const { is } = props.config;
13274
+ const { is, render } = props.config;
13275
+ if (render) {
13276
+ return () => render(vue.h, currentContext.value);
13277
+ }
13267
13278
  if (!is) return "div";
13268
13279
  if (typeof is === "string") {
13269
13280
  if (is === is.toLowerCase()) {
@@ -13320,7 +13331,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
13320
13331
  return {
13321
13332
  name: slotName,
13322
13333
  fn: vue.withCtx((slotProps) => [
13323
- slotConfig ? (vue.openBlock(), vue.createBlock(_sfc_main$f, vue.mergeProps({
13334
+ slotConfig ? (vue.openBlock(), vue.createBlock(_sfc_main$h, vue.mergeProps({
13324
13335
  key: 0,
13325
13336
  config: slotConfig,
13326
13337
  context: slotConfig.context || currentContext.value
@@ -13398,6 +13409,7 @@ const qdFormGrid = {
13398
13409
  const qdFormProps = {
13399
13410
  gutter: () => qdFormGutter,
13400
13411
  grid: () => qdFormGrid,
13412
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13401
13413
  data: () => ({}),
13402
13414
  disabled: void 0,
13403
13415
  readonly: void 0,
@@ -13468,6 +13480,9 @@ const qdServiceSelectProps = {
13468
13480
  const qdServiceSelectKeys = {
13469
13481
  value: "value"
13470
13482
  };
13483
+ const qdServiceListProps = {
13484
+ data: () => []
13485
+ };
13471
13486
  const qdCrudSearchProps = {
13472
13487
  ...qdFormProps,
13473
13488
  defaultClearable: true,
@@ -13493,6 +13508,10 @@ const qdCrudTableProps = {
13493
13508
  del: void 0,
13494
13509
  rowActions: void 0
13495
13510
  };
13511
+ const qdCrudListProps = {
13512
+ ...qdServiceListProps,
13513
+ searchData: () => ({})
13514
+ };
13496
13515
  function authPermission(permission) {
13497
13516
  const allPermission = "*:*:*";
13498
13517
  const user = window.__QIDIAN_USER__;
@@ -14260,6 +14279,7 @@ const zhCN = {
14260
14279
  text: "加载中"
14261
14280
  },
14262
14281
  crud: {
14282
+ emptyText: "暂无数据",
14263
14283
  searchText: "搜索",
14264
14284
  resetText: "重置",
14265
14285
  addText: "新增",
@@ -14314,7 +14334,7 @@ function useConfig(key, componentLocale) {
14314
14334
  global: globalConfig
14315
14335
  };
14316
14336
  }
14317
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14337
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14318
14338
  ...{
14319
14339
  name: "QdServiceTable"
14320
14340
  },
@@ -14618,6 +14638,9 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14618
14638
  } = /* @__PURE__ */ useVModels(props, emit, {
14619
14639
  passive: true
14620
14640
  });
14641
+ const {
14642
+ t
14643
+ } = useConfig("crud");
14621
14644
  const tableRef = vue.useTemplateRef("table");
14622
14645
  const treeLoadIds = vue.ref([]);
14623
14646
  const reProps = vue.computed(() => {
@@ -14906,6 +14929,9 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14906
14929
  data: vue.unref(data),
14907
14930
  pagination: rePagination.value
14908
14931
  }), vue.createSlots({
14932
+ empty: vue.withCtx(() => [vue.createVNode(vue.unref(tdesignVueNext.Empty), {
14933
+ title: vue.unref(t)("emptyText")
14934
+ }, null, 8, ["title"])]),
14909
14935
  _: 2
14910
14936
  }, [vue.renderList(_ctx.$slots, (_, name) => {
14911
14937
  return {
@@ -14916,7 +14942,150 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14916
14942
  };
14917
14943
  }
14918
14944
  });
14919
- const QdServiceTable = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-3d02ee0a"]]);
14945
+ const QdServiceTable = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-adef2cbe"]]);
14946
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14947
+ ...{
14948
+ name: "QdServiceList"
14949
+ },
14950
+ __name: "list",
14951
+ props: /* @__PURE__ */ vue.mergeDefaults({
14952
+ data: {},
14953
+ asyncLoading: {},
14954
+ footer: {},
14955
+ header: {},
14956
+ layout: {},
14957
+ scroll: {},
14958
+ size: {},
14959
+ split: { type: Boolean },
14960
+ stripe: { type: Boolean },
14961
+ onBefore: { type: Function },
14962
+ onAfter: { type: Function },
14963
+ onSuccess: { type: Function },
14964
+ onError: { type: Function },
14965
+ service: { type: Function },
14966
+ manual: { type: Boolean },
14967
+ transformParams: { type: Function },
14968
+ transformRes: { type: Function },
14969
+ pagination: {}
14970
+ }, qdServiceListProps),
14971
+ emits: ["update:data"],
14972
+ setup(__props, { expose: __expose, emit: __emit }) {
14973
+ const props = __props;
14974
+ const emit = __emit;
14975
+ const { data } = /* @__PURE__ */ useVModels(props, emit, { passive: true });
14976
+ const { t } = useConfig("crud");
14977
+ const listRef = vue.useTemplateRef("list");
14978
+ const reProps = vue.computed(() => {
14979
+ const {
14980
+ service,
14981
+ manual,
14982
+ transformParams,
14983
+ transformRes,
14984
+ pagination,
14985
+ onBefore,
14986
+ onAfter,
14987
+ onSuccess,
14988
+ onError,
14989
+ data: data2,
14990
+ asyncLoading: externalAsyncLoad,
14991
+ ...listOptions
14992
+ } = props;
14993
+ return {
14994
+ externalAsyncLoad,
14995
+ listOptions,
14996
+ serviceOptions: {
14997
+ service,
14998
+ manual,
14999
+ transformParams,
15000
+ transformRes,
15001
+ pagination,
15002
+ onBefore,
15003
+ onAfter,
15004
+ onSuccess,
15005
+ onError
15006
+ },
15007
+ models: {
15008
+ data: data2
15009
+ }
15010
+ };
15011
+ });
15012
+ const {
15013
+ data: serviceData,
15014
+ firstLoad,
15015
+ manualTriggerLoad,
15016
+ loading,
15017
+ loadingMore,
15018
+ noMore,
15019
+ error,
15020
+ refresh,
15021
+ refreshAsync,
15022
+ cancel,
15023
+ loadMore,
15024
+ loadMoreAsync,
15025
+ mutate
15026
+ } = useServiceLoadMore({
15027
+ ...reProps.value.serviceOptions,
15028
+ onSuccess: (res) => {
15029
+ reProps.value.serviceOptions.onSuccess?.(res);
15030
+ data.value = serviceData.value?.list || [];
15031
+ }
15032
+ });
15033
+ const empty = vue.computed(() => noMore.value && !data.value.length);
15034
+ function onScroll({
15035
+ scrollBottom
15036
+ }) {
15037
+ if (loading.value || noMore.value || scrollBottom > (reProps.value.listOptions.scroll?.rowHeight ?? 100)) {
15038
+ return;
15039
+ }
15040
+ loadMore();
15041
+ }
15042
+ const expose = {
15043
+ data: serviceData,
15044
+ firstLoad,
15045
+ manualTriggerLoad,
15046
+ loading,
15047
+ loadingMore,
15048
+ noMore,
15049
+ error,
15050
+ refresh,
15051
+ refreshAsync,
15052
+ cancel,
15053
+ loadMore,
15054
+ loadMoreAsync,
15055
+ mutate
15056
+ };
15057
+ vue.onMounted(() => {
15058
+ Object.assign(expose, listRef.value);
15059
+ });
15060
+ __expose(expose);
15061
+ return (_ctx, _cache) => {
15062
+ return vue.openBlock(), vue.createBlock(vue.unref(tdesignVueNext.List), vue.mergeProps({
15063
+ ref: "list",
15064
+ class: "qd-service-list"
15065
+ }, reProps.value.listOptions, { onScroll }), vue.createSlots({
15066
+ default: vue.withCtx(() => [
15067
+ empty.value ? vue.renderSlot(_ctx.$slots, "empty", { key: 0 }, () => [
15068
+ vue.createVNode(vue.unref(tdesignVueNext.Empty), {
15069
+ title: vue.unref(t)("emptyText")
15070
+ }, null, 8, ["title"])
15071
+ ], true) : vue.createCommentVNode("", true),
15072
+ vue.renderSlot(_ctx.$slots, "default", { data: vue.unref(data) }, void 0, true)
15073
+ ]),
15074
+ _: 2
15075
+ }, [
15076
+ vue.renderList(vue.unref(filterSlots)(_ctx.$slots, ["default", "empty"]), (name) => {
15077
+ return {
15078
+ name,
15079
+ fn: vue.withCtx((slotProps) => [
15080
+ vue.renderSlot(_ctx.$slots, name, vue.normalizeProps(vue.guardReactiveProps(slotProps)), void 0, true)
15081
+ ])
15082
+ };
15083
+ })
15084
+ ]), 1040);
15085
+ };
15086
+ }
15087
+ });
15088
+ const QdServiceList = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-21c3df5d"]]);
14920
15089
  const qdDictConvStrSeparator = ",";
14921
15090
  const qdDictSelectProps = {
14922
15091
  showArrow: true,
@@ -14949,7 +15118,7 @@ const qdDictTagProps = {
14949
15118
  options: void 0,
14950
15119
  strict: false
14951
15120
  };
14952
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
15121
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14953
15122
  ...{
14954
15123
  name: "QdServiceSelect"
14955
15124
  },
@@ -15189,16 +15358,16 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
15189
15358
  },
15190
15359
  onSuccess: (res) => {
15191
15360
  reProps.value.serviceOptions.onSuccess?.(res);
15192
- const list = data.value?.list || [];
15361
+ const list2 = data.value?.list || [];
15193
15362
  if (!triggerServiceMerged && reProps.value.fillOptions?.length) {
15194
15363
  const map = /* @__PURE__ */ new Map();
15195
- [...reProps.value.fillOptions, ...list].forEach((item) => {
15364
+ [...reProps.value.fillOptions, ...list2].forEach((item) => {
15196
15365
  const k = item[reProps.value.selectOptions.keys?.value || qdServiceSelectKeys.value];
15197
15366
  map.set(k, item);
15198
15367
  });
15199
15368
  options.value = Array.from(map.values());
15200
15369
  } else {
15201
- options.value = list;
15370
+ options.value = list2;
15202
15371
  }
15203
15372
  triggerServiceMerged = true;
15204
15373
  if (!hasAutoSelected && reProps.value.defaultSelectFirst && isEmpty(reModelValue.value) && res.list.length) {
@@ -15290,7 +15459,7 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
15290
15459
  };
15291
15460
  }
15292
15461
  });
15293
- const select = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-a9450c1a"]]);
15462
+ const select = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-a9450c1a"]]);
15294
15463
  const qdDialogProps = {
15295
15464
  width: "min(960px, 100%)",
15296
15465
  theme: "default",
@@ -15311,7 +15480,7 @@ const qdDialogFormProps = {
15311
15480
  ...qdFormProps,
15312
15481
  wrapper: () => qdDialogProps
15313
15482
  };
15314
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
15483
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
15315
15484
  ...{
15316
15485
  name: "QdDialog"
15317
15486
  },
@@ -15356,7 +15525,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
15356
15525
  onOverlayClick: { type: Function }
15357
15526
  }, qdDialogProps),
15358
15527
  emits: ["update:visible"],
15359
- setup(__props, { emit: __emit }) {
15528
+ setup(__props, { expose: __expose, emit: __emit }) {
15360
15529
  const props = __props;
15361
15530
  const emit = __emit;
15362
15531
  const { visible } = /* @__PURE__ */ useVModels(props, emit, { passive: true });
@@ -15387,6 +15556,14 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
15387
15556
  models: { visible: inVisible }
15388
15557
  };
15389
15558
  });
15559
+ function show() {
15560
+ visible.value = true;
15561
+ }
15562
+ function hide() {
15563
+ visible.value = false;
15564
+ }
15565
+ const expose = { show, hide };
15566
+ __expose(expose);
15390
15567
  return (_ctx, _cache) => {
15391
15568
  return vue.openBlock(), vue.createBlock(vue.unref(tdesignVueNext.Dialog), vue.mergeProps({
15392
15569
  visible: vue.unref(visible),
@@ -15423,7 +15600,7 @@ const DEFAULT_BREAKPOINTS = {
15423
15600
  };
15424
15601
  const DEFAULT_COL = 1;
15425
15602
  const DEFAULT_ROW = 1;
15426
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
15603
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
15427
15604
  ...{
15428
15605
  name: "QdGrid"
15429
15606
  },
@@ -15474,8 +15651,8 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
15474
15651
  };
15475
15652
  }
15476
15653
  });
15477
- const QdGrid = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-f53624a2"]]);
15478
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
15654
+ const QdGrid = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-f53624a2"]]);
15655
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
15479
15656
  ...{
15480
15657
  name: "QdGridItem"
15481
15658
  },
@@ -15541,8 +15718,8 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
15541
15718
  };
15542
15719
  }
15543
15720
  });
15544
- const QdGridItem = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-274b234a"]]);
15545
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
15721
+ const QdGridItem = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-274b234a"]]);
15722
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
15546
15723
  ...{
15547
15724
  name: "QdFormItem"
15548
15725
  },
@@ -15606,7 +15783,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
15606
15783
  crudMode: reProps.value.formItemOptions.crudMode,
15607
15784
  context: __props.context
15608
15785
  }, () => [
15609
- reProps.value.configRendererOptions.config ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$f), vue.mergeProps({
15786
+ reProps.value.configRendererOptions.config ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$h), vue.mergeProps({
15610
15787
  key: 0,
15611
15788
  class: "qd-form-item__component"
15612
15789
  }, reProps.value.configRendererOptions), null, 16)) : vue.createCommentVNode("", true)
@@ -15620,7 +15797,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
15620
15797
  };
15621
15798
  }
15622
15799
  });
15623
- const QdFormItem = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-0a78416c"]]);
15800
+ const QdFormItem = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-0a78416c"]]);
15624
15801
  const PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE = Symbol("QdFormAddBeforeSubmitQueue");
15625
15802
  function useModal() {
15626
15803
  const { t } = useConfig("modal");
@@ -15790,7 +15967,7 @@ function useModal() {
15790
15967
  confirm
15791
15968
  };
15792
15969
  }
15793
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
15970
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
15794
15971
  ...{
15795
15972
  name: "QdForm"
15796
15973
  },
@@ -15842,10 +16019,14 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
15842
16019
  });
15843
16020
  });
15844
16021
  const formRef = vue.useTemplateRef("form");
16022
+ const submitShowErrorMessage = vue.ref();
15845
16023
  const reProps = vue.computed(() => {
15846
- const { grid, gutter, items, onSubmit, data: data2, ...formOptions } = props;
16024
+ const { grid, gutter, items, onSubmit, data: data2, scrollToFirstError, ...formOptions } = props;
15847
16025
  return {
15848
- formOptions,
16026
+ formOptions: {
16027
+ ...formOptions,
16028
+ scrollToFirstError: submitShowErrorMessage.value === false ? "" : scrollToFirstError
16029
+ },
15849
16030
  formItems: items,
15850
16031
  gridOptions: {
15851
16032
  grid,
@@ -15855,7 +16036,6 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
15855
16036
  models: { data: data2 }
15856
16037
  };
15857
16038
  });
15858
- let submitShowErrorMessage;
15859
16039
  const submitLoad = vue.ref(false);
15860
16040
  const formLoad = vue.computed(() => {
15861
16041
  return {
@@ -15865,7 +16045,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
15865
16045
  };
15866
16046
  });
15867
16047
  async function handleSubmit(context) {
15868
- const showErrorMessage = submitShowErrorMessage ?? props.showErrorMessage;
16048
+ const showErrorMessage = submitShowErrorMessage.value ?? props.showErrorMessage;
15869
16049
  if (showErrorMessage && context.firstError) {
15870
16050
  msgError(context.firstError);
15871
16051
  }
@@ -15893,7 +16073,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
15893
16073
  }
15894
16074
  });
15895
16075
  if (reQueueRes.success === false) {
15896
- if (reQueueRes.message && showErrorMessage) {
16076
+ if (showErrorMessage && reQueueRes.message) {
15897
16077
  msgError(reQueueRes.message);
15898
16078
  }
15899
16079
  return;
@@ -15909,7 +16089,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
15909
16089
  const expose = {};
15910
16090
  vue.onMounted(() => {
15911
16091
  const submit = async (params) => {
15912
- submitShowErrorMessage = params?.showErrorMessage;
16092
+ submitShowErrorMessage.value = params?.showErrorMessage;
15913
16093
  formRef.value?.submit(params);
15914
16094
  };
15915
16095
  Object.assign(expose, formRef.value, { submit });
@@ -15949,7 +16129,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
15949
16129
  };
15950
16130
  }
15951
16131
  });
15952
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
16132
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
15953
16133
  __name: "form",
15954
16134
  props: /* @__PURE__ */ vue.mergeDefaults({
15955
16135
  onSubmit: { type: Function },
@@ -15986,7 +16166,9 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
15986
16166
  setup(__props, { expose: __expose, emit: __emit }) {
15987
16167
  const props = __props;
15988
16168
  const emit = __emit;
15989
- const { visible, data } = /* @__PURE__ */ useVModels(props, emit, { passive: true });
16169
+ const { visible, data } = /* @__PURE__ */ useVModels(props, emit, {
16170
+ passive: true
16171
+ });
15990
16172
  const { t } = useConfig("crud");
15991
16173
  const formSubmitLoad = vue.ref(false);
15992
16174
  const reProps = vue.computed(() => {
@@ -16036,21 +16218,31 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
16036
16218
  };
16037
16219
  });
16038
16220
  const formRef = vue.useTemplateRef("form");
16039
- const expose = {};
16221
+ function show(newData) {
16222
+ if (newData != void 0) data.value = newData;
16223
+ visible.value = true;
16224
+ }
16225
+ function hide() {
16226
+ visible.value = false;
16227
+ }
16228
+ const expose = {
16229
+ show,
16230
+ hide
16231
+ };
16040
16232
  vue.onMounted(() => {
16041
16233
  Object.assign(expose, formRef.value);
16042
16234
  });
16043
16235
  __expose(expose);
16044
16236
  return (_ctx, _cache) => {
16045
- return vue.openBlock(), vue.createBlock(_sfc_main$c, vue.mergeProps({
16237
+ return vue.openBlock(), vue.createBlock(_sfc_main$d, vue.mergeProps({
16046
16238
  visible: vue.unref(visible),
16047
- "onUpdate:visible": _cache[2] || (_cache[2] = ($event) => vue.isRef(visible) ? visible.value = $event : null)
16239
+ "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => vue.isRef(visible) ? visible.value = $event : null)
16048
16240
  }, reProps.value.qdDialogOptions), vue.createSlots({
16049
16241
  default: vue.withCtx(() => [
16050
- vue.createVNode(vue.unref(_sfc_main$8), vue.mergeProps({
16242
+ vue.createVNode(vue.unref(_sfc_main$9), vue.mergeProps({
16051
16243
  ref: "form",
16052
16244
  data: vue.unref(data),
16053
- "onUpdate:data": _cache[1] || (_cache[1] = ($event) => vue.isRef(data) ? data.value = $event : null)
16245
+ "onUpdate:data": _cache[0] || (_cache[0] = ($event) => vue.isRef(data) ? data.value = $event : null)
16054
16246
  }, reProps.value.qdFormOptions), vue.createSlots({ _: 2 }, [
16055
16247
  vue.renderList(vue.unref(extractSlotsWithPrefix)(_ctx.$slots, "form"), (item) => {
16056
16248
  return {
@@ -16069,7 +16261,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
16069
16261
  fn: vue.withCtx(() => [
16070
16262
  vue.createVNode(vue.unref(tdesignVueNext.Button), {
16071
16263
  theme: "default",
16072
- onClick: _cache[0] || (_cache[0] = ($event) => visible.value = false)
16264
+ onClick: hide
16073
16265
  }, {
16074
16266
  default: vue.withCtx(() => [
16075
16267
  vue.createTextVNode(vue.toDisplayString(vue.unref(t)("closeText")), 1)
@@ -16091,7 +16283,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
16091
16283
  };
16092
16284
  }
16093
16285
  });
16094
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
16286
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
16095
16287
  ...{
16096
16288
  name: "QdCrudSearch"
16097
16289
  },
@@ -16144,9 +16336,9 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
16144
16336
  });
16145
16337
  __expose(expose);
16146
16338
  return (_ctx, _cache) => {
16147
- return vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$g), { class: "qd-crud-search" }, {
16339
+ return vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$i), { class: "qd-crud-search" }, {
16148
16340
  default: vue.withCtx(() => [
16149
- vue.createVNode(vue.unref(_sfc_main$8), vue.mergeProps({
16341
+ vue.createVNode(vue.unref(_sfc_main$9), vue.mergeProps({
16150
16342
  ref: "form",
16151
16343
  data: vue.unref(data),
16152
16344
  "onUpdate:data": _cache[0] || (_cache[0] = ($event) => vue.isRef(data) ? data.value = $event : null)
@@ -16166,7 +16358,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
16166
16358
  };
16167
16359
  }
16168
16360
  });
16169
- const QdCrudSearch = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-13ddedb2"]]);
16361
+ const QdCrudSearch = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-13ddedb2"]]);
16170
16362
  const dictCache = /* @__PURE__ */ new Map();
16171
16363
  const dictPromiseCache = /* @__PURE__ */ new Map();
16172
16364
  function useDict(...args) {
@@ -16297,13 +16489,13 @@ function useDisabled(context) {
16297
16489
  return false;
16298
16490
  });
16299
16491
  }
16300
- const _hoisted_1$1 = {
16492
+ const _hoisted_1$2 = {
16301
16493
  class: "qd-crud-table"
16302
16494
  };
16303
- const _hoisted_2 = {
16495
+ const _hoisted_2$1 = {
16304
16496
  class: "qd-crud-table__toolbar"
16305
16497
  };
16306
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
16498
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
16307
16499
  ...{
16308
16500
  name: "QdCrudTable"
16309
16501
  },
@@ -16643,6 +16835,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
16643
16835
  const reProps = vue.computed(() => {
16644
16836
  const {
16645
16837
  data: data2,
16838
+ searchData: inSearchData,
16646
16839
  selectedRowKeys: selectedRowKeys2,
16647
16840
  activeRowKeys: activeRowKeys2,
16648
16841
  columnControllerVisible: columnControllerVisible2,
@@ -16752,6 +16945,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
16752
16945
  rowActions: reRowActions,
16753
16946
  models: {
16754
16947
  data: data2,
16948
+ searchData: inSearchData,
16755
16949
  selectedRowKeys: selectedRowKeys2,
16756
16950
  activeRowKeys: activeRowKeys2,
16757
16951
  columnControllerVisible: columnControllerVisible2,
@@ -16769,12 +16963,11 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
16769
16963
  let searchMode = "refresh";
16770
16964
  function handleSearch() {
16771
16965
  searchMode = "changeCurrent";
16772
- searchRef.value?.submit();
16773
16966
  }
16774
16967
  function handleResetSearch() {
16775
16968
  searchMode = "changeCurrent";
16776
16969
  searchRef.value?.reset();
16777
- handleSearch();
16970
+ searchRef.value?.submit();
16778
16971
  }
16779
16972
  function triggerSearch({
16780
16973
  validateResult
@@ -17063,7 +17256,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17063
17256
  });
17064
17257
  __expose(expose);
17065
17258
  return (_ctx, _cache) => {
17066
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [reProps.value.searchOptions?.items?.length ? vue.withDirectives((vue.openBlock(), vue.createBlock(QdCrudSearch, vue.mergeProps({
17259
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [reProps.value.searchOptions?.items?.length ? vue.withDirectives((vue.openBlock(), vue.createBlock(QdCrudSearch, vue.mergeProps({
17067
17260
  key: 0,
17068
17261
  ref: "search",
17069
17262
  data: vue.unref(searchData),
@@ -17092,15 +17285,15 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17092
17285
  _: 1
17093
17286
  })]),
17094
17287
  _: 1
17095
- }, 16, ["data", "class"])), [[vue.vShow, searchVisible.value]]) : vue.createCommentVNode("", true), vue.createVNode(vue.unref(_sfc_main$g), {
17288
+ }, 16, ["data", "class"])), [[vue.vShow, searchVisible.value]]) : vue.createCommentVNode("", true), vue.createVNode(vue.unref(_sfc_main$i), {
17096
17289
  class: "qd-crud-table__body"
17097
17290
  }, {
17098
- default: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_2, [vue.createVNode(vue.unref(tdesignVueNext.Space), {
17291
+ default: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_2$1, [vue.createVNode(vue.unref(tdesignVueNext.Space), {
17099
17292
  align: "center",
17100
17293
  size: "small"
17101
17294
  }, {
17102
17295
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "actions", {}, () => [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(reProps.value.actions, (item, index2) => {
17103
- return vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$f), {
17296
+ return vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$h), {
17104
17297
  key: item.uid || index2,
17105
17298
  context: getConfigRendererCtx(item),
17106
17299
  config: {
@@ -17206,7 +17399,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17206
17399
  layout: "vertical"
17207
17400
  })]),
17208
17401
  default: vue.withCtx(() => [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(reProps.value.rowActions, (item, index2) => {
17209
- return vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$f), {
17402
+ return vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$h), {
17210
17403
  key: item.uid || index2,
17211
17404
  context: getConfigRendererCtx(item, slotProps),
17212
17405
  config: {
@@ -17227,10 +17420,10 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17227
17420
  })]), 1040, ["data", "selected-row-keys", "active-row-keys", "column-controller-visible", "display-columns", "expanded-row-keys", "filter-value", "sort", "expanded-tree-nodes"])]),
17228
17421
  _: 3
17229
17422
  }), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(dialogFormMap, (dialogForm, uid) => {
17230
- return vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$f), {
17423
+ return vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$h), {
17231
17424
  key: uid,
17232
17425
  config: {
17233
- is: vue.unref(_sfc_main$7),
17426
+ is: vue.unref(_sfc_main$8),
17234
17427
  ...dialogForm.form,
17235
17428
  vModelVisible: "self.visible",
17236
17429
  vModelData: "self.data",
@@ -17242,10 +17435,185 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17242
17435
  };
17243
17436
  }
17244
17437
  });
17245
- const table = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-06f05d43"]]);
17438
+ const table = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-bdb9c97a"]]);
17439
+ const _hoisted_1$1 = {
17440
+ class: "qd-crud-list"
17441
+ };
17442
+ const _hoisted_2 = {
17443
+ class: "qd-crud-list__body"
17444
+ };
17445
+ const _hoisted_3 = {
17446
+ key: 0,
17447
+ class: "qd-crud-list__toolbar"
17448
+ };
17449
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17450
+ __name: "list",
17451
+ props: /* @__PURE__ */ vue.mergeDefaults({
17452
+ search: {},
17453
+ searchData: {},
17454
+ data: {},
17455
+ asyncLoading: {},
17456
+ footer: {},
17457
+ header: {},
17458
+ layout: {},
17459
+ scroll: {},
17460
+ size: {},
17461
+ split: {
17462
+ type: Boolean
17463
+ },
17464
+ stripe: {
17465
+ type: Boolean
17466
+ },
17467
+ onBefore: {
17468
+ type: Function
17469
+ },
17470
+ onAfter: {
17471
+ type: Function
17472
+ },
17473
+ onSuccess: {
17474
+ type: Function
17475
+ },
17476
+ onError: {
17477
+ type: Function
17478
+ },
17479
+ service: {
17480
+ type: Function
17481
+ },
17482
+ manual: {
17483
+ type: Boolean
17484
+ },
17485
+ transformParams: {
17486
+ type: Function
17487
+ },
17488
+ transformRes: {
17489
+ type: Function
17490
+ },
17491
+ pagination: {}
17492
+ }, qdCrudListProps),
17493
+ emits: ["update:searchData", "update:data"],
17494
+ setup(__props, {
17495
+ expose: __expose,
17496
+ emit: __emit
17497
+ }) {
17498
+ const props = __props;
17499
+ const emit = __emit;
17500
+ const {
17501
+ data,
17502
+ searchData
17503
+ } = /* @__PURE__ */ useVModels(props, emit, {
17504
+ passive: true
17505
+ });
17506
+ const {
17507
+ t
17508
+ } = useConfig("crud");
17509
+ const reProps = vue.computed(() => {
17510
+ const {
17511
+ data: data2,
17512
+ searchData: inSearchData,
17513
+ search,
17514
+ transformParams,
17515
+ ...serviceListOptions
17516
+ } = props;
17517
+ const mergedTransformParams = (params) => {
17518
+ const merged = {
17519
+ ...params,
17520
+ ...searchData.value
17521
+ };
17522
+ if (transformParams) return transformParams(merged);
17523
+ return merged;
17524
+ };
17525
+ return {
17526
+ searchOptions: search,
17527
+ serviceListOptions: {
17528
+ ...serviceListOptions,
17529
+ transformParams: mergedTransformParams
17530
+ },
17531
+ models: {
17532
+ data: data2,
17533
+ searchData: inSearchData
17534
+ }
17535
+ };
17536
+ });
17537
+ const searchRef = vue.useTemplateRef("search");
17538
+ const listRef = vue.useTemplateRef("list");
17539
+ function handleSearch() {
17540
+ }
17541
+ function handleResetSearch() {
17542
+ searchRef.value?.reset();
17543
+ searchRef.value?.submit();
17544
+ }
17545
+ function triggerSearch({
17546
+ validateResult
17547
+ }) {
17548
+ if (validateResult !== true) return;
17549
+ listRef.value?.refresh();
17550
+ }
17551
+ const expose = {};
17552
+ vue.onMounted(() => {
17553
+ Object.assign(expose, listRef.value);
17554
+ });
17555
+ __expose(expose);
17556
+ return (_ctx, _cache) => {
17557
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [reProps.value.searchOptions?.items?.length ? (vue.openBlock(), vue.createBlock(QdCrudSearch, vue.mergeProps({
17558
+ key: 0,
17559
+ ref: "search",
17560
+ data: vue.unref(searchData),
17561
+ "onUpdate:data": _cache[0] || (_cache[0] = ($event) => vue.isRef(searchData) ? searchData.value = $event : null)
17562
+ }, reProps.value.searchOptions, {
17563
+ "on-submit": triggerSearch
17564
+ }), {
17565
+ footer: vue.withCtx(() => [vue.createVNode(vue.unref(tdesignVueNext.Space), {
17566
+ align: "center",
17567
+ size: "small"
17568
+ }, {
17569
+ default: vue.withCtx(() => [vue.createVNode(vue.unref(tdesignVueNext.Button), {
17570
+ type: "submit",
17571
+ onClick: handleSearch
17572
+ }, {
17573
+ default: vue.withCtx(() => [vue.createTextVNode(vue.toDisplayString(vue.unref(t)("searchText")), 1)]),
17574
+ _: 1
17575
+ }), vue.createVNode(vue.unref(tdesignVueNext.Button), {
17576
+ variant: "outline",
17577
+ onClick: handleResetSearch
17578
+ }, {
17579
+ default: vue.withCtx(() => [vue.createTextVNode(vue.toDisplayString(vue.unref(t)("resetText")), 1)]),
17580
+ _: 1
17581
+ })]),
17582
+ _: 1
17583
+ })]),
17584
+ _: 1
17585
+ }, 16, ["data"])) : vue.createCommentVNode("", true), vue.createElementVNode("div", _hoisted_2, [_ctx.$slots.actions ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [vue.createVNode(vue.unref(tdesignVueNext.Space), {
17586
+ align: "center",
17587
+ size: "small"
17588
+ }, {
17589
+ default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "actions", {}, void 0, true)]),
17590
+ _: 3
17591
+ })])) : vue.createCommentVNode("", true), vue.createVNode(vue.unref(QdServiceList), vue.mergeProps({
17592
+ ref: "list",
17593
+ data: vue.unref(data),
17594
+ "onUpdate:data": _cache[1] || (_cache[1] = ($event) => vue.isRef(data) ? data.value = $event : null)
17595
+ }, reProps.value.serviceListOptions), vue.createSlots({
17596
+ _: 2
17597
+ }, [_ctx.$slots.default ? {
17598
+ name: "default",
17599
+ fn: vue.withCtx((slotProps) => [vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps(slotProps)), void 0, true)]),
17600
+ key: "0"
17601
+ } : void 0, vue.renderList(vue.unref(extractSlotsWithPrefix)(_ctx.$slots, "list"), (item) => {
17602
+ return {
17603
+ name: item.filterName,
17604
+ fn: vue.withCtx((slotProps) => [vue.renderSlot(_ctx.$slots, item.originalName, vue.normalizeProps(vue.guardReactiveProps(slotProps)), void 0, true)])
17605
+ };
17606
+ })]), 1040, ["data"])])]);
17607
+ };
17608
+ }
17609
+ });
17610
+ const list = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-4b3f4055"]]);
17246
17611
  function defineQdCrudTable(config) {
17247
17612
  return config;
17248
17613
  }
17614
+ function defineQdCrudList(config) {
17615
+ return config;
17616
+ }
17249
17617
  const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
17250
17618
  ...{
17251
17619
  name: "QdDictSelect"
@@ -17567,7 +17935,13 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
17567
17935
  (!reProps.value.theme || reProps.value.theme === "text") && !__props.variant && (item.theme === "text" || !item.theme) ? (vue.openBlock(), vue.createElementBlock("span", {
17568
17936
  key: item.value,
17569
17937
  class: vue.normalizeClass(item.class)
17570
- }, vue.toDisplayString(item.label), 3)) : (vue.openBlock(), vue.createBlock(vue.unref(tdesignVueNext.Tag), {
17938
+ }, [
17939
+ vue.renderSlot(_ctx.$slots, "prefix", { item }, void 0, true),
17940
+ vue.renderSlot(_ctx.$slots, "default", { item }, () => [
17941
+ vue.createTextVNode(vue.toDisplayString(item.label), 1)
17942
+ ], true),
17943
+ vue.renderSlot(_ctx.$slots, "suffix", { item }, void 0, true)
17944
+ ], 2)) : (vue.openBlock(), vue.createBlock(vue.unref(tdesignVueNext.Tag), {
17571
17945
  key: item.value + "",
17572
17946
  index: index2,
17573
17947
  size: reProps.value.size,
@@ -17577,15 +17951,17 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
17577
17951
  class: vue.normalizeClass(item.class)
17578
17952
  }, {
17579
17953
  default: vue.withCtx(() => [
17580
- vue.createTextVNode(vue.toDisplayString(item.label), 1)
17954
+ vue.renderSlot(_ctx.$slots, "prefix", { item }, void 0, true),
17955
+ vue.renderSlot(_ctx.$slots, "default", { item }, () => [
17956
+ vue.createTextVNode(vue.toDisplayString(item.label), 1)
17957
+ ], true),
17958
+ vue.renderSlot(_ctx.$slots, "suffix", { item }, void 0, true)
17581
17959
  ]),
17582
17960
  _: 2
17583
17961
  }, 1032, ["index", "size", "shape", "theme", "variant", "class"])),
17584
- (_ctx.$slots.separator || __props.separator) && matchOptions.value.length - 1 !== index2 ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
17585
- _ctx.$slots.separator ? vue.renderSlot(_ctx.$slots, "separator", { key: 0 }) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
17586
- vue.createTextVNode(vue.toDisplayString(__props.separator), 1)
17587
- ], 64))
17588
- ], 64)) : vue.createCommentVNode("", true)
17962
+ (_ctx.$slots.separator || __props.separator) && matchOptions.value.length - 1 !== index2 ? vue.renderSlot(_ctx.$slots, "separator", { key: 2 }, () => [
17963
+ vue.createTextVNode(vue.toDisplayString(__props.separator), 1)
17964
+ ], true) : vue.createCommentVNode("", true)
17589
17965
  ], 64);
17590
17966
  }), 256))
17591
17967
  ])), [
@@ -17594,6 +17970,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
17594
17970
  };
17595
17971
  }
17596
17972
  });
17973
+ const tag = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-1c89a500"]]);
17597
17974
  const qdUploadProps = {
17598
17975
  modelValue: () => [],
17599
17976
  files: () => [],
@@ -18312,17 +18689,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
18312
18689
  async (newVal, oldVal) => {
18313
18690
  if (!newVal.length || checkSameObject(newVal, oldVal) || fileList.value.length) return;
18314
18691
  const { valueMode } = reProps.value;
18315
- let ossList = [];
18316
- if (valueMode === "url") {
18317
- const [err, res] = await to(getOssByUrls(newVal));
18318
- if (err) return;
18319
- ossList = res;
18320
- } else {
18321
- const [err, res] = await to(getOssByIds(newVal));
18322
- if (err) return;
18323
- ossList = res;
18324
- }
18325
- fileList.value = ossList.map((item) => {
18692
+ const apiFn = valueMode === "url" ? getOssByUrls : getOssByIds;
18693
+ const [err, res] = await to(apiFn(newVal));
18694
+ if (err) return;
18695
+ fileList.value = res.map((item) => {
18326
18696
  const { url, ossId, originalName, size, createTime } = item;
18327
18697
  return {
18328
18698
  url,
@@ -18425,20 +18795,21 @@ exports.QdConfigProvider = QdConfigProvider;
18425
18795
  exports.QdFormItem = QdFormItem;
18426
18796
  exports.QdGrid = QdGrid;
18427
18797
  exports.QdGridItem = QdGridItem;
18798
+ exports.QdServiceList = QdServiceList;
18428
18799
  exports.QdServiceTable = QdServiceTable;
18429
- exports._sfc_main = _sfc_main$g;
18430
- exports._sfc_main$1 = _sfc_main$f;
18431
- exports._sfc_main$2 = _sfc_main$c;
18432
- exports._sfc_main$3 = _sfc_main$7;
18800
+ exports._sfc_main = _sfc_main$i;
18801
+ exports._sfc_main$1 = _sfc_main$h;
18802
+ exports._sfc_main$2 = _sfc_main$d;
18803
+ exports._sfc_main$3 = _sfc_main$8;
18433
18804
  exports._sfc_main$4 = _sfc_main$4;
18434
- exports._sfc_main$5 = _sfc_main$1;
18435
- exports._sfc_main$6 = _sfc_main$8;
18436
- exports._sfc_main$7 = _sfc_main;
18805
+ exports._sfc_main$5 = _sfc_main$9;
18806
+ exports._sfc_main$6 = _sfc_main;
18437
18807
  exports._typeof = _typeof;
18438
18808
  exports.auth = auth;
18439
18809
  exports.checkboxGroup = checkboxGroup;
18440
18810
  exports.commonjsGlobal = commonjsGlobal;
18441
18811
  exports.dayjs_minExports = dayjs_minExports$1;
18812
+ exports.defineQdCrudList = defineQdCrudList;
18442
18813
  exports.defineQdCrudTable = defineQdCrudTable;
18443
18814
  exports.getValueByPath = getValueByPath;
18444
18815
  exports.hasPermi = hasPermi;
@@ -18446,6 +18817,7 @@ exports.hasPermiDirective = hasPermiDirective;
18446
18817
  exports.hasRole = hasRole;
18447
18818
  exports.hasRoleDirective = hasRoleDirective;
18448
18819
  exports.index = index;
18820
+ exports.list = list;
18449
18821
  exports.parseVModelPath = parseVModelPath;
18450
18822
  exports.qdAsyncCompute = qdAsyncCompute;
18451
18823
  exports.qdCompute = qdCompute;
@@ -18457,9 +18829,10 @@ exports.resolveVModelBinding = resolveVModelBinding;
18457
18829
  exports.select = select;
18458
18830
  exports.setValueByPath = setValueByPath;
18459
18831
  exports.table = table;
18832
+ exports.tag = tag;
18460
18833
  exports.useDict = useDict;
18461
18834
  exports.useDictDynamic = useDictDynamic;
18462
18835
  exports.useDisabled = useDisabled;
18463
18836
  exports.useModal = useModal;
18464
18837
  exports.useReadonly = useReadonly;
18465
- //# sourceMappingURL=index-BhiVTQHR.js.map
18838
+ //# sourceMappingURL=index-B9OY1KvY.js.map