data.ts.vm 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
  2. const { t } = useI18n() // 国际化
  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
  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. title: '${column.columnComment}',
  21. field: '${column.javaField}',
  22. #if (!$column.listOperationResult)
  23. isTable: false,
  24. #end
  25. #if ("" != $dictType)## 有数据字典
  26. dictType: DICT_TYPE.$dictType.toUpperCase(),
  27. #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short")
  28. dictClass: 'number',
  29. #elseif ($javaType == "String")
  30. dictClass: 'string',
  31. #elseif ($javaType == "Boolean")
  32. dictClass: 'boolean',
  33. #end
  34. #end
  35. #if ((!$column.createOperation && !$column.updateOperation) || $column.primaryKey)
  36. isForm: false,
  37. #else
  38. #if($column.htmlType == "imageUpload")## 图片上传
  39. form: {
  40. component: 'UploadImg'
  41. },
  42. #elseif($column.htmlType == "fileUpload")## 文件上传
  43. form: {
  44. component: 'UploadFile'
  45. },
  46. #elseif($column.htmlType == "editor")## 文本编辑器
  47. form: {
  48. component: 'Editor',
  49. componentProps: {
  50. valueHtml: '',
  51. height: 200
  52. }
  53. },
  54. #elseif($column.htmlType == "select")## 下拉框
  55. form: {
  56. component: 'SelectV2'
  57. },
  58. #elseif($column.htmlType == "checkbox")## 多选框
  59. form: {
  60. component: 'Checkbox'
  61. },
  62. #elseif($column.htmlType == "checkbox")## 单选框
  63. form: {
  64. component: 'Radio'
  65. },
  66. #end
  67. #end
  68. #elseif(!("" != $column.dictType))
  69. #if (${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdatetime")
  70. form: {
  71. component: 'DatePicker',
  72. componentProps: {
  73. type: 'datetime',
  74. valueFormat: 'x'
  75. }
  76. },
  77. #elseif($column.htmlType == "textarea")## 文本框
  78. form: {
  79. component: 'Input',
  80. componentProps: {
  81. type: 'textarea',
  82. rows: 4
  83. },
  84. colProps: {
  85. span: 24
  86. }
  87. },
  88. #elseif(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer")## 数字类型
  89. form: {
  90. component: 'InputNumber',
  91. value: 0
  92. },
  93. #end
  94. #end
  95. #if ($column.listOperation)
  96. #if($column.htmlType == "input")
  97. isSearch: true,
  98. #elseif("" != $dictType)
  99. isSearch: true,
  100. #elseif($column.htmlType == "datetime")
  101. formatter: 'formatDate',
  102. search: {
  103. show: true,
  104. itemRender: {
  105. name: 'XDataTimePicker'
  106. }
  107. },
  108. #end
  109. #end
  110. },
  111. #end
  112. ])
  113. export const { allSchemas } = useCrudSchemas(crudSchemas)