|
@@ -5,6 +5,7 @@
|
|
#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段
|
|
#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段
|
|
#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
|
|
#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
|
|
<template>
|
|
<template>
|
|
|
|
+#if ( $subTable.subJoinMany )## 情况一:一对多,table + form
|
|
<el-form
|
|
<el-form
|
|
ref="formRef"
|
|
ref="formRef"
|
|
:model="formData"
|
|
:model="formData"
|
|
@@ -150,6 +151,109 @@
|
|
<el-row justify="center" class="mt-3">
|
|
<el-row justify="center" class="mt-3">
|
|
<el-button @click="handleAdd" round>+ 添加${subTable.classComment}</el-button>
|
|
<el-button @click="handleAdd" round>+ 添加${subTable.classComment}</el-button>
|
|
</el-row>
|
|
</el-row>
|
|
|
|
+#else## 情况二:一对一,form
|
|
|
|
+ <el-form
|
|
|
|
+ ref="formRef"
|
|
|
|
+ :model="formData"
|
|
|
|
+ :rules="formRules"
|
|
|
|
+ label-width="100px"
|
|
|
|
+ v-loading="formLoading"
|
|
|
|
+ >
|
|
|
|
+#foreach($column in $subColumns)
|
|
|
|
+ #if ($column.createOperation || $column.updateOperation)
|
|
|
|
+ #set ($dictType = $column.dictType)
|
|
|
|
+ #set ($javaField = $column.javaField)
|
|
|
|
+ #set ($javaType = $column.javaType)
|
|
|
|
+ #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
|
|
|
+ #set ($comment = $column.columnComment)
|
|
|
|
+ #set ($dictMethod = "getDictOptions")## 计算使用哪个 dict 字典方法
|
|
|
|
+ #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short")
|
|
|
|
+ #set ($dictMethod = "getIntDictOptions")
|
|
|
|
+ #elseif ($javaType == "String")
|
|
|
|
+ #set ($dictMethod = "getStrDictOptions")
|
|
|
|
+ #elseif ($javaType == "Boolean")
|
|
|
|
+ #set ($dictMethod = "getBoolDictOptions")
|
|
|
|
+ #end
|
|
|
|
+ #if ($column.htmlType == "input" && !$column.primaryKey)## 忽略主键,不用在表单里 TODO 芋艿:这里要忽略下 join 字段;
|
|
|
|
+ <el-form-item label="${comment}" prop="${javaField}">
|
|
|
|
+ <el-input v-model="formData.${javaField}" placeholder="请输入${comment}" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ #elseif($column.htmlType == "imageUpload")## 图片上传
|
|
|
|
+ <el-form-item label="${comment}">
|
|
|
|
+ <UploadImg v-model="formData.${javaField}" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ #elseif($column.htmlType == "fileUpload")## 文件上传
|
|
|
|
+ <el-form-item label="${comment}">
|
|
|
|
+ <UploadFile v-model="formData.${javaField}" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ #elseif($column.htmlType == "editor")## 文本编辑器
|
|
|
|
+ <el-form-item label="${comment}">
|
|
|
|
+ <Editor v-model="formData.${javaField}" height="150px" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ #elseif($column.htmlType == "select")## 下拉框
|
|
|
|
+ <el-form-item label="${comment}" prop="${javaField}">
|
|
|
|
+ <el-select v-model="formData.${javaField}" placeholder="请选择${comment}">
|
|
|
|
+ #if ("" != $dictType)## 有数据字典
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="dict in $dictMethod(DICT_TYPE.$dictType.toUpperCase())"
|
|
|
|
+ :key="dict.value"
|
|
|
|
+ :label="dict.label"
|
|
|
|
+ :value="dict.value"
|
|
|
|
+ />
|
|
|
|
+ #else##没数据字典
|
|
|
|
+ <el-option label="请选择字典生成" value="" />
|
|
|
|
+ #end
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ #elseif($column.htmlType == "checkbox")## 多选框
|
|
|
|
+ <el-form-item label="${comment}" prop="${javaField}">
|
|
|
|
+ <el-checkbox-group v-model="formData.${javaField}">
|
|
|
|
+ #if ("" != $dictType)## 有数据字典
|
|
|
|
+ <el-checkbox
|
|
|
|
+ v-for="dict in $dictMethod(DICT_TYPE.$dictType.toUpperCase())"
|
|
|
|
+ :key="dict.value"
|
|
|
|
+ :label="dict.value"
|
|
|
|
+ >
|
|
|
|
+ {{ dict.label }}
|
|
|
|
+ </el-checkbox>
|
|
|
|
+ #else##没数据字典
|
|
|
|
+ <el-checkbox>请选择字典生成</el-checkbox>
|
|
|
|
+ #end
|
|
|
|
+ </el-checkbox-group>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ #elseif($column.htmlType == "radio")## 单选框
|
|
|
|
+ <el-form-item label="${comment}" prop="${javaField}">
|
|
|
|
+ <el-radio-group v-model="formData.${javaField}">
|
|
|
|
+ #if ("" != $dictType)## 有数据字典
|
|
|
|
+ <el-radio
|
|
|
|
+ v-for="dict in $dictMethod(DICT_TYPE.$dictType.toUpperCase())"
|
|
|
|
+ :key="dict.value"
|
|
|
|
+ :label="dict.value"
|
|
|
|
+ >
|
|
|
|
+ {{ dict.label }}
|
|
|
|
+ </el-radio>
|
|
|
|
+ #else##没数据字典
|
|
|
|
+ <el-radio label="1">请选择字典生成</el-radio>
|
|
|
|
+ #end
|
|
|
|
+ </el-radio-group>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ #elseif($column.htmlType == "datetime")## 时间框
|
|
|
|
+ <el-form-item label="${comment}" prop="${javaField}">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-model="formData.${javaField}"
|
|
|
|
+ type="date"
|
|
|
|
+ value-format="x"
|
|
|
|
+ placeholder="选择${comment}"
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ #elseif($column.htmlType == "textarea")## 文本框
|
|
|
|
+ <el-form-item label="${comment}" prop="${javaField}">
|
|
|
|
+ <el-input v-model="formData.${javaField}" type="textarea" placeholder="请输入${comment}" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ #end
|
|
|
|
+ #end
|
|
|
|
+#end
|
|
|
|
+#end
|
|
</template>
|
|
</template>
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
import { getIntDictOptions, getStrDictOptions, getBoolDictOptions, DICT_TYPE } from '@/utils/dict'
|
|
import { getIntDictOptions, getStrDictOptions, getBoolDictOptions, DICT_TYPE } from '@/utils/dict'
|
|
@@ -176,19 +280,38 @@ watch(
|
|
async (val) => {
|
|
async (val) => {
|
|
// 情况一:val 为空,说明是新增,则置空
|
|
// 情况一:val 为空,说明是新增,则置空
|
|
if (!val) {
|
|
if (!val) {
|
|
|
|
+#if ( $subTable.subJoinMany )
|
|
formData.value = []
|
|
formData.value = []
|
|
|
|
+#else
|
|
|
|
+ formData.value = {
|
|
|
|
+ #foreach ($column in $subColumns)
|
|
|
|
+ #if ($column.createOperation || $column.updateOperation)
|
|
|
|
+ #if ($column.htmlType == "checkbox")
|
|
|
|
+ $column.javaField: [],
|
|
|
|
+ #else
|
|
|
|
+ $column.javaField: undefined,
|
|
|
|
+ #end
|
|
|
|
+ #end
|
|
|
|
+ #end
|
|
|
|
+ }
|
|
|
|
+#end
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
// 情况二:val 非空,说明是修改,则加载数据
|
|
// 情况二:val 非空,说明是修改,则加载数据
|
|
try {
|
|
try {
|
|
formLoading.value = true
|
|
formLoading.value = true
|
|
|
|
+#if ( $subTable.subJoinMany )
|
|
formData.value = await ${simpleClassName}Api.get${subSimpleClassName}ListBy${SubJoinColumnName}(val)
|
|
formData.value = await ${simpleClassName}Api.get${subSimpleClassName}ListBy${SubJoinColumnName}(val)
|
|
|
|
+#else
|
|
|
|
+ formData.value = await ${simpleClassName}Api.get${subSimpleClassName}By${SubJoinColumnName}(val)
|
|
|
|
+#end
|
|
} finally {
|
|
} finally {
|
|
formLoading.value = false
|
|
formLoading.value = false
|
|
}
|
|
}
|
|
},
|
|
},
|
|
{ immediate: true }
|
|
{ immediate: true }
|
|
)
|
|
)
|
|
|
|
+#if ( $subTable.subJoinMany )
|
|
|
|
|
|
/** 新增按钮操作 */
|
|
/** 新增按钮操作 */
|
|
const handleAdd = () => {
|
|
const handleAdd = () => {
|
|
@@ -211,6 +334,7 @@ const handleAdd = () => {
|
|
const handleDelete = (index) => {
|
|
const handleDelete = (index) => {
|
|
formData.value.splice(index, 1)
|
|
formData.value.splice(index, 1)
|
|
}
|
|
}
|
|
|
|
+#end
|
|
|
|
|
|
/** 表单校验 */
|
|
/** 表单校验 */
|
|
const validate = () => {
|
|
const validate = () => {
|