data.ts.vm 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
  2. import { dateFormatter } from '@/utils/formatTime'
  3. // 表单校验
  4. export const rules = reactive({
  5. #foreach ($column in $columns)
  6. #if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键
  7. #set($comment=$column.columnComment)
  8. $column.javaField: [required],
  9. #end
  10. #end
  11. })
  12. // CrudSchema https://doc.iocoder.cn/vue3/crud-schema/
  13. const crudSchemas = reactive<CrudSchema[]>([
  14. #foreach($column in $columns)
  15. #if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation)
  16. #set ($dictType = $column.dictType)
  17. #set ($javaField = $column.javaField)
  18. #set ($javaType = $column.javaType)
  19. {
  20. label: '${column.columnComment}',
  21. field: '${column.javaField}',
  22. ## ========= 字典部分 =========
  23. #if ("" != $dictType)## 有数据字典
  24. dictType: DICT_TYPE.$dictType.toUpperCase(),
  25. #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short")
  26. dictClass: 'number',
  27. #elseif ($javaType == "String")
  28. dictClass: 'string',
  29. #elseif ($javaType == "Boolean")
  30. dictClass: 'boolean',
  31. #end
  32. #end
  33. ## ========= Table 表格部分 =========
  34. #if (!$column.listOperationResult)
  35. isTable: false,
  36. #else
  37. #if ($column.htmlType == "datetime")
  38. formatter: dateFormatter,
  39. #end
  40. #end
  41. ## ========= Search 表格部分 =========
  42. #if ($column.listOperation)
  43. isSearch: true,
  44. #if ($column.htmlType == "datetime")
  45. search: {
  46. component: 'DatePicker',
  47. componentProps: {
  48. valueFormat: 'YYYY-MM-DD HH:mm:ss',
  49. type: 'daterange',
  50. defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')]
  51. }
  52. },
  53. #end
  54. #end
  55. ## ========= Form 表单部分 =========
  56. #if ((!$column.createOperation && !$column.updateOperation) || $column.primaryKey)
  57. isForm: false,
  58. #else
  59. #if($column.htmlType == "imageUpload")## 图片上传
  60. form: {
  61. component: 'UploadImg'
  62. },
  63. #elseif($column.htmlType == "fileUpload")## 文件上传
  64. form: {
  65. component: 'UploadFile'
  66. },
  67. #elseif($column.htmlType == "editor")## 文本编辑器
  68. form: {
  69. component: 'Editor',
  70. componentProps: {
  71. valueHtml: '',
  72. height: 200
  73. }
  74. },
  75. #elseif($column.htmlType == "select")## 下拉框
  76. form: {
  77. component: 'SelectV2'
  78. },
  79. #elseif($column.htmlType == "checkbox")## 多选框
  80. form: {
  81. component: 'Checkbox'
  82. },
  83. #elseif($column.htmlType == "radio")## 单选框
  84. form: {
  85. component: 'Radio'
  86. },
  87. #elseif($column.htmlType == "datetime")## 时间框
  88. form: {
  89. component: 'DatePicker',
  90. componentProps: {
  91. type: 'datetime',
  92. valueFormat: 'x'
  93. }
  94. },
  95. #elseif($column.htmlType == "textarea")## 文本框
  96. form: {
  97. component: 'Input',
  98. componentProps: {
  99. type: 'textarea',
  100. rows: 4
  101. },
  102. colProps: {
  103. span: 24
  104. }
  105. },
  106. #elseif(${javaType.toLowerCase()} == "long" || ${javaType.toLowerCase()} == "integer")## 文本框
  107. form: {
  108. component: 'InputNumber',
  109. value: 0
  110. },
  111. #end
  112. #end
  113. },
  114. #end
  115. #end
  116. {
  117. label: '操作',
  118. field: 'action',
  119. isForm: false
  120. }
  121. ])
  122. export const { allSchemas } = useCrudSchemas(crudSchemas)