data.ts.vm 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
  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<VxeCrudSchema>({
  14. primaryKey: 'id', // 默认的主键ID
  15. primaryTitle: t('common.index'), // 默认显示的值
  16. primaryType: 'seq', // 默认为seq,序号模式
  17. action: true,
  18. actionWidth: '200', // 3个按钮默认200,如有删减对应增减即可
  19. columns: [
  20. #foreach($column in $columns)
  21. #if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation)
  22. #set ($dictType = $column.dictType)
  23. #if(!$column.primaryKey)
  24. {
  25. title: '${column.columnComment}',
  26. field: '${column.javaField}',
  27. #if (!$column.listOperationResult)
  28. isTable: false,
  29. #end
  30. #if ("" != $dictType)## 有数据字典
  31. dictType: DICT_TYPE.$dictType.toUpperCase(),
  32. #if (${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer")
  33. dictClass: 'number',
  34. #else
  35. dictClass: 'string',
  36. #end
  37. #end
  38. #if (!$column.createOperation && !$column.updateOperation)
  39. isForm: false,
  40. #elseif(!("" != $column.dictType))
  41. #if (${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdatetime")
  42. form: {
  43. component: 'DatePicker',
  44. componentProps: {
  45. type: 'datetime',
  46. valueFormat: 'x'
  47. }
  48. },
  49. #elseif($column.htmlType == "editor")## 文本编辑器
  50. form: {
  51. component: 'Editor',
  52. colProps: {
  53. span: 24
  54. },
  55. componentProps: {
  56. valueHtml: ''
  57. }
  58. },
  59. #elseif($column.htmlType == "textarea")## 文本框
  60. form: {
  61. component: 'Input',
  62. componentProps: {
  63. type: 'textarea',
  64. rows: 4
  65. },
  66. colProps: {
  67. span: 24
  68. }
  69. },
  70. #elseif(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer")## 数字类型
  71. form: {
  72. component: 'InputNumber',
  73. value: 0
  74. },
  75. #elseif($column.htmlType == "imageUpload")## 图片上传
  76. form: {
  77. component: 'UploadImg' // 单图上传,多图为UploadImgs
  78. },
  79. #elseif($column.htmlType == "fileUpload")## 图片上传
  80. form: {
  81. component: 'UploadFile'
  82. },
  83. #end
  84. #end
  85. #if ($column.listOperation)
  86. #if($column.htmlType == "input")
  87. isSearch: true,
  88. #elseif("" != $dictType)
  89. isSearch: true,
  90. #elseif($column.htmlType == "datetime")
  91. formatter: 'formatDate',
  92. search: {
  93. show: true,
  94. itemRender: {
  95. name: 'XDataTimePicker'
  96. }
  97. },
  98. #end
  99. #end
  100. },
  101. #end
  102. #end
  103. #end
  104. ]
  105. })
  106. export const { allSchemas } = useVxeCrudSchemas(crudSchemas)