You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
sliyun-web-sys/docs/gen/antdv/modules/CreateForm.vue.vm

428 lines
12 KiB

#set($isInsert=0)
#set($isEdit=0)
#set($hasRichText=0)
#foreach($column in $columns)
#if($column.insert)
#set($isInsert=1)
#end
#if($column.edit)
#set($isEdit=1)
#end
#if($isInsert == 1 && $isEdit == 1)
#break
#end
#end
#if($isInsert == 0 && $isEdit == 0)
<template>
<a-result title="多余文件,请删除">
<template #icon>
<a-icon type="smile" theme="twoTone" />
</template>
<template #extra>
<a-button type="primary" @click="returnIndex">
返回首页
</a-button>
</template>
</a-result>
</template>
#stop
#end
<template>
<a-drawer width="35%" :label-col="4" :wrapper-col="14" :visible="open" @close="onClose">
<a-divider orientation="left">
<b>{{ formTitle }}</b>
</a-divider>
<a-form-model ref="form" :model="form" :rules="rules">
#set($requiredCount = 0)
#set($ruleLastIndex = 0)
#foreach($column in $columns)
#if(${column.dictType} != '')
#set($ruleLastIndex = $velocityCount)
#end
#set($field=$column.javaField)
#if(($column.insert || $column.edit) && !$column.pk)
#if(($column.usableColumn) || (!$column.superColumn))
#set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($column.required)
#set($requiredCount = $requiredCount + 1)
#end
#set($dictType=$column.dictType)
<a-form-model-item label="${comment}" prop="${field}" #if($column.insert && !$column.edit)v-if="formType === 1"#end#if(!$column.insert && $column.edit)v-if="formType === 2"#end>
#if("" != $treeParentCode && $column.javaField == $treeParentCode)
<a-tree-select
v-model="form.${field}"
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
:tree-data="${businessName}Options"
placeholder="请选择"
:replaceFields="{children:'children', title:'${treeName}', key:'${treeCode}', value: '${treeCode}' }"
tree-default-expand-all
>
</a-tree-select>
#elseif($column.htmlType == "input")
<a-input v-model="form.${field}" placeholder="请输入${comment}" />
#elseif($column.htmlType == "imageUpload")
<file-upload v-model="form.${field}" type="image"></file-upload>
#elseif($column.htmlType == "fileUpload")
<file-upload v-model="form.${field}" type="file"></file-upload>
#elseif($column.htmlType == "editor")
#set($hasRichText=1)
<div id="${field}" name="${field}" ></div>
#elseif($column.htmlType == "select" && "" != $dictType)
<a-select placeholder="请选择${comment}" v-model="form.${field}">
<a-select-option v-for="(d, index) in ${field}Options" :key="index" :value="d.dictValue" >{{ d.dictLabel }}</a-select-option>
</a-select>
#elseif($column.htmlType == "select" && $dictType)
<a-select placeholder="请选择${comment}" v-model="form.${field}">
<a-select-option value="" >请选择字典生成</a-select-option>
</a-select>
#elseif($column.htmlType == "checkbox" && "" != $dictType)
<a-select
mode="multiple"
v-model="form.${field}"
placeholder="请选择${comment}"
>
<a-select-option v-for="(d, index) in ${field}Options" :key="index" :value="d.dictValue" >{{ d.dictLabel }}</a-select-option>
</a-select>
#elseif($column.htmlType == "checkbox" && $dictType)
<a-select placeholder="请选择${comment}" v-model="form.${field}">
<a-select-option value="" >请选择字典生成</a-select-option>
</a-select>
#elseif($column.htmlType == "radio" && "" != $dictType)
<a-radio-group v-model="form.${field}" button-style="solid">
<a-radio-button v-for="(d, index) in ${field}Options" :key="index" :value="d.dictValue">{{ d.dictLabel }}</a-radio-button>
</a-radio-group>
#elseif($column.htmlType == "radio" && $dictType)
<a-radio-group v-model="form.${field}" button-style="solid">
<a-radio-button value="">请选择字典生成</a-radio-button>
</a-radio-group>
#elseif($column.htmlType == "datetime")
<a-date-picker style="width: 100%" v-model="form.${field}" format="YYYY-MM-DD HH:mm:ss" allow-clear/>
#elseif($column.htmlType == "textarea")
<a-input v-model="form.${field}" placeholder="请输入内容" type="textarea" allow-clear />
#end
</a-form-model-item>
#end
#end
#end
#if($table.sub)
<a-divider orientation="left">
<b>${subTable.functionName}</b>
</a-divider>
<sub-table ref="subTable" :list="subList" @add="handleAdd${subclassName}" @delete="handleDelete${subclassName}" />
<p>当前存在 {{ subList.length }} 条信息</p>
<a-button type="dashed" @click="$refs.subTable.show()">
详情
</a-button>
<br>
#end
<div class="bottom-control">
<a-space>
<a-button type="primary" @click="submitForm">
保存
</a-button>
<a-button type="dashed" @click="cancel">
取消
</a-button>
</a-space>
</div>
</a-form-model>
</a-drawer>
</template>
<script>
import { get${BusinessName}, add${BusinessName}, update${BusinessName} } from '@/api/${moduleName}/${businessName}'
#if($table.sub)
import SubTable from './SubTable'
#end
#if($hasRichText == 1)
import Vditor from 'vditor'
import 'vditor/dist/index.css'
#end
export default {
name: 'CreateForm',
props: {
#set($propsCount = 0)
#foreach ($column in $columns)
#if(${column.dictType} != '')
#set($propsCount = 1)
${column.javaField}Options: {
type: Array,
required: true
#if($velocityCount!=$ruleLastIndex || $tplCategory == 'tree')
},
#else
}
#end
#end
#end
#if($tplCategory == 'tree')
${businessName}Options: {
type: Array,
required: true
}
#end
},
components: {
#if($table.sub)
SubTable
#end
},
data () {
return {
loading: false,
#if($table.sub)
subList: [],
#end
formTitle: '',
#foreach ($column in $columns)
#if($column.insert || $column.edit)
#if($column.htmlType == "editor")
${column.javaField}Editor: '',
#end
#end
#end
// 表单参数
form: {
#foreach ($column in $columns)
#if($column.insert || $column.edit)
#if($column.htmlType == "radio")
$column.javaField: #if($column.javaType == "Integer" || $column.javaType == "Long")0#else'0'#end#if($velocityCount != $columns.size()),#end
#elseif($column.htmlType == "checkbox")
$column.javaField: []#if($velocityCount != $columns.size()),#end
#else
$column.javaField: null#if($velocityCount != $columns.size()),#end
#end
#end
#end
},
// 1增加,2修改
formType: 1,
open: false,
rules: {
#set($currentRequiredCount = 1)
#foreach ($column in $columns)
#if(($column.insert || $column.edit) && !$column.pk)
#if(($column.usableColumn) || (!$column.superColumn))
#if($column.required)
#set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
$column.javaField: [
{ required: true, message: '$comment不能为空', trigger: #if($column.htmlType == "select")'change'#else'blur'#end }
]#if($currentRequiredCount != $requiredCount),#end
#set($currentRequiredCount = $currentRequiredCount + 1)
#end
#end
#end
#end
}
}
},
filters: {
},
created () {
},
computed: {
},
watch: {
},
mounted () {
},
methods: {
#if($hasRichText == 1)
openEditor () {
#foreach ($column in $columns)
#if($column.insert || $column.edit)
#if($column.htmlType == "editor")
this.$nextTick(() => {
this.${column.javaField}Editor = new Vditor('${column.javaField}', {
height: 360,
toolbarConfig: {
pin: true
},
cache: {
enable: false
},
after: () => {
let content = this.form.${column.javaField}
if (content === undefined || content === null) {
content = ''
}
this.${column.javaField}Editor.setValue(content)
}
})
})
#end
#end
#end
},
closeEditor () {
this.noticeContentEditor.destroy()
},
#end
onClose () {
this.open = false
#if($table.sub)
this.subList = []
#end
#if($hasRichText == 1)
this.closeEditor()
#end
},
// 取消按钮
cancel () {
this.open = false
this.reset()
#if($table.sub)
this.subList = []
#end
#if($hasRichText == 1)
this.closeEditor()
#end
},
// 表单重置
reset () {
this.formType = 1
this.form = {
#foreach ($column in $columns)
#if($column.insert || $column.edit)
#if($column.htmlType == "radio")
$column.javaField: #if($column.javaType == "Integer" || $column.javaType == "Long")0#else'0'#end#if($velocityCount != $columns.size()),#end
#elseif($column.htmlType == "checkbox")
$column.javaField: []#if($velocityCount != $columns.size()),#end
#else
$column.javaField: null#if($velocityCount != $columns.size()),#end
#end
#end
#end
}
},
/** 新增按钮操作 */
handleAdd (row) {
this.reset()
#if($tplCategory == 'tree')
this.$emit('select-tree')
if (row != null && row.${treeCode}) {
this.form.${treeParentCode} = row.${treeCode}
} else {
this.form.${treeParentCode} = 0
}
#end
this.formType = 1
this.open = true
#if($hasRichText == 1)
this.openEditor()
#end
this.formTitle = '添加'
},
#if($table.sub)
/** 新增子项操作 */
handleAdd${subclassName} (row) {
this.subList.push(row)
},
/** 删除子项操作 */
handleDelete${subclassName} (index, indexs) {
if (index !== undefined) {
this.subList.splice(index, 1)
return
}
indexs.forEach(item => {
this.subList.splice(item, 1)
})
},
#end
/** 修改按钮操作 */
handleUpdate (row, ids) {
this.reset()
#if($tplCategory == 'tree')
this.$emit('select-tree')
#end
this.formType = 2
const ${pkColumn.javaField} = row ? row.${pkColumn.javaField} : ids
get${BusinessName}(${pkColumn.javaField}).then(response => {
this.form = response.data
#if($table.sub)
this.subList = response.data.${subclassName}List
#end
#foreach ($column in $columns)
#if($column.htmlType == "checkbox")
if (this.form.$column.javaField !== null) {
this.form.$column.javaField = this.form.${column.javaField}.split(',')
} else {
this.form.$column.javaField = undefined
}
#end
#end
this.open = true
this.formTitle = '修改'
#if($hasRichText == 1)
this.openEditor()
#end
})
},
/** 提交按钮 */
submitForm: function () {
#foreach ($column in $columns)
#if($column.insert || $column.edit)
#if($column.htmlType == "editor")
this.form.${column.javaField} = this.${column.javaField}Editor.getValue()
#end
#end
#end
this.#[[$]]#refs.form.validate(valid => {
if (valid) {
#foreach ($column in $columns)
#if($column.htmlType == "checkbox")
this.form.$column.javaField = this.form.${column.javaField}.join(',')
#end
#end
#if($table.sub)
this.form.${subclassName}List = this.subList
#end
if (this.form.${pkColumn.javaField} !== undefined && this.form.${pkColumn.javaField} !== null) {
update${BusinessName}(this.form).then(response => {
this.$message.success(
'修改成功',
3
)
this.open = false
#if($hasRichText == 1)
this.closeEditor()
#end
this.$emit('ok')
})
} else {
add${BusinessName}(this.form).then(response => {
this.$message.success(
'新增成功',
3
)
this.open = false
#if($hasRichText == 1)
this.closeEditor()
#end
this.$emit('ok')
})
}
} else {
return false
}
})
}
}
}
</script>