data.ts.vm 3.3 KB

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