star-horse-lowcode 2.7.65 → 2.7.66

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 (220) hide show
  1. package/README.md +1 -0
  2. package/dist/assets/index.css +1 -1
  3. package/dist/index.es.js +491 -253
  4. package/package.json +1 -1
  5. package/.env.development +0 -3
  6. package/.env.production +0 -3
  7. package/.eslintrc-auto-import.json +0 -77
  8. package/.gitignore +0 -27
  9. package/.idea/.gitignore +0 -5
  10. package/.idea/MarsCodeWorkspaceAppSettings.xml +0 -6
  11. package/.idea/inspectionProfiles/Project_Default.xml +0 -7
  12. package/.idea/modules.xml +0 -8
  13. package/.idea/testcode.iml +0 -12
  14. package/.idea/vcs.xml +0 -6
  15. package/.idea/watcherTasks.xml +0 -4
  16. package/.idea/workspace.xml +0 -207
  17. package/.npmignore +0 -21
  18. package/.prettierignore +0 -26
  19. package/auto-imports.d.ts +0 -137
  20. package/components.d.ts +0 -189
  21. package/eslint.config.js +0 -37
  22. package/index.html +0 -14
  23. package/package-lock.json +0 -8276
  24. package/prettier.config.js +0 -20
  25. package/public/logo.svg +0 -660
  26. package/src/App.vue +0 -11
  27. package/src/api/date_utils.ts +0 -219
  28. package/src/api/finger_utils.ts +0 -71
  29. package/src/api/form_utils.ts +0 -281
  30. package/src/api/jquery.min.js +0 -2
  31. package/src/api/pcas-code.json +0 -1
  32. package/src/api/settings.ts +0 -81
  33. package/src/api/star_horse_apis.ts +0 -196
  34. package/src/api/star_horse_utils.ts +0 -797
  35. package/src/api/system.ts +0 -351
  36. package/src/api/user_func.ts +0 -147
  37. package/src/api/valid_utils.ts +0 -165
  38. package/src/assets/css/index.scss +0 -908
  39. package/src/assets/icons.css +0 -574
  40. package/src/assets/star-horse-icons.woff +0 -0
  41. package/src/components/comp/ShDynamicForm.vue +0 -160
  42. package/src/components/comp/ShForm.vue +0 -30
  43. package/src/components/comp/ShTableListColumn.vue +0 -61
  44. package/src/components/comp/StarHorseDataSelector.vue +0 -139
  45. package/src/components/comp/StarHorseDataView.vue +0 -110
  46. package/src/components/comp/StarHorseDataViewItems.vue +0 -61
  47. package/src/components/comp/StarHorseDataViewTable.vue +0 -102
  48. package/src/components/comp/StarHorseDialog.vue +0 -383
  49. package/src/components/comp/StarHorseDraggable.vue +0 -401
  50. package/src/components/comp/StarHorseForm.vue +0 -458
  51. package/src/components/comp/StarHorseFormItem.vue +0 -82
  52. package/src/components/comp/StarHorseFormList.vue +0 -516
  53. package/src/components/comp/StarHorseFormTable.vue +0 -56
  54. package/src/components/comp/StarHorseIcon.vue +0 -76
  55. package/src/components/comp/StarHorseItem.vue +0 -302
  56. package/src/components/comp/StarHorseJsonEditor.vue +0 -115
  57. package/src/components/comp/StarHorsePopover.vue +0 -66
  58. package/src/components/comp/StarHorseSearchComp.vue +0 -253
  59. package/src/components/comp/StarHorseStaticTable.vue +0 -395
  60. package/src/components/comp/StarHorseTableColumn.vue +0 -249
  61. package/src/components/comp/StarHorseTableComp.vue +0 -1193
  62. package/src/components/comp/StarHorseTableViewColumn.vue +0 -61
  63. package/src/components/comp/StarHorseTree.vue +0 -494
  64. package/src/components/comp/index.ts +0 -22
  65. package/src/components/comp/items/UTableColumn.vue +0 -65
  66. package/src/components/comp/items/boxItem.vue +0 -98
  67. package/src/components/comp/items/callitem.ts +0 -9
  68. package/src/components/comp/items/cardItem.vue +0 -152
  69. package/src/components/comp/items/collapseItem.vue +0 -134
  70. package/src/components/comp/items/dytableItem.vue +0 -135
  71. package/src/components/comp/items/otherItem.vue +0 -65
  72. package/src/components/comp/items/tabItem.vue +0 -155
  73. package/src/components/comp/items/tabPanelItem.vue +0 -110
  74. package/src/components/comp/items/tableColumn.vue +0 -129
  75. package/src/components/comp/items/tableItem.vue +0 -97
  76. package/src/components/comp/items/tablebtn.vue +0 -158
  77. package/src/components/comp/items/viewBoxItem.vue +0 -55
  78. package/src/components/comp/items/viewCardItem.vue +0 -47
  79. package/src/components/comp/items/viewCollapseItem.vue +0 -71
  80. package/src/components/comp/items/viewDytableItem.vue +0 -77
  81. package/src/components/comp/items/viewOtherItem.vue +0 -55
  82. package/src/components/comp/items/viewTabItem.vue +0 -77
  83. package/src/components/comp/items/viewTabPanelItem.vue +0 -54
  84. package/src/components/comp/items/viewTableItem.vue +0 -74
  85. package/src/components/comp/selfcomp.ts +0 -9
  86. package/src/components/comp/utils/DataPicker.vue +0 -302
  87. package/src/components/comp/utils/DataTag.vue +0 -51
  88. package/src/components/cron/Crontab-Day.vue +0 -230
  89. package/src/components/cron/Crontab-Hour.vue +0 -165
  90. package/src/components/cron/Crontab-Min.vue +0 -166
  91. package/src/components/cron/Crontab-Month.vue +0 -166
  92. package/src/components/cron/Crontab-Result.vue +0 -615
  93. package/src/components/cron/Crontab-Second.vue +0 -185
  94. package/src/components/cron/Crontab-Week.vue +0 -208
  95. package/src/components/cron/Crontab-Year.vue +0 -183
  96. package/src/components/cron/Crontab.vue +0 -474
  97. package/src/components/enums/ModuleEnums.ts +0 -10
  98. package/src/components/enums/ServiceEnums.ts +0 -18
  99. package/src/components/formcomp/container/box-container.vue +0 -162
  100. package/src/components/formcomp/container/callitem.ts +0 -9
  101. package/src/components/formcomp/container/card-container.vue +0 -170
  102. package/src/components/formcomp/container/collapse-container.vue +0 -133
  103. package/src/components/formcomp/container/dytable-col.vue +0 -448
  104. package/src/components/formcomp/container/dytable-container.vue +0 -57
  105. package/src/components/formcomp/container/dytableUtils.ts +0 -358
  106. package/src/components/formcomp/container/group-box-container.vue +0 -331
  107. package/src/components/formcomp/container/index.ts +0 -6
  108. package/src/components/formcomp/container/tab-container.vue +0 -153
  109. package/src/components/formcomp/container/table-container.vue +0 -249
  110. package/src/components/formcomp/items/allitem.ts +0 -9
  111. package/src/components/formcomp/items/area-item.vue +0 -116
  112. package/src/components/formcomp/items/audio-item.vue +0 -163
  113. package/src/components/formcomp/items/autocomplete-item.vue +0 -118
  114. package/src/components/formcomp/items/barcode-item.vue +0 -87
  115. package/src/components/formcomp/items/base-json-item.vue +0 -207
  116. package/src/components/formcomp/items/button-item.vue +0 -228
  117. package/src/components/formcomp/items/cascade-item.vue +0 -113
  118. package/src/components/formcomp/items/checkbox-item.vue +0 -97
  119. package/src/components/formcomp/items/color-item.vue +0 -70
  120. package/src/components/formcomp/items/cron-item.vue +0 -115
  121. package/src/components/formcomp/items/datetime-item.vue +0 -99
  122. package/src/components/formcomp/items/depart-item.vue +0 -51
  123. package/src/components/formcomp/items/dialog-input-item.vue +0 -207
  124. package/src/components/formcomp/items/divider-item.vue +0 -66
  125. package/src/components/formcomp/items/html-item.vue +0 -65
  126. package/src/components/formcomp/items/htmleditor-item.vue +0 -104
  127. package/src/components/formcomp/items/icon-item.vue +0 -195
  128. package/src/components/formcomp/items/image-item.vue +0 -247
  129. package/src/components/formcomp/items/index.ts +0 -44
  130. package/src/components/formcomp/items/input-item.vue +0 -150
  131. package/src/components/formcomp/items/json-array-item.vue +0 -67
  132. package/src/components/formcomp/items/json-item.vue +0 -66
  133. package/src/components/formcomp/items/markdown-item.vue +0 -77
  134. package/src/components/formcomp/items/number-item.vue +0 -94
  135. package/src/components/formcomp/items/number-range-item.vue +0 -278
  136. package/src/components/formcomp/items/page-select-item.vue +0 -407
  137. package/src/components/formcomp/items/password-item.vue +0 -71
  138. package/src/components/formcomp/items/qrcode-item.vue +0 -84
  139. package/src/components/formcomp/items/radio-item.vue +0 -112
  140. package/src/components/formcomp/items/rate-item.vue +0 -68
  141. package/src/components/formcomp/items/select-item.vue +0 -133
  142. package/src/components/formcomp/items/signature-item.vue +0 -216
  143. package/src/components/formcomp/items/slider-item.vue +0 -68
  144. package/src/components/formcomp/items/starhorse-form-item.vue +0 -334
  145. package/src/components/formcomp/items/switch-item.vue +0 -77
  146. package/src/components/formcomp/items/tag-item.vue +0 -77
  147. package/src/components/formcomp/items/text-item.vue +0 -75
  148. package/src/components/formcomp/items/textarea-item.vue +0 -85
  149. package/src/components/formcomp/items/time-item.vue +0 -77
  150. package/src/components/formcomp/items/time-picker-item.vue +0 -74
  151. package/src/components/formcomp/items/transfer-item.vue +0 -93
  152. package/src/components/formcomp/items/tselect-item.vue +0 -121
  153. package/src/components/formcomp/items/unknown-item.vue +0 -51
  154. package/src/components/formcomp/items/upload-item.vue +0 -189
  155. package/src/components/formcomp/items/user-item.vue +0 -177
  156. package/src/components/formcomp/items/usercomp-item.vue +0 -85
  157. package/src/components/formcomp/items/view-markdown-item.vue +0 -77
  158. package/src/components/formcomp/utils/EditDataDialog.vue +0 -67
  159. package/src/components/formcomp/utils/FieldList.vue +0 -125
  160. package/src/components/formcomp/utils/ItemRelationEventUtils.ts +0 -284
  161. package/src/components/help.vue +0 -31
  162. package/src/components/menu/MenuItem.vue +0 -95
  163. package/src/components/menu/SubMenu.vue +0 -68
  164. package/src/components/menu/SubSystemMenu.vue +0 -142
  165. package/src/components/register.ts +0 -24
  166. package/src/components/system/ContentMenu.vue +0 -260
  167. package/src/components/system/StarHorseButtonList.vue +0 -344
  168. package/src/components/system/StarHorseMenu.vue +0 -97
  169. package/src/components/system/StarHorseSvg.vue +0 -62
  170. package/src/components/system/SystemComp.ts +0 -9
  171. package/src/components/system/index.ts +0 -4
  172. package/src/components/types/ApiUrls.ts +0 -168
  173. package/src/components/types/BtnAction.ts +0 -51
  174. package/src/components/types/BtnAuth.ts +0 -43
  175. package/src/components/types/CompInfo.ts +0 -81
  176. package/src/components/types/DialogProps.ts +0 -55
  177. package/src/components/types/DyCompField.ts +0 -23
  178. package/src/components/types/DynamicNode.ts +0 -42
  179. package/src/components/types/MenusInfo.ts +0 -45
  180. package/src/components/types/PageFieldInfo.ts +0 -530
  181. package/src/components/types/PageProps.ts +0 -25
  182. package/src/components/types/Params.ts +0 -93
  183. package/src/components/types/RuleType.ts +0 -10
  184. package/src/components/types/SearchProps.ts +0 -42
  185. package/src/components/types/ShortKey.ts +0 -30
  186. package/src/components/types/StarHorseType.ts +0 -18
  187. package/src/components/types/index.ts +0 -15
  188. package/src/config/element.ts +0 -15
  189. package/src/config/styles.ts +0 -4
  190. package/src/index.ts +0 -98
  191. package/src/install.ts +0 -33
  192. package/src/lang/en_US.ts +0 -81
  193. package/src/lang/index.ts +0 -35
  194. package/src/lang/zh_CN.ts +0 -84
  195. package/src/main.ts +0 -57
  196. package/src/plugins/AblesPlugin.ts +0 -618
  197. package/src/plugins/registerCompPlugin.ts +0 -15
  198. package/src/sample/test.vue +0 -9
  199. package/src/store/ButtonPermission.ts +0 -101
  200. package/src/store/ConsumerView.ts +0 -52
  201. package/src/store/ContinusConfig.ts +0 -78
  202. package/src/store/CopyerOperation.ts +0 -74
  203. package/src/store/DesignForm.ts +0 -481
  204. package/src/store/DesignPage.ts +0 -59
  205. package/src/store/DynamicForm.ts +0 -241
  206. package/src/store/GlobalConfig.ts +0 -90
  207. package/src/store/SelfOperation.ts +0 -95
  208. package/src/store/UserInfo.ts +0 -88
  209. package/src/store/index.ts +0 -6
  210. package/src/theme/localStorge.ts +0 -16
  211. package/src/theme/theme.ts +0 -27
  212. package/src/utils/FieldOperationUtils.ts +0 -91
  213. package/src/utils/auth.ts +0 -83
  214. package/src/utils/message.ts +0 -69
  215. package/src/utils/preview.ts +0 -125
  216. package/tsconfig.json +0 -39
  217. package/tsconfig.node.json +0 -10
  218. package/vite-env.d.ts +0 -16
  219. package/vite.config.ts +0 -162
  220. 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>