star-horse-lowcode 2.7.65 → 2.7.67

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 (221) hide show
  1. package/README.md +3 -0
  2. package/dist/assets/index.css +1 -1
  3. package/dist/index.es.js +597 -188
  4. package/dist/types/index.d.ts +30 -0
  5. package/package.json +3 -3
  6. package/.env.development +0 -3
  7. package/.env.production +0 -3
  8. package/.eslintrc-auto-import.json +0 -77
  9. package/.gitignore +0 -27
  10. package/.idea/.gitignore +0 -5
  11. package/.idea/MarsCodeWorkspaceAppSettings.xml +0 -6
  12. package/.idea/inspectionProfiles/Project_Default.xml +0 -7
  13. package/.idea/modules.xml +0 -8
  14. package/.idea/testcode.iml +0 -12
  15. package/.idea/vcs.xml +0 -6
  16. package/.idea/watcherTasks.xml +0 -4
  17. package/.idea/workspace.xml +0 -207
  18. package/.npmignore +0 -21
  19. package/.prettierignore +0 -26
  20. package/auto-imports.d.ts +0 -137
  21. package/components.d.ts +0 -189
  22. package/eslint.config.js +0 -37
  23. package/index.html +0 -14
  24. package/package-lock.json +0 -8276
  25. package/prettier.config.js +0 -20
  26. package/public/logo.svg +0 -660
  27. package/src/App.vue +0 -11
  28. package/src/api/date_utils.ts +0 -219
  29. package/src/api/finger_utils.ts +0 -71
  30. package/src/api/form_utils.ts +0 -281
  31. package/src/api/jquery.min.js +0 -2
  32. package/src/api/pcas-code.json +0 -1
  33. package/src/api/settings.ts +0 -81
  34. package/src/api/star_horse_apis.ts +0 -196
  35. package/src/api/star_horse_utils.ts +0 -797
  36. package/src/api/system.ts +0 -351
  37. package/src/api/user_func.ts +0 -147
  38. package/src/api/valid_utils.ts +0 -165
  39. package/src/assets/css/index.scss +0 -908
  40. package/src/assets/icons.css +0 -574
  41. package/src/assets/star-horse-icons.woff +0 -0
  42. package/src/components/comp/ShDynamicForm.vue +0 -160
  43. package/src/components/comp/ShForm.vue +0 -30
  44. package/src/components/comp/ShTableListColumn.vue +0 -61
  45. package/src/components/comp/StarHorseDataSelector.vue +0 -139
  46. package/src/components/comp/StarHorseDataView.vue +0 -110
  47. package/src/components/comp/StarHorseDataViewItems.vue +0 -61
  48. package/src/components/comp/StarHorseDataViewTable.vue +0 -102
  49. package/src/components/comp/StarHorseDialog.vue +0 -383
  50. package/src/components/comp/StarHorseDraggable.vue +0 -401
  51. package/src/components/comp/StarHorseForm.vue +0 -458
  52. package/src/components/comp/StarHorseFormItem.vue +0 -82
  53. package/src/components/comp/StarHorseFormList.vue +0 -516
  54. package/src/components/comp/StarHorseFormTable.vue +0 -56
  55. package/src/components/comp/StarHorseIcon.vue +0 -76
  56. package/src/components/comp/StarHorseItem.vue +0 -302
  57. package/src/components/comp/StarHorseJsonEditor.vue +0 -115
  58. package/src/components/comp/StarHorsePopover.vue +0 -66
  59. package/src/components/comp/StarHorseSearchComp.vue +0 -253
  60. package/src/components/comp/StarHorseStaticTable.vue +0 -395
  61. package/src/components/comp/StarHorseTableColumn.vue +0 -249
  62. package/src/components/comp/StarHorseTableComp.vue +0 -1193
  63. package/src/components/comp/StarHorseTableViewColumn.vue +0 -61
  64. package/src/components/comp/StarHorseTree.vue +0 -494
  65. package/src/components/comp/index.ts +0 -22
  66. package/src/components/comp/items/UTableColumn.vue +0 -65
  67. package/src/components/comp/items/boxItem.vue +0 -98
  68. package/src/components/comp/items/callitem.ts +0 -9
  69. package/src/components/comp/items/cardItem.vue +0 -152
  70. package/src/components/comp/items/collapseItem.vue +0 -134
  71. package/src/components/comp/items/dytableItem.vue +0 -135
  72. package/src/components/comp/items/otherItem.vue +0 -65
  73. package/src/components/comp/items/tabItem.vue +0 -155
  74. package/src/components/comp/items/tabPanelItem.vue +0 -110
  75. package/src/components/comp/items/tableColumn.vue +0 -129
  76. package/src/components/comp/items/tableItem.vue +0 -97
  77. package/src/components/comp/items/tablebtn.vue +0 -158
  78. package/src/components/comp/items/viewBoxItem.vue +0 -55
  79. package/src/components/comp/items/viewCardItem.vue +0 -47
  80. package/src/components/comp/items/viewCollapseItem.vue +0 -71
  81. package/src/components/comp/items/viewDytableItem.vue +0 -77
  82. package/src/components/comp/items/viewOtherItem.vue +0 -55
  83. package/src/components/comp/items/viewTabItem.vue +0 -77
  84. package/src/components/comp/items/viewTabPanelItem.vue +0 -54
  85. package/src/components/comp/items/viewTableItem.vue +0 -74
  86. package/src/components/comp/selfcomp.ts +0 -9
  87. package/src/components/comp/utils/DataPicker.vue +0 -302
  88. package/src/components/comp/utils/DataTag.vue +0 -51
  89. package/src/components/cron/Crontab-Day.vue +0 -230
  90. package/src/components/cron/Crontab-Hour.vue +0 -165
  91. package/src/components/cron/Crontab-Min.vue +0 -166
  92. package/src/components/cron/Crontab-Month.vue +0 -166
  93. package/src/components/cron/Crontab-Result.vue +0 -615
  94. package/src/components/cron/Crontab-Second.vue +0 -185
  95. package/src/components/cron/Crontab-Week.vue +0 -208
  96. package/src/components/cron/Crontab-Year.vue +0 -183
  97. package/src/components/cron/Crontab.vue +0 -474
  98. package/src/components/enums/ModuleEnums.ts +0 -10
  99. package/src/components/enums/ServiceEnums.ts +0 -18
  100. package/src/components/formcomp/container/box-container.vue +0 -162
  101. package/src/components/formcomp/container/callitem.ts +0 -9
  102. package/src/components/formcomp/container/card-container.vue +0 -170
  103. package/src/components/formcomp/container/collapse-container.vue +0 -133
  104. package/src/components/formcomp/container/dytable-col.vue +0 -448
  105. package/src/components/formcomp/container/dytable-container.vue +0 -57
  106. package/src/components/formcomp/container/dytableUtils.ts +0 -358
  107. package/src/components/formcomp/container/group-box-container.vue +0 -331
  108. package/src/components/formcomp/container/index.ts +0 -6
  109. package/src/components/formcomp/container/tab-container.vue +0 -153
  110. package/src/components/formcomp/container/table-container.vue +0 -249
  111. package/src/components/formcomp/items/allitem.ts +0 -9
  112. package/src/components/formcomp/items/area-item.vue +0 -116
  113. package/src/components/formcomp/items/audio-item.vue +0 -163
  114. package/src/components/formcomp/items/autocomplete-item.vue +0 -118
  115. package/src/components/formcomp/items/barcode-item.vue +0 -87
  116. package/src/components/formcomp/items/base-json-item.vue +0 -207
  117. package/src/components/formcomp/items/button-item.vue +0 -228
  118. package/src/components/formcomp/items/cascade-item.vue +0 -113
  119. package/src/components/formcomp/items/checkbox-item.vue +0 -97
  120. package/src/components/formcomp/items/color-item.vue +0 -70
  121. package/src/components/formcomp/items/cron-item.vue +0 -115
  122. package/src/components/formcomp/items/datetime-item.vue +0 -99
  123. package/src/components/formcomp/items/depart-item.vue +0 -51
  124. package/src/components/formcomp/items/dialog-input-item.vue +0 -207
  125. package/src/components/formcomp/items/divider-item.vue +0 -66
  126. package/src/components/formcomp/items/html-item.vue +0 -65
  127. package/src/components/formcomp/items/htmleditor-item.vue +0 -104
  128. package/src/components/formcomp/items/icon-item.vue +0 -195
  129. package/src/components/formcomp/items/image-item.vue +0 -247
  130. package/src/components/formcomp/items/index.ts +0 -44
  131. package/src/components/formcomp/items/input-item.vue +0 -150
  132. package/src/components/formcomp/items/json-array-item.vue +0 -67
  133. package/src/components/formcomp/items/json-item.vue +0 -66
  134. package/src/components/formcomp/items/markdown-item.vue +0 -77
  135. package/src/components/formcomp/items/number-item.vue +0 -94
  136. package/src/components/formcomp/items/number-range-item.vue +0 -278
  137. package/src/components/formcomp/items/page-select-item.vue +0 -407
  138. package/src/components/formcomp/items/password-item.vue +0 -71
  139. package/src/components/formcomp/items/qrcode-item.vue +0 -84
  140. package/src/components/formcomp/items/radio-item.vue +0 -112
  141. package/src/components/formcomp/items/rate-item.vue +0 -68
  142. package/src/components/formcomp/items/select-item.vue +0 -133
  143. package/src/components/formcomp/items/signature-item.vue +0 -216
  144. package/src/components/formcomp/items/slider-item.vue +0 -68
  145. package/src/components/formcomp/items/starhorse-form-item.vue +0 -334
  146. package/src/components/formcomp/items/switch-item.vue +0 -77
  147. package/src/components/formcomp/items/tag-item.vue +0 -77
  148. package/src/components/formcomp/items/text-item.vue +0 -75
  149. package/src/components/formcomp/items/textarea-item.vue +0 -85
  150. package/src/components/formcomp/items/time-item.vue +0 -77
  151. package/src/components/formcomp/items/time-picker-item.vue +0 -74
  152. package/src/components/formcomp/items/transfer-item.vue +0 -93
  153. package/src/components/formcomp/items/tselect-item.vue +0 -121
  154. package/src/components/formcomp/items/unknown-item.vue +0 -51
  155. package/src/components/formcomp/items/upload-item.vue +0 -189
  156. package/src/components/formcomp/items/user-item.vue +0 -177
  157. package/src/components/formcomp/items/usercomp-item.vue +0 -85
  158. package/src/components/formcomp/items/view-markdown-item.vue +0 -77
  159. package/src/components/formcomp/utils/EditDataDialog.vue +0 -67
  160. package/src/components/formcomp/utils/FieldList.vue +0 -125
  161. package/src/components/formcomp/utils/ItemRelationEventUtils.ts +0 -284
  162. package/src/components/help.vue +0 -31
  163. package/src/components/menu/MenuItem.vue +0 -95
  164. package/src/components/menu/SubMenu.vue +0 -68
  165. package/src/components/menu/SubSystemMenu.vue +0 -142
  166. package/src/components/register.ts +0 -24
  167. package/src/components/system/ContentMenu.vue +0 -260
  168. package/src/components/system/StarHorseButtonList.vue +0 -344
  169. package/src/components/system/StarHorseMenu.vue +0 -97
  170. package/src/components/system/StarHorseSvg.vue +0 -62
  171. package/src/components/system/SystemComp.ts +0 -9
  172. package/src/components/system/index.ts +0 -4
  173. package/src/components/types/ApiUrls.ts +0 -168
  174. package/src/components/types/BtnAction.ts +0 -51
  175. package/src/components/types/BtnAuth.ts +0 -43
  176. package/src/components/types/CompInfo.ts +0 -81
  177. package/src/components/types/DialogProps.ts +0 -55
  178. package/src/components/types/DyCompField.ts +0 -23
  179. package/src/components/types/DynamicNode.ts +0 -42
  180. package/src/components/types/MenusInfo.ts +0 -45
  181. package/src/components/types/PageFieldInfo.ts +0 -530
  182. package/src/components/types/PageProps.ts +0 -25
  183. package/src/components/types/Params.ts +0 -93
  184. package/src/components/types/RuleType.ts +0 -10
  185. package/src/components/types/SearchProps.ts +0 -42
  186. package/src/components/types/ShortKey.ts +0 -30
  187. package/src/components/types/StarHorseType.ts +0 -18
  188. package/src/components/types/index.ts +0 -15
  189. package/src/config/element.ts +0 -15
  190. package/src/config/styles.ts +0 -4
  191. package/src/index.ts +0 -98
  192. package/src/install.ts +0 -33
  193. package/src/lang/en_US.ts +0 -81
  194. package/src/lang/index.ts +0 -35
  195. package/src/lang/zh_CN.ts +0 -84
  196. package/src/main.ts +0 -57
  197. package/src/plugins/AblesPlugin.ts +0 -618
  198. package/src/plugins/registerCompPlugin.ts +0 -15
  199. package/src/sample/test.vue +0 -9
  200. package/src/store/ButtonPermission.ts +0 -101
  201. package/src/store/ConsumerView.ts +0 -52
  202. package/src/store/ContinusConfig.ts +0 -78
  203. package/src/store/CopyerOperation.ts +0 -74
  204. package/src/store/DesignForm.ts +0 -481
  205. package/src/store/DesignPage.ts +0 -59
  206. package/src/store/DynamicForm.ts +0 -241
  207. package/src/store/GlobalConfig.ts +0 -90
  208. package/src/store/SelfOperation.ts +0 -95
  209. package/src/store/UserInfo.ts +0 -88
  210. package/src/store/index.ts +0 -6
  211. package/src/theme/localStorge.ts +0 -16
  212. package/src/theme/theme.ts +0 -27
  213. package/src/utils/FieldOperationUtils.ts +0 -91
  214. package/src/utils/auth.ts +0 -83
  215. package/src/utils/message.ts +0 -69
  216. package/src/utils/preview.ts +0 -125
  217. package/tsconfig.json +0 -39
  218. package/tsconfig.node.json +0 -10
  219. package/vite-env.d.ts +0 -16
  220. package/vite.config.ts +0 -162
  221. package/yarn.lock +0 -4627
@@ -1,448 +0,0 @@
1
- <script setup lang="ts" name="box-container">
2
- import { computed, onMounted, PropType, reactive, ref, watch } from "vue";
3
- import { warning } from "@/utils/message";
4
- import { useDesignFormStore } from "@/store/DesignForm";
5
- import piniaInstance from "@/store/index";
6
- import StarHorseIcon from "@/components/comp/StarHorseIcon.vue";
7
- import {
8
- tableAction,
9
- tableCellOperation,
10
- } from "@/components/formcomp/container/dytableUtils";
11
- import { Config } from "@/api/settings";
12
- import { itemCheck, uuid } from "@/api/system";
13
-
14
- const props = defineProps({
15
- parentField: { type: Object as PropType<any> },
16
- formInfo: { type: Object as PropType<any> },
17
- parentComp: { type: Object as PropType<any> },
18
- isDesign: { type: Boolean, default: false },
19
- showFormItem: { type: Boolean, default: false },
20
- disabled: { type: Object as PropType<Boolean | String> },
21
- field: { type: Object as PropType<any> },
22
- isFirstRow: { type: Boolean, default: false },
23
- isLastRow: { type: Boolean, default: false },
24
- isFirstCol: { type: Boolean, default: false },
25
- isLastCol: { type: Boolean, default: false },
26
- rowIndex: { type: Number, default: -1 },
27
- colIndex: { type: Number, default: -1 },
28
- });
29
- let designForm = useDesignFormStore(piniaInstance);
30
- let draggingItem = computed(() => designForm.draggingItem);
31
- let excludeContainerType: Array<string> = [
32
- "box",
33
- "tab",
34
- "table",
35
- "dytable",
36
- "collapse",
37
- "card",
38
- ];
39
- let currentSubItemId = computed(() => designForm.currentSubItemId);
40
- let isEdit = computed(() => designForm.isEdit);
41
- const isDragging = computed(() => designForm.isDragging);
42
- const formData = defineModel("formData");
43
- const isResizing = ref(false);
44
- const resizeDirection = ref<"width" | "height" | null>(null);
45
- const startX = ref(0);
46
- const startY = ref(0);
47
- const startWidth = ref(0);
48
- const startHeight = ref(0);
49
-
50
- let buttonControl = reactive<any>({
51
- mergeLeftColDisabled: props.isFirstCol,
52
- mergeRightColDisabled: props.isLastCol,
53
- mergeWholeRowDisabled: false,
54
- mergeWholeColDisabled: false,
55
- mergeAboveRowDisabled: props.isFirstRow,
56
- mergeBelowRowDisabled: props.isLastRow,
57
- undoMergeRowDisabled: props.field.rowspan == 1,
58
- undoMergeColDisabled: props.field.colspan == 1,
59
- deleteWholeColDisabled: false,
60
- deleteWholeRowDisabled: false,
61
- });
62
-
63
- const onDragAdd = (evt: Event | any, dataList: any) => {
64
- selectCurrentTd();
65
- let newIndex = evt.newIndex;
66
- if (excludeContainerType.includes(draggingItem.value.itemType)) {
67
- warning("动态表格容器不允许嵌套其他容器");
68
- let columns = props.field?.columns;
69
- for (let sind in columns) {
70
- let column = columns[sind];
71
- for (let i in column?.items) {
72
- let item = column.items[i];
73
- if (draggingItem.value.id == item.id) {
74
- column.items.splice(i, 1);
75
- }
76
- }
77
- }
78
- return false;
79
- }
80
- if (newIndex != null && newIndex != "undefined") {
81
- let dataInfo = dataList[newIndex];
82
- designForm.selectItem(dataInfo, dataInfo.itemType, "");
83
- }
84
- };
85
-
86
- const handleTableCellCommand = (command: string) => {
87
- tableCellOperation(command, props);
88
- };
89
- const selectCurrentTd = () => {
90
- designForm.setSubItemId(props.field._uuid);
91
- };
92
- // 修正事件处理逻辑
93
- const handleResizeStart = (e: MouseEvent) => {
94
- const target = e.currentTarget as HTMLElement; // 使用 currentTarget 替代 target
95
- const rect = target.getBoundingClientRect();
96
-
97
- // 计算相对位置时考虑边框
98
- const isWidthResize = e.clientX > rect.right - 8;
99
- const isHeightResize = e.clientY > rect.bottom - 8;
100
-
101
- if (isWidthResize || isHeightResize) {
102
- e.preventDefault();
103
- isResizing.value = true;
104
- resizeDirection.value = isWidthResize ? "width" : "height";
105
- startX.value = e.clientX;
106
- startY.value = e.clientY;
107
- startWidth.value = rect.width;
108
- startHeight.value = rect.height;
109
-
110
- document.addEventListener("mousemove", handleResizeMove);
111
- document.addEventListener("mouseup", handleResizeEnd);
112
- }
113
- };
114
-
115
- const handleResizeMove = (e: MouseEvent) => {
116
- if (!isResizing.value) return;
117
-
118
- if (resizeDirection.value === "width") {
119
- const delta = e.clientX - startX.value;
120
- const newWidth = startWidth.value + delta;
121
- // 同步更新所有关联行中相同列索引的宽度
122
- props.parentField?.preps.elements.forEach((row) => {
123
- const targetCol = row.columns[props.colIndex];
124
- if (targetCol) {
125
- targetCol.colWidth = `${Math.max(20, newWidth)}px`;
126
- }
127
- });
128
- } else {
129
- const delta = e.clientY - startY.value;
130
- const newHeight = startHeight.value + delta;
131
- props.field.colHeight = `${Math.max(20, newHeight)}px`; // 最小20px
132
- }
133
- };
134
-
135
- const handleResizeEnd = () => {
136
- isResizing.value = false;
137
- resizeDirection.value = null;
138
- document.removeEventListener("mousemove", handleResizeMove);
139
- document.removeEventListener("mouseup", handleResizeEnd);
140
- };
141
- const init = () => {
142
- tableAction(props, buttonControl);
143
- };
144
- onMounted(() => {
145
- init();
146
- });
147
- //监控数据
148
- watch(
149
- () => props.parentField,
150
- () => tableAction(props, buttonControl),
151
- {
152
- immediate: false,
153
- deep: true,
154
- },
155
- );
156
- </script>
157
- <template>
158
- <td
159
- class="edit_col"
160
- :class="{
161
- 'dragging-area': isDragging,
162
- 'no-drag': !isEdit,
163
- }"
164
- :colspan="field.colspan || 1"
165
- :rowspan="field.rowspan || 1"
166
- :style="{
167
- width: field.colWidth || '100%',
168
- height: field.colHeight || '40px',
169
- 'word-break': !!field.wordBreak ? 'break-all' : 'normal',
170
- }"
171
- @click="selectCurrentTd"
172
- @mousedown="handleResizeStart"
173
- >
174
- <draggable
175
- @add="(evt: Event) => onDragAdd(evt, field.items)"
176
- class="smain-design"
177
- tag="div"
178
- :item-key="uuid()"
179
- group="starHorseGroup"
180
- ghostClass="ghost"
181
- animation="200"
182
- :list="field.items"
183
- >
184
- <template #item="{ element: data }">
185
- <div
186
- :class="{
187
- 'comp-item': data?.preps['headerFlag'] != 'Y',
188
- 'bare-item': data?.preps['headerFlag'],
189
- }"
190
- >
191
- <component
192
- :key="data?.id"
193
- :field="data"
194
- :formInfo="formInfo"
195
- :isDesign="isDesign"
196
- :showFormItem="showFormItem"
197
- :disabled="disabled"
198
- :is="itemCheck(data)"
199
- :parentField="parentField"
200
- v-model:formData="formData"
201
- />
202
- </div>
203
- </template>
204
- </draggable>
205
- <div
206
- class="table-cell-action"
207
- v-if="isEdit && isDesign && currentSubItemId == field._uuid"
208
- >
209
- <el-dropdown
210
- trigger="click"
211
- @command="handleTableCellCommand"
212
- :size="Config.compSize"
213
- >
214
- <star-horse-icon
215
- icon-class="menu"
216
- style="color: var(--star-horse-white)"
217
- />
218
- <template #dropdown>
219
- <el-dropdown-menu>
220
- <el-dropdown-item command="insertLeftCol"
221
- >左边插入列</el-dropdown-item
222
- >
223
- <el-dropdown-item command="insertRightCol"
224
- >右边插入列</el-dropdown-item
225
- >
226
- <el-dropdown-item command="insertAboveRow"
227
- >插入上方行</el-dropdown-item
228
- >
229
- <el-dropdown-item command="insertBelowRow"
230
- >插入下方行</el-dropdown-item
231
- >
232
-
233
- <el-dropdown-item
234
- command="mergeLeftCol"
235
- :disabled="buttonControl.mergeLeftColDisabled"
236
- divided
237
- >合并左边单元格
238
- </el-dropdown-item>
239
- <el-dropdown-item
240
- command="mergeRightCol"
241
- :disabled="buttonControl.mergeRightColDisabled"
242
- >合并右单元格
243
- </el-dropdown-item>
244
- <el-dropdown-item
245
- command="mergeWholeRow"
246
- :disabled="buttonControl.mergeWholeRowDisabled"
247
- >合并整行
248
- </el-dropdown-item>
249
-
250
- <el-dropdown-item
251
- command="mergeAboveRow"
252
- :disabled="buttonControl.mergeAboveRowDisabled"
253
- divided
254
- >合并上边单元格
255
- </el-dropdown-item>
256
- <el-dropdown-item
257
- command="mergeBelowRow"
258
- :disabled="buttonControl.mergeBelowRowDisabled"
259
- >合并下边单元格
260
- </el-dropdown-item>
261
- <el-dropdown-item
262
- command="mergeWholeCol"
263
- :disabled="buttonControl.mergeWholeColDisabled"
264
- >合并整列
265
- </el-dropdown-item>
266
-
267
- <el-dropdown-item
268
- command="undoMergeRow"
269
- :disabled="buttonControl.undoMergeRowDisabled"
270
- divided
271
- >撤销行合并
272
- </el-dropdown-item>
273
- <el-dropdown-item
274
- command="undoMergeCol"
275
- :disabled="buttonControl.undoMergeColDisabled"
276
- >撤销列合并
277
- </el-dropdown-item>
278
-
279
- <el-dropdown-item
280
- command="deleteWholeCol"
281
- :disabled="buttonControl.deleteWholeColDisabled"
282
- divided
283
- >删除整列
284
- </el-dropdown-item>
285
- <el-dropdown-item
286
- command="deleteWholeRow"
287
- :disabled="buttonControl.deleteWholeRowDisabled"
288
- >删除整行
289
- </el-dropdown-item>
290
- <el-dropdown-item command="colConfig" divided
291
- >列设置</el-dropdown-item
292
- >
293
- </el-dropdown-menu>
294
- </template>
295
- </el-dropdown>
296
- </div>
297
- </td>
298
- </template>
299
- <style lang="scss" scoped>
300
- .smain-design {
301
- width: 100%;
302
- background: var(--star-horse-background);
303
- border-radius: 3px;
304
- height: 100%;
305
- display: flex;
306
- //pointer-events: none; // 禁止内部元素拦截事件
307
- flex-direction: column;
308
- vertical-align: middle;
309
- justify-content: center;
310
- align-items: center;
311
-
312
- .comp-item {
313
- margin: unset;
314
- }
315
-
316
- .bare-item {
317
- width: 100%;
318
- height: 100%;
319
-
320
- div {
321
- width: 100%;
322
- height: 100%;
323
- }
324
- }
325
- }
326
-
327
- .edit_col {
328
- display: table-cell;
329
- min-height: 50px;
330
- position: relative;
331
- user-select: none;
332
- transition:
333
- width 0.2s,
334
- height 0.2s;
335
- border: 1px solid var(--star-horse-border—color);
336
-
337
- .table-cell-action {
338
- position: absolute;
339
- //bottom: -30px;
340
- pointer-events: auto; // 恢复操作按钮的点击
341
- bottom: 0;
342
- right: -2px;
343
- height: 28px;
344
- line-height: 28px;
345
- background: var(--star-horse-style);
346
- z-index: 999;
347
-
348
- display: flex;
349
- align-items: center;
350
-
351
- svg {
352
- font-size: 14px;
353
- color: #fff;
354
- margin: 0 5px;
355
- cursor: pointer;
356
- }
357
- }
358
-
359
- &::after,
360
- &::before {
361
- z-index: 1000; // 提升到最高层级
362
- pointer-events: none; // 允许穿透点击
363
- }
364
-
365
- &::after {
366
- content: "";
367
- position: absolute;
368
- top: 0;
369
- bottom: 0;
370
- right: -3px !important; // 扩展右侧触发区域
371
- width: 6px; // 加宽触发范围
372
- pointer-events: auto !important; // 允许响应鼠标事件
373
- cursor: col-resize;
374
- background: var(--star-horse-style);
375
- opacity: 0;
376
- z-index: 1001;
377
- transition:
378
- opacity 0.3s,
379
- right 0.1s; // 添加手柄位置过渡
380
- }
381
-
382
- &.no-transition {
383
- transition: none !important;
384
- }
385
-
386
- &:hover {
387
- &::after,
388
- &::before {
389
- opacity: 1; // 提高可见度
390
- transition-delay: 0.1s; // 添加悬停延迟避免误触发
391
- }
392
- }
393
-
394
- // 修正事件处理逻辑
395
- &[colspan]::after {
396
- top: 10%;
397
- height: 80%; // 跨行合并时保持拖拽区域
398
- }
399
-
400
- // 保证后续列可操作
401
- &[colspan] + .edit_col::after {
402
- z-index: 1002;
403
- }
404
-
405
- &::before {
406
- content: "";
407
- position: absolute;
408
- left: 10%;
409
- right: 0;
410
- bottom: -3px; // 扩展底部触发区域
411
- height: 6px; // 加高触发范围
412
- pointer-events: auto; // 允许响应鼠标事件
413
- cursor: row-resize;
414
- width: 80%;
415
- background: var(--star-horse-style);
416
- opacity: 0;
417
- transition:
418
- opacity 0.3s,
419
- bottom 0.1s;
420
- }
421
-
422
- &:hover {
423
- &::after,
424
- &::before {
425
- opacity: 0.5;
426
- }
427
- }
428
-
429
- &.is-resizing {
430
- background: rgba(64, 158, 255, 0.1);
431
- }
432
-
433
- &.no-drag {
434
- &::after,
435
- &::before {
436
- display: none !important; // 禁用拖拽手柄
437
- pointer-events: none !important;
438
- }
439
-
440
- &:hover {
441
- &::after,
442
- &::before {
443
- opacity: 0 !important;
444
- }
445
- }
446
- }
447
- }
448
- </style>
@@ -1,57 +0,0 @@
1
- <script setup lang="ts" name="dytable-container">
2
- // 右键菜单组件
3
- import { PropType, ref } from "vue";
4
- import DytableCol from "@/components/formcomp/container/dytable-col.vue";
5
-
6
- let containerTableRef = ref(); // 强制刷新表格
7
- defineProps({
8
- parentField: { type: String },
9
- isDesign: { type: Boolean, default: false },
10
- showFormItem: { type: Boolean, default: false },
11
- disabled: { type: Object as PropType<Boolean | String> },
12
- formInfo: { type: Object as PropType<any> },
13
- field: { type: Object as PropType<any> },
14
- });
15
- const formData = defineModel("formData");
16
- </script>
17
- <template>
18
- <group-box-container
19
- class="star-horse-form-container"
20
- :showFormItem="showFormItem"
21
- :isDesign="isDesign"
22
- :disabled="disabled"
23
- :parentField="parentField"
24
- :form-item="field"
25
- >
26
- <table ref="containerTableRef" class="dynamic-table">
27
- <tbody>
28
- <tr v-for="(row, rowIndex) in field.preps.elements" class="dy-tr">
29
- <template v-for="(td, colIndex) in row.columns">
30
- <dytable-col
31
- :field="td"
32
- :formInfo="formInfo"
33
- v-model:formData="formData"
34
- :isDesign="isDesign"
35
- :showFormItem="showFormItem"
36
- :disabled="disabled"
37
- :isFirstRow="rowIndex == 0"
38
- :parentField="field"
39
- :isLastRow="rowIndex == field.preps.elements.length - 1"
40
- :isFirstCol="colIndex == 0"
41
- :isLastCol="colIndex == row.columns.length - 1"
42
- :rowIndex="rowIndex"
43
- :colIndex="colIndex"
44
- class="dy-cell"
45
- />
46
- </template>
47
- </tr>
48
- </tbody>
49
- </table>
50
- </group-box-container>
51
- </template>
52
- <style lang="scss" scoped>
53
- .dynamic-table {
54
- width: 100% !important;
55
- border-collapse: collapse;
56
- }
57
- </style>