import { reactive } from 'vue' import { useI18n } from '@/hooks/web/useI18n' import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas' import { DICT_TYPE } from '@/utils/dict' const { t } = useI18n() // 国际化 // 表单校验 export const rules = reactive({ #foreach ($column in $columns) #if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键 #set($comment=$column.columnComment) $column.javaField: [{ required: true, message: "${comment}不能为空", trigger: #if($column.htmlType == "select")"change"#else"blur"#end }], #end #end }) // CrudSchema const crudSchemas = reactive<CrudSchema[]>([ #foreach($column in $columns) #if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation) #set ($dictType = $column.dictType) { label: '${column.columnComment}', field: '${column.javaField}', #if ("" != $dictType)## 有数据字典 dictType: DICT_TYPE.$dictType.toUpperCase(), #end #if($column.primaryKey) type: 'index', form: { show: false }, detail: { show: false } #else #if (!$column.createOperation && !$column.updateOperation) form: { false }, #elseif(!("" != $column.dictType)) form: { show: true, #if ($column.htmlType == "datetime")## 时间框 component: 'DatePicker', componentProps: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' } #elseif($column.htmlType == "editor")## 文本编辑器 component: 'Editor', colProps: { span: 24 }, componentProps: { valueHtml: '' } #elseif($column.htmlType == "textarea")## 文本框 component: 'Input', componentProps: { type: 'textarea', rows: 4 }, colProps: { span: 24 } #end }, #end #if ($column.listOperationResult) search: { #if($column.htmlType == "input") show: true #else #if($column.htmlType == "datetime") show: true, component: 'DatePicker', componentProps: { type: 'datetimerange', valueFormat: 'YYYY-MM-DD HH:mm:ss' } #elseif($column.htmlType == "select" || $column.htmlType == "radio") #if ("" == $dictType)## 没有数据字典 show: true, component: 'Select', componentProps: { option: [{'','请选择字典生成'}] } #else show: true #end #end #end } #end #end }, #end #end { label: t('table.action'), field: 'action', width: '240px', form: { show: false }, detail: { show: false } } ]) export const { allSchemas } = useCrudSchemas(crudSchemas)