forms.ts 65 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550
  1. import VillageInfoApi, { CommonInfoModel, VillageBulidingInfo, VillageEnvInfo } from "@/api/inhert/VillageInfoApi";
  2. import { useAliOssUploadCo } from "@/common/components/upload/AliOssUploadCo";
  3. import type { FormDefine, FormDefineItem, IFormItemCallbackAdditionalProps } from "@/components/dynamic";
  4. import type { FormGroupProps } from "@/components/dynamic/DynamicFormCate.vue";
  5. import type { CheckBoxListProps } from "@/components/dynamic/wrappers/CheckBoxList.vue";
  6. import type { CheckBoxToIntProps } from "@/components/dynamic/wrappers/CheckBoxToInt";
  7. import type { PickerIdFieldProps } from "@/components/dynamic/wrappers/PickerIdField";
  8. import type { FieldProps } from "@/components/form/Field.vue";
  9. import type { PickerFieldProps } from "@/components/form/PickerField.vue";
  10. import type { StepperProps } from "@/components/form/Stepper.vue";
  11. import type { UploaderFieldProps } from "@/components/form/UploaderField.vue";
  12. import type { NewDataModel } from "@imengyu/js-request-transform";
  13. type SingleForm = [NewDataModel, FormDefine]
  14. const villageInfoBuildingForm : SingleForm = [VillageBulidingInfo, {
  15. items: [
  16. {
  17. label: '建筑名称',
  18. name: 'name',
  19. type: 'text',
  20. defaultValue: '',
  21. params: {
  22. placeholder: '请输入建筑名称',
  23. },
  24. rules: [{
  25. required: true,
  26. message: '请输入建筑名称',
  27. }]
  28. },
  29. {
  30. label: '建筑编码',
  31. name: 'code',
  32. type: 'text',
  33. defaultValue: '',
  34. params: {
  35. placeholder: '请输入建筑编码',
  36. },
  37. rules: [{
  38. required: true,
  39. message: '请输入建筑编码',
  40. }]
  41. },
  42. {
  43. label: '产权归属',
  44. name: 'ownership',
  45. type: 'select-id',
  46. params: {
  47. loadData: async () =>
  48. (await VillageInfoApi.getCategoryChildList(152))
  49. .map((p) => ({
  50. value: p.id,
  51. text: p.title,
  52. }))
  53. ,
  54. } as PickerIdFieldProps,
  55. itemParams: { showRightArrow: true } as FieldProps,
  56. rules: [{
  57. required: true,
  58. message: '请选择产权归属',
  59. }],
  60. },
  61. {
  62. label: '位置',
  63. name: 'position',
  64. type: 'text',
  65. defaultValue: '',
  66. params: {
  67. placeholder: '请输入位置',
  68. },
  69. rules: [{
  70. required: true,
  71. message: '请输入位置',
  72. }]
  73. },
  74. {
  75. label: '建筑类型',
  76. name: 'buildingType',
  77. type: 'select-id',
  78. params: {
  79. loadData: async () =>
  80. (await VillageInfoApi.getCategoryChildList(163))
  81. .map((p) => ({
  82. value: p.id,
  83. text: p.title,
  84. }))
  85. ,
  86. } as PickerIdFieldProps,
  87. itemParams: { showRightArrow: true } as FieldProps,
  88. rules: [{
  89. required: true,
  90. message: '请选择建筑类型',
  91. }],
  92. },
  93. {
  94. label: '建筑中的故事',
  95. name: 'story',
  96. type: 'textarea',
  97. defaultValue: '',
  98. params: {
  99. placeholder: '请输入建筑中的故事',
  100. },
  101. rules: [{
  102. required: true,
  103. message: '请输入建筑中的故事',
  104. }]
  105. },
  106. {
  107. label: '保护级别',
  108. name: 'protectionLevel',
  109. type: 'select-id',
  110. params: {
  111. loadData: async () =>
  112. (await VillageInfoApi.getCategoryChildList(171))
  113. .map((p) => ({
  114. value: p.id,
  115. text: p.title,
  116. }))
  117. ,
  118. } as PickerIdFieldProps,
  119. itemParams: { showRightArrow: true } as FieldProps,
  120. rules: [{
  121. required: true,
  122. message: '请选择建筑类型',
  123. }],
  124. },
  125. {
  126. label: '总占地面积',
  127. name: 'area',
  128. type: 'text',
  129. defaultValue: '',
  130. params: {
  131. placeholder: '请输入总占地面积',
  132. },
  133. rules: [{
  134. required: true,
  135. message: '请输入总占地面积',
  136. }]
  137. },
  138. {
  139. label: '建筑面积',
  140. name: 'buildingArea',
  141. type: 'text',
  142. defaultValue: '',
  143. params: {
  144. placeholder: '请输入建筑面积',
  145. },
  146. rules: [{
  147. required: true,
  148. message: '请输入建筑面积',
  149. }]
  150. },
  151. {
  152. label: '建筑层数',
  153. name: 'floor',
  154. type: 'number',
  155. defaultValue: 0,
  156. params: {
  157. min: 0,
  158. max: 1000,
  159. },
  160. rules: [{
  161. required: true,
  162. message: '请输入建筑层数',
  163. }]
  164. },
  165. {
  166. label: '所含建筑幢数',
  167. name: 'num',
  168. type: 'number',
  169. defaultValue: 0,
  170. params: {
  171. min: 0,
  172. max: 1000,
  173. },
  174. rules: [{
  175. required: true,
  176. message: '请输入所含建筑幢数',
  177. }]
  178. },
  179. {
  180. label: '始建时间(年)',
  181. name: 'age',
  182. type: 'number',
  183. defaultValue: 2025,
  184. params: {
  185. min: -50000,
  186. max: 2000,
  187. },
  188. rules: [{
  189. required: true,
  190. message: '请输入始建时间',
  191. }]
  192. },
  193. {
  194. label: '功能特点',
  195. name: 'funcFeatures',
  196. type: 'textarea',
  197. defaultValue: '',
  198. params: {
  199. placeholder: '请输入功能特点',
  200. },
  201. rules: [{
  202. required: true,
  203. message: '请输入功能特点',
  204. }]
  205. },
  206. {
  207. label: '承重结构(多选)',
  208. name: 'bearingType',
  209. type: 'check-box-list',
  210. params: {
  211. multiple: true,
  212. loadData: async () =>
  213. (await VillageInfoApi.getCategoryChildList(246))
  214. .map((p) => ({
  215. value: p.id,
  216. text: p.title,
  217. }))
  218. ,
  219. } as CheckBoxListProps,
  220. defaultValue: [],
  221. rules: [{
  222. required: true,
  223. message: '请选择类型',
  224. }],
  225. },
  226. {
  227. label: '其他建筑类型',
  228. name: 'otherBuildingType',
  229. type: 'text',
  230. defaultValue: '',
  231. params: { placeholder: '其他建筑类型' },
  232. rules: []
  233. },
  234. {
  235. label: '居民建筑类型',
  236. name: 'residentialBuildingType',
  237. type: 'text',
  238. defaultValue: '',
  239. params: { placeholder: '居民建筑类型' },
  240. rules: []
  241. },
  242. {
  243. label: '其他保护级别',
  244. name: 'otherProtectionLevel',
  245. type: 'text',
  246. defaultValue: '',
  247. params: { placeholder: '其他保护级别' },
  248. rules: []
  249. },
  250. {
  251. label: '修缮过程',
  252. name: 'repairProcess',
  253. type: 'text',
  254. defaultValue: '',
  255. params: { placeholder: '修缮过程' },
  256. rules: []
  257. },
  258. {
  259. label: '建筑风貌',
  260. name: 'architecturalStyle',
  261. type: 'text',
  262. defaultValue: '',
  263. params: { placeholder: '建筑风貌' },
  264. rules: []
  265. },
  266. {
  267. label: '院落布局',
  268. name: 'layout',
  269. type: 'text',
  270. defaultValue: '',
  271. params: { placeholder: '院落布局' },
  272. rules: []
  273. },
  274. {
  275. label: '其他承重结构类型',
  276. name: 'otherBearing',
  277. type: 'text',
  278. defaultValue: '',
  279. params: { placeholder: '其他承重结构类型' },
  280. rules: []
  281. },
  282. {
  283. label: '屋面形式(多选)',
  284. name: 'roofForm',
  285. type: 'check-box-list',
  286. params: {
  287. multiple: true,
  288. loadData: async () =>
  289. (await VillageInfoApi.getCategoryChildList(264))
  290. .map((p) => ({
  291. value: p.id,
  292. text: p.title,
  293. }))
  294. ,
  295. } as CheckBoxListProps,
  296. defaultValue: [],
  297. rules: [],
  298. },
  299. {
  300. label: '屋面形式说明',
  301. name: 'roofDescribe',
  302. type: 'text',
  303. defaultValue: '',
  304. params: { placeholder: '屋面形式说明' },
  305. rules: []
  306. },
  307. {
  308. label: '围护墙体(多选)',
  309. name: 'wallType',
  310. type: 'check-box-list',
  311. params: {
  312. multiple: true,
  313. loadData: async () =>
  314. (await VillageInfoApi.getCategoryChildList(271))
  315. .map((p) => ({
  316. value: p.id,
  317. text: p.title,
  318. }))
  319. ,
  320. } as CheckBoxListProps,
  321. defaultValue: [],
  322. rules: [],
  323. },
  324. {
  325. label: '围护墙体说明',
  326. name: 'otherBuildingType',
  327. type: 'text',
  328. defaultValue: '',
  329. params: { placeholder: '围护墙体说明' },
  330. rules: []
  331. },
  332. {
  333. label: '地面做法(多选)',
  334. name: 'floorType',
  335. type: 'check-box-list',
  336. params: {
  337. multiple: true,
  338. loadData: async () =>
  339. (await VillageInfoApi.getCategoryChildList(258))
  340. .map((p) => ({
  341. value: p.id,
  342. text: p.title,
  343. }))
  344. ,
  345. } as CheckBoxListProps,
  346. defaultValue: [],
  347. rules: [],
  348. },
  349. {
  350. label: '地面做法说明',
  351. name: 'floorDescribe',
  352. type: 'text',
  353. defaultValue: '',
  354. params: { placeholder: '地面做法说明' },
  355. rules: []
  356. },
  357. {
  358. label: '特殊工艺做法',
  359. name: 'specialProcess',
  360. type: 'text',
  361. defaultValue: '',
  362. params: { placeholder: '特殊工艺做法' },
  363. rules: []
  364. },
  365. {
  366. label: '历史功能',
  367. name: 'funcHistory',
  368. type: 'text',
  369. defaultValue: '',
  370. params: { placeholder: '历史功能' },
  371. rules: []
  372. },
  373. {
  374. label: '现状用途(多选)',
  375. name: 'purpose',
  376. type: 'check-box-list',
  377. params: {
  378. multiple: true,
  379. loadData: async () =>
  380. (await VillageInfoApi.getCategoryChildList(252))
  381. .map((p) => ({
  382. value: p.id,
  383. text: p.title,
  384. }))
  385. ,
  386. } as CheckBoxListProps,
  387. defaultValue: [],
  388. rules: [],
  389. },
  390. {
  391. label: '其他现状用途',
  392. name: 'otherPurpose',
  393. type: 'text',
  394. defaultValue: '',
  395. params: { placeholder: '其他现状用途' },
  396. rules: []
  397. },
  398. {
  399. label: '改扩建情况及维修状况',
  400. name: 'repair',
  401. type: 'text',
  402. defaultValue: '',
  403. params: { placeholder: '改扩建情况及维修状况' },
  404. rules: []
  405. },
  406. {
  407. label: '改扩建情况及维修状况说明',
  408. name: 'repairDescribe',
  409. type: 'text',
  410. defaultValue: '',
  411. params: { placeholder: '改扩建情况及维修状况说明' },
  412. rules: []
  413. },
  414. ]
  415. }]
  416. const villageInfoFolkCultureForm : SingleForm = [VillageBulidingInfo, {
  417. items: [
  418. {
  419. label: '名称',
  420. name: 'name',
  421. type: 'text',
  422. defaultValue: '',
  423. params: {
  424. placeholder: '请输入名称',
  425. },
  426. rules: [{
  427. required: true,
  428. message: '请输入名称',
  429. }]
  430. },
  431. {
  432. label: '详情',
  433. name: 'details',
  434. type: 'textarea',
  435. defaultValue: '',
  436. params: {
  437. placeholder: '请输入详情',
  438. },
  439. rules: [{
  440. required: true,
  441. message: '请输入详情',
  442. }]
  443. },
  444. {
  445. label: '村落非遗项目',
  446. name: 'ichId',
  447. type: 'select-id',
  448. defaultValue: null,
  449. params: {
  450. loadData: {
  451. callback: (m, r, p, i) => async () =>
  452. (await VillageInfoApi.getList(
  453. 'ich', undefined, undefined,
  454. i.formGlobalParams.villageId,
  455. i.formGlobalParams.villageVolunteerId
  456. )).map((p) => ({
  457. value: p.id,
  458. text: p.title,
  459. }))
  460. },
  461. } as IFormItemCallbackAdditionalProps<PickerIdFieldProps>,
  462. itemParams: { showRightArrow: true } as FieldProps,
  463. rules: [],
  464. },
  465. {
  466. label: '文化资源关联内容ID',
  467. name: 'details',
  468. type: 'text',
  469. defaultValue: '',
  470. params: {
  471. placeholder: '输入文化资源关联内容ID',
  472. },
  473. rules: []
  474. },
  475. ]
  476. }];
  477. const villageInfoFoodProductsForm : SingleForm = [VillageBulidingInfo, {
  478. items: [
  479. {
  480. label: '名称',
  481. name: 'name',
  482. type: 'text',
  483. defaultValue: '',
  484. params: {
  485. placeholder: '请输入名称',
  486. },
  487. rules: [{
  488. required: true,
  489. message: '请输入名称',
  490. }]
  491. },
  492. {
  493. label: '详情',
  494. name: 'details',
  495. type: 'textarea',
  496. defaultValue: '',
  497. params: {
  498. placeholder: '请输入详情',
  499. },
  500. rules: [{
  501. required: true,
  502. message: '请输入详情',
  503. }]
  504. },
  505. ]
  506. }];
  507. const villageCommonContent : FormDefine = {
  508. items: [
  509. {
  510. label: '标题',
  511. name: 'title',
  512. type: 'text',
  513. defaultValue: '',
  514. params: {
  515. placeholder: '请输入标题',
  516. },
  517. rules: [{
  518. required: true,
  519. message: '请输入标题',
  520. }]
  521. },
  522. {
  523. label: '内容',
  524. name: 'content',
  525. type: 'richtext',
  526. defaultValue: '',
  527. params: {
  528. placeholder: '请输入内容',
  529. maxLength: 1000,
  530. },
  531. rules: [{
  532. required: true,
  533. message: '请输入内容',
  534. }]
  535. },
  536. {
  537. label: '图片',
  538. name: 'images',
  539. type: 'richtext',
  540. defaultValue: '',
  541. params: {
  542. upload: useAliOssUploadCo('xiangyuan/common'),
  543. maxFileSize: 1024 * 1024 * 20,
  544. maxUploadCount: 20,
  545. } as UploaderFieldProps,
  546. rules: [{
  547. required: true,
  548. message: '请输入内容',
  549. }]
  550. },
  551. ]
  552. };
  553. //TODO: 关联的文化资源ID
  554. const villageInfoForm : Record<string, Record<number, SingleForm>> = {
  555. 'overview': {
  556. [1]: [CommonInfoModel, {
  557. items: [
  558. {
  559. label: '村落名称',
  560. name: 'name',
  561. type: 'text',
  562. defaultValue: '',
  563. params: {
  564. placeholder: '请输入村落名称',
  565. },
  566. rules: [{
  567. required: true,
  568. message: '请输入村落名称',
  569. }]
  570. },
  571. {
  572. label: '村落编码',
  573. name: 'code',
  574. type: 'text',
  575. defaultValue: '',
  576. params: {
  577. placeholder: '请输入村落编码',
  578. },
  579. rules: [{
  580. required: true,
  581. message: '请输入村落编码',
  582. }]
  583. },
  584. {
  585. label: '村落地址',
  586. name: 'cityAddress',
  587. type: 'select-city',
  588. defaultValue: () => [],
  589. params: {
  590. placeholder: '请选择村落地址',
  591. },
  592. itemParams: { showRightArrow: true } as FieldProps,
  593. rules: [{
  594. required: true,
  595. message: '请选择村落地址',
  596. }]
  597. },
  598. {
  599. label: '村落乡镇',
  600. name: 'township',
  601. type: 'text',
  602. defaultValue: '',
  603. params: {
  604. placeholder: '请输入村落所在乡镇',
  605. },
  606. rules: [{
  607. required: true,
  608. message: '请输入村落所在乡镇',
  609. }]
  610. },
  611. {
  612. label: '村落类型',
  613. name: 'villageType',
  614. type: 'select-id',
  615. params: {
  616. loadData: async () =>
  617. (await VillageInfoApi.getCategoryChildList(94))
  618. .map((p) => ({
  619. value: p.id,
  620. text: p.title,
  621. }))
  622. ,
  623. } as PickerIdFieldProps,
  624. itemParams: { showRightArrow: true } as FieldProps,
  625. rules: [{
  626. required: true,
  627. message: '请选择类型',
  628. }],
  629. },
  630. ]
  631. }],
  632. [2]: [VillageEnvInfo, {
  633. items: [
  634. {
  635. label: '经纬度',
  636. name: 'lonlat',
  637. type: 'select-lonlat',
  638. defaultValue: '',
  639. params: {},
  640. itemParams: { showRightArrow: true } as FieldProps,
  641. rules: [{
  642. required: true,
  643. message: '请输入村落经纬度',
  644. }]
  645. },
  646. {
  647. label: '海拔',
  648. name: 'altitude',
  649. type: 'number',
  650. defaultValue: 0,
  651. params: {
  652. placeholder: '请输入村落海拔',
  653. min: -1000,
  654. max: 10000,
  655. step: 10,
  656. },
  657. rules: [{
  658. required: true,
  659. message: '请输入村落海拔',
  660. }]
  661. },
  662. {
  663. label: '地形地貌特征(多选)',
  664. name: 'landforms',
  665. type: 'check-box-list',
  666. params: {
  667. multiple: true,
  668. loadData: async () =>
  669. (await VillageInfoApi.getCategoryChildList(97))
  670. .map((p) => ({
  671. value: p.id,
  672. text: p.title,
  673. }))
  674. ,
  675. } as CheckBoxListProps,
  676. defaultValue: [],
  677. rules: [{
  678. required: true,
  679. message: '请选择类型',
  680. }],
  681. },
  682. {
  683. label: '村域面积(平方公里)',
  684. name: 'area',
  685. type: 'number',
  686. defaultValue: 0,
  687. params: {
  688. placeholder: '请输入村域面积',
  689. min: 0,
  690. max: 10000,
  691. step: 1,
  692. },
  693. rules: [{
  694. required: true,
  695. message: '请输入村域面积',
  696. }]
  697. },
  698. {
  699. label: '村庄占地面积(亩)',
  700. name: 'villageArea',
  701. type: 'number',
  702. defaultValue: 0,
  703. params: {
  704. placeholder: '请输入村庄占地面积',
  705. min: 0,
  706. max: 10000,
  707. step: 1,
  708. },
  709. rules: [{
  710. required: true,
  711. message: '请输入村庄占地面积',
  712. }]
  713. },
  714. {
  715. label: '村落形成年代',
  716. name: 'age',
  717. type: 'select-id',
  718. params: {
  719. loadData: async () =>
  720. (await VillageInfoApi.getCategoryChildList(103))
  721. .map((p) => ({
  722. value: p.id,
  723. text: p.title,
  724. }))
  725. ,
  726. } as PickerIdFieldProps,
  727. itemParams: { showRightArrow: true } as FieldProps,
  728. rules: [{
  729. required: true,
  730. message: '请选择类型',
  731. }],
  732. },
  733. ]
  734. }],
  735. [3]: [CommonInfoModel, {
  736. items: [
  737. {
  738. label: '非遗最高级别',
  739. name: 'ichLevel',
  740. type: 'select-id',
  741. defaultValue: null,
  742. params: {
  743. loadData: async () =>
  744. (await VillageInfoApi.getCategoryChildList(111))
  745. .map((p) => ({
  746. value: p.id,
  747. text: p.title,
  748. }))
  749. ,
  750. } as PickerIdFieldProps,
  751. itemParams: { showRightArrow: true } as FieldProps,
  752. rules: [{
  753. required: true,
  754. message: '请选择非遗最高级别',
  755. }],
  756. },
  757. {
  758. label: '传统建筑数量',
  759. name: 'traditionalBuildings',
  760. type: 'number',
  761. defaultValue: 0,
  762. params: {
  763. min: 0,
  764. max: 10000,
  765. step: 1,
  766. },
  767. rules: [{
  768. required: true,
  769. message: '请输入传统建筑数量',
  770. }]
  771. },
  772. {
  773. label: '列入历史文化名村级别',
  774. name: 'historyLevel',
  775. type: 'select-id',
  776. params: {
  777. loadData: async () =>
  778. (await VillageInfoApi.getCategoryChildList(151))
  779. .map((p) => ({
  780. value: p.id,
  781. text: p.title,
  782. }))
  783. ,
  784. } as PickerIdFieldProps,
  785. itemParams: { showRightArrow: true } as FieldProps,
  786. rules: [{
  787. required: true,
  788. message: '请选择类型',
  789. }],
  790. },
  791. {
  792. label: '列入特色景观旅游名村级别',
  793. name: 'touristLevel',
  794. type: 'select-id',
  795. params: {
  796. loadData: async () =>
  797. (await VillageInfoApi.getCategoryChildList(151))
  798. .map((p) => ({
  799. value: p.id,
  800. text: p.title,
  801. }))
  802. ,
  803. } as PickerIdFieldProps,
  804. itemParams: { showRightArrow: true } as FieldProps,
  805. rules: [{
  806. required: true,
  807. message: '请选择类型',
  808. }],
  809. },
  810. {
  811. label: '列入少数民族特色村寨试点示范',
  812. name: 'isFeaturedVillage',
  813. type: 'check-box-int',
  814. defaultValue: '',
  815. params: {},
  816. rules: [{
  817. required: true,
  818. message: '请选择类型',
  819. }],
  820. },
  821. {
  822. label: '其他认定级别',
  823. name: 'other',
  824. type: 'text',
  825. defaultValue: '',
  826. params: {
  827. placeholder: '(可选)输入村落其他认定级别',
  828. },
  829. rules: []
  830. },
  831. ]
  832. }],
  833. [4]: [CommonInfoModel, {
  834. items: [
  835. {
  836. name: '',
  837. label: '人口与收入',
  838. children: {
  839. type: 'group',
  840. props: { type: 'block' } as FormGroupProps,
  841. propNestType: 'nest',
  842. items: [
  843. {
  844. label: '主要民族',
  845. name: 'nationlity',
  846. type: 'text',
  847. defaultValue: '',
  848. params: {
  849. placeholder: '请输入主要民族',
  850. },
  851. rules: [{
  852. required: true,
  853. message: '请输入主要民族',
  854. }]
  855. },
  856. ...[
  857. {
  858. label: '户籍人口',
  859. name: 'registeredPopulation',
  860. },
  861. {
  862. label: '常住人口',
  863. name: 'permanentPopulation',
  864. },
  865. {
  866. label: '人均年收入',
  867. name: 'personalAnnualIncome',
  868. },
  869. {
  870. label: '集体年收入',
  871. name: 'villageAnnualIncome',
  872. },
  873. ].map((it) => ({
  874. name: '',
  875. label: it.label,
  876. children: {
  877. type: 'group',
  878. props: { type: 'row' } as FormGroupProps,
  879. propNestType: 'flat',
  880. items: [
  881. {
  882. label: '',
  883. name: it.name + 'Year',
  884. type: 'number',
  885. defaultValue: () => new Date().getFullYear(),
  886. params: {
  887. min: 1900,
  888. max: 2100,
  889. step: 10,
  890. },
  891. itemParams: {
  892. labelWidth: '0rpx',
  893. labelPosition2: 'left',
  894. bottomMargin: false,
  895. },
  896. rules: [{
  897. required: true,
  898. message: '请输入',
  899. }]
  900. },
  901. {
  902. label: '',
  903. name: 'aa',
  904. type: 'static-text',
  905. params: { text: '年' },
  906. itemParams: {
  907. labelWidth: '0rpx',
  908. bottomMargin: false,
  909. },
  910. },
  911. {
  912. label: '',
  913. name: it.name,
  914. type: 'number',
  915. defaultValue: 0,
  916. params: {
  917. min: 0,
  918. step: 10,
  919. },
  920. itemParams: {
  921. labelWidth: '0rpx',
  922. labelPosition2: 'left',
  923. bottomMargin: false,
  924. },
  925. rules: [{
  926. required: true,
  927. message: '请输入人口',
  928. }]
  929. },
  930. ]
  931. }
  932. } as FormDefineItem)),
  933. ]
  934. }
  935. },
  936. {
  937. name: '',
  938. label: '主要产业',
  939. children: {
  940. type: 'group',
  941. props: { type: 'block' } as FormGroupProps,
  942. propNestType: 'flat',
  943. items: [
  944. ...[
  945. {
  946. label: '农业',
  947. name: 'agriculture',
  948. pid: 128,
  949. },
  950. {
  951. label: '林业',
  952. name: 'forestry',
  953. pid: 194,
  954. },
  955. {
  956. label: '畜牧业',
  957. name: 'animal',
  958. pid: 200,
  959. },
  960. {
  961. label: '渔业',
  962. name: 'fishing',
  963. pid: 205,
  964. },
  965. {
  966. label: '制造业(含手工)',
  967. name: 'manufacturing',
  968. pid: 208,
  969. },
  970. {
  971. label: '建筑业',
  972. name: 'construction',
  973. pid: 227,
  974. },
  975. {
  976. label: '批发和零售业',
  977. name: 'retail',
  978. pid: 230,
  979. },
  980. {
  981. label: '服务业',
  982. name: 'service',
  983. pid: 233,
  984. },
  985. {
  986. label: '其他',
  987. name: 'otherIndustries',
  988. pid: 238,
  989. },
  990. ].map((it) => ({
  991. label: it.label,
  992. name: it.name,
  993. type: 'select-id',
  994. params: {
  995. loadData: async () =>
  996. (await VillageInfoApi.getCategoryChildList(it.pid))
  997. .map((p) => ({
  998. value: p.id,
  999. text: p.title,
  1000. }))
  1001. ,
  1002. } as PickerIdFieldProps,
  1003. itemParams: { showRightArrow: true } as FieldProps,
  1004. rules: [],
  1005. })),
  1006. {
  1007. label: '其他服务业',
  1008. name: 'otherService',
  1009. type: 'text',
  1010. defaultValue: '',
  1011. params: {
  1012. placeholder: '(可选)输入其他服务业',
  1013. },
  1014. rules: []
  1015. },
  1016. {
  1017. label: '其他农业',
  1018. name: 'otherAgriculture',
  1019. type: 'text',
  1020. defaultValue: '',
  1021. params: {
  1022. placeholder: '(可选)输入其他农业',
  1023. },
  1024. rules: []
  1025. },
  1026. ]
  1027. }
  1028. },
  1029. ]
  1030. }],
  1031. [5]: [CommonInfoModel, {
  1032. items: [
  1033. {
  1034. name: '',
  1035. children: {
  1036. type: 'group',
  1037. props: {
  1038. class: 'form-block',
  1039. },
  1040. propNestType: 'nest',
  1041. items: [
  1042. {
  1043. label: '概括',
  1044. name: 'overview',
  1045. type: 'richtext',
  1046. defaultValue: '',
  1047. params: {
  1048. placeholder: '请输入概括',
  1049. maxLength: 300,
  1050. showWordLimit: true,
  1051. } as FieldProps,
  1052. rules: [{
  1053. required: true,
  1054. message: '请输入概括',
  1055. }]
  1056. }
  1057. ]
  1058. }
  1059. },
  1060. {
  1061. name: '',
  1062. children: {
  1063. type: 'group',
  1064. props: {
  1065. class: 'form-block',
  1066. },
  1067. propNestType: 'nest',
  1068. items: [
  1069. {
  1070. label: '突出价值',
  1071. name: 'prominent',
  1072. type: 'textarea',
  1073. defaultValue: '',
  1074. params: {
  1075. placeholder: '请输入突出价值',
  1076. maxLength: 1000,
  1077. showWordLimit: true,
  1078. } as FieldProps,
  1079. rules: [{
  1080. required: true,
  1081. message: '请输入突出价值',
  1082. }]
  1083. },
  1084. ]
  1085. }
  1086. },
  1087. ]
  1088. }],
  1089. },
  1090. 'cultural': {
  1091. [1]: [CommonInfoModel, villageCommonContent],
  1092. [2]: [CommonInfoModel, villageCommonContent],
  1093. [3]: [CommonInfoModel, {
  1094. items: [
  1095. ...(villageCommonContent.items.slice(0, 2)),
  1096. {
  1097. label: '扫描件或图片',
  1098. name: 'images',
  1099. type: 'uploader',
  1100. defaultValue: '',
  1101. params: {
  1102. upload: useAliOssUploadCo('xiangyuan/cultural/scan'),
  1103. maxFileSize: 1024 * 1024 * 20,
  1104. maxUploadCount: 20,
  1105. } as UploaderFieldProps,
  1106. rules: [{
  1107. required: true,
  1108. message: '请上传扫描件或图片',
  1109. }]
  1110. },
  1111. ],
  1112. }],
  1113. [4]: [CommonInfoModel, {
  1114. items: [
  1115. ...villageCommonContent.items,
  1116. {
  1117. label: '视频',
  1118. name: 'video',
  1119. type: 'uploader',
  1120. defaultValue: '',
  1121. params: {
  1122. upload: useAliOssUploadCo('xiangyuan/cultural/video'),
  1123. chooseType: 'video',
  1124. maxFileSize: 1024 * 1024 * 20,
  1125. single: true,
  1126. } as UploaderFieldProps,
  1127. },
  1128. ],
  1129. }],
  1130. },
  1131. 'story': {
  1132. [0]: [CommonInfoModel, {
  1133. items: [
  1134. {
  1135. label: '标题',
  1136. name: 'title',
  1137. type: 'text',
  1138. defaultValue: '',
  1139. params: {
  1140. placeholder: '请输入标题',
  1141. },
  1142. rules: [{
  1143. required: true,
  1144. message: '请输入标题',
  1145. }]
  1146. },
  1147. {
  1148. label: '简介',
  1149. name: 'intro',
  1150. type: 'richtext',
  1151. defaultValue: '',
  1152. params: {
  1153. placeholder: '请输入内容',
  1154. },
  1155. rules: [{
  1156. required: true,
  1157. message: '请输入内容',
  1158. }]
  1159. },
  1160. {
  1161. label: '内容',
  1162. name: 'content',
  1163. type: 'richtext',
  1164. defaultValue: '',
  1165. params: {
  1166. placeholder: '请输入内容',
  1167. },
  1168. rules: [{
  1169. required: true,
  1170. message: '请输入内容',
  1171. }]
  1172. }
  1173. ]
  1174. }],
  1175. },
  1176. 'figure': {
  1177. [0]: [CommonInfoModel, {
  1178. items: [
  1179. {
  1180. label: '标题',
  1181. name: 'name',
  1182. type: 'text',
  1183. defaultValue: '',
  1184. params: {
  1185. placeholder: '请输入标题',
  1186. },
  1187. rules: [{
  1188. required: true,
  1189. message: '请输入标题',
  1190. }]
  1191. },
  1192. {
  1193. label: '简介',
  1194. name: 'brief',
  1195. type: 'textarea',
  1196. defaultValue: '',
  1197. params: {
  1198. placeholder: '请输入简介',
  1199. maxLength: 500,
  1200. showWordLimit: true,
  1201. } as FieldProps,
  1202. rules: [{
  1203. required: true,
  1204. message: '请输入简介',
  1205. }]
  1206. },
  1207. {
  1208. label: '内容',
  1209. name: 'intro',
  1210. type: 'richtext',
  1211. defaultValue: '',
  1212. params: {
  1213. placeholder: '请输入内容',
  1214. },
  1215. rules: [{
  1216. required: true,
  1217. message: '请输入内容',
  1218. }]
  1219. }
  1220. ]
  1221. }],
  1222. },
  1223. 'element': {
  1224. [0]: [CommonInfoModel, {
  1225. items: [
  1226. {
  1227. label: '名称',
  1228. name: 'name',
  1229. type: 'text',
  1230. defaultValue: '',
  1231. params: {
  1232. placeholder: '请输入名称',
  1233. },
  1234. rules: [{
  1235. required: true,
  1236. message: '请输入名称',
  1237. }]
  1238. },
  1239. {
  1240. label: '位置',
  1241. name: 'position',
  1242. type: 'text',
  1243. defaultValue: '',
  1244. params: {
  1245. placeholder: '请输入位置',
  1246. },
  1247. rules: [{
  1248. required: true,
  1249. message: '请输入位置',
  1250. }]
  1251. },
  1252. {
  1253. label: '年代',
  1254. name: 'age',
  1255. type: 'select-id',
  1256. params: {
  1257. loadData: async () =>
  1258. (await VillageInfoApi.getCategoryChildList(103))
  1259. .map((p) => ({
  1260. value: p.id,
  1261. text: p.title,
  1262. }))
  1263. ,
  1264. } as PickerIdFieldProps,
  1265. itemParams: { showRightArrow: true } as FieldProps,
  1266. rules: [{
  1267. required: true,
  1268. message: '请选择年代',
  1269. }],
  1270. },
  1271. {
  1272. label: '要素类型',
  1273. name: 'elementType',
  1274. type: 'select-id',
  1275. params: {
  1276. loadData: async () =>
  1277. (await VillageInfoApi.getCategoryChildList(178))
  1278. .map((p) => ({
  1279. value: p.id,
  1280. text: p.title,
  1281. }))
  1282. ,
  1283. } as PickerIdFieldProps,
  1284. itemParams: { showRightArrow: true } as FieldProps,
  1285. rules: [{
  1286. required: true,
  1287. message: '请选择 要素类型',
  1288. }],
  1289. },
  1290. {
  1291. label: '编号',
  1292. name: 'code',
  1293. type: 'text',
  1294. defaultValue: '',
  1295. params: {
  1296. placeholder: '(可选)请输入编号',
  1297. },
  1298. },
  1299. {
  1300. label: '环境特点',
  1301. name: 'environment',
  1302. type: 'textarea',
  1303. defaultValue: '',
  1304. params: {
  1305. placeholder: '请输入环境特点',
  1306. maxLength: 500,
  1307. showWordLimit: true,
  1308. } as FieldProps,
  1309. rules: [{
  1310. required: true,
  1311. message: '请输入环境特点',
  1312. }]
  1313. },
  1314. {
  1315. label: '文化故事',
  1316. name: 'story',
  1317. type: 'textarea',
  1318. defaultValue: '',
  1319. params: {
  1320. placeholder: '请输入文化故事',
  1321. maxLength: 1000,
  1322. showWordLimit: true,
  1323. } as FieldProps,
  1324. rules: [{
  1325. required: true,
  1326. message: '请输入文化故事',
  1327. }]
  1328. },
  1329. {
  1330. label: '保存状况',
  1331. name: 'condition',
  1332. type: 'textarea',
  1333. defaultValue: '',
  1334. params: {
  1335. placeholder: '请输入保存状况',
  1336. maxLength: 500,
  1337. showWordLimit: true,
  1338. } as FieldProps,
  1339. rules: [{
  1340. required: true,
  1341. message: '请输入保存状况',
  1342. }]
  1343. },
  1344. {
  1345. label: '功能特点',
  1346. name: 'funcFeatures',
  1347. type: 'textarea',
  1348. defaultValue: '',
  1349. params: {
  1350. placeholder: '请输入功能特点',
  1351. maxLength: 300,
  1352. showWordLimit: true,
  1353. } as FieldProps,
  1354. rules: [{
  1355. required: true,
  1356. message: '请输入功能特点',
  1357. }]
  1358. },
  1359. ]
  1360. }]
  1361. },
  1362. 'environment': {
  1363. [0]: [CommonInfoModel, {
  1364. items: [
  1365. {
  1366. label: '名称',
  1367. name: 'name',
  1368. type: 'text',
  1369. defaultValue: '',
  1370. params: {
  1371. placeholder: '请输入名称',
  1372. },
  1373. rules: [{
  1374. required: true,
  1375. message: '请输入名称',
  1376. }]
  1377. },
  1378. {
  1379. label: '自然环境',
  1380. name: 'natural',
  1381. type: 'textarea',
  1382. defaultValue: '',
  1383. params: {
  1384. placeholder: '请输入自然环境',
  1385. },
  1386. rules: [{
  1387. required: true,
  1388. message: '请输入自然环境',
  1389. }]
  1390. },
  1391. {
  1392. label: '选址',
  1393. name: 'siteSelection',
  1394. type: 'textarea',
  1395. defaultValue: '',
  1396. params: {
  1397. placeholder: '请输入选址',
  1398. },
  1399. rules: [{
  1400. required: true,
  1401. message: '请输入选址',
  1402. }]
  1403. },
  1404. {
  1405. label: '格局',
  1406. name: 'structure',
  1407. type: 'textarea',
  1408. defaultValue: '',
  1409. params: {
  1410. placeholder: '请输入格局',
  1411. },
  1412. rules: [{
  1413. required: true,
  1414. message: '请输入格局',
  1415. }]
  1416. },
  1417. {
  1418. label: '整体风貌',
  1419. name: 'overallStyle',
  1420. type: 'textarea',
  1421. defaultValue: '',
  1422. params: {
  1423. placeholder: '请输入整体风貌',
  1424. },
  1425. rules: [{
  1426. required: true,
  1427. message: '请输入整体风貌',
  1428. }]
  1429. },
  1430. {
  1431. label: '农业遗产',
  1432. name: 'agriculturalHeritage',
  1433. type: 'text',
  1434. defaultValue: '',
  1435. params: {
  1436. placeholder: '请输入农业遗产',
  1437. },
  1438. rules: [{
  1439. required: true,
  1440. message: '请输入农业遗产',
  1441. }]
  1442. },
  1443. ]
  1444. }]
  1445. },
  1446. 'building': {
  1447. [1]: villageInfoBuildingForm,
  1448. [2]: villageInfoBuildingForm,
  1449. [3]: villageInfoBuildingForm,
  1450. },
  1451. 'distribution': {
  1452. [0]: [CommonInfoModel, {
  1453. items: [
  1454. {
  1455. label: '建筑数量',
  1456. name: 'num',
  1457. type: 'number',
  1458. defaultValue: '',
  1459. params: {
  1460. min: 0,
  1461. max: 100,
  1462. },
  1463. rules: [{
  1464. required: true,
  1465. message: '请输入建筑数量',
  1466. }]
  1467. },
  1468. {
  1469. label: '分布图',
  1470. name: 'distribution',
  1471. type: 'uploader',
  1472. defaultValue: '',
  1473. params: {
  1474. upload: useAliOssUploadCo('xiangyuan/distribution'),
  1475. maxFileSize: 1024 * 1024 * 20,
  1476. single: true,
  1477. } as UploaderFieldProps,
  1478. rules: [{
  1479. required: true,
  1480. message: '请上传分布图',
  1481. }]
  1482. },
  1483. {
  1484. label: '营造智慧',
  1485. name: 'wisdom',
  1486. type: 'textarea',
  1487. defaultValue: '',
  1488. params: {
  1489. placeholder: '请输入营造智慧',
  1490. },
  1491. rules: [{
  1492. required: true,
  1493. message: '请输入营造智慧',
  1494. }]
  1495. },
  1496. ]
  1497. }],
  1498. },
  1499. 'relic': {
  1500. [0]: [CommonInfoModel, {
  1501. items: [
  1502. {
  1503. label: '建筑名称',
  1504. name: 'name',
  1505. type: 'text',
  1506. defaultValue: '',
  1507. params: {
  1508. placeholder: '请输入建筑名称',
  1509. },
  1510. rules: [{
  1511. required: true,
  1512. message: '请输入建筑名称',
  1513. }]
  1514. },
  1515. {
  1516. label: '文物编码',
  1517. name: 'code',
  1518. type: 'text',
  1519. defaultValue: '',
  1520. params: {
  1521. placeholder: '请输入文物编码',
  1522. },
  1523. rules: [{
  1524. required: true,
  1525. message: '请输入文物编码',
  1526. }]
  1527. },
  1528. {
  1529. label: '年代',
  1530. name: 'age',
  1531. type: 'select-id',
  1532. params: {
  1533. loadData: async () =>
  1534. (await VillageInfoApi.getCategoryChildList(103))
  1535. .map((p) => ({
  1536. value: p.id,
  1537. text: p.title,
  1538. }))
  1539. ,
  1540. } as PickerIdFieldProps,
  1541. itemParams: { showRightArrow: true } as FieldProps,
  1542. rules: [{
  1543. required: true,
  1544. message: '请选择年代',
  1545. }],
  1546. },
  1547. {
  1548. label: '简介',
  1549. name: 'intro',
  1550. type: 'richtext',
  1551. defaultValue: '',
  1552. params: {},
  1553. rules: [{
  1554. required: true,
  1555. message: '请输入简介',
  1556. }]
  1557. },
  1558. {
  1559. label: '描述',
  1560. name: 'description',
  1561. type: 'richtext',
  1562. defaultValue: '',
  1563. params: {},
  1564. rules: [{
  1565. required: true,
  1566. message: '请输入描述',
  1567. }]
  1568. },
  1569. {
  1570. label: '保护级别',
  1571. name: 'level',
  1572. type: 'select-id',
  1573. params: {
  1574. loadData: async () =>
  1575. (await VillageInfoApi.getCategoryChildList(158))
  1576. .map((p) => ({
  1577. value: p.id,
  1578. text: p.title,
  1579. }))
  1580. ,
  1581. } as PickerIdFieldProps,
  1582. itemParams: { showRightArrow: true } as FieldProps,
  1583. rules: [{
  1584. required: true,
  1585. message: '请选择保护级别',
  1586. }],
  1587. },
  1588. {
  1589. label: '文物类型',
  1590. name: 'crType',
  1591. type: 'select-id',
  1592. params: {
  1593. loadData: async () =>
  1594. (await VillageInfoApi.getCategoryChildList(3))
  1595. .map((p) => ({
  1596. value: p.id,
  1597. text: p.title,
  1598. }))
  1599. ,
  1600. } as PickerIdFieldProps,
  1601. itemParams: { showRightArrow: true } as FieldProps,
  1602. rules: [{
  1603. required: true,
  1604. message: '请选择文物类型',
  1605. }],
  1606. },
  1607. {
  1608. label: '经纬度',
  1609. name: 'lonlat',
  1610. type: 'select-lonlat',
  1611. defaultValue: '',
  1612. params: {},
  1613. itemParams: { showRightArrow: true } as FieldProps,
  1614. rules: [{
  1615. required: true,
  1616. message: '请输入经纬度',
  1617. }]
  1618. },
  1619. {
  1620. name: '',
  1621. label: '平面坐标XY',
  1622. children: {
  1623. type: 'group',
  1624. props: { type: 'row' } as FormGroupProps,
  1625. propNestType: 'flat',
  1626. items: [
  1627. {
  1628. label: '',
  1629. name: 'mapX',
  1630. type: 'number',
  1631. defaultValue: 0,
  1632. params: {
  1633. min: -250,
  1634. max: 250,
  1635. } as StepperProps,
  1636. itemParams: {
  1637. labelWidth: '0rpx',
  1638. labelPosition2: 'left',
  1639. bottomMargin: false,
  1640. },
  1641. rules: [{
  1642. required: true,
  1643. message: '请输入X',
  1644. }]
  1645. },
  1646. {
  1647. label: '',
  1648. name: 'mapY',
  1649. type: 'number',
  1650. defaultValue: 0,
  1651. params: {
  1652. min: -250,
  1653. max: 250,
  1654. } as StepperProps,
  1655. itemParams: {
  1656. labelWidth: '0rpx',
  1657. labelPosition2: 'left',
  1658. bottomMargin: false,
  1659. },
  1660. rules: [{
  1661. required: true,
  1662. message: '请输入Y',
  1663. }]
  1664. },
  1665. ]
  1666. }
  1667. },
  1668. {
  1669. label: '地址',
  1670. name: 'address',
  1671. type: 'text',
  1672. defaultValue: '',
  1673. params: {
  1674. placeholder: '请输入地址',
  1675. },
  1676. rules: [{
  1677. required: true,
  1678. message: '请输入地址',
  1679. }]
  1680. },
  1681. {
  1682. label: '图片',
  1683. name: 'images',
  1684. type: 'uploader',
  1685. defaultValue: '',
  1686. params: {
  1687. upload: useAliOssUploadCo('xiangyuan/relic'),
  1688. maxFileSize: 1024 * 1024 * 20,
  1689. maxUploadCount: 20,
  1690. } as UploaderFieldProps,
  1691. rules: []
  1692. },
  1693. {
  1694. label: '文化故事',
  1695. name: 'content',
  1696. type: 'richtext',
  1697. defaultValue: '',
  1698. params: {
  1699. placeholder: '文化故事',
  1700. maxLength: 5000,
  1701. showWordLimit: true,
  1702. } as FieldProps,
  1703. rules: []
  1704. },
  1705. {
  1706. label: '方位',
  1707. name: 'orientation',
  1708. type: 'text',
  1709. defaultValue: '',
  1710. params: { placeholder: '方位' },
  1711. rules: []
  1712. },
  1713. {
  1714. label: '相对距离',
  1715. name: 'distance',
  1716. type: 'text',
  1717. defaultValue: '',
  1718. params: { placeholder: '相对距离' },
  1719. rules: []
  1720. },
  1721. ]
  1722. }],
  1723. },
  1724. 'folk_culture': {
  1725. [1]: villageInfoFolkCultureForm,
  1726. [2]: villageInfoFolkCultureForm,
  1727. [3]: villageInfoFolkCultureForm,
  1728. [4]: villageInfoFolkCultureForm,
  1729. [5]: villageInfoFolkCultureForm,
  1730. },
  1731. 'ich': {
  1732. [0]: [CommonInfoModel, {
  1733. items: [
  1734. {
  1735. label: '名称及管理编号',
  1736. name: 'name',
  1737. type: 'text',
  1738. defaultValue: '',
  1739. params: {
  1740. placeholder: '请输入名称',
  1741. },
  1742. rules: [{
  1743. required: true,
  1744. message: '请输入名称',
  1745. }]
  1746. },
  1747. {
  1748. label: '编号',
  1749. name: 'code',
  1750. type: 'text',
  1751. defaultValue: '',
  1752. params: {
  1753. placeholder: '请输入编号',
  1754. },
  1755. rules: [{
  1756. required: true,
  1757. message: '请输入编号',
  1758. }]
  1759. },
  1760. {
  1761. label: '文化资源关联内容ID',
  1762. name: 'inheritor',
  1763. type: 'text',
  1764. defaultValue: '',
  1765. params: {
  1766. placeholder: '输入文化资源关联内容ID',
  1767. },
  1768. rules: []
  1769. },
  1770. {
  1771. label: '级别',
  1772. name: 'ichLevel',
  1773. type: 'select-id',
  1774. params: {
  1775. loadData: async () =>
  1776. (await VillageInfoApi.getCategoryChildList(111))
  1777. .map((p) => ({
  1778. value: p.id,
  1779. text: p.title,
  1780. }))
  1781. ,
  1782. } as PickerIdFieldProps,
  1783. itemParams: { showRightArrow: true } as FieldProps,
  1784. rules: [{
  1785. required: true,
  1786. message: '请选择级别',
  1787. }],
  1788. },
  1789. {
  1790. label: '类型',
  1791. name: 'ichType',
  1792. type: 'select-id',
  1793. params: {
  1794. loadData: async () =>
  1795. (await VillageInfoApi.getCategoryChildList(4))
  1796. .map((p) => ({
  1797. value: p.id,
  1798. text: p.title,
  1799. }))
  1800. ,
  1801. } as PickerIdFieldProps,
  1802. itemParams: { showRightArrow: true } as FieldProps,
  1803. rules: [{
  1804. required: true,
  1805. message: '请选择类型',
  1806. }],
  1807. },
  1808. {
  1809. label: '是否确定传承人',
  1810. name: 'isInheritor',
  1811. type: 'check-box-int',
  1812. defaultValue: 0,
  1813. params: {
  1814. text: '是',
  1815. } as CheckBoxToIntProps ,
  1816. rules: [{
  1817. required: true,
  1818. message: '请选择是否确定传承人',
  1819. }]
  1820. },
  1821. {
  1822. label: '传承人情况',
  1823. name: 'inheritor',
  1824. type: 'textarea',
  1825. defaultValue: '',
  1826. params: {
  1827. placeholder: '请输入传承人情况',
  1828. },
  1829. rules: [{
  1830. required: true,
  1831. message: '请输入输入传承人情况',
  1832. }]
  1833. },
  1834. {
  1835. label: '项目续存情况',
  1836. name: 'ichExistenceStatus',
  1837. type: 'select-id',
  1838. params: {
  1839. loadData: async () =>
  1840. (await VillageInfoApi.getCategoryChildList(120))
  1841. .map((p) => ({
  1842. value: p.id,
  1843. text: p.title,
  1844. }))
  1845. ,
  1846. } as PickerIdFieldProps,
  1847. itemParams: { showRightArrow: true } as FieldProps,
  1848. rules: [{
  1849. required: true,
  1850. message: '请选择项目续存情况',
  1851. }],
  1852. },
  1853. {
  1854. label: '与村落依存程度',
  1855. name: 'ichDependenceDegree',
  1856. type: 'select-id',
  1857. params: {
  1858. loadData: async () =>
  1859. (await VillageInfoApi.getCategoryChildList(124))
  1860. .map((p) => ({
  1861. value: p.id,
  1862. text: p.title,
  1863. }))
  1864. ,
  1865. } as PickerIdFieldProps,
  1866. itemParams: { showRightArrow: true } as FieldProps,
  1867. rules: [{
  1868. required: true,
  1869. message: '请选择与村落依存程度',
  1870. }],
  1871. },
  1872. {
  1873. label: '活动规模',
  1874. name: 'activityScale',
  1875. type: 'select-id',
  1876. params: {
  1877. loadData: async () =>
  1878. (await VillageInfoApi.getCategoryChildList(142))
  1879. .map((p) => ({
  1880. value: p.id,
  1881. text: p.title,
  1882. }))
  1883. ,
  1884. } as PickerIdFieldProps,
  1885. itemParams: { showRightArrow: true } as FieldProps,
  1886. rules: [{
  1887. required: true,
  1888. message: '请选择活动规模',
  1889. }],
  1890. },
  1891. {
  1892. label: '传承时间',
  1893. name: 'inheritanceTime',
  1894. type: 'select-id',
  1895. params: {
  1896. loadData: async () =>
  1897. (await VillageInfoApi.getCategoryChildList(147))
  1898. .map((p) => ({
  1899. value: p.id,
  1900. text: p.title,
  1901. }))
  1902. ,
  1903. } as PickerIdFieldProps,
  1904. itemParams: { showRightArrow: true } as FieldProps,
  1905. rules: [{
  1906. required: true,
  1907. message: '请选择传承时间',
  1908. }],
  1909. },
  1910. {
  1911. label: '具体传承时间',
  1912. name: 'otherInheritanceTime',
  1913. type: 'picker-datetime',
  1914. show: { callback(model, rawModel) {
  1915. return (rawModel.inheritanceTime === 150);
  1916. } },
  1917. params: {
  1918. type: 'datetime',
  1919. },
  1920. itemParams: { showRightArrow: true } as FieldProps,
  1921. rules: [{
  1922. required: true,
  1923. message: '请选择具体传承时间',
  1924. }],
  1925. },
  1926. {
  1927. label: '加入时间',
  1928. name: 'joinAt',
  1929. type: 'picker-datetime',
  1930. params: {
  1931. type: 'datetime',
  1932. },
  1933. itemParams: { showRightArrow: true } as FieldProps,
  1934. rules: [{
  1935. required: true,
  1936. message: '请选择加入时间',
  1937. }],
  1938. },
  1939. ]
  1940. }],
  1941. },
  1942. 'travel_guide': {
  1943. [0]: [CommonInfoModel, {
  1944. items: [
  1945. {
  1946. label: '入村路线',
  1947. name: 'villageRoute',
  1948. type: 'text',
  1949. defaultValue: '',
  1950. params: {
  1951. placeholder: '请输入入村路线',
  1952. },
  1953. rules: [{
  1954. required: true,
  1955. message: '请输入入村路线',
  1956. }]
  1957. },
  1958. {
  1959. label: '距离县城(KM)',
  1960. name: 'county',
  1961. type: 'number',
  1962. defaultValue: '',
  1963. params: { min: 0 },
  1964. rules: [{
  1965. required: true,
  1966. message: '请输入距离县城',
  1967. }]
  1968. },
  1969. {
  1970. label: '距离镇区中心(KM)',
  1971. name: 'town',
  1972. type: 'number',
  1973. defaultValue: '',
  1974. params: { min: 0 },
  1975. rules: [{
  1976. required: true,
  1977. message: '请输入距离镇区中心',
  1978. }]
  1979. },
  1980. {
  1981. label: '距离市中心(KM)',
  1982. name: 'city',
  1983. type: 'number',
  1984. defaultValue: '',
  1985. params: { min: 0 },
  1986. rules: [{
  1987. required: true,
  1988. message: '请输入距离市中心',
  1989. }]
  1990. },
  1991. {
  1992. label: '最近高速收费站名称',
  1993. name: 'tollStationName',
  1994. type: 'text',
  1995. defaultValue: '',
  1996. params: {
  1997. placeholder: '请输入最近高速收费站名称',
  1998. },
  1999. rules: [{
  2000. required: true,
  2001. message: '请输入最近高速收费站名称',
  2002. }]
  2003. },
  2004. //有无公交车
  2005. {
  2006. label: '有无公交车',
  2007. name: 'isBus',
  2008. type: 'check-box-int',
  2009. defaultValue: 0,
  2010. params: {
  2011. text: '有',
  2012. },
  2013. rules: [{
  2014. required: true,
  2015. message: '请选择有无公交车',
  2016. }]
  2017. },
  2018. {
  2019. label: '公交车介绍',
  2020. name: 'busIntro',
  2021. type: 'text',
  2022. show: { callback: (_, rawModel) => (rawModel.isBus === 1) },
  2023. defaultValue: '',
  2024. params: {
  2025. placeholder: '请输入公交车介绍',
  2026. },
  2027. rules: []
  2028. },
  2029. {
  2030. label: '最近高速收费站名称',
  2031. name: 'tollStation',
  2032. type: 'text',
  2033. defaultValue: '',
  2034. params: {
  2035. placeholder: '请输入最近高速收费站名称',
  2036. },
  2037. rules: []
  2038. },
  2039. {
  2040. label: '距离最近火车站',
  2041. name: 'trainStation',
  2042. type: 'text',
  2043. defaultValue: '',
  2044. params: {
  2045. placeholder: '请输入距离最近火车站',
  2046. },
  2047. rules: []
  2048. },
  2049. {
  2050. label: '其他交通方式',
  2051. name: 'otherBus',
  2052. type: 'text',
  2053. defaultValue: '',
  2054. params: {
  2055. placeholder: '请输入其他交通方式',
  2056. },
  2057. rules: []
  2058. },
  2059. {
  2060. label: '景区全景图',
  2061. name: 'panorama',
  2062. type: 'uploader',
  2063. defaultValue: '',
  2064. params: {
  2065. upload: useAliOssUploadCo('xiangyuan/travel/panorama'),
  2066. maxFileSize: 1024 * 1024 * 20,
  2067. single: true,
  2068. } as UploaderFieldProps,
  2069. rules: []
  2070. },
  2071. {
  2072. label: '其他图',
  2073. name: 'otherImage',
  2074. type: 'uploader',
  2075. defaultValue: '',
  2076. params: {
  2077. upload: useAliOssUploadCo('xiangyuan/travel/guide'),
  2078. maxFileSize: 1024 * 1024 * 20,
  2079. single: true,
  2080. } as UploaderFieldProps,
  2081. rules: []
  2082. },
  2083. //解说牌
  2084. {
  2085. label: '有无解说牌',
  2086. name: 'introBoard',
  2087. type: 'check-box-int',
  2088. defaultValue: 0,
  2089. params: {
  2090. text: '有',
  2091. },
  2092. rules: [{
  2093. required: true,
  2094. message: '请选择有无解说牌',
  2095. }]
  2096. },
  2097. {
  2098. label: '其他解说牌',
  2099. name: 'otherIntroBoard',
  2100. type: 'text',
  2101. defaultValue: '',
  2102. params: {
  2103. placeholder: '请输入其他解说牌',
  2104. },
  2105. rules: []
  2106. },
  2107. {
  2108. label: '有无解指示牌',
  2109. name: 'indicateBoard',
  2110. type: 'check-box-int',
  2111. defaultValue: 0,
  2112. params: {
  2113. text: '有',
  2114. },
  2115. rules: [{
  2116. required: true,
  2117. message: '请选择有无指示牌',
  2118. }]
  2119. },
  2120. {
  2121. label: '其他指示牌',
  2122. name: 'otherIndicateBoard',
  2123. type: 'text',
  2124. defaultValue: '',
  2125. params: {
  2126. placeholder: '请输入其他指示牌',
  2127. },
  2128. rules: []
  2129. },
  2130. {
  2131. label: '有无安全告示牌',
  2132. name: 'safeBoard',
  2133. type: 'check-box-int',
  2134. defaultValue: 0,
  2135. params: {
  2136. text: '有',
  2137. },
  2138. rules: [{
  2139. required: true,
  2140. message: '请选择有无安全告示牌',
  2141. }]
  2142. },
  2143. {
  2144. label: '其他指示牌',
  2145. name: 'otherSafeBoard',
  2146. type: 'text',
  2147. defaultValue: '',
  2148. params: {
  2149. placeholder: '请输入其他安全告示牌',
  2150. },
  2151. rules: []
  2152. },
  2153. {
  2154. label: '有无游客服务中心',
  2155. name: 'visitorCenter',
  2156. type: 'check-box-int',
  2157. defaultValue: 0,
  2158. params: {
  2159. text: '有',
  2160. },
  2161. rules: [{
  2162. required: true,
  2163. message: '请选择有有无游客服务中心',
  2164. }]
  2165. },
  2166. {
  2167. label: '游客服务中心面积',
  2168. name: 'visitorCenterArea',
  2169. type: 'text',
  2170. defaultValue: '',
  2171. params: {
  2172. placeholder: '请输入游客服务中心面积',
  2173. },
  2174. rules: []
  2175. },
  2176. {
  2177. label: '商业设施',
  2178. name: 'business',
  2179. type: 'select-id',
  2180. params: {
  2181. loadData: async () =>
  2182. (await VillageInfoApi.getCategoryChildList(282))
  2183. .map((p) => ({
  2184. value: p.id,
  2185. text: p.title,
  2186. }))
  2187. ,
  2188. } as PickerIdFieldProps,
  2189. itemParams: { showRightArrow: true } as FieldProps,
  2190. rules: [{
  2191. required: true,
  2192. message: '请选择商业设施',
  2193. }],
  2194. },
  2195. {
  2196. label: '其他商业设施',
  2197. name: 'otherBusiness',
  2198. type: 'text',
  2199. defaultValue: '',
  2200. params: {
  2201. placeholder: '请输入其他商业设施',
  2202. },
  2203. rules: []
  2204. },
  2205. //医疗点
  2206. {
  2207. label: '有无医疗点',
  2208. name: 'medicalPoint',
  2209. type: 'select',
  2210. defaultValue: 0,
  2211. params: {
  2212. columns: [[
  2213. { value: 0, text: '无' },
  2214. { value: 1, text: '有' },
  2215. { value: 2, text: '其他' }
  2216. ]],
  2217. singleValue: true,
  2218. } as PickerFieldProps,
  2219. itemParams: {
  2220. showRightArrow: true,
  2221. },
  2222. rules: [{
  2223. required: true,
  2224. message: '请选择有无医疗点',
  2225. }]
  2226. },
  2227. {
  2228. label: '其他医疗点',
  2229. name: 'otherMedicalPoint',
  2230. type: 'text',
  2231. show: { callback: (_, rawModel) => (rawModel.medicalPoint === 2) },
  2232. defaultValue: '',
  2233. params: {
  2234. placeholder: '请输入其他医疗点',
  2235. },
  2236. rules: []
  2237. },
  2238. //医疗点
  2239. {
  2240. label: '有无游览车',
  2241. name: 'tourBus',
  2242. type: 'select',
  2243. defaultValue: 0,
  2244. params: {
  2245. columns: [[
  2246. { value: 0, text: '无' },
  2247. { value: 1, text: '有' },
  2248. { value: 2, text: '其他' }
  2249. ]],
  2250. singleValue: true,
  2251. } as PickerFieldProps,
  2252. itemParams: {
  2253. showRightArrow: true,
  2254. },
  2255. rules: [{
  2256. required: true,
  2257. message: '请选择有无游览车',
  2258. }]
  2259. },
  2260. {
  2261. label: '其他游览车',
  2262. name: 'otherTourBus',
  2263. type: 'text',
  2264. show: { callback: (_, rawModel) => (rawModel.tourBus === 2) },
  2265. defaultValue: '',
  2266. params: {
  2267. placeholder: '请输入其他游览车',
  2268. },
  2269. rules: []
  2270. },
  2271. //
  2272. {
  2273. label: '机动车停车场(单位:辆)',
  2274. name: 'parkingLot',
  2275. type: 'number',
  2276. defaultValue: 0,
  2277. params: { min: 0 },
  2278. rules: []
  2279. },
  2280. {
  2281. label: '分类垃圾点(单位:处)',
  2282. name: 'garbagePoint',
  2283. type: 'number',
  2284. defaultValue: 0,
  2285. params: { min: 0 },
  2286. rules: []
  2287. },
  2288. {
  2289. label: '公共卫生间(单位:处)',
  2290. name: 'publicToilets',
  2291. type: 'number',
  2292. defaultValue: 0,
  2293. params: { min: 0 },
  2294. rules: []
  2295. },
  2296. ]
  2297. }]
  2298. },
  2299. 'route': {
  2300. [1]: [CommonInfoModel, {
  2301. items: [
  2302. {
  2303. label: '游览路线',
  2304. name: 'route',
  2305. type: 'text',
  2306. defaultValue: '',
  2307. params: {
  2308. placeholder: '请输入游览路线',
  2309. },
  2310. rules: [{
  2311. required: true,
  2312. message: '请输入游览路线',
  2313. }]
  2314. },
  2315. {
  2316. label: '路线名称',
  2317. name: 'name',
  2318. type: 'text',
  2319. defaultValue: '',
  2320. params: {
  2321. placeholder: '请输入路线名称',
  2322. },
  2323. rules: [{
  2324. required: true,
  2325. message: '请输入路线名称',
  2326. }]
  2327. },
  2328. {
  2329. label: '描述',
  2330. name: 'desc',
  2331. type: 'textarea',
  2332. defaultValue: '',
  2333. params: {
  2334. placeholder: '请输入描述',
  2335. },
  2336. rules: [{
  2337. required: true,
  2338. message: '请输入描述',
  2339. }]
  2340. },
  2341. {
  2342. label: '起始点',
  2343. name: 'startPoint',
  2344. type: 'text',
  2345. defaultValue: '',
  2346. params: {
  2347. placeholder: '请输入起始点',
  2348. },
  2349. rules: [{
  2350. required: true,
  2351. message: '请输入起始点',
  2352. }]
  2353. },
  2354. {
  2355. label: '终止点',
  2356. name: 'endPoint',
  2357. type: 'text',
  2358. defaultValue: '',
  2359. params: {
  2360. placeholder: '请输入终止点',
  2361. },
  2362. rules: [{
  2363. required: true,
  2364. message: '请输入终止点',
  2365. }]
  2366. },
  2367. {
  2368. label: '预计时长(小时)',
  2369. name: 'estimate',
  2370. type: 'number',
  2371. defaultValue: 1,
  2372. params: {
  2373. min: 1,
  2374. },
  2375. rules: [{
  2376. required: true,
  2377. message: '请输入预计时长',
  2378. }]
  2379. },
  2380. ]
  2381. }],
  2382. [2]: [CommonInfoModel, {
  2383. items: [
  2384. {
  2385. label: '活动标题',
  2386. name: 'activity',
  2387. type: 'text',
  2388. defaultValue: '',
  2389. params: {
  2390. placeholder: '请输入活动标题',
  2391. },
  2392. rules: [{
  2393. required: true,
  2394. message: '请输入活动标题',
  2395. }]
  2396. },
  2397. {
  2398. label: '活动开始时间',
  2399. name: 'startTime',
  2400. type: 'picker-datetime',
  2401. defaultValue: '',
  2402. params: {
  2403. type: 'datetime',
  2404. },
  2405. rules: [{
  2406. required: true,
  2407. message: '请选择活动开始时间',
  2408. }],
  2409. },
  2410. {
  2411. label: '活动结束时间',
  2412. name: 'endTime',
  2413. type: 'picker-datetime',
  2414. defaultValue: '',
  2415. params: {
  2416. type: 'datetime',
  2417. },
  2418. rules: [{
  2419. required: true,
  2420. message: '请选择活动结束时间',
  2421. }],
  2422. },
  2423. {
  2424. label: '活动时长(分钟)',
  2425. name: 'duration',
  2426. type: 'number',
  2427. defaultValue: 0,
  2428. params: {
  2429. min: 0,
  2430. },
  2431. rules: [{
  2432. required: true,
  2433. message: '请选择活动时长',
  2434. }],
  2435. },
  2436. ]
  2437. }],
  2438. [3]: [CommonInfoModel, {
  2439. items: [
  2440. {
  2441. label: '特色',
  2442. name: 'advant',
  2443. type: 'textarea',
  2444. defaultValue: '',
  2445. params: {
  2446. placeholder: '请输入特色',
  2447. maxLength: 300,
  2448. showWordLimit: true,
  2449. } as FieldProps,
  2450. rules: [{
  2451. required: true,
  2452. message: '请输入特色',
  2453. }]
  2454. },
  2455. {
  2456. label: '文化背景',
  2457. name: 'intro',
  2458. type: 'textarea',
  2459. defaultValue: '',
  2460. params: {
  2461. placeholder: '请输入文化背景',
  2462. maxLength: 300,
  2463. showWordLimit: true,
  2464. } as FieldProps,
  2465. rules: [{
  2466. required: true,
  2467. message: '请输入文化背景',
  2468. }]
  2469. },
  2470. {
  2471. label: '精彩推荐',
  2472. name: 'recommend',
  2473. type: 'textarea',
  2474. defaultValue: '',
  2475. params: {
  2476. placeholder: '请输入精彩推荐',
  2477. maxLength: 300,
  2478. showWordLimit: true,
  2479. } as FieldProps,
  2480. rules: [{
  2481. required: true,
  2482. message: '请输入精彩推荐',
  2483. }]
  2484. },
  2485. {
  2486. label: '推荐描述',
  2487. name: 'reason',
  2488. type: 'textarea',
  2489. defaultValue: '',
  2490. params: {
  2491. placeholder: '请输入推荐描述',
  2492. maxLength: 300,
  2493. showWordLimit: true,
  2494. } as FieldProps,
  2495. rules: [{
  2496. required: true,
  2497. message: '请输入推荐描述',
  2498. }]
  2499. },
  2500. {
  2501. label: '活动亮点',
  2502. name: 'highlight',
  2503. type: 'textarea',
  2504. defaultValue: '',
  2505. params: {
  2506. placeholder: '请输入活动亮点',
  2507. maxLength: 300,
  2508. showWordLimit: true,
  2509. } as FieldProps,
  2510. rules: [{
  2511. required: true,
  2512. message: '请输入活动亮点',
  2513. }]
  2514. },
  2515. {
  2516. label: '图片视频',
  2517. name: 'images',
  2518. type: 'uploader',
  2519. defaultValue: '',
  2520. params: {
  2521. upload: useAliOssUploadCo('xiangyuan/activity'),
  2522. maxFileSize: 1024 * 1024 * 20,
  2523. maxUploadCount: 20,
  2524. } as UploaderFieldProps,
  2525. rules: []
  2526. },
  2527. ]
  2528. }]
  2529. },
  2530. 'food_product': {
  2531. [1]: villageInfoFoodProductsForm,
  2532. [2]: villageInfoFoodProductsForm,
  2533. [3]: villageInfoFoodProductsForm,
  2534. [4]: villageInfoFoodProductsForm,
  2535. [5]: villageInfoFoodProductsForm,
  2536. [6]: villageInfoFoodProductsForm,
  2537. },
  2538. }
  2539. export function getVillageInfoForm(subType: string, subId: number) {
  2540. const group = villageInfoForm[subType];
  2541. if (!group)
  2542. throw new Error('subType ' + subType + ' not found');
  2543. return group[subId];
  2544. }