qidian-vue-ui 1.1.26 → 1.1.28

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.
@@ -35,6 +35,8 @@ export declare const QdConfigProvider: import("vue").DefineComponent<{
35
35
  deleteWrapperBodyText?: string;
36
36
  collapseSearchText?: string;
37
37
  expandSearchText?: string;
38
+ hideSearchText?: string;
39
+ showSearchText?: string;
38
40
  refreshText?: string;
39
41
  collapseTreeText?: string;
40
42
  expandTreeText?: string;
@@ -108,6 +110,8 @@ export declare const QdConfigProvider: import("vue").DefineComponent<{
108
110
  deleteWrapperBodyText?: string;
109
111
  collapseSearchText?: string;
110
112
  expandSearchText?: string;
113
+ hideSearchText?: string;
114
+ showSearchText?: string;
111
115
  refreshText?: string;
112
116
  collapseTreeText?: string;
113
117
  expandTreeText?: string;
@@ -172,6 +176,8 @@ export declare const QdConfigProvider: import("vue").DefineComponent<{
172
176
  deleteWrapperBodyText?: string;
173
177
  collapseSearchText?: string;
174
178
  expandSearchText?: string;
179
+ hideSearchText?: string;
180
+ showSearchText?: string;
175
181
  refreshText?: string;
176
182
  collapseTreeText?: string;
177
183
  expandTreeText?: string;
@@ -45,6 +45,8 @@ export interface QdConfigProviderProps {
45
45
  deleteWrapperBodyText?: string;
46
46
  collapseSearchText?: string;
47
47
  expandSearchText?: string;
48
+ hideSearchText?: string;
49
+ showSearchText?: string;
48
50
  refreshText?: string;
49
51
  collapseTreeText?: string;
50
52
  expandTreeText?: string;
@@ -26,6 +26,8 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
26
26
  deleteWrapperBodyText?: string;
27
27
  collapseSearchText?: string;
28
28
  expandSearchText?: string;
29
+ hideSearchText?: string;
30
+ showSearchText?: string;
29
31
  refreshText?: string;
30
32
  collapseTreeText?: string;
31
33
  expandTreeText?: string;
@@ -85,6 +87,8 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
85
87
  deleteWrapperBodyText?: string;
86
88
  collapseSearchText?: string;
87
89
  expandSearchText?: string;
90
+ hideSearchText?: string;
91
+ showSearchText?: string;
88
92
  refreshText?: string;
89
93
  collapseTreeText?: string;
90
94
  expandTreeText?: string;
@@ -144,6 +148,8 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
144
148
  deleteWrapperBodyText?: string;
145
149
  collapseSearchText?: string;
146
150
  expandSearchText?: string;
151
+ hideSearchText?: string;
152
+ showSearchText?: string;
147
153
  refreshText?: string;
148
154
  collapseTreeText?: string;
149
155
  expandTreeText?: string;
@@ -204,6 +210,8 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
204
210
  deleteWrapperBodyText?: string;
205
211
  collapseSearchText?: string;
206
212
  expandSearchText?: string;
213
+ hideSearchText?: string;
214
+ showSearchText?: string;
207
215
  refreshText?: string;
208
216
  collapseTreeText?: string;
209
217
  expandTreeText?: string;
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./list.vue2.mjs";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const list = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-66a035f0"]]);
4
+ const list = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b27a5389"]]);
5
5
  export {
6
6
  list as default
7
7
  };
@@ -1,10 +1,10 @@
1
- import { defineComponent, mergeDefaults, computed, useTemplateRef, onMounted, createElementBlock, openBlock, normalizeClass, createCommentVNode, createVNode, createBlock, mergeProps, unref, isRef, createSlots, withCtx, createTextVNode, toDisplayString, renderList, renderSlot, normalizeProps, guardReactiveProps, nextTick } from "vue";
1
+ import { defineComponent, mergeDefaults, computed, useTemplateRef, onMounted, createElementBlock, openBlock, normalizeClass, createCommentVNode, createVNode, createBlock, mergeProps, unref, isRef, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps, nextTick } from "vue";
2
2
  import { extractSlotsWithPrefix } from "qidian-shared";
3
- import { Space, Button } from "tdesign-vue-next";
3
+ import { Space } from "tdesign-vue-next";
4
4
  import { useVModels } from "../../node_modules/.pnpm/@vueuse_core@14.0.0_vue@3.5.22_typescript@5.9.3_/node_modules/@vueuse/core/dist/index.mjs";
5
5
  import { qdCrudListProps } from "./props.mjs";
6
6
  import "tdesign-icons-vue-next";
7
- import { useConfig } from "../config-provider/useConfig.mjs";
7
+ import "../../locales/zh-CN.mjs";
8
8
  /* empty css */
9
9
  import QdServiceList from "../service/list.vue.mjs";
10
10
  /* empty css */
@@ -81,9 +81,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
81
81
  } = useVModels(props, emit, {
82
82
  passive: true
83
83
  });
84
- const {
85
- t
86
- } = useConfig("crud");
87
84
  const reProps = computed(() => {
88
85
  const {
89
86
  data: data2,
@@ -141,27 +138,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
141
138
  data: unref(searchData),
142
139
  "onUpdate:data": _cache[0] || (_cache[0] = ($event) => isRef(searchData) ? searchData.value = $event : null)
143
140
  }, reProps.value.searchOptions, {
144
- "on-submit": triggerSearch
141
+ onSubmit: triggerSearch,
142
+ onSearch: handleSearch,
143
+ onReset: handleResetSearch
145
144
  }), createSlots({
146
- "form-footer": withCtx(() => [createVNode(unref(Space), {
147
- align: "center",
148
- size: "small"
149
- }, {
150
- default: withCtx(() => [createVNode(unref(Button), {
151
- type: "submit",
152
- onClick: handleSearch
153
- }, {
154
- default: withCtx(() => [createTextVNode(toDisplayString(unref(t)("searchText")), 1)]),
155
- _: 1
156
- }), createVNode(unref(Button), {
157
- variant: "outline",
158
- onClick: handleResetSearch
159
- }, {
160
- default: withCtx(() => [createTextVNode(toDisplayString(unref(t)("resetText")), 1)]),
161
- _: 1
162
- })]),
163
- _: 1
164
- })]),
165
145
  _: 2
166
146
  }, [renderList(unref(extractSlotsWithPrefix)(_ctx.$slots, "search"), (item) => {
167
147
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"list.vue2.mjs","sources":["../../../src/components/crud/list.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n 'qd-crud-list',\n reProps.serviceListOptions.scroll?.target ? 'qd-crud-list--has-scroll-target' : ''\n ]\"\n >\n <div v-if=\"reProps.searchOptions?.items?.length || $slots.actions\" class=\"qd-crud-list__header\">\n <qd-crud-search\n v-if=\"reProps.searchOptions?.items?.length\"\n ref=\"search\"\n v-model:data=\"searchData\"\n v-bind=\"reProps.searchOptions\"\n :on-submit=\"triggerSearch\"\n >\n <template #form-footer>\n <t-space align=\"center\" size=\"small\">\n <t-button type=\"submit\" @click=\"handleSearch\">{{ t('searchText') }}</t-button>\n <t-button variant=\"outline\" @click=\"handleResetSearch\">{{ t('resetText') }}</t-button>\n </t-space>\n </template>\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\n <div v-if=\"$slots.actions\" class=\"qd-crud-list__toolbar\">\n <t-space align=\"center\" size=\"small\">\n <slot name=\"actions\" />\n </t-space>\n </div>\n </div>\n\n <qd-service-list ref=\"list\" v-model:data=\"data\" v-bind=\"reProps.serviceListOptions\">\n <template v-if=\"$slots.default\" #default=\"slotProps\">\n <slot v-bind=\"slotProps\" />\n </template>\n\n <template\n v-for=\"item in extractSlotsWithPrefix($slots, 'list')\"\n #[item.filterName]=\"slotProps\"\n >\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-service-list>\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 type { TableRowData } from 'tdesign-vue-next'\n import type { ServiceMaybePageParams, ServicePageParams, ServicePagination } from 'qidian-shared'\n import type { QdCrudListInstanceFunctions, QdCrudListProps } from './types'\n import type { QdFormSubmitContext } from '../form'\n import type { QdServiceListProps } from '../service'\n import { computed, nextTick, onMounted, useTemplateRef } from 'vue'\n import { extractSlotsWithPrefix } from 'qidian-shared'\n import { Space as TSpace, Button as TButton } from 'tdesign-vue-next'\n import { useVModels } from '@vueuse/core'\n import { qdCrudListProps } from './props'\n import { QdServiceList } from '../service'\n import QdCrudSearch from './search.vue'\n import { useConfig } from '../config-provider/useConfig'\n\n type Props = QdCrudListProps<D, R, P, TP, Pag>\n\n const props = withDefaults(defineProps<Props>(), qdCrudListProps)\n const emit = defineEmits<{\n 'update:searchData': [Props['searchData']]\n 'update:data': [Props['data']]\n }>()\n const { data, searchData } = useVModels<typeof props, keyof typeof emit>(props, emit, {\n passive: true\n })\n\n const { t } = useConfig('crud')\n\n const reProps = computed(() => {\n const { data, searchData: inSearchData, search, transformParams, ...serviceListOptions } = 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 return {\n searchOptions: search,\n serviceListOptions: {\n ...serviceListOptions,\n transformParams: mergedTransformParams\n } as QdServiceListProps<D, R, P, TP, Pag>,\n models: {\n data,\n searchData: inSearchData\n }\n }\n })\n\n const searchRef = useTemplateRef('search')\n const listRef = useTemplateRef('list')\n\n function handleSearch() {}\n\n async function handleResetSearch() {\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 listRef.value?.refresh()\n }\n\n const expose = {} as QdCrudListInstanceFunctions<D, R, P, TP, Pag>\n\n onMounted(() => {\n Object.assign(expose, listRef.value)\n })\n\n defineExpose(expose)\n</script>\n\n<style lang=\"less\" scoped>\n .qd-crud-list {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n &__header + .qd-service-list {\n margin-top: var(--td-comp-margin-l);\n }\n\n .qd-crud-search + .qd-crud-list__toolbar {\n margin-top: var(--td-comp-margin-l);\n }\n\n &__header > .qd-crud-search {\n :deep(.qd-form) {\n display: flex;\n align-items: flex-end;\n flex-flow: row wrap;\n\n & > .qd-grid {\n flex: 1 1 0;\n overflow: hidden;\n margin-right: var(--td-comp-margin-l);\n }\n }\n }\n\n &__toolbar {\n display: flex;\n justify-content: space-between;\n }\n\n & > .qd-service-list {\n flex: 1 1 0;\n }\n\n &--has-scroll-target {\n & > .qd-service-list {\n flex: auto;\n }\n\n .qd-crud-list {\n &__header {\n position: sticky;\n top: 0;\n z-index: 10;\n }\n }\n }\n }\n</style>\n"],"names":["props","__props","emit","__emit","data","searchData","useVModels","passive","t","useConfig","reProps","computed","inSearchData","search","transformParams","serviceListOptions","mergedTransformParams","params","merged","value","searchOptions","models","searchRef","useTemplateRef","listRef","handleSearch","handleResetSearch","reset","nextTick","submit","triggerSearch","validateResult","refresh","expose","onMounted","Object","assign","__expose","_createElementBlock","class","_normalizeClass","scroll","target","items","length","$slots","actions","_openBlock","_hoisted_1","_createBlock","QdCrudSearch","_mergeProps","ref","_unref","$event","_createSlots","_createVNode","TSpace","align","size","TButton","type","onClick","variant","extractSlotsWithPrefix","item","name","filterName","fn","_withCtx","slotProps","_renderSlot","_ctx","originalName","undefined","_hoisted_2","_","default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EE,UAAMA,QAAQC;AACd,UAAMC,OAAOC;AAIb,UAAM;AAAA,MAAEC;AAAAA,MAAMC;AAAAA,IAAW,IAAIC,WAA4CN,OAAOE,MAAM;AAAA,MACpFK,SAAS;AAAA,IACX,CAAC;AAED,UAAM;AAAA,MAAEC;AAAAA,IAAE,IAAIC,UAAU,MAAM;AAE9B,UAAMC,UAAUC,SAAS,MAAM;AAC7B,YAAM;AAAA,QAAEP,MAAAA;AAAAA,QAAMC,YAAYO;AAAAA,QAAcC;AAAAA,QAAQC;AAAAA,QAAiB,GAAGC;AAAAA,MAAmB,IAAIf;AAE3F,YAAMgB,wBAAyBC,YAAwC;AACrE,cAAMC,SAAS;AAAA,UAAE,GAAGD;AAAAA,UAAQ,GAAGZ,WAAWc;AAAAA;AAC1C,YAAIL,gBAAiB,QAAOA,gBAAgBI,MAAM;AAClD,eAAOA;AAAAA,MACT;AAEA,aAAO;AAAA,QACLE,eAAeP;AAAAA,QACfE,oBAAoB;AAAA,UAClB,GAAGA;AAAAA,UACHD,iBAAiBE;AAAAA;QAEnBK,QAAQ;AAAA,UACNjB,MAAAA;AAAAA,UACAC,YAAYO;AAAAA,QACd;AAAA;IAEJ,CAAC;AAED,UAAMU,YAAYC,eAAe,QAAQ;AACzC,UAAMC,UAAUD,eAAe,MAAM;AAErC,aAASE,eAAe;AAAA,IAAC;AAEzB,mBAAeC,oBAAoB;AACjCJ,gBAAUH,OAAOQ,MAAK;AACtB,YAAMC,SAAQ;AACdN,gBAAUH,OAAOU,OAAM;AAAA,IACzB;AAEA,aAASC,cAAc;AAAA,MAAEC;AAAAA,IAA6D,GAAG;AACvF,UAAIA,mBAAmB,KAAM;AAE7BP,cAAQL,OAAOa,QAAO;AAAA,IACxB;AAEA,UAAMC,SAAS,CAAA;AAEfC,cAAU,MAAM;AACdC,aAAOC,OAAOH,QAAQT,QAAQL,KAAK;AAAA,IACrC,CAAC;AAEDkB,aAAaJ,MAAM;;0BAtInBK,mBAgDM,OAAA;AAAA,QA/CHC,OAAKC,eAAA,iBAAgC9B,QAAAS,MAAQJ,mBAAmB0B,QAAQC,SAAM,oCAAA,EAAA;UAKpEhC,QAAAS,MAAQC,eAAeuB,OAAOC,UAAUC,KAAAA,OAAOC,WAA1DC,UAAA,GAAAT,mBA4BM,OA5BNU,YA4BM,CA1BItC,QAAAS,MAAQC,eAAeuB,OAAOC,UADtCG,UAAA,GAAAE,YAoBiBC,cApBjBC,WAoBiB;AAAA;QAlBfC,KAAI;AAAA,QACIhD,MAAMiD,MAAAhD,UAAA;AAAA,mFAAAA,WAAUc,QAAAmC,SAAA;AAAA,MAChB,GAAA5C,QAAAS,MAAQC,eAAa;AAAA,QAC5B,aAAWU;AAAAA,OAAa,GAAAyB,YAAA;AAAA,QAEd,uBACT,MAGU,CAHVC,YAGUH,MAAAI,KAAA,GAAA;AAAA,UAHDC,OAAM;AAAA,UAASC,MAAK;AAAA;2BAC3B,MAA8E,CAA9EH,YAA8EH,MAAAO,MAAA,GAAA;AAAA,YAApEC,MAAK;AAAA,YAAUC,SAAOrC;AAAAA;6BAAc,MAAqB,iCAAlB4B,MAAA7C,CAAA,EAAC,YAAA,CAAA,GAAA,CAAA,CAAA;;cAClDgD,YAAsFH,MAAAO,MAAA,GAAA;AAAA,YAA5EG,SAAQ;AAAA,YAAWD,SAAOpC;AAAAA;6BAAmB,MAAoB,iCAAjB2B,MAAA7C,CAAA,EAAC,WAAA,CAAA,GAAA,CAAA,CAAA;;;;;;qBAK9C6C,MAAAW,sBAAA,EAAuBnB,KAAAA,QAAM,QAAA,GAArCoB,UAAI;;UACVC,MAAAD,KAAKE;AAAAA,UAENC,IAAAC,QAFoBC,eAAS,CAE7BC,WAAqDC,KAAA3B,QAAxCoB,KAAKQ,gDAAsBH,SAAS,CAAA,GAAAI,QAAA,IAAA,CAAA;;6DAI1C7B,KAAAA,OAAOC,WAAlBC,UAAA,GAAAT,mBAIM,OAJNqC,YAIM,CAHJnB,YAEUH,MAAAI,KAAA,GAAA;AAAA,QAFDC,OAAM;AAAA,QAASC,MAAK;AAAA;yBAC3B,MAAuB,CAAvBY,WAAuBC,KAAA3B,QAAA,WAAA,CAAA,GAAA6B,QAAA,IAAA,CAAA;;8EAK7BlB,YAWkBH,sBAXlBF,WAWkB;AAAA,QAXDC,KAAI;AAAA,QAAehD,MAAMiD,MAAAjD,IAAA;AAAA,6EAAAA,KAAIe,QAAAmC,SAAA;AAAA,SAAU5C,QAAAS,MAAQJ,kBAAkB,GAAAwC,YAAA;AAAA,QAAAqB,GAAA;AAAA,MAAA,GAAA,CAChE/B,KAAAA,OAAOgC;cAAU;AAAA,QAC/BT,IAAAC,QADwCC,eAAS,CACjDC,WAA2BC,0DAAbF,SAAS,CAAA,GAAAI,QAAA,IAAA,CAAA;;6BAIRrB,MAAAW,sBAAA,EAAuBnB,KAAAA,QAAM,MAAA,GAArCoB,UAAI;;UACVC,MAAAD,KAAKE;AAAAA,UAENC,IAAAC,QAFoBC,eAAS,CAE7BC,WAAqDC,KAAA3B,QAAxCoB,KAAKQ,gDAAsBH,SAAS,CAAA,GAAAI,QAAA,IAAA,CAAA;;;;;;"}
1
+ {"version":3,"file":"list.vue2.mjs","sources":["../../../src/components/crud/list.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n 'qd-crud-list',\n reProps.serviceListOptions.scroll?.target ? 'qd-crud-list--has-scroll-target' : ''\n ]\"\n >\n <div v-if=\"reProps.searchOptions?.items?.length || $slots.actions\" class=\"qd-crud-list__header\">\n <qd-crud-search\n v-if=\"reProps.searchOptions?.items?.length\"\n ref=\"search\"\n v-model:data=\"searchData\"\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\n <div v-if=\"$slots.actions\" class=\"qd-crud-list__toolbar\">\n <t-space align=\"center\" size=\"small\">\n <slot name=\"actions\" />\n </t-space>\n </div>\n </div>\n\n <qd-service-list ref=\"list\" v-model:data=\"data\" v-bind=\"reProps.serviceListOptions\">\n <template v-if=\"$slots.default\" #default=\"slotProps\">\n <slot v-bind=\"slotProps\" />\n </template>\n\n <template\n v-for=\"item in extractSlotsWithPrefix($slots, 'list')\"\n #[item.filterName]=\"slotProps\"\n >\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-service-list>\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 type { TableRowData } from 'tdesign-vue-next'\n import type { ServiceMaybePageParams, ServicePageParams, ServicePagination } from 'qidian-shared'\n import type { QdCrudListInstanceFunctions, QdCrudListProps } from './types'\n import type { QdFormSubmitContext } from '../form'\n import type { QdServiceListInstanceFunctions, QdServiceListProps } from '../service'\n import { computed, nextTick, onMounted, useTemplateRef } from 'vue'\n import { extractSlotsWithPrefix } from 'qidian-shared'\n import { Space as TSpace } from 'tdesign-vue-next'\n import { useVModels } from '@vueuse/core'\n import { qdCrudListProps } from './props'\n import { QdServiceList } from '../service'\n import QdCrudSearch from './search.vue'\n\n type Props = QdCrudListProps<D, R, P, TP, Pag>\n\n const props = withDefaults(defineProps<Props>(), qdCrudListProps)\n const emit = defineEmits<{\n 'update:searchData': [Props['searchData']]\n 'update:data': [Props['data']]\n }>()\n const { data, searchData } = useVModels<typeof props, keyof typeof emit>(props, emit, {\n passive: true\n })\n\n const reProps = computed(() => {\n const { data, searchData: inSearchData, search, transformParams, ...serviceListOptions } = 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 return {\n searchOptions: search,\n serviceListOptions: {\n ...serviceListOptions,\n transformParams: mergedTransformParams\n } as QdServiceListProps<D, R, P, TP, Pag>,\n models: {\n data,\n searchData: inSearchData\n }\n }\n })\n\n const searchRef = useTemplateRef('search')\n const listRef = useTemplateRef<QdServiceListInstanceFunctions<D, R, P, TP, Pag>>('list')\n\n function handleSearch() {}\n\n async function handleResetSearch() {\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 listRef.value?.refresh()\n }\n\n const expose = {} as QdCrudListInstanceFunctions<D, R, P, TP, Pag>\n\n onMounted(() => {\n Object.assign(expose, listRef.value)\n })\n\n defineExpose(expose)\n</script>\n\n<style lang=\"less\" scoped>\n .qd-crud-list {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n &__header + .qd-service-list {\n margin-top: var(--td-comp-margin-l);\n }\n\n .qd-crud-search + .qd-crud-list__toolbar {\n margin-top: var(--td-comp-margin-l);\n }\n\n &__header > .qd-crud-search {\n :deep(.qd-form) {\n display: flex;\n align-items: flex-end;\n flex-flow: row wrap;\n\n & > .qd-grid {\n flex: 1 1 0;\n overflow: hidden;\n margin-right: var(--td-comp-margin-l);\n }\n }\n }\n\n &__toolbar {\n display: flex;\n justify-content: space-between;\n }\n\n & > .qd-service-list {\n flex: 1 1 0;\n }\n\n &--has-scroll-target {\n & > .qd-service-list {\n flex: auto;\n }\n\n .qd-crud-list {\n &__header {\n position: sticky;\n top: 0;\n z-index: 10;\n }\n }\n }\n }\n</style>\n"],"names":["props","__props","emit","__emit","data","searchData","useVModels","passive","reProps","computed","inSearchData","search","transformParams","serviceListOptions","mergedTransformParams","params","merged","value","searchOptions","models","searchRef","useTemplateRef","listRef","handleSearch","handleResetSearch","reset","nextTick","submit","triggerSearch","validateResult","refresh","expose","onMounted","Object","assign","__expose","_createElementBlock","class","_normalizeClass","scroll","target","items","length","$slots","actions","_openBlock","_hoisted_1","_createBlock","QdCrudSearch","_mergeProps","ref","_unref","$event","onSubmit","onSearch","onReset","extractSlotsWithPrefix","item","name","filterName","fn","_withCtx","slotProps","_renderSlot","_ctx","originalName","undefined","_hoisted_2","_createVNode","TSpace","align","size","_createSlots","_","default"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import type { QdSearchProps } from './types';
2
- declare var __VLS_7: string, __VLS_8: any, __VLS_17: string, __VLS_18: any;
2
+ declare var __VLS_8: string, __VLS_9: any, __VLS_50: string, __VLS_51: any;
3
3
  type __VLS_Slots = {} & {
4
- [K in NonNullable<typeof __VLS_7>]?: (props: typeof __VLS_8) => any;
4
+ [K in NonNullable<typeof __VLS_8>]?: (props: typeof __VLS_9) => any;
5
5
  } & {
6
- [K in NonNullable<typeof __VLS_17>]?: (props: typeof __VLS_18) => any;
6
+ [K in NonNullable<typeof __VLS_50>]?: (props: typeof __VLS_51) => any;
7
7
  };
8
8
  declare const __VLS_component: import("vue").DefineComponent<QdSearchProps, {
9
9
  clearValidate: (fields?: (string | number)[] | undefined) => void;
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./search.vue2.mjs";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const QdCrudSearch = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-2cf11b71"]]);
4
+ const QdCrudSearch = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-664474ec"]]);
5
5
  export {
6
6
  QdCrudSearch as default
7
7
  };
@@ -1,19 +1,23 @@
1
- import { defineComponent, mergeDefaults, computed, useTemplateRef, onMounted, createBlock, openBlock, unref, createSlots, withCtx, createVNode, mergeProps, isRef, renderList, renderSlot, normalizeProps, guardReactiveProps } from "vue";
1
+ import { defineComponent, mergeDefaults, useCssVars, computed, useTemplateRef, ref, onMounted, resolveDirective, withDirectives, createBlock, openBlock, unref, createSlots, withCtx, createVNode, mergeProps, isRef, createCommentVNode, normalizeClass, createTextVNode, toDisplayString, renderList, renderSlot, normalizeProps, guardReactiveProps } from "vue";
2
2
  import { useVModel } from "../../node_modules/.pnpm/@vueuse_core@14.0.0_vue@3.5.22_typescript@5.9.3_/node_modules/@vueuse/core/dist/index.mjs";
3
+ import { Space, Button } from "tdesign-vue-next";
4
+ import { ChevronDownIcon } from "tdesign-icons-vue-next";
3
5
  import { qdCrudSearchProps } from "./props.mjs";
4
6
  import QdCard from "../card/index.vue.mjs";
5
7
  import _sfc_main$1 from "../form/index.vue.mjs";
6
- import "tdesign-vue-next";
7
8
  import { extractSlotsWithPrefix } from "qidian-shared";
8
9
  /* empty css */
9
10
  /* empty css */
10
11
  /* empty css */
12
+ import { useConfig } from "../config-provider/useConfig.mjs";
11
13
  const _sfc_main = /* @__PURE__ */ defineComponent({
12
14
  ...{
13
15
  name: "QdCrudSearch"
14
16
  },
15
17
  __name: "search",
16
18
  props: /* @__PURE__ */ mergeDefaults({
19
+ onSearch: { type: Function },
20
+ onReset: { type: Function },
17
21
  crudMode: {},
18
22
  items: {},
19
23
  loading: { type: Boolean },
@@ -37,37 +41,133 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
37
41
  showErrorMessage: { type: Boolean },
38
42
  statusIcon: { type: Boolean },
39
43
  submitWithWarningMessage: { type: Boolean },
40
- onReset: { type: Function },
41
44
  onValidate: { type: Function },
42
45
  gutter: {},
43
46
  grid: {}
44
47
  }, qdCrudSearchProps),
45
48
  emits: ["update:data"],
46
49
  setup(__props, { expose: __expose, emit: __emit }) {
50
+ useCssVars((_ctx) => ({
51
+ "aff4bb32": cardH.value
52
+ }));
47
53
  const props = __props;
48
54
  const emit = __emit;
49
55
  const data = useVModel(props, "data", emit, { passive: true });
56
+ const { t } = useConfig("crud");
50
57
  const reProps = computed(() => {
51
- const { data: data2, ...formOptions } = props;
58
+ const { data: data2, onSearch, onReset, ...formOptions } = props;
52
59
  return {
53
60
  formOptions,
61
+ onSearch,
62
+ onReset,
54
63
  models: { data: data2 }
55
64
  };
56
65
  });
66
+ const cardRef = useTemplateRef("card");
67
+ const showExpand = ref(false);
68
+ const expand = ref(false);
69
+ const oneLineH = ref("auto");
70
+ const cardH = computed(() => expand.value ? "auto" : oneLineH.value);
57
71
  const formRef = useTemplateRef("form");
72
+ function getPadding(element, top, bottom) {
73
+ const styles = getComputedStyle(element);
74
+ const pt = parseInt(styles.paddingTop) || 0;
75
+ const pb = parseInt(styles.paddingBottom) || 0;
76
+ return pt + pb;
77
+ }
78
+ function onResize() {
79
+ const el = cardRef.value?.$el;
80
+ if (!el) {
81
+ resetExpand();
82
+ return;
83
+ }
84
+ const grid = el.querySelector(".qd-grid");
85
+ if (!grid) {
86
+ resetExpand();
87
+ return;
88
+ }
89
+ const gridItems = el.querySelectorAll(".qd-grid-item");
90
+ if (!gridItems.length) {
91
+ resetExpand();
92
+ return;
93
+ }
94
+ const heights = Array.from(gridItems, (item) => item.offsetHeight);
95
+ const maxItemHeight = Math.max(...heights);
96
+ if (grid.scrollHeight - 1 < maxItemHeight) {
97
+ resetExpand();
98
+ return;
99
+ }
100
+ const cardBody = el.querySelector(".t-card__body");
101
+ const totalHeight = maxItemHeight + (cardBody ? getPadding(cardBody) : 0) + getPadding(el);
102
+ showExpand.value = true;
103
+ oneLineH.value = `${totalHeight}px`;
104
+ }
105
+ function resetExpand() {
106
+ showExpand.value = false;
107
+ oneLineH.value = "auto";
108
+ expand.value = false;
109
+ }
58
110
  const expose = {};
59
111
  onMounted(() => {
60
112
  Object.assign(expose, formRef.value);
61
113
  });
62
114
  __expose(expose);
63
115
  return (_ctx, _cache) => {
64
- return openBlock(), createBlock(unref(QdCard), { class: "qd-crud-search" }, createSlots({
116
+ const _directive_resize = resolveDirective("resize");
117
+ return withDirectives((openBlock(), createBlock(unref(QdCard), {
118
+ ref: "card",
119
+ class: "qd-crud-search"
120
+ }, createSlots({
65
121
  default: withCtx(() => [
66
122
  createVNode(unref(_sfc_main$1), mergeProps({
67
123
  ref: "form",
68
124
  data: unref(data),
69
- "onUpdate:data": _cache[0] || (_cache[0] = ($event) => isRef(data) ? data.value = $event : null)
70
- }, reProps.value.formOptions), createSlots({ _: 2 }, [
125
+ "onUpdate:data": _cache[1] || (_cache[1] = ($event) => isRef(data) ? data.value = $event : null)
126
+ }, reProps.value.formOptions), createSlots({
127
+ footer: withCtx(() => [
128
+ createVNode(unref(Space), {
129
+ align: "center",
130
+ size: "small"
131
+ }, {
132
+ default: withCtx(() => [
133
+ showExpand.value ? (openBlock(), createBlock(unref(Button), {
134
+ key: 0,
135
+ class: normalizeClass(["qd-crud-search__more", expand.value ? "qd-crud-search__more--expand" : ""]),
136
+ variant: "text",
137
+ onClick: _cache[0] || (_cache[0] = ($event) => expand.value = !expand.value)
138
+ }, {
139
+ suffix: withCtx(() => [
140
+ createVNode(unref(ChevronDownIcon))
141
+ ]),
142
+ default: withCtx(() => [
143
+ createTextVNode(toDisplayString(expand.value ? unref(t)("collapseSearchText") : unref(t)("expandSearchText")) + " ", 1)
144
+ ]),
145
+ _: 1
146
+ }, 8, ["class"])) : createCommentVNode("", true),
147
+ createVNode(unref(Button), {
148
+ type: "submit",
149
+ onClick: reProps.value.onSearch
150
+ }, {
151
+ default: withCtx(() => [
152
+ createTextVNode(toDisplayString(unref(t)("searchText")), 1)
153
+ ]),
154
+ _: 1
155
+ }, 8, ["onClick"]),
156
+ createVNode(unref(Button), {
157
+ variant: "outline",
158
+ onClick: reProps.value.onReset
159
+ }, {
160
+ default: withCtx(() => [
161
+ createTextVNode(toDisplayString(unref(t)("resetText")), 1)
162
+ ]),
163
+ _: 1
164
+ }, 8, ["onClick"])
165
+ ]),
166
+ _: 1
167
+ })
168
+ ]),
169
+ _: 2
170
+ }, [
71
171
  renderList(unref(extractSlotsWithPrefix)(_ctx.$slots, "form"), (item) => {
72
172
  return {
73
173
  name: item.filterName,
@@ -88,7 +188,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
88
188
  ])
89
189
  };
90
190
  })
91
- ]), 1024);
191
+ ]), 1024)), [
192
+ [_directive_resize, onResize]
193
+ ]);
92
194
  };
93
195
  }
94
196
  });
@@ -1 +1 @@
1
- {"version":3,"file":"search.vue2.mjs","sources":["../../../src/components/crud/search.vue"],"sourcesContent":["<template>\n <qd-card class=\"qd-crud-search\">\n <template v-for=\"item in extractSlotsWithPrefix($slots, 'card')\" #[item.filterName]=\"slotProps\">\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n\n <qd-form ref=\"form\" v-model:data=\"data\" v-bind=\"reProps.formOptions\">\n <template v-for=\"item in extractSlotsWithPrefix($slots, 'form')\" #[item.filterName]=\"slotProps\">\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-form>\n </qd-card>\n</template>\n\n<script setup lang=\"ts\">\n import type { QdSearchProps } from './types'\n import type { FormInstanceFunctions } from 'tdesign-vue-next'\n import { computed, onMounted, useTemplateRef } from 'vue'\n import { useVModel } from '@vueuse/core'\n import { qdCrudSearchProps } from './props'\n import { QdCard } from '../card'\n import { QdForm } from '../form'\n import { extractSlotsWithPrefix } from 'qidian-shared'\n\n defineOptions({\n name: 'QdCrudSearch'\n })\n\n const props = withDefaults(defineProps<QdSearchProps>(), qdCrudSearchProps)\n const emit = defineEmits<{\n 'update:data': [QdSearchProps['data']]\n }>()\n const data = useVModel(props, 'data', emit, { passive: true })\n\n const reProps = computed(() => {\n const { data, ...formOptions } = props\n\n return {\n formOptions,\n models: { data }\n }\n })\n\n const formRef = useTemplateRef<FormInstanceFunctions>('form')\n\n const expose = {} as FormInstanceFunctions\n\n onMounted(() => {\n Object.assign(expose, formRef.value)\n })\n\n defineExpose(expose)\n</script>\n\n<style lang=\"less\" scoped>\n .qd-crud-search {\n & > :deep(.t-card__body) {\n height: 100%;\n }\n }\n</style>\n"],"names":["data","_createBlock","_unref","_createSlots","_createVNode","_mergeProps","$slots","_withCtx","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BE,UAAM,QAAQ;AACd,UAAM,OAAO;AAGb,UAAM,OAAO,UAAU,OAAO,QAAQ,MAAM,EAAE,SAAS,MAAM;AAE7D,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM,EAAE,MAAAA,OAAM,GAAG,gBAAgB;AAEjC,aAAO;AAAA,QACL;AAAA,QACA,QAAQ,EAAE,MAAAA,MAAAA;AAAAA,MAAK;AAAA,IAEnB,CAAC;AAED,UAAM,UAAU,eAAsC,MAAM;AAE5D,UAAM,SAAS,CAAA;AAEf,cAAU,MAAM;AACd,aAAO,OAAO,QAAQ,QAAQ,KAAK;AAAA,IACrC,CAAC;AAED,aAAa,MAAM;;0BAlDnBC,YAUUC,MAAA,MAAA,GAAA,EAVD,OAAM,iBAAA,GAAgBC,YAAA;AAAA,yBAK7B,MAIU;AAAA,UAJVC,YAIUF,oBAJVG,WAIU;AAAA,YAJD,KAAI;AAAA,YAAe,MAAMH,MAAA,IAAA;AAAA,iFAAA,KAAI,QAAA,SAAA;AAAA,UAAA,GAAU,QAAA,MAAQ,WAAW,GAAAC,YAAA,EAAA,GAAA,KAAA;AAAA,uBACxCD,MAAA,sBAAA,EAAuBI,KAAAA,QAAM,MAAA,GAAA,CAArC,SAAI;;gBAA6C,MAAA,KAAK;AAAA,gBACrE,IAAAC,QAAA,CADmF,cAAS;AAAA,kBAC5FC,WAAqD,KAAA,QAAxC,KAAK,gDAAsB,SAAS,CAAA,GAAA,QAAA,IAAA;AAAA,gBAAA;;;;;;;mBAN5BN,MAAA,sBAAA,EAAuBI,KAAAA,QAAM,MAAA,GAAA,CAArC,SAAI;;YAA6C,MAAA,KAAK;AAAA,YACrE,IAAAC,QAAA,CADmF,cAAS;AAAA,cAC5FC,WAAqD,KAAA,QAAxC,KAAK,gDAAsB,SAAS,CAAA,GAAA,QAAA,IAAA;AAAA,YAAA;;;;;;;"}
1
+ {"version":3,"file":"search.vue2.mjs","sources":["../../../src/components/crud/search.vue"],"sourcesContent":["<template>\n <qd-card ref=\"card\" v-resize=\"onResize\" class=\"qd-crud-search\">\n <template v-for=\"item in extractSlotsWithPrefix($slots, 'card')\" #[item.filterName]=\"slotProps\">\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n\n <qd-form ref=\"form\" v-model:data=\"data\" v-bind=\"reProps.formOptions\">\n <template #footer>\n <t-space align=\"center\" size=\"small\">\n <t-button\n v-if=\"showExpand\"\n :class=\"['qd-crud-search__more', expand ? 'qd-crud-search__more--expand' : '']\"\n variant=\"text\"\n @click=\"expand = !expand\"\n >\n {{ expand ? t('collapseSearchText') : t('expandSearchText') }}\n <template #suffix><chevron-down-icon /></template>\n </t-button>\n <t-button type=\"submit\" @click=\"reProps.onSearch\">{{ t('searchText') }}</t-button>\n <t-button variant=\"outline\" @click=\"reProps.onReset\">{{ t('resetText') }}</t-button>\n </t-space>\n </template>\n\n <template\n v-for=\"item in extractSlotsWithPrefix($slots, 'form')\"\n #[item.filterName]=\"slotProps\"\n >\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-form>\n </qd-card>\n</template>\n\n<script setup lang=\"ts\">\n import type { QdSearchProps } from './types'\n import type { FormInstanceFunctions } from 'tdesign-vue-next'\n import { computed, onMounted, ref, useTemplateRef } from 'vue'\n import { useVModel } from '@vueuse/core'\n import { Space as TSpace, Button as TButton } from 'tdesign-vue-next'\n import { ChevronDownIcon } from 'tdesign-icons-vue-next'\n import { qdCrudSearchProps } from './props'\n import { QdCard } from '../card'\n import { QdForm } from '../form'\n import { extractSlotsWithPrefix } from 'qidian-shared'\n import { useConfig } from '../config-provider/useConfig'\n\n defineOptions({\n name: 'QdCrudSearch'\n })\n\n const props = withDefaults(defineProps<QdSearchProps>(), qdCrudSearchProps)\n const emit = defineEmits<{\n 'update:data': [QdSearchProps['data']]\n }>()\n const data = useVModel(props, 'data', emit, { passive: true })\n\n const { t } = useConfig('crud')\n\n const reProps = computed(() => {\n const { data, onSearch, onReset, ...formOptions } = props\n\n return {\n formOptions,\n onSearch,\n onReset,\n models: { data }\n }\n })\n\n const cardRef = useTemplateRef('card')\n const showExpand = ref(false)\n const expand = ref(false)\n const oneLineH = ref('auto')\n const cardH = computed(() => (expand.value ? 'auto' : oneLineH.value))\n const formRef = useTemplateRef<FormInstanceFunctions>('form')\n\n function getPadding(element: Element, top: boolean, bottom: boolean): number {\n const styles = getComputedStyle(element)\n const pt = top ? parseInt(styles.paddingTop) || 0 : 0\n const pb = bottom ? parseInt(styles.paddingBottom) || 0 : 0\n return pt + pb\n }\n\n function onResize() {\n const el = cardRef.value?.$el as HTMLElement | undefined\n if (!el) {\n resetExpand()\n return\n }\n\n const grid = el.querySelector('.qd-grid')\n if (!grid) {\n resetExpand()\n return\n }\n\n const gridItems = el.querySelectorAll('.qd-grid-item')\n if (!gridItems.length) {\n resetExpand()\n return\n }\n\n const heights = Array.from(gridItems, (item) => (item as HTMLElement).offsetHeight)\n const maxItemHeight = Math.max(...heights)\n\n if (grid.scrollHeight - 1 < maxItemHeight) {\n resetExpand()\n return\n }\n\n const cardBody = el.querySelector('.t-card__body')\n const totalHeight =\n maxItemHeight + (cardBody ? getPadding(cardBody, true, true) : 0) + getPadding(el, true, true)\n\n showExpand.value = true\n oneLineH.value = `${totalHeight}px`\n }\n\n function resetExpand() {\n showExpand.value = false\n oneLineH.value = 'auto'\n expand.value = false\n }\n\n const expose = {} as FormInstanceFunctions\n\n onMounted(() => {\n Object.assign(expose, formRef.value)\n })\n\n defineExpose(expose)\n</script>\n\n<style lang=\"less\" scoped>\n .qd-crud-search {\n height: v-bind(cardH);\n\n & > :deep(.t-card__body) {\n height: 100%;\n\n .qd-form,\n .qd-grid {\n height: 100%;\n }\n }\n\n &__more {\n :deep(.t-icon) {\n transition: transform cubic-bezier(0.38, 0, 0.24, 1) 0.2s;\n }\n\n &--expand :deep(.t-icon) {\n transform: rotate(-180deg);\n }\n }\n }\n</style>\n"],"names":["data","_createBlock","_unref","_createVNode","_mergeProps","_createSlots","TSpace","TButton","_createTextVNode","_toDisplayString","$slots","_withCtx","_renderSlot"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./table.vue2.mjs";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const table = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-16c4284a"]]);
4
+ const table = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-c8c04099"]]);
5
5
  export {
6
6
  table as default
7
7
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent, mergeDefaults, computed, reactive, useTemplateRef, ref, onMounted, createElementBlock, openBlock, withDirectives, createCommentVNode, createVNode, createBlock, mergeProps, unref, isRef, createSlots, withCtx, createTextVNode, toDisplayString, renderList, renderSlot, normalizeProps, guardReactiveProps, vShow, createElementVNode, Fragment, withModifiers, nextTick, shallowRef, triggerRef } from "vue";
1
+ import { defineComponent, mergeDefaults, computed, reactive, useTemplateRef, ref, onMounted, createElementBlock, openBlock, withDirectives, createCommentVNode, createVNode, createBlock, mergeProps, unref, isRef, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps, vShow, createElementVNode, Fragment, withModifiers, nextTick, shallowRef, triggerRef } from "vue";
2
2
  import { useVModels } from "../../node_modules/.pnpm/@vueuse_core@14.0.0_vue@3.5.22_typescript@5.9.3_/node_modules/@vueuse/core/dist/index.mjs";
3
3
  import { easyCopy, suspectedWrapperPromise, extractSlotsWithPrefix, isEmpty, generateRandomString, to } from "qidian-shared";
4
4
  import { qdCrudTableProps } from "./props.mjs";
@@ -843,27 +843,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
843
843
  "onUpdate:data": _cache[0] || (_cache[0] = ($event) => isRef(searchData) ? searchData.value = $event : null),
844
844
  class: [!searchVisible.value ? "qd-crud-search--hide" : ""]
845
845
  }, reProps.value.searchOptions, {
846
- "on-submit": triggerSearch
846
+ onSubmit: triggerSearch,
847
+ onSearch: handleSearch,
848
+ onReset: handleResetSearch
847
849
  }), createSlots({
848
- "form-footer": withCtx(() => [createVNode(unref(Space), {
849
- align: "center",
850
- size: "small"
851
- }, {
852
- default: withCtx(() => [createVNode(unref(Button), {
853
- type: "submit",
854
- onClick: handleSearch
855
- }, {
856
- default: withCtx(() => [createTextVNode(toDisplayString(unref(t)("searchText")), 1)]),
857
- _: 1
858
- }), createVNode(unref(Button), {
859
- variant: "outline",
860
- onClick: handleResetSearch
861
- }, {
862
- default: withCtx(() => [createTextVNode(toDisplayString(unref(t)("resetText")), 1)]),
863
- _: 1
864
- })]),
865
- _: 1
866
- })]),
867
850
  _: 2
868
851
  }, [renderList(unref(extractSlotsWithPrefix)(_ctx.$slots, "search"), (item) => {
869
852
  return {
@@ -902,7 +885,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
902
885
  }, {
903
886
  default: withCtx(() => [reProps.value.searchOptions?.items?.length ? (openBlock(), createBlock(unref(Tooltip), {
904
887
  key: 0,
905
- content: searchVisible.value ? unref(t)("collapseSearchText") : unref(t)("expandSearchText")
888
+ content: searchVisible.value ? unref(t)("hideSearchText") : unref(t)("showSearchText")
906
889
  }, {
907
890
  default: withCtx(() => [createVNode(unref(Button), {
908
891
  variant: "text",
@@ -1 +1 @@
1
- {"version":3,"file":"table.vue2.mjs","sources":["../../../src/components/crud/table.vue"],"sourcesContent":["<template>\n <div class=\"qd-crud-table\">\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 :on-submit=\"triggerSearch\"\n >\n <template #form-footer>\n <t-space align=\"center\" size=\"small\">\n <t-button type=\"submit\" @click=\"handleSearch\">{{ t('searchText') }}</t-button>\n <t-button variant=\"outline\" @click=\"handleResetSearch\">{{ t('resetText') }}</t-button>\n </t-space>\n </template>\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\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)\"\n />\n </template>\n </slot>\n </t-space>\n\n <t-space align=\"center\" size=\"small\">\n <!-- 展开/收起搜索 -->\n <t-tooltip\n v-if=\"reProps.searchOptions?.items?.length\"\n :content=\"searchVisible ? t('collapseSearchText') : t('expandSearchText')\"\n >\n <t-button variant=\"text\" shape=\"square\" @click=\"toggleSearchVisible\">\n <template #icon><search-icon /></template>\n </t-button>\n </t-tooltip>\n\n <!-- 刷新列表 -->\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\n <!-- 展开/收起树 -->\n <t-tooltip\n v-if=\"!isEmpty(reProps.serviceTableOptions.tree) && !reProps.serviceTableOptions.tree!.lazyLoad\"\n :content=\"treeIsExpand ? t('collapseTreeText') : t('expandTreeText')\"\n >\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\n <!-- 列配置 -->\n <t-tooltip\n v-if=\"reProps.serviceTableOptions.columnController?.hideTriggerButton !== true\"\n :content=\"t('columnControllerText')\"\n >\n <t-button variant=\"text\" shape=\"square\" @click=\"openColumnController\">\n <template #icon><setting-icon /></template>\n </t-button>\n </t-tooltip>\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: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=\"sort\"\n v-model:expanded-tree-nodes=\"expandedTreeNodes\"\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 </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 type { ShallowRef } from 'vue'\n import type { PrimaryTableCellParams, TableRowData, TableRowValue } from 'tdesign-vue-next'\n import type { ServiceMaybePageParams, ServicePageParams, ServicePagination } from 'qidian-shared'\n import type {\n QdCrudTableAction,\n QdCrudTableDeleteAction,\n QdCrudTableInstanceFunctions,\n QdCrudTableProps,\n QdCrudTableRowAction,\n QdCrudTableWrapper,\n TableDialogServiceRes\n } from './types'\n import type { QdServiceTableProps } from '../service'\n import type { QdFormSubmitContext } from '../form'\n\n import {\n computed,\n nextTick,\n reactive,\n useTemplateRef,\n ref,\n onMounted,\n shallowRef,\n triggerRef\n } from 'vue'\n import { useVModels } from '@vueuse/core'\n import {\n easyCopy,\n extractSlotsWithPrefix,\n generateRandomString,\n isEmpty,\n suspectedWrapperPromise,\n to\n } from 'qidian-shared'\n import { cloneDeep, merge } from 'lodash-es'\n import { qdCrudTableProps } from './props'\n import { hasPermiDirective } from '../../directive'\n import { useConfig } from '../config-provider/useConfig'\n\n import {\n Button as TButton,\n Link as TLink,\n Divider as TDivider,\n Space as TSpace,\n Tooltip as TTooltip\n } from 'tdesign-vue-next'\n import {\n AddIcon,\n RefreshIcon,\n SearchIcon,\n SettingIcon,\n UnfoldMoreIcon,\n UnfoldLessIcon\n } from 'tdesign-icons-vue-next'\n import { QdServiceTable } from '../service'\n import { QdDialogForm } from '../dialog'\n import QdCrudSearch from './search.vue'\n import { QdConfigRenderer } from '../config-renderer'\n import { QdCard } from '../card'\n\n import { useModal } from '../../hooks'\n import { qdServiceTableTreeConfig } from '../service/props'\n import { auth } from '../../utils'\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: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 searchData,\n\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 { 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?: unknown\n form: ShallowRef<NonNullable<QdCrudTableWrapper['form']>>\n }\n >\n >({})\n\n const rowActionsIfRenderMap = reactive<Record<string, boolean | undefined>>({})\n\n const reProps = computed(() => {\n const {\n data,\n searchData: inSearchData,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n displayColumns,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes,\n transformParams,\n\n search,\n form,\n detail,\n\n add,\n actions,\n\n edit,\n view,\n del,\n rowActions,\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, reDel, ...buildActions(rowActions, form)].filter(\n Boolean\n ) as QdCrudTableRowAction<D>[]\n\n let reSelectType = selectType\n if (reDel?.selectType === 'multiple') {\n if (!reSelectType) reSelectType = 'multiple'\n\n const batchDel = mergeAction(\n {\n crudMode: 'del',\n permiID: 'remove',\n content: t('deleteText'),\n theme: 'danger',\n variant: 'outline',\n selectType: 'multiple'\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 return {\n title,\n\n searchOptions: search,\n serviceTableOptions: {\n ...serviceTableOptions,\n selectType: reSelectType,\n columns: reColumns,\n transformParams: mergedTransformParams\n } as QdServiceTableProps<D, R, P, TP, Pag>,\n\n formOptions: form,\n detailOptions: detail,\n actions: reActions,\n rowActions: reRowActions,\n\n models: {\n data,\n searchData: inSearchData,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n displayColumns,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes\n }\n }\n })\n\n const tableRef = useTemplateRef('table')\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 searchRef.value?.submit()\n }\n\n function toggleSearchVisible() {\n searchVisible.value = !searchVisible.value\n }\n\n function toggleTreeExpandAll() {\n if (treeIsExpand.value) tableRef.value?.foldAll()\n else tableRef.value?.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 || !currentOptions) return\n\n const mergeOptions = merge({}, defaultOptions, currentOptions)\n\n mergeOptions.permi = buildActionPermi(mergeOptions as QdCrudTableAction)\n if (mergeOptions.crudMode !== 'del') {\n ;(mergeOptions as QdCrudTableAction | QdCrudTableRowAction).form = buildActionForm(\n mergeOptions as QdCrudTableAction,\n crudForm\n )\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) {\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 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 ? ` ${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 let delHasChild = false\n\n if (!row) {\n const rowKey = reProps.value.serviceTableOptions.rowKey || qdCrudTableProps.rowKey\n\n delHasChild = selectedRowKeys.value.some((item: TableRowValue) => {\n const data = tableRef.value?.getData(item)\n if (!data) return false\n\n const children = data.row[childrenKey]\n if (isEmpty(children)) return false\n\n if (children === true) return true\n\n return children.some((child: D) => !selectedRowKeys.value.includes(child[rowKey]))\n })\n } else if (!isEmpty(row[childrenKey])) {\n delHasChild = true\n }\n\n if (delHasChild) {\n alertWarning(t('deleteHasChildrenText'))\n return\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 const form = shallowRef(action.form!)\n if (!dialogFormMap[uid]) {\n dialogFormMap[uid] = {\n visible: false,\n data: {},\n crudMode: action.crudMode,\n form\n }\n }\n\n await nextTick()\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(originalParams.row))\n form.value.loading = false\n triggerRef(form)\n if (err) {\n dialogFormMap[uid].data = originalParams.row\n return\n }\n\n 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(params: NonNullable<Props['data']>[number]) {\n const { detailOptions } = reProps.value\n if (!detailOptions) return easyCopy(params)\n\n const { service, transformParams, transformRes } = detailOptions\n if (!service) return easyCopy(params)\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>,\n cellIndex?: Pick<PrimaryTableCellParams<D>, 'colIndex' | 'rowIndex'> & { index: number }\n ) {\n const ifRender = compIfRender && auth.hasPermiOr(action.permi, false)\n if (!cellIndex) {\n action._ifRender = ifRender\n return\n }\n\n const { colIndex, rowIndex, index } = cellIndex\n rowActionsIfRenderMap[`${colIndex}.${rowIndex}.${index}`] = ifRender\n }\n\n function getActionSeparator(\n action: QdCrudTableAction<D> | QdCrudTableRowAction<D>,\n cellIndex: Partial<Pick<PrimaryTableCellParams<D>, 'colIndex' | 'rowIndex'>> & {\n index: number\n }\n ) {\n const { index, colIndex, rowIndex } = cellIndex\n if (index <= 0) return false\n\n if (isEmpty(colIndex) && isEmpty(rowIndex)) {\n if (action._ifRender === false) return false\n for (let i = index - 1; i >= 0; i--) {\n const previousAction = reProps.value.actions[i]\n if (previousAction._ifRender !== false) return true\n }\n return false\n }\n\n if (rowActionsIfRenderMap[`${colIndex}.${rowIndex}.${index}`] === false) return false\n for (let i = index - 1; i >= 0; i--) {\n const previousIfRender = rowActionsIfRenderMap[`${colIndex}.${rowIndex}.${i}`]\n if (previousIfRender !== false) return true\n }\n return false\n }\n\n const expose = {} as QdCrudTableInstanceFunctions<D, R, P, TP, Pag>\n\n onMounted(() => {\n Object.assign(expose, tableRef.value)\n })\n\n defineExpose(expose)\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 & > .qd-crud-search :deep(.qd-form) {\n display: flex;\n align-items: flex-end;\n flex-flow: row wrap;\n\n & > .qd-grid {\n flex: 1 1 0;\n overflow: hidden;\n margin-right: var(--td-comp-margin-l);\n }\n }\n\n &__body {\n flex: 1 1 0;\n overflow: hidden;\n\n & > :deep(.t-card__body) {\n height: 100%;\n display: flex;\n flex-direction: column;\n\n & > .qd-service-table {\n flex: 1 1 0;\n overflow: hidden;\n }\n }\n }\n\n &__toolbar {\n display: flex;\n justify-content: space-between;\n\n & + .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","displayColumns","expandedRowKeys","filterValue","sort","expandedTreeNodes","useVModels","passive","t","useConfig","msgError","msgSuccess","alertWarning","confirm","useModal","treeIsExpand","computed","value","length","dialogFormMap","reactive","rowActionsIfRenderMap","reProps","inSearchData","transformParams","search","form","detail","add","actions","edit","view","del","rowActions","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","batchDel","variant","splice","reColumns","operationLength","operationIdx","findIndex","item","colKey","defaultOperation","align","fixed","width","push","searchOptions","formOptions","detailOptions","models","tableRef","useTemplateRef","searchVisible","ref","searchRef","searchMode","handleSearch","handleResetSearch","reset","nextTick","submit","triggerSearch","validateResult","changeCurrent","refresh","handleRefresh","toggleSearchVisible","toggleTreeExpandAll","foldAll","expandAll","openColumnController","crudForm","map","defaultOptions","currentOptions","mergeOptions","merge","permi","buildActionPermi","buildActionForm","getConfigRendererCtx","self","other","tableData","actionIsCRU","includes","action","permiPrefix","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","onClick","row","childrenKey","tree","qdServiceTableTreeConfig","delHasChild","rowKey","qdCrudTableProps","some","getData","children","isEmpty","child","body","generateRandomString","shallowRef","visible","loading","triggerRef","err","to","getDetail","buildActionDisabled","disabled","setActionIfRender","compIfRender","cellIndex","ifRender","auth","_ifRender","colIndex","rowIndex","index","getActionSeparator","i","previousAction","previousIfRender","expose","onMounted","Object","assign","__expose","_openBlock","_createElementBlock","_hoisted_1","items","_withDirectives","_createBlock","QdCrudSearch","_mergeProps","_unref","$event","class","_createSlots","_createVNode","TSpace","size","TButton","type","extractSlotsWithPrefix","$slots","name","filterName","fn","_withCtx","slotProps","_renderSlot","_ctx","originalName","undefined","QdCard","_createElementVNode","_hoisted_2","_Fragment","_hoisted_3","QdConfigRenderer","config","onIfRenderChange","TTooltip","shape","SearchIcon","RefreshIcon","lazyLoad","UnfoldLessIcon","key","UnfoldMoreIcon","columnController","hideTriggerButton","SettingIcon","operation","_normalizeProps","_guardReactiveProps","TDivider","layout","is","_renderList","dialogForm","QdDialogForm"],"mappings":"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"}
1
+ {"version":3,"file":"table.vue2.mjs","sources":["../../../src/components/crud/table.vue"],"sourcesContent":["<template>\n <div class=\"qd-crud-table\">\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\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)\"\n />\n </template>\n </slot>\n </t-space>\n\n <t-space align=\"center\" size=\"small\">\n <!-- 展开/收起搜索 -->\n <t-tooltip\n v-if=\"reProps.searchOptions?.items?.length\"\n :content=\"searchVisible ? t('hideSearchText') : t('showSearchText')\"\n >\n <t-button variant=\"text\" shape=\"square\" @click=\"toggleSearchVisible\">\n <template #icon><search-icon /></template>\n </t-button>\n </t-tooltip>\n\n <!-- 刷新列表 -->\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\n <!-- 展开/收起树 -->\n <t-tooltip\n v-if=\"!isEmpty(reProps.serviceTableOptions.tree) && !reProps.serviceTableOptions.tree!.lazyLoad\"\n :content=\"treeIsExpand ? t('collapseTreeText') : t('expandTreeText')\"\n >\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\n <!-- 列配置 -->\n <t-tooltip\n v-if=\"reProps.serviceTableOptions.columnController?.hideTriggerButton !== true\"\n :content=\"t('columnControllerText')\"\n >\n <t-button variant=\"text\" shape=\"square\" @click=\"openColumnController\">\n <template #icon><setting-icon /></template>\n </t-button>\n </t-tooltip>\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: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=\"sort\"\n v-model:expanded-tree-nodes=\"expandedTreeNodes\"\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 </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 type { ShallowRef } from 'vue'\n import type { PrimaryTableCellParams, TableRowData, TableRowValue } from 'tdesign-vue-next'\n import type { ServiceMaybePageParams, ServicePageParams, ServicePagination } from 'qidian-shared'\n import type {\n QdCrudTableAction,\n QdCrudTableDeleteAction,\n QdCrudTableInstanceFunctions,\n QdCrudTableProps,\n QdCrudTableRowAction,\n QdCrudTableWrapper,\n TableDialogServiceRes\n } from './types'\n import type { QdServiceTableInstanceFunctions, QdServiceTableProps } from '../service'\n import type { QdFormSubmitContext } from '../form'\n\n import {\n computed,\n nextTick,\n reactive,\n useTemplateRef,\n ref,\n onMounted,\n shallowRef,\n triggerRef\n } from 'vue'\n import { useVModels } from '@vueuse/core'\n import {\n easyCopy,\n extractSlotsWithPrefix,\n generateRandomString,\n isEmpty,\n suspectedWrapperPromise,\n to\n } from 'qidian-shared'\n import { cloneDeep, merge } from 'lodash-es'\n import { qdCrudTableProps } from './props'\n import { hasPermiDirective } from '../../directive'\n import { useConfig } from '../config-provider/useConfig'\n\n import {\n Button as TButton,\n Link as TLink,\n Divider as TDivider,\n Space as TSpace,\n Tooltip as TTooltip\n } from 'tdesign-vue-next'\n import {\n AddIcon,\n RefreshIcon,\n SearchIcon,\n SettingIcon,\n UnfoldMoreIcon,\n UnfoldLessIcon\n } from 'tdesign-icons-vue-next'\n import { QdServiceTable } from '../service'\n import { QdDialogForm } from '../dialog'\n import QdCrudSearch from './search.vue'\n import { QdConfigRenderer } from '../config-renderer'\n import { QdCard } from '../card'\n\n import { useModal } from '../../hooks'\n import { qdServiceTableTreeConfig } from '../service/props'\n import { auth } from '../../utils'\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: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 searchData,\n\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 { 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?: unknown\n form: ShallowRef<NonNullable<QdCrudTableWrapper['form']>>\n }\n >\n >({})\n\n const rowActionsIfRenderMap = reactive<Record<string, boolean | undefined>>({})\n\n const reProps = computed(() => {\n const {\n data,\n searchData: inSearchData,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n displayColumns,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes,\n transformParams,\n\n search,\n form,\n detail,\n\n add,\n actions,\n\n edit,\n view,\n del,\n rowActions,\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, reDel, ...buildActions(rowActions, form)].filter(\n Boolean\n ) as QdCrudTableRowAction<D>[]\n\n let reSelectType = selectType\n if (reDel?.selectType === 'multiple') {\n if (!reSelectType) reSelectType = 'multiple'\n\n const batchDel = mergeAction(\n {\n crudMode: 'del',\n permiID: 'remove',\n content: t('deleteText'),\n theme: 'danger',\n variant: 'outline',\n selectType: 'multiple'\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 return {\n title,\n\n searchOptions: search,\n serviceTableOptions: {\n ...serviceTableOptions,\n selectType: reSelectType,\n columns: reColumns,\n transformParams: mergedTransformParams\n } as QdServiceTableProps<D, R, P, TP, Pag>,\n\n formOptions: form,\n detailOptions: detail,\n actions: reActions,\n rowActions: reRowActions,\n\n models: {\n data,\n searchData: inSearchData,\n selectedRowKeys,\n activeRowKeys,\n columnControllerVisible,\n displayColumns,\n expandedRowKeys,\n filterValue,\n sort,\n expandedTreeNodes\n }\n }\n })\n\n const tableRef = useTemplateRef<QdServiceTableInstanceFunctions<D, R, P, TP, Pag>>('table')\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 searchRef.value?.submit()\n }\n\n function toggleSearchVisible() {\n searchVisible.value = !searchVisible.value\n }\n\n function toggleTreeExpandAll() {\n if (treeIsExpand.value) tableRef.value?.foldAll()\n else tableRef.value?.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 || !currentOptions) return\n\n const mergeOptions = merge({}, defaultOptions, currentOptions)\n\n mergeOptions.permi = buildActionPermi(mergeOptions as QdCrudTableAction)\n if (mergeOptions.crudMode !== 'del') {\n ;(mergeOptions as QdCrudTableAction | QdCrudTableRowAction).form = buildActionForm(\n mergeOptions as QdCrudTableAction,\n crudForm\n )\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) {\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 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 ? ` ${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 let delHasChild = false\n\n if (!row) {\n const rowKey = reProps.value.serviceTableOptions.rowKey || qdCrudTableProps.rowKey\n\n delHasChild = selectedRowKeys.value.some((item: TableRowValue) => {\n const data = tableRef.value?.getData(item)\n if (!data) return false\n\n const children = data.row[childrenKey]\n if (isEmpty(children)) return false\n\n if (children === true) return true\n\n return children.some((child: D) => !selectedRowKeys.value.includes(child[rowKey]))\n })\n } else if (!isEmpty(row[childrenKey])) {\n delHasChild = true\n }\n\n if (delHasChild) {\n alertWarning(t('deleteHasChildrenText'))\n return\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 const form = shallowRef(action.form!)\n if (!dialogFormMap[uid]) {\n dialogFormMap[uid] = {\n visible: false,\n data: {},\n crudMode: action.crudMode,\n form\n }\n }\n\n await nextTick()\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(originalParams.row))\n form.value.loading = false\n triggerRef(form)\n if (err) {\n dialogFormMap[uid].data = originalParams.row\n return\n }\n\n 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(params: NonNullable<Props['data']>[number]) {\n const { detailOptions } = reProps.value\n if (!detailOptions) return easyCopy(params)\n\n const { service, transformParams, transformRes } = detailOptions\n if (!service) return easyCopy(params)\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>,\n cellIndex?: Pick<PrimaryTableCellParams<D>, 'colIndex' | 'rowIndex'> & { index: number }\n ) {\n const ifRender = compIfRender && auth.hasPermiOr(action.permi, false)\n if (!cellIndex) {\n action._ifRender = ifRender\n return\n }\n\n const { colIndex, rowIndex, index } = cellIndex\n rowActionsIfRenderMap[`${colIndex}.${rowIndex}.${index}`] = ifRender\n }\n\n function getActionSeparator(\n action: QdCrudTableAction<D> | QdCrudTableRowAction<D>,\n cellIndex: Partial<Pick<PrimaryTableCellParams<D>, 'colIndex' | 'rowIndex'>> & {\n index: number\n }\n ) {\n const { index, colIndex, rowIndex } = cellIndex\n if (index <= 0) return false\n\n if (isEmpty(colIndex) && isEmpty(rowIndex)) {\n if (action._ifRender === false) return false\n for (let i = index - 1; i >= 0; i--) {\n const previousAction = reProps.value.actions[i]\n if (previousAction._ifRender !== false) return true\n }\n return false\n }\n\n if (rowActionsIfRenderMap[`${colIndex}.${rowIndex}.${index}`] === false) return false\n for (let i = index - 1; i >= 0; i--) {\n const previousIfRender = rowActionsIfRenderMap[`${colIndex}.${rowIndex}.${i}`]\n if (previousIfRender !== false) return true\n }\n return false\n }\n\n const expose = {} as QdCrudTableInstanceFunctions<D, R, P, TP, Pag>\n\n onMounted(() => {\n Object.assign(expose, tableRef.value)\n })\n\n defineExpose(expose)\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 & > .qd-crud-search :deep(.qd-form) {\n display: flex;\n align-items: flex-end;\n flex-flow: row wrap;\n\n & > .qd-grid {\n flex: 1 1 0;\n overflow: hidden;\n margin-right: var(--td-comp-margin-l);\n }\n }\n\n &__body {\n flex: auto;\n\n & > :deep(.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 }\n }\n\n &__toolbar {\n display: flex;\n justify-content: space-between;\n\n & + .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","displayColumns","expandedRowKeys","filterValue","sort","expandedTreeNodes","useVModels","passive","t","useConfig","msgError","msgSuccess","alertWarning","confirm","useModal","treeIsExpand","computed","value","length","dialogFormMap","reactive","rowActionsIfRenderMap","reProps","inSearchData","transformParams","search","form","detail","add","actions","edit","view","del","rowActions","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","batchDel","variant","splice","reColumns","operationLength","operationIdx","findIndex","item","colKey","defaultOperation","align","fixed","width","push","searchOptions","formOptions","detailOptions","models","tableRef","useTemplateRef","searchVisible","ref","searchRef","searchMode","handleSearch","handleResetSearch","reset","nextTick","submit","triggerSearch","validateResult","changeCurrent","refresh","handleRefresh","toggleSearchVisible","toggleTreeExpandAll","foldAll","expandAll","openColumnController","crudForm","map","defaultOptions","currentOptions","mergeOptions","merge","permi","buildActionPermi","buildActionForm","getConfigRendererCtx","self","other","tableData","actionIsCRU","includes","action","permiPrefix","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","onClick","row","childrenKey","tree","qdServiceTableTreeConfig","delHasChild","rowKey","qdCrudTableProps","some","getData","children","isEmpty","child","body","generateRandomString","shallowRef","visible","loading","triggerRef","err","to","getDetail","buildActionDisabled","disabled","setActionIfRender","compIfRender","cellIndex","ifRender","auth","_ifRender","colIndex","rowIndex","index","getActionSeparator","i","previousAction","previousIfRender","expose","onMounted","Object","assign","__expose","_openBlock","_createElementBlock","_hoisted_1","items","_withDirectives","_createBlock","QdCrudSearch","_mergeProps","_unref","$event","class","onSearch","onReset","extractSlotsWithPrefix","$slots","name","filterName","fn","_withCtx","slotProps","_renderSlot","_ctx","originalName","undefined","_createVNode","QdCard","_createElementVNode","_hoisted_2","TSpace","size","_Fragment","_hoisted_3","QdConfigRenderer","config","TButton","onIfRenderChange","TTooltip","shape","SearchIcon","RefreshIcon","lazyLoad","UnfoldLessIcon","key","UnfoldMoreIcon","columnController","hideTriggerButton","SettingIcon","_createSlots","operation","_normalizeProps","_guardReactiveProps","TDivider","layout","is","_renderList","dialogForm","QdDialogForm"],"mappings":"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"}
@@ -4,7 +4,10 @@ import type { QdDialogFormProps } from '../dialog';
4
4
  import type { QdFormProps } from '../form';
5
5
  import type { QdServiceListInstanceFunctions, QdServiceListProps, QdServiceTableProps, QdServiceTableInstanceFunctions } from '../service';
6
6
  import type { Qd2ConfigValue, QdComponentConfig } from '../config-renderer';
7
- export type QdSearchProps = QdFormProps;
7
+ export interface QdSearchProps extends Omit<QdFormProps, 'onReset'> {
8
+ onSearch?: () => void;
9
+ onReset?: () => void;
10
+ }
8
11
  export type TableDialogServiceRes = void | boolean | {
9
12
  success: boolean;
10
13
  message?: string;
@@ -24,6 +24,8 @@ declare const _default: {
24
24
  deleteWrapperBodyText: string;
25
25
  collapseSearchText: string;
26
26
  expandSearchText: string;
27
+ hideSearchText: string;
28
+ showSearchText: string;
27
29
  refreshText: string;
28
30
  collapseTreeText: string;
29
31
  expandTreeText: string;
@@ -24,8 +24,10 @@ const enUS = {
24
24
  deleteHasChildrenText: "Please clear the child data items of the selected data item first.",
25
25
  operationSuccessText: "Operation Success",
26
26
  deleteWrapperBodyText: "Are you sure you want to delete the selected data items?",
27
- collapseSearchText: "Collapse Search",
28
- expandSearchText: "Expand Search",
27
+ collapseSearchText: "Collapse",
28
+ expandSearchText: "Expand",
29
+ hideSearchText: "Collapse Search",
30
+ showSearchText: "Expand Search",
29
31
  refreshText: "Refresh",
30
32
  collapseTreeText: "Collapse all",
31
33
  expandTreeText: "Expand all",
@@ -1 +1 @@
1
- {"version":3,"file":"en-US.mjs","sources":["../../src/locales/en-US.ts"],"sourcesContent":["import enUS from 'tdesign-vue-next/es/locale/en_US'\n\nexport default {\n ...enUS,\n loading: {\n text: 'loading'\n },\n timeFormat: {\n seconds: 'Seconds',\n minutes: 'Minutes',\n hours: 'Hours',\n days: 'Days'\n },\n crud: {\n emptyText: 'No data available',\n searchText: 'Search',\n resetText: 'Reset',\n addText: 'Add',\n viewText: 'View',\n editText: 'Edit',\n deleteText: 'Delete',\n operationText: 'Operation',\n closeText: 'Close',\n\n deleteSuccessText: 'Delete Success',\n deleteHasChildrenText: 'Please clear the child data items of the selected data item first.',\n operationSuccessText: 'Operation Success',\n deleteWrapperBodyText: 'Are you sure you want to delete the selected data items?',\n\n collapseSearchText: 'Collapse Search',\n expandSearchText: 'Expand Search',\n refreshText: 'Refresh',\n collapseTreeText: 'Collapse all',\n expandTreeText: 'Expand all',\n columnControllerText: 'Column Configuration'\n },\n modal: {\n systemPromptText: 'System Prompt'\n },\n upload: {\n ...enUS.upload,\n fileFormatNotSupportedMessage: ['File format not supported, please upload', 'format file'],\n maxUploadMessage: [\n 'The number of files exceeds the limit (',\n ') , only upload files that do not exceed the limit'\n ],\n sameNameMessage: 'Uploading files with the same name is not allowed',\n fileSizeExceedsLimit: 'File size exceeded limit, automatically filtered',\n fileUploadFailed: 'File upload failed',\n viewFileText: 'View file'\n },\n chat: {\n ...enUS.chat,\n failedObtainSessionIdMessage: 'Failed to obtain session ID',\n failedObtainUrlMessage: 'Failed to obtain session URL',\n failedObtainAgentInfoMessage: 'Unable to obtain agent ID and API key',\n apiUnknownErrorMessage: 'Unknown error',\n failedParseContentMessage: 'Failed to parse content',\n parsedContentEmptyMessage: 'The parsed content is empty.',\n agentProcessingTimeoutMessage: \"The agent's processing timed out. Please try again later.\"\n },\n office: {\n zoomOut: 'Zoom out',\n zoomIn: 'Zoom in',\n adaptiveView: 'Adaptive',\n cancelAdaptiveView: 'Cancel adaptive',\n nextPage: 'Next page',\n prevPage: 'Previous page'\n }\n}\n"],"names":["enUS"],"mappings":";AAEA,MAAA,OAAe;AAAA,EACb,GAAGA;AAAAA,EACH,SAAS;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,YAAY;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,WAAW;AAAA,IAEX,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,uBAAuB;AAAA,IAEvB,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EAAA;AAAA,EAExB,OAAO;AAAA,IACL,kBAAkB;AAAA,EAAA;AAAA,EAEpB,QAAQ;AAAA,IACN,GAAGA,KAAK;AAAA,IACR,+BAA+B,CAAC,4CAA4C,aAAa;AAAA,IACzF,kBAAkB;AAAA,MAChB;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,kBAAkB;AAAA,IAClB,cAAc;AAAA,EAAA;AAAA,EAEhB,MAAM;AAAA,IACJ,GAAGA,KAAK;AAAA,IACR,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,2BAA2B;AAAA,IAC3B,2BAA2B;AAAA,IAC3B,+BAA+B;AAAA,EAAA;AAAA,EAEjC,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;"}
1
+ {"version":3,"file":"en-US.mjs","sources":["../../src/locales/en-US.ts"],"sourcesContent":["import enUS from 'tdesign-vue-next/es/locale/en_US'\n\nexport default {\n ...enUS,\n loading: {\n text: 'loading'\n },\n timeFormat: {\n seconds: 'Seconds',\n minutes: 'Minutes',\n hours: 'Hours',\n days: 'Days'\n },\n crud: {\n emptyText: 'No data available',\n searchText: 'Search',\n resetText: 'Reset',\n addText: 'Add',\n viewText: 'View',\n editText: 'Edit',\n deleteText: 'Delete',\n operationText: 'Operation',\n closeText: 'Close',\n\n deleteSuccessText: 'Delete Success',\n deleteHasChildrenText: 'Please clear the child data items of the selected data item first.',\n operationSuccessText: 'Operation Success',\n deleteWrapperBodyText: 'Are you sure you want to delete the selected data items?',\n\n collapseSearchText: 'Collapse',\n expandSearchText: 'Expand',\n hideSearchText: 'Collapse Search',\n showSearchText: 'Expand Search',\n refreshText: 'Refresh',\n collapseTreeText: 'Collapse all',\n expandTreeText: 'Expand all',\n columnControllerText: 'Column Configuration'\n },\n modal: {\n systemPromptText: 'System Prompt'\n },\n upload: {\n ...enUS.upload,\n fileFormatNotSupportedMessage: ['File format not supported, please upload', 'format file'],\n maxUploadMessage: [\n 'The number of files exceeds the limit (',\n ') , only upload files that do not exceed the limit'\n ],\n sameNameMessage: 'Uploading files with the same name is not allowed',\n fileSizeExceedsLimit: 'File size exceeded limit, automatically filtered',\n fileUploadFailed: 'File upload failed',\n viewFileText: 'View file'\n },\n chat: {\n ...enUS.chat,\n failedObtainSessionIdMessage: 'Failed to obtain session ID',\n failedObtainUrlMessage: 'Failed to obtain session URL',\n failedObtainAgentInfoMessage: 'Unable to obtain agent ID and API key',\n apiUnknownErrorMessage: 'Unknown error',\n failedParseContentMessage: 'Failed to parse content',\n parsedContentEmptyMessage: 'The parsed content is empty.',\n agentProcessingTimeoutMessage: \"The agent's processing timed out. Please try again later.\"\n },\n office: {\n zoomOut: 'Zoom out',\n zoomIn: 'Zoom in',\n adaptiveView: 'Adaptive',\n cancelAdaptiveView: 'Cancel adaptive',\n nextPage: 'Next page',\n prevPage: 'Previous page'\n }\n}\n"],"names":["enUS"],"mappings":";AAEA,MAAA,OAAe;AAAA,EACb,GAAGA;AAAAA,EACH,SAAS;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,YAAY;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,WAAW;AAAA,IAEX,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,uBAAuB;AAAA,IAEvB,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EAAA;AAAA,EAExB,OAAO;AAAA,IACL,kBAAkB;AAAA,EAAA;AAAA,EAEpB,QAAQ;AAAA,IACN,GAAGA,KAAK;AAAA,IACR,+BAA+B,CAAC,4CAA4C,aAAa;AAAA,IACzF,kBAAkB;AAAA,MAChB;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,kBAAkB;AAAA,IAClB,cAAc;AAAA,EAAA;AAAA,EAEhB,MAAM;AAAA,IACJ,GAAGA,KAAK;AAAA,IACR,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,2BAA2B;AAAA,IAC3B,2BAA2B;AAAA,IAC3B,+BAA+B;AAAA,EAAA;AAAA,EAEjC,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;"}
@@ -24,6 +24,8 @@ declare const _default: {
24
24
  deleteWrapperBodyText: string;
25
25
  collapseSearchText: string;
26
26
  expandSearchText: string;
27
+ hideSearchText: string;
28
+ showSearchText: string;
27
29
  refreshText: string;
28
30
  collapseTreeText: string;
29
31
  expandTreeText: string;
@@ -24,8 +24,10 @@ const zhCN = {
24
24
  deleteHasChildrenText: "请先清空所选数据项的子级",
25
25
  operationSuccessText: "操作成功",
26
26
  deleteWrapperBodyText: "是否确认删除所选数据项?",
27
- collapseSearchText: "收起搜索",
28
- expandSearchText: "展开搜索",
27
+ collapseSearchText: "收起",
28
+ expandSearchText: "展开",
29
+ hideSearchText: "收起搜索",
30
+ showSearchText: "展开搜索",
29
31
  refreshText: "刷新",
30
32
  collapseTreeText: "收起全部",
31
33
  expandTreeText: "展开全部",
@@ -1 +1 @@
1
- {"version":3,"file":"zh-CN.mjs","sources":["../../src/locales/zh-CN.ts"],"sourcesContent":["import zhCN from 'tdesign-vue-next/es/locale/zh_CN'\n\nexport default {\n ...zhCN,\n loading: {\n text: '加载中'\n },\n timeFormat: {\n seconds: '秒',\n minutes: '分钟',\n hours: '小时',\n days: '天'\n },\n crud: {\n emptyText: '暂无数据',\n searchText: '搜索',\n resetText: '重置',\n addText: '新增',\n viewText: '查看',\n editText: '编辑',\n deleteText: '删除',\n operationText: '操作',\n closeText: '关闭',\n\n deleteSuccessText: '删除成功',\n deleteHasChildrenText: '请先清空所选数据项的子级',\n operationSuccessText: '操作成功',\n deleteWrapperBodyText: '是否确认删除所选数据项?',\n\n collapseSearchText: '收起搜索',\n expandSearchText: '展开搜索',\n refreshText: '刷新',\n collapseTreeText: '收起全部',\n expandTreeText: '展开全部',\n columnControllerText: '列配置'\n },\n modal: {\n systemPromptText: '系统提示'\n },\n upload: {\n ...zhCN.upload,\n fileFormatNotSupportedMessage: ['文件格式不支持,请上传', '格式文件'],\n maxUploadMessage: ['文件数量超出限制(', ')个,仅上传未超出数量的文件'],\n sameNameMessage: '不允许上传同名文件',\n fileSizeExceedsLimit: '文件大小超出限制,已自动过滤',\n fileUploadFailed: '文件上传失败',\n viewFileText: '查看文件'\n },\n chat: {\n ...zhCN.chat,\n failedObtainSessionIdMessage: '未能获取会话 ID',\n failedObtainUrlMessage: '未能获取会话地址',\n failedObtainAgentInfoMessage: '未能获取智能体 ID、API Key',\n apiUnknownErrorMessage: '未知错误',\n failedParseContentMessage: '解析内容失败',\n parsedContentEmptyMessage: '解析内容为空。',\n agentProcessingTimeoutMessage: '智能体处理超时,请稍后再试。'\n },\n office: {\n zoomOut: '缩小',\n zoomIn: '放大',\n adaptiveView: '自适应',\n cancelAdaptiveView: '取消自适应',\n nextPage: '下一页',\n prevPage: '上一页'\n }\n}\n"],"names":["zhCN"],"mappings":";AAEA,MAAA,OAAe;AAAA,EACb,GAAGA;AAAAA,EACH,SAAS;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,YAAY;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,WAAW;AAAA,IAEX,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,uBAAuB;AAAA,IAEvB,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EAAA;AAAA,EAExB,OAAO;AAAA,IACL,kBAAkB;AAAA,EAAA;AAAA,EAEpB,QAAQ;AAAA,IACN,GAAGA,KAAK;AAAA,IACR,+BAA+B,CAAC,eAAe,MAAM;AAAA,IACrD,kBAAkB,CAAC,aAAa,gBAAgB;AAAA,IAChD,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,kBAAkB;AAAA,IAClB,cAAc;AAAA,EAAA;AAAA,EAEhB,MAAM;AAAA,IACJ,GAAGA,KAAK;AAAA,IACR,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,2BAA2B;AAAA,IAC3B,2BAA2B;AAAA,IAC3B,+BAA+B;AAAA,EAAA;AAAA,EAEjC,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;"}
1
+ {"version":3,"file":"zh-CN.mjs","sources":["../../src/locales/zh-CN.ts"],"sourcesContent":["import zhCN from 'tdesign-vue-next/es/locale/zh_CN'\n\nexport default {\n ...zhCN,\n loading: {\n text: '加载中'\n },\n timeFormat: {\n seconds: '秒',\n minutes: '分钟',\n hours: '小时',\n days: '天'\n },\n crud: {\n emptyText: '暂无数据',\n searchText: '搜索',\n resetText: '重置',\n addText: '新增',\n viewText: '查看',\n editText: '编辑',\n deleteText: '删除',\n operationText: '操作',\n closeText: '关闭',\n\n deleteSuccessText: '删除成功',\n deleteHasChildrenText: '请先清空所选数据项的子级',\n operationSuccessText: '操作成功',\n deleteWrapperBodyText: '是否确认删除所选数据项?',\n\n collapseSearchText: '收起',\n expandSearchText: '展开',\n hideSearchText: '收起搜索',\n showSearchText: '展开搜索',\n refreshText: '刷新',\n collapseTreeText: '收起全部',\n expandTreeText: '展开全部',\n columnControllerText: '列配置'\n },\n modal: {\n systemPromptText: '系统提示'\n },\n upload: {\n ...zhCN.upload,\n fileFormatNotSupportedMessage: ['文件格式不支持,请上传', '格式文件'],\n maxUploadMessage: ['文件数量超出限制(', ')个,仅上传未超出数量的文件'],\n sameNameMessage: '不允许上传同名文件',\n fileSizeExceedsLimit: '文件大小超出限制,已自动过滤',\n fileUploadFailed: '文件上传失败',\n viewFileText: '查看文件'\n },\n chat: {\n ...zhCN.chat,\n failedObtainSessionIdMessage: '未能获取会话 ID',\n failedObtainUrlMessage: '未能获取会话地址',\n failedObtainAgentInfoMessage: '未能获取智能体 ID、API Key',\n apiUnknownErrorMessage: '未知错误',\n failedParseContentMessage: '解析内容失败',\n parsedContentEmptyMessage: '解析内容为空。',\n agentProcessingTimeoutMessage: '智能体处理超时,请稍后再试。'\n },\n office: {\n zoomOut: '缩小',\n zoomIn: '放大',\n adaptiveView: '自适应',\n cancelAdaptiveView: '取消自适应',\n nextPage: '下一页',\n prevPage: '上一页'\n }\n}\n"],"names":["zhCN"],"mappings":";AAEA,MAAA,OAAe;AAAA,EACb,GAAGA;AAAAA,EACH,SAAS;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,YAAY;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,WAAW;AAAA,IAEX,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,uBAAuB;AAAA,IAEvB,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EAAA;AAAA,EAExB,OAAO;AAAA,IACL,kBAAkB;AAAA,EAAA;AAAA,EAEpB,QAAQ;AAAA,IACN,GAAGA,KAAK;AAAA,IACR,+BAA+B,CAAC,eAAe,MAAM;AAAA,IACrD,kBAAkB,CAAC,aAAa,gBAAgB;AAAA,IAChD,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,kBAAkB;AAAA,IAClB,cAAc;AAAA,EAAA;AAAA,EAEhB,MAAM;AAAA,IACJ,GAAGA,KAAK;AAAA,IACR,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,2BAA2B;AAAA,IAC3B,2BAA2B;AAAA,IAC3B,+BAA+B;AAAA,EAAA;AAAA,EAEjC,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;"}
@@ -24,6 +24,8 @@ declare const _default: {
24
24
  deleteWrapperBodyText: string;
25
25
  collapseSearchText: string;
26
26
  expandSearchText: string;
27
+ hideSearchText: string;
28
+ showSearchText: string;
27
29
  refreshText: string;
28
30
  collapseTreeText: string;
29
31
  expandTreeText: string;
@@ -24,8 +24,10 @@ const zhTW = {
24
24
  deleteHasChildrenText: "請先清空所選資料項的子級",
25
25
  operationSuccessText: "操作成功",
26
26
  deleteWrapperBodyText: "是否確認刪除所選資料項?",
27
- collapseSearchText: "收起搜尋",
28
- expandSearchText: "展開搜尋",
27
+ collapseSearchText: "收起",
28
+ expandSearchText: "展開",
29
+ hideSearchText: "收起搜尋",
30
+ showSearchText: "展開搜尋",
29
31
  refreshText: "刷新",
30
32
  collapseTreeText: "收起全部",
31
33
  expandTreeText: "展開全部",
@@ -1 +1 @@
1
- {"version":3,"file":"zh-TW.mjs","sources":["../../src/locales/zh-TW.ts"],"sourcesContent":["import zhTW from 'tdesign-vue-next/es/locale/zh_TW'\n\nexport default {\n ...zhTW,\n loading: {\n text: '載入中'\n },\n timeFormat: {\n seconds: '秒',\n minutes: '分鐘',\n hours: '小時',\n days: '天'\n },\n crud: {\n emptyText: '暫無數據',\n searchText: '搜尋',\n resetText: '重置',\n addText: '新增',\n viewText: '查看',\n editText: '編輯',\n deleteText: '刪除',\n operationText: '操作',\n closeText: '關閉',\n\n deleteSuccessText: '刪除成功',\n deleteHasChildrenText: '請先清空所選資料項的子級',\n operationSuccessText: '操作成功',\n deleteWrapperBodyText: '是否確認刪除所選資料項?',\n\n collapseSearchText: '收起搜尋',\n expandSearchText: '展開搜尋',\n refreshText: '刷新',\n collapseTreeText: '收起全部',\n expandTreeText: '展開全部',\n columnControllerText: '列配置'\n },\n modal: {\n systemPromptText: '系統提示'\n },\n upload: {\n ...zhTW.upload,\n fileFormatNotSupportedMessage: ['文件格式不支持,請上傳', '格式文件'],\n maxUploadMessage: ['文件數量超出限制(', ')個,僅上傳未超出數量的文件'],\n sameNameMessage: '不允許上傳同名文件',\n fileSizeExceedsLimit: '文件大小超出限制,已自動過濾',\n fileUploadFailed: '文件上傳失敗',\n viewFileText: '查看文件'\n },\n chat: {\n ...zhTW.chat,\n failedObtainSessionIdMessage: '未能取得會話 ID',\n failedObtainUrlMessage: '未能取得會話位址',\n failedObtainAgentInfoMessage: '未能取得智能體 ID、API Key',\n apiUnknownErrorMessage: '未知錯誤',\n failedParseContentMessage: '解析內容失敗',\n parsedContentEmptyMessage: '解析內容為空。',\n agentProcessingTimeoutMessage: '智能體處理超時,請稍後再試。'\n },\n office: {\n zoomOut: '縮小',\n zoomIn: '放大',\n adaptiveView: '自適應',\n cancelAdaptiveView: '取消自適應',\n nextPage: '下一頁',\n prevPage: '上一頁'\n }\n}\n"],"names":["zhTW"],"mappings":";AAEA,MAAA,OAAe;AAAA,EACb,GAAGA;AAAAA,EACH,SAAS;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,YAAY;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,WAAW;AAAA,IAEX,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,uBAAuB;AAAA,IAEvB,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EAAA;AAAA,EAExB,OAAO;AAAA,IACL,kBAAkB;AAAA,EAAA;AAAA,EAEpB,QAAQ;AAAA,IACN,GAAGA,MAAK;AAAA,IACR,+BAA+B,CAAC,eAAe,MAAM;AAAA,IACrD,kBAAkB,CAAC,aAAa,gBAAgB;AAAA,IAChD,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,kBAAkB;AAAA,IAClB,cAAc;AAAA,EAAA;AAAA,EAEhB,MAAM;AAAA,IACJ,GAAGA,MAAK;AAAA,IACR,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,2BAA2B;AAAA,IAC3B,2BAA2B;AAAA,IAC3B,+BAA+B;AAAA,EAAA;AAAA,EAEjC,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;"}
1
+ {"version":3,"file":"zh-TW.mjs","sources":["../../src/locales/zh-TW.ts"],"sourcesContent":["import zhTW from 'tdesign-vue-next/es/locale/zh_TW'\n\nexport default {\n ...zhTW,\n loading: {\n text: '載入中'\n },\n timeFormat: {\n seconds: '秒',\n minutes: '分鐘',\n hours: '小時',\n days: '天'\n },\n crud: {\n emptyText: '暫無數據',\n searchText: '搜尋',\n resetText: '重置',\n addText: '新增',\n viewText: '查看',\n editText: '編輯',\n deleteText: '刪除',\n operationText: '操作',\n closeText: '關閉',\n\n deleteSuccessText: '刪除成功',\n deleteHasChildrenText: '請先清空所選資料項的子級',\n operationSuccessText: '操作成功',\n deleteWrapperBodyText: '是否確認刪除所選資料項?',\n\n collapseSearchText: '收起',\n expandSearchText: '展開',\n hideSearchText: '收起搜尋',\n showSearchText: '展開搜尋',\n refreshText: '刷新',\n collapseTreeText: '收起全部',\n expandTreeText: '展開全部',\n columnControllerText: '列配置'\n },\n modal: {\n systemPromptText: '系統提示'\n },\n upload: {\n ...zhTW.upload,\n fileFormatNotSupportedMessage: ['文件格式不支持,請上傳', '格式文件'],\n maxUploadMessage: ['文件數量超出限制(', ')個,僅上傳未超出數量的文件'],\n sameNameMessage: '不允許上傳同名文件',\n fileSizeExceedsLimit: '文件大小超出限制,已自動過濾',\n fileUploadFailed: '文件上傳失敗',\n viewFileText: '查看文件'\n },\n chat: {\n ...zhTW.chat,\n failedObtainSessionIdMessage: '未能取得會話 ID',\n failedObtainUrlMessage: '未能取得會話位址',\n failedObtainAgentInfoMessage: '未能取得智能體 ID、API Key',\n apiUnknownErrorMessage: '未知錯誤',\n failedParseContentMessage: '解析內容失敗',\n parsedContentEmptyMessage: '解析內容為空。',\n agentProcessingTimeoutMessage: '智能體處理超時,請稍後再試。'\n },\n office: {\n zoomOut: '縮小',\n zoomIn: '放大',\n adaptiveView: '自適應',\n cancelAdaptiveView: '取消自適應',\n nextPage: '下一頁',\n prevPage: '上一頁'\n }\n}\n"],"names":["zhTW"],"mappings":";AAEA,MAAA,OAAe;AAAA,EACb,GAAGA;AAAAA,EACH,SAAS;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,YAAY;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,WAAW;AAAA,IAEX,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,uBAAuB;AAAA,IAEvB,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EAAA;AAAA,EAExB,OAAO;AAAA,IACL,kBAAkB;AAAA,EAAA;AAAA,EAEpB,QAAQ;AAAA,IACN,GAAGA,MAAK;AAAA,IACR,+BAA+B,CAAC,eAAe,MAAM;AAAA,IACrD,kBAAkB,CAAC,aAAa,gBAAgB;AAAA,IAChD,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,kBAAkB;AAAA,IAClB,cAAc;AAAA,EAAA;AAAA,EAEhB,MAAM;AAAA,IACJ,GAAGA,MAAK;AAAA,IACR,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,8BAA8B;AAAA,IAC9B,wBAAwB;AAAA,IACxB,2BAA2B;AAAA,IAC3B,2BAA2B;AAAA,IAC3B,+BAA+B;AAAA,EAAA;AAAA,EAEjC,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;"}
@@ -202,85 +202,98 @@ p {
202
202
  .qd-form-item__component[data-v-a363e096] {
203
203
  width: 100%;
204
204
  }
205
- .qd-crud-search[data-v-2cf11b71] > .t-card__body {
205
+ .qd-crud-search[data-v-664474ec] {
206
+ height: var(--aff4bb32);
207
+ }
208
+ .qd-crud-search[data-v-664474ec] > .t-card__body {
209
+ height: 100%;
210
+ }
211
+ .qd-crud-search[data-v-664474ec] > .t-card__body .qd-form,
212
+ .qd-crud-search[data-v-664474ec] > .t-card__body .qd-grid {
206
213
  height: 100%;
207
214
  }
208
- .qd-crud-table[data-v-16c4284a] {
215
+ .qd-crud-search__more[data-v-664474ec] .t-icon {
216
+ transition: transform cubic-bezier(0.38, 0, 0.24, 1) 0.2s;
217
+ }
218
+ .qd-crud-search__more--expand[data-v-664474ec] .t-icon {
219
+ transform: rotate(-180deg);
220
+ }
221
+ .qd-crud-table[data-v-c8c04099] {
209
222
  width: 100%;
210
223
  height: 100%;
211
224
  display: flex;
212
225
  flex-direction: column;
213
226
  }
214
- .qd-crud-table > .qd-crud-search:not(.qd-crud-search--hide) + .qd-crud-table__body[data-v-16c4284a] {
227
+ .qd-crud-table > .qd-crud-search:not(.qd-crud-search--hide) + .qd-crud-table__body[data-v-c8c04099] {
215
228
  margin-top: var(--td-comp-margin-l);
216
229
  }
217
- .qd-crud-table > .qd-crud-search[data-v-16c4284a] .qd-form {
230
+ .qd-crud-table > .qd-crud-search[data-v-c8c04099] .qd-form {
218
231
  display: flex;
219
232
  align-items: flex-end;
220
233
  flex-flow: row wrap;
221
234
  }
222
- .qd-crud-table > .qd-crud-search[data-v-16c4284a] .qd-form > .qd-grid {
235
+ .qd-crud-table > .qd-crud-search[data-v-c8c04099] .qd-form > .qd-grid {
223
236
  flex: 1 1 0;
224
237
  overflow: hidden;
225
238
  margin-right: var(--td-comp-margin-l);
226
239
  }
227
- .qd-crud-table__body[data-v-16c4284a] {
228
- flex: 1 1 0;
229
- overflow: hidden;
240
+ .qd-crud-table__body[data-v-c8c04099] {
241
+ flex: auto;
230
242
  }
231
- .qd-crud-table__body[data-v-16c4284a] > .t-card__body {
243
+ .qd-crud-table__body[data-v-c8c04099] > .t-card__body {
232
244
  height: 100%;
245
+ min-height: 443px;
233
246
  display: flex;
234
247
  flex-direction: column;
235
248
  }
236
- .qd-crud-table__body[data-v-16c4284a] > .t-card__body > .qd-service-table {
249
+ .qd-crud-table__body[data-v-c8c04099] > .t-card__body > .qd-service-table {
237
250
  flex: 1 1 0;
238
251
  overflow: hidden;
239
252
  }
240
- .qd-crud-table__toolbar[data-v-16c4284a] {
253
+ .qd-crud-table__toolbar[data-v-c8c04099] {
241
254
  display: flex;
242
255
  justify-content: space-between;
243
256
  }
244
- .qd-crud-table__toolbar + .qd-service-table[data-v-16c4284a] {
257
+ .qd-crud-table__toolbar + .qd-service-table[data-v-c8c04099] {
245
258
  margin-top: var(--td-comp-margin-l);
246
259
  }
247
- .qd-crud-table__toolbar-separator[data-v-16c4284a] {
260
+ .qd-crud-table__toolbar-separator[data-v-c8c04099] {
248
261
  display: inline-block;
249
262
  padding-left: var(--td-comp-paddingLR-s);
250
263
  }
251
- .qd-crud-list[data-v-66a035f0] {
264
+ .qd-crud-list[data-v-b27a5389] {
252
265
  width: 100%;
253
266
  height: 100%;
254
267
  display: flex;
255
268
  flex-direction: column;
256
269
  }
257
- .qd-crud-list__header + .qd-service-list[data-v-66a035f0] {
270
+ .qd-crud-list__header + .qd-service-list[data-v-b27a5389] {
258
271
  margin-top: var(--td-comp-margin-l);
259
272
  }
260
- .qd-crud-list .qd-crud-search + .qd-crud-list__toolbar[data-v-66a035f0] {
273
+ .qd-crud-list .qd-crud-search + .qd-crud-list__toolbar[data-v-b27a5389] {
261
274
  margin-top: var(--td-comp-margin-l);
262
275
  }
263
- .qd-crud-list__header > .qd-crud-search[data-v-66a035f0] .qd-form {
276
+ .qd-crud-list__header > .qd-crud-search[data-v-b27a5389] .qd-form {
264
277
  display: flex;
265
278
  align-items: flex-end;
266
279
  flex-flow: row wrap;
267
280
  }
268
- .qd-crud-list__header > .qd-crud-search[data-v-66a035f0] .qd-form > .qd-grid {
281
+ .qd-crud-list__header > .qd-crud-search[data-v-b27a5389] .qd-form > .qd-grid {
269
282
  flex: 1 1 0;
270
283
  overflow: hidden;
271
284
  margin-right: var(--td-comp-margin-l);
272
285
  }
273
- .qd-crud-list__toolbar[data-v-66a035f0] {
286
+ .qd-crud-list__toolbar[data-v-b27a5389] {
274
287
  display: flex;
275
288
  justify-content: space-between;
276
289
  }
277
- .qd-crud-list > .qd-service-list[data-v-66a035f0] {
290
+ .qd-crud-list > .qd-service-list[data-v-b27a5389] {
278
291
  flex: 1 1 0;
279
292
  }
280
- .qd-crud-list--has-scroll-target > .qd-service-list[data-v-66a035f0] {
293
+ .qd-crud-list--has-scroll-target > .qd-service-list[data-v-b27a5389] {
281
294
  flex: auto;
282
295
  }
283
- .qd-crud-list--has-scroll-target .qd-crud-list__header[data-v-66a035f0] {
296
+ .qd-crud-list--has-scroll-target .qd-crud-list__header[data-v-b27a5389] {
284
297
  position: sticky;
285
298
  top: 0;
286
299
  z-index: 10;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qidian-vue-ui",
3
- "version": "1.1.26",
3
+ "version": "1.1.28",
4
4
  "description": "基于 TDesign 的 QiDian Vue UI 组件库",
5
5
  "author": "qidian",
6
6
  "license": "MIT",