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.
 
 
 
 

205 lines
5.4 KiB

<template>
<el-dialog
:visible.sync="visible"
:title="!dataForm.id ? $t('add') : $t('update')"
:close-on-click-modal="false"
:close-on-press-escape="false"
>
<el-form
:model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
:label-width="$i18n.locale === 'en-US' ? '120px' : '80px'"
>
<el-form-item label="模板名称" prop="templateName">
<el-input
v-model="dataForm.templateName"
placeholder="模板名称"
></el-input>
</el-form-item>
<el-form-item label="所属类别"
prop="category">
<el-select v-model="dataForm.category" placeholder="请选择">
<el-option v-for="item in appMenuCategory"
:key="item.dictValue"
:label="item.dictName"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="模板编码" prop="templateCode">
<el-input
v-model="dataForm.templateCode"
placeholder="模板编码(tem-1,tem-2,tem-3)"
></el-input>
</el-form-item>
<el-form-item label="CSS类名" prop="className">
<el-input v-model="dataForm.className" placeholder="CSS类名"></el-input>
</el-form-item>
<el-form-item label="备用CSS类名" prop="spareClassName">
<el-input
v-model="dataForm.spareClassName"
placeholder="备用CSS类名"
></el-input>
</el-form-item>
<el-form-item label="列数" prop="columnAmount">
<el-input-number
v-model="dataForm.columnAmount"
controls-position="right"
:min="0"
:max="10"
label="列数"
></el-input-number>
</el-form-item>
<el-form-item label="背景颜色" prop="backgroundColor">
<el-input
v-model="dataForm.backgroundColor"
placeholder="背景颜色(渐变色为0时使用)"
></el-input>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{
$t('confirm')
}}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
backgroundColor: '',
templateCode: '',
templateName: '',
className: '',
spareClassName: '',
columnAmount: 0,
category: ''
},
appMenuCategory: []
}
},
computed: {
dataRule () {
return {
backgroundColor: [
{
required: false,
message: this.$t('validate.required'),
trigger: 'blur'
}
],
startColor: [
{
required: false,
message: this.$t('validate.required'),
trigger: 'blur'
}
],
endColor: [
{
required: false,
message: this.$t('validate.required'),
trigger: 'blur'
}
],
templateCode: [
{
required: true,
message: this.$t('validate.required'),
trigger: 'blur'
}
],
templateName: [
{
required: true,
message: this.$t('validate.required'),
trigger: 'blur'
}
],
category: [
{
required: true,
message: this.$t('validate.required'),
trigger: 'blur'
}
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
this.getListFromDict()
},
getListFromDict () {
this.$http.get(`/sys/dict/listSimple/app_menu_category`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.appMenuCategory = res.data
}).catch(() => { })
},
// 获取信息
getInfo () {
this.$http
.get(`/sys/appmenutemplate/${this.dataForm.id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
})
.catch(() => {})
},
// 表单提交
dataFormSubmitHandle: debounce(
function () {
this.$refs['dataForm'].validate(valid => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put'](
'/sys/appmenutemplate/',
this.dataForm
)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
})
.catch(() => {})
})
},
1000,
{ leading: true, trailing: false }
)
}
}
</script>