giime 1.0.2 → 1.0.3-snapshot.1

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.
package/es/index.css CHANGED
@@ -664,6 +664,9 @@ video {
664
664
  .gm-cursor-grabbing {
665
665
  cursor: grabbing;
666
666
  }
667
+ .gm-cursor-move {
668
+ cursor: move;
669
+ }
667
670
  .gm-cursor-pointer {
668
671
  cursor: pointer;
669
672
  }
@@ -887,6 +890,11 @@ video {
887
890
  .gm-group:hover .group-hover\:gm-block {
888
891
  display: block;
889
892
  }
893
+
894
+ .gm-range-number .el-form-item[data-v-1ae16d96] {
895
+ margin: 0;
896
+ }
897
+
890
898
  .gm-flex-center[data-v-c17deec9] {
891
899
  align-items: center;
892
900
  }
@@ -894,42 +902,47 @@ video {
894
902
  .gm-flex-justify-between[data-v-c17deec9] {
895
903
  justify-content: space-between;
896
904
  }
897
- .circular[data-v-d7b04fae] {
898
- animation: loading-rotate-d7b04fae 2s linear infinite;
905
+ .gm-number-interval-single[data-v-4e6f4d6f] {
906
+ border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
907
+ box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
908
+ background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
909
+ }
910
+ .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
911
+ box-shadow: none;
912
+ background: none;
899
913
  }
900
914
 
901
- .path[data-v-d7b04fae] {
902
- animation: loading-dash-d7b04fae 1.5s ease-in-out infinite;
903
- stroke-dasharray: 90, 150;
904
- stroke-dashoffset: 0;
905
- stroke: var(--el-color-primary);
906
- stroke-linecap: round;
915
+ .gm-number-interval-close[data-v-4e6f4d6f] {
916
+ display: none;
917
+ color: var(--el-input-icon-color, var(--el-text-color-placeholder));
907
918
  }
908
919
 
909
- @keyframes loading-rotate-d7b04fae {
910
- to {
911
- transform: rotate(360deg);
912
- }
920
+ .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
921
+ display: flex;
913
922
  }
914
- @keyframes loading-dash-d7b04fae {
915
- 0% {
916
- stroke-dasharray: 1, 200;
917
- stroke-dashoffset: 0;
918
- }
919
- 50% {
920
- stroke-dasharray: 90, 150;
921
- stroke-dashoffset: -40px;
922
- }
923
- 100% {
924
- stroke-dasharray: 90, 150;
925
- stroke-dashoffset: -120px;
926
- }
923
+ [data-v-050a4f74] .gmTableNoBorder .el-table__body .el-table__cell {
924
+ border-right: none;
927
925
  }
928
926
 
929
- .gm-range-number .el-form-item[data-v-1ae16d96] {
930
- margin: 0;
927
+ [data-v-050a4f74] .gmTableNoBorder .el-table__inner-wrapper:before {
928
+ height: 0;
931
929
  }
932
930
 
931
+ [data-v-050a4f74] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
932
+ height: 0;
933
+ }
934
+
935
+ [data-v-050a4f74] .gmTableNoBorder.el-table--border:after {
936
+ height: 0;
937
+ }
938
+
939
+ [data-v-050a4f74] .gmTableNoBorder.el-table--border:before {
940
+ height: 0;
941
+ }
942
+
943
+ [data-v-050a4f74] .gmTableNoBorder .el-table__border-left-patch {
944
+ height: 0;
945
+ }
933
946
  .gm-upload-pro-preview-dialog[data-v-fbc23b01] [data-v-fbc23b01] .el-dialog__body {
934
947
  padding: 0;
935
948
  }
@@ -976,51 +989,108 @@ video {
976
989
  .gm-upload-pro-file-disabled .el-upload-list__item-status-label {
977
990
  display: none;
978
991
  }
979
- .gm-number-interval-single[data-v-4e6f4d6f] {
980
- border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
981
- box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
982
- background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
983
- }
984
- .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
985
- box-shadow: none;
986
- background: none;
987
- }
988
-
989
- .gm-number-interval-close[data-v-4e6f4d6f] {
990
- display: none;
991
- color: var(--el-input-icon-color, var(--el-text-color-placeholder));
992
- }
993
-
994
- .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
995
- display: flex;
996
- }
997
992
  [data-v-195b27e4] .gmSearchForm .el-form-item {
998
993
  margin-right: 0;
999
994
  margin-bottom: 4px;
1000
995
  }
1001
- [data-v-050a4f74] .gmTableNoBorder .el-table__body .el-table__cell {
996
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__body .el-table__cell {
1002
997
  border-right: none;
1003
998
  }
1004
999
 
1005
- [data-v-050a4f74] .gmTableNoBorder .el-table__inner-wrapper:before {
1000
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__inner-wrapper:before {
1006
1001
  height: 0;
1007
1002
  }
1008
1003
 
1009
- [data-v-050a4f74] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1004
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1010
1005
  height: 0;
1011
1006
  }
1012
1007
 
1013
- [data-v-050a4f74] .gmTableNoBorder.el-table--border:after {
1008
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border:after {
1014
1009
  height: 0;
1015
1010
  }
1016
1011
 
1017
- [data-v-050a4f74] .gmTableNoBorder.el-table--border:before {
1012
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border:before {
1018
1013
  height: 0;
1019
1014
  }
1020
1015
 
1021
- [data-v-050a4f74] .gmTableNoBorder .el-table__border-left-patch {
1016
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__border-left-patch {
1022
1017
  height: 0;
1023
1018
  }
1019
+ .circular[data-v-d7b04fae] {
1020
+ animation: loading-rotate-d7b04fae 2s linear infinite;
1021
+ }
1022
+
1023
+ .path[data-v-d7b04fae] {
1024
+ animation: loading-dash-d7b04fae 1.5s ease-in-out infinite;
1025
+ stroke-dasharray: 90, 150;
1026
+ stroke-dashoffset: 0;
1027
+ stroke: var(--el-color-primary);
1028
+ stroke-linecap: round;
1029
+ }
1030
+
1031
+ @keyframes loading-rotate-d7b04fae {
1032
+ to {
1033
+ transform: rotate(360deg);
1034
+ }
1035
+ }
1036
+ @keyframes loading-dash-d7b04fae {
1037
+ 0% {
1038
+ stroke-dasharray: 1, 200;
1039
+ stroke-dashoffset: 0;
1040
+ }
1041
+ 50% {
1042
+ stroke-dasharray: 90, 150;
1043
+ stroke-dashoffset: -40px;
1044
+ }
1045
+ 100% {
1046
+ stroke-dasharray: 90, 150;
1047
+ stroke-dashoffset: -120px;
1048
+ }
1049
+ }
1050
+ .gm-upload-preview-dialog[data-v-c615121c] [data-v-c615121c] .el-dialog__body {
1051
+ padding: 0;
1052
+ }
1053
+
1054
+ .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload-list__item, .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload--picture-card {
1055
+ width: auto;
1056
+ height: auto;
1057
+ }
1058
+ .gm-upload-file {
1059
+ line-height: normal;
1060
+ }
1061
+ .gm-upload-file li > .el-checkbox {
1062
+ position: absolute;
1063
+ left: 10px;
1064
+ top: 0;
1065
+ z-index: 9;
1066
+ }
1067
+ .gm-upload-file .el-upload-list--picture-card {
1068
+ gap: 10px;
1069
+ }
1070
+ .gm-upload-file .el-upload-list__item {
1071
+ margin: 0;
1072
+ border: none;
1073
+ }
1074
+ .gm-upload-file .el-upload-list__item-file-name {
1075
+ line-height: normal;
1076
+ }
1077
+ .gm-upload-file .el-upload-dragger {
1078
+ padding: 0;
1079
+ border: none;
1080
+ width: 100%;
1081
+ height: 100%;
1082
+ display: flex;
1083
+ }
1084
+ .gm-upload-file .el-upload--picture-card {
1085
+ border: none;
1086
+ }
1087
+
1088
+ .gm-upload-file-disabled .el-upload--picture-card {
1089
+ display: none;
1090
+ }
1091
+ .gm-upload-file-disabled .el-upload-list__item-status-label {
1092
+ display: none;
1093
+ }
1024
1094
 
1025
1095
  .pagination-container[data-v-47d35e7b] {
1026
1096
  background: #fff;
@@ -1086,29 +1156,6 @@ video {
1086
1156
  border-radius: 10px;
1087
1157
  background: #eee;
1088
1158
  }
1089
- [data-v-3f2c8504] .gmTableNoBorder .el-table__body .el-table__cell {
1090
- border-right: none;
1091
- }
1092
-
1093
- [data-v-3f2c8504] .gmTableNoBorder .el-table__inner-wrapper:before {
1094
- height: 0;
1095
- }
1096
-
1097
- [data-v-3f2c8504] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1098
- height: 0;
1099
- }
1100
-
1101
- [data-v-3f2c8504] .gmTableNoBorder.el-table--border:after {
1102
- height: 0;
1103
- }
1104
-
1105
- [data-v-3f2c8504] .gmTableNoBorder.el-table--border:before {
1106
- height: 0;
1107
- }
1108
-
1109
- [data-v-3f2c8504] .gmTableNoBorder .el-table__border-left-patch {
1110
- height: 0;
1111
- }
1112
1159
  @charset "UTF-8";
1113
1160
  .table-custom-header-drawer .el-drawer__header {
1114
1161
  padding: 10px 15px;
@@ -1164,48 +1211,4 @@ video {
1164
1211
  box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
1165
1212
  border-radius: 10px;
1166
1213
  background: #eee;
1167
- }
1168
- .gm-upload-preview-dialog[data-v-c615121c] [data-v-c615121c] .el-dialog__body {
1169
- padding: 0;
1170
- }
1171
-
1172
- .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload-list__item, .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload--picture-card {
1173
- width: auto;
1174
- height: auto;
1175
- }
1176
- .gm-upload-file {
1177
- line-height: normal;
1178
- }
1179
- .gm-upload-file li > .el-checkbox {
1180
- position: absolute;
1181
- left: 10px;
1182
- top: 0;
1183
- z-index: 9;
1184
- }
1185
- .gm-upload-file .el-upload-list--picture-card {
1186
- gap: 10px;
1187
- }
1188
- .gm-upload-file .el-upload-list__item {
1189
- margin: 0;
1190
- border: none;
1191
- }
1192
- .gm-upload-file .el-upload-list__item-file-name {
1193
- line-height: normal;
1194
- }
1195
- .gm-upload-file .el-upload-dragger {
1196
- padding: 0;
1197
- border: none;
1198
- width: 100%;
1199
- height: 100%;
1200
- display: flex;
1201
- }
1202
- .gm-upload-file .el-upload--picture-card {
1203
- border: none;
1204
- }
1205
-
1206
- .gm-upload-file-disabled .el-upload--picture-card {
1207
- display: none;
1208
- }
1209
- .gm-upload-file-disabled .el-upload-list__item-status-label {
1210
- display: none;
1211
1214
  }
@@ -76,9 +76,16 @@ var TableColumnVNodeRenderer = /* @__PURE__ */ vue.defineComponent({
76
76
  };
77
77
  const render = vue.computed(() => {
78
78
  const vnodeArray = Array.isArray(props.vnode) ? props.vnode : [props.vnode];
79
- return vnodeArray.map((vnode) => {
79
+ const propOrder = new Map(props.propsList.map((p, i) => [p.prop, i]));
80
+ const isLeafCol = (v) => v?.type?.name === "GmTableColumnPro";
81
+ const canReorder = vnodeArray.length > 0 && vnodeArray.every((v) => isLeafCol(v) && v?.props?.prop != null && propOrder.has(v.props.prop));
82
+ const orderedVnodes = canReorder ? [...vnodeArray].sort((a, b) => propOrder.get(a.props.prop) - propOrder.get(b.props.prop)) : vnodeArray;
83
+ return orderedVnodes.map((vnode) => {
80
84
  const processed = processVNode(vnode);
81
- return processed ? vue.h(processed) : null;
85
+ if (!processed) return null;
86
+ return canReorder ? vue.h(processed, {
87
+ key: vnode.props.prop
88
+ }) : vue.h(processed);
82
89
  }).filter(Boolean);
83
90
  });
84
91
  return () => render.value;
@@ -1 +1 @@
1
- {"version":3,"file":"TableColumnVNodeRenderer.js","sources":["../../../../../../../packages/components/src/composite/tablePro/TableColumnVNodeRenderer.tsx"],"sourcesContent":["// TableColumnVNodeRenderer - 支持多级表头\nimport { computed, defineComponent, h, cloneVNode } from 'vue';\nimport type { TableColumnProProps } from './tableColumnPro/tableColumnPro';\nimport type { PropType, VNode } from 'vue';\n\nexport default defineComponent({\n functional: true,\n props: {\n // 当前原始vnode vue模板中的attribute\n vnode: {\n type: [Object, Array],\n required: true,\n },\n // 真实渲染的propsList\n propsList: {\n type: Array as PropType<TableColumnProProps[]>,\n default: () => [],\n },\n defaultPropsList: {\n type: Array as PropType<TableColumnProProps[]>,\n default: () => [],\n },\n },\n setup(props) {\n /** 合并propsList和defaultPropsList */\n const mergePropsList = computed(() => {\n return props.defaultPropsList.map(it => {\n const findProp = props.propsList.find(item => item.prop === it.prop);\n if (findProp) {\n return findProp;\n }\n return it;\n });\n });\n\n /**\n * 递归处理 vnode 树,应用 propsList 配置\n * @param vnode 要处理的 vnode\n * @returns 处理后的 vnode\n */\n const processVNode = (vnode: any): any => {\n if (!vnode) return null;\n\n // 如果是 GmTableColumnPro,查找并应用配置\n if (vnode.type?.name === 'GmTableColumnPro') {\n // type=\"edit\" 的列由 TablePro 的 gmEdit 列统一处理,这里跳过\n // 直接检查 vnode.props.type,避免因 prop 相同导致的误匹配\n if (vnode.props?.type === 'edit') {\n return null;\n }\n\n const propsConfig = mergePropsList.value.find(it => it.prop === vnode.props?.prop);\n\n // 如果配置中标记为不显示,跳过渲染\n if (propsConfig && !propsConfig.isShow) {\n return null;\n }\n\n // 应用配置到 vnode props\n if (propsConfig) {\n const newProps = {\n ...vnode.props,\n width: propsConfig.width,\n label: propsConfig.label,\n fixed: propsConfig.fixed,\n };\n return cloneVNode(vnode, newProps);\n }\n\n return vnode;\n }\n\n // 如果是其他组件(如 gm-table-column 用于多级表头),递归处理子节点\n if (vnode.children) {\n let newChildren = vnode.children;\n\n // 如果 children 是对象(包含 slots),递归处理 default slot\n if (typeof vnode.children === 'object' && vnode.children.default) {\n const originalDefault = vnode.children.default;\n newChildren = {\n ...vnode.children,\n default: (slotProps: any) => {\n const childVnodes = originalDefault(slotProps);\n if (Array.isArray(childVnodes)) {\n return childVnodes.map(processVNode).filter(Boolean);\n }\n return processVNode(childVnodes);\n },\n };\n }\n // 如果 children 是数组,递归处理每个子节点\n else if (Array.isArray(vnode.children)) {\n newChildren = vnode.children.map(processVNode).filter(Boolean);\n }\n\n return cloneVNode(vnode, vnode.props, newChildren);\n }\n\n return vnode;\n };\n\n const render = computed(() => {\n const vnodeArray = Array.isArray(props.vnode) ? props.vnode : [props.vnode];\n return vnodeArray\n .map(vnode => {\n const processed = processVNode(vnode);\n return processed ? h(processed) : null;\n })\n .filter(Boolean);\n });\n\n return () => render.value;\n },\n});\n"],"names":["functional","props","vnode","type","Object","Array","required","propsList","default","defaultPropsList","setup","mergePropsList","computed","map","it","findProp","find","item","prop","processVNode","name","propsConfig","value","isShow","newProps","width","label","fixed","cloneVNode","children","newChildren","originalDefault","slotProps","childVnodes","isArray","filter","Boolean","render","vnodeArray","processed","h"],"mappings":"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"}
1
+ {"version":3,"file":"TableColumnVNodeRenderer.js","sources":["../../../../../../../packages/components/src/composite/tablePro/TableColumnVNodeRenderer.tsx"],"sourcesContent":["// TableColumnVNodeRenderer - 支持多级表头\nimport { computed, defineComponent, h, cloneVNode } from 'vue';\nimport type { TableColumnProProps } from './tableColumnPro/tableColumnPro';\nimport type { PropType, VNode } from 'vue';\n\nexport default defineComponent({\n functional: true,\n props: {\n // 当前原始vnode vue模板中的attribute\n vnode: {\n type: [Object, Array],\n required: true,\n },\n // 真实渲染的propsList\n propsList: {\n type: Array as PropType<TableColumnProProps[]>,\n default: () => [],\n },\n defaultPropsList: {\n type: Array as PropType<TableColumnProProps[]>,\n default: () => [],\n },\n },\n setup(props) {\n /** 合并propsList和defaultPropsList */\n const mergePropsList = computed(() => {\n return props.defaultPropsList.map(it => {\n const findProp = props.propsList.find(item => item.prop === it.prop);\n if (findProp) {\n return findProp;\n }\n return it;\n });\n });\n\n /**\n * 递归处理 vnode 树,应用 propsList 配置\n * @param vnode 要处理的 vnode\n * @returns 处理后的 vnode\n */\n const processVNode = (vnode: any): any => {\n if (!vnode) return null;\n\n // 如果是 GmTableColumnPro,查找并应用配置\n if (vnode.type?.name === 'GmTableColumnPro') {\n // type=\"edit\" 的列由 TablePro 的 gmEdit 列统一处理,这里跳过\n // 直接检查 vnode.props.type,避免因 prop 相同导致的误匹配\n if (vnode.props?.type === 'edit') {\n return null;\n }\n\n const propsConfig = mergePropsList.value.find(it => it.prop === vnode.props?.prop);\n\n // 如果配置中标记为不显示,跳过渲染\n if (propsConfig && !propsConfig.isShow) {\n return null;\n }\n\n // 应用配置到 vnode props\n if (propsConfig) {\n const newProps = {\n ...vnode.props,\n width: propsConfig.width,\n label: propsConfig.label,\n fixed: propsConfig.fixed,\n };\n return cloneVNode(vnode, newProps);\n }\n\n return vnode;\n }\n\n // 如果是其他组件(如 gm-table-column 用于多级表头),递归处理子节点\n if (vnode.children) {\n let newChildren = vnode.children;\n\n // 如果 children 是对象(包含 slots),递归处理 default slot\n if (typeof vnode.children === 'object' && vnode.children.default) {\n const originalDefault = vnode.children.default;\n newChildren = {\n ...vnode.children,\n default: (slotProps: any) => {\n const childVnodes = originalDefault(slotProps);\n if (Array.isArray(childVnodes)) {\n return childVnodes.map(processVNode).filter(Boolean);\n }\n return processVNode(childVnodes);\n },\n };\n }\n // 如果 children 是数组,递归处理每个子节点\n else if (Array.isArray(vnode.children)) {\n newChildren = vnode.children.map(processVNode).filter(Boolean);\n }\n\n return cloneVNode(vnode, vnode.props, newChildren);\n }\n\n return vnode;\n };\n\n const render = computed(() => {\n const vnodeArray = Array.isArray(props.vnode) ? props.vnode : [props.vnode];\n // 按 propsList(已保存/拖拽后的顺序)对顶层列重排。\n // 仅当所有顶层列都是可在 propsList 中定位顺序的叶子列时才重排;\n // 含多级表头(分组列)等无法定位顺序的列时,保持模板原始顺序,不参与排序。\n const propOrder = new Map(props.propsList.map((p, i) => [p.prop, i]));\n const isLeafCol = (v: any) => v?.type?.name === 'GmTableColumnPro';\n const canReorder =\n vnodeArray.length > 0 && vnodeArray.every((v: any) => isLeafCol(v) && v?.props?.prop != null && propOrder.has(v.props.prop));\n const orderedVnodes = canReorder\n ? [...vnodeArray].sort((a: any, b: any) => propOrder.get(a.props.prop)! - propOrder.get(b.props.prop)!)\n : vnodeArray;\n return orderedVnodes\n .map((vnode: any) => {\n const processed = processVNode(vnode);\n if (!processed) return null;\n // 重排场景下为每列设置稳定 key(= prop):让 Vue「移动」列实例而非就地复用,\n // 从而真正改变 .hidden-columns 的 DOM 顺序,触发 el-table 的 MutationObserver 重新排序列。\n // 否则就地 patch 不会移动 DOM 节点,列顺序不会生效。\n // 多级表头(canReorder=false)保持原有无 key 行为,不引入任何变化。\n return canReorder ? h(processed, { key: vnode.props.prop }) : h(processed);\n })\n .filter(Boolean);\n });\n\n return () => render.value;\n },\n});\n"],"names":["functional","props","vnode","type","Object","Array","required","propsList","default","defaultPropsList","setup","mergePropsList","computed","map","it","findProp","find","item","prop","processVNode","name","propsConfig","value","isShow","newProps","width","label","fixed","cloneVNode","children","newChildren","originalDefault","slotProps","childVnodes","isArray","filter","Boolean","render","vnodeArray","propOrder","Map","p","i","isLeafCol","v","canReorder","length","every","has","orderedVnodes","sort","a","b","get","processed","h","key"],"mappings":";;;;;;AAKA,mEAA+B;AAAA,EAC7BA,UAAAA,EAAY,IAAA;AAAA,EACZC,KAAAA,EAAO;AAAA;AAAA,IAELC,KAAAA,EAAO;AAAA,MACLC,IAAAA,EAAM,CAACC,MAAAA,EAAQC,KAAK,CAAA;AAAA,MACpBC,QAAAA,EAAU;AAAA,KACZ;AAAA;AAAA,IAEAC,SAAAA,EAAW;AAAA,MACTJ,IAAAA,EAAME,KAAAA;AAAAA,MACNG,OAAAA,EAASA,MAAM;AAAA,KACjB;AAAA,IACAC,gBAAAA,EAAkB;AAAA,MAChBN,IAAAA,EAAME,KAAAA;AAAAA,MACNG,OAAAA,EAASA,MAAM;AAAA;AACjB,GACF;AAAA,EACAE,MAAMT,KAAAA,EAAO;AAEX,IAAA,MAAMU,cAAAA,GAAiBC,aAAS,MAAM;AACpC,MAAA,OAAOX,KAAAA,CAAMQ,gBAAAA,CAAiBI,GAAAA,CAAIC,CAAAA,EAAAA,KAAM;AACtC,QAAA,MAAMC,QAAAA,GAAWd,MAAMM,SAAAA,CAAUS,IAAAA,CAAKC,UAAQA,IAAAA,CAAKC,IAAAA,KAASJ,GAAGI,IAAI,CAAA;AACnE,QAAA,IAAIH,QAAAA,EAAU;AACZ,UAAA,OAAOA,QAAAA;AAAAA,QACT;AACA,QAAA,OAAOD,EAAAA;AAAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAOD,IAAA,MAAMK,eAAgBjB,CAAAA,KAAAA,KAAoB;AACxC,MAAA,IAAI,CAACA,OAAO,OAAO,IAAA;AAGnB,MAAA,IAAIA,KAAAA,CAAMC,IAAAA,EAAMiB,IAAAA,KAAS,kBAAA,EAAoB;AAG3C,QAAA,IAAIlB,KAAAA,CAAMD,KAAAA,EAAOE,IAAAA,KAAS,MAAA,EAAQ;AAChC,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAMkB,WAAAA,GAAcV,eAAeW,KAAAA,CAAMN,IAAAA,CAAKF,QAAMA,EAAAA,CAAGI,IAAAA,KAAShB,KAAAA,CAAMD,KAAAA,EAAOiB,IAAI,CAAA;AAGjF,QAAA,IAAIG,WAAAA,IAAe,CAACA,WAAAA,CAAYE,MAAAA,EAAQ;AACtC,UAAA,OAAO,IAAA;AAAA,QACT;AAGA,QAAA,IAAIF,WAAAA,EAAa;AACf,UAAA,MAAMG,QAAAA,GAAW;AAAA,YACf,GAAGtB,KAAAA,CAAMD,KAAAA;AAAAA,YACTwB,OAAOJ,WAAAA,CAAYI,KAAAA;AAAAA,YACnBC,OAAOL,WAAAA,CAAYK,KAAAA;AAAAA,YACnBC,OAAON,WAAAA,CAAYM;AAAAA,WACrB;AACA,UAAA,OAAOC,cAAAA,CAAW1B,OAAOsB,QAAQ,CAAA;AAAA,QACnC;AAEA,QAAA,OAAOtB,KAAAA;AAAAA,MACT;AAGA,MAAA,IAAIA,MAAM2B,QAAAA,EAAU;AAClB,QAAA,IAAIC,cAAc5B,KAAAA,CAAM2B,QAAAA;AAGxB,QAAA,IAAI,OAAO3B,KAAAA,CAAM2B,QAAAA,KAAa,QAAA,IAAY3B,KAAAA,CAAM2B,SAASrB,OAAAA,EAAS;AAChE,UAAA,MAAMuB,eAAAA,GAAkB7B,MAAM2B,QAAAA,CAASrB,OAAAA;AACvCsB,UAAAA,WAAAA,GAAc;AAAA,YACZ,GAAG5B,KAAAA,CAAM2B,QAAAA;AAAAA,YACTrB,SAAUwB,CAAAA,SAAAA,KAAmB;AAC3B,cAAA,MAAMC,WAAAA,GAAcF,gBAAgBC,SAAS,CAAA;AAC7C,cAAA,IAAI3B,KAAAA,CAAM6B,OAAAA,CAAQD,WAAW,CAAA,EAAG;AAC9B,gBAAA,OAAOA,WAAAA,CAAYpB,GAAAA,CAAIM,YAAY,CAAA,CAAEgB,OAAOC,OAAO,CAAA;AAAA,cACrD;AACA,cAAA,OAAOjB,aAAac,WAAW,CAAA;AAAA,YACjC;AAAA,WACF;AAAA,QACF,CAAA,MAAA,IAES5B,KAAAA,CAAM6B,OAAAA,CAAQhC,KAAAA,CAAM2B,QAAQ,CAAA,EAAG;AACtCC,UAAAA,WAAAA,GAAc5B,MAAM2B,QAAAA,CAAShB,GAAAA,CAAIM,YAAY,CAAA,CAAEgB,OAAOC,OAAO,CAAA;AAAA,QAC/D;AAEA,QAAA,OAAOR,cAAAA,CAAW1B,KAAAA,EAAOA,KAAAA,CAAMD,KAAAA,EAAO6B,WAAW,CAAA;AAAA,MACnD;AAEA,MAAA,OAAO5B,KAAAA;AAAAA,IACT,CAAA;AAEA,IAAA,MAAMmC,MAAAA,GAASzB,aAAS,MAAM;AAC5B,MAAA,MAAM0B,UAAAA,GAAajC,KAAAA,CAAM6B,OAAAA,CAAQjC,KAAAA,CAAMC,KAAK,IAAID,KAAAA,CAAMC,KAAAA,GAAQ,CAACD,KAAAA,CAAMC,KAAK,CAAA;AAI1E,MAAA,MAAMqC,SAAAA,GAAY,IAAIC,GAAAA,CAAIvC,KAAAA,CAAMM,UAAUM,GAAAA,CAAI,CAAC4B,CAAAA,EAAGC,CAAAA,KAAM,CAACD,CAAAA,CAAEvB,IAAAA,EAAMwB,CAAC,CAAC,CAAC,CAAA;AACpE,MAAA,MAAMC,SAAAA,GAAaC,CAAAA,CAAAA,KAAWA,CAAAA,EAAGzC,IAAAA,EAAMiB,IAAAA,KAAS,kBAAA;AAChD,MAAA,MAAMyB,aACJP,UAAAA,CAAWQ,MAAAA,GAAS,KAAKR,UAAAA,CAAWS,KAAAA,CAAOH,OAAWD,SAAAA,CAAUC,CAAC,KAAKA,CAAAA,EAAG3C,KAAAA,EAAOiB,QAAQ,IAAA,IAAQqB,SAAAA,CAAUS,IAAIJ,CAAAA,CAAE3C,KAAAA,CAAMiB,IAAI,CAAC,CAAA;AAC7H,MAAA,MAAM+B,aAAAA,GAAgBJ,aAClB,CAAC,GAAGP,UAAU,CAAA,CAAEY,IAAAA,CAAK,CAACC,CAAAA,EAAQC,CAAAA,KAAWb,SAAAA,CAAUc,IAAIF,CAAAA,CAAElD,KAAAA,CAAMiB,IAAI,CAAA,GAAKqB,SAAAA,CAAUc,IAAID,CAAAA,CAAEnD,KAAAA,CAAMiB,IAAI,CAAE,CAAA,GACpGoB,UAAAA;AACJ,MAAA,OAAOW,aAAAA,CACJpC,IAAKX,CAAAA,KAAAA,KAAe;AACnB,QAAA,MAAMoD,SAAAA,GAAYnC,aAAajB,KAAK,CAAA;AACpC,QAAA,IAAI,CAACoD,WAAW,OAAO,IAAA;AAKvB,QAAA,OAAOT,UAAAA,GAAaU,MAAED,SAAAA,EAAW;AAAA,UAAEE,GAAAA,EAAKtD,MAAMD,KAAAA,CAAMiB;AAAAA,SAAM,CAAA,GAAIqC,KAAAA,CAAED,SAAS,CAAA;AAAA,MAC3E,CAAC,CAAA,CACAnB,MAAAA,CAAOC,OAAO,CAAA;AAAA,IACnB,CAAC,CAAA;AAED,IAAA,OAAO,MAAMC,MAAAA,CAAOf,KAAAA;AAAAA,EACtB;AACF,CAAC,CAAA;;;;"}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vue = require('vue');
6
6
  var core = require('@vueuse/core');
7
+ var vueDraggablePlus = require('vue-draggable-plus');
7
8
  require('../../../../../hooks/index.js');
8
9
  var index$1 = require('../../../plugins/message/index.js');
9
10
  var lodashEs = require('lodash-es');
@@ -43,9 +44,25 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
43
44
  const isInited = vue.ref(false);
44
45
  const { cloned: clonedColPropsList, sync: syncPropsList } = core.useCloned(colPropsList);
45
46
  const defaultPropsList = vue.computed(() => lodashEs.cloneDeep(props.colDefaultPropsList));
46
- vue.watch(isShowDrawer, (newValue) => {
47
+ const tableRef = vue.ref();
48
+ const draggable = vueDraggablePlus.useDraggable(null, clonedColPropsList, {
49
+ immediate: false,
50
+ animation: 150,
51
+ handle: ".gm-drag-handle"
52
+ });
53
+ const bindDraggable = async () => {
54
+ await vue.nextTick();
55
+ const tbody = tableRef.value?.$el?.querySelector(".el-table__body-wrapper tbody");
56
+ if (tbody) {
57
+ draggable.start(tbody);
58
+ }
59
+ };
60
+ vue.watch(isShowDrawer, async (newValue) => {
47
61
  if (newValue) {
48
62
  clonedColPropsList.value = lodashEs.cloneDeep(colPropsList.value);
63
+ await bindDraggable();
64
+ } else {
65
+ draggable.destroy();
49
66
  }
50
67
  });
51
68
  const customSettingsValue = vue.computed(() => customSettingsStore.customSettings[props.keyWord]?.[props.type] || []);
@@ -53,12 +70,30 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
53
70
  const updateColumns = () => {
54
71
  colPropsList.value = clonedColPropsList.value;
55
72
  };
73
+ const applySavedOrder = (defaultOrdered, savedList) => {
74
+ const savedProps = savedList.map((s) => s.prop).filter((p) => defaultOrdered.some((d) => d.prop === p));
75
+ if (!savedProps.length) {
76
+ return defaultOrdered;
77
+ }
78
+ const result = savedProps.map((p) => defaultOrdered.find((d) => d.prop === p));
79
+ let cursor = -1;
80
+ for (const d of defaultOrdered) {
81
+ const idx = result.findIndex((r) => r.prop === d.prop);
82
+ if (idx !== -1) {
83
+ cursor = idx;
84
+ } else {
85
+ result.splice(cursor + 1, 0, d);
86
+ cursor += 1;
87
+ }
88
+ }
89
+ return result;
90
+ };
56
91
  const initColumns = async () => {
57
92
  try {
58
93
  await customSettingsStore.getCustomSettings({ key_word: props.keyWord, type: props.type }, { defaultValue: [] });
59
94
  } catch {
60
95
  }
61
- clonedColPropsList.value = defaultPropsList.value.map((it) => {
96
+ const merged = defaultPropsList.value.map((it) => {
62
97
  const findItem = clonedStore.value.find((v) => v.prop === it.prop);
63
98
  if (findItem) {
64
99
  it.isShow = findItem.isShow;
@@ -69,6 +104,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
69
104
  }
70
105
  return it;
71
106
  });
107
+ clonedColPropsList.value = applySavedOrder(merged, clonedStore.value);
72
108
  updateColumns();
73
109
  isInited.value = true;
74
110
  };
@@ -192,14 +228,17 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
192
228
  ])
193
229
  ]),
194
230
  vue.createVNode(_component_gm_table, {
231
+ ref_key: "tableRef",
232
+ ref: tableRef,
195
233
  data: vue.unref(clonedColPropsList),
234
+ "row-key": "prop",
196
235
  "header-cell-style": { background: "#F5F7FA", color: "#333" },
197
236
  style: { "width": "100%" }
198
237
  }, {
199
238
  default: vue.withCtx(() => [
200
239
  vue.createVNode(_component_gm_table_column, {
201
240
  align: "left",
202
- width: "80"
241
+ width: "50"
203
242
  }, {
204
243
  header: vue.withCtx(() => [
205
244
  vue.createVNode(_component_gm_checkbox, {
@@ -232,7 +271,10 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
232
271
  _: 1
233
272
  /* STABLE */
234
273
  }),
235
- vue.createVNode(_component_gm_table_column, { label: "\u5217\u5BBD" }, {
274
+ vue.createVNode(_component_gm_table_column, {
275
+ label: "\u5217\u5BBD",
276
+ width: "160"
277
+ }, {
236
278
  default: vue.withCtx(({ row }) => [
237
279
  vue.createVNode(_component_gm_input, {
238
280
  modelValue: row.width,
@@ -245,7 +287,10 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
245
287
  _: 1
246
288
  /* STABLE */
247
289
  }),
248
- vue.createVNode(_component_gm_table_column, { label: "\u56FA\u5B9A" }, {
290
+ vue.createVNode(_component_gm_table_column, {
291
+ label: "\u56FA\u5B9A",
292
+ width: "100"
293
+ }, {
249
294
  default: vue.withCtx(({ row }) => [
250
295
  row.type !== "edit" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
251
296
  vue.createVNode(
@@ -306,6 +351,27 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
306
351
  ]),
307
352
  _: 1
308
353
  /* STABLE */
354
+ }),
355
+ vue.createVNode(_component_gm_table_column, {
356
+ label: "\u62D6\u52A8\u6392\u5E8F",
357
+ align: "center",
358
+ width: "100"
359
+ }, {
360
+ default: vue.withCtx(({ row }) => [
361
+ row.type !== "edit" ? (vue.openBlock(), vue.createBlock(_component_gm_icon, {
362
+ key: 0,
363
+ class: "gm-drag-handle gm-cursor-move gm-text-blue-500",
364
+ size: "18"
365
+ }, {
366
+ default: vue.withCtx(() => [
367
+ vue.createVNode(vue.unref(iconsVue.Rank))
368
+ ]),
369
+ _: 1
370
+ /* STABLE */
371
+ })) : vue.createCommentVNode("v-if", true)
372
+ ]),
373
+ _: 1
374
+ /* STABLE */
309
375
  })
310
376
  ]),
311
377
  _: 1
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeaderForm.vue2.js","sources":["../../../../../../../../packages/components/src/composite/tablePro/tableHeaderForm/TableHeaderForm.vue"],"sourcesContent":["<template>\n <gm-drawer v-model=\"isShowDrawer\" title=\"自定义表头\" direction=\"rtl\" size=\"600px\" append-to-body destroy-on-close>\n <section\n class=\"drawer-alert gm-mb-4 gm-flex gm-items-center gm-justify-between gm-rounded gm-border gm-border-cyan-300 gm-bg-cyan-50 gm-px-4 gm-text-sm gm-text-[#777]\"\n >\n <div class=\"gm-flex gm-items-center gm-py-3\">\n <gm-icon><InfoFilled /></gm-icon>\n <p class=\"gm-ml-2\">\n 已选中 <span class=\"gm-text-cyan-500\">{{ checkedNumber }}</span> 项\n </p>\n </div>\n </section>\n <gm-table :data=\"clonedColPropsList\" :header-cell-style=\"{ background: '#F5F7FA', color: '#333' }\" style=\"width: 100%\">\n <gm-table-column align=\"left\" width=\"80\">\n <template #header>\n <gm-checkbox :model-value=\"checkedAll\" :indeterminate=\"isIndeterminate\" @change=\"handleCheckAllChange\" />\n </template>\n <template #default=\"{ row }: { row: TableColumnProProps }\">\n <gm-checkbox v-model=\"row.isShow\" :disabled=\"row.type === 'edit'\" />\n </template>\n </gm-table-column>\n <gm-table-column label=\"列名\" prop=\"label\">\n <template #default=\"{ row }: { row: TableColumnProProps }\">\n {{ row.type === 'edit' ? '操作' : row.label }}\n </template>\n </gm-table-column>\n <gm-table-column label=\"列宽\">\n <template #default=\"{ row }: { row: TableColumnProProps; $index: number }\">\n <gm-input v-model=\"row.width\" class=\"gm-w-[120px]\" placeholder=\"设置宽度\" clearable />\n </template>\n </gm-table-column>\n <gm-table-column label=\"固定\">\n <template #default=\"{ row }: { row: TableColumnProProps; $index: number }\">\n <div v-if=\"row.type !== 'edit'\">\n <gm-tooltip effect=\"dark\" content=\"固定在左侧\" placement=\"top\">\n <gm-icon\n class=\"gm-mr-2 gm-cursor-pointer\"\n :class=\"row.fixed === '' || row.fixed === true || row.fixed === 'left' ? 'gm-text-blue-500' : ''\"\n size=\"20\"\n @click=\"toggleFixedLeft(row)\"\n >\n <IceCreamRound />\n </gm-icon>\n </gm-tooltip>\n <gm-tooltip effect=\"dark\" content=\"固定在右侧\" placement=\"top\">\n <gm-icon\n class=\"-gm-scale-x-100 gm-cursor-pointer\"\n :class=\"row.fixed === 'right' ? 'gm-text-blue-500' : ''\"\n size=\"20\"\n @click=\"toggleFixedRight(row)\"\n >\n <IceCreamRound />\n </gm-icon>\n </gm-tooltip>\n </div>\n </template>\n </gm-table-column>\n </gm-table>\n <template v-if=\"!disabledRemoteCol\" #footer>\n <div class=\"gm-flex gm-justify-between\">\n <div>\n <gm-button :loading=\"submitLoading\" type=\"primary\" size=\"default\" @click=\"onReset\">重置</gm-button>\n <gm-button :loading=\"submitLoading\" type=\"success\" size=\"default\" @click=\"onSyncRemote\">同步</gm-button>\n </div>\n <div>\n <gm-button :loading=\"submitLoading\" size=\"default\" @click=\"isShowDrawer = false\">取消</gm-button>\n <gm-button :loading=\"submitLoading\" type=\"primary\" size=\"default\" @click=\"submitSettings()\">保存</gm-button>\n </div>\n </div>\n </template>\n </gm-drawer>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { useCloned } from '@vueuse/core';\nimport { useCustomSettingsStore } from '@giime/hooks';\nimport { GmMessage } from '@giime/components/src/plugins/message';\nimport { cloneDeep } from 'lodash-es';\nimport { isNil } from '@giime/utils/src/is';\nimport { IceCreamRound, InfoFilled } from '@element-plus/icons-vue';\nimport { tableHeaderFormProps } from './tableHeaderForm';\nimport type { CheckboxValueType } from 'element-plus';\nimport type { TableColumnProProps } from '../tableColumnPro/tableColumnPro';\n\ndefineOptions({\n name: 'GmTableHeaderForm',\n});\n\nconst props = defineProps(tableHeaderFormProps);\nconst emit = defineEmits([\"updateColumns\"]);\n/**抽屉显示 */\nconst isShowDrawer = defineModel<boolean>('isShowDrawer', {\n required: true,\n});\n\n/**自定义按钮 props列表 */\nconst colPropsList = defineModel<TableColumnProProps[]>('colPropsList', {\n required: true,\n});\nconst customSettingsStore = useCustomSettingsStore();\n\n/**\n * 数据是否初始化完成\n */\nconst isInited = ref(false);\n/**内部克隆一份,当点击保存时 应用修改的内容 */\nconst { cloned: clonedColPropsList, sync: syncPropsList } = useCloned(colPropsList);\nconst defaultPropsList = computed(() => cloneDeep(props.colDefaultPropsList));\n// 重新打开弹窗时, 克隆一份新数据\nwatch(isShowDrawer, newValue => {\n if (newValue) {\n clonedColPropsList.value = cloneDeep(colPropsList.value);\n }\n});\nconst customSettingsValue = computed<TableColumnProProps[]>(() => customSettingsStore.customSettings[props.keyWord]?.[props.type] || []);\nconst { cloned: clonedStore } = useCloned(customSettingsValue);\n\n// 更新选中数据\nconst updateColumns = () => {\n colPropsList.value = clonedColPropsList.value;\n};\n// 初始化数据\nconst initColumns = async () => {\n try {\n await customSettingsStore.getCustomSettings({ key_word: props.keyWord, type: props.type }, { defaultValue: [] });\n } catch {}\n clonedColPropsList.value = defaultPropsList.value.map(it => {\n const findItem = clonedStore.value.find(v => v.prop === it.prop);\n if (findItem) {\n it.isShow = findItem.isShow;\n it.width = findItem.width;\n if (!isNil(findItem.fixed)) {\n it.fixed = findItem.fixed;\n }\n // it.type = findItem.type;\n }\n return it;\n });\n\n updateColumns();\n isInited.value = true;\n};\n\n// 已选中条数\nconst checkedNumber = computed(() => {\n return clonedColPropsList.value.filter(v => v.isShow).length;\n});\n// 全选\nconst checkedAll = computed(() => clonedColPropsList.value.filter(it => it.type !== 'edit').every(v => v.isShow));\n// 半选\nconst isIndeterminate = computed(() => !checkedAll.value && clonedColPropsList.value.filter(it => it.type !== 'edit').some(v => v.isShow));\n// 切换全选\nconst handleCheckAllChange = (val: CheckboxValueType) => {\n clonedColPropsList.value.forEach(v => {\n if (v.type !== 'edit') {\n v.isShow = Boolean(val);\n }\n });\n};\nconst submitLoading = ref(false);\n// 保存\nconst submitSettings = async (options?: { hiddenMessage?: boolean }) => {\n try {\n submitLoading.value = true;\n const { data } = await customSettingsStore.addCustomSettings({\n key_word: props.keyWord,\n value: JSON.stringify(clonedColPropsList.value),\n type: props.type,\n });\n submitLoading.value = false;\n if (data.code !== 200) {\n return;\n }\n // isShowDrawer.value = false;\n updateColumns();\n if (!options?.hiddenMessage) {\n GmMessage.success('保存成功');\n }\n emit('updateColumns');\n } catch (e) {\n console.error(e);\n submitLoading.value = false;\n }\n};\n/**同步远程设置 */\nconst onSyncRemote = async () => {\n try {\n submitLoading.value = true;\n await customSettingsStore.syncRemoteSetting({\n key_word: props.keyWord,\n type: props.type,\n });\n submitLoading.value = false;\n GmMessage.success('同步成功');\n } catch (e) {\n console.error(e);\n submitLoading.value = false;\n }\n};\n// 重置\nconst onReset = () => {\n clonedColPropsList.value = cloneDeep(props.colDefaultPropsList);\n};\n// 点击固定到左侧\nconst toggleFixedLeft = (row: TableColumnProProps) => {\n if (row.fixed === 'left' || row.fixed === true || row.fixed === '') {\n row.fixed = false;\n } else {\n row.fixed = 'left';\n }\n};\n// 点击固定到右侧\nconst toggleFixedRight = (row: TableColumnProProps) => {\n if (row.fixed === 'right') {\n row.fixed = false;\n } else {\n row.fixed = 'right';\n }\n};\nonMounted(() => {\n if (props.disabledRemoteCol) {\n isInited.value = true;\n } else {\n initColumns();\n }\n});\ndefineExpose({\n isInited,\n submitSettings,\n syncPropsList,\n});\n</script>\n"],"names":["_useModel","useCustomSettingsStore","ref","useCloned","computed","cloneDeep","watch","isNil","GmMessage","onMounted"],"mappings":"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"}
1
+ {"version":3,"file":"TableHeaderForm.vue2.js","sources":["../../../../../../../../packages/components/src/composite/tablePro/tableHeaderForm/TableHeaderForm.vue"],"sourcesContent":["<template>\n <gm-drawer v-model=\"isShowDrawer\" title=\"自定义表头\" direction=\"rtl\" size=\"600px\" append-to-body destroy-on-close>\n <section\n class=\"drawer-alert gm-mb-4 gm-flex gm-items-center gm-justify-between gm-rounded gm-border gm-border-cyan-300 gm-bg-cyan-50 gm-px-4 gm-text-sm gm-text-[#777]\"\n >\n <div class=\"gm-flex gm-items-center gm-py-3\">\n <gm-icon><InfoFilled /></gm-icon>\n <p class=\"gm-ml-2\">\n 已选中 <span class=\"gm-text-cyan-500\">{{ checkedNumber }}</span> 项\n </p>\n </div>\n </section>\n <gm-table\n ref=\"tableRef\"\n :data=\"clonedColPropsList\"\n row-key=\"prop\"\n :header-cell-style=\"{ background: '#F5F7FA', color: '#333' }\"\n style=\"width: 100%\"\n >\n <gm-table-column align=\"left\" width=\"50\">\n <template #header>\n <gm-checkbox :model-value=\"checkedAll\" :indeterminate=\"isIndeterminate\" @change=\"handleCheckAllChange\" />\n </template>\n <template #default=\"{ row }: { row: TableColumnProProps }\">\n <gm-checkbox v-model=\"row.isShow\" :disabled=\"row.type === 'edit'\" />\n </template>\n </gm-table-column>\n <gm-table-column label=\"列名\" prop=\"label\">\n <template #default=\"{ row }: { row: TableColumnProProps }\">\n {{ row.type === 'edit' ? '操作' : row.label }}\n </template>\n </gm-table-column>\n <gm-table-column label=\"列宽\" width=\"160\">\n <template #default=\"{ row }: { row: TableColumnProProps; $index: number }\">\n <gm-input v-model=\"row.width\" class=\"gm-w-[120px]\" placeholder=\"设置宽度\" clearable />\n </template>\n </gm-table-column>\n <gm-table-column label=\"固定\" width=\"100\">\n <template #default=\"{ row }: { row: TableColumnProProps; $index: number }\">\n <div v-if=\"row.type !== 'edit'\">\n <gm-tooltip effect=\"dark\" content=\"固定在左侧\" placement=\"top\">\n <gm-icon\n class=\"gm-mr-2 gm-cursor-pointer\"\n :class=\"row.fixed === '' || row.fixed === true || row.fixed === 'left' ? 'gm-text-blue-500' : ''\"\n size=\"20\"\n @click=\"toggleFixedLeft(row)\"\n >\n <IceCreamRound />\n </gm-icon>\n </gm-tooltip>\n <gm-tooltip effect=\"dark\" content=\"固定在右侧\" placement=\"top\">\n <gm-icon\n class=\"-gm-scale-x-100 gm-cursor-pointer\"\n :class=\"row.fixed === 'right' ? 'gm-text-blue-500' : ''\"\n size=\"20\"\n @click=\"toggleFixedRight(row)\"\n >\n <IceCreamRound />\n </gm-icon>\n </gm-tooltip>\n </div>\n </template>\n </gm-table-column>\n <gm-table-column label=\"拖动排序\" align=\"center\" width=\"100\">\n <template #default=\"{ row }: { row: TableColumnProProps }\">\n <gm-icon v-if=\"row.type !== 'edit'\" class=\"gm-drag-handle gm-cursor-move gm-text-blue-500\" size=\"18\">\n <Rank />\n </gm-icon>\n </template>\n </gm-table-column>\n </gm-table>\n <template v-if=\"!disabledRemoteCol\" #footer>\n <div class=\"gm-flex gm-justify-between\">\n <div>\n <gm-button :loading=\"submitLoading\" type=\"primary\" size=\"default\" @click=\"onReset\">重置</gm-button>\n <gm-button :loading=\"submitLoading\" type=\"success\" size=\"default\" @click=\"onSyncRemote\">同步</gm-button>\n </div>\n <div>\n <gm-button :loading=\"submitLoading\" size=\"default\" @click=\"isShowDrawer = false\">取消</gm-button>\n <gm-button :loading=\"submitLoading\" type=\"primary\" size=\"default\" @click=\"submitSettings()\">保存</gm-button>\n </div>\n </div>\n </template>\n </gm-drawer>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, ref, watch } from 'vue';\nimport { useCloned } from '@vueuse/core';\nimport { useDraggable } from 'vue-draggable-plus';\nimport { useCustomSettingsStore } from '@giime/hooks';\nimport { GmMessage } from '@giime/components/src/plugins/message';\nimport { cloneDeep } from 'lodash-es';\nimport { isNil } from '@giime/utils/src/is';\nimport { IceCreamRound, InfoFilled, Rank } from '@element-plus/icons-vue';\nimport { tableHeaderFormProps } from './tableHeaderForm';\nimport type { CheckboxValueType, TableInstance } from 'element-plus';\nimport type { TableColumnProProps } from '../tableColumnPro/tableColumnPro';\n\ndefineOptions({\n name: 'GmTableHeaderForm',\n});\n\nconst props = defineProps(tableHeaderFormProps);\nconst emit = defineEmits([\"updateColumns\"]);\n/**抽屉显示 */\nconst isShowDrawer = defineModel<boolean>('isShowDrawer', {\n required: true,\n});\n\n/**自定义按钮 props列表 */\nconst colPropsList = defineModel<TableColumnProProps[]>('colPropsList', {\n required: true,\n});\nconst customSettingsStore = useCustomSettingsStore();\n\n/**\n * 数据是否初始化完成\n */\nconst isInited = ref(false);\n/**内部克隆一份,当点击保存时 应用修改的内容 */\nconst { cloned: clonedColPropsList, sync: syncPropsList } = useCloned(colPropsList);\nconst defaultPropsList = computed(() => cloneDeep(props.colDefaultPropsList));\n\n/**\n * 拖拽排序:vue-draggable-plus 在挂载时一次性初始化、不监听元素变化,\n * 而抽屉是 destroy-on-close,每次打开 tbody 都是新节点,\n * 因此用 immediate:false + 打开后手动 start(tbody)、关闭时 destroy。\n */\nconst tableRef = ref<TableInstance>();\nconst draggable = useDraggable<TableColumnProProps>(null, clonedColPropsList, {\n immediate: false,\n animation: 150,\n handle: '.gm-drag-handle',\n});\nconst bindDraggable = async () => {\n await nextTick();\n const tbody = (tableRef.value?.$el as HTMLElement | undefined)?.querySelector<HTMLElement>('.el-table__body-wrapper tbody');\n if (tbody) {\n draggable.start(tbody);\n }\n};\n\n// 重新打开弹窗时, 克隆一份新数据,并重新绑定拖拽\nwatch(isShowDrawer, async newValue => {\n if (newValue) {\n clonedColPropsList.value = cloneDeep(colPropsList.value);\n await bindDraggable();\n } else {\n draggable.destroy();\n }\n});\nconst customSettingsValue = computed<TableColumnProProps[]>(() => customSettingsStore.customSettings[props.keyWord]?.[props.type] || []);\nconst { cloned: clonedStore } = useCloned(customSettingsValue);\n\n// 更新选中数据\nconst updateColumns = () => {\n colPropsList.value = clonedColPropsList.value;\n};\n/**\n * 按远程保存的顺序重排列。\n * 模板里新增(远程未保存)的字段,插入到它在默认顺序中前一个已存在字段的后面。\n * 例:默认 1 2 3 4 5,远程存 3 5 2 1 4,模板新增 2.5(在 2 和 3 之间)→ 3 5 2 2.5 1 4。\n * 连续新增、或新增在最前面,也会按默认相邻关系顺序插入。\n */\nconst applySavedOrder = (defaultOrdered: TableColumnProProps[], savedList: TableColumnProProps[]) => {\n // 远程保存顺序中仍存在于默认列的 prop\n const savedProps = savedList.map(s => s.prop).filter(p => defaultOrdered.some(d => d.prop === p));\n if (!savedProps.length) {\n // 没有可用的远程顺序,直接使用默认顺序\n return defaultOrdered;\n }\n // 先按远程顺序放入已存在的列\n const result = savedProps.map(p => defaultOrdered.find(d => d.prop === p)!);\n // 再把新增列按默认顺序插入到其前驱之后\n let cursor = -1;\n for (const d of defaultOrdered) {\n const idx = result.findIndex(r => r.prop === d.prop);\n if (idx !== -1) {\n cursor = idx;\n } else {\n result.splice(cursor + 1, 0, d);\n cursor += 1;\n }\n }\n return result;\n};\n\n// 初始化数据\nconst initColumns = async () => {\n try {\n await customSettingsStore.getCustomSettings({ key_word: props.keyWord, type: props.type }, { defaultValue: [] });\n } catch {}\n // 以默认列为基准,叠加远程保存的 isShow/width/fixed\n const merged = defaultPropsList.value.map(it => {\n const findItem = clonedStore.value.find(v => v.prop === it.prop);\n if (findItem) {\n it.isShow = findItem.isShow;\n it.width = findItem.width;\n if (!isNil(findItem.fixed)) {\n it.fixed = findItem.fixed;\n }\n // it.type = findItem.type;\n }\n return it;\n });\n // 套用远程保存的列顺序,新增字段按默认相邻关系插入\n clonedColPropsList.value = applySavedOrder(merged, clonedStore.value);\n\n updateColumns();\n isInited.value = true;\n};\n\n// 已选中条数\nconst checkedNumber = computed(() => {\n return clonedColPropsList.value.filter(v => v.isShow).length;\n});\n// 全选\nconst checkedAll = computed(() => clonedColPropsList.value.filter(it => it.type !== 'edit').every(v => v.isShow));\n// 半选\nconst isIndeterminate = computed(() => !checkedAll.value && clonedColPropsList.value.filter(it => it.type !== 'edit').some(v => v.isShow));\n// 切换全选\nconst handleCheckAllChange = (val: CheckboxValueType) => {\n clonedColPropsList.value.forEach(v => {\n if (v.type !== 'edit') {\n v.isShow = Boolean(val);\n }\n });\n};\nconst submitLoading = ref(false);\n// 保存\nconst submitSettings = async (options?: { hiddenMessage?: boolean }) => {\n try {\n submitLoading.value = true;\n const { data } = await customSettingsStore.addCustomSettings({\n key_word: props.keyWord,\n value: JSON.stringify(clonedColPropsList.value),\n type: props.type,\n });\n submitLoading.value = false;\n if (data.code !== 200) {\n return;\n }\n // isShowDrawer.value = false;\n updateColumns();\n if (!options?.hiddenMessage) {\n GmMessage.success('保存成功');\n }\n emit('updateColumns');\n } catch (e) {\n console.error(e);\n submitLoading.value = false;\n }\n};\n/**同步远程设置 */\nconst onSyncRemote = async () => {\n try {\n submitLoading.value = true;\n await customSettingsStore.syncRemoteSetting({\n key_word: props.keyWord,\n type: props.type,\n });\n submitLoading.value = false;\n GmMessage.success('同步成功');\n } catch (e) {\n console.error(e);\n submitLoading.value = false;\n }\n};\n// 重置\nconst onReset = () => {\n clonedColPropsList.value = cloneDeep(props.colDefaultPropsList);\n};\n// 点击固定到左侧\nconst toggleFixedLeft = (row: TableColumnProProps) => {\n if (row.fixed === 'left' || row.fixed === true || row.fixed === '') {\n row.fixed = false;\n } else {\n row.fixed = 'left';\n }\n};\n// 点击固定到右侧\nconst toggleFixedRight = (row: TableColumnProProps) => {\n if (row.fixed === 'right') {\n row.fixed = false;\n } else {\n row.fixed = 'right';\n }\n};\nonMounted(() => {\n if (props.disabledRemoteCol) {\n isInited.value = true;\n } else {\n initColumns();\n }\n});\ndefineExpose({\n isInited,\n submitSettings,\n syncPropsList,\n});\n</script>\n"],"names":["_useModel","useCustomSettingsStore","ref","useCloned","computed","cloneDeep","useDraggable","nextTick","watch","isNil","GmMessage","onMounted"],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const version = "1.0.2";
1
+ export declare const version = "1.0.3-snapshot.1";
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const version = "1.0.2";
3
+ const version = "1.0.3-snapshot.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '1.0.2';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAA,GAAU;;;;"}
1
+ {"version":3,"file":"version.js","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '1.0.3-snapshot.1';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAA,GAAU;;;;"}