You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
3.6 KiB
Vue
165 lines
3.6 KiB
Vue
<template>
|
|
<el-dialog
|
|
width="500px"
|
|
:title="title"
|
|
class="bs-dialog-wrap dialogClass bs-el-dialog"
|
|
:visible.sync="dialogFormVisible"
|
|
:append-to-body="true"
|
|
:before-close="handleClose"
|
|
>
|
|
<div style="margin: 20px;">
|
|
<el-form
|
|
ref="ruleForm"
|
|
:model="dataForm"
|
|
:rules="rules"
|
|
label-position="left"
|
|
label-width="90px"
|
|
class="bs-el-form"
|
|
>
|
|
<el-form-item
|
|
label="分组名称"
|
|
prop="name"
|
|
>
|
|
<el-input
|
|
v-model="dataForm.name"
|
|
class="bs-el-input"
|
|
clearable
|
|
/>
|
|
</el-form-item>
|
|
</el-form>
|
|
</div>
|
|
|
|
<span
|
|
slot="footer"
|
|
class="dialog-footer"
|
|
>
|
|
<el-button
|
|
class="bs-el-button-default"
|
|
@click="cancel"
|
|
>取消</el-button>
|
|
<el-button
|
|
type="primary"
|
|
@click="submitForm('ruleForm')"
|
|
>确定</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
</template>
|
|
|
|
<script>
|
|
import { categoryAdd, categoryUpdate } from 'packages/js/utils/datasetConfigService'
|
|
export default {
|
|
name: 'CategroyEditForm',
|
|
props: {
|
|
appCode: {
|
|
type: String,
|
|
default: ''
|
|
}
|
|
},
|
|
data () {
|
|
return {
|
|
type: 'dataset',
|
|
dataForm: {
|
|
id: '',
|
|
name: '',
|
|
parentId: ''
|
|
},
|
|
title: '',
|
|
dialogFormVisible: false,
|
|
radio: 0,
|
|
nodeFlag: false,
|
|
rules: {
|
|
name: [
|
|
{ required: true, message: '分组名称不能为空', trigger: 'blur' }
|
|
]
|
|
},
|
|
nodeData: {}
|
|
}
|
|
},
|
|
watch: {
|
|
dialogFormVisible (val) {
|
|
if (!val) {
|
|
this.dataForm = {
|
|
id: '',
|
|
name: '',
|
|
parentId: ''
|
|
}
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
init (row, flag) {
|
|
this.nodeFlag = flag
|
|
this.nodeData = row
|
|
if (!flag) {
|
|
this.dataForm.name = row.name
|
|
this.dataForm.id = row.id
|
|
}
|
|
},
|
|
cancel () {
|
|
this.dialogFormVisible = false
|
|
this.$nextTick(() => {
|
|
this.$parent.addOrUpdateTreeVisible = false
|
|
})
|
|
},
|
|
handleClose () {
|
|
this.dialogFormVisible = false
|
|
this.$parent.addOrUpdateTreeVisible = false
|
|
},
|
|
submitForm (formName) {
|
|
this.$refs[formName].validate((valid) => {
|
|
if (valid) {
|
|
let id = ''
|
|
let parentId = ''
|
|
|
|
if (this.nodeFlag) {
|
|
// 新增节点
|
|
if (this.radio === 0) {
|
|
// 新增同级
|
|
parentId = this.nodeData.parentId
|
|
} else {
|
|
// 新增子级
|
|
parentId = this.nodeData.id
|
|
}
|
|
} else {
|
|
// 修改节点
|
|
id = this.dataForm.id
|
|
parentId = this.nodeData.parentId
|
|
}
|
|
|
|
const params = {
|
|
id: id,
|
|
name: this.dataForm.name,
|
|
parentId: parentId,
|
|
type: this.type,
|
|
moduleCode: this.appCode
|
|
}
|
|
if (id) {
|
|
categoryUpdate(params).then((r) => {
|
|
this.$message.success('保存成功')
|
|
this.cancel()
|
|
try {
|
|
this.$parent.init()
|
|
} catch (error) {
|
|
this.$parent.initLazyDatasetTypeTree()
|
|
}
|
|
})
|
|
} else {
|
|
categoryAdd(params).then((r) => {
|
|
this.$message.success('保存成功')
|
|
this.cancel()
|
|
try {
|
|
this.$parent.init()
|
|
} catch (error) {
|
|
this.$parent.initLazyDatasetTypeTree()
|
|
}
|
|
})
|
|
}
|
|
} else {
|
|
return false
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|