qidian-vue-ui 1.2.87 → 1.2.89

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.
@@ -3,6 +3,9 @@ import type { QdAsyncComputeOptions, QdComputeFunction, QdConfigRendererProps }
3
3
  export declare function qdCompute<T = unknown>(fn: QdComputeFunction<T>): QdComputeFunction<T>;
4
4
  export declare function qdAsyncCompute<T = unknown>(options: QdAsyncComputeOptions<T>): QdAsyncComputeOptions<T>;
5
5
  export declare function qdUseComputeValue<T = unknown>(computeFn: QdComputeFunction<T> | QdAsyncComputeOptions<T>, context: Ref<Record<string, unknown>> | ComputedRef<Record<string, unknown>>, crudMode: QdConfigRendererProps['crudMode']): {
6
+ result: ComputedRef<T>;
7
+ loading: Ref<boolean, boolean>;
8
+ } | {
6
9
  result: Ref<T, T>;
7
10
  loading: Ref<boolean, boolean>;
8
11
  };
@@ -1,5 +1,5 @@
1
1
  import { to } from "qidian-shared";
2
- import { ref, watch, computed } from "vue";
2
+ import { ref, computed, watch } from "vue";
3
3
  const watchHandleMap = /* @__PURE__ */ new Map();
4
4
  function qdCompute(fn) {
5
5
  fn.__qdCompute = true;
@@ -16,49 +16,44 @@ function qdUseComputeValue(computeFn, context, crudMode) {
16
16
  if (!computeId) {
17
17
  throw new Error("[configRenderer.qdUseComputeValue] 计算函数必须具有 ID");
18
18
  }
19
- watchHandleMap.get(computeId)?.();
20
- let watchHandle;
19
+ if ("__qdCompute" in computeFn) {
20
+ return {
21
+ result: computed(() => computeFn(context.value, crudMode)),
22
+ loading: ref(false)
23
+ };
24
+ }
25
+ const asyncCompute = computeFn;
26
+ const { asyncFn, watch: watchFn } = asyncCompute;
21
27
  const result = ref();
22
28
  const loading = ref(false);
23
- if ("__qdCompute" in computeFn) {
29
+ watchHandleMap.get(computeId)?.();
30
+ let watchHandle;
31
+ if (watchFn) {
32
+ const watchValue = computed(() => watchFn(context.value));
24
33
  watchHandle = watch(
25
- context,
26
- (newValue) => {
27
- result.value = computeFn(newValue, crudMode);
34
+ watchValue,
35
+ async (newValue) => {
36
+ loading.value = true;
37
+ try {
38
+ result.value = await asyncFn(newValue, context.value, crudMode);
39
+ } finally {
40
+ loading.value = false;
41
+ }
28
42
  },
29
- { immediate: true, deep: true }
43
+ { immediate: true }
30
44
  );
31
45
  } else {
32
- const asyncCompute = computeFn;
33
- const { asyncFn, watch: watchFn } = asyncCompute;
34
- if (watchFn) {
35
- const watchValue = computed(() => watchFn(context.value));
36
- watchHandle = watch(
37
- watchValue,
38
- async (newValue) => {
39
- loading.value = true;
40
- try {
41
- result.value = await asyncFn(newValue, context.value, crudMode);
42
- } finally {
43
- loading.value = false;
44
- }
45
- },
46
- { immediate: true }
47
- );
48
- } else {
49
- loading.value = true;
50
- (async () => {
51
- const watchValue = context.value;
52
- const [asyncErr, value] = await to(asyncFn(watchValue, context.value, crudMode));
53
- loading.value = false;
54
- if (asyncErr) return asyncErr;
55
- result.value = value;
56
- })();
57
- }
46
+ loading.value = true;
47
+ (async () => {
48
+ const watchValue = context.value;
49
+ const [asyncErr, value] = await to(asyncFn(watchValue, context.value, crudMode));
50
+ loading.value = false;
51
+ if (asyncErr) return asyncErr;
52
+ result.value = value;
53
+ })();
58
54
  }
59
55
  if (watchHandle) watchHandleMap.set(computeId, watchHandle);
60
- const res = { result, loading };
61
- return res;
56
+ return { result, loading };
62
57
  }
63
58
  export {
64
59
  qdAsyncCompute,
@@ -1 +1 @@
1
- {"version":3,"file":"compute.mjs","sources":["../../../src/components/config-renderer/compute.ts"],"sourcesContent":["import { to } from 'qidian-shared'\nimport type { ComputedRef, Ref, WatchHandle } from 'vue'\nimport { computed, ref, watch } from 'vue'\n\nimport type { QdAsyncComputeOptions, QdComputeFunction, QdConfigRendererProps } from './types'\n\nconst watchHandleMap = new Map<string, WatchHandle>()\n\nexport function qdCompute<T = unknown>(fn: QdComputeFunction<T>) {\n fn.__qdCompute = true\n fn.__qdId = `qd_compute_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`\n return fn\n}\n\nexport function qdAsyncCompute<T = unknown>(options: QdAsyncComputeOptions<T>) {\n options.__qdAsyncCompute = true\n options.__qdId = `qd_async_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`\n return options\n}\n\nexport function qdUseComputeValue<T = unknown>(\n computeFn: QdComputeFunction<T> | QdAsyncComputeOptions<T>,\n context: Ref<Record<string, unknown>> | ComputedRef<Record<string, unknown>>,\n crudMode: QdConfigRendererProps['crudMode']\n) {\n const computeId = computeFn.__qdId\n if (!computeId) {\n throw new Error('[configRenderer.qdUseComputeValue] 计算函数必须具有 ID')\n }\n\n watchHandleMap.get(computeId)?.()\n let watchHandle: WatchHandle | undefined\n const result = ref<T>() as Ref<T>\n const loading = ref(false)\n\n if ('__qdCompute' in computeFn) {\n watchHandle = watch(\n context,\n (newValue) => {\n result.value = computeFn(newValue, crudMode)\n },\n { immediate: true, deep: true }\n )\n } else {\n // qdAsyncCompute\n const asyncCompute = computeFn as QdAsyncComputeOptions<T>\n const { asyncFn, watch: watchFn } = asyncCompute\n\n if (watchFn) {\n // 有 watch 监听\n const watchValue = computed(() => watchFn(context.value))\n\n watchHandle = watch(\n watchValue,\n async (newValue: unknown) => {\n loading.value = true\n try {\n result.value = await asyncFn(newValue, context.value, crudMode)\n } finally {\n loading.value = false\n }\n },\n { immediate: true }\n )\n } else {\n // 只执行一次\n loading.value = true\n ;(async () => {\n const watchValue = context.value\n\n const [asyncErr, value] = await to(asyncFn(watchValue, context.value, crudMode))\n loading.value = false\n if (asyncErr) return asyncErr\n\n result.value = value\n })()\n }\n }\n\n if (watchHandle) watchHandleMap.set(computeId, watchHandle)\n const res = { result, loading }\n\n return res\n}\n"],"names":[],"mappings":";;AAMA,MAAM,qCAAqB,IAAA;AAEpB,SAAS,UAAuB,IAA0B;AAC/D,KAAG,cAAc;AACjB,KAAG,SAAS,cAAc,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAC9E,SAAO;AACT;AAEO,SAAS,eAA4B,SAAmC;AAC7E,UAAQ,mBAAmB;AAC3B,UAAQ,SAAS,YAAY,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AACjF,SAAO;AACT;AAEO,SAAS,kBACd,WACA,SACA,UACA;AACA,QAAM,YAAY,UAAU;AAC5B,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,iBAAe,IAAI,SAAS,IAAA;AAC5B,MAAI;AACJ,QAAM,SAAS,IAAA;AACf,QAAM,UAAU,IAAI,KAAK;AAEzB,MAAI,iBAAiB,WAAW;AAC9B,kBAAc;AAAA,MACZ;AAAA,MACA,CAAC,aAAa;AACZ,eAAO,QAAQ,UAAU,UAAU,QAAQ;AAAA,MAC7C;AAAA,MACA,EAAE,WAAW,MAAM,MAAM,KAAA;AAAA,IAAK;AAAA,EAElC,OAAO;AAEL,UAAM,eAAe;AACrB,UAAM,EAAE,SAAS,OAAO,QAAA,IAAY;AAEpC,QAAI,SAAS;AAEX,YAAM,aAAa,SAAS,MAAM,QAAQ,QAAQ,KAAK,CAAC;AAExD,oBAAc;AAAA,QACZ;AAAA,QACA,OAAO,aAAsB;AAC3B,kBAAQ,QAAQ;AAChB,cAAI;AACF,mBAAO,QAAQ,MAAM,QAAQ,UAAU,QAAQ,OAAO,QAAQ;AAAA,UAChE,UAAA;AACE,oBAAQ,QAAQ;AAAA,UAClB;AAAA,QACF;AAAA,QACA,EAAE,WAAW,KAAA;AAAA,MAAK;AAAA,IAEtB,OAAO;AAEL,cAAQ,QAAQ;AACf,OAAC,YAAY;AACZ,cAAM,aAAa,QAAQ;AAE3B,cAAM,CAAC,UAAU,KAAK,IAAI,MAAM,GAAG,QAAQ,YAAY,QAAQ,OAAO,QAAQ,CAAC;AAC/E,gBAAQ,QAAQ;AAChB,YAAI,SAAU,QAAO;AAErB,eAAO,QAAQ;AAAA,MACjB,GAAA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,YAAa,gBAAe,IAAI,WAAW,WAAW;AAC1D,QAAM,MAAM,EAAE,QAAQ,QAAA;AAEtB,SAAO;AACT;"}
1
+ {"version":3,"file":"compute.mjs","sources":["../../../src/components/config-renderer/compute.ts"],"sourcesContent":["import { to } from 'qidian-shared'\nimport type { ComputedRef, Ref, WatchHandle } from 'vue'\nimport { computed, ref, watch } from 'vue'\n\nimport type { QdAsyncComputeOptions, QdComputeFunction, QdConfigRendererProps } from './types'\n\nconst watchHandleMap = new Map<string, WatchHandle>()\n\nexport function qdCompute<T = unknown>(fn: QdComputeFunction<T>) {\n fn.__qdCompute = true\n fn.__qdId = `qd_compute_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`\n return fn\n}\n\nexport function qdAsyncCompute<T = unknown>(options: QdAsyncComputeOptions<T>) {\n options.__qdAsyncCompute = true\n options.__qdId = `qd_async_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`\n return options\n}\n\nexport function qdUseComputeValue<T = unknown>(\n computeFn: QdComputeFunction<T> | QdAsyncComputeOptions<T>,\n context: Ref<Record<string, unknown>> | ComputedRef<Record<string, unknown>>,\n crudMode: QdConfigRendererProps['crudMode']\n) {\n const computeId = computeFn.__qdId\n if (!computeId) {\n throw new Error('[configRenderer.qdUseComputeValue] 计算函数必须具有 ID')\n }\n\n if ('__qdCompute' in computeFn) {\n return {\n result: computed(() => (computeFn as QdComputeFunction<T>)(context.value, crudMode)),\n loading: ref(false)\n }\n }\n\n // qdAsyncCompute\n const asyncCompute = computeFn as QdAsyncComputeOptions<T>\n const { asyncFn, watch: watchFn } = asyncCompute\n const result = ref<T>() as Ref<T>\n const loading = ref(false)\n\n watchHandleMap.get(computeId)?.()\n let watchHandle: WatchHandle | undefined\n\n if (watchFn) {\n // 有 watch 监听\n const watchValue = computed(() => watchFn(context.value))\n\n watchHandle = watch(\n watchValue,\n async (newValue: unknown) => {\n loading.value = true\n try {\n result.value = await asyncFn(newValue, context.value, crudMode)\n } finally {\n loading.value = false\n }\n },\n { immediate: true }\n )\n } else {\n // 只执行一次\n loading.value = true\n ;(async () => {\n const watchValue = context.value\n\n const [asyncErr, value] = await to(asyncFn(watchValue, context.value, crudMode))\n loading.value = false\n if (asyncErr) return asyncErr\n\n result.value = value\n })()\n }\n\n if (watchHandle) watchHandleMap.set(computeId, watchHandle)\n\n return { result, loading }\n}\n"],"names":[],"mappings":";;AAMA,MAAM,qCAAqB,IAAA;AAEpB,SAAS,UAAuB,IAA0B;AAC/D,KAAG,cAAc;AACjB,KAAG,SAAS,cAAc,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAC9E,SAAO;AACT;AAEO,SAAS,eAA4B,SAAmC;AAC7E,UAAQ,mBAAmB;AAC3B,UAAQ,SAAS,YAAY,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AACjF,SAAO;AACT;AAEO,SAAS,kBACd,WACA,SACA,UACA;AACA,QAAM,YAAY,UAAU;AAC5B,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,MAAI,iBAAiB,WAAW;AAC9B,WAAO;AAAA,MACL,QAAQ,SAAS,MAAO,UAAmC,QAAQ,OAAO,QAAQ,CAAC;AAAA,MACnF,SAAS,IAAI,KAAK;AAAA,IAAA;AAAA,EAEtB;AAGA,QAAM,eAAe;AACrB,QAAM,EAAE,SAAS,OAAO,QAAA,IAAY;AACpC,QAAM,SAAS,IAAA;AACf,QAAM,UAAU,IAAI,KAAK;AAEzB,iBAAe,IAAI,SAAS,IAAA;AAC5B,MAAI;AAEJ,MAAI,SAAS;AAEX,UAAM,aAAa,SAAS,MAAM,QAAQ,QAAQ,KAAK,CAAC;AAExD,kBAAc;AAAA,MACZ;AAAA,MACA,OAAO,aAAsB;AAC3B,gBAAQ,QAAQ;AAChB,YAAI;AACF,iBAAO,QAAQ,MAAM,QAAQ,UAAU,QAAQ,OAAO,QAAQ;AAAA,QAChE,UAAA;AACE,kBAAQ,QAAQ;AAAA,QAClB;AAAA,MACF;AAAA,MACA,EAAE,WAAW,KAAA;AAAA,IAAK;AAAA,EAEtB,OAAO;AAEL,YAAQ,QAAQ;AACf,KAAC,YAAY;AACZ,YAAM,aAAa,QAAQ;AAE3B,YAAM,CAAC,UAAU,KAAK,IAAI,MAAM,GAAG,QAAQ,YAAY,QAAQ,OAAO,QAAQ,CAAC;AAC/E,cAAQ,QAAQ;AAChB,UAAI,SAAU,QAAO;AAErB,aAAO,QAAQ;AAAA,IACjB,GAAA;AAAA,EACF;AAEA,MAAI,YAAa,gBAAe,IAAI,WAAW,WAAW;AAE1D,SAAO,EAAE,QAAQ,QAAA;AACnB;"}
@@ -1,36 +1,36 @@
1
- .qd-crud-table[data-v-ddde9561] {
1
+ .qd-crud-table[data-v-a7f96756] {
2
2
  width: 100%;
3
3
  height: 100%;
4
4
  display: flex;
5
5
  flex-direction: column;
6
6
  }
7
- .qd-crud-table > .qd-crud-search:not(.qd-crud-search--hide) + .qd-crud-table__body[data-v-ddde9561] {
7
+ .qd-crud-table > .qd-crud-search:not(.qd-crud-search--hide) + .qd-crud-table__body[data-v-a7f96756] {
8
8
  margin-top: var(--td-comp-margin-l);
9
9
  }
10
- .qd-crud-table__body[data-v-ddde9561] {
10
+ .qd-crud-table__body[data-v-a7f96756] {
11
11
  flex: auto;
12
12
  }
13
- .qd-crud-table__body[data-v-ddde9561] > .t-loading__parent > .t-card__body {
13
+ .qd-crud-table__body[data-v-a7f96756] > .t-loading__parent > .t-card__body {
14
14
  height: 100%;
15
15
  min-height: 443px;
16
16
  display: flex;
17
17
  flex-direction: column;
18
18
  }
19
- .qd-crud-table__body[data-v-ddde9561] > .t-loading__parent > .t-card__body > .qd-service-table {
19
+ .qd-crud-table__body[data-v-a7f96756] > .t-loading__parent > .t-card__body > .qd-service-table {
20
20
  flex: 1 1 0;
21
21
  overflow: hidden;
22
22
  }
23
- .qd-crud-table__body[data-v-ddde9561] > .t-loading__parent > .t-card__body > .qd-service-table .t-table__pagination {
23
+ .qd-crud-table__body[data-v-a7f96756] > .t-loading__parent > .t-card__body > .qd-service-table .t-table__pagination {
24
24
  padding-bottom: 0;
25
25
  }
26
- .qd-crud-table__toolbar[data-v-ddde9561] {
26
+ .qd-crud-table__toolbar[data-v-a7f96756] {
27
27
  display: flex;
28
28
  justify-content: space-between;
29
29
  }
30
- .qd-crud-table__toolbar:has(.t-space-item) + .qd-service-table[data-v-ddde9561] {
30
+ .qd-crud-table__toolbar:has(.t-space-item) + .qd-service-table[data-v-a7f96756] {
31
31
  margin-top: var(--td-comp-margin-l);
32
32
  }
33
- .qd-crud-table__toolbar-separator[data-v-ddde9561] {
33
+ .qd-crud-table__toolbar-separator[data-v-a7f96756] {
34
34
  display: inline-block;
35
35
  padding-left: var(--td-comp-paddingLR-s);
36
36
  }
@@ -2,7 +2,7 @@ import './index.css'
2
2
  import _sfc_main from "./index.vue2.mjs";
3
3
  /* empty css */
4
4
  import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.mjs";
5
- const QdCrudTable = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-ddde9561"]]);
5
+ const QdCrudTable = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a7f96756"]]);
6
6
  export {
7
7
  QdCrudTable as default
8
8
  };
@@ -615,6 +615,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
615
615
  function openColumnController() {
616
616
  columnControllerVisible.value = true;
617
617
  }
618
+ const handleColumnResizeChange = (context) => {
619
+ reProps.value.serviceTableOptions.onColumnResizeChange?.(context);
620
+ const {
621
+ columnsWidth
622
+ } = context;
623
+ const newColumns = cloneDeep(mergeColumns.value ?? []);
624
+ let hasChanged = false;
625
+ newColumns.forEach((col) => {
626
+ const width = columnsWidth[col.colKey];
627
+ if (width === void 0 || col.width === width) return;
628
+ col.width = width;
629
+ col.minWidth = void 0;
630
+ hasChanged = true;
631
+ });
632
+ if (!hasChanged) return;
633
+ mergeColumns.value = newColumns;
634
+ };
618
635
  function buildActions(actions, crudForm) {
619
636
  if (!actions) return [];
620
637
  return actions.map((item) => mergeAction({
@@ -1121,7 +1138,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1121
1138
  "expanded-tree-nodes": unref(expandedTreeNodes),
1122
1139
  "onUpdate:expandedTreeNodes": _cache[8] || (_cache[8] = ($event) => isRef(expandedTreeNodes) ? expandedTreeNodes.value = $event : null),
1123
1140
  columns: showColumns.value
1124
- }, reProps.value.serviceTableOptions), createSlots({
1141
+ }, reProps.value.serviceTableOptions, {
1142
+ onColumnResizeChange: handleColumnResizeChange
1143
+ }), createSlots({
1125
1144
  operation: withCtx((slotProps) => [renderSlot(_ctx.$slots, "table-operation", normalizeProps(guardReactiveProps(slotProps)), () => [reProps.value.rowActions?.length ? (openBlock(), createBlock(unref(Space), {
1126
1145
  key: 0,
1127
1146
  align: "center",
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.mjs","sources":["../../../../src/components/crud/table/index.vue"],"sourcesContent":["<template>\n <div class=\"qd-crud-table\">\n <slot name=\"header\">\n <qd-crud-search\n v-if=\"reProps.searchOptions?.items?.length\"\n v-show=\"searchVisible\"\n ref=\"search\"\n v-model:data=\"searchData\"\n :class=\"[!searchVisible ? 'qd-crud-search--hide' : '']\"\n v-bind=\"reProps.searchOptions\"\n @submit=\"triggerSearch\"\n @search=\"handleSearch\"\n @reset=\"handleResetSearch\"\n >\n <template\n v-for=\"item in extractSlotsWithPrefix($slots, 'search')\"\n #[item.filterName]=\"slotProps\"\n >\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-crud-search>\n </slot>\n\n <qd-card class=\"qd-crud-table__body\">\n <div class=\"qd-crud-table__toolbar\">\n <t-space align=\"center\" :size=\"0\">\n <slot name=\"actions\">\n <template v-for=\"(item, index) in reProps.actions\" :key=\"item.uid || index\">\n <span\n v-if=\"getActionSeparator(item, { index })\"\n class=\"qd-crud-table__toolbar-separator\"\n ></span>\n\n <qd-config-renderer\n v-hasPermi=\"item.permi\"\n fn-inject-ctx\n :context=\"getConfigRendererCtx(item)\"\n :config=\"{\n is: TButton,\n ...item,\n form: undefined,\n onClick: buildActionOnClick(item),\n disabled: buildActionDisabled(item)\n }\"\n @if-render-change=\"(ifRender) => setActionIfRender(ifRender, item, { index })\"\n />\n </template>\n </slot>\n </t-space>\n\n <t-space align=\"center\" :size=\"0\">\n <slot name=\"tools\">\n <!-- 用户通过 props 配置的工具 -->\n <template v-for=\"(item, index) in reProps.tools\" :key=\"index\">\n <span\n v-if=\"getActionSeparator(item, { index, mapKey: 'tool' })\"\n class=\"qd-crud-table__toolbar-separator\"\n ></span>\n\n <t-tooltip :content=\"item.content\" :disabled=\"!item.content\">\n <qd-config-renderer\n v-hasPermi=\"item.permi\"\n fn-inject-ctx\n :context=\"getConfigRendererCtx(item)\"\n :config=\"{\n is: TButton,\n ...item,\n content: '',\n variant: 'text',\n shape: 'square',\n onClick: buildActionOnClick(item as QdCrudTableAction<D>),\n disabled: buildActionDisabled(item as QdCrudTableAction<D>)\n }\"\n @if-render-change=\"\n (ifRender) => setActionIfRender(ifRender, item, { index, mapKey: 'tool' })\n \"\n />\n </t-tooltip>\n </template>\n\n <!-- 展开/收起搜索 -->\n <template v-if=\"!reProps.hideSearchVisible && reProps.searchOptions?.items?.length\">\n <span class=\"qd-crud-table__toolbar-separator\"></span>\n <t-tooltip :content=\"searchVisible ? t('hideSearchText') : t('showSearchText')\">\n <t-button variant=\"text\" shape=\"square\" @click=\"toggleSearchVisible\">\n <template #icon><search-icon /></template>\n </t-button>\n </t-tooltip>\n </template>\n\n <!-- 刷新列表 -->\n <template v-if=\"!reProps.hideRefresh\">\n <span class=\"qd-crud-table__toolbar-separator\"></span>\n <t-tooltip :content=\"t('refreshText')\">\n <t-button variant=\"text\" shape=\"square\" @click=\"handleRefresh\">\n <template #icon><refresh-icon /></template>\n </t-button>\n </t-tooltip>\n </template>\n\n <!-- 展开/收起树 -->\n <template\n v-if=\"!reProps.hideTreeExpand && !isEmpty(reProps.serviceTableOptions.tree) && !reProps.serviceTableOptions.tree!.lazyLoad\"\n >\n <span class=\"qd-crud-table__toolbar-separator\"></span>\n <t-tooltip :content=\"treeIsExpand ? t('collapseTreeText') : t('expandTreeText')\">\n <t-button variant=\"text\" shape=\"square\" @click=\"toggleTreeExpandAll\">\n <template #icon>\n <unfold-less-icon v-if=\"treeIsExpand\" />\n <unfold-more-icon v-else />\n </template>\n </t-button>\n </t-tooltip>\n </template>\n\n <!-- 列配置 -->\n <template\n v-if=\"\n reProps.serviceTableOptions.columnController?.hideTriggerButton !== true &&\n !reProps.hideColumnController\n \"\n >\n <span class=\"qd-crud-table__toolbar-separator\"></span>\n <t-tooltip :content=\"t('columnControllerText')\">\n <t-button variant=\"text\" shape=\"square\" @click=\"openColumnController\">\n <template #icon><setting-icon /></template>\n </t-button>\n </t-tooltip>\n </template>\n </slot>\n </t-space>\n </div>\n\n <qd-service-table\n ref=\"table\"\n v-model:data=\"data\"\n v-model:selected-row-keys=\"selectedRowKeys\"\n v-model:active-row-keys=\"activeRowKeys\"\n v-model:expanded-row-keys=\"expandedRowKeys\"\n v-model:filter-value=\"filterValue\"\n v-model:sort=\"sort\"\n v-model:expanded-tree-nodes=\"expandedTreeNodes\"\n :columns=\"showColumns\"\n v-bind=\"reProps.serviceTableOptions\"\n >\n <template #operation=\"slotProps\">\n <slot name=\"table-operation\" v-bind=\"slotProps\">\n <t-space v-if=\"reProps.rowActions?.length\" align=\"center\" :size=\"0\" @click.stop>\n <template v-for=\"(item, index) in reProps.rowActions\">\n <t-divider\n v-if=\"\n getActionSeparator(item, {\n colIndex: slotProps.colIndex,\n rowIndex: slotProps.rowIndex,\n index\n })\n \"\n :key=\"`${slotProps.colIndex}.${slotProps.rowIndex}.${index}.divider`\"\n layout=\"vertical\"\n />\n\n <qd-config-renderer\n v-if=\"true\"\n :key=\"`${slotProps.colIndex}.${slotProps.rowIndex}.${index}.renderer`\"\n v-hasPermi=\"item.permi\"\n fn-inject-ctx\n :context=\"getConfigRendererCtx(item, slotProps)\"\n :config=\"{ is: TLink, ...item, onClick: buildActionOnClick(item, slotProps) }\"\n @if-render-change=\"\n (ifRender) =>\n setActionIfRender(ifRender, item, {\n colIndex: slotProps.colIndex,\n rowIndex: slotProps.rowIndex,\n index\n })\n \"\n />\n </template>\n </t-space>\n </slot>\n </template>\n\n <template\n v-for=\"item in extractSlotsWithPrefix($slots, 'table')\"\n #[item.filterName]=\"slotProps\"\n >\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-service-table>\n </qd-card>\n\n <qd-config-renderer\n v-for=\"(dialogForm, uid) in dialogFormMap\"\n :key=\"uid\"\n :config=\"{\n is: QdDialogForm,\n ...dialogForm.form,\n vModelVisible: 'self.visible',\n vModelData: 'self.data',\n crudMode: dialogForm.crudMode\n }\"\n :context=\"getConfigRendererCtx(dialogForm)\"\n />\n\n <qd-columns-controller\n v-model:visible=\"columnControllerVisible\"\n v-model:columns=\"mergeColumns\"\n :default-columns=\"reProps.columns\"\n />\n </div>\n</template>\n\n<script\n setup\n lang=\"tsx\"\n generic=\"\n D extends TableRowData = TableRowData,\n R = unknown,\n P = ServicePageParams,\n TP = P,\n Pag extends ServicePagination = ServicePagination\n \"\n>\n import { useLocalStorage, useVModels } from '@vueuse/core'\n import { cloneDeep, get, merge } from 'lodash-es'\n import type { ServiceMaybePageParams, ServicePageParams, ServicePagination } from 'qidian-shared'\n import {\n createExposeProxy,\n easyCopy,\n extractSlotsWithPrefix,\n generateRandomString,\n isEmpty,\n MD5,\n suspectedWrapperPromise,\n to\n } from 'qidian-shared'\n import {\n AddIcon,\n DeleteIcon,\n RefreshIcon,\n SearchIcon,\n SettingIcon,\n UnfoldLessIcon,\n UnfoldMoreIcon\n } from 'tdesign-icons-vue-next'\n import type {\n EnhancedTableInstanceFunctions,\n PrimaryTableCellParams,\n TableRowData,\n TableRowValue\n } from 'tdesign-vue-next'\n import {\n Button as TButton,\n Divider as TDivider,\n Link as TLink,\n Space as TSpace,\n Tooltip as TTooltip\n } from 'tdesign-vue-next'\n import type { ShallowRef } from 'vue'\n import {\n computed,\n nextTick,\n reactive,\n ref,\n shallowRef,\n toRef,\n triggerRef,\n useTemplateRef\n } from 'vue'\n\n import { hasPermiDirective } from '../../../directive'\n import { useModal } from '../../../hooks'\n import { auth } from '../../../utils'\n import { QdCard } from '../../card'\n import { QdColumnsController } from '../../columns-controller'\n import { useConfig } from '../../config-provider/useConfig'\n import { QdConfigRenderer } from '../../config-renderer'\n import { QdDialogForm } from '../../dialog'\n import type { QdFormSubmitContext } from '../../form'\n import type { QdServiceTableInstanceFunctions, QdServiceTableProps } from '../../service'\n import { QdServiceTable } from '../../service'\n import { qdServiceTableTreeConfig } from '../../service/table/props'\n import { QdCrudSearch } from '../search'\n import type { QdCrudTableCacheCol } from './columnsCache'\n import { getColumnsStorageKey, mergeColumnsWithCache } from './columnsCache'\n import { qdCrudTableProps } from './props'\n import type {\n QdCrudTableAction,\n QdCrudTableDeleteAction,\n QdCrudTableInstanceFunctions,\n QdCrudTableProps,\n QdCrudTableRowAction,\n QdCrudTableTool,\n QdCrudTableWrapper,\n TableDialogServiceRes\n } from './types'\n\n defineOptions({\n name: 'QdCrudTable'\n })\n\n const vHasPermi = hasPermiDirective\n\n type Props = QdCrudTableProps<D, R, P, TP, Pag>\n\n const props = withDefaults(defineProps<Props>(), qdCrudTableProps)\n const emit = defineEmits<{\n 'update:searchData': [Props['searchData']]\n\n 'update:data': [Props['data']]\n 'update:selectedRowKeys': [Props['selectedRowKeys']]\n 'update:activeRowKeys': [Props['activeRowKeys']]\n 'update:columnControllerVisible': [Props['columnControllerVisible']]\n 'update:expandedRowKeys': [Props['expandedRowKeys']]\n 'update:filterValue': [Props['filterValue']]\n 'update:sort': [Props['sort']]\n 'update:expandedTreeNodes': [Props['expandedTreeNodes']]\n }>()\n const {\n searchData,\n\n data,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes\n } = useVModels<typeof props, keyof typeof emit>(props, emit, { passive: true })\n\n const { t } = useConfig('crud')\n const { msgError, msgSuccess, alertWarning, confirm } = useModal()\n\n const treeIsExpand = computed(() => !!expandedTreeNodes.value?.length)\n\n const dialogFormMap = reactive<\n Record<\n string,\n Pick<QdCrudTableWrapper, 'crudMode'> & {\n visible: boolean\n data?: object\n form: ShallowRef<NonNullable<QdCrudTableWrapper['form']>>\n }\n >\n >({})\n\n const ifRenderMap = reactive<Record<string, boolean | undefined>>({})\n\n const tableRef = useTemplateRef<QdServiceTableInstanceFunctions<D, R, P, TP, Pag>>('table')\n\n const reProps = computed(() => {\n const {\n data,\n searchData: inSearchData,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes,\n transformParams,\n\n tableMinHeight,\n\n search,\n form,\n detail,\n\n add,\n actions,\n\n edit,\n view,\n del,\n rowActions,\n tools,\n\n hideSearchVisible,\n hideRefresh,\n hideTreeExpand,\n hideColumnController,\n\n title,\n columns,\n selectType,\n ...serviceTableOptions\n } = props\n\n const mergedTransformParams = (params: ServiceMaybePageParams<Pag>) => {\n const merged = { ...params, ...searchData.value } as ServiceMaybePageParams<Pag>\n if (transformParams) return transformParams(merged)\n return merged\n }\n\n const reAdd = mergeAction(\n { crudMode: 'add', permiID: 'add', content: t('addText'), icon: () => <AddIcon /> },\n add,\n form\n )\n const reActions = [reAdd, ...buildActions(actions, form)].filter(\n Boolean\n ) as QdCrudTableAction<D>[]\n\n const reEdit = mergeAction(\n {\n crudMode: 'edit',\n permiID: 'edit',\n content: t('editText'),\n theme: 'primary',\n hover: 'color'\n },\n edit,\n form\n )\n const reView = mergeAction(\n {\n crudMode: 'view',\n permiID: 'query',\n content: t('viewText'),\n theme: 'primary',\n hover: 'color'\n },\n view,\n form\n )\n const reDel = mergeAction(\n {\n crudMode: 'del',\n permiID: 'remove',\n content: t('deleteText'),\n theme: 'danger',\n hover: 'color',\n selectType: 'multiple'\n },\n del,\n form\n )\n const reRowActions = [reEdit, reView, ...buildActions(rowActions, form), reDel].filter(\n Boolean\n ) as QdCrudTableRowAction<D>[]\n\n let reSelectType = selectType\n const isBatchDel = reDel?.selectType === 'multiple'\n if ((!reSelectType && isBatchDel) || reActions.find((item) => item.selectType === 'multiple')) {\n reSelectType = 'multiple'\n }\n if (isBatchDel) {\n const batchDel = mergeAction(\n {\n crudMode: 'del',\n permiID: 'remove',\n content: t('batchDeleteText'),\n theme: 'danger',\n variant: 'outline',\n selectType: 'multiple',\n icon: () => <DeleteIcon />\n },\n del,\n form\n )\n\n reActions.splice(reAdd ? 1 : 0, 0, batchDel as QdCrudTableAction<D>)\n }\n\n const reColumns = columns || []\n const operationLength = reRowActions.length\n if (operationLength) {\n const operationIdx = reColumns.findIndex((item) => item.colKey === 'operation')\n const defaultOperation: (typeof reColumns)[number] = {\n title: t('operationText'),\n colKey: 'operation',\n align: 'center',\n fixed: 'right',\n width: 28 * operationLength + 25 * operationLength - 1 + 32\n }\n\n if (operationIdx > -1) {\n reColumns[operationIdx] = {\n ...defaultOperation,\n ...reColumns[operationIdx]\n }\n } else {\n reColumns.push(defaultOperation)\n }\n }\n\n const reTools = tools?.map((item) => {\n item.permi = buildActionPermi(item)\n return item\n })\n\n let reTableMinHeight = 'auto'\n if (tableMinHeight !== false) {\n if (typeof tableMinHeight === 'number') {\n reTableMinHeight = `${tableMinHeight}px`\n } else {\n reTableMinHeight = typeof tableMinHeight === 'string' ? tableMinHeight : '443px'\n }\n }\n\n return {\n title,\n tableMinHeight: reTableMinHeight,\n hideSearchVisible,\n hideRefresh,\n hideTreeExpand,\n hideColumnController,\n columns: reColumns,\n\n searchOptions: {\n ...search,\n btnDisabled: search?.btnDisabled ?? tableRef.value?.loading\n },\n serviceTableOptions: {\n ...serviceTableOptions,\n selectType: reSelectType,\n transformParams: mergedTransformParams\n } as Omit<QdServiceTableProps<D, R, P, TP, Pag>, 'columns'>,\n\n formOptions: form,\n detailOptions: detail,\n actions: reActions,\n rowActions: reRowActions,\n tools: reTools,\n\n models: {\n data,\n searchData: inSearchData,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes\n }\n }\n })\n\n const finalCacheColumnsKey = computed(() => {\n const { cacheColumnsKey, permiPrefix, columns } = props\n let key = ''\n\n if (cacheColumnsKey) {\n key = cacheColumnsKey\n } else {\n key = MD5(permiPrefix ? `${permiPrefix}:${JSON.stringify(columns)}` : JSON.stringify(columns))\n }\n\n return getColumnsStorageKey(key)\n })\n\n const cachedColumns = useLocalStorage<QdCrudTableCacheCol[]>(finalCacheColumnsKey, [])\n\n const mergeColumns = computed({\n get: () => {\n const original = reProps.value.columns\n if (!cachedColumns.value) return original\n return mergeColumnsWithCache(original, cachedColumns.value)\n },\n set: (val: QdCrudTableCacheCol[]) => {\n cachedColumns.value = val\n }\n })\n\n const showColumns = computed(() => mergeColumns.value?.filter((item) => !item.hidden))\n\n const searchVisible = ref(true)\n const searchRef = useTemplateRef('search')\n let searchMode: 'refresh' | 'changeCurrent' = 'refresh'\n\n function handleSearch() {\n searchMode = 'changeCurrent'\n }\n\n async function handleResetSearch() {\n searchMode = 'changeCurrent'\n searchRef.value?.reset()\n await nextTick()\n searchRef.value?.submit()\n }\n\n function triggerSearch({ validateResult }: QdFormSubmitContext<typeof searchData.value>) {\n if (validateResult !== true) return\n\n switch (searchMode) {\n case 'changeCurrent':\n tableRef.value?.changeCurrent(1)\n break\n default:\n tableRef.value?.refresh()\n break\n }\n }\n\n function handleRefresh() {\n searchMode = 'refresh'\n const searchRefV = searchRef.value\n if (searchRefV) {\n searchRefV.submit()\n return\n }\n\n tableRef.value?.refresh()\n }\n\n function toggleSearchVisible() {\n searchVisible.value = !searchVisible.value\n }\n\n function toggleTreeExpandAll() {\n if (treeIsExpand.value) (tableRef.value as any)?.foldAll()\n else (tableRef.value as any)?.expandAll()\n }\n\n function openColumnController() {\n columnControllerVisible.value = true\n }\n\n function buildActions<T extends QdCrudTableAction<D> | QdCrudTableRowAction<D>>(\n actions?: T[],\n crudForm?: QdCrudTableWrapper['form']\n ) {\n if (!actions) return []\n\n return actions.map(\n (item) =>\n mergeAction(\n {\n variant: 'outline',\n theme: 'primary',\n hover: 'color'\n } as unknown as T,\n item,\n crudForm\n )!\n )\n }\n\n function mergeAction<\n T extends QdCrudTableAction<D> | QdCrudTableRowAction<D> | QdCrudTableDeleteAction<D>\n >(\n defaultOptions: Partial<T>,\n currentOptions?: boolean | T,\n crudForm?: QdCrudTableWrapper['form']\n ) {\n if (currentOptions === false) return\n\n const mergeOptions = merge({}, defaultOptions, currentOptions)\n if (mergeOptions.crudMode !== 'view' && !currentOptions) return\n\n mergeOptions.permi = buildActionPermi(mergeOptions as QdCrudTableAction<D>)\n if (mergeOptions.crudMode !== 'del') {\n const form = buildActionForm(mergeOptions as QdCrudTableAction, crudForm)\n if (!form && !mergeOptions.onClick) return\n ;(mergeOptions as QdCrudTableAction | QdCrudTableRowAction).form = form\n }\n\n return mergeOptions as T\n }\n\n function getConfigRendererCtx<T = unknown, O = object>(self: T, other?: O) {\n return {\n tableData: data.value,\n searchData: searchData.value,\n selectedRowKeys: selectedRowKeys.value,\n activeRowKeys: activeRowKeys.value,\n self,\n ...other\n }\n }\n\n function actionIsCRU(crudMode: QdCrudTableAction['crudMode']) {\n return crudMode && ['add', 'edit', 'view'].includes(crudMode)\n }\n\n function buildActionPermi(action: QdCrudTableAction<D> | QdCrudTableTool<D>) {\n if (action.permi) return action.permi\n if (!props.permiPrefix || !action.permiID) return []\n return [`${props.permiPrefix}:${action.permiID}`]\n }\n\n function buildActionForm(action: QdCrudTableAction, crudForm?: QdCrudTableWrapper['form']) {\n const IsCRU = actionIsCRU(action.crudMode)\n if (!action.form && IsCRU) {\n action.form = cloneDeep(crudForm)\n }\n\n const { form } = action\n if (form) {\n if (action.crudMode === 'view') form.readonly = true\n\n if (!form.onSubmit && IsCRU) {\n form.onSubmit = async (context: QdFormSubmitContext) => {\n const { uid, service, transformParams, transformRes, crudMode } = action\n if (context.validateResult !== true || !service || !uid || !dialogFormMap[uid]) {\n return false\n }\n\n let currentParams = easyCopy(context.formData)\n\n if (transformParams) {\n const [tpErr, tpRes] = await suspectedWrapperPromise(transformParams(currentParams))\n if (tpErr) throw tpErr\n\n currentParams = tpRes\n }\n\n const [serviceErr, serviceRes] = await suspectedWrapperPromise(service(currentParams))\n if (serviceErr) throw serviceErr\n\n let res: TableDialogServiceRes | undefined\n if (transformRes) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes(serviceRes))\n if (trErr) throw trErr\n\n res = trRes\n } else {\n res = serviceRes as TableDialogServiceRes\n }\n\n if (typeof res === 'boolean') {\n res = { success: res, message: '' }\n }\n\n if (!res) {\n res = { success: true, message: '' }\n }\n\n const message = res.message\n if (res.success === false) {\n if (message) msgError(message)\n return false\n }\n\n msgSuccess(message || t('operationSuccessText'))\n\n if (crudMode === 'add') {\n tableRef.value?.changeCurrent(1)\n } else {\n tableRef.value?.refresh()\n }\n }\n }\n\n const { title } = props\n form.wrapper = merge(\n {},\n {\n header: `${action.content}${title || ''}`\n },\n form.wrapper\n )\n }\n\n return action.form\n }\n\n function buildActionOnClick(\n action: QdCrudTableAction<D> | QdCrudTableRowAction<D>,\n originalParams?: PrimaryTableCellParams<D>\n ) {\n if (action.onClick) return action.onClick\n\n if (action.crudMode === 'del') {\n // 删除/批量删除\n const onClick = async () => {\n const { service, transformParams, transformRes } = action\n const row = originalParams?.row\n\n if (\n !service ||\n (!row && action.selectType !== 'multiple') ||\n (!row && !selectedRowKeys.value.length && action.selectType === 'multiple')\n ) {\n return\n }\n\n const childrenKey =\n reProps.value.serviceTableOptions.tree?.childrenKey ||\n qdServiceTableTreeConfig.childrenKey\n const rowKey = reProps.value.serviceTableOptions.rowKey || qdCrudTableProps.rowKey\n const treeOpts = reProps.value.serviceTableOptions.tree\n const checkChildren = treeOpts?.delCheckChildren\n const rows = row\n ? [row]\n : selectedRowKeys.value\n .map((item: TableRowValue) => {\n const getData = tableRef.value?.getData\n if (getData) {\n return props.tree\n ? ((getData(item) as ReturnType<EnhancedTableInstanceFunctions['getData']>)\n ?.row as D | undefined)\n : (getData(item) as D | undefined)\n }\n\n return data.value.find((it: D) => get(it, rowKey) === item)\n })\n .filter(Boolean)\n\n if (typeof checkChildren === 'function') {\n let result = await checkChildren({\n row,\n rows,\n selectedRowKeys: selectedRowKeys.value,\n rowKey,\n childrenKey,\n tableData: data.value\n })\n\n if (typeof result === 'boolean') {\n result = { success: result, message: '' }\n }\n\n if (!result) {\n result = { success: true, message: '' }\n }\n\n if (result.success === false) {\n alertWarning(result.message || t('deleteHasChildrenText'))\n return\n }\n } else {\n let delHasChild = false\n const needCheckChildren = checkChildren ?? !treeOpts?.lazyLoad\n\n if (needCheckChildren && !row) {\n delHasChild = rows.some((item: D) => {\n const children = get(item, childrenKey)\n if (isEmpty(children)) return false\n if (children === true) return true\n return children.some(\n (child: D) => !selectedRowKeys.value.includes(get(child, rowKey))\n )\n })\n } else if (needCheckChildren && !isEmpty(row?.[childrenKey])) {\n delHasChild = true\n }\n\n if (delHasChild) {\n alertWarning(t('deleteHasChildrenText'))\n return\n }\n }\n\n confirm(\n { body: t('deleteWrapperBodyText'), ...(action as QdCrudTableDeleteAction).wrapper },\n async () => {\n const params = row || selectedRowKeys.value\n let currentParams = row\n ? params[reProps.value.serviceTableOptions.rowKey || qdCrudTableProps.rowKey]\n : selectedRowKeys.value\n\n if (transformParams) {\n const [tpErr, tpRes] = await suspectedWrapperPromise(\n transformParams(easyCopy(params))\n )\n if (tpErr) throw tpErr\n\n currentParams = tpRes\n }\n\n const [serviceErr, serviceRes] = await suspectedWrapperPromise(service(currentParams))\n if (serviceErr) throw serviceErr\n\n let res: TableDialogServiceRes | undefined\n if (transformRes) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes(serviceRes))\n if (trErr) throw trErr\n\n res = trRes\n } else {\n res = serviceRes as TableDialogServiceRes\n }\n\n if (typeof res === 'boolean') {\n res = { success: res, message: '' }\n }\n\n if (!res) {\n res = { success: true, message: '' }\n }\n\n const message = res.message\n if (res.success === false) {\n if (message) msgError(message)\n return false\n }\n\n msgSuccess(message || t('deleteSuccessText'))\n if (!row) selectedRowKeys.value = []\n tableRef.value?.refresh()\n return true\n }\n )\n }\n\n return onClick\n }\n\n if (isEmpty(action.form) || !actionIsCRU(action.crudMode)) return\n\n // 新增/编辑/查看\n const onClick = async () => {\n if (!action.uid) action.uid = generateRandomString(16)\n\n const uid = action.uid!\n if (!dialogFormMap[uid]) {\n dialogFormMap[uid] = {\n visible: false,\n data: {},\n crudMode: action.crudMode,\n form: shallowRef(action.form!)\n }\n }\n const form = toRef(dialogFormMap[uid], 'form')\n\n await nextTick()\n if (!dialogFormMap[uid].data) dialogFormMap[uid].data = {}\n dialogFormMap[uid].visible = true\n\n if (!action.crudMode || !['edit', 'view'].includes(action.crudMode) || !originalParams) {\n return\n }\n\n form.value.loading = true\n triggerRef(form)\n const [err, res] = await to(getDetail(action as QdCrudTableRowAction<D>, originalParams.row))\n form.value.loading = false\n triggerRef(form)\n if (err) {\n Object.assign(dialogFormMap[uid].data, originalParams.row)\n return\n }\n\n Object.assign(dialogFormMap[uid].data, res)\n }\n\n return onClick\n }\n\n function buildActionDisabled(action: QdCrudTableAction<D>) {\n if (action.disabled) return action.disabled\n\n switch (action.selectType) {\n case 'single':\n return selectedRowKeys.value.length !== 1\n case 'multiple':\n return selectedRowKeys.value.length === 0\n default:\n return false\n }\n }\n\n async function getDetail(\n action: QdCrudTableRowAction<D>,\n params: NonNullable<Props['data']>[number]\n ) {\n const { detailOptions } = reProps.value\n const { service, transformParams, transformRes } = { ...detailOptions, ...action.detail }\n\n if (!service && !transformRes) return easyCopy(params)\n\n if (!service) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes!(easyCopy(params)))\n if (trErr) throw trErr\n return trRes\n }\n\n let currentParams = params[reProps.value.serviceTableOptions.rowKey || qdCrudTableProps.rowKey]\n if (transformParams) {\n const [tpErr, tpRes] = await suspectedWrapperPromise(transformParams(easyCopy(params)))\n if (tpErr) throw tpErr\n\n currentParams = tpRes\n }\n\n const [serviceErr, serviceRes] = await suspectedWrapperPromise(service(currentParams))\n if (serviceErr) throw serviceErr\n\n let res\n if (transformRes) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes(serviceRes))\n if (trErr) throw trErr\n\n res = trRes\n } else {\n res = serviceRes\n }\n\n return res\n }\n\n function setActionIfRender(\n compIfRender: boolean,\n action: QdCrudTableAction<D> | QdCrudTableRowAction<D> | QdCrudTableTool<D>,\n cellIndex: Partial<Pick<PrimaryTableCellParams<D>, 'colIndex' | 'rowIndex'>> & {\n index: number\n mapKey?: string\n }\n ) {\n const ifRender = compIfRender && auth.hasPermiOr(action.permi, false)\n const { colIndex, rowIndex, index, mapKey } = cellIndex\n\n if (isEmpty(colIndex) && isEmpty(rowIndex)) {\n ifRenderMap[`${mapKey || 'action'}.${index}`] = ifRender\n return\n }\n\n ifRenderMap[`${colIndex}.${rowIndex}.${index}`] = ifRender\n }\n\n function getActionSeparator(\n action: QdCrudTableAction<D> | QdCrudTableRowAction<D> | QdCrudTableTool<D>,\n cellIndex: Partial<Pick<PrimaryTableCellParams<D>, 'colIndex' | 'rowIndex'>> & {\n index: number\n mapKey?: string\n }\n ) {\n const { index, colIndex, rowIndex, mapKey } = cellIndex\n if (index <= 0) return false\n\n if (isEmpty(colIndex) && isEmpty(rowIndex)) {\n if (ifRenderMap[`${mapKey || 'action'}.${index}`] === false) return false\n for (let i = index - 1; i >= 0; i--) {\n const previousIfRender = ifRenderMap[`${mapKey || 'action'}.${i}`]\n if (previousIfRender !== false) return true\n }\n return false\n }\n\n if (ifRenderMap[`${colIndex}.${rowIndex}.${index}`] === false) return false\n for (let i = index - 1; i >= 0; i--) {\n const previousIfRender = ifRenderMap[`${colIndex}.${rowIndex}.${i}`]\n if (previousIfRender !== false) return true\n }\n return false\n }\n\n defineExpose(\n createExposeProxy({}, tableRef) as QdCrudTableInstanceFunctions<\n D,\n R,\n P,\n TP,\n Pag,\n typeof props.tree extends object ? true : false\n >\n )\n</script>\n\n<style lang=\"less\" scoped>\n .qd-crud-table {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n & > .qd-crud-search:not(.qd-crud-search--hide) + &__body {\n margin-top: var(--td-comp-margin-l);\n }\n\n &__body {\n flex: auto;\n\n & > :deep(.t-loading__parent > .t-card__body) {\n height: 100%;\n min-height: 443px;\n display: flex;\n flex-direction: column;\n\n & > .qd-service-table {\n flex: 1 1 0;\n overflow: hidden;\n\n .t-table__pagination {\n padding-bottom: 0;\n }\n }\n }\n }\n\n &__toolbar {\n display: flex;\n justify-content: space-between;\n\n &:has(.t-space-item) + .qd-service-table {\n margin-top: var(--td-comp-margin-l);\n }\n\n &-separator {\n display: inline-block;\n padding-left: var(--td-comp-paddingLR-s);\n }\n }\n }\n</style>\n"],"names":["vHasPermi","hasPermiDirective","props","__props","emit","__emit","searchData","data","selectedRowKeys","activeRowKeys","columnControllerVisible","expandedRowKeys","filterValue","sort","expandedTreeNodes","useVModels","passive","t","useConfig","msgError","msgSuccess","alertWarning","confirm","useModal","treeIsExpand","computed","value","length","dialogFormMap","reactive","ifRenderMap","tableRef","useTemplateRef","reProps","inSearchData","transformParams","tableMinHeight","search","form","detail","add","actions","edit","view","del","rowActions","tools","hideSearchVisible","hideRefresh","hideTreeExpand","hideColumnController","title","columns","selectType","serviceTableOptions","mergedTransformParams","params","merged","reAdd","mergeAction","crudMode","permiID","content","icon","_createVNode2","AddIcon","reActions","buildActions","filter","Boolean","reEdit","theme","hover","reView","reDel","reRowActions","reSelectType","isBatchDel","find","item","batchDel","variant","DeleteIcon","splice","reColumns","operationLength","operationIdx","findIndex","colKey","defaultOperation","align","fixed","width","push","reTools","map","permi","buildActionPermi","reTableMinHeight","searchOptions","btnDisabled","loading","formOptions","detailOptions","models","finalCacheColumnsKey","cacheColumnsKey","permiPrefix","key","MD5","JSON","stringify","getColumnsStorageKey","cachedColumns","useLocalStorage","mergeColumns","get","original","mergeColumnsWithCache","set","val","showColumns","hidden","searchVisible","ref","searchRef","searchMode","handleSearch","handleResetSearch","reset","nextTick","submit","triggerSearch","validateResult","changeCurrent","refresh","handleRefresh","searchRefV","toggleSearchVisible","toggleTreeExpandAll","foldAll","expandAll","openColumnController","crudForm","defaultOptions","currentOptions","mergeOptions","merge","buildActionForm","onClick","getConfigRendererCtx","self","other","tableData","actionIsCRU","includes","action","IsCRU","cloneDeep","readonly","onSubmit","context","uid","service","transformRes","currentParams","easyCopy","formData","tpErr","tpRes","suspectedWrapperPromise","serviceErr","serviceRes","res","trErr","trRes","success","message","wrapper","header","buildActionOnClick","originalParams","row","childrenKey","tree","qdServiceTableTreeConfig","rowKey","qdCrudTableProps","treeOpts","checkChildren","delCheckChildren","rows","getData","it","result","delHasChild","needCheckChildren","lazyLoad","some","children","isEmpty","child","body","generateRandomString","visible","shallowRef","toRef","triggerRef","err","to","getDetail","Object","assign","buildActionDisabled","disabled","setActionIfRender","compIfRender","cellIndex","ifRender","auth","colIndex","rowIndex","index","mapKey","getActionSeparator","i","previousIfRender","__expose","createExposeProxy","_openBlock","_createElementBlock","_hoisted_1","_renderSlot","_ctx","items","_withDirectives","_createBlock","_unref","_mergeProps","$event","class","onSearch","onReset","extractSlotsWithPrefix","$slots","name","filterName","fn","_withCtx","slotProps","originalName","undefined","_createVNode","QdCard","_createElementVNode","_hoisted_2","TSpace","size","_Fragment","_hoisted_3","QdConfigRenderer","config","TButton","onIfRenderChange","_hoisted_4","TTooltip","shape","SearchIcon","RefreshIcon","UnfoldLessIcon","UnfoldMoreIcon","columnController","hideTriggerButton","SettingIcon","_createSlots","operation","_normalizeProps","_guardReactiveProps","TDivider","layout","is","_renderList","dialogForm","QdDialogForm","QdColumnsController"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue2.mjs","sources":["../../../../src/components/crud/table/index.vue"],"sourcesContent":["<template>\n <div class=\"qd-crud-table\">\n <slot name=\"header\">\n <qd-crud-search\n v-if=\"reProps.searchOptions?.items?.length\"\n v-show=\"searchVisible\"\n ref=\"search\"\n v-model:data=\"searchData\"\n :class=\"[!searchVisible ? 'qd-crud-search--hide' : '']\"\n v-bind=\"reProps.searchOptions\"\n @submit=\"triggerSearch\"\n @search=\"handleSearch\"\n @reset=\"handleResetSearch\"\n >\n <template\n v-for=\"item in extractSlotsWithPrefix($slots, 'search')\"\n #[item.filterName]=\"slotProps\"\n >\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-crud-search>\n </slot>\n\n <qd-card class=\"qd-crud-table__body\">\n <div class=\"qd-crud-table__toolbar\">\n <t-space align=\"center\" :size=\"0\">\n <slot name=\"actions\">\n <template v-for=\"(item, index) in reProps.actions\" :key=\"item.uid || index\">\n <span\n v-if=\"getActionSeparator(item, { index })\"\n class=\"qd-crud-table__toolbar-separator\"\n ></span>\n\n <qd-config-renderer\n v-hasPermi=\"item.permi\"\n fn-inject-ctx\n :context=\"getConfigRendererCtx(item)\"\n :config=\"{\n is: TButton,\n ...item,\n form: undefined,\n onClick: buildActionOnClick(item),\n disabled: buildActionDisabled(item)\n }\"\n @if-render-change=\"(ifRender) => setActionIfRender(ifRender, item, { index })\"\n />\n </template>\n </slot>\n </t-space>\n\n <t-space align=\"center\" :size=\"0\">\n <slot name=\"tools\">\n <!-- 用户通过 props 配置的工具 -->\n <template v-for=\"(item, index) in reProps.tools\" :key=\"index\">\n <span\n v-if=\"getActionSeparator(item, { index, mapKey: 'tool' })\"\n class=\"qd-crud-table__toolbar-separator\"\n ></span>\n\n <t-tooltip :content=\"item.content\" :disabled=\"!item.content\">\n <qd-config-renderer\n v-hasPermi=\"item.permi\"\n fn-inject-ctx\n :context=\"getConfigRendererCtx(item)\"\n :config=\"{\n is: TButton,\n ...item,\n content: '',\n variant: 'text',\n shape: 'square',\n onClick: buildActionOnClick(item as QdCrudTableAction<D>),\n disabled: buildActionDisabled(item as QdCrudTableAction<D>)\n }\"\n @if-render-change=\"\n (ifRender) => setActionIfRender(ifRender, item, { index, mapKey: 'tool' })\n \"\n />\n </t-tooltip>\n </template>\n\n <!-- 展开/收起搜索 -->\n <template v-if=\"!reProps.hideSearchVisible && reProps.searchOptions?.items?.length\">\n <span class=\"qd-crud-table__toolbar-separator\"></span>\n <t-tooltip :content=\"searchVisible ? t('hideSearchText') : t('showSearchText')\">\n <t-button variant=\"text\" shape=\"square\" @click=\"toggleSearchVisible\">\n <template #icon><search-icon /></template>\n </t-button>\n </t-tooltip>\n </template>\n\n <!-- 刷新列表 -->\n <template v-if=\"!reProps.hideRefresh\">\n <span class=\"qd-crud-table__toolbar-separator\"></span>\n <t-tooltip :content=\"t('refreshText')\">\n <t-button variant=\"text\" shape=\"square\" @click=\"handleRefresh\">\n <template #icon><refresh-icon /></template>\n </t-button>\n </t-tooltip>\n </template>\n\n <!-- 展开/收起树 -->\n <template\n v-if=\"!reProps.hideTreeExpand && !isEmpty(reProps.serviceTableOptions.tree) && !reProps.serviceTableOptions.tree!.lazyLoad\"\n >\n <span class=\"qd-crud-table__toolbar-separator\"></span>\n <t-tooltip :content=\"treeIsExpand ? t('collapseTreeText') : t('expandTreeText')\">\n <t-button variant=\"text\" shape=\"square\" @click=\"toggleTreeExpandAll\">\n <template #icon>\n <unfold-less-icon v-if=\"treeIsExpand\" />\n <unfold-more-icon v-else />\n </template>\n </t-button>\n </t-tooltip>\n </template>\n\n <!-- 列配置 -->\n <template\n v-if=\"\n reProps.serviceTableOptions.columnController?.hideTriggerButton !== true &&\n !reProps.hideColumnController\n \"\n >\n <span class=\"qd-crud-table__toolbar-separator\"></span>\n <t-tooltip :content=\"t('columnControllerText')\">\n <t-button variant=\"text\" shape=\"square\" @click=\"openColumnController\">\n <template #icon><setting-icon /></template>\n </t-button>\n </t-tooltip>\n </template>\n </slot>\n </t-space>\n </div>\n\n <qd-service-table\n ref=\"table\"\n v-model:data=\"data\"\n v-model:selected-row-keys=\"selectedRowKeys\"\n v-model:active-row-keys=\"activeRowKeys\"\n v-model:expanded-row-keys=\"expandedRowKeys\"\n v-model:filter-value=\"filterValue\"\n v-model:sort=\"sort\"\n v-model:expanded-tree-nodes=\"expandedTreeNodes\"\n :columns=\"showColumns\"\n v-bind=\"reProps.serviceTableOptions\"\n @column-resize-change=\"handleColumnResizeChange\"\n >\n <template #operation=\"slotProps\">\n <slot name=\"table-operation\" v-bind=\"slotProps\">\n <t-space v-if=\"reProps.rowActions?.length\" align=\"center\" :size=\"0\" @click.stop>\n <template v-for=\"(item, index) in reProps.rowActions\">\n <t-divider\n v-if=\"\n getActionSeparator(item, {\n colIndex: slotProps.colIndex,\n rowIndex: slotProps.rowIndex,\n index\n })\n \"\n :key=\"`${slotProps.colIndex}.${slotProps.rowIndex}.${index}.divider`\"\n layout=\"vertical\"\n />\n\n <qd-config-renderer\n v-if=\"true\"\n :key=\"`${slotProps.colIndex}.${slotProps.rowIndex}.${index}.renderer`\"\n v-hasPermi=\"item.permi\"\n fn-inject-ctx\n :context=\"getConfigRendererCtx(item, slotProps)\"\n :config=\"{ is: TLink, ...item, onClick: buildActionOnClick(item, slotProps) }\"\n @if-render-change=\"\n (ifRender) =>\n setActionIfRender(ifRender, item, {\n colIndex: slotProps.colIndex,\n rowIndex: slotProps.rowIndex,\n index\n })\n \"\n />\n </template>\n </t-space>\n </slot>\n </template>\n\n <template\n v-for=\"item in extractSlotsWithPrefix($slots, 'table')\"\n #[item.filterName]=\"slotProps\"\n >\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-service-table>\n </qd-card>\n\n <qd-config-renderer\n v-for=\"(dialogForm, uid) in dialogFormMap\"\n :key=\"uid\"\n :config=\"{\n is: QdDialogForm,\n ...dialogForm.form,\n vModelVisible: 'self.visible',\n vModelData: 'self.data',\n crudMode: dialogForm.crudMode\n }\"\n :context=\"getConfigRendererCtx(dialogForm)\"\n />\n\n <qd-columns-controller\n v-model:visible=\"columnControllerVisible\"\n v-model:columns=\"mergeColumns\"\n :default-columns=\"reProps.columns\"\n />\n </div>\n</template>\n\n<script\n setup\n lang=\"tsx\"\n generic=\"\n D extends TableRowData = TableRowData,\n R = unknown,\n P = ServicePageParams,\n TP = P,\n Pag extends ServicePagination = ServicePagination\n \"\n>\n import { useLocalStorage, useVModels } from '@vueuse/core'\n import { cloneDeep, get, merge } from 'lodash-es'\n import type { ServiceMaybePageParams, ServicePageParams, ServicePagination } from 'qidian-shared'\n import {\n createExposeProxy,\n easyCopy,\n extractSlotsWithPrefix,\n generateRandomString,\n isEmpty,\n MD5,\n suspectedWrapperPromise,\n to\n } from 'qidian-shared'\n import {\n AddIcon,\n DeleteIcon,\n RefreshIcon,\n SearchIcon,\n SettingIcon,\n UnfoldLessIcon,\n UnfoldMoreIcon\n } from 'tdesign-icons-vue-next'\n import type {\n EnhancedTableInstanceFunctions,\n PrimaryTableCellParams,\n TableRowData,\n TableRowValue,\n TdBaseTableProps\n } from 'tdesign-vue-next'\n import {\n Button as TButton,\n Divider as TDivider,\n Link as TLink,\n Space as TSpace,\n Tooltip as TTooltip\n } from 'tdesign-vue-next'\n import type { ShallowRef } from 'vue'\n import {\n computed,\n nextTick,\n reactive,\n ref,\n shallowRef,\n toRef,\n triggerRef,\n useTemplateRef\n } from 'vue'\n\n import { hasPermiDirective } from '../../../directive'\n import { useModal } from '../../../hooks'\n import { auth } from '../../../utils'\n import { QdCard } from '../../card'\n import { QdColumnsController } from '../../columns-controller'\n import { useConfig } from '../../config-provider/useConfig'\n import { QdConfigRenderer } from '../../config-renderer'\n import { QdDialogForm } from '../../dialog'\n import type { QdFormSubmitContext } from '../../form'\n import type { QdServiceTableInstanceFunctions, QdServiceTableProps } from '../../service'\n import { QdServiceTable } from '../../service'\n import { qdServiceTableTreeConfig } from '../../service/table/props'\n import { QdCrudSearch } from '../search'\n import type { QdCrudTableCacheCol } from './columnsCache'\n import { getColumnsStorageKey, mergeColumnsWithCache } from './columnsCache'\n import { qdCrudTableProps } from './props'\n import type {\n QdCrudTableAction,\n QdCrudTableDeleteAction,\n QdCrudTableInstanceFunctions,\n QdCrudTableProps,\n QdCrudTableRowAction,\n QdCrudTableTool,\n QdCrudTableWrapper,\n TableDialogServiceRes\n } from './types'\n\n defineOptions({\n name: 'QdCrudTable'\n })\n\n const vHasPermi = hasPermiDirective\n\n type Props = QdCrudTableProps<D, R, P, TP, Pag>\n\n const props = withDefaults(defineProps<Props>(), qdCrudTableProps)\n const emit = defineEmits<{\n 'update:searchData': [Props['searchData']]\n\n 'update:data': [Props['data']]\n 'update:selectedRowKeys': [Props['selectedRowKeys']]\n 'update:activeRowKeys': [Props['activeRowKeys']]\n 'update:columnControllerVisible': [Props['columnControllerVisible']]\n 'update:expandedRowKeys': [Props['expandedRowKeys']]\n 'update:filterValue': [Props['filterValue']]\n 'update:sort': [Props['sort']]\n 'update:expandedTreeNodes': [Props['expandedTreeNodes']]\n }>()\n const {\n searchData,\n\n data,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes\n } = useVModels<typeof props, keyof typeof emit>(props, emit, { passive: true })\n\n const { t } = useConfig('crud')\n const { msgError, msgSuccess, alertWarning, confirm } = useModal()\n\n const treeIsExpand = computed(() => !!expandedTreeNodes.value?.length)\n\n const dialogFormMap = reactive<\n Record<\n string,\n Pick<QdCrudTableWrapper, 'crudMode'> & {\n visible: boolean\n data?: object\n form: ShallowRef<NonNullable<QdCrudTableWrapper['form']>>\n }\n >\n >({})\n\n const ifRenderMap = reactive<Record<string, boolean | undefined>>({})\n\n const tableRef = useTemplateRef<QdServiceTableInstanceFunctions<D, R, P, TP, Pag>>('table')\n\n const reProps = computed(() => {\n const {\n data,\n searchData: inSearchData,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes,\n transformParams,\n\n tableMinHeight,\n\n search,\n form,\n detail,\n\n add,\n actions,\n\n edit,\n view,\n del,\n rowActions,\n tools,\n\n hideSearchVisible,\n hideRefresh,\n hideTreeExpand,\n hideColumnController,\n\n title,\n columns,\n selectType,\n ...serviceTableOptions\n } = props\n\n const mergedTransformParams = (params: ServiceMaybePageParams<Pag>) => {\n const merged = { ...params, ...searchData.value } as ServiceMaybePageParams<Pag>\n if (transformParams) return transformParams(merged)\n return merged\n }\n\n const reAdd = mergeAction(\n { crudMode: 'add', permiID: 'add', content: t('addText'), icon: () => <AddIcon /> },\n add,\n form\n )\n const reActions = [reAdd, ...buildActions(actions, form)].filter(\n Boolean\n ) as QdCrudTableAction<D>[]\n\n const reEdit = mergeAction(\n {\n crudMode: 'edit',\n permiID: 'edit',\n content: t('editText'),\n theme: 'primary',\n hover: 'color'\n },\n edit,\n form\n )\n const reView = mergeAction(\n {\n crudMode: 'view',\n permiID: 'query',\n content: t('viewText'),\n theme: 'primary',\n hover: 'color'\n },\n view,\n form\n )\n const reDel = mergeAction(\n {\n crudMode: 'del',\n permiID: 'remove',\n content: t('deleteText'),\n theme: 'danger',\n hover: 'color',\n selectType: 'multiple'\n },\n del,\n form\n )\n const reRowActions = [reEdit, reView, ...buildActions(rowActions, form), reDel].filter(\n Boolean\n ) as QdCrudTableRowAction<D>[]\n\n let reSelectType = selectType\n const isBatchDel = reDel?.selectType === 'multiple'\n if ((!reSelectType && isBatchDel) || reActions.find((item) => item.selectType === 'multiple')) {\n reSelectType = 'multiple'\n }\n if (isBatchDel) {\n const batchDel = mergeAction(\n {\n crudMode: 'del',\n permiID: 'remove',\n content: t('batchDeleteText'),\n theme: 'danger',\n variant: 'outline',\n selectType: 'multiple',\n icon: () => <DeleteIcon />\n },\n del,\n form\n )\n\n reActions.splice(reAdd ? 1 : 0, 0, batchDel as QdCrudTableAction<D>)\n }\n\n const reColumns = columns || []\n const operationLength = reRowActions.length\n if (operationLength) {\n const operationIdx = reColumns.findIndex((item) => item.colKey === 'operation')\n const defaultOperation: (typeof reColumns)[number] = {\n title: t('operationText'),\n colKey: 'operation',\n align: 'center',\n fixed: 'right',\n width: 28 * operationLength + 25 * operationLength - 1 + 32\n }\n\n if (operationIdx > -1) {\n reColumns[operationIdx] = {\n ...defaultOperation,\n ...reColumns[operationIdx]\n }\n } else {\n reColumns.push(defaultOperation)\n }\n }\n\n const reTools = tools?.map((item) => {\n item.permi = buildActionPermi(item)\n return item\n })\n\n let reTableMinHeight = 'auto'\n if (tableMinHeight !== false) {\n if (typeof tableMinHeight === 'number') {\n reTableMinHeight = `${tableMinHeight}px`\n } else {\n reTableMinHeight = typeof tableMinHeight === 'string' ? tableMinHeight : '443px'\n }\n }\n\n return {\n title,\n tableMinHeight: reTableMinHeight,\n hideSearchVisible,\n hideRefresh,\n hideTreeExpand,\n hideColumnController,\n columns: reColumns,\n\n searchOptions: {\n ...search,\n btnDisabled: search?.btnDisabled ?? tableRef.value?.loading\n },\n serviceTableOptions: {\n ...serviceTableOptions,\n selectType: reSelectType,\n transformParams: mergedTransformParams\n } as Omit<QdServiceTableProps<D, R, P, TP, Pag>, 'columns'>,\n\n formOptions: form,\n detailOptions: detail,\n actions: reActions,\n rowActions: reRowActions,\n tools: reTools,\n\n models: {\n data,\n searchData: inSearchData,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes\n }\n }\n })\n\n const finalCacheColumnsKey = computed(() => {\n const { cacheColumnsKey, permiPrefix, columns } = props\n let key = ''\n\n if (cacheColumnsKey) {\n key = cacheColumnsKey\n } else {\n key = MD5(permiPrefix ? `${permiPrefix}:${JSON.stringify(columns)}` : JSON.stringify(columns))\n }\n\n return getColumnsStorageKey(key)\n })\n\n const cachedColumns = useLocalStorage<QdCrudTableCacheCol[]>(finalCacheColumnsKey, [])\n\n const mergeColumns = computed({\n get: () => {\n const original = reProps.value.columns\n if (!cachedColumns.value) return original\n return mergeColumnsWithCache(original, cachedColumns.value)\n },\n set: (val: QdCrudTableCacheCol[]) => {\n cachedColumns.value = val\n }\n })\n\n const showColumns = computed(() => mergeColumns.value?.filter((item) => !item.hidden))\n\n const searchVisible = ref(true)\n const searchRef = useTemplateRef('search')\n let searchMode: 'refresh' | 'changeCurrent' = 'refresh'\n\n function handleSearch() {\n searchMode = 'changeCurrent'\n }\n\n async function handleResetSearch() {\n searchMode = 'changeCurrent'\n searchRef.value?.reset()\n await nextTick()\n searchRef.value?.submit()\n }\n\n function triggerSearch({ validateResult }: QdFormSubmitContext<typeof searchData.value>) {\n if (validateResult !== true) return\n\n switch (searchMode) {\n case 'changeCurrent':\n tableRef.value?.changeCurrent(1)\n break\n default:\n tableRef.value?.refresh()\n break\n }\n }\n\n function handleRefresh() {\n searchMode = 'refresh'\n const searchRefV = searchRef.value\n if (searchRefV) {\n searchRefV.submit()\n return\n }\n\n tableRef.value?.refresh()\n }\n\n function toggleSearchVisible() {\n searchVisible.value = !searchVisible.value\n }\n\n function toggleTreeExpandAll() {\n if (treeIsExpand.value) (tableRef.value as any)?.foldAll()\n else (tableRef.value as any)?.expandAll()\n }\n\n function openColumnController() {\n columnControllerVisible.value = true\n }\n\n const handleColumnResizeChange: NonNullable<TdBaseTableProps<D>['onColumnResizeChange']> = (\n context\n ) => {\n reProps.value.serviceTableOptions.onColumnResizeChange?.(context)\n\n const { columnsWidth } = context\n const newColumns = cloneDeep(mergeColumns.value ?? [])\n let hasChanged = false\n\n newColumns.forEach((col) => {\n const width = columnsWidth[col.colKey as string]\n if (width === undefined || col.width === width) return\n\n col.width = width\n col.minWidth = undefined\n hasChanged = true\n })\n\n if (!hasChanged) return\n\n mergeColumns.value = newColumns as QdCrudTableCacheCol[]\n }\n\n function buildActions<T extends QdCrudTableAction<D> | QdCrudTableRowAction<D>>(\n actions?: T[],\n crudForm?: QdCrudTableWrapper['form']\n ) {\n if (!actions) return []\n\n return actions.map(\n (item) =>\n mergeAction(\n {\n variant: 'outline',\n theme: 'primary',\n hover: 'color'\n } as unknown as T,\n item,\n crudForm\n )!\n )\n }\n\n function mergeAction<\n T extends QdCrudTableAction<D> | QdCrudTableRowAction<D> | QdCrudTableDeleteAction<D>\n >(\n defaultOptions: Partial<T>,\n currentOptions?: boolean | T,\n crudForm?: QdCrudTableWrapper['form']\n ) {\n if (currentOptions === false) return\n\n const mergeOptions = merge({}, defaultOptions, currentOptions)\n if (mergeOptions.crudMode !== 'view' && !currentOptions) return\n\n mergeOptions.permi = buildActionPermi(mergeOptions as QdCrudTableAction<D>)\n if (mergeOptions.crudMode !== 'del') {\n const form = buildActionForm(mergeOptions as QdCrudTableAction, crudForm)\n if (!form && !mergeOptions.onClick) return\n ;(mergeOptions as QdCrudTableAction | QdCrudTableRowAction).form = form\n }\n\n return mergeOptions as T\n }\n\n function getConfigRendererCtx<T = unknown, O = object>(self: T, other?: O) {\n return {\n tableData: data.value,\n searchData: searchData.value,\n selectedRowKeys: selectedRowKeys.value,\n activeRowKeys: activeRowKeys.value,\n self,\n ...other\n }\n }\n\n function actionIsCRU(crudMode: QdCrudTableAction['crudMode']) {\n return crudMode && ['add', 'edit', 'view'].includes(crudMode)\n }\n\n function buildActionPermi(action: QdCrudTableAction<D> | QdCrudTableTool<D>) {\n if (action.permi) return action.permi\n if (!props.permiPrefix || !action.permiID) return []\n return [`${props.permiPrefix}:${action.permiID}`]\n }\n\n function buildActionForm(action: QdCrudTableAction, crudForm?: QdCrudTableWrapper['form']) {\n const IsCRU = actionIsCRU(action.crudMode)\n if (!action.form && IsCRU) {\n action.form = cloneDeep(crudForm)\n }\n\n const { form } = action\n if (form) {\n if (action.crudMode === 'view') form.readonly = true\n\n if (!form.onSubmit && IsCRU) {\n form.onSubmit = async (context: QdFormSubmitContext) => {\n const { uid, service, transformParams, transformRes, crudMode } = action\n if (context.validateResult !== true || !service || !uid || !dialogFormMap[uid]) {\n return false\n }\n\n let currentParams = easyCopy(context.formData)\n\n if (transformParams) {\n const [tpErr, tpRes] = await suspectedWrapperPromise(transformParams(currentParams))\n if (tpErr) throw tpErr\n\n currentParams = tpRes\n }\n\n const [serviceErr, serviceRes] = await suspectedWrapperPromise(service(currentParams))\n if (serviceErr) throw serviceErr\n\n let res: TableDialogServiceRes | undefined\n if (transformRes) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes(serviceRes))\n if (trErr) throw trErr\n\n res = trRes\n } else {\n res = serviceRes as TableDialogServiceRes\n }\n\n if (typeof res === 'boolean') {\n res = { success: res, message: '' }\n }\n\n if (!res) {\n res = { success: true, message: '' }\n }\n\n const message = res.message\n if (res.success === false) {\n if (message) msgError(message)\n return false\n }\n\n msgSuccess(message || t('operationSuccessText'))\n\n if (crudMode === 'add') {\n tableRef.value?.changeCurrent(1)\n } else {\n tableRef.value?.refresh()\n }\n }\n }\n\n const { title } = props\n form.wrapper = merge(\n {},\n {\n header: `${action.content}${title || ''}`\n },\n form.wrapper\n )\n }\n\n return action.form\n }\n\n function buildActionOnClick(\n action: QdCrudTableAction<D> | QdCrudTableRowAction<D>,\n originalParams?: PrimaryTableCellParams<D>\n ) {\n if (action.onClick) return action.onClick\n\n if (action.crudMode === 'del') {\n // 删除/批量删除\n const onClick = async () => {\n const { service, transformParams, transformRes } = action\n const row = originalParams?.row\n\n if (\n !service ||\n (!row && action.selectType !== 'multiple') ||\n (!row && !selectedRowKeys.value.length && action.selectType === 'multiple')\n ) {\n return\n }\n\n const childrenKey =\n reProps.value.serviceTableOptions.tree?.childrenKey ||\n qdServiceTableTreeConfig.childrenKey\n const rowKey = reProps.value.serviceTableOptions.rowKey || qdCrudTableProps.rowKey\n const treeOpts = reProps.value.serviceTableOptions.tree\n const checkChildren = treeOpts?.delCheckChildren\n const rows = row\n ? [row]\n : selectedRowKeys.value\n .map((item: TableRowValue) => {\n const getData = tableRef.value?.getData\n if (getData) {\n return props.tree\n ? ((getData(item) as ReturnType<EnhancedTableInstanceFunctions['getData']>)\n ?.row as D | undefined)\n : (getData(item) as D | undefined)\n }\n\n return data.value.find((it: D) => get(it, rowKey) === item)\n })\n .filter(Boolean)\n\n if (typeof checkChildren === 'function') {\n let result = await checkChildren({\n row,\n rows,\n selectedRowKeys: selectedRowKeys.value,\n rowKey,\n childrenKey,\n tableData: data.value\n })\n\n if (typeof result === 'boolean') {\n result = { success: result, message: '' }\n }\n\n if (!result) {\n result = { success: true, message: '' }\n }\n\n if (result.success === false) {\n alertWarning(result.message || t('deleteHasChildrenText'))\n return\n }\n } else {\n let delHasChild = false\n const needCheckChildren = checkChildren ?? !treeOpts?.lazyLoad\n\n if (needCheckChildren && !row) {\n delHasChild = rows.some((item: D) => {\n const children = get(item, childrenKey)\n if (isEmpty(children)) return false\n if (children === true) return true\n return children.some(\n (child: D) => !selectedRowKeys.value.includes(get(child, rowKey))\n )\n })\n } else if (needCheckChildren && !isEmpty(row?.[childrenKey])) {\n delHasChild = true\n }\n\n if (delHasChild) {\n alertWarning(t('deleteHasChildrenText'))\n return\n }\n }\n\n confirm(\n { body: t('deleteWrapperBodyText'), ...(action as QdCrudTableDeleteAction).wrapper },\n async () => {\n const params = row || selectedRowKeys.value\n let currentParams = row\n ? params[reProps.value.serviceTableOptions.rowKey || qdCrudTableProps.rowKey]\n : selectedRowKeys.value\n\n if (transformParams) {\n const [tpErr, tpRes] = await suspectedWrapperPromise(\n transformParams(easyCopy(params))\n )\n if (tpErr) throw tpErr\n\n currentParams = tpRes\n }\n\n const [serviceErr, serviceRes] = await suspectedWrapperPromise(service(currentParams))\n if (serviceErr) throw serviceErr\n\n let res: TableDialogServiceRes | undefined\n if (transformRes) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes(serviceRes))\n if (trErr) throw trErr\n\n res = trRes\n } else {\n res = serviceRes as TableDialogServiceRes\n }\n\n if (typeof res === 'boolean') {\n res = { success: res, message: '' }\n }\n\n if (!res) {\n res = { success: true, message: '' }\n }\n\n const message = res.message\n if (res.success === false) {\n if (message) msgError(message)\n return false\n }\n\n msgSuccess(message || t('deleteSuccessText'))\n if (!row) selectedRowKeys.value = []\n tableRef.value?.refresh()\n return true\n }\n )\n }\n\n return onClick\n }\n\n if (isEmpty(action.form) || !actionIsCRU(action.crudMode)) return\n\n // 新增/编辑/查看\n const onClick = async () => {\n if (!action.uid) action.uid = generateRandomString(16)\n\n const uid = action.uid!\n if (!dialogFormMap[uid]) {\n dialogFormMap[uid] = {\n visible: false,\n data: {},\n crudMode: action.crudMode,\n form: shallowRef(action.form!)\n }\n }\n const form = toRef(dialogFormMap[uid], 'form')\n\n await nextTick()\n if (!dialogFormMap[uid].data) dialogFormMap[uid].data = {}\n dialogFormMap[uid].visible = true\n\n if (!action.crudMode || !['edit', 'view'].includes(action.crudMode) || !originalParams) {\n return\n }\n\n form.value.loading = true\n triggerRef(form)\n const [err, res] = await to(getDetail(action as QdCrudTableRowAction<D>, originalParams.row))\n form.value.loading = false\n triggerRef(form)\n if (err) {\n Object.assign(dialogFormMap[uid].data, originalParams.row)\n return\n }\n\n Object.assign(dialogFormMap[uid].data, res)\n }\n\n return onClick\n }\n\n function buildActionDisabled(action: QdCrudTableAction<D>) {\n if (action.disabled) return action.disabled\n\n switch (action.selectType) {\n case 'single':\n return selectedRowKeys.value.length !== 1\n case 'multiple':\n return selectedRowKeys.value.length === 0\n default:\n return false\n }\n }\n\n async function getDetail(\n action: QdCrudTableRowAction<D>,\n params: NonNullable<Props['data']>[number]\n ) {\n const { detailOptions } = reProps.value\n const { service, transformParams, transformRes } = { ...detailOptions, ...action.detail }\n\n if (!service && !transformRes) return easyCopy(params)\n\n if (!service) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes!(easyCopy(params)))\n if (trErr) throw trErr\n return trRes\n }\n\n let currentParams = params[reProps.value.serviceTableOptions.rowKey || qdCrudTableProps.rowKey]\n if (transformParams) {\n const [tpErr, tpRes] = await suspectedWrapperPromise(transformParams(easyCopy(params)))\n if (tpErr) throw tpErr\n\n currentParams = tpRes\n }\n\n const [serviceErr, serviceRes] = await suspectedWrapperPromise(service(currentParams))\n if (serviceErr) throw serviceErr\n\n let res\n if (transformRes) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes(serviceRes))\n if (trErr) throw trErr\n\n res = trRes\n } else {\n res = serviceRes\n }\n\n return res\n }\n\n function setActionIfRender(\n compIfRender: boolean,\n action: QdCrudTableAction<D> | QdCrudTableRowAction<D> | QdCrudTableTool<D>,\n cellIndex: Partial<Pick<PrimaryTableCellParams<D>, 'colIndex' | 'rowIndex'>> & {\n index: number\n mapKey?: string\n }\n ) {\n const ifRender = compIfRender && auth.hasPermiOr(action.permi, false)\n const { colIndex, rowIndex, index, mapKey } = cellIndex\n\n if (isEmpty(colIndex) && isEmpty(rowIndex)) {\n ifRenderMap[`${mapKey || 'action'}.${index}`] = ifRender\n return\n }\n\n ifRenderMap[`${colIndex}.${rowIndex}.${index}`] = ifRender\n }\n\n function getActionSeparator(\n action: QdCrudTableAction<D> | QdCrudTableRowAction<D> | QdCrudTableTool<D>,\n cellIndex: Partial<Pick<PrimaryTableCellParams<D>, 'colIndex' | 'rowIndex'>> & {\n index: number\n mapKey?: string\n }\n ) {\n const { index, colIndex, rowIndex, mapKey } = cellIndex\n if (index <= 0) return false\n\n if (isEmpty(colIndex) && isEmpty(rowIndex)) {\n if (ifRenderMap[`${mapKey || 'action'}.${index}`] === false) return false\n for (let i = index - 1; i >= 0; i--) {\n const previousIfRender = ifRenderMap[`${mapKey || 'action'}.${i}`]\n if (previousIfRender !== false) return true\n }\n return false\n }\n\n if (ifRenderMap[`${colIndex}.${rowIndex}.${index}`] === false) return false\n for (let i = index - 1; i >= 0; i--) {\n const previousIfRender = ifRenderMap[`${colIndex}.${rowIndex}.${i}`]\n if (previousIfRender !== false) return true\n }\n return false\n }\n\n defineExpose(\n createExposeProxy({}, tableRef) as QdCrudTableInstanceFunctions<\n D,\n R,\n P,\n TP,\n Pag,\n typeof props.tree extends object ? true : false\n >\n )\n</script>\n\n<style lang=\"less\" scoped>\n .qd-crud-table {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n & > .qd-crud-search:not(.qd-crud-search--hide) + &__body {\n margin-top: var(--td-comp-margin-l);\n }\n\n &__body {\n flex: auto;\n\n & > :deep(.t-loading__parent > .t-card__body) {\n height: 100%;\n min-height: 443px;\n display: flex;\n flex-direction: column;\n\n & > .qd-service-table {\n flex: 1 1 0;\n overflow: hidden;\n\n .t-table__pagination {\n padding-bottom: 0;\n }\n }\n }\n }\n\n &__toolbar {\n display: flex;\n justify-content: space-between;\n\n &:has(.t-space-item) + .qd-service-table {\n margin-top: var(--td-comp-margin-l);\n }\n\n &-separator {\n display: inline-block;\n padding-left: var(--td-comp-paddingLR-s);\n }\n }\n }\n</style>\n"],"names":["vHasPermi","hasPermiDirective","props","__props","emit","__emit","searchData","data","selectedRowKeys","activeRowKeys","columnControllerVisible","expandedRowKeys","filterValue","sort","expandedTreeNodes","useVModels","passive","t","useConfig","msgError","msgSuccess","alertWarning","confirm","useModal","treeIsExpand","computed","value","length","dialogFormMap","reactive","ifRenderMap","tableRef","useTemplateRef","reProps","inSearchData","transformParams","tableMinHeight","search","form","detail","add","actions","edit","view","del","rowActions","tools","hideSearchVisible","hideRefresh","hideTreeExpand","hideColumnController","title","columns","selectType","serviceTableOptions","mergedTransformParams","params","merged","reAdd","mergeAction","crudMode","permiID","content","icon","_createVNode2","AddIcon","reActions","buildActions","filter","Boolean","reEdit","theme","hover","reView","reDel","reRowActions","reSelectType","isBatchDel","find","item","batchDel","variant","DeleteIcon","splice","reColumns","operationLength","operationIdx","findIndex","colKey","defaultOperation","align","fixed","width","push","reTools","map","permi","buildActionPermi","reTableMinHeight","searchOptions","btnDisabled","loading","formOptions","detailOptions","models","finalCacheColumnsKey","cacheColumnsKey","permiPrefix","key","MD5","JSON","stringify","getColumnsStorageKey","cachedColumns","useLocalStorage","mergeColumns","get","original","mergeColumnsWithCache","set","val","showColumns","hidden","searchVisible","ref","searchRef","searchMode","handleSearch","handleResetSearch","reset","nextTick","submit","triggerSearch","validateResult","changeCurrent","refresh","handleRefresh","searchRefV","toggleSearchVisible","toggleTreeExpandAll","foldAll","expandAll","openColumnController","handleColumnResizeChange","context","onColumnResizeChange","columnsWidth","newColumns","cloneDeep","hasChanged","forEach","col","undefined","minWidth","crudForm","defaultOptions","currentOptions","mergeOptions","merge","buildActionForm","onClick","getConfigRendererCtx","self","other","tableData","actionIsCRU","includes","action","IsCRU","readonly","onSubmit","uid","service","transformRes","currentParams","easyCopy","formData","tpErr","tpRes","suspectedWrapperPromise","serviceErr","serviceRes","res","trErr","trRes","success","message","wrapper","header","buildActionOnClick","originalParams","row","childrenKey","tree","qdServiceTableTreeConfig","rowKey","qdCrudTableProps","treeOpts","checkChildren","delCheckChildren","rows","getData","it","result","delHasChild","needCheckChildren","lazyLoad","some","children","isEmpty","child","body","generateRandomString","visible","shallowRef","toRef","triggerRef","err","to","getDetail","Object","assign","buildActionDisabled","disabled","setActionIfRender","compIfRender","cellIndex","ifRender","auth","colIndex","rowIndex","index","mapKey","getActionSeparator","i","previousIfRender","__expose","createExposeProxy","_openBlock","_createElementBlock","_hoisted_1","_renderSlot","_ctx","items","_withDirectives","_createBlock","_unref","_mergeProps","$event","class","onSearch","onReset","extractSlotsWithPrefix","$slots","name","filterName","fn","_withCtx","slotProps","originalName","_createVNode","QdCard","_createElementVNode","_hoisted_2","TSpace","size","_Fragment","_hoisted_3","QdConfigRenderer","config","TButton","onIfRenderChange","_hoisted_4","TTooltip","shape","SearchIcon","RefreshIcon","UnfoldLessIcon","UnfoldMoreIcon","columnController","hideTriggerButton","SettingIcon","_createSlots","operation","_normalizeProps","_guardReactiveProps","TDivider","layout","is","_renderList","dialogForm","QdDialogForm","QdColumnsController"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export declare const qdCrudTableProps: {
2
+ readonly resizable: true;
2
3
  readonly hideRefresh: true;
3
4
  readonly searchData: () => {};
4
5
  readonly form: undefined;
@@ -1,6 +1,7 @@
1
1
  import { qdServiceTableProps } from "../../service/table/props.mjs";
2
2
  const qdCrudTableProps = {
3
3
  ...qdServiceTableProps,
4
+ resizable: true,
4
5
  hideRefresh: true,
5
6
  searchData: () => ({}),
6
7
  form: void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"props.mjs","sources":["../../../../src/components/crud/table/props.ts"],"sourcesContent":["import { qdServiceTableProps } from '../../service/table/props'\n\nexport const qdCrudTableProps = {\n ...qdServiceTableProps,\n hideRefresh: true,\n\n searchData: () => ({}),\n form: undefined,\n add: undefined,\n actions: undefined,\n edit: undefined,\n view: undefined,\n del: undefined,\n rowActions: undefined,\n tools: undefined,\n cacheColumnsKey: undefined\n} as const\n"],"names":[],"mappings":";AAEO,MAAM,mBAAmB;AAAA,EAC9B,GAAG;AAAA,EACH,aAAa;AAAA,EAEb,YAAY,OAAO,CAAA;AAAA,EACnB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,iBAAiB;AACnB;"}
1
+ {"version":3,"file":"props.mjs","sources":["../../../../src/components/crud/table/props.ts"],"sourcesContent":["import { qdServiceTableProps } from '../../service/table/props'\n\nexport const qdCrudTableProps = {\n ...qdServiceTableProps,\n resizable: true,\n hideRefresh: true,\n\n searchData: () => ({}),\n form: undefined,\n add: undefined,\n actions: undefined,\n edit: undefined,\n view: undefined,\n del: undefined,\n rowActions: undefined,\n tools: undefined,\n cacheColumnsKey: undefined\n} as const\n"],"names":[],"mappings":";AAEO,MAAM,mBAAmB;AAAA,EAC9B,GAAG;AAAA,EACH,WAAW;AAAA,EACX,aAAa;AAAA,EAEb,YAAY,OAAO,CAAA;AAAA,EACnB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,iBAAiB;AACnB;"}
@@ -1,5 +1,6 @@
1
1
  export declare const qdCrudTabsTableProps: {
2
2
  readonly sharedSearch: true;
3
+ readonly resizable: true;
3
4
  readonly hideRefresh: true;
4
5
  readonly searchData: () => {};
5
6
  readonly form: undefined;
@@ -31,6 +31,7 @@ declare const __VLS_component: import("vue").DefineComponent<QdDialogProps, {
31
31
  confirmOnEnter: boolean;
32
32
  lazy: boolean;
33
33
  autoHeight: boolean;
34
+ fullscreenBtn: boolean;
34
35
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
35
36
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
36
37
  export default _default;
@@ -1,5 +1,5 @@
1
1
  import './index.css'
2
- import { defineComponent, mergeDefaults, getCurrentInstance, reactive, ref, computed, createBlock, openBlock, unref, mergeProps, isRef, createSlots, withCtx, renderSlot, createCommentVNode, Teleport, createElementBlock, resolveDynamicComponent, Fragment, renderList, createElementVNode, normalizeProps, guardReactiveProps } from "vue";
2
+ import { defineComponent, mergeDefaults, getCurrentInstance, reactive, ref, computed, createBlock, openBlock, unref, mergeProps, isRef, createSlots, withCtx, renderSlot, createCommentVNode, Teleport, createElementBlock, resolveDynamicComponent, Fragment, renderList, normalizeProps, guardReactiveProps } from "vue";
3
3
  import { useDraggable, useVModels } from "../../node_modules/.pnpm/@vueuse_core@14.2.0_vue@3.5.26_typescript@5.9.3_/node_modules/@vueuse/core/dist/index.mjs";
4
4
  import { domOn, suspectedWrapperPromise, isEmpty, filterSlots } from "qidian-shared";
5
5
  import { FullscreenExitIcon, FullscreenIcon } from "tdesign-icons-vue-next";
@@ -17,6 +17,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17
17
  footerExtend: {},
18
18
  extendBtns: {},
19
19
  autoHeight: { type: Boolean },
20
+ fullscreenBtn: { type: Boolean },
20
21
  attach: { type: [String, Function] },
21
22
  body: {},
22
23
  cancelBtn: {},
@@ -75,6 +76,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
75
76
  mode,
76
77
  dialogStyle: dialogStyle2,
77
78
  autoHeight,
79
+ fullscreenBtn,
78
80
  ...dialogOptions
79
81
  } = props;
80
82
  const reConfirmLoading = confirmLoad.value || confirmLoading;
@@ -83,6 +85,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
83
85
  footerExtend,
84
86
  extendBtns,
85
87
  autoHeight,
88
+ fullscreenBtn,
86
89
  style: dialogStyle2,
87
90
  dialogOptions: {
88
91
  ...dialogOptions,
@@ -202,12 +205,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
202
205
  typeof reProps.value.header !== "boolean" && reProps.value.header || reProps.value.header !== false && _ctx.$slots.header ? renderSlot(_ctx.$slots, "header", normalizeProps(mergeProps({ key: 0 }, slotProps)), () => [
203
206
  (openBlock(), createBlock(resolveDynamicComponent(() => reProps.value.header)))
204
207
  ]) : (openBlock(), createElementBlock("span", _hoisted_1)),
205
- createElementVNode("span", {
208
+ reProps.value.fullscreenBtn ? (openBlock(), createElementBlock("span", {
209
+ key: 2,
206
210
  class: "t-dialog__zoom",
207
211
  onClick: handleFullscreen
208
212
  }, [
209
213
  isFullscreen.value ? (openBlock(), createBlock(unref(FullscreenExitIcon), { key: 0 })) : (openBlock(), createBlock(unref(FullscreenIcon), { key: 1 }))
210
- ])
214
+ ])) : createCommentVNode("", true)
211
215
  ]),
212
216
  default: withCtx(() => [
213
217
  renderSlot(_ctx.$slots, "default"),
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.mjs","sources":["../../../src/components/dialog/index.vue"],"sourcesContent":["<template>\n <t-dialog\n v-model:visible=\"visible\"\n :class=\"[\n 'qd-dialog',\n uniqueClassName,\n (!$slots.footer ||\n reProps.dialogOptions.footer === false ||\n (typeof reProps.dialogOptions.footer !== 'boolean' && !reProps.dialogOptions.footer)) &&\n ($slots['footer-extend'] || reProps.footerExtend || reProps.extendBtns?.length)\n ? 'qd-dialog--has-footer-extend'\n : '',\n reProps.autoHeight ? 'qd-dialog--auto-height' : ''\n ]\"\n :dialog-style=\"dialogStyle\"\n v-bind=\"reProps.dialogOptions\"\n >\n <template #header=\"slotProps\">\n <slot\n v-if=\"\n (typeof reProps.header !== 'boolean' && reProps.header) ||\n (reProps.header !== false && $slots.header)\n \"\n name=\"header\"\n v-bind=\"slotProps\"\n >\n <component :is=\"() => reProps.header\" />\n </slot>\n <span v-else></span>\n\n <span class=\"t-dialog__zoom\" @click=\"handleFullscreen\">\n <fullscreen-exit-icon v-if=\"isFullscreen\" />\n <fullscreen-icon v-else />\n </span>\n </template>\n\n <template v-for=\"name in filterSlots($slots, ['header', 'default'])\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n\n <slot />\n\n <teleport\n v-if=\"\n (!$slots.footer ||\n reProps.dialogOptions.footer === false ||\n (typeof reProps.dialogOptions.footer !== 'boolean' && !reProps.dialogOptions.footer)) &&\n ($slots['footer-extend'] || reProps.footerExtend || reProps.extendBtns?.length)\n \"\n :to=\"`.${uniqueClassName} .t-dialog__footer`\"\n defer\n >\n <t-divider\n v-if=\"$slots['footer-extend'] || reProps.footerExtend || reProps.extendBtns?.length\"\n layout=\"vertical\"\n />\n\n <slot name=\"footer-extend\">\n <component\n v-if=\"reProps.footerExtend\"\n :is=\"\n typeof reProps.footerExtend === 'function'\n ? reProps.footerExtend\n : () => reProps.footerExtend\n \"\n />\n\n <template v-else>\n <template v-for=\"(btn, index) in reProps.extendBtns\" :key=\"index\">\n <t-button\n v-if=\"typeof btn === 'object'\"\n v-bind=\"{ theme: 'default', variant: 'outline', ...btn }\"\n />\n <component v-else :is=\"() => btn\" />\n </template>\n </template>\n </slot>\n </teleport>\n </t-dialog>\n</template>\n\n<script setup lang=\"ts\">\n import type { Position } from '@vueuse/core'\n import { useDraggable, useVModels } from '@vueuse/core'\n import { debounce } from 'lodash-es'\n import { domOn, filterSlots, isEmpty, suspectedWrapperPromise } from 'qidian-shared'\n import { FullscreenExitIcon, FullscreenIcon } from 'tdesign-icons-vue-next'\n import { Button as TButton, Dialog as TDialog, Divider as TDivider } from 'tdesign-vue-next'\n import { computed, getCurrentInstance, reactive, ref } from 'vue'\n\n import { qdDialogProps } from './props'\n import type { QdDialogInstanceFunctions, QdDialogProps } from './types'\n\n defineOptions({\n name: 'QdDialog'\n })\n\n const props = withDefaults(defineProps<QdDialogProps>(), qdDialogProps)\n const emit = defineEmits<{\n 'update:visible': [QdDialogProps['visible']]\n }>()\n const { visible } = useVModels(props, emit, { passive: true })\n\n const { uid } = getCurrentInstance()!\n const uniqueClassName = `qd-dialog--${uid}`\n const dragPosition = reactive<Partial<Position>>({})\n const currentMode = ref<QdDialogProps['mode']>()\n const confirmLoad = ref(false)\n const isContainerOutside = ref(false)\n let isContainerOutsideController: AbortController | undefined\n\n const reProps = computed(() => {\n const {\n visible: inVisible,\n confirmLoading,\n header,\n footerExtend,\n extendBtns,\n mode,\n dialogStyle,\n autoHeight,\n ...dialogOptions\n } = props\n const reConfirmLoading = confirmLoad.value || confirmLoading\n\n return {\n header,\n footerExtend,\n extendBtns,\n autoHeight,\n style: dialogStyle,\n dialogOptions: {\n ...dialogOptions,\n\n mode: currentMode.value || mode,\n\n confirmLoading: reConfirmLoading,\n closeOnEscKeydown: reConfirmLoading ? false : dialogOptions.closeOnEscKeydown,\n closeOnOverlayClick: reConfirmLoading ? false : dialogOptions.closeOnOverlayClick,\n closeBtn: reConfirmLoading ? false : dialogOptions.closeBtn,\n\n cancelBtn: reConfirmLoading\n ? typeof dialogOptions.cancelBtn === 'object'\n ? { ...dialogOptions.cancelBtn, disabled: true }\n : { disabled: true }\n : dialogOptions.cancelBtn,\n\n onConfirm: async () => {\n const onConfirm = dialogOptions.onConfirm\n if (!onConfirm) return\n\n confirmLoad.value = true\n const [err, res] = await suspectedWrapperPromise(\n onConfirm((closed) => {\n visible.value = !closed\n })\n )\n confirmLoad.value = false\n if (err || res === false) return\n\n visible.value = false\n },\n\n onBeforeOpen: debounce(() => {\n dialogOptions.onBeforeOpen?.()\n }, 10),\n\n onOpened: () => {\n dialogOptions.onOpened?.()\n\n const containerEl = document.querySelector(`.${uniqueClassName}`) as HTMLElement | null\n if (!containerEl) return\n\n const dialogEl = containerEl.querySelector('.t-dialog') as HTMLElement\n const headerEl = containerEl.querySelector('.t-dialog__header') as HTMLElement\n\n isContainerOutsideController = new AbortController()\n domOn(\n containerEl,\n 'mouseleave',\n () => {\n isContainerOutside.value = true\n },\n { signal: isContainerOutsideController.signal }\n )\n domOn(\n containerEl,\n 'mouseenter',\n () => {\n isContainerOutside.value = false\n },\n { signal: isContainerOutsideController.signal }\n )\n domOn(\n headerEl,\n 'dblclick',\n () => {\n if (dragDisabled.value) return\n delete dragPosition.x\n delete dragPosition.y\n },\n { signal: isContainerOutsideController.signal }\n )\n\n useDraggable(dialogEl, {\n disabled: dragDisabled,\n handle: headerEl,\n onMove: (position) => {\n if (isContainerOutside.value) return\n Object.assign(dragPosition, position)\n }\n })\n },\n\n onBeforeClose: () => {\n dialogOptions.onBeforeClose?.()\n isContainerOutsideController?.abort()\n }\n },\n models: { visible: inVisible }\n }\n })\n\n const dialogStyle = computed(() => {\n if (isEmpty(dragPosition) || isFullscreen.value) return reProps.value.style\n\n return Object.assign(\n {},\n { top: `${dragPosition.y}px`, left: `${dragPosition.x}px` },\n reProps.value.style\n )\n })\n\n const isFullscreen = computed(\n () => currentMode.value === 'full-screen' || reProps.value.dialogOptions.mode === 'full-screen'\n )\n\n const dragDisabled = computed(() => (visible.value ? isFullscreen.value : false))\n\n function handleFullscreen() {\n if (isFullscreen.value) {\n const { mode } = reProps.value.dialogOptions\n currentMode.value = mode === 'full-screen' ? 'modal' : mode\n return\n }\n\n currentMode.value = 'full-screen'\n }\n\n function show() {\n visible.value = true\n }\n\n function hide() {\n visible.value = false\n }\n\n const expose: QdDialogInstanceFunctions = { show, hide }\n\n defineExpose(expose)\n</script>\n\n<style lang=\"less\">\n .qd-dialog {\n .t-dialog {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0 !important;\n position: fixed !important;\n will-change: top, left;\n max-height: 90%;\n\n &__wrap {\n overflow: hidden;\n }\n\n &__position {\n align-items: center !important;\n height: 100%;\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n &__header {\n padding: var(--td-comp-paddingTB-xl) var(--td-comp-paddingLR-xl) var(--td-comp-paddingTB-l) !important;\n cursor: move;\n user-select: none;\n touch-action: none;\n\n &-content {\n align-items: center !important;\n justify-content: space-between;\n gap: var(--td-comp-margin-s);\n }\n\n &--fullscreen {\n cursor: default;\n min-height: auto !important;\n background-color: transparent !important;\n\n .t-dialog__header-content {\n justify-content: space-between !important;\n }\n }\n }\n\n &__body {\n flex: 1;\n padding: 0 var(--td-comp-paddingLR-xl) var(--td-comp-paddingTB-xl) !important;\n\n &--fullscreen {\n flex: 1 1 0;\n }\n\n &--fullscreen--without-footer {\n flex: 1 1 0;\n padding: 0 var(--td-comp-paddingLR-xl) var(--td-comp-paddingTB-l) !important;\n }\n }\n\n &:has(.t-dialog__footer) {\n .t-dialog__body {\n padding: 0 var(--td-comp-paddingLR-xl) !important;\n }\n }\n\n &__footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: var(--td-comp-paddingTB-l) var(--td-comp-paddingLR-xl) var(--td-comp-paddingTB-xl) !important;\n\n &--fullscreen {\n min-height: auto !important;\n }\n }\n\n &__zoom {\n font-size: calc(var(--td-font-size-body-large) + 4px);\n color: var(--td-text-color-secondary);\n display: flex;\n width: calc(var(--td-font-size-body-large) + 4px);\n height: calc(var(--td-font-size-body-large) + 4px);\n align-items: center;\n border-radius: var(--td-radius-default);\n transition: all 0.2s linear;\n padding: var(--td-comp-paddingTB-xxs) var(--td-comp-paddingLR-xxs);\n\n &:hover {\n cursor: pointer;\n background: var(--td-bg-color-container-hover);\n }\n\n &:active {\n background: var(--td-bg-color-container-active);\n }\n }\n\n &__zoom,\n &__close {\n justify-content: center;\n\n .t-icon {\n width: var(--td-comp-size-xxxs);\n height: var(--td-comp-size-xxxs);\n margin-right: 0 !important;\n }\n }\n\n &__fullscreen {\n padding: 0 !important;\n position: relative !important;\n }\n }\n\n &:not(&--auto-height) .t-dialog:not(.t-dialog__fullscreen) {\n height: 100%;\n }\n\n &--has-footer-extend .t-dialog__footer {\n flex-direction: row-reverse;\n justify-content: flex-start;\n }\n }\n</style>\n"],"names":["dialogStyle","_openBlock","_createBlock","_unref","_mergeProps","$slots","_createSlots","_withCtx","_renderSlot","_normalizeProps","_resolveDynamicComponent","_createElementBlock","_createElementVNode","_Teleport","TDivider","_Fragment","_guardReactiveProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiGE,UAAM,QAAQ;AACd,UAAM,OAAO;AAGb,UAAM,EAAE,YAAY,WAAW,OAAO,MAAM,EAAE,SAAS,MAAM;AAE7D,UAAM,EAAE,IAAA,IAAQ,mBAAA;AAChB,UAAM,kBAAkB,cAAc,GAAG;AACzC,UAAM,eAAe,SAA4B,EAAE;AACnD,UAAM,cAAc,IAAA;AACpB,UAAM,cAAc,IAAI,KAAK;AAC7B,UAAM,qBAAqB,IAAI,KAAK;AACpC,QAAI;AAEJ,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM;AAAA,QACJ,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAAA;AAAAA,QACA;AAAA,QACA,GAAG;AAAA,MAAA,IACD;AACJ,YAAM,mBAAmB,YAAY,SAAS;AAE9C,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAOA;AAAAA,QACP,eAAe;AAAA,UACb,GAAG;AAAA,UAEH,MAAM,YAAY,SAAS;AAAA,UAE3B,gBAAgB;AAAA,UAChB,mBAAmB,mBAAmB,QAAQ,cAAc;AAAA,UAC5D,qBAAqB,mBAAmB,QAAQ,cAAc;AAAA,UAC9D,UAAU,mBAAmB,QAAQ,cAAc;AAAA,UAEnD,WAAW,mBACP,OAAO,cAAc,cAAc,WACjC,EAAE,GAAG,cAAc,WAAW,UAAU,KAAA,IACxC,EAAE,UAAU,KAAA,IACd,cAAc;AAAA,UAElB,WAAW,YAAY;AACrB,kBAAM,YAAY,cAAc;AAChC,gBAAI,CAAC,UAAW;AAEhB,wBAAY,QAAQ;AACpB,kBAAM,CAAC,KAAK,GAAG,IAAI,MAAM;AAAA,cACvB,UAAU,CAAC,WAAW;AACpB,wBAAQ,QAAQ,CAAC;AAAA,cACnB,CAAC;AAAA,YAAA;AAEH,wBAAY,QAAQ;AACpB,gBAAI,OAAO,QAAQ,MAAO;AAE1B,oBAAQ,QAAQ;AAAA,UAClB;AAAA,UAEA,cAAc,SAAS,MAAM;AAC3B,0BAAc,eAAA;AAAA,UAChB,GAAG,EAAE;AAAA,UAEL,UAAU,MAAM;AACd,0BAAc,WAAA;AAEd,kBAAM,cAAc,SAAS,cAAc,IAAI,eAAe,EAAE;AAChE,gBAAI,CAAC,YAAa;AAElB,kBAAM,WAAW,YAAY,cAAc,WAAW;AACtD,kBAAM,WAAW,YAAY,cAAc,mBAAmB;AAE9D,2CAA+B,IAAI,gBAAA;AACnC;AAAA,cACE;AAAA,cACA;AAAA,cACA,MAAM;AACJ,mCAAmB,QAAQ;AAAA,cAC7B;AAAA,cACA,EAAE,QAAQ,6BAA6B,OAAA;AAAA,YAAO;AAEhD;AAAA,cACE;AAAA,cACA;AAAA,cACA,MAAM;AACJ,mCAAmB,QAAQ;AAAA,cAC7B;AAAA,cACA,EAAE,QAAQ,6BAA6B,OAAA;AAAA,YAAO;AAEhD;AAAA,cACE;AAAA,cACA;AAAA,cACA,MAAM;AACJ,oBAAI,aAAa,MAAO;AACxB,uBAAO,aAAa;AACpB,uBAAO,aAAa;AAAA,cACtB;AAAA,cACA,EAAE,QAAQ,6BAA6B,OAAA;AAAA,YAAO;AAGhD,yBAAa,UAAU;AAAA,cACrB,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,QAAQ,CAAC,aAAa;AACpB,oBAAI,mBAAmB,MAAO;AAC9B,uBAAO,OAAO,cAAc,QAAQ;AAAA,cACtC;AAAA,YAAA,CACD;AAAA,UACH;AAAA,UAEA,eAAe,MAAM;AACnB,0BAAc,gBAAA;AACd,0CAA8B,MAAA;AAAA,UAChC;AAAA,QAAA;AAAA,QAEF,QAAQ,EAAE,SAAS,UAAA;AAAA,MAAU;AAAA,IAEjC,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;AACjC,UAAI,QAAQ,YAAY,KAAK,aAAa,MAAO,QAAO,QAAQ,MAAM;AAEtE,aAAO,OAAO;AAAA,QACZ,CAAA;AAAA,QACA,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAA;AAAA,QACrD,QAAQ,MAAM;AAAA,MAAA;AAAA,IAElB,CAAC;AAED,UAAM,eAAe;AAAA,MACnB,MAAM,YAAY,UAAU,iBAAiB,QAAQ,MAAM,cAAc,SAAS;AAAA,IAAA;AAGpF,UAAM,eAAe,SAAS,MAAO,QAAQ,QAAQ,aAAa,QAAQ,KAAM;AAEhF,aAAS,mBAAmB;AAC1B,UAAI,aAAa,OAAO;AACtB,cAAM,EAAE,KAAA,IAAS,QAAQ,MAAM;AAC/B,oBAAY,QAAQ,SAAS,gBAAgB,UAAU;AACvD;AAAA,MACF;AAEA,kBAAY,QAAQ;AAAA,IACtB;AAEA,aAAS,OAAO;AACd,cAAQ,QAAQ;AAAA,IAClB;AAEA,aAAS,OAAO;AACd,cAAQ,QAAQ;AAAA,IAClB;AAEA,UAAM,SAAoC,EAAE,MAAM,KAAA;AAElD,aAAa,MAAM;;AAlQnB,aAAAC,aAAAC,YA6EWC,eA7EXC,WA6EW;AAAA,QA5ED,SAASD,MAAA,OAAA;AAAA,mFAAA,QAAO,QAAA,SAAA;AAAA,QACvB,OAAK;AAAA;UAA6B;AAAA,WAAyBE,CAAAA,KAAAA,OAAO,UAAkB,QAAA,MAAQ,cAAc,WAAM,gBAA8B,QAAA,MAAQ,cAAc,yBAAyB,QAAA,MAAQ,cAAc,YAAmBA,KAAAA,OAAM,eAAA,KAAqB,cAAQ,gBAAgB,QAAA,MAAQ,YAAY;UAAqE,QAAA,MAAQ,aAAU,2BAAA;AAAA,QAAA;AAAA,QAWpY,gBAAc,YAAA;AAAA,MAAA,GACP,QAAA,MAAQ,aAAa,GAAAC,YAAA;AAAA,QAElB,QAAMC,QACf,CASO,cAVmB;AAAA,UAEC,OAAA,QAAA,MAAQ,WAAM,aAAkB,QAAA,MAAQ,UAAsB,QAAA,MAAQ,WAAM,SAAcF,KAAAA,OAAO,SAD5HG,WASO,KAAA,QAAA,UAAAC,eAAAL,WAAA,EAAA,KAAA,EAAA,GAHG,SAAS,CAAA,GANnB,MASO;AAAA,0BADLF,YAAwCQ,wBAAA,MAAlB,QAAA,MAAQ,MAAM,CAAA;AAAA,UAAA,mBAEtCC,mBAAoB,QAAA,UAAA;AAAA,UAEpBC,mBAGO,QAAA;AAAA,YAHD,OAAM;AAAA,YAAkB,SAAO;AAAA,UAAA;YACP,aAAA,sBAA5BV,YAA4CC,MAAA,kBAAA,GAAA,EAAA,KAAA,EAAA,CAAA,mBAC5CD,YAA0BC,MAAA,cAAA,GAAA,EAAA,KAAA,GAAA;AAAA,UAAA;;yBAQ9B,MAAQ;AAAA,UAARK,WAAQ,KAAA,QAAA,SAAA;AAAA,WAGWH,CAAAA,KAAAA,OAAO,UAAoB,QAAA,MAAQ,cAAc,WAAM,gBAAgC,QAAA,MAAQ,cAAc,yBAAyB,QAAA,MAAQ,cAAc,YAAqBA,KAAAA,OAAM,eAAA,KAAqB,cAAQ,gBAAgB,QAAA,MAAQ,YAAY,wBAD3QH,YAmCWW,UAAA;AAAA;YA5BR,QAAQ,eAAe;AAAA,YACxB,OAAA;AAAA,UAAA;YAGQR,KAAAA,OAAM,eAAA,KAAqB,cAAQ,gBAAgB,QAAA,MAAQ,YAAY,uBAD/EH,YAGEC,MAAAW,OAAA,GAAA;AAAA;cADA,QAAO;AAAA,YAAA;YAGTN,WAmBO,kCAnBP,MAmBO;AAAA,cAjBG,QAAA,MAAQ,6BADhBN,YAOEQ;AAAAA,gBALyB,OAAA,QAAA,MAAQ,iBAAY,aAAgC,QAAA,MAAQ,eAAmC,MAAA,QAAA,MAAQ;AAAA,cAAA,mBAQhIT,UAAA,IAAA,GAAAU,mBAMWI,iCANsB,QAAA,MAAQ,YAAU,CAAjC,KAAK,UAAK;wEAA+B,SAAK;AAAA,yBAE/C,QAAG,YADlBd,UAAA,GAAAC,YAGEC,eAHFC,WAGE;AAAA;;gEADmD,IAAA,CAAG,GAAA,MAAA,EAAA,MAExDH,UAAA,GAAAC,YAAoCQ,8BAAP,GAAG,GAAA,EAAA,KAAA,GAAA;AAAA,gBAAA;;;;;;;mBArCfP,MAAA,WAAA,EAAYE,KAAAA,QAAM,CAAA,UAAA,SAAA,CAAA,GAAA,CAA1B,SAAI;;;YACnB,IAAAE,QAAA,CAD4E,cAAS;AAAA,cACrFC,WAAwC,KAAA,QAA3B,MAAIC,eAAAO,mBAAU,SAAS,CAAA,CAAA;AAAA,YAAA;;;;;;;"}
1
+ {"version":3,"file":"index.vue.mjs","sources":["../../../src/components/dialog/index.vue"],"sourcesContent":["<template>\n <t-dialog\n v-model:visible=\"visible\"\n :class=\"[\n 'qd-dialog',\n uniqueClassName,\n (!$slots.footer ||\n reProps.dialogOptions.footer === false ||\n (typeof reProps.dialogOptions.footer !== 'boolean' && !reProps.dialogOptions.footer)) &&\n ($slots['footer-extend'] || reProps.footerExtend || reProps.extendBtns?.length)\n ? 'qd-dialog--has-footer-extend'\n : '',\n reProps.autoHeight ? 'qd-dialog--auto-height' : ''\n ]\"\n :dialog-style=\"dialogStyle\"\n v-bind=\"reProps.dialogOptions\"\n >\n <template #header=\"slotProps\">\n <slot\n v-if=\"\n (typeof reProps.header !== 'boolean' && reProps.header) ||\n (reProps.header !== false && $slots.header)\n \"\n name=\"header\"\n v-bind=\"slotProps\"\n >\n <component :is=\"() => reProps.header\" />\n </slot>\n <span v-else></span>\n\n <span v-if=\"reProps.fullscreenBtn\" class=\"t-dialog__zoom\" @click=\"handleFullscreen\">\n <fullscreen-exit-icon v-if=\"isFullscreen\" />\n <fullscreen-icon v-else />\n </span>\n </template>\n\n <template v-for=\"name in filterSlots($slots, ['header', 'default'])\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n\n <slot />\n\n <teleport\n v-if=\"\n (!$slots.footer ||\n reProps.dialogOptions.footer === false ||\n (typeof reProps.dialogOptions.footer !== 'boolean' && !reProps.dialogOptions.footer)) &&\n ($slots['footer-extend'] || reProps.footerExtend || reProps.extendBtns?.length)\n \"\n :to=\"`.${uniqueClassName} .t-dialog__footer`\"\n defer\n >\n <t-divider\n v-if=\"$slots['footer-extend'] || reProps.footerExtend || reProps.extendBtns?.length\"\n layout=\"vertical\"\n />\n\n <slot name=\"footer-extend\">\n <component\n v-if=\"reProps.footerExtend\"\n :is=\"\n typeof reProps.footerExtend === 'function'\n ? reProps.footerExtend\n : () => reProps.footerExtend\n \"\n />\n\n <template v-else>\n <template v-for=\"(btn, index) in reProps.extendBtns\" :key=\"index\">\n <t-button\n v-if=\"typeof btn === 'object'\"\n v-bind=\"{ theme: 'default', variant: 'outline', ...btn }\"\n />\n <component v-else :is=\"() => btn\" />\n </template>\n </template>\n </slot>\n </teleport>\n </t-dialog>\n</template>\n\n<script setup lang=\"ts\">\n import type { Position } from '@vueuse/core'\n import { useDraggable, useVModels } from '@vueuse/core'\n import { debounce } from 'lodash-es'\n import { domOn, filterSlots, isEmpty, suspectedWrapperPromise } from 'qidian-shared'\n import { FullscreenExitIcon, FullscreenIcon } from 'tdesign-icons-vue-next'\n import { Button as TButton, Dialog as TDialog, Divider as TDivider } from 'tdesign-vue-next'\n import { computed, getCurrentInstance, reactive, ref } from 'vue'\n\n import { qdDialogProps } from './props'\n import type { QdDialogInstanceFunctions, QdDialogProps } from './types'\n\n defineOptions({\n name: 'QdDialog'\n })\n\n const props = withDefaults(defineProps<QdDialogProps>(), qdDialogProps)\n const emit = defineEmits<{\n 'update:visible': [QdDialogProps['visible']]\n }>()\n const { visible } = useVModels(props, emit, { passive: true })\n\n const { uid } = getCurrentInstance()!\n const uniqueClassName = `qd-dialog--${uid}`\n const dragPosition = reactive<Partial<Position>>({})\n const currentMode = ref<QdDialogProps['mode']>()\n const confirmLoad = ref(false)\n const isContainerOutside = ref(false)\n let isContainerOutsideController: AbortController | undefined\n\n const reProps = computed(() => {\n const {\n visible: inVisible,\n confirmLoading,\n header,\n footerExtend,\n extendBtns,\n mode,\n dialogStyle,\n autoHeight,\n fullscreenBtn,\n ...dialogOptions\n } = props\n const reConfirmLoading = confirmLoad.value || confirmLoading\n\n return {\n header,\n footerExtend,\n extendBtns,\n autoHeight,\n fullscreenBtn,\n style: dialogStyle,\n dialogOptions: {\n ...dialogOptions,\n\n mode: currentMode.value || mode,\n\n confirmLoading: reConfirmLoading,\n closeOnEscKeydown: reConfirmLoading ? false : dialogOptions.closeOnEscKeydown,\n closeOnOverlayClick: reConfirmLoading ? false : dialogOptions.closeOnOverlayClick,\n closeBtn: reConfirmLoading ? false : dialogOptions.closeBtn,\n\n cancelBtn: reConfirmLoading\n ? typeof dialogOptions.cancelBtn === 'object'\n ? { ...dialogOptions.cancelBtn, disabled: true }\n : { disabled: true }\n : dialogOptions.cancelBtn,\n\n onConfirm: async () => {\n const onConfirm = dialogOptions.onConfirm\n if (!onConfirm) return\n\n confirmLoad.value = true\n const [err, res] = await suspectedWrapperPromise(\n onConfirm((closed) => {\n visible.value = !closed\n })\n )\n confirmLoad.value = false\n if (err || res === false) return\n\n visible.value = false\n },\n\n onBeforeOpen: debounce(() => {\n dialogOptions.onBeforeOpen?.()\n }, 10),\n\n onOpened: () => {\n dialogOptions.onOpened?.()\n\n const containerEl = document.querySelector(`.${uniqueClassName}`) as HTMLElement | null\n if (!containerEl) return\n\n const dialogEl = containerEl.querySelector('.t-dialog') as HTMLElement\n const headerEl = containerEl.querySelector('.t-dialog__header') as HTMLElement\n\n isContainerOutsideController = new AbortController()\n domOn(\n containerEl,\n 'mouseleave',\n () => {\n isContainerOutside.value = true\n },\n { signal: isContainerOutsideController.signal }\n )\n domOn(\n containerEl,\n 'mouseenter',\n () => {\n isContainerOutside.value = false\n },\n { signal: isContainerOutsideController.signal }\n )\n domOn(\n headerEl,\n 'dblclick',\n () => {\n if (dragDisabled.value) return\n delete dragPosition.x\n delete dragPosition.y\n },\n { signal: isContainerOutsideController.signal }\n )\n\n useDraggable(dialogEl, {\n disabled: dragDisabled,\n handle: headerEl,\n onMove: (position) => {\n if (isContainerOutside.value) return\n Object.assign(dragPosition, position)\n }\n })\n },\n\n onBeforeClose: () => {\n dialogOptions.onBeforeClose?.()\n isContainerOutsideController?.abort()\n }\n },\n models: { visible: inVisible }\n }\n })\n\n const dialogStyle = computed(() => {\n if (isEmpty(dragPosition) || isFullscreen.value) return reProps.value.style\n\n return Object.assign(\n {},\n { top: `${dragPosition.y}px`, left: `${dragPosition.x}px` },\n reProps.value.style\n )\n })\n\n const isFullscreen = computed(\n () => currentMode.value === 'full-screen' || reProps.value.dialogOptions.mode === 'full-screen'\n )\n\n const dragDisabled = computed(() => (visible.value ? isFullscreen.value : false))\n\n function handleFullscreen() {\n if (isFullscreen.value) {\n const { mode } = reProps.value.dialogOptions\n currentMode.value = mode === 'full-screen' ? 'modal' : mode\n return\n }\n\n currentMode.value = 'full-screen'\n }\n\n function show() {\n visible.value = true\n }\n\n function hide() {\n visible.value = false\n }\n\n const expose: QdDialogInstanceFunctions = { show, hide }\n\n defineExpose(expose)\n</script>\n\n<style lang=\"less\">\n .qd-dialog {\n .t-dialog {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0 !important;\n position: fixed !important;\n will-change: top, left;\n max-height: 90%;\n\n &__wrap {\n overflow: hidden;\n }\n\n &__position {\n align-items: center !important;\n height: 100%;\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n &__header {\n padding: var(--td-comp-paddingTB-xl) var(--td-comp-paddingLR-xl) var(--td-comp-paddingTB-l) !important;\n cursor: move;\n user-select: none;\n touch-action: none;\n\n &-content {\n align-items: center !important;\n justify-content: space-between;\n gap: var(--td-comp-margin-s);\n }\n\n &--fullscreen {\n cursor: default;\n min-height: auto !important;\n background-color: transparent !important;\n\n .t-dialog__header-content {\n justify-content: space-between !important;\n }\n }\n }\n\n &__body {\n flex: 1;\n padding: 0 var(--td-comp-paddingLR-xl) var(--td-comp-paddingTB-xl) !important;\n\n &--fullscreen {\n flex: 1 1 0;\n }\n\n &--fullscreen--without-footer {\n flex: 1 1 0;\n padding: 0 var(--td-comp-paddingLR-xl) var(--td-comp-paddingTB-l) !important;\n }\n }\n\n &:has(.t-dialog__footer) {\n .t-dialog__body {\n padding: 0 var(--td-comp-paddingLR-xl) !important;\n }\n }\n\n &__footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: var(--td-comp-paddingTB-l) var(--td-comp-paddingLR-xl) var(--td-comp-paddingTB-xl) !important;\n\n &--fullscreen {\n min-height: auto !important;\n }\n }\n\n &__zoom {\n font-size: calc(var(--td-font-size-body-large) + 4px);\n color: var(--td-text-color-secondary);\n display: flex;\n width: calc(var(--td-font-size-body-large) + 4px);\n height: calc(var(--td-font-size-body-large) + 4px);\n align-items: center;\n border-radius: var(--td-radius-default);\n transition: all 0.2s linear;\n padding: var(--td-comp-paddingTB-xxs) var(--td-comp-paddingLR-xxs);\n\n &:hover {\n cursor: pointer;\n background: var(--td-bg-color-container-hover);\n }\n\n &:active {\n background: var(--td-bg-color-container-active);\n }\n }\n\n &__zoom,\n &__close {\n justify-content: center;\n\n .t-icon {\n width: var(--td-comp-size-xxxs);\n height: var(--td-comp-size-xxxs);\n margin-right: 0 !important;\n }\n }\n\n &__fullscreen {\n padding: 0 !important;\n position: relative !important;\n }\n }\n\n &:not(&--auto-height) .t-dialog:not(.t-dialog__fullscreen) {\n height: 100%;\n }\n\n &--has-footer-extend .t-dialog__footer {\n flex-direction: row-reverse;\n justify-content: flex-start;\n }\n }\n</style>\n"],"names":["dialogStyle","_openBlock","_createBlock","_unref","_mergeProps","$slots","_createSlots","_withCtx","_renderSlot","_normalizeProps","_resolveDynamicComponent","_createElementBlock","_Teleport","TDivider","_Fragment","_guardReactiveProps"],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare const qdDialogProps: {
12
12
  readonly lazy: true;
13
13
  readonly preventScrollThrough: true;
14
14
  readonly showOverlay: true;
15
+ readonly fullscreenBtn: true;
15
16
  readonly autoHeight: true;
16
17
  };
17
18
  export declare const qdDialogFormProps: {
@@ -29,6 +30,7 @@ export declare const qdDialogFormProps: {
29
30
  readonly lazy: true;
30
31
  readonly preventScrollThrough: true;
31
32
  readonly showOverlay: true;
33
+ readonly fullscreenBtn: true;
32
34
  readonly autoHeight: true;
33
35
  };
34
36
  readonly gutter: () => number[];
@@ -13,6 +13,7 @@ const qdDialogProps = {
13
13
  lazy: true,
14
14
  preventScrollThrough: true,
15
15
  showOverlay: true,
16
+ fullscreenBtn: true,
16
17
  autoHeight: true
17
18
  };
18
19
  const qdDialogFormProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"props.mjs","sources":["../../../src/components/dialog/props.ts"],"sourcesContent":["import { qdFormProps } from '../form/props'\n\nexport const qdDialogProps = {\n width: 'min(960px, 100%)',\n theme: 'default',\n attach: 'body',\n header: true,\n footer: true,\n closeBtn: true,\n closeOnEscKeydown: true,\n closeOnOverlayClick: false,\n confirmOnEnter: undefined,\n destroyOnClose: false,\n lazy: true,\n preventScrollThrough: true,\n showOverlay: true,\n autoHeight: true\n} as const\n\nexport const qdDialogFormProps = {\n ...qdFormProps,\n\n wrapper: () => qdDialogProps\n} as const\n"],"names":[],"mappings":";AAEO,MAAM,gBAAgB;AAAA,EAC3B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,sBAAsB;AAAA,EACtB,aAAa;AAAA,EACb,YAAY;AACd;AAEO,MAAM,oBAAoB;AAAA,EAC/B,GAAG;AAAA,EAEH,SAAS,MAAM;AACjB;"}
1
+ {"version":3,"file":"props.mjs","sources":["../../../src/components/dialog/props.ts"],"sourcesContent":["import { qdFormProps } from '../form/props'\n\nexport const qdDialogProps = {\n width: 'min(960px, 100%)',\n theme: 'default',\n attach: 'body',\n header: true,\n footer: true,\n closeBtn: true,\n closeOnEscKeydown: true,\n closeOnOverlayClick: false,\n confirmOnEnter: undefined,\n destroyOnClose: false,\n lazy: true,\n preventScrollThrough: true,\n showOverlay: true,\n fullscreenBtn: true,\n autoHeight: true\n} as const\n\nexport const qdDialogFormProps = {\n ...qdFormProps,\n\n wrapper: () => qdDialogProps\n} as const\n"],"names":[],"mappings":";AAEO,MAAM,gBAAgB;AAAA,EAC3B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,sBAAsB;AAAA,EACtB,aAAa;AAAA,EACb,eAAe;AAAA,EACf,YAAY;AACd;AAEO,MAAM,oBAAoB;AAAA,EAC/B,GAAG;AAAA,EAEH,SAAS,MAAM;AACjB;"}
@@ -7,6 +7,7 @@ export interface QdDialogProps extends Omit<TdDialogProps, 'placement' | 'onConf
7
7
  footerExtend?: TNode;
8
8
  extendBtns?: (TdButtonProps | TNode)[];
9
9
  autoHeight?: boolean;
10
+ fullscreenBtn?: boolean;
10
11
  }
11
12
  export interface QdDialogInstanceFunctions {
12
13
  show: () => void;
@@ -1,13 +1,16 @@
1
- .qd-service-table[data-v-77c8398f] {
1
+ .qd-service-table[data-v-0f8234a0] {
2
2
  height: 100%;
3
3
  display: flex;
4
4
  flex-direction: column;
5
5
  }
6
- .qd-service-table[data-v-77c8398f] > .t-table__content {
6
+ .qd-service-table[data-v-0f8234a0] > .t-table__content {
7
7
  flex: 1;
8
8
  }
9
- .qd-service-table--ps-x-fixed[data-v-77c8398f] .ps__rail-x {
9
+ .qd-service-table[data-v-0f8234a0] .t-table__tree-col:not(:has(.t-table__tree-op-icon)) {
10
+ margin-left: calc(var(--td-font-size-body-large) + var(--td-comp-margin-s));
11
+ }
12
+ .qd-service-table--ps-x-fixed[data-v-0f8234a0] .ps__rail-x {
10
13
  position: fixed;
11
- left: var(--f0f91fde) !important;
12
- bottom: var(--v4d07c81e) !important;
14
+ left: var(--v5c87e9b0) !important;
15
+ bottom: var(--v387c303a) !important;
13
16
  }
@@ -2,7 +2,7 @@ import './index.css'
2
2
  import _sfc_main from "./index.vue2.mjs";
3
3
  /* empty css */
4
4
  import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.mjs";
5
- const QdServiceTable = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-77c8398f"]]);
5
+ const QdServiceTable = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-0f8234a0"]]);
6
6
  export {
7
7
  QdServiceTable as default
8
8
  };
@@ -302,8 +302,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
302
302
  emit: __emit
303
303
  }) {
304
304
  useCssVars((_ctx) => ({
305
- "f0f91fde": tableContentLeft.value,
306
- "v4d07c81e": outsideBottom.value
305
+ "v5c87e9b0": tableContentLeft.value,
306
+ "v387c303a": outsideBottom.value
307
307
  }));
308
308
  const props = __props;
309
309
  const emit = __emit;
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.mjs","sources":["../../../../src/components/service/table/index.vue"],"sourcesContent":["<template>\n <component\n :is=\"reProps.tableOptions.tree ? TEnhancedTable : TTable\"\n ref=\"table\"\n :class=\"[\n 'qd-service-table',\n headerBg ? '' : 't-table--header-bg-inherit',\n isOutsideTableContent ? '' : 'qd-service-table--inside-table-content',\n tableContentVisible && tableHeaderHalfVisible && !tableContentFullVisible\n ? 'qd-service-table--ps-x-fixed'\n : ''\n ]\"\n v-resize=\"onResize\"\n v-model:selected-row-keys=\"selectedRowKeys\"\n v-model:active-row-keys=\"activeRowKeys\"\n v-model:column-controller-visible=\"columnControllerVisible\"\n v-model:display-columns=\"displayColumns\"\n v-model:expanded-row-keys=\"expandedRowKeys\"\n v-model:filter-value=\"filterValue\"\n v-model:sort=\"reSort\"\n v-model:expanded-tree-nodes=\"expandedTreeNodes\"\n v-bind=\"reProps.tableOptions\"\n :on-sort-change=\"reOnSortChange\"\n :columns=\"autoWidthColumns\"\n :loading=\"tableLoad\"\n :data=\"data\"\n :pagination=\"rePagination\"\n >\n <template #empty>\n <t-empty class=\"qd-service-table__empty\" :title=\"t('emptyText')\" />\n </template>\n\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </component>\n</template>\n\n<script\n setup\n lang=\"tsx\"\n generic=\"\n D extends TableRowData = TableRowData,\n R = unknown,\n P = ServicePageParams,\n TP = P,\n Pag extends ServicePagination = ServicePagination\n \"\n>\n import {\n useElementBounding,\n useIntersectionObserver,\n useMouseInElement,\n useVModels\n } from '@vueuse/core'\n import { get } from 'lodash-es'\n import type {\n ServiceMaybePageParams,\n ServicePageParams,\n ServicePageRes,\n ServicePagination\n } from 'qidian-shared'\n import {\n createExposeProxy,\n easyCopy,\n isEmpty,\n suspectedWrapperPromise,\n useServicePagination\n } from 'qidian-shared'\n import { getScrollEl, resizeDirective } from 'qidian-shared'\n import { AddRectangleIcon, LoadingIcon, MinusRectangleIcon } from 'tdesign-icons-vue-next'\n import type {\n EnhancedTableInstanceFunctions,\n TableRowData,\n TableRowValue,\n TdEnhancedTableProps\n } from 'tdesign-vue-next'\n import type { SortInfo, TableSort } from 'tdesign-vue-next'\n import {\n Empty as TEmpty,\n EnhancedTable as TEnhancedTable,\n Table as TTable\n } from 'tdesign-vue-next'\n import type { ComponentPublicInstance } from 'vue'\n import {\n computed,\n nextTick,\n onActivated,\n onBeforeUnmount,\n onDeactivated,\n reactive,\n ref,\n useTemplateRef,\n watch\n } from 'vue'\n\n import { usePerfectScrollbar } from '../../../hooks'\n import { useConfig } from '../../config-provider/useConfig'\n import { qdServiceTableProps, qdServiceTableTreeConfig } from './props'\n import type { QdServiceTableInstanceFunctions, QdServiceTableProps } from './types'\n\n defineOptions({\n name: 'QdServiceTable'\n })\n\n type Props = QdServiceTableProps<D, R, P, TP, Pag>\n\n const props = withDefaults(defineProps<Props>(), qdServiceTableProps)\n const emit = defineEmits<{\n 'update:data': [Props['data']]\n 'update:selectedRowKeys': [Props['selectedRowKeys']]\n 'update:activeRowKeys': [Props['activeRowKeys']]\n 'update:columnControllerVisible': [Props['columnControllerVisible']]\n 'update:displayColumns': [Props['displayColumns']]\n 'update:expandedRowKeys': [Props['expandedRowKeys']]\n 'update:filterValue': [Props['filterValue']]\n 'update:sort': [Props['sort']]\n 'update:expandedTreeNodes': [Props['expandedTreeNodes']]\n }>()\n const {\n data,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n displayColumns,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes\n } = useVModels<typeof props, keyof typeof emit>(props, emit, { passive: true })\n\n const innerSort = ref<TableSort | undefined>(getDefaultSort())\n const reSort = computed<TableSort | undefined>({\n get: () => sort.value ?? innerSort.value,\n set: (value) => {\n innerSort.value = normalizeSort(value)\n sort.value = innerSort.value\n }\n })\n\n const vResize = resizeDirective\n const { t } = useConfig('crud')\n const { t: tableT } = useConfig('table')\n const tableRef = useTemplateRef<EnhancedTableInstanceFunctions & ComponentPublicInstance>('table')\n const treeLoadIds = ref<(string | number)[]>([])\n\n const defaultMinWidth = 80\n\n const scrollRecord = { top: 0, left: 0 }\n const outsideScrollEl = ref<HTMLElement | null>(null)\n const tableHeaderEl = ref<HTMLElement | null>(null)\n const tableHeaderH = ref(0)\n const tableContentEl = ref<HTMLElement | null>(null)\n const tableContentVisible = ref(false)\n const isScrollSyncing = ref(false)\n\n const tableContentRect = reactive(useElementBounding(tableContentEl))\n const tableContentLeft = computed(() => `${tableContentRect.left}px`)\n const outsideScrollRect = reactive(useElementBounding(outsideScrollEl))\n const outsideBottom = computed(() =>\n outsideScrollEl.value ? `${window.innerHeight - outsideScrollRect.bottom}px` : '0'\n )\n\n const tableHeaderHalfVisible = computed(() => {\n if (!tableContentVisible.value) return false\n return tableContentRect.top + tableHeaderH.value * 0.5 <= outsideScrollRect.bottom\n })\n\n const tableContentFullVisible = computed(() => {\n if (!tableContentVisible.value) return false\n\n const contentBottom = tableContentRect.bottom\n const containerBottom = outsideScrollRect.bottom\n\n return contentBottom <= containerBottom\n })\n\n usePerfectScrollbar(tableContentEl, {\n watch: {\n source: data,\n force: true\n },\n onScrollX: (evt) => {\n if (isScrollSyncing.value) return\n if (!tableHeaderEl.value) return\n\n isScrollSyncing.value = true\n tableHeaderEl.value.scrollLeft = (evt.target as HTMLElement).scrollLeft\n\n const affixedTableHeaderEl = tableRef.value?.$el.querySelector('.t-table__affixed-header-elm')\n if (affixedTableHeaderEl) {\n affixedTableHeaderEl.scrollLeft = (evt.target as HTMLElement).scrollLeft\n }\n\n requestAnimationFrame(() => {\n isScrollSyncing.value = false\n })\n }\n })\n\n const {\n stop: tableContentStop,\n pause: tableContentPause,\n resume: tableContentResume\n } = useIntersectionObserver(\n tableContentEl,\n ([entry]) => {\n tableContentVisible.value = entry?.isIntersecting || false\n },\n {\n root: outsideScrollEl\n }\n )\n\n const { isOutside: isOutsideTableContent, stop: outsideTableContentStop } =\n useMouseInElement(tableContentEl)\n\n const reProps = computed(() => {\n const {\n service,\n manual,\n transformParams,\n transformRes,\n pagination,\n cacheKey,\n cacheTime,\n pollingInterval,\n onBefore,\n onAfter,\n onSuccess,\n onError,\n\n loadingWithData,\n\n loading,\n selectType,\n data,\n selectedRowKeys,\n activeRowKeys,\n columns,\n columnControllerVisible,\n displayColumns,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes,\n\n selectOnRowClick,\n expandOnRowClick,\n tree,\n onScroll,\n onRowClick,\n bordered,\n headerAffixedTop,\n ...tableOptions\n } = props\n\n // 处理懒加载配置\n const reTableOptions = tableOptions as TdEnhancedTableProps<D>\n let reTransformRes = transformRes\n\n const reTree = tree ? { ...tree, ...easyCopy(qdServiceTableTreeConfig) } : tree\n\n if (reTree?.lazyLoad) {\n reTransformRes = async (res) => {\n let temp: ServicePageRes<D> | undefined\n if (transformRes) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes(res))\n if (trErr) throw trErr\n\n temp = trRes\n } else {\n temp = res as ServicePageRes<D>\n }\n\n temp.records.forEach((item) => {\n if (item.children) return\n\n item.children = true as unknown as D[]\n })\n\n return temp\n }\n\n // 如果用户没有配置 treeExpandAndFoldIcon,生成默认的\n if (!tableOptions.treeExpandAndFoldIcon) {\n reTableOptions.treeExpandAndFoldIcon = (h, { row, type }) => {\n const children = row.children as unknown\n\n if (treeLoadIds.value.includes(row.id) && children === true) {\n return <LoadingIcon style={{ color: 'var(--td-brand-color)' }} />\n }\n\n if (children === true && row.__qdTreeLoaded) {\n return <AddRectangleIcon style={{ color: 'transparent', cursor: 'default' }} />\n }\n\n return type === 'expand' ? <AddRectangleIcon /> : <MinusRectangleIcon />\n }\n }\n\n // 如果用户没有配置 onExpandedTreeNodesChange,生成默认的\n if (!tableOptions.onExpandedTreeNodesChange) {\n reTableOptions.onExpandedTreeNodesChange = async (currentExpandedTreeNodes, options) => {\n const { row, rowState } = options\n if (!service || !row || !rowState) return\n\n const { level } = rowState\n const { __qdTreeLoaded } = row\n const { maxLevel } = reTree\n const id = row[props.rowKey || qdServiceTableProps.rowKey]\n\n // 如果已加载或达到最大层级,不再加载\n if (\n treeLoadIds.value.includes(id) ||\n __qdTreeLoaded ||\n isEmpty(level) ||\n (!isEmpty(maxLevel) && level! >= maxLevel!)\n ) {\n return\n }\n\n // 设置加载状态\n treeLoadIds.value.push(id)\n tableRef.value?.setData(id, { ...row, __qdTreeLoaded: true })\n\n const { transformParams, transformRes } = reTree\n\n const currentParams = options\n let tParams: TP | undefined\n\n if (transformParams) {\n const [tpErr, tpRes] = await suspectedWrapperPromise(transformParams(currentParams))\n if (tpErr) throw tpErr\n tParams = tpRes\n }\n\n const [serviceErr, serviceRes] = await suspectedWrapperPromise(\n service(tParams || (currentParams as TP))\n )\n if (serviceErr) {\n removeTreeLoadId(id)\n throw serviceErr\n }\n\n let temp: ServicePageRes<D> | undefined\n if (transformRes) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes(serviceRes, options))\n if (trErr) {\n removeTreeLoadId(id)\n throw trErr\n }\n\n temp = trRes\n } else {\n temp = serviceRes as ServicePageRes<D>\n }\n\n removeTreeLoadId(id)\n if (!temp.records) temp.records = []\n if (isEmpty(temp.total)) temp.total = temp.records.length\n\n if (!temp.records.length) return\n\n const childrenKey = reTree.childrenKey || qdServiceTableTreeConfig.childrenKey\n tableRef.value?.setData(id, {\n ...row,\n __qdTreeLoaded: true,\n [childrenKey]: []\n })\n tableRef.value?.appendTo(\n id,\n temp.records.map((item) => {\n if (item.children) return item\n\n return {\n ...item,\n [childrenKey]: isEmpty(maxLevel) ? true : level! + 1 < maxLevel!\n }\n })\n )\n }\n }\n }\n\n const reColumns = columns || []\n if (selectType) {\n const selectIdx = reColumns.findIndex(\n (item) => item.type === 'single' || item.type === 'multiple'\n )\n const defaultSelect: (typeof reColumns)[number] = {\n colKey: 'row-select',\n type: selectType,\n align: 'center',\n width: 50\n }\n\n if (selectIdx > -1) {\n reColumns[selectIdx] = {\n ...defaultSelect,\n ...reColumns[selectIdx]\n }\n } else {\n reColumns.unshift(defaultSelect)\n }\n }\n\n const reSelectOnRowClick =\n selectOnRowClick ??\n (onRowClick ? undefined : !expandOnRowClick && !reTree?.expandTreeNodeOnClick)\n\n const reOnScroll: typeof onScroll = (params) => {\n onScroll?.(params)\n\n const target = params.e.target as HTMLElement\n if (!target) return\n\n const { scrollTop, scrollLeft } = target\n scrollRecord.top = scrollTop\n scrollRecord.left = scrollLeft\n }\n\n const reHeaderAffixedTop =\n outsideScrollEl.value && tableContentVisible.value\n ? Object.assign({ container: () => outsideScrollEl.value }, headerAffixedTop)\n : headerAffixedTop\n\n return {\n loadingWithData,\n columns: reColumns,\n tableOptions: {\n ...reTableOptions,\n\n selectOnRowClick: reSelectOnRowClick,\n expandOnRowClick,\n tree: reTree,\n onScroll: reOnScroll,\n onRowClick,\n headerAffixedTop: reHeaderAffixedTop,\n bordered: bordered ?? tableT('bordered') ?? true\n } as unknown as TdEnhancedTableProps<TableRowData>,\n externalLoad: loading,\n serviceOptions: {\n service,\n manual,\n transformParams: transformServiceParams,\n transformRes: reTransformRes,\n pagination,\n cacheKey,\n cacheTime,\n pollingInterval,\n onBefore,\n onAfter,\n onSuccess,\n onError\n },\n models: {\n data,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n displayColumns,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes\n }\n }\n })\n\n const autoWidthColumns = computed(() => {\n const containerWidth = tableContentRect.width\n const columns = reProps.value.columns\n const noWidthCols = columns.filter((c) => isEmpty(c.width))\n const fixedWidth = columns\n .filter((c) => !isEmpty(c.width))\n .reduce((sum, c) => sum + Number(c.width), 0)\n\n if (containerWidth <= 0 || !noWidthCols.length)\n return columns as unknown as TdEnhancedTableProps['columns']\n\n const bodyMinWidth =\n fixedWidth +\n noWidthCols.reduce(\n (sum, c) => sum + (!isEmpty(c.minWidth) ? Number(c.minWidth) : defaultMinWidth),\n 0\n )\n const totalFlexWidth = containerWidth - bodyMinWidth\n const allColumnsWidth = noWidthCols.reduce(\n (sum, c) => sum + (!isEmpty(c.minWidth) ? Number(c.minWidth) : defaultMinWidth),\n 0\n )\n const flexWidthPerPixel =\n totalFlexWidth > 0 && allColumnsWidth > 0 ? totalFlexWidth / allColumnsWidth : 0\n\n return columns.map((item) => {\n if (!isEmpty(item.width)) return item\n\n const base = !isEmpty(item.minWidth) ? Number(item.minWidth) : defaultMinWidth\n const width = base + base * flexWidthPerPixel\n return { ...item, width }\n }) as unknown as TdEnhancedTableProps['columns']\n })\n\n const {\n firstLoad,\n manualTriggerLoad,\n loading,\n current,\n pageSize,\n total,\n changeCurrent,\n changePageSize,\n changePagination,\n runAsync,\n run,\n cancel,\n refresh,\n refreshAsync\n } = useServicePagination({\n ...reProps.value.serviceOptions,\n onSuccess: async (res) => {\n data.value = res.list\n\n if (reProps.value.tableOptions.tree?.defaultExpandAll) {\n tableRef.value?.foldAll()\n nextTick(() => {\n tableRef.value?.expandAll()\n })\n }\n reProps.value.serviceOptions.onSuccess?.(res)\n }\n })\n\n const reOnSortChange: TdEnhancedTableProps<TableRowData>['onSortChange'] = (\n sortValue,\n options\n ) => {\n reProps.value.tableOptions.onSortChange?.(sortValue, options)\n changeCurrent(1)\n }\n\n const tableLoad = computed<TdEnhancedTableProps['loading']>(() => {\n const { externalLoad, loadingWithData } = reProps.value\n if (externalLoad) return true\n if (!data.value?.length && firstLoad.value) return true\n if (manualTriggerLoad.value) {\n if (data.value?.length) {\n if (loadingWithData) return true\n return false\n }\n return true\n }\n\n return false\n })\n\n const rePagination = computed(() => {\n return !reProps.value.serviceOptions.service ||\n reProps.value.serviceOptions.pagination === false\n ? undefined\n : {\n current: current.value,\n pageSize: pageSize.value,\n total: total.value,\n pageSizeOptions: [5, 10, 20, 50, 100],\n onCurrentChange: changeCurrent,\n onPageSizeChange: changePageSize\n }\n })\n\n function normalizeSort(value: TableSort | undefined): TableSort | undefined {\n const sortList = Array.isArray(value) ? value : value ? [value] : []\n\n if (props.multipleSort) return sortList\n\n return sortList[0]\n }\n\n function getDefaultSort() {\n if (props.defaultSort) return normalizeSort(props.defaultSort)\n\n return props.multipleSort ? [] : undefined\n }\n\n function getSortParams(sortValue: TableSort | undefined) {\n const sortList = Array.isArray(sortValue) ? sortValue : sortValue ? [sortValue] : []\n const validSortList = sortList.filter(\n (item: SortInfo) => item.sortBy && item.descending !== undefined\n )\n\n if (!validSortList.length) return {}\n\n return {\n orderByColumn: validSortList.map((item: SortInfo) => item.sortBy).join(','),\n isAsc: validSortList.map((item: SortInfo) => (item.descending ? 'desc' : 'asc')).join(',')\n }\n }\n\n async function transformServiceParams(params: ServiceMaybePageParams<Pag>) {\n const mergedParams = {\n ...params,\n ...getSortParams(reSort.value)\n } as ServiceMaybePageParams<Pag>\n\n if (props.transformParams) return props.transformParams(mergedParams)\n\n return mergedParams as unknown as TP\n }\n\n function removeTreeLoadId(id: (typeof treeLoadIds.value)[number]) {\n const index = treeLoadIds.value.findIndex((item) => item === id)\n if (index === -1) return\n\n treeLoadIds.value.splice(index, 1)\n }\n\n function resumeScrollRecord() {\n const el = tableRef.value?.$el\n if (!el) return\n\n // NOTE 暂时不考虑虚拟列表以及外层滚动\n const scrollEl = tableContentEl.value\n if (!scrollEl) return\n\n const { scrollTop, scrollLeft } = scrollEl\n const { top, left } = scrollRecord\n if (top === scrollTop && left === scrollLeft) return\n\n scrollEl.scrollTo({ top, left })\n }\n\n function getAllColKeys(cols: typeof reProps.value.tableOptions.columns) {\n if (!cols) return []\n\n return cols.reduce((keys: string[], col) => {\n if (col.children && col.children.length > 0) {\n keys.push(...getAllColKeys(col.children))\n } else if (col.colKey) {\n keys.push(col.colKey)\n }\n return keys\n }, [])\n }\n\n function onResize(entries: ResizeObserverEntry[]) {\n const el = entries[0].target as HTMLElement\n outsideScrollEl.value = getScrollEl(el as HTMLElement)\n outsideScrollRect.update()\n\n const headerEl = el.querySelector('.t-table__header') as typeof tableHeaderEl.value\n\n tableHeaderEl.value = headerEl\n let headerH = 0\n if (headerEl) headerH = headerEl.clientHeight\n tableHeaderH.value = headerH\n\n const contentEl = el.querySelector('.t-table__content') as typeof tableContentEl.value\n tableContentEl.value = contentEl\n }\n\n watch(\n columnControllerVisible,\n (visible) => {\n const { columns } = reProps.value.tableOptions\n if (visible && !displayColumns.value && columns) {\n displayColumns.value = getAllColKeys(columns)\n }\n },\n { immediate: true }\n )\n\n onActivated(() => {\n resumeScrollRecord()\n tableContentResume()\n })\n\n onDeactivated(() => {\n tableContentPause()\n })\n\n onBeforeUnmount(() => {\n tableContentStop()\n outsideTableContentStop()\n })\n\n defineExpose(\n createExposeProxy(\n {\n data,\n tableLoad,\n firstLoad,\n manualTriggerLoad,\n loading,\n current,\n pageSize,\n total,\n changeCurrent,\n changePageSize,\n changePagination,\n runAsync,\n run,\n cancel,\n refresh,\n refreshAsync,\n getData: (key: TableRowValue) => {\n if (props.tree) return tableRef.value?.getData(key)\n\n return data.value.find(\n (item: D) => get(item, props.rowKey || qdServiceTableProps.rowKey) === key\n )\n }\n },\n tableRef\n ) as unknown as QdServiceTableInstanceFunctions<\n D,\n R,\n P,\n TP,\n Pag,\n typeof props.tree extends object ? true : false\n >\n )\n</script>\n\n<style lang=\"less\" scoped>\n .qd-service-table {\n height: 100%;\n display: flex;\n flex-direction: column;\n\n & > :deep(.t-table__content) {\n flex: 1;\n }\n\n &--ps-x-fixed {\n :deep(.ps__rail-x) {\n position: fixed;\n left: v-bind(tableContentLeft) !important;\n bottom: v-bind(outsideBottom) !important;\n }\n }\n }\n</style>\n"],"names":["defaultMinWidth","props","__props","emit","__emit","data","selectedRowKeys","activeRowKeys","columnControllerVisible","displayColumns","expandedRowKeys","filterValue","sort","expandedTreeNodes","useVModels","passive","innerSort","ref","getDefaultSort","reSort","computed","get","value","set","normalizeSort","vResize","resizeDirective","t","useConfig","tableT","tableRef","useTemplateRef","treeLoadIds","scrollRecord","top","left","outsideScrollEl","tableHeaderEl","tableHeaderH","tableContentEl","tableContentVisible","isScrollSyncing","tableContentRect","reactive","useElementBounding","tableContentLeft","outsideScrollRect","outsideBottom","window","innerHeight","bottom","tableHeaderHalfVisible","tableContentFullVisible","contentBottom","containerBottom","usePerfectScrollbar","watch","source","force","onScrollX","evt","scrollLeft","target","affixedTableHeaderEl","$el","querySelector","requestAnimationFrame","stop","tableContentStop","pause","tableContentPause","resume","tableContentResume","useIntersectionObserver","entry","isIntersecting","root","isOutside","isOutsideTableContent","outsideTableContentStop","useMouseInElement","reProps","service","manual","transformParams","transformRes","pagination","cacheKey","cacheTime","pollingInterval","onBefore","onAfter","onSuccess","onError","loadingWithData","loading","selectType","columns","selectOnRowClick","expandOnRowClick","tree","onScroll","onRowClick","bordered","headerAffixedTop","tableOptions","reTableOptions","reTransformRes","reTree","easyCopy","qdServiceTableTreeConfig","lazyLoad","res","temp","trErr","trRes","suspectedWrapperPromise","records","forEach","item","children","treeExpandAndFoldIcon","h","row","type","includes","id","_createVNode2","LoadingIcon","color","__qdTreeLoaded","AddRectangleIcon","cursor","MinusRectangleIcon","onExpandedTreeNodesChange","currentExpandedTreeNodes","options","rowState","level","maxLevel","rowKey","qdServiceTableProps","isEmpty","push","setData","currentParams","tParams","tpErr","tpRes","serviceErr","serviceRes","removeTreeLoadId","total","length","childrenKey","appendTo","map","reColumns","selectIdx","findIndex","defaultSelect","colKey","align","width","unshift","reSelectOnRowClick","undefined","expandTreeNodeOnClick","reOnScroll","params","e","scrollTop","reHeaderAffixedTop","Object","assign","container","externalLoad","serviceOptions","transformServiceParams","models","autoWidthColumns","containerWidth","noWidthCols","filter","c","fixedWidth","reduce","sum","Number","bodyMinWidth","minWidth","totalFlexWidth","allColumnsWidth","flexWidthPerPixel","base","firstLoad","manualTriggerLoad","current","pageSize","changeCurrent","changePageSize","changePagination","runAsync","run","cancel","refresh","refreshAsync","useServicePagination","list","defaultExpandAll","foldAll","nextTick","expandAll","reOnSortChange","sortValue","onSortChange","tableLoad","rePagination","pageSizeOptions","onCurrentChange","onPageSizeChange","sortList","Array","isArray","multipleSort","defaultSort","getSortParams","validSortList","sortBy","descending","orderByColumn","join","isAsc","mergedParams","index","splice","resumeScrollRecord","el","scrollEl","scrollTo","getAllColKeys","cols","keys","col","onResize","entries","getScrollEl","update","headerEl","headerH","clientHeight","contentEl","visible","immediate","onActivated","onDeactivated","onBeforeUnmount","__expose","createExposeProxy","getData","key","find","_createBlock","_resolveDynamicComponent","_unref","TEnhancedTable","TTable","_mergeProps","class","headerBg","$event","empty","_createVNode","TEmpty","title","$slots","_","name","fn","_withCtx","slotProps","_renderSlot","_ctx","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue2.mjs","sources":["../../../../src/components/service/table/index.vue"],"sourcesContent":["<template>\n <component\n :is=\"reProps.tableOptions.tree ? TEnhancedTable : TTable\"\n ref=\"table\"\n :class=\"[\n 'qd-service-table',\n headerBg ? '' : 't-table--header-bg-inherit',\n isOutsideTableContent ? '' : 'qd-service-table--inside-table-content',\n tableContentVisible && tableHeaderHalfVisible && !tableContentFullVisible\n ? 'qd-service-table--ps-x-fixed'\n : ''\n ]\"\n v-resize=\"onResize\"\n v-model:selected-row-keys=\"selectedRowKeys\"\n v-model:active-row-keys=\"activeRowKeys\"\n v-model:column-controller-visible=\"columnControllerVisible\"\n v-model:display-columns=\"displayColumns\"\n v-model:expanded-row-keys=\"expandedRowKeys\"\n v-model:filter-value=\"filterValue\"\n v-model:sort=\"reSort\"\n v-model:expanded-tree-nodes=\"expandedTreeNodes\"\n v-bind=\"reProps.tableOptions\"\n :on-sort-change=\"reOnSortChange\"\n :columns=\"autoWidthColumns\"\n :loading=\"tableLoad\"\n :data=\"data\"\n :pagination=\"rePagination\"\n >\n <template #empty>\n <t-empty class=\"qd-service-table__empty\" :title=\"t('emptyText')\" />\n </template>\n\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </component>\n</template>\n\n<script\n setup\n lang=\"tsx\"\n generic=\"\n D extends TableRowData = TableRowData,\n R = unknown,\n P = ServicePageParams,\n TP = P,\n Pag extends ServicePagination = ServicePagination\n \"\n>\n import {\n useElementBounding,\n useIntersectionObserver,\n useMouseInElement,\n useVModels\n } from '@vueuse/core'\n import { get } from 'lodash-es'\n import type {\n ServiceMaybePageParams,\n ServicePageParams,\n ServicePageRes,\n ServicePagination\n } from 'qidian-shared'\n import {\n createExposeProxy,\n easyCopy,\n isEmpty,\n suspectedWrapperPromise,\n useServicePagination\n } from 'qidian-shared'\n import { getScrollEl, resizeDirective } from 'qidian-shared'\n import { AddRectangleIcon, LoadingIcon, MinusRectangleIcon } from 'tdesign-icons-vue-next'\n import type {\n EnhancedTableInstanceFunctions,\n TableRowData,\n TableRowValue,\n TdEnhancedTableProps\n } from 'tdesign-vue-next'\n import type { SortInfo, TableSort } from 'tdesign-vue-next'\n import {\n Empty as TEmpty,\n EnhancedTable as TEnhancedTable,\n Table as TTable\n } from 'tdesign-vue-next'\n import type { ComponentPublicInstance } from 'vue'\n import {\n computed,\n nextTick,\n onActivated,\n onBeforeUnmount,\n onDeactivated,\n reactive,\n ref,\n useTemplateRef,\n watch\n } from 'vue'\n\n import { usePerfectScrollbar } from '../../../hooks'\n import { useConfig } from '../../config-provider/useConfig'\n import { qdServiceTableProps, qdServiceTableTreeConfig } from './props'\n import type { QdServiceTableInstanceFunctions, QdServiceTableProps } from './types'\n\n defineOptions({\n name: 'QdServiceTable'\n })\n\n type Props = QdServiceTableProps<D, R, P, TP, Pag>\n\n const props = withDefaults(defineProps<Props>(), qdServiceTableProps)\n const emit = defineEmits<{\n 'update:data': [Props['data']]\n 'update:selectedRowKeys': [Props['selectedRowKeys']]\n 'update:activeRowKeys': [Props['activeRowKeys']]\n 'update:columnControllerVisible': [Props['columnControllerVisible']]\n 'update:displayColumns': [Props['displayColumns']]\n 'update:expandedRowKeys': [Props['expandedRowKeys']]\n 'update:filterValue': [Props['filterValue']]\n 'update:sort': [Props['sort']]\n 'update:expandedTreeNodes': [Props['expandedTreeNodes']]\n }>()\n const {\n data,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n displayColumns,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes\n } = useVModels<typeof props, keyof typeof emit>(props, emit, { passive: true })\n\n const innerSort = ref<TableSort | undefined>(getDefaultSort())\n const reSort = computed<TableSort | undefined>({\n get: () => sort.value ?? innerSort.value,\n set: (value) => {\n innerSort.value = normalizeSort(value)\n sort.value = innerSort.value\n }\n })\n\n const vResize = resizeDirective\n const { t } = useConfig('crud')\n const { t: tableT } = useConfig('table')\n const tableRef = useTemplateRef<EnhancedTableInstanceFunctions & ComponentPublicInstance>('table')\n const treeLoadIds = ref<(string | number)[]>([])\n\n const defaultMinWidth = 80\n\n const scrollRecord = { top: 0, left: 0 }\n const outsideScrollEl = ref<HTMLElement | null>(null)\n const tableHeaderEl = ref<HTMLElement | null>(null)\n const tableHeaderH = ref(0)\n const tableContentEl = ref<HTMLElement | null>(null)\n const tableContentVisible = ref(false)\n const isScrollSyncing = ref(false)\n\n const tableContentRect = reactive(useElementBounding(tableContentEl))\n const tableContentLeft = computed(() => `${tableContentRect.left}px`)\n const outsideScrollRect = reactive(useElementBounding(outsideScrollEl))\n const outsideBottom = computed(() =>\n outsideScrollEl.value ? `${window.innerHeight - outsideScrollRect.bottom}px` : '0'\n )\n\n const tableHeaderHalfVisible = computed(() => {\n if (!tableContentVisible.value) return false\n return tableContentRect.top + tableHeaderH.value * 0.5 <= outsideScrollRect.bottom\n })\n\n const tableContentFullVisible = computed(() => {\n if (!tableContentVisible.value) return false\n\n const contentBottom = tableContentRect.bottom\n const containerBottom = outsideScrollRect.bottom\n\n return contentBottom <= containerBottom\n })\n\n usePerfectScrollbar(tableContentEl, {\n watch: {\n source: data,\n force: true\n },\n onScrollX: (evt) => {\n if (isScrollSyncing.value) return\n if (!tableHeaderEl.value) return\n\n isScrollSyncing.value = true\n tableHeaderEl.value.scrollLeft = (evt.target as HTMLElement).scrollLeft\n\n const affixedTableHeaderEl = tableRef.value?.$el.querySelector('.t-table__affixed-header-elm')\n if (affixedTableHeaderEl) {\n affixedTableHeaderEl.scrollLeft = (evt.target as HTMLElement).scrollLeft\n }\n\n requestAnimationFrame(() => {\n isScrollSyncing.value = false\n })\n }\n })\n\n const {\n stop: tableContentStop,\n pause: tableContentPause,\n resume: tableContentResume\n } = useIntersectionObserver(\n tableContentEl,\n ([entry]) => {\n tableContentVisible.value = entry?.isIntersecting || false\n },\n {\n root: outsideScrollEl\n }\n )\n\n const { isOutside: isOutsideTableContent, stop: outsideTableContentStop } =\n useMouseInElement(tableContentEl)\n\n const reProps = computed(() => {\n const {\n service,\n manual,\n transformParams,\n transformRes,\n pagination,\n cacheKey,\n cacheTime,\n pollingInterval,\n onBefore,\n onAfter,\n onSuccess,\n onError,\n\n loadingWithData,\n\n loading,\n selectType,\n data,\n selectedRowKeys,\n activeRowKeys,\n columns,\n columnControllerVisible,\n displayColumns,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes,\n\n selectOnRowClick,\n expandOnRowClick,\n tree,\n onScroll,\n onRowClick,\n bordered,\n headerAffixedTop,\n ...tableOptions\n } = props\n\n // 处理懒加载配置\n const reTableOptions = tableOptions as TdEnhancedTableProps<D>\n let reTransformRes = transformRes\n\n const reTree = tree ? { ...tree, ...easyCopy(qdServiceTableTreeConfig) } : tree\n\n if (reTree?.lazyLoad) {\n reTransformRes = async (res) => {\n let temp: ServicePageRes<D> | undefined\n if (transformRes) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes(res))\n if (trErr) throw trErr\n\n temp = trRes\n } else {\n temp = res as ServicePageRes<D>\n }\n\n temp.records.forEach((item) => {\n if (item.children) return\n\n item.children = true as unknown as D[]\n })\n\n return temp\n }\n\n // 如果用户没有配置 treeExpandAndFoldIcon,生成默认的\n if (!tableOptions.treeExpandAndFoldIcon) {\n reTableOptions.treeExpandAndFoldIcon = (h, { row, type }) => {\n const children = row.children as unknown\n\n if (treeLoadIds.value.includes(row.id) && children === true) {\n return <LoadingIcon style={{ color: 'var(--td-brand-color)' }} />\n }\n\n if (children === true && row.__qdTreeLoaded) {\n return <AddRectangleIcon style={{ color: 'transparent', cursor: 'default' }} />\n }\n\n return type === 'expand' ? <AddRectangleIcon /> : <MinusRectangleIcon />\n }\n }\n\n // 如果用户没有配置 onExpandedTreeNodesChange,生成默认的\n if (!tableOptions.onExpandedTreeNodesChange) {\n reTableOptions.onExpandedTreeNodesChange = async (currentExpandedTreeNodes, options) => {\n const { row, rowState } = options\n if (!service || !row || !rowState) return\n\n const { level } = rowState\n const { __qdTreeLoaded } = row\n const { maxLevel } = reTree\n const id = row[props.rowKey || qdServiceTableProps.rowKey]\n\n // 如果已加载或达到最大层级,不再加载\n if (\n treeLoadIds.value.includes(id) ||\n __qdTreeLoaded ||\n isEmpty(level) ||\n (!isEmpty(maxLevel) && level! >= maxLevel!)\n ) {\n return\n }\n\n // 设置加载状态\n treeLoadIds.value.push(id)\n tableRef.value?.setData(id, { ...row, __qdTreeLoaded: true })\n\n const { transformParams, transformRes } = reTree\n\n const currentParams = options\n let tParams: TP | undefined\n\n if (transformParams) {\n const [tpErr, tpRes] = await suspectedWrapperPromise(transformParams(currentParams))\n if (tpErr) throw tpErr\n tParams = tpRes\n }\n\n const [serviceErr, serviceRes] = await suspectedWrapperPromise(\n service(tParams || (currentParams as TP))\n )\n if (serviceErr) {\n removeTreeLoadId(id)\n throw serviceErr\n }\n\n let temp: ServicePageRes<D> | undefined\n if (transformRes) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes(serviceRes, options))\n if (trErr) {\n removeTreeLoadId(id)\n throw trErr\n }\n\n temp = trRes\n } else {\n temp = serviceRes as ServicePageRes<D>\n }\n\n removeTreeLoadId(id)\n if (!temp.records) temp.records = []\n if (isEmpty(temp.total)) temp.total = temp.records.length\n\n if (!temp.records.length) return\n\n const childrenKey = reTree.childrenKey || qdServiceTableTreeConfig.childrenKey\n tableRef.value?.setData(id, {\n ...row,\n __qdTreeLoaded: true,\n [childrenKey]: []\n })\n tableRef.value?.appendTo(\n id,\n temp.records.map((item) => {\n if (item.children) return item\n\n return {\n ...item,\n [childrenKey]: isEmpty(maxLevel) ? true : level! + 1 < maxLevel!\n }\n })\n )\n }\n }\n }\n\n const reColumns = columns || []\n if (selectType) {\n const selectIdx = reColumns.findIndex(\n (item) => item.type === 'single' || item.type === 'multiple'\n )\n const defaultSelect: (typeof reColumns)[number] = {\n colKey: 'row-select',\n type: selectType,\n align: 'center',\n width: 50\n }\n\n if (selectIdx > -1) {\n reColumns[selectIdx] = {\n ...defaultSelect,\n ...reColumns[selectIdx]\n }\n } else {\n reColumns.unshift(defaultSelect)\n }\n }\n\n const reSelectOnRowClick =\n selectOnRowClick ??\n (onRowClick ? undefined : !expandOnRowClick && !reTree?.expandTreeNodeOnClick)\n\n const reOnScroll: typeof onScroll = (params) => {\n onScroll?.(params)\n\n const target = params.e.target as HTMLElement\n if (!target) return\n\n const { scrollTop, scrollLeft } = target\n scrollRecord.top = scrollTop\n scrollRecord.left = scrollLeft\n }\n\n const reHeaderAffixedTop =\n outsideScrollEl.value && tableContentVisible.value\n ? Object.assign({ container: () => outsideScrollEl.value }, headerAffixedTop)\n : headerAffixedTop\n\n return {\n loadingWithData,\n columns: reColumns,\n tableOptions: {\n ...reTableOptions,\n\n selectOnRowClick: reSelectOnRowClick,\n expandOnRowClick,\n tree: reTree,\n onScroll: reOnScroll,\n onRowClick,\n headerAffixedTop: reHeaderAffixedTop,\n bordered: bordered ?? tableT('bordered') ?? true\n } as unknown as TdEnhancedTableProps<TableRowData>,\n externalLoad: loading,\n serviceOptions: {\n service,\n manual,\n transformParams: transformServiceParams,\n transformRes: reTransformRes,\n pagination,\n cacheKey,\n cacheTime,\n pollingInterval,\n onBefore,\n onAfter,\n onSuccess,\n onError\n },\n models: {\n data,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n displayColumns,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes\n }\n }\n })\n\n const autoWidthColumns = computed(() => {\n const containerWidth = tableContentRect.width\n const columns = reProps.value.columns\n const noWidthCols = columns.filter((c) => isEmpty(c.width))\n const fixedWidth = columns\n .filter((c) => !isEmpty(c.width))\n .reduce((sum, c) => sum + Number(c.width), 0)\n\n if (containerWidth <= 0 || !noWidthCols.length)\n return columns as unknown as TdEnhancedTableProps['columns']\n\n const bodyMinWidth =\n fixedWidth +\n noWidthCols.reduce(\n (sum, c) => sum + (!isEmpty(c.minWidth) ? Number(c.minWidth) : defaultMinWidth),\n 0\n )\n const totalFlexWidth = containerWidth - bodyMinWidth\n const allColumnsWidth = noWidthCols.reduce(\n (sum, c) => sum + (!isEmpty(c.minWidth) ? Number(c.minWidth) : defaultMinWidth),\n 0\n )\n const flexWidthPerPixel =\n totalFlexWidth > 0 && allColumnsWidth > 0 ? totalFlexWidth / allColumnsWidth : 0\n\n return columns.map((item) => {\n if (!isEmpty(item.width)) return item\n\n const base = !isEmpty(item.minWidth) ? Number(item.minWidth) : defaultMinWidth\n const width = base + base * flexWidthPerPixel\n return { ...item, width }\n }) as unknown as TdEnhancedTableProps['columns']\n })\n\n const {\n firstLoad,\n manualTriggerLoad,\n loading,\n current,\n pageSize,\n total,\n changeCurrent,\n changePageSize,\n changePagination,\n runAsync,\n run,\n cancel,\n refresh,\n refreshAsync\n } = useServicePagination({\n ...reProps.value.serviceOptions,\n onSuccess: async (res) => {\n data.value = res.list\n\n if (reProps.value.tableOptions.tree?.defaultExpandAll) {\n tableRef.value?.foldAll()\n nextTick(() => {\n tableRef.value?.expandAll()\n })\n }\n reProps.value.serviceOptions.onSuccess?.(res)\n }\n })\n\n const reOnSortChange: TdEnhancedTableProps<TableRowData>['onSortChange'] = (\n sortValue,\n options\n ) => {\n reProps.value.tableOptions.onSortChange?.(sortValue, options)\n changeCurrent(1)\n }\n\n const tableLoad = computed<TdEnhancedTableProps['loading']>(() => {\n const { externalLoad, loadingWithData } = reProps.value\n if (externalLoad) return true\n if (!data.value?.length && firstLoad.value) return true\n if (manualTriggerLoad.value) {\n if (data.value?.length) {\n if (loadingWithData) return true\n return false\n }\n return true\n }\n\n return false\n })\n\n const rePagination = computed(() => {\n return !reProps.value.serviceOptions.service ||\n reProps.value.serviceOptions.pagination === false\n ? undefined\n : {\n current: current.value,\n pageSize: pageSize.value,\n total: total.value,\n pageSizeOptions: [5, 10, 20, 50, 100],\n onCurrentChange: changeCurrent,\n onPageSizeChange: changePageSize\n }\n })\n\n function normalizeSort(value: TableSort | undefined): TableSort | undefined {\n const sortList = Array.isArray(value) ? value : value ? [value] : []\n\n if (props.multipleSort) return sortList\n\n return sortList[0]\n }\n\n function getDefaultSort() {\n if (props.defaultSort) return normalizeSort(props.defaultSort)\n\n return props.multipleSort ? [] : undefined\n }\n\n function getSortParams(sortValue: TableSort | undefined) {\n const sortList = Array.isArray(sortValue) ? sortValue : sortValue ? [sortValue] : []\n const validSortList = sortList.filter(\n (item: SortInfo) => item.sortBy && item.descending !== undefined\n )\n\n if (!validSortList.length) return {}\n\n return {\n orderByColumn: validSortList.map((item: SortInfo) => item.sortBy).join(','),\n isAsc: validSortList.map((item: SortInfo) => (item.descending ? 'desc' : 'asc')).join(',')\n }\n }\n\n async function transformServiceParams(params: ServiceMaybePageParams<Pag>) {\n const mergedParams = {\n ...params,\n ...getSortParams(reSort.value)\n } as ServiceMaybePageParams<Pag>\n\n if (props.transformParams) return props.transformParams(mergedParams)\n\n return mergedParams as unknown as TP\n }\n\n function removeTreeLoadId(id: (typeof treeLoadIds.value)[number]) {\n const index = treeLoadIds.value.findIndex((item) => item === id)\n if (index === -1) return\n\n treeLoadIds.value.splice(index, 1)\n }\n\n function resumeScrollRecord() {\n const el = tableRef.value?.$el\n if (!el) return\n\n // NOTE 暂时不考虑虚拟列表以及外层滚动\n const scrollEl = tableContentEl.value\n if (!scrollEl) return\n\n const { scrollTop, scrollLeft } = scrollEl\n const { top, left } = scrollRecord\n if (top === scrollTop && left === scrollLeft) return\n\n scrollEl.scrollTo({ top, left })\n }\n\n function getAllColKeys(cols: typeof reProps.value.tableOptions.columns) {\n if (!cols) return []\n\n return cols.reduce((keys: string[], col) => {\n if (col.children && col.children.length > 0) {\n keys.push(...getAllColKeys(col.children))\n } else if (col.colKey) {\n keys.push(col.colKey)\n }\n return keys\n }, [])\n }\n\n function onResize(entries: ResizeObserverEntry[]) {\n const el = entries[0].target as HTMLElement\n outsideScrollEl.value = getScrollEl(el as HTMLElement)\n outsideScrollRect.update()\n\n const headerEl = el.querySelector('.t-table__header') as typeof tableHeaderEl.value\n\n tableHeaderEl.value = headerEl\n let headerH = 0\n if (headerEl) headerH = headerEl.clientHeight\n tableHeaderH.value = headerH\n\n const contentEl = el.querySelector('.t-table__content') as typeof tableContentEl.value\n tableContentEl.value = contentEl\n }\n\n watch(\n columnControllerVisible,\n (visible) => {\n const { columns } = reProps.value.tableOptions\n if (visible && !displayColumns.value && columns) {\n displayColumns.value = getAllColKeys(columns)\n }\n },\n { immediate: true }\n )\n\n onActivated(() => {\n resumeScrollRecord()\n tableContentResume()\n })\n\n onDeactivated(() => {\n tableContentPause()\n })\n\n onBeforeUnmount(() => {\n tableContentStop()\n outsideTableContentStop()\n })\n\n defineExpose(\n createExposeProxy(\n {\n data,\n tableLoad,\n firstLoad,\n manualTriggerLoad,\n loading,\n current,\n pageSize,\n total,\n changeCurrent,\n changePageSize,\n changePagination,\n runAsync,\n run,\n cancel,\n refresh,\n refreshAsync,\n getData: (key: TableRowValue) => {\n if (props.tree) return tableRef.value?.getData(key)\n\n return data.value.find(\n (item: D) => get(item, props.rowKey || qdServiceTableProps.rowKey) === key\n )\n }\n },\n tableRef\n ) as unknown as QdServiceTableInstanceFunctions<\n D,\n R,\n P,\n TP,\n Pag,\n typeof props.tree extends object ? true : false\n >\n )\n</script>\n\n<style lang=\"less\" scoped>\n .qd-service-table {\n height: 100%;\n display: flex;\n flex-direction: column;\n\n & > :deep(.t-table__content) {\n flex: 1;\n }\n\n :deep(.t-table__tree-col:not(:has(.t-table__tree-op-icon))) {\n margin-left: calc(var(--td-font-size-body-large) + var(--td-comp-margin-s));\n }\n\n &--ps-x-fixed {\n :deep(.ps__rail-x) {\n position: fixed;\n left: v-bind(tableContentLeft) !important;\n bottom: v-bind(outsideBottom) !important;\n }\n }\n }\n</style>\n"],"names":["defaultMinWidth","props","__props","emit","__emit","data","selectedRowKeys","activeRowKeys","columnControllerVisible","displayColumns","expandedRowKeys","filterValue","sort","expandedTreeNodes","useVModels","passive","innerSort","ref","getDefaultSort","reSort","computed","get","value","set","normalizeSort","vResize","resizeDirective","t","useConfig","tableT","tableRef","useTemplateRef","treeLoadIds","scrollRecord","top","left","outsideScrollEl","tableHeaderEl","tableHeaderH","tableContentEl","tableContentVisible","isScrollSyncing","tableContentRect","reactive","useElementBounding","tableContentLeft","outsideScrollRect","outsideBottom","window","innerHeight","bottom","tableHeaderHalfVisible","tableContentFullVisible","contentBottom","containerBottom","usePerfectScrollbar","watch","source","force","onScrollX","evt","scrollLeft","target","affixedTableHeaderEl","$el","querySelector","requestAnimationFrame","stop","tableContentStop","pause","tableContentPause","resume","tableContentResume","useIntersectionObserver","entry","isIntersecting","root","isOutside","isOutsideTableContent","outsideTableContentStop","useMouseInElement","reProps","service","manual","transformParams","transformRes","pagination","cacheKey","cacheTime","pollingInterval","onBefore","onAfter","onSuccess","onError","loadingWithData","loading","selectType","columns","selectOnRowClick","expandOnRowClick","tree","onScroll","onRowClick","bordered","headerAffixedTop","tableOptions","reTableOptions","reTransformRes","reTree","easyCopy","qdServiceTableTreeConfig","lazyLoad","res","temp","trErr","trRes","suspectedWrapperPromise","records","forEach","item","children","treeExpandAndFoldIcon","h","row","type","includes","id","_createVNode2","LoadingIcon","color","__qdTreeLoaded","AddRectangleIcon","cursor","MinusRectangleIcon","onExpandedTreeNodesChange","currentExpandedTreeNodes","options","rowState","level","maxLevel","rowKey","qdServiceTableProps","isEmpty","push","setData","currentParams","tParams","tpErr","tpRes","serviceErr","serviceRes","removeTreeLoadId","total","length","childrenKey","appendTo","map","reColumns","selectIdx","findIndex","defaultSelect","colKey","align","width","unshift","reSelectOnRowClick","undefined","expandTreeNodeOnClick","reOnScroll","params","e","scrollTop","reHeaderAffixedTop","Object","assign","container","externalLoad","serviceOptions","transformServiceParams","models","autoWidthColumns","containerWidth","noWidthCols","filter","c","fixedWidth","reduce","sum","Number","bodyMinWidth","minWidth","totalFlexWidth","allColumnsWidth","flexWidthPerPixel","base","firstLoad","manualTriggerLoad","current","pageSize","changeCurrent","changePageSize","changePagination","runAsync","run","cancel","refresh","refreshAsync","useServicePagination","list","defaultExpandAll","foldAll","nextTick","expandAll","reOnSortChange","sortValue","onSortChange","tableLoad","rePagination","pageSizeOptions","onCurrentChange","onPageSizeChange","sortList","Array","isArray","multipleSort","defaultSort","getSortParams","validSortList","sortBy","descending","orderByColumn","join","isAsc","mergedParams","index","splice","resumeScrollRecord","el","scrollEl","scrollTo","getAllColKeys","cols","keys","col","onResize","entries","getScrollEl","update","headerEl","headerH","clientHeight","contentEl","visible","immediate","onActivated","onDeactivated","onBeforeUnmount","__expose","createExposeProxy","getData","key","find","_createBlock","_resolveDynamicComponent","_unref","TEnhancedTable","TTable","_mergeProps","class","headerBg","$event","empty","_createVNode","TEmpty","title","$slots","_","name","fn","_withCtx","slotProps","_renderSlot","_ctx","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
@@ -22,6 +22,7 @@ export declare const qdServiceDialogProps: {
22
22
  lazy: true;
23
23
  preventScrollThrough: true;
24
24
  showOverlay: true;
25
+ fullscreenBtn: true;
25
26
  };
26
27
  export declare const qdServiceDialogTableSelectProps: {
27
28
  readonly searchData: () => {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qidian-vue-ui",
3
- "version": "1.2.87",
3
+ "version": "1.2.89",
4
4
  "description": "基于 TDesign 的 QiDian Vue UI 组件库",
5
5
  "author": "qidian",
6
6
  "license": "MIT",