@kp-ui/lowcode-pc 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/assets/styles/style.css +50 -48
  2. package/core/src/hooks/useField.js +1 -0
  3. package/core/src/hooks/useField.js.map +1 -1
  4. package/core/src/store/useTableColumnStore.js +42 -0
  5. package/core/src/store/useTableColumnStore.js.map +1 -0
  6. package/package.json +1 -1
  7. package/src/components/desginer/form-widget/container-widget/useTableWidget.js +60 -4
  8. package/src/components/desginer/form-widget/container-widget/useTableWidget.js.map +1 -1
  9. package/src/components/desginer/form-widget/container-widget/vf-dialog-widget.vue2.js +1 -1
  10. package/src/components/desginer/widget-panel/advanced/data-table.js +1 -1
  11. package/src/components/desginer/widget-panel/advanced/data-table.js.map +1 -1
  12. package/src/components/field-widget/button-list-widget.vue2.js +1 -1
  13. package/src/components/field-widget/diy-compontent-widget.vue2.js +1 -1
  14. package/src/components/field-widget/diy-compontent-widget.vue2.js.map +1 -1
  15. package/src/components/form-render/container-items/data-table-widget.vue.js +1 -1
  16. package/src/components/form-render/container-items/data-table-widget.vue2.js +25 -68
  17. package/src/components/form-render/container-items/data-table-widget.vue2.js.map +1 -1
  18. package/src/components/form-render/container-items/grid-sub-form-widget.vue.js +1 -1
  19. package/src/components/form-render/container-items/grid-sub-form-widget.vue2.js +9 -8
  20. package/src/components/form-render/container-items/grid-sub-form-widget.vue2.js.map +1 -1
  21. package/src/components/public/ActionButtonListRender.vue.js +50 -127
  22. package/src/components/public/ActionButtonListRender.vue.js.map +1 -1
  23. package/src/components/public/ActionButtonListRender.vue2.js +130 -0
  24. package/src/components/public/{ActionButtonListRender.vue3.js.map → ActionButtonListRender.vue2.js.map} +1 -1
  25. package/src/components/public/ConfigView/CustomPageRender.vue.js +1 -1
  26. package/src/components/public/CustomerModal/CustomerModal.vue2.js +1 -1
  27. package/src/components/public/DataTableColumnDialog.vue.js +1 -1
  28. package/src/components/public/DataTableColumnDialog.vue2.js +103 -32
  29. package/src/components/public/DataTableColumnDialog.vue2.js.map +1 -1
  30. package/src/components/public/DynamicDialog.vue.js +1 -1
  31. package/src/components/render/index.vue2.js +1 -1
  32. package/stats.html +1 -1
  33. package/src/components/public/ActionButtonListRender.vue3.js +0 -53
@@ -1,9 +1,12 @@
1
- import { defineComponent, mergeModels, useModel, ref, computed, watch, resolveComponent, createBlock, openBlock, unref, withCtx, createVNode, createElementVNode, toDisplayString, createCommentVNode, createTextVNode, createElementBlock, Fragment, renderList, normalizeClass } from "vue";
1
+ import { defineComponent, mergeModels, useModel, ref, computed, watch, resolveComponent, createBlock, openBlock, unref, withCtx, createVNode, createElementVNode, toDisplayString, createCommentVNode, createTextVNode, createElementBlock, Fragment, renderList, normalizeStyle, normalizeClass } from "vue";
2
2
  import { SearchOutlined } from "@ant-design/icons-vue";
3
3
  import { useI18n } from "@kp-ui/i18n";
4
4
  import { cloneDeep } from "lodash-es";
5
5
  import { TpfModal, SvgIcon } from "tmgc2-share";
6
6
  import Draggable from "vuedraggable";
7
+ import TpfDelConfirm from "tmgc2-share/src/components/TpfModal/TpfDelConfirm";
8
+ import { message } from "ant-design-vue";
9
+ import { useTableColumnStore } from "../../../core/src/store/useTableColumnStore.js";
7
10
  const _hoisted_1 = { class: "col-left-title" };
8
11
  const _hoisted_2 = { class: "title" };
9
12
  const _hoisted_3 = { class: "search" };
@@ -16,7 +19,9 @@ const _hoisted_9 = { class: "col-right-content-item-right" };
16
19
  const _sfc_main = /* @__PURE__ */ defineComponent({
17
20
  __name: "DataTableColumnDialog",
18
21
  props: /* @__PURE__ */ mergeModels({
19
- columns: { default: () => [] }
22
+ columns: { default: () => [] },
23
+ pageCode: { default: "" },
24
+ tableId: { default: "" }
20
25
  }, {
21
26
  "visible": { type: Boolean, ...{ default: false } },
22
27
  "visibleModifiers": {}
@@ -24,12 +29,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
24
29
  emits: /* @__PURE__ */ mergeModels(["update"], ["update:visible"]),
25
30
  setup(__props, { expose: __expose, emit: __emit }) {
26
31
  const { t } = useI18n();
32
+ const tableColumnStore = useTableColumnStore();
27
33
  const props = __props;
28
34
  const emit = __emit;
29
35
  const visible = useModel(__props, "visible");
30
36
  const searchKey = ref("");
31
37
  const tableColumns = ref([]);
32
38
  const rightShowColumns = ref([]);
39
+ const initColumn = ref([]);
40
+ const saveColumnConfig = () => {
41
+ const storageKey = props.pageCode || props.tableId;
42
+ if (!storageKey) return;
43
+ const columnList = mergeColumns();
44
+ tableColumnStore.saveColumnList(storageKey, columnList);
45
+ };
33
46
  const leftShowColumns = computed(() => {
34
47
  if (!searchKey.value) return tableColumns.value;
35
48
  return tableColumns.value.filter((item) => {
@@ -58,32 +71,43 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
58
71
  return 0;
59
72
  });
60
73
  };
61
- const resetColumns = () => {
62
- tableColumns.value = cloneDeep(props.columns);
74
+ const mergeColumns = () => {
75
+ const selectList = unref(rightShowColumns);
76
+ const unSelectList = [];
77
+ unref(initColumn).forEach((item) => {
78
+ const flag = unref(selectList).some((it) => it.dataIndex === item.dataIndex);
79
+ if (!flag) {
80
+ unSelectList.push({ ...item, visible: false });
81
+ }
82
+ });
83
+ const result = [...selectList, ...unSelectList];
84
+ return result.map((item, index) => ({
85
+ ...item,
86
+ displayOrdinal: index
87
+ }));
88
+ };
89
+ const restColum = () => {
90
+ tableColumns.value = cloneDeep(unref(initColumn));
63
91
  getRightShowColumns();
64
92
  updateCheckAll();
65
93
  };
94
+ const restPageJson = async () => {
95
+ const storageKey = props.pageCode || props.tableId;
96
+ if (!storageKey) {
97
+ message.warning(t("lang.未配置 pageCode 或 tableId"));
98
+ return;
99
+ }
100
+ await TpfDelConfirm({ content: t("lang.确定清除缓存记录吗") });
101
+ tableColumnStore.clearTableConfig(storageKey);
102
+ message.success(t("lang.清除成功"));
103
+ window.location.reload();
104
+ };
66
105
  const onCancel = () => {
67
106
  visible.value = false;
68
107
  };
69
108
  const handleOk = () => {
70
- const newTableColumns = [];
71
- rightShowColumns.value.forEach((rightItem) => {
72
- const found = tableColumns.value.find((item) => item.dataIndex === rightItem.dataIndex);
73
- if (found) {
74
- found.visible = true;
75
- found.fixed = rightItem.fixed;
76
- newTableColumns.push({ ...found });
77
- }
78
- });
79
- tableColumns.value.forEach((item) => {
80
- if (!rightShowColumns.value.find((right) => right.dataIndex === item.dataIndex)) {
81
- item.visible = false;
82
- delete item.fixed;
83
- newTableColumns.push({ ...item });
84
- }
85
- });
86
- emit("update", newTableColumns);
109
+ saveColumnConfig();
110
+ emit("update", mergeColumns());
87
111
  visible.value = false;
88
112
  };
89
113
  const changeCheckAll = (e) => {
@@ -129,11 +153,36 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
129
153
  const open = () => {
130
154
  visible.value = true;
131
155
  };
156
+ const restoreColumnFromStorage = () => {
157
+ const storageKey = props.pageCode || props.tableId;
158
+ if (!storageKey || !tableColumnStore.hasTableConfig(storageKey)) {
159
+ return cloneDeep(props.columns);
160
+ }
161
+ const storedColumnList = tableColumnStore.getColumnList(storageKey);
162
+ if (storedColumnList.length === 0) {
163
+ return cloneDeep(props.columns);
164
+ }
165
+ const columns = cloneDeep(props.columns);
166
+ return columns.map((col) => {
167
+ const stored = storedColumnList.find((item) => item.dataIndex === col.dataIndex);
168
+ if (stored) {
169
+ return {
170
+ ...col,
171
+ visible: stored.visible !== false,
172
+ fixed: stored.fixed,
173
+ displayOrdinal: stored.displayOrdinal
174
+ };
175
+ }
176
+ return col;
177
+ });
178
+ };
132
179
  watch(
133
180
  () => visible.value,
134
181
  async (val) => {
135
182
  if (val) {
136
- tableColumns.value = cloneDeep(props.columns);
183
+ const columnsConfig = restoreColumnFromStorage();
184
+ tableColumns.value = columnsConfig;
185
+ initColumn.value = columnsConfig;
137
186
  getRightShowColumns();
138
187
  sortRightColumns();
139
188
  updateCheckAll();
@@ -141,7 +190,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
141
190
  },
142
191
  { immediate: true }
143
192
  );
144
- __expose({ open, resetColumns });
193
+ __expose({ open, restColum });
145
194
  return (_ctx, _cache) => {
146
195
  const _component_a_input = resolveComponent("a-input");
147
196
  const _component_a_checkbox = resolveComponent("a-checkbox");
@@ -156,6 +205,26 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
156
205
  width: "800px",
157
206
  destroyOnClose: ""
158
207
  }, {
208
+ footerLeft: withCtx(() => [
209
+ createVNode(_component_a_button, {
210
+ class: "tpf-button",
211
+ onClick: restColum
212
+ }, {
213
+ default: withCtx(() => [
214
+ createTextVNode(toDisplayString(unref(t)("lang.重置")), 1)
215
+ ]),
216
+ _: 1
217
+ }),
218
+ createVNode(_component_a_button, {
219
+ class: "tpf-button",
220
+ onClick: restPageJson
221
+ }, {
222
+ default: withCtx(() => [
223
+ createTextVNode(toDisplayString(unref(t)("lang.清除缓存记录")), 1)
224
+ ]),
225
+ _: 1
226
+ })
227
+ ]),
159
228
  footerRight: withCtx(() => [
160
229
  createVNode(_component_a_button, {
161
230
  class: "tpf-button",
@@ -184,7 +253,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
184
253
  }, {
185
254
  default: withCtx(() => [
186
255
  createVNode(_component_a_col, {
187
- span: 12,
256
+ span: 17,
188
257
  class: "col-left"
189
258
  }, {
190
259
  default: withCtx(() => [
@@ -229,7 +298,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
229
298
  (openBlock(true), createElementBlock(Fragment, null, renderList(leftShowColumns.value, (item) => {
230
299
  return openBlock(), createBlock(_component_a_col, {
231
300
  key: item.dataIndex,
232
- span: 12
301
+ span: 6
233
302
  }, {
234
303
  default: withCtx(() => [
235
304
  createVNode(_component_a_checkbox, {
@@ -261,7 +330,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
261
330
  _: 1
262
331
  }),
263
332
  createVNode(_component_a_col, {
264
- span: 12,
333
+ span: 7,
265
334
  class: "col-right"
266
335
  }, {
267
336
  default: withCtx(() => [
@@ -292,19 +361,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
292
361
  move: "",
293
362
  shadow: ""
294
363
  }),
295
- createElementVNode("span", _hoisted_8, toDisplayString(item.title), 1),
364
+ createElementVNode("span", _hoisted_8, toDisplayString(item.title), 1)
365
+ ]),
366
+ createElementVNode("div", _hoisted_9, [
296
367
  createVNode(unref(SvgIcon), {
297
- size: "18",
368
+ size: "24",
298
369
  type: "icon-ding",
299
370
  class: normalizeClass(["icon-ding", item.fixed === "left" && "showIcon"]),
300
371
  cursor: "",
301
372
  shadow: "",
373
+ activeBackGround: item.fixed === "left" ? "" : "#e8e9e9",
374
+ style: normalizeStyle(`color:${item.fixed === "left" ? "var(--ant-primary-color)" : "#b0b4b7"}`),
302
375
  onClick: ($event) => toggleFixed(item)
303
- }, null, 8, ["class", "onClick"])
304
- ]),
305
- createElementVNode("div", _hoisted_9, [
376
+ }, null, 8, ["class", "activeBackGround", "style", "onClick"]),
306
377
  createVNode(unref(SvgIcon), {
307
- size: "18",
378
+ size: "24",
308
379
  type: "icon-guanbi",
309
380
  cursor: "",
310
381
  shadow: "",
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableColumnDialog.vue2.js","sources":["../../../../src/components/public/DataTableColumnDialog.vue"],"sourcesContent":["<template>\n <TpfModal v-model:visible=\"visible\" :title=\"t('lang.列管理')\" width=\"800px\" destroyOnClose>\n <a-row :gutter=\"10\" class=\"column-row\">\n <!-- 左侧:可选字段 -->\n <a-col :span=\"12\" class=\"col-left\">\n <div class=\"col-left-title\">\n <div class=\"title\">\n <span>{{ t('lang.可选字段') }}</span>\n <span>({{ leftShowColumns.length }}{{ t('lang.个') }}) </span>\n </div>\n <div class=\"search\">\n <a-input\n :placeholder=\"t('lang.请搜索')\"\n size=\"small\"\n allow-clear\n v-model:value=\"searchKey\"\n >\n <template #prefix>\n <SearchOutlined />\n </template>\n </a-input>\n </div>\n </div>\n <div class=\"col-left-content\">\n <a-checkbox\n v-if=\"!!tableColumns.length\"\n v-model:checked=\"checkAll\"\n @change=\"changeCheckAll\"\n :indeterminate=\"indeterminate\"\n >\n {{ t('lang.全选') }}\n </a-checkbox>\n <a-row :gutter=\"[10, 10]\" class=\"checkbox-row\">\n <a-col v-for=\"item in leftShowColumns\" :key=\"item.dataIndex\" :span=\"12\">\n <a-checkbox\n v-model:checked=\"item.visible\"\n @change=\"onchangeCheck(item)\"\n >\n <a-tooltip :title=\"item.title\">\n {{ item.title }}\n </a-tooltip>\n </a-checkbox>\n </a-col>\n </a-row>\n </div>\n </a-col>\n\n <!-- 右侧:已选字段 -->\n <a-col :span=\"12\" class=\"col-right\">\n <div class=\"col-right-title\">\n <div class=\"title\">\n <span>{{ t('lang.已选字段') }}</span>\n <span>({{ rightShowColumns.length }}{{ t('lang.个') }}) </span>\n </div>\n </div>\n <Draggable\n tag=\"div\"\n :list=\"rightShowColumns\"\n class=\"col-right-content\"\n item-key=\"dataIndex\"\n handle=\".drag-handle\"\n animation=\"150\"\n >\n <template #item=\"{ element: item, index }\">\n <div class=\"col-right-content-item\" :key=\"item.dataIndex\">\n <div class=\"col-right-content-item-left\">\n <SvgIcon\n size=\"24\"\n type=\"icon-move1\"\n class=\"drag-handle icon-move1\"\n move\n shadow\n />\n <span class=\"title\">{{ item.title }}</span>\n <SvgIcon\n size=\"18\"\n type=\"icon-ding\"\n :class=\"['icon-ding', item.fixed === 'left' && 'showIcon']\"\n cursor\n shadow\n @click=\"toggleFixed(item)\"\n />\n </div>\n <div class=\"col-right-content-item-right\">\n <SvgIcon\n size=\"18\"\n type=\"icon-guanbi\"\n cursor\n shadow\n @click=\"removeColumn(item, index)\"\n />\n </div>\n </div>\n </template>\n </Draggable>\n </a-col>\n </a-row>\n\n <template #footerRight>\n <a-button class=\"tpf-button\" @click=\"onCancel\">{{ t('lang.取消') }} </a-button>\n <a-button class=\"tpf-button\" type=\"primary\" @click=\"handleOk\">\n {{ t('lang.保存') }}\n </a-button>\n </template>\n </TpfModal>\n</template>\n\n<script setup lang=\"ts\" name=\"DataTableColumnDialog\">\n import { ref, computed, watch } from 'vue';\n import { SearchOutlined } from '@ant-design/icons-vue';\n import { useI18n } from '@kp-ui/i18n';\n import { cloneDeep } from 'lodash-es';\n import { SvgIcon, TpfModal } from 'tmgc2-share';\n import Draggable from 'vuedraggable';\n\n const { t } = useI18n();\n\n interface ColumnType {\n dataIndex: string;\n title: string;\n visible?: boolean;\n fixed?: 'left' | 'right' | boolean;\n [key: string]: any;\n }\n\n interface Props {\n columns?: ColumnType[];\n }\n\n const props = withDefaults(defineProps<Props>(), {\n columns: () => []\n });\n\n const emit = defineEmits<{\n (e: 'update', columns: ColumnType[]): void;\n }>();\n\n const visible = defineModel<boolean>('visible', { default: false });\n\n const searchKey = ref('');\n\n // 可选字段列表\n const tableColumns = ref<ColumnType[]>([]);\n // 已选字段列表\n const rightShowColumns = ref<ColumnType[]>([]);\n\n // 左侧可筛选的字段\n const leftShowColumns = computed(() => {\n if (!searchKey.value) return tableColumns.value;\n return tableColumns.value.filter(item => {\n return item.title && item.title.toLowerCase().includes(searchKey.value.toLowerCase());\n });\n });\n\n // 全选相关\n const checkAll = ref(false);\n const indeterminate = ref(false);\n\n // 更新全选状态\n const updateCheckAll = () => {\n const visibleColumns = leftShowColumns.value.filter(item => item.visible);\n checkAll.value =\n visibleColumns.length === leftShowColumns.value.length &&\n leftShowColumns.value.length > 0;\n indeterminate.value =\n visibleColumns.length > 0 && visibleColumns.length < leftShowColumns.value.length;\n };\n\n // 获取已选字段\n const getRightShowColumns = () => {\n rightShowColumns.value = [];\n tableColumns.value.forEach(item => {\n if (item.visible) {\n rightShowColumns.value.push(item);\n }\n });\n };\n\n // 排序:固定列在前\n const sortRightColumns = () => {\n rightShowColumns.value.sort((a, b) => {\n if (a.fixed === 'left' && b.fixed !== 'left') return -1;\n if (a.fixed !== 'left' && b.fixed === 'left') return 1;\n return 0;\n });\n };\n\n // 重置\n const resetColumns = () => {\n tableColumns.value = cloneDeep(props.columns);\n getRightShowColumns();\n updateCheckAll();\n };\n\n // 取消\n const onCancel = () => {\n visible.value = false;\n };\n\n // 确定\n const handleOk = () => {\n // 根据 rightShowColumns 的顺序更新 tableColumns\n const newTableColumns: ColumnType[] = [];\n\n // 先添加可见列(按 rightShowColumns 顺序)\n rightShowColumns.value.forEach(rightItem => {\n const found = tableColumns.value.find(item => item.dataIndex === rightItem.dataIndex);\n if (found) {\n found.visible = true;\n found.fixed = rightItem.fixed;\n newTableColumns.push({ ...found });\n }\n });\n\n // 再添加隐藏列\n tableColumns.value.forEach(item => {\n if (!rightShowColumns.value.find(right => right.dataIndex === item.dataIndex)) {\n item.visible = false;\n delete item.fixed;\n newTableColumns.push({ ...item });\n }\n });\n\n emit('update', newTableColumns);\n visible.value = false;\n };\n\n // 全选/取消全选\n const changeCheckAll = (e: any) => {\n const checked = e.target.checked;\n checkAll.value = checked;\n indeterminate.value = false;\n tableColumns.value.forEach(item => {\n item.visible = checked;\n });\n getRightShowColumns();\n };\n\n // 单选\n const onchangeCheck = (row: ColumnType) => {\n const index = rightShowColumns.value.findIndex(item => item.dataIndex === row.dataIndex);\n if (row.visible) {\n if (index === -1) {\n rightShowColumns.value.push(row);\n }\n } else {\n if (index > -1) {\n rightShowColumns.value.splice(index, 1);\n }\n }\n updateCheckAll();\n };\n\n // 移除列\n const removeColumn = (row: ColumnType, index: number) => {\n row.visible = false;\n delete row.fixed;\n rightShowColumns.value.splice(index, 1);\n updateCheckAll();\n };\n\n // 切换固定\n const toggleFixed = (row: ColumnType) => {\n if (row.fixed === 'left') {\n delete row.fixed;\n } else {\n // 最多固定 2 列\n const fixedCount = rightShowColumns.value.filter(item => item.fixed === 'left').length;\n if (fixedCount >= 2) {\n return;\n }\n row.fixed = 'left';\n }\n sortRightColumns();\n };\n\n // 打开弹窗\n const open = () => {\n visible.value = true;\n };\n\n // 监听弹窗显示\n watch(\n () => visible.value,\n async val => {\n if (val) {\n // 初始化列数据\n tableColumns.value = cloneDeep(props.columns);\n getRightShowColumns();\n sortRightColumns();\n updateCheckAll();\n }\n },\n { immediate: true }\n );\n\n defineExpose({ open, resetColumns });\n</script>\n\n<style lang=\"less\" scoped>\n .column-row {\n height: 400px;\n display: flex;\n\n .col-left,\n .col-right {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .col-left {\n padding-left: 20px !important;\n padding-right: 10px !important;\n border-right: 1px solid #f0f0f0;\n }\n\n .col-right {\n padding-left: 10px !important;\n }\n\n .col-left-title,\n .col-right-title {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n\n .title {\n font-weight: 500;\n color: #333;\n }\n\n .search {\n width: 150px;\n }\n }\n\n .col-left-content,\n .col-right-content {\n flex: 1 0 0;\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n .checkbox-row {\n margin-top: 10px;\n }\n\n .col-right-content-item {\n margin-right: 5px;\n height: 32px;\n display: flex;\n align-items: center;\n\n .col-right-content-item-left {\n flex: 1 0 0;\n display: flex;\n align-items: center;\n\n .drag-handle {\n cursor: move;\n margin-right: 8px;\n flex-shrink: 0;\n }\n\n .title {\n flex: 1 0 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 14px;\n }\n\n .icon-ding {\n margin-left: 8px;\n flex-shrink: 0;\n opacity: 0;\n transition: opacity 0.2s;\n\n &:hover {\n opacity: 1;\n }\n\n &.showIcon {\n opacity: 1;\n }\n }\n }\n\n &:hover {\n .icon-ding {\n opacity: 1;\n }\n }\n\n .col-right-content-item-right {\n flex: 1 0 0;\n display: flex;\n justify-content: flex-end;\n padding-right: 10px;\n\n :deep(.icon-guanbi) {\n opacity: 0.6;\n\n &:hover {\n opacity: 1;\n }\n }\n }\n }\n }\n</style>\n"],"names":["_useModel","_createBlock","_unref","_createVNode","_createElementVNode","_toDisplayString","_createElementBlock","_Fragment","_renderList","_createTextVNode","_withCtx","_normalizeClass"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAmHI,UAAM,EAAE,EAAA,IAAM,QAAA;AAcd,UAAM,QAAQ;AAId,UAAM,OAAO;AAIb,UAAM,UAAUA,SAAoB,SAAC,SAA6B;AAElE,UAAM,YAAY,IAAI,EAAE;AAGxB,UAAM,eAAe,IAAkB,EAAE;AAEzC,UAAM,mBAAmB,IAAkB,EAAE;AAG7C,UAAM,kBAAkB,SAAS,MAAM;AACnC,UAAI,CAAC,UAAU,MAAO,QAAO,aAAa;AAC1C,aAAO,aAAa,MAAM,OAAO,CAAA,SAAQ;AACrC,eAAO,KAAK,SAAS,KAAK,MAAM,cAAc,SAAS,UAAU,MAAM,aAAa;AAAA,MACxF,CAAC;AAAA,IACL,CAAC;AAGD,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,gBAAgB,IAAI,KAAK;AAG/B,UAAM,iBAAiB,MAAM;AACzB,YAAM,iBAAiB,gBAAgB,MAAM,OAAO,CAAA,SAAQ,KAAK,OAAO;AACxE,eAAS,QACL,eAAe,WAAW,gBAAgB,MAAM,UAChD,gBAAgB,MAAM,SAAS;AACnC,oBAAc,QACV,eAAe,SAAS,KAAK,eAAe,SAAS,gBAAgB,MAAM;AAAA,IACnF;AAGA,UAAM,sBAAsB,MAAM;AAC9B,uBAAiB,QAAQ,CAAA;AACzB,mBAAa,MAAM,QAAQ,CAAA,SAAQ;AAC/B,YAAI,KAAK,SAAS;AACd,2BAAiB,MAAM,KAAK,IAAI;AAAA,QACpC;AAAA,MACJ,CAAC;AAAA,IACL;AAGA,UAAM,mBAAmB,MAAM;AAC3B,uBAAiB,MAAM,KAAK,CAAC,GAAG,MAAM;AAClC,YAAI,EAAE,UAAU,UAAU,EAAE,UAAU,OAAQ,QAAO;AACrD,YAAI,EAAE,UAAU,UAAU,EAAE,UAAU,OAAQ,QAAO;AACrD,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AAGA,UAAM,eAAe,MAAM;AACvB,mBAAa,QAAQ,UAAU,MAAM,OAAO;AAC5C,0BAAA;AACA,qBAAA;AAAA,IACJ;AAGA,UAAM,WAAW,MAAM;AACnB,cAAQ,QAAQ;AAAA,IACpB;AAGA,UAAM,WAAW,MAAM;AAEnB,YAAM,kBAAgC,CAAA;AAGtC,uBAAiB,MAAM,QAAQ,CAAA,cAAa;AACxC,cAAM,QAAQ,aAAa,MAAM,KAAK,UAAQ,KAAK,cAAc,UAAU,SAAS;AACpF,YAAI,OAAO;AACP,gBAAM,UAAU;AAChB,gBAAM,QAAQ,UAAU;AACxB,0BAAgB,KAAK,EAAE,GAAG,OAAO;AAAA,QACrC;AAAA,MACJ,CAAC;AAGD,mBAAa,MAAM,QAAQ,CAAA,SAAQ;AAC/B,YAAI,CAAC,iBAAiB,MAAM,KAAK,WAAS,MAAM,cAAc,KAAK,SAAS,GAAG;AAC3E,eAAK,UAAU;AACf,iBAAO,KAAK;AACZ,0BAAgB,KAAK,EAAE,GAAG,MAAM;AAAA,QACpC;AAAA,MACJ,CAAC;AAED,WAAK,UAAU,eAAe;AAC9B,cAAQ,QAAQ;AAAA,IACpB;AAGA,UAAM,iBAAiB,CAAC,MAAW;AAC/B,YAAM,UAAU,EAAE,OAAO;AACzB,eAAS,QAAQ;AACjB,oBAAc,QAAQ;AACtB,mBAAa,MAAM,QAAQ,CAAA,SAAQ;AAC/B,aAAK,UAAU;AAAA,MACnB,CAAC;AACD,0BAAA;AAAA,IACJ;AAGA,UAAM,gBAAgB,CAAC,QAAoB;AACvC,YAAM,QAAQ,iBAAiB,MAAM,UAAU,UAAQ,KAAK,cAAc,IAAI,SAAS;AACvF,UAAI,IAAI,SAAS;AACb,YAAI,UAAU,IAAI;AACd,2BAAiB,MAAM,KAAK,GAAG;AAAA,QACnC;AAAA,MACJ,OAAO;AACH,YAAI,QAAQ,IAAI;AACZ,2BAAiB,MAAM,OAAO,OAAO,CAAC;AAAA,QAC1C;AAAA,MACJ;AACA,qBAAA;AAAA,IACJ;AAGA,UAAM,eAAe,CAAC,KAAiB,UAAkB;AACrD,UAAI,UAAU;AACd,aAAO,IAAI;AACX,uBAAiB,MAAM,OAAO,OAAO,CAAC;AACtC,qBAAA;AAAA,IACJ;AAGA,UAAM,cAAc,CAAC,QAAoB;AACrC,UAAI,IAAI,UAAU,QAAQ;AACtB,eAAO,IAAI;AAAA,MACf,OAAO;AAEH,cAAM,aAAa,iBAAiB,MAAM,OAAO,UAAQ,KAAK,UAAU,MAAM,EAAE;AAChF,YAAI,cAAc,GAAG;AACjB;AAAA,QACJ;AACA,YAAI,QAAQ;AAAA,MAChB;AACA,uBAAA;AAAA,IACJ;AAGA,UAAM,OAAO,MAAM;AACf,cAAQ,QAAQ;AAAA,IACpB;AAGA;AAAA,MACI,MAAM,QAAQ;AAAA,MACd,OAAM,QAAO;AACT,YAAI,KAAK;AAEL,uBAAa,QAAQ,UAAU,MAAM,OAAO;AAC5C,8BAAA;AACA,2BAAA;AACA,yBAAA;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,EAAE,WAAW,KAAA;AAAA,IAAK;AAGtB,aAAa,EAAE,MAAM,cAAc;;;;;;;;0BAvSnCC,YAuGWC,MAAA,QAAA,GAAA;AAAA,QAvGO,SAAS,QAAA;AAAA,kEAAA,QAAO,QAAA;AAAA,QAAG,OAAOA,MAAA,CAAA,EAAC,UAAA;AAAA,QAAc,OAAM;AAAA,QAAQ,gBAAA;AAAA,MAAA;QAiG1D,qBACP,MAA6E;AAAA,UAA7EC,YAA6E,qBAAA;AAAA,YAAnE,OAAM;AAAA,YAAc,SAAO;AAAA,UAAA;6BAAU,MAAkB;AAAA,8CAAfD,MAAA,CAAA,EAAC,SAAA,CAAA,GAAA,CAAA;AAAA,YAAA;;;UACnDC,YAEW,qBAAA;AAAA,YAFD,OAAM;AAAA,YAAa,MAAK;AAAA,YAAW,SAAO;AAAA,UAAA;6BAChD,MAAkB;AAAA,8CAAfD,MAAA,CAAA,EAAC,SAAA,CAAA,GAAA,CAAA;AAAA,YAAA;;;;yBAnGZ,MA8FQ;AAAA,UA9FRC,YA8FQ,kBAAA;AAAA,YA9FA,QAAQ;AAAA,YAAI,OAAM;AAAA,UAAA;6BAEtB,MAyCQ;AAAA,cAzCRA,YAyCQ,kBAAA;AAAA,gBAzCA,MAAM;AAAA,gBAAI,OAAM;AAAA,cAAA;iCACpB,MAiBM;AAAA,kBAjBNC,mBAiBM,OAjBN,YAiBM;AAAA,oBAhBFA,mBAGM,OAHN,YAGM;AAAA,sBAFFA,mBAAiC,8BAAxBF,MAAA,CAAA,EAAC,WAAA,CAAA,GAAA,CAAA;AAAA,sBACVE,mBAA6D,QAAA,MAAvD,MAACC,gBAAG,gBAAA,MAAgB,MAAM,IAAAA,gBAAMH,MAAA,CAAA,EAAC,QAAA,CAAA,IAAa,MAAE,CAAA;AAAA,oBAAA;oBAE1DE,mBAWM,OAXN,YAWM;AAAA,sBAVFD,YASU,oBAAA;AAAA,wBARL,aAAaD,MAAA,CAAA,EAAC,UAAA;AAAA,wBACf,MAAK;AAAA,wBACL,eAAA;AAAA,wBACQ,OAAO,UAAA;AAAA,gFAAA,UAAS,QAAA;AAAA,sBAAA;wBAEb,gBACP,MAAkB;AAAA,0BAAlBC,YAAkBD,MAAA,cAAA,CAAA;AAAA,wBAAA;;;;;kBAKlCE,mBAqBM,OArBN,YAqBM;AAAA,oBAnBU,CAAA,CAAA,aAAA,MAAa,uBADzBH,YAOa,uBAAA;AAAA;sBALD,SAAS,SAAA;AAAA,gFAAA,SAAQ,QAAA;AAAA,sBACxB,UAAQ;AAAA,sBACR,eAAe,cAAA;AAAA,oBAAA;uCAEhB,MAAkB;AAAA,wDAAfC,MAAA,CAAA,EAAC,SAAA,CAAA,GAAA,CAAA;AAAA,sBAAA;;;oBAERC,YAWQ,kBAAA;AAAA,sBAXA,QAAQ,CAAA,IAAA,EAAA;AAAA,sBAAU,OAAM;AAAA,oBAAA;uCACrB,MAA+B;AAAA,0CAAtCG,mBASQC,UAAA,MAAAC,WATc,gBAAA,OAAe,CAAvB,SAAI;8CAAlBP,YASQ,kBAAA;AAAA,4BATgC,KAAK,KAAK;AAAA,4BAAY,MAAM;AAAA,0BAAA;6CAChE,MAOa;AAAA,8BAPbE,YAOa,uBAAA;AAAA,gCAND,SAAS,KAAK;AAAA,gCAAL,oBAAA,CAAA,WAAA,KAAK,UAAO;AAAA,gCAC5B,UAAM,CAAA,WAAE,cAAc,IAAI;AAAA,8BAAA;iDAE3B,MAEY;AAAA,kCAFZA,YAEY,sBAAA;AAAA,oCAFA,OAAO,KAAK;AAAA,kCAAA;qDACpB,MAAgB;AAAA,sCAAbM,gBAAAJ,gBAAA,KAAK,KAAK,GAAA,CAAA;AAAA,oCAAA;;;;;;;;;;;;;;;;;cASrCF,YA+CQ,kBAAA;AAAA,gBA/CA,MAAM;AAAA,gBAAI,OAAM;AAAA,cAAA;iCACpB,MAKM;AAAA,kBALNC,mBAKM,OALN,YAKM;AAAA,oBAJFA,mBAGM,OAHN,YAGM;AAAA,sBAFFA,mBAAiC,8BAAxBF,MAAA,CAAA,EAAC,WAAA,CAAA,GAAA,CAAA;AAAA,sBACVE,mBAA8D,QAAA,MAAxD,MAACC,gBAAG,iBAAA,MAAiB,MAAM,IAAAA,gBAAMH,MAAA,CAAA,EAAC,QAAA,CAAA,IAAa,MAAE,CAAA;AAAA,oBAAA;;kBAG/DC,YAuCYD,MAAA,SAAA,GAAA;AAAA,oBAtCR,KAAI;AAAA,oBACH,MAAM,iBAAA;AAAA,oBACP,OAAM;AAAA,oBACN,YAAS;AAAA,oBACT,QAAO;AAAA,oBACP,WAAU;AAAA,kBAAA;oBAEC,MAAIQ,QACX,CA4BM,EAAA,SA7BkB,MAAM,YAAK;AAAA,oCACnCJ,mBA4BM,OAAA;AAAA,wBA5BD,OAAM;AAAA,wBAA0B,KAAK,KAAK;AAAA,sBAAA;wBAC3CF,mBAiBM,OAjBN,YAiBM;AAAA,0BAhBFD,YAMED,MAAA,OAAA,GAAA;AAAA,4BALE,MAAK;AAAA,4BACL,MAAK;AAAA,4BACL,OAAM;AAAA,4BACN,MAAA;AAAA,4BACA,QAAA;AAAA,0BAAA;0BAEJE,mBAA2C,QAA3C,YAA2CC,gBAApB,KAAK,KAAK,GAAA,CAAA;AAAA,0BACjCF,YAOED,MAAA,OAAA,GAAA;AAAA,4BANE,MAAK;AAAA,4BACL,MAAK;AAAA,4BACJ,OAAKS,eAAA,CAAA,aAAgB,KAAK,UAAK,UAAA,UAAA,CAAA;AAAA,4BAChC,QAAA;AAAA,4BACA,QAAA;AAAA,4BACC,SAAK,CAAA,WAAE,YAAY,IAAI;AAAA,0BAAA;;wBAGhCP,mBAQM,OARN,YAQM;AAAA,0BAPFD,YAMED,MAAA,OAAA,GAAA;AAAA,4BALE,MAAK;AAAA,4BACL,MAAK;AAAA,4BACL,QAAA;AAAA,4BACA,QAAA;AAAA,4BACC,SAAK,CAAA,WAAE,aAAa,MAAM,KAAK;AAAA,0BAAA;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DataTableColumnDialog.vue2.js","sources":["../../../../src/components/public/DataTableColumnDialog.vue"],"sourcesContent":["<template>\n <TpfModal v-model:visible=\"visible\" :title=\"t('lang.列管理')\" width=\"800px\" destroyOnClose>\n <a-row :gutter=\"10\" class=\"column-row\">\n <!-- 左侧:可选字段 -->\n <a-col :span=\"17\" class=\"col-left\">\n <div class=\"col-left-title\">\n <div class=\"title\">\n <span>{{ t('lang.可选字段') }}</span>\n <span>({{ leftShowColumns.length }}{{ t('lang.个') }}) </span>\n </div>\n <div class=\"search\">\n <a-input\n :placeholder=\"t('lang.请搜索')\"\n size=\"small\"\n allow-clear\n v-model:value=\"searchKey\"\n >\n <template #prefix>\n <SearchOutlined />\n </template>\n </a-input>\n </div>\n </div>\n <div class=\"col-left-content\">\n <a-checkbox\n v-if=\"!!tableColumns.length\"\n v-model:checked=\"checkAll\"\n @change=\"changeCheckAll\"\n :indeterminate=\"indeterminate\"\n >\n {{ t('lang.全选') }}\n </a-checkbox>\n <a-row :gutter=\"[10, 10]\" class=\"checkbox-row\">\n <a-col v-for=\"item in leftShowColumns\" :key=\"item.dataIndex\" :span=\"6\">\n <a-checkbox\n v-model:checked=\"item.visible\"\n @change=\"onchangeCheck(item)\"\n >\n <a-tooltip :title=\"item.title\">\n {{ item.title }}\n </a-tooltip>\n </a-checkbox>\n </a-col>\n </a-row>\n </div>\n </a-col>\n\n <!-- 右侧:已选字段 -->\n <a-col :span=\"7\" class=\"col-right\">\n <div class=\"col-right-title\">\n <div class=\"title\">\n <span>{{ t('lang.已选字段') }}</span>\n <span>({{ rightShowColumns.length }}{{ t('lang.个') }}) </span>\n </div>\n </div>\n <Draggable\n tag=\"div\"\n :list=\"rightShowColumns\"\n class=\"col-right-content\"\n item-key=\"dataIndex\"\n handle=\".drag-handle\"\n animation=\"150\"\n >\n <template #item=\"{ element: item, index }\">\n <div class=\"col-right-content-item\" :key=\"item.dataIndex\">\n <div class=\"col-right-content-item-left\">\n <SvgIcon\n size=\"24\"\n type=\"icon-move1\"\n class=\"drag-handle icon-move1\"\n move\n shadow\n />\n <span class=\"title\">{{ item.title }}</span>\n </div>\n <div class=\"col-right-content-item-right\">\n <SvgIcon\n size=\"24\"\n type=\"icon-ding\"\n :class=\"['icon-ding', item.fixed === 'left' && 'showIcon']\"\n cursor\n shadow\n :activeBackGround=\"item.fixed === 'left' ? '' : '#e8e9e9'\"\n :style=\"`color:${\n item.fixed === 'left'\n ? 'var(--ant-primary-color)'\n : '#b0b4b7'\n }`\"\n @click=\"toggleFixed(item)\"\n />\n <SvgIcon\n size=\"24\"\n type=\"icon-guanbi\"\n cursor\n shadow\n @click=\"removeColumn(item, index)\"\n />\n </div>\n </div>\n </template>\n </Draggable>\n </a-col>\n </a-row>\n <template #footerLeft>\n <a-button class=\"tpf-button\" @click=\"restColum\"> {{ t('lang.重置') }} </a-button>\n <a-button class=\"tpf-button\" @click=\"restPageJson\">\n {{ t('lang.清除缓存记录') }}\n </a-button>\n </template>\n <template #footerRight>\n <a-button class=\"tpf-button\" @click=\"onCancel\">{{ t('lang.取消') }} </a-button>\n <a-button class=\"tpf-button\" type=\"primary\" @click=\"handleOk\">\n {{ t('lang.保存') }}\n </a-button>\n </template>\n </TpfModal>\n</template>\n\n<script setup lang=\"ts\" name=\"DataTableColumnDialog\">\n import { ref, computed, watch, unref } from 'vue';\n import { SearchOutlined } from '@ant-design/icons-vue';\n import { useI18n } from '@kp-ui/i18n';\n import { cloneDeep } from 'lodash-es';\n import { SvgIcon, TpfModal } from 'tmgc2-share';\n import Draggable from 'vuedraggable';\n import TpfDelConfirm from 'tmgc2-share/src/components/TpfModal/TpfDelConfirm';\n import { message } from 'ant-design-vue';\n import { useTableColumnStore, TableColumnConfig } from '@kp-ui/lowcode-core';\n\n const { t } = useI18n();\n const tableColumnStore = useTableColumnStore();\n\n interface ColumnType {\n dataIndex: string;\n title: string;\n visible?: boolean;\n fixed?: 'left' | 'right' | boolean;\n [key: string]: any;\n }\n\n interface Props {\n columns?: ColumnType[];\n pageCode?: string;\n tableId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n columns: () => [],\n pageCode: '',\n tableId: ''\n });\n\n const emit = defineEmits<{\n (e: 'update', columns: ColumnType[]): void;\n }>();\n\n const visible = defineModel<boolean>('visible', { default: false });\n\n const searchKey = ref('');\n\n // 可选字段列表\n const tableColumns = ref<ColumnType[]>([]);\n // 已选字段列表\n const rightShowColumns = ref<ColumnType[]>([]);\n // 初始列配置(用于重置)\n const initColumn = ref<ColumnType[]>([]);\n\n // 获取存储的列配置\n const getStoredColumnConfig = () => {\n const storageKey = props.pageCode || props.tableId;\n if (!storageKey) return null;\n return tableColumnStore.getTableConfig(storageKey);\n };\n\n // 保存列配置到存储\n const saveColumnConfig = () => {\n const storageKey = props.pageCode || props.tableId;\n if (!storageKey) return;\n\n const columnList = mergeColumns();\n tableColumnStore.saveColumnList(storageKey, columnList as TableColumnConfig[]);\n };\n\n // 左侧可筛选的字段\n const leftShowColumns = computed(() => {\n if (!searchKey.value) return tableColumns.value;\n return tableColumns.value.filter(item => {\n return item.title && item.title.toLowerCase().includes(searchKey.value.toLowerCase());\n });\n });\n\n // 全选相关\n const checkAll = ref(false);\n const indeterminate = ref(false);\n\n // 更新全选状态\n const updateCheckAll = () => {\n const visibleColumns = leftShowColumns.value.filter(item => item.visible);\n checkAll.value =\n visibleColumns.length === leftShowColumns.value.length &&\n leftShowColumns.value.length > 0;\n indeterminate.value =\n visibleColumns.length > 0 && visibleColumns.length < leftShowColumns.value.length;\n };\n\n // 获取已选字段\n const getRightShowColumns = () => {\n rightShowColumns.value = [];\n tableColumns.value.forEach(item => {\n if (item.visible) {\n rightShowColumns.value.push(item);\n }\n });\n };\n\n // 排序:固定列在前\n const sortRightColumns = () => {\n rightShowColumns.value.sort((a, b) => {\n if (a.fixed === 'left' && b.fixed !== 'left') return -1;\n if (a.fixed !== 'left' && b.fixed === 'left') return 1;\n return 0;\n });\n };\n\n // 合并列配置(用于保存)- 保存完整列配置,包含用户调整的状态\n const mergeColumns = () => {\n const selectList = unref(rightShowColumns);\n const unSelectList: ColumnType[] = [];\n\n unref(initColumn).forEach(item => {\n const flag = unref(selectList).some(it => it.dataIndex === item.dataIndex);\n if (!flag) {\n unSelectList.push({ ...item, visible: false });\n }\n });\n\n // 按照 rightShowColumns 的顺序返回可见列,然后是隐藏列\n const result = [...selectList, ...unSelectList];\n // 添加 displayOrdinal 用于记录顺序,返回完整列配置\n return result.map((item, index) => ({\n ...item,\n displayOrdinal: index\n }));\n };\n\n // 重置 - 恢复初始配置\n const restColum = () => {\n tableColumns.value = cloneDeep(unref(initColumn));\n getRightShowColumns();\n updateCheckAll();\n };\n\n // 清除缓存记录\n const restPageJson = async () => {\n const storageKey = props.pageCode || props.tableId;\n if (!storageKey) {\n message.warning(t('lang.未配置 pageCode 或 tableId'));\n return;\n }\n await TpfDelConfirm({ content: t('lang.确定清除缓存记录吗') });\n tableColumnStore.clearTableConfig(storageKey);\n message.success(t('lang.清除成功'));\n window.location.reload();\n };\n\n // 取消\n const onCancel = () => {\n visible.value = false;\n };\n\n // 确定 - 保存列配置\n const handleOk = () => {\n saveColumnConfig();\n emit('update', mergeColumns());\n visible.value = false;\n };\n\n // 全选/取消全选\n const changeCheckAll = (e: any) => {\n const checked = e.target.checked;\n checkAll.value = checked;\n indeterminate.value = false;\n tableColumns.value.forEach(item => {\n item.visible = checked;\n });\n getRightShowColumns();\n };\n\n // 单选\n const onchangeCheck = (row: ColumnType) => {\n const index = rightShowColumns.value.findIndex(item => item.dataIndex === row.dataIndex);\n if (row.visible) {\n if (index === -1) {\n rightShowColumns.value.push(row);\n }\n } else {\n if (index > -1) {\n rightShowColumns.value.splice(index, 1);\n }\n }\n updateCheckAll();\n };\n\n // 移除列\n const removeColumn = (row: ColumnType, index: number) => {\n row.visible = false;\n delete row.fixed;\n rightShowColumns.value.splice(index, 1);\n updateCheckAll();\n };\n\n // 切换固定\n const toggleFixed = (row: ColumnType) => {\n if (row.fixed === 'left') {\n delete row.fixed;\n } else {\n // 最多固定 2 列\n const fixedCount = rightShowColumns.value.filter(item => item.fixed === 'left').length;\n if (fixedCount >= 2) {\n return;\n }\n row.fixed = 'left';\n }\n sortRightColumns();\n };\n\n // 打开弹窗\n const open = () => {\n visible.value = true;\n };\n\n // 从存储的配置中恢复列状态\n const restoreColumnFromStorage = () => {\n const storageKey = props.pageCode || props.tableId;\n if (!storageKey || !tableColumnStore.hasTableConfig(storageKey)) {\n return cloneDeep(props.columns);\n }\n\n const storedColumnList = tableColumnStore.getColumnList(storageKey);\n if (storedColumnList.length === 0) {\n return cloneDeep(props.columns);\n }\n\n // 将存储的配置应用到当前列\n const columns = cloneDeep(props.columns);\n return columns.map(col => {\n const stored = storedColumnList.find(item => item.dataIndex === col.dataIndex);\n if (stored) {\n return {\n ...col,\n visible: stored.visible !== false,\n fixed: stored.fixed,\n displayOrdinal: stored.displayOrdinal\n };\n }\n return col;\n });\n };\n\n // 监听弹窗显示\n watch(\n () => visible.value,\n async val => {\n if (val) {\n // 初始化列数据,从存储中恢复配置\n const columnsConfig = restoreColumnFromStorage();\n tableColumns.value = columnsConfig;\n initColumn.value = columnsConfig;\n getRightShowColumns();\n sortRightColumns();\n updateCheckAll();\n }\n },\n { immediate: true }\n );\n\n defineExpose({ open, restColum });\n</script>\n\n<style lang=\"less\" scoped>\n .column-row {\n height: 400px;\n display: flex;\n\n .col-left,\n .col-right {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .col-left {\n padding-left: 20px !important;\n padding-right: 10px !important;\n border-right: 1px solid #f0f0f0;\n }\n\n .col-right {\n padding-left: 10px !important;\n }\n\n .col-left-title,\n .col-right-title {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n\n .title {\n font-weight: 500;\n color: #333;\n flex: 1;\n }\n\n .search {\n width: 150px;\n }\n }\n\n .col-left-content,\n .col-right-content {\n flex: 1 0 0;\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n .checkbox-row {\n margin-top: 10px;\n }\n\n .col-right-content-item {\n margin-right: 5px;\n height: 32px;\n display: flex;\n align-items: center;\n\n .col-right-content-item-left {\n flex: 1 0 0;\n display: flex;\n align-items: center;\n\n .drag-handle {\n cursor: move;\n margin-right: 8px;\n flex-shrink: 0;\n }\n\n .title {\n flex: 1 0 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 12px;\n }\n }\n\n .col-right-content-item-right {\n flex: 0 0 50px;\n display: flex;\n justify-content: flex-end;\n padding-right: 10px;\n .icon-ding {\n margin-left: 8px;\n flex-shrink: 0;\n opacity: 0;\n transition: opacity 0.2s;\n color: var(--ant-primary-color);\n &:hover {\n opacity: 1;\n }\n\n &.showIcon {\n opacity: 1;\n }\n }\n &:hover {\n .icon-ding {\n opacity: 1;\n }\n }\n :deep(.icon-guanbi) {\n opacity: 0.6;\n\n &:hover {\n opacity: 1;\n }\n }\n }\n }\n }\n</style>\n"],"names":["_useModel","_createBlock","_unref","_createVNode","_createElementVNode","_toDisplayString","_createElementBlock","_Fragment","_renderList","_createTextVNode","_withCtx","_normalizeClass","_normalizeStyle"],"mappings":"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"}
@@ -9,7 +9,7 @@ import "lodash-es";
9
9
  import "ant-design-vue";
10
10
  import "../desginer/widget-panel/widgetsConfig.js";
11
11
  import "@kp-ui/tool";
12
- import ActionButtonListRender from "./ActionButtonListRender.vue3.js";
12
+ import ActionButtonListRender from "./ActionButtonListRender.vue.js";
13
13
  import "../form-render/container-items/index.js";
14
14
  import { useLowcode } from "../../hooks/useLowcode.js";
15
15
  /* empty css */
@@ -9,7 +9,7 @@ import "../desginer/form-widget/container-widget/index.js";
9
9
  import "lodash-es";
10
10
  import "tmgc2-share";
11
11
  import "../desginer/widget-panel/widgetsConfig.js";
12
- import "../public/ActionButtonListRender.vue.js";
12
+ import "../public/ActionButtonListRender.vue2.js";
13
13
  /* empty css */
14
14
  import "../form-render/container-items/index.js";
15
15
  import _sfc_main$3 from "../public/DynamicDialog.vue.js";