star-horse-lowcode 2.7.63 → 2.7.65

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/.env.development +3 -0
  2. package/.env.production +3 -0
  3. package/.eslintrc-auto-import.json +77 -0
  4. package/.gitignore +27 -0
  5. package/.idea/.gitignore +5 -0
  6. package/.idea/MarsCodeWorkspaceAppSettings.xml +6 -0
  7. package/.idea/inspectionProfiles/Project_Default.xml +7 -0
  8. package/.idea/modules.xml +8 -0
  9. package/.idea/testcode.iml +12 -0
  10. package/.idea/vcs.xml +6 -0
  11. package/.idea/watcherTasks.xml +4 -0
  12. package/.idea/workspace.xml +207 -0
  13. package/.npmignore +21 -0
  14. package/.prettierignore +26 -0
  15. package/README.md +1 -0
  16. package/auto-imports.d.ts +137 -0
  17. package/components.d.ts +189 -0
  18. package/dist/assets/index.css +1 -1
  19. package/dist/index.es.js +19 -19
  20. package/dist/types/index.d.ts +7 -7
  21. package/eslint.config.js +37 -0
  22. package/index.html +14 -0
  23. package/package-lock.json +8276 -0
  24. package/package.json +4 -4
  25. package/prettier.config.js +20 -0
  26. package/public/logo.svg +660 -0
  27. package/src/App.vue +11 -0
  28. package/src/api/date_utils.ts +219 -0
  29. package/src/api/finger_utils.ts +71 -0
  30. package/src/api/form_utils.ts +281 -0
  31. package/src/api/jquery.min.js +2 -0
  32. package/src/api/pcas-code.json +1 -0
  33. package/src/api/settings.ts +81 -0
  34. package/src/api/star_horse_apis.ts +196 -0
  35. package/src/api/star_horse_utils.ts +797 -0
  36. package/src/api/system.ts +351 -0
  37. package/src/api/user_func.ts +147 -0
  38. package/src/api/valid_utils.ts +165 -0
  39. package/src/assets/css/index.scss +908 -0
  40. package/src/assets/icons.css +574 -0
  41. package/src/assets/star-horse-icons.woff +0 -0
  42. package/src/components/comp/ShDynamicForm.vue +160 -0
  43. package/src/components/comp/ShForm.vue +30 -0
  44. package/src/components/comp/ShTableListColumn.vue +61 -0
  45. package/src/components/comp/StarHorseDataSelector.vue +139 -0
  46. package/src/components/comp/StarHorseDataView.vue +110 -0
  47. package/src/components/comp/StarHorseDataViewItems.vue +61 -0
  48. package/src/components/comp/StarHorseDataViewTable.vue +102 -0
  49. package/src/components/comp/StarHorseDialog.vue +383 -0
  50. package/src/components/comp/StarHorseDraggable.vue +401 -0
  51. package/src/components/comp/StarHorseForm.vue +458 -0
  52. package/src/components/comp/StarHorseFormItem.vue +82 -0
  53. package/src/components/comp/StarHorseFormList.vue +516 -0
  54. package/src/components/comp/StarHorseFormTable.vue +56 -0
  55. package/src/components/comp/StarHorseIcon.vue +76 -0
  56. package/src/components/comp/StarHorseItem.vue +302 -0
  57. package/src/components/comp/StarHorseJsonEditor.vue +115 -0
  58. package/src/components/comp/StarHorsePopover.vue +66 -0
  59. package/src/components/comp/StarHorseSearchComp.vue +253 -0
  60. package/src/components/comp/StarHorseStaticTable.vue +395 -0
  61. package/src/components/comp/StarHorseTableColumn.vue +249 -0
  62. package/src/components/comp/StarHorseTableComp.vue +1193 -0
  63. package/src/components/comp/StarHorseTableViewColumn.vue +61 -0
  64. package/src/components/comp/StarHorseTree.vue +494 -0
  65. package/src/components/comp/index.ts +22 -0
  66. package/src/components/comp/items/UTableColumn.vue +65 -0
  67. package/src/components/comp/items/boxItem.vue +98 -0
  68. package/src/components/comp/items/callitem.ts +9 -0
  69. package/src/components/comp/items/cardItem.vue +152 -0
  70. package/src/components/comp/items/collapseItem.vue +134 -0
  71. package/src/components/comp/items/dytableItem.vue +135 -0
  72. package/src/components/comp/items/otherItem.vue +65 -0
  73. package/src/components/comp/items/tabItem.vue +155 -0
  74. package/src/components/comp/items/tabPanelItem.vue +110 -0
  75. package/src/components/comp/items/tableColumn.vue +129 -0
  76. package/src/components/comp/items/tableItem.vue +97 -0
  77. package/src/components/comp/items/tablebtn.vue +158 -0
  78. package/src/components/comp/items/viewBoxItem.vue +55 -0
  79. package/src/components/comp/items/viewCardItem.vue +47 -0
  80. package/src/components/comp/items/viewCollapseItem.vue +71 -0
  81. package/src/components/comp/items/viewDytableItem.vue +77 -0
  82. package/src/components/comp/items/viewOtherItem.vue +55 -0
  83. package/src/components/comp/items/viewTabItem.vue +77 -0
  84. package/src/components/comp/items/viewTabPanelItem.vue +54 -0
  85. package/src/components/comp/items/viewTableItem.vue +74 -0
  86. package/src/components/comp/selfcomp.ts +9 -0
  87. package/src/components/comp/utils/DataPicker.vue +302 -0
  88. package/src/components/comp/utils/DataTag.vue +51 -0
  89. package/src/components/cron/Crontab-Day.vue +230 -0
  90. package/src/components/cron/Crontab-Hour.vue +165 -0
  91. package/src/components/cron/Crontab-Min.vue +166 -0
  92. package/src/components/cron/Crontab-Month.vue +166 -0
  93. package/src/components/cron/Crontab-Result.vue +615 -0
  94. package/src/components/cron/Crontab-Second.vue +185 -0
  95. package/src/components/cron/Crontab-Week.vue +208 -0
  96. package/src/components/cron/Crontab-Year.vue +183 -0
  97. package/src/components/cron/Crontab.vue +474 -0
  98. package/src/components/enums/ModuleEnums.ts +10 -0
  99. package/src/components/enums/ServiceEnums.ts +18 -0
  100. package/src/components/formcomp/container/box-container.vue +162 -0
  101. package/src/components/formcomp/container/callitem.ts +9 -0
  102. package/src/components/formcomp/container/card-container.vue +170 -0
  103. package/src/components/formcomp/container/collapse-container.vue +133 -0
  104. package/src/components/formcomp/container/dytable-col.vue +448 -0
  105. package/src/components/formcomp/container/dytable-container.vue +57 -0
  106. package/src/components/formcomp/container/dytableUtils.ts +358 -0
  107. package/src/components/formcomp/container/group-box-container.vue +331 -0
  108. package/src/components/formcomp/container/index.ts +6 -0
  109. package/src/components/formcomp/container/tab-container.vue +153 -0
  110. package/src/components/formcomp/container/table-container.vue +249 -0
  111. package/src/components/formcomp/items/allitem.ts +9 -0
  112. package/src/components/formcomp/items/area-item.vue +116 -0
  113. package/src/components/formcomp/items/audio-item.vue +163 -0
  114. package/src/components/formcomp/items/autocomplete-item.vue +118 -0
  115. package/src/components/formcomp/items/barcode-item.vue +87 -0
  116. package/src/components/formcomp/items/base-json-item.vue +207 -0
  117. package/src/components/formcomp/items/button-item.vue +228 -0
  118. package/src/components/formcomp/items/cascade-item.vue +113 -0
  119. package/src/components/formcomp/items/checkbox-item.vue +97 -0
  120. package/src/components/formcomp/items/color-item.vue +70 -0
  121. package/src/components/formcomp/items/cron-item.vue +115 -0
  122. package/src/components/formcomp/items/datetime-item.vue +99 -0
  123. package/src/components/formcomp/items/depart-item.vue +51 -0
  124. package/src/components/formcomp/items/dialog-input-item.vue +207 -0
  125. package/src/components/formcomp/items/divider-item.vue +66 -0
  126. package/src/components/formcomp/items/html-item.vue +65 -0
  127. package/src/components/formcomp/items/htmleditor-item.vue +104 -0
  128. package/src/components/formcomp/items/icon-item.vue +195 -0
  129. package/src/components/formcomp/items/image-item.vue +247 -0
  130. package/src/components/formcomp/items/index.ts +44 -0
  131. package/src/components/formcomp/items/input-item.vue +150 -0
  132. package/src/components/formcomp/items/json-array-item.vue +67 -0
  133. package/src/components/formcomp/items/json-item.vue +66 -0
  134. package/src/components/formcomp/items/markdown-item.vue +77 -0
  135. package/src/components/formcomp/items/number-item.vue +94 -0
  136. package/src/components/formcomp/items/number-range-item.vue +278 -0
  137. package/src/components/formcomp/items/page-select-item.vue +407 -0
  138. package/src/components/formcomp/items/password-item.vue +71 -0
  139. package/src/components/formcomp/items/qrcode-item.vue +84 -0
  140. package/src/components/formcomp/items/radio-item.vue +112 -0
  141. package/src/components/formcomp/items/rate-item.vue +68 -0
  142. package/src/components/formcomp/items/select-item.vue +133 -0
  143. package/src/components/formcomp/items/signature-item.vue +216 -0
  144. package/src/components/formcomp/items/slider-item.vue +68 -0
  145. package/src/components/formcomp/items/starhorse-form-item.vue +334 -0
  146. package/src/components/formcomp/items/switch-item.vue +77 -0
  147. package/src/components/formcomp/items/tag-item.vue +77 -0
  148. package/src/components/formcomp/items/text-item.vue +75 -0
  149. package/src/components/formcomp/items/textarea-item.vue +85 -0
  150. package/src/components/formcomp/items/time-item.vue +77 -0
  151. package/src/components/formcomp/items/time-picker-item.vue +74 -0
  152. package/src/components/formcomp/items/transfer-item.vue +93 -0
  153. package/src/components/formcomp/items/tselect-item.vue +121 -0
  154. package/src/components/formcomp/items/unknown-item.vue +51 -0
  155. package/src/components/formcomp/items/upload-item.vue +189 -0
  156. package/src/components/formcomp/items/user-item.vue +177 -0
  157. package/src/components/formcomp/items/usercomp-item.vue +85 -0
  158. package/src/components/formcomp/items/view-markdown-item.vue +77 -0
  159. package/src/components/formcomp/utils/EditDataDialog.vue +67 -0
  160. package/src/components/formcomp/utils/FieldList.vue +125 -0
  161. package/src/components/formcomp/utils/ItemRelationEventUtils.ts +284 -0
  162. package/src/components/help.vue +31 -0
  163. package/src/components/menu/MenuItem.vue +95 -0
  164. package/src/components/menu/SubMenu.vue +68 -0
  165. package/src/components/menu/SubSystemMenu.vue +142 -0
  166. package/src/components/register.ts +24 -0
  167. package/src/components/system/ContentMenu.vue +260 -0
  168. package/src/components/system/StarHorseButtonList.vue +344 -0
  169. package/src/components/system/StarHorseMenu.vue +97 -0
  170. package/src/components/system/StarHorseSvg.vue +62 -0
  171. package/src/components/system/SystemComp.ts +9 -0
  172. package/src/components/system/index.ts +4 -0
  173. package/src/components/types/ApiUrls.ts +168 -0
  174. package/src/components/types/BtnAction.ts +51 -0
  175. package/src/components/types/BtnAuth.ts +43 -0
  176. package/src/components/types/CompInfo.ts +81 -0
  177. package/src/components/types/DialogProps.ts +55 -0
  178. package/src/components/types/DyCompField.ts +23 -0
  179. package/src/components/types/DynamicNode.ts +42 -0
  180. package/src/components/types/MenusInfo.ts +45 -0
  181. package/src/components/types/PageFieldInfo.ts +530 -0
  182. package/src/components/types/PageProps.ts +25 -0
  183. package/src/components/types/Params.ts +93 -0
  184. package/src/components/types/RuleType.ts +10 -0
  185. package/src/components/types/SearchProps.ts +42 -0
  186. package/src/components/types/ShortKey.ts +30 -0
  187. package/src/components/types/StarHorseType.ts +18 -0
  188. package/src/components/types/index.ts +15 -0
  189. package/src/config/element.ts +15 -0
  190. package/src/config/styles.ts +4 -0
  191. package/src/index.ts +98 -0
  192. package/src/install.ts +33 -0
  193. package/src/lang/en_US.ts +81 -0
  194. package/src/lang/index.ts +35 -0
  195. package/src/lang/zh_CN.ts +84 -0
  196. package/src/main.ts +57 -0
  197. package/src/plugins/AblesPlugin.ts +618 -0
  198. package/src/plugins/registerCompPlugin.ts +15 -0
  199. package/src/sample/test.vue +9 -0
  200. package/src/store/ButtonPermission.ts +101 -0
  201. package/src/store/ConsumerView.ts +52 -0
  202. package/src/store/ContinusConfig.ts +78 -0
  203. package/src/store/CopyerOperation.ts +74 -0
  204. package/src/store/DesignForm.ts +481 -0
  205. package/src/store/DesignPage.ts +59 -0
  206. package/src/store/DynamicForm.ts +241 -0
  207. package/src/store/GlobalConfig.ts +90 -0
  208. package/src/store/SelfOperation.ts +95 -0
  209. package/src/store/UserInfo.ts +88 -0
  210. package/src/store/index.ts +6 -0
  211. package/src/theme/localStorge.ts +16 -0
  212. package/src/theme/theme.ts +27 -0
  213. package/src/utils/FieldOperationUtils.ts +91 -0
  214. package/src/utils/auth.ts +83 -0
  215. package/src/utils/message.ts +69 -0
  216. package/src/utils/preview.ts +125 -0
  217. package/tsconfig.json +39 -0
  218. package/tsconfig.node.json +10 -0
  219. package/vite-env.d.ts +16 -0
  220. package/vite.config.ts +162 -0
  221. package/yarn.lock +4627 -0
@@ -0,0 +1,247 @@
1
+ <template>
2
+ <starhorse-form-item
3
+ :showFormItem="showFormItem"
4
+ :isDesign="isDesign"
5
+ :disabled="disabled"
6
+ :bareFlag="bareFlag"
7
+ :formItem="field"
8
+ :parentField="parentField"
9
+ >
10
+ <el-input
11
+ v-if="field.preps?.assignType == 'url'"
12
+ :placeholder="field.preps?.placeholder || ''"
13
+ v-model="formData[field.fieldName]"
14
+ >
15
+ <template #append>
16
+ <el-upload
17
+ :auto-upload="true"
18
+ :on-change="
19
+ (uploadFile: any, uploadFiles: any) =>
20
+ selfAction('change', uploadFile, uploadFiles)
21
+ "
22
+ :on-error="
23
+ (error: any, uploadFile: any, uploadFiles: any) =>
24
+ selfAction('error', uploadFile, uploadFiles, error)
25
+ "
26
+ :on-exceed="
27
+ (files: any, uploadFiles: any) =>
28
+ selfAction('exceed', files, uploadFiles)
29
+ "
30
+ :on-preview="(uploadFile: any) => selfAction('preview', uploadFile)"
31
+ :on-progress="
32
+ (evt: any, uploadFile: any, uploadFiles: any) =>
33
+ selfAction('progress', uploadFile, uploadFiles, evt)
34
+ "
35
+ :on-remove="
36
+ (uploadFile: any, uploadFiles: any) =>
37
+ selfAction('remove', uploadFile, uploadFiles)
38
+ "
39
+ :on-success="
40
+ (response: any, uploadFile: any, uploadFiles: any) =>
41
+ selfAction('success', uploadFile, uploadFiles, response)
42
+ "
43
+ :show-file-list="false"
44
+ accept=".jpg,.jpeg,.png,.gif,.bmp,.webp"
45
+ :action="field.action || defaultAction"
46
+ :headers="{ token: getToken() }"
47
+ class="upload"
48
+ name="file"
49
+ >
50
+ <el-tooltip content="上传图片">
51
+ <star-horse-icon
52
+ icon-class="upload"
53
+ color="var(--star-horse-style)"
54
+ />
55
+ </el-tooltip>
56
+ </el-upload>
57
+ </template>
58
+ </el-input>
59
+ <div class="image-area" v-else>
60
+ <el-image
61
+ :style="{
62
+ width: formData[field.fieldName]
63
+ ? field.preps?.width || '100px'
64
+ : '100%',
65
+ height: formData[field.fieldName]
66
+ ? field.preps?.height || '100px'
67
+ : '100%',
68
+ }"
69
+ :zoom-rate="field.preps?.zoomRate || 1.2"
70
+ :max-scale="field.preps?.maxScale || 2"
71
+ :min-scale="field.preps?.minScale || 0.2"
72
+ :preview-src-list="field.preps?.previewSrcList || defaultViewList"
73
+ :initial-index="field.preps?.initialIndex || 5"
74
+ :fit="field.preps?.fit || 'contain'"
75
+ :fid="field.fieldName"
76
+ :src="formData[field.fieldName] || ''"
77
+ >
78
+ <template #error>
79
+ <el-upload
80
+ :auto-upload="true"
81
+ :on-change="
82
+ (uploadFile: any, uploadFiles: any) =>
83
+ selfAction('change', uploadFile, uploadFiles)
84
+ "
85
+ :on-error="
86
+ (error: any, uploadFile: any, uploadFiles: any) =>
87
+ selfAction('error', uploadFile, uploadFiles, error)
88
+ "
89
+ :on-exceed="
90
+ (files: any, uploadFiles: any) =>
91
+ selfAction('exceed', files, uploadFiles)
92
+ "
93
+ :on-preview="(uploadFile: any) => selfAction('preview', uploadFile)"
94
+ :on-progress="
95
+ (evt: any, uploadFile: any, uploadFiles: any) =>
96
+ selfAction('progress', uploadFile, uploadFiles, evt)
97
+ "
98
+ :on-remove="
99
+ (uploadFile: any, uploadFiles: any) =>
100
+ selfAction('remove', uploadFile, uploadFiles)
101
+ "
102
+ :on-success="
103
+ (response: any, uploadFile: any, uploadFiles: any) =>
104
+ selfAction('success', uploadFile, uploadFiles, response)
105
+ "
106
+ :show-file-list="false"
107
+ accept=".jpg,.jpeg,.png,.gif,.bmp,.webp"
108
+ :action="field.preps['action'] || defaultAction"
109
+ :headers="{ token: getToken() }"
110
+ class="upload"
111
+ name="file"
112
+ >
113
+ <el-button type="text" text size="small">
114
+ <el-tooltip content="上传图片">
115
+ <star-horse-icon icon-class="upload" />
116
+ 上传图片
117
+ </el-tooltip>
118
+ </el-button>
119
+ </el-upload>
120
+ </template>
121
+ <template #placeholder>
122
+ <div class="image-slot">
123
+ <el-icon>
124
+ <icon-picture />
125
+ </el-icon>
126
+ </div>
127
+ </template>
128
+ </el-image>
129
+ <div class="image-remove" v-if="formData[field.fieldName] && isDesign">
130
+ <el-tooltip content="删除图片">
131
+ <el-button title="" size="small" type="text" @click="removeImage">
132
+ <star-horse-icon
133
+ icon-class="delete"
134
+ color="var(--el-color-danger)"
135
+ cursor="pointer"
136
+ />
137
+ </el-button>
138
+ </el-tooltip>
139
+ </div>
140
+ </div>
141
+ </starhorse-form-item>
142
+ </template>
143
+ <script setup lang="ts">
144
+ import { onMounted, PropType, shallowRef } from "vue";
145
+ import { initCompCallEvent } from "@/components/formcomp/utils/ItemRelationEventUtils";
146
+ import { getToken } from "@/utils/auth";
147
+
148
+ const props = defineProps({
149
+ isDesign: {
150
+ type: Boolean,
151
+ default: false,
152
+ },
153
+ disabled: {
154
+ type: Boolean,
155
+ default: false,
156
+ },
157
+ showFormItem: {
158
+ type: Boolean,
159
+ default: false,
160
+ },
161
+ bareFlag: {
162
+ type: Boolean,
163
+ default: false,
164
+ },
165
+ isSearch: {
166
+ type: Boolean,
167
+ default: false,
168
+ },
169
+ field: {
170
+ type: Object as PropType<any>,
171
+ required: true,
172
+ },
173
+ parentField: {
174
+ type: Object as PropType<any>,
175
+ },
176
+ formInfo: {
177
+ type: Object as PropType<any>,
178
+ },
179
+ });
180
+ const emits = defineEmits(["selfFunc", "selectItem"]);
181
+ const formData = defineModel("formData");
182
+
183
+ let defaultAction = "/system-config/annex/upload/common";
184
+ let defaultViewList = shallowRef([]);
185
+
186
+ const removeImage = () => {
187
+ formData.value[props.field.fieldName] = "";
188
+ defaultViewList.value = [];
189
+ };
190
+ const selfAction = (
191
+ prep: any,
192
+ uploadFile: any,
193
+ uploadFiles: any = [],
194
+ param: any = {},
195
+ ) => {
196
+ if (prep == "success") {
197
+ let result = param.data;
198
+ let path = (props.field.preps["context"] || "/system-config") + result.path;
199
+ formData.value[props.field.fieldName] = path;
200
+ defaultViewList.value.push(path);
201
+ //默认将上传成功的属性存入数据对象
202
+ Object.entries(result).forEach(([key, value]) => {
203
+ formData.value[key] = value;
204
+ });
205
+ //console.log(param.data.path);
206
+ }
207
+ emits("selfFunc", prep, uploadFile, uploadFiles, param);
208
+ };
209
+ onMounted(() => {
210
+ initCompCallEvent(props, emits, formData);
211
+ });
212
+ </script>
213
+ <style lang="scss" scoped>
214
+ .image-area {
215
+ width: 100%;
216
+ height: 100%;
217
+ position: relative;
218
+ display: flex;
219
+ align-items: center;
220
+
221
+ &:hover {
222
+ .image-remove {
223
+ visibility: visible;
224
+ }
225
+ }
226
+
227
+ .image-remove {
228
+ position: absolute;
229
+ visibility: hidden;
230
+ top: 50%;
231
+ left: 50%;
232
+ }
233
+ }
234
+
235
+ .demo-image__error .image-slot {
236
+ font-size: 30px;
237
+ }
238
+
239
+ .demo-image__error .image-slot .el-icon {
240
+ font-size: 30px;
241
+ }
242
+
243
+ .demo-image__error .el-image {
244
+ width: 100%;
245
+ height: 200px;
246
+ }
247
+ </style>
@@ -0,0 +1,44 @@
1
+ export { default as areaItem } from "./area-item.vue";
2
+ export { default as audioItem } from "./audio-item.vue";
3
+ export { default as autocompleteItem } from "./autocomplete-item.vue";
4
+ export { default as buttonItem } from "./button-item.vue";
5
+ export { default as cascadeItem } from "./cascade-item.vue";
6
+ export { default as checkboxItem } from "./checkbox-item.vue";
7
+ export { default as colorItem } from "./color-item.vue";
8
+ export { default as cronItem } from "./cron-item.vue";
9
+ export { default as datetimeItem } from "./datetime-item.vue";
10
+ export { default as departItem } from "./depart-item.vue";
11
+ export { default as dialogInputItem } from "./dialog-input-item.vue";
12
+ export { default as dividerItem } from "./divider-item.vue";
13
+ export { default as htmlItem } from "./html-item.vue";
14
+ export { default as htmleditorItem } from "./htmleditor-item.vue";
15
+ export { default as iconItem } from "./icon-item.vue";
16
+ export { default as imageItem } from "./image-item.vue";
17
+ export { default as inputItem } from "./input-item.vue";
18
+ export { default as jsonArrayItem } from "./json-array-item.vue";
19
+ export { default as jsonItem } from "./json-item.vue";
20
+ export { default as markdownItem } from "./markdown-item.vue";
21
+ export { default as numberItem } from "./number-item.vue";
22
+ export { default as numberRangeItem } from "./number-range-item.vue";
23
+ export { default as pageSelectItem } from "./page-select-item.vue";
24
+ export { default as passwordItem } from "./password-item.vue";
25
+ export { default as radioItem } from "./radio-item.vue";
26
+ export { default as rateItem } from "./rate-item.vue";
27
+ export { default as selectItem } from "./select-item.vue";
28
+ export { default as signatureItem } from "./signature-item.vue";
29
+ export { default as sliderItem } from "./slider-item.vue";
30
+ export { default as switchItem } from "./switch-item.vue";
31
+ export { default as tagItem } from "./tag-item.vue";
32
+ export { default as textItem } from "./text-item.vue";
33
+ export { default as textareaItem } from "./textarea-item.vue";
34
+ export { default as timeItem } from "./time-item.vue";
35
+ export { default as timePickerItem } from "./time-picker-item.vue";
36
+ export { default as transferItem } from "./transfer-item.vue";
37
+ export { default as tselectItem } from "./tselect-item.vue";
38
+ export { default as unknownItem } from "./unknown-item.vue";
39
+ export { default as uploadItem } from "./upload-item.vue";
40
+ export { default as userItem } from "./user-item.vue";
41
+ export { default as usercompItem } from "./usercomp-item.vue";
42
+ export { default as viewMarkdownItem } from "./view-markdown-item.vue";
43
+ export { default as qrcodeItem } from "./qrcode-item.vue";
44
+ export { default as barcodeItem } from "./barcode-item.vue";
@@ -0,0 +1,150 @@
1
+ <template>
2
+ <EditDataDialog
3
+ v-model="dialogInputVisible"
4
+ :disabled="checkIsDisabled(props)"
5
+ :initial-content="String(formData[field.fieldName])"
6
+ @confirm="handleContentConfirm"
7
+ />
8
+ <starhorse-form-item
9
+ :showFormItem="showFormItem"
10
+ :isDesign="isDesign"
11
+ :disabled="disabled"
12
+ :bareFlag="bareFlag"
13
+ :formItem="field"
14
+ :parentField="parentField"
15
+ >
16
+ <el-input
17
+ :disabled="checkIsDisabled(props)"
18
+ v-bind="field.preps"
19
+ type="text"
20
+ ref="inputItemRef"
21
+ :fid="field.fieldName"
22
+ class="input-with-select"
23
+ v-on="getDynamicEvents(props, itemAction)"
24
+ @dblclick="editContent"
25
+ v-model="formData[field.fieldName]"
26
+ >
27
+ <template #prepend v-if="field.preps?.prependText">
28
+ {{ field.preps?.prependText }}
29
+ </template>
30
+ <template #prepend v-if="field.preps?.prependList">
31
+ <el-select v-model="formData[preName]">
32
+ <el-option
33
+ v-for="item in field.preps?.prependList"
34
+ :key="item.value"
35
+ :label="item.name"
36
+ :value="item.value"
37
+ />
38
+ </el-select>
39
+ </template>
40
+ <template #append v-if="field.preps?.appendText">
41
+ {{ field.preps?.appendText }}
42
+ </template>
43
+ <template #append v-if="field.preps?.appendAction">
44
+ <star-horse-icon
45
+ :title="field.preps?.appendAction?.actionTitle"
46
+ style="cursor: pointer"
47
+ :icon-class="field.preps?.appendAction?.icon || 'document'"
48
+ @click="field.preps?.appendAction?.actions(formData)"
49
+ />
50
+ </template>
51
+ <template #append v-if="field.preps?.appendList">
52
+ <el-select v-model="formData[appName]">
53
+ <el-option
54
+ v-for="item in field.preps?.appendList"
55
+ :key="item.value"
56
+ :label="item.name"
57
+ :value="item.value"
58
+ />
59
+ </el-select>
60
+ </template>
61
+ </el-input>
62
+ </starhorse-form-item>
63
+ </template>
64
+ <script setup lang="ts">
65
+ import { getDynamicEvents } from "@/api/system";
66
+ import {
67
+ allAction,
68
+ checkIsDisabled,
69
+ initCompCallEvent,
70
+ } from "@/components/formcomp/utils/ItemRelationEventUtils";
71
+ import { computed, nextTick, onMounted, PropType, ref } from "vue";
72
+
73
+ defineOptions({
74
+ name: "InputItem",
75
+ });
76
+ const props = defineProps({
77
+ isDesign: {
78
+ type: Boolean,
79
+ default: false,
80
+ },
81
+ disabled: {
82
+ type: Boolean,
83
+ default: false,
84
+ },
85
+ showFormItem: {
86
+ type: Boolean,
87
+ default: false,
88
+ },
89
+ bareFlag: {
90
+ type: Boolean,
91
+ default: false,
92
+ },
93
+ isSearch: {
94
+ type: Boolean,
95
+ default: false,
96
+ },
97
+ field: {
98
+ type: Object as PropType<any>,
99
+ required: true,
100
+ },
101
+ parentField: {
102
+ type: Object as PropType<any>,
103
+ },
104
+ formInfo: {
105
+ type: Object as PropType<any>,
106
+ },
107
+ });
108
+ const emits = defineEmits(["selfFunc", "selectItem"]);
109
+ const formData = defineModel("formData");
110
+ const inputItemRef = ref();
111
+ const dialogInputVisible = ref<boolean>(false);
112
+ const initEvent = async () => {
113
+ await nextTick();
114
+ };
115
+ const preName = computed(() => {
116
+ return props.field?.preps.preName ?? "pre" + props.field.fieldName;
117
+ });
118
+ const appName = computed(() => {
119
+ return props.field?.preps.appName ?? "app" + props.field.fieldName;
120
+ });
121
+ const itemAction = (prep: any) => {
122
+ allAction(props, emits, formData, prep);
123
+ };
124
+ const handleContentConfirm = (newContent: string) => {
125
+ formData.value[props.field.fieldName] = newContent;
126
+ dialogInputVisible.value = false;
127
+ };
128
+ const editContent = () => {
129
+ dialogInputVisible.value = true;
130
+ };
131
+ onMounted(() => {
132
+ initCompCallEvent(props, emits, formData);
133
+ initEvent();
134
+ });
135
+ </script>
136
+ <style lang="scss" scoped>
137
+ .input-with-select .el-input-group__prepend,
138
+ .input-with-select .el-input-group__append {
139
+ background-color: var(--el-fill-color-blank);
140
+ }
141
+
142
+ :deep {
143
+ .el-input-group__prepend,
144
+ .el-input-group__append {
145
+ min-width: 30%;
146
+ max-width: 100px;
147
+ padding: 0;
148
+ }
149
+ }
150
+ </style>
@@ -0,0 +1,67 @@
1
+ <template>
2
+ <base-json-item
3
+ :isDesign="isDesign"
4
+ :disabled="disabled"
5
+ :showFormItem="showFormItem"
6
+ :field="field"
7
+ @selectItem="itemAction"
8
+ :formInfo="formInfo"
9
+ v-model:formData="formData"
10
+ @selfFunc="itemAction"
11
+ :parentField="parentField"
12
+ dataType="array"
13
+ />
14
+ </template>
15
+ <script setup lang="ts">
16
+ import { onMounted, PropType } from "vue";
17
+ import {
18
+ allAction,
19
+ initCompCallEvent,
20
+ } from "@/components/formcomp/utils/ItemRelationEventUtils";
21
+
22
+ const props = defineProps({
23
+ isDesign: {
24
+ type: Boolean,
25
+ default: false,
26
+ },
27
+ disabled: {
28
+ type: Boolean,
29
+ default: false,
30
+ },
31
+ showFormItem: {
32
+ type: Boolean,
33
+ default: false,
34
+ },
35
+ bareFlag: {
36
+ type: Boolean,
37
+ default: false,
38
+ },
39
+ isSearch: {
40
+ type: Boolean,
41
+ default: false,
42
+ },
43
+ field: {
44
+ type: Object as PropType<any>,
45
+ required: true,
46
+ },
47
+ parentField: {
48
+ type: Object as PropType<any>,
49
+ },
50
+ formInfo: {
51
+ type: Object as PropType<any>,
52
+ },
53
+ });
54
+ const emits = defineEmits(["selfFunc", "selectItem"]);
55
+ const formData = defineModel("formData");
56
+ const itemAction = (prep: any) => {
57
+ allAction(props, emits, formData, prep);
58
+ };
59
+
60
+ onMounted(() => {
61
+ if (!props.field.preps) {
62
+ props.field.preps = {};
63
+ }
64
+ initCompCallEvent(props, emits, formData);
65
+ });
66
+ </script>
67
+ <style lang="scss" scoped></style>
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <base-json-item
3
+ :isDesign="isDesign"
4
+ :disabled="disabled"
5
+ :showFormItem="showFormItem"
6
+ :field="field"
7
+ @selectItem="itemAction"
8
+ :formInfo="formInfo"
9
+ v-model:formData="formData"
10
+ @selfFunc="itemAction"
11
+ :parentField="parentField"
12
+ dataType="object"
13
+ />
14
+ </template>
15
+ <script setup lang="ts">
16
+ import { onMounted, PropType } from "vue";
17
+ import {
18
+ allAction,
19
+ initCompCallEvent,
20
+ } from "@/components/formcomp/utils/ItemRelationEventUtils";
21
+
22
+ const props = defineProps({
23
+ isDesign: {
24
+ type: Boolean,
25
+ default: false,
26
+ },
27
+ disabled: {
28
+ type: Boolean,
29
+ default: false,
30
+ },
31
+ showFormItem: {
32
+ type: Boolean,
33
+ default: false,
34
+ },
35
+ bareFlag: {
36
+ type: Boolean,
37
+ default: false,
38
+ },
39
+ isSearch: {
40
+ type: Boolean,
41
+ default: false,
42
+ },
43
+ field: {
44
+ type: Object as PropType<any>,
45
+ required: true,
46
+ },
47
+ parentField: {
48
+ type: Object as PropType<any>,
49
+ },
50
+ formInfo: {
51
+ type: Object as PropType<any>,
52
+ },
53
+ });
54
+ const emits = defineEmits(["selfFunc", "selectItem"]);
55
+ const formData = defineModel("formData");
56
+ const itemAction = (prep: any) => {
57
+ allAction(props, emits, formData, prep);
58
+ };
59
+ onMounted(() => {
60
+ if (!props.field.preps) {
61
+ props.field.preps = {};
62
+ }
63
+ initCompCallEvent(props, emits, formData);
64
+ });
65
+ </script>
66
+ <style lang="scss" scoped></style>
@@ -0,0 +1,77 @@
1
+ <template>
2
+ <starhorse-form-item
3
+ :showFormItem="showFormItem"
4
+ :isDesign="isDesign"
5
+ :disabled="disabled"
6
+ :bareFlag="bareFlag"
7
+ :formItem="field"
8
+ :parentField="parentField"
9
+ >
10
+ <MdEditor
11
+ v-model="formData[field.fieldName]"
12
+ :theme="'light'"
13
+ :language="'zh-CN'"
14
+ :previewTheme="'default'"
15
+ :codeTheme="'github'"
16
+ v-bind="field.preps"
17
+ class="markdown-editor"
18
+ />
19
+ </starhorse-form-item>
20
+ </template>
21
+ <script setup lang="ts" name="markdown">
22
+ import { onMounted, onUpdated, PropType } from "vue";
23
+ import "md-editor-v3/lib/style.css";
24
+
25
+ defineProps({
26
+ isDesign: {
27
+ type: Boolean,
28
+ default: false,
29
+ },
30
+ disabled: {
31
+ type: Boolean,
32
+ default: false,
33
+ },
34
+ showFormItem: {
35
+ type: Boolean,
36
+ default: false,
37
+ },
38
+ bareFlag: {
39
+ type: Boolean,
40
+ default: false,
41
+ },
42
+ isSearch: {
43
+ type: Boolean,
44
+ default: false,
45
+ },
46
+ field: {
47
+ type: Object as PropType<any>,
48
+ required: true,
49
+ },
50
+ parentField: {
51
+ type: Object as PropType<any>,
52
+ },
53
+ formInfo: {
54
+ type: Object as PropType<any>,
55
+ },
56
+ });
57
+ const emits = defineEmits(["selfFunc", "selectItem"]);
58
+ const formData = defineModel("formData");
59
+
60
+ const init = async () => {};
61
+ onMounted(() => {
62
+ init();
63
+ });
64
+ onUpdated(() => {
65
+ init();
66
+ });
67
+ </script>
68
+ <style lang="scss" scoped>
69
+ .v-md-editor {
70
+ width: 100% !important;
71
+ min-height: 400px !important;
72
+
73
+ :deep(.vditor-toolbar) {
74
+ padding-left: unset !important;
75
+ }
76
+ }
77
+ </style>