relic.ts 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. import VillageInfoApi, { CommonInfoModel } from "@/api/inhert/VillageInfoApi";
  2. import { useAliOssUploadCo } from "@/common/components/upload/AliOssUploadCo";
  3. import type { PickerIdFieldProps } from "@/components/dynamic/wrappers/PickerIdField";
  4. import type { FieldProps } from "@/components/form/Field.vue";
  5. import type { StepperProps } from "@/components/form/Stepper.vue";
  6. import type { UploaderFieldProps } from "@/components/form/UploaderField.vue";
  7. import type { SingleForm } from "../forms";
  8. import { villageCommonContent } from "./common";
  9. export const villageInfoRelicForm : SingleForm = [CommonInfoModel, (r) => ({
  10. formItems: [
  11. {
  12. label: '基础信息',
  13. name: 'baseInfo',
  14. type: 'flat-group',
  15. childrenColProps: { span: 24 },
  16. children: [
  17. {
  18. label: '建筑名称',
  19. name: 'name',
  20. type: 'text',
  21. defaultValue: '',
  22. additionalProps: {
  23. placeholder: '请输入建筑名称',
  24. },
  25. rules: [{
  26. required: true,
  27. message: '请输入建筑名称',
  28. }]
  29. },
  30. {
  31. label: '文物编码',
  32. name: 'code',
  33. type: 'text',
  34. defaultValue: '',
  35. additionalProps: {
  36. placeholder: '请输入文物编码',
  37. },
  38. rules: [{
  39. required: true,
  40. message: '请输入文物编码',
  41. }]
  42. },
  43. {
  44. label: '年代',
  45. name: 'age',
  46. type: 'select-id',
  47. additionalProps: {
  48. loadData: async () =>
  49. (await VillageInfoApi.getCategoryChildList(103))
  50. .map((p) => ({
  51. value: p.id,
  52. text: p.title,
  53. }))
  54. ,
  55. } as PickerIdFieldProps,
  56. formProps: { showRightArrow: true } as FieldProps,
  57. rules: [{
  58. required: true,
  59. message: '请选择年代',
  60. }],
  61. },
  62. {
  63. label: '保护级别',
  64. name: 'level',
  65. type: 'select-id',
  66. additionalProps: {
  67. loadData: async () =>
  68. (await VillageInfoApi.getCategoryChildList(158))
  69. .map((p) => ({
  70. value: p.id,
  71. text: p.title,
  72. }))
  73. ,
  74. } as PickerIdFieldProps,
  75. formProps: { showRightArrow: true } as FieldProps,
  76. rules: [{
  77. required: true,
  78. message: '请选择保护级别',
  79. }],
  80. },
  81. {
  82. label: '文物类型',
  83. name: 'crType',
  84. type: 'select-id',
  85. additionalProps: {
  86. loadData: async () =>
  87. (await VillageInfoApi.getCategoryChildList(3))
  88. .map((p) => ({
  89. value: p.id,
  90. text: p.title,
  91. }))
  92. ,
  93. } as PickerIdFieldProps,
  94. formProps: { showRightArrow: true } as FieldProps,
  95. rules: [{
  96. required: true,
  97. message: '请选择文物类型',
  98. }],
  99. },
  100. ]
  101. },
  102. {
  103. label: '介绍',
  104. name: 'introdInfo',
  105. type: 'flat-group',
  106. childrenColProps: { span: 24 },
  107. children: [
  108. {
  109. label: '描述',
  110. name: 'description',
  111. type: 'richtext',
  112. defaultValue: '',
  113. additionalProps: {
  114. placeholder: '请输入简介',
  115. maxLength: 200,
  116. showWordLimit: true,
  117. },
  118. rules: [{
  119. required: true,
  120. message: '请输入描述',
  121. }]
  122. },
  123. {
  124. label: '图片',
  125. name: 'images',
  126. type: 'uploader',
  127. defaultValue: '',
  128. additionalProps: {
  129. upload: useAliOssUploadCo('xiangyuan/relic'),
  130. maxFileSize: 1024 * 1024 * 20,
  131. maxUploadCount: 20,
  132. } as UploaderFieldProps,
  133. rules: []
  134. },
  135. {
  136. label: '文化故事',
  137. name: 'content',
  138. type: 'richtext',
  139. defaultValue: '',
  140. additionalProps: {
  141. placeholder: '输入关于此文物的历史文化故事',
  142. maxLength: 5000,
  143. showWordLimit: true,
  144. } as FieldProps,
  145. rules: []
  146. },
  147. ...villageCommonContent(r, {
  148. title: '文物古迹',
  149. showContent: false,
  150. showTitle: false,
  151. }).formItems
  152. ]
  153. },
  154. {
  155. label: '位置信息',
  156. name: 'locationInfo',
  157. type: 'flat-group',
  158. childrenColProps: { span: 24 },
  159. children: [
  160. {
  161. label: '经纬度',
  162. name: 'lonlat',
  163. type: 'select-lonlat',
  164. defaultValue: '',
  165. additionalProps: {},
  166. formProps: { showRightArrow: true } as FieldProps,
  167. rules: [{
  168. required: true,
  169. message: '请输入经纬度',
  170. }]
  171. },
  172. {
  173. label: '地址',
  174. name: 'address',
  175. type: 'select-address',
  176. defaultValue: '',
  177. additionalProps: {},
  178. rules: [{
  179. required: true,
  180. message: '请输入地址',
  181. }]
  182. },
  183. {
  184. label: '方位',
  185. name: 'orientation',
  186. type: 'text',
  187. defaultValue: '',
  188. additionalProps: { placeholder: '方位' },
  189. rules: []
  190. },
  191. {
  192. label: '相对距离',
  193. name: 'distance',
  194. type: 'text',
  195. defaultValue: '',
  196. additionalProps: { placeholder: '相对距离' },
  197. rules: []
  198. },
  199. {
  200. name: '',
  201. label: '平面坐标XY',
  202. type: 'flat-simple',
  203. children: [
  204. {
  205. label: '',
  206. name: 'mapX',
  207. type: 'number',
  208. defaultValue: 0,
  209. additionalProps: {
  210. min: -250,
  211. max: 250,
  212. } as StepperProps,
  213. formProps: {
  214. labelWidth: '0rpx',
  215. labelPosition: 'left',
  216. showBottomBorder: false,
  217. },
  218. rules: [{
  219. required: true,
  220. message: '请输入X',
  221. }]
  222. },
  223. {
  224. label: '',
  225. name: 'mapY',
  226. type: 'number',
  227. defaultValue: 0,
  228. additionalProps: {
  229. min: -250,
  230. max: 250,
  231. } as StepperProps,
  232. formProps: {
  233. labelWidth: '0rpx',
  234. labelPosition: 'left',
  235. showBottomBorder: false,
  236. },
  237. rules: [{
  238. required: true,
  239. message: '请输入Y',
  240. }]
  241. },
  242. ]
  243. },
  244. ]
  245. },
  246. ]
  247. }), { title: '文物古迹', typeName: '', }];