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.
229 lines
5.1 KiB
Vue
229 lines
5.1 KiB
Vue
<template>
|
|
<el-dialog
|
|
class="bs-dialog-wrap bs-el-dialog"
|
|
:append-to-body="true"
|
|
:before-close="cancel"
|
|
:title="dataForm.id!==''?'编辑标签':'新增标签'"
|
|
:visible.sync="formVisible"
|
|
>
|
|
<el-form
|
|
ref="ruleForm"
|
|
:model="dataForm"
|
|
:rules="rules"
|
|
label-position="right"
|
|
label-width="90px"
|
|
class="form-container bs-el-form"
|
|
>
|
|
<el-form-item
|
|
label="标签名称"
|
|
prop="labelName"
|
|
>
|
|
<el-input
|
|
v-model="dataForm.labelName"
|
|
class="bs-el-input"
|
|
clearable
|
|
placeholder="请输入标签名称"
|
|
maxlength="200"
|
|
/>
|
|
</el-form-item>
|
|
|
|
<el-form-item
|
|
label="标签类型"
|
|
prop="labelType"
|
|
>
|
|
<el-select
|
|
ref="searchSelect"
|
|
v-model="dataForm.labelType"
|
|
class="bs-el-select"
|
|
popper-class="bs-el-select"
|
|
allow-create
|
|
clearable
|
|
filterable
|
|
placeholder="请选择或输入标签类型"
|
|
@blur="selectBlur"
|
|
@input.native="filterData"
|
|
>
|
|
<el-option
|
|
v-for="(item,K) in labelTypeList"
|
|
:key="K"
|
|
:label="item"
|
|
:value="item"
|
|
/>
|
|
</el-select>
|
|
</el-form-item>
|
|
|
|
<el-form-item
|
|
label="标签说明"
|
|
prop="labelDesc"
|
|
>
|
|
<el-input
|
|
v-model="dataForm.labelDesc"
|
|
clearable
|
|
placeholder="请输入标签说明"
|
|
class="bs-el-input"
|
|
type="text"
|
|
/>
|
|
</el-form-item>
|
|
</el-form>
|
|
<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 { addOrUpdateLabel, checkRepeatLabel } from 'data-room-ui/js/utils/LabelConfigService'
|
|
|
|
export default {
|
|
name: 'LabelEdit',
|
|
data () {
|
|
return {
|
|
loading: false,
|
|
datasetList: [],
|
|
typeId: '',
|
|
dataForm: {
|
|
id: '',
|
|
labelName: '',
|
|
labelType: '',
|
|
labelDesc: '',
|
|
relList: []
|
|
},
|
|
formVisible: true,
|
|
rules: {
|
|
labelName: [
|
|
{ required: true, message: '标签名称不能为空', trigger: 'blur' },
|
|
{ validator: this.validateLabelName, trigger: 'blur' }
|
|
],
|
|
labelType: [
|
|
{ required: true, message: '标签类型不能为空', trigger: 'change' }
|
|
]
|
|
},
|
|
// 分类树数据
|
|
categoryData: [],
|
|
relVisible: false,
|
|
// 标签分类列表
|
|
labelTypeList: [],
|
|
// 选中的数据集id列表
|
|
datasetIdList: []
|
|
}
|
|
},
|
|
watch: {
|
|
'dataForm.labelType': function (val) {
|
|
if (val.length > 20) {
|
|
this.dataForm.labelType = val.substring(0, 20)
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
/**
|
|
* 初始化
|
|
* @param row 标签信息
|
|
*/
|
|
init (row) {
|
|
this.$nextTick(() => {
|
|
this.$refs.ruleForm.clearValidate()
|
|
})
|
|
this.dataForm.id = row ? row.id : ''
|
|
this.formVisible = true
|
|
if (row) {
|
|
this.dataForm.id = row.id
|
|
this.dataForm.labelName = row.labelName
|
|
this.dataForm.labelType = row.labelType
|
|
this.dataForm.labelDesc = row.labelDesc
|
|
} else {
|
|
this.dataForm.id = ''
|
|
this.dataForm.labelName = ''
|
|
this.dataForm.labelType = ''
|
|
this.dataForm.labelDesc = ''
|
|
}
|
|
},
|
|
/**
|
|
* 标签名称校验
|
|
* @param rule
|
|
* @param value
|
|
* @param callback
|
|
*/
|
|
validateLabelName (rule, value, callback) {
|
|
checkRepeatLabel({ id: this.dataForm.id, labelName: this.dataForm.labelName }).then(repeat => {
|
|
if (repeat) {
|
|
callback(new Error('标签名称已存在'))
|
|
} else {
|
|
callback()
|
|
}
|
|
})
|
|
},
|
|
/**
|
|
* 表单关闭
|
|
*/
|
|
handleClose () {
|
|
this.$parent.editFormVisible = false
|
|
},
|
|
/**
|
|
* 取消按钮
|
|
*/
|
|
cancel () {
|
|
this.formVisible = false
|
|
this.$nextTick(() => {
|
|
this.handleClose()
|
|
})
|
|
},
|
|
/**
|
|
* 提交按钮
|
|
* @param formName
|
|
*/
|
|
submitForm (formName) {
|
|
this.$refs[formName].validate((valid) => {
|
|
if (valid) {
|
|
this.saveForm(true)
|
|
} else {
|
|
return false
|
|
}
|
|
})
|
|
},
|
|
/**
|
|
* 保存标签信息
|
|
* @param flag
|
|
*/
|
|
saveForm (flag) {
|
|
addOrUpdateLabel(this.dataForm).then((r) => {
|
|
this.$message.success('保存成功')
|
|
this.cancel()
|
|
this.$emit('afterEdit')
|
|
})
|
|
},
|
|
selectBlur (e) {
|
|
this.dataForm.labelType = e.target.value
|
|
},
|
|
// 对输入字符串控制
|
|
filterData () {
|
|
// 此属性得到输入的文字
|
|
const str = this.$refs.searchSelect.$data.selectedLabel
|
|
// 控制的js
|
|
if (str.length > 20) {
|
|
this.$refs.searchSelect.$data.selectedLabel = str.substr(0, 20)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.form-container{
|
|
padding: 0 8px;
|
|
}
|
|
</style>
|