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