济菏高速业务端
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.
 
 
 
 
 

133 lines
3.0 KiB

<template>
<Dialog v-model="modelVisible" :title="data ? '修改' : '新增'">
<div class='AddNEditDialog'>
<Form :value="formData" class="form" ref="FormConfigRef" :formList="formList" column="1" labelWidth="120px" />
</div>
<template #footer>
<Button style="background-color: rgba(0, 179, 204, .3);" @click.native="modelVisible = false, submitting = false">
取消
</Button>
<Button @click.native="handleSubmit" :loading="submitting">
确定
</Button>
</template>
</Dialog>
</template>
<script>
import Dialog from "@screen/components/Dialog/index.vue";
import Button from "@screen/components/Buttons/Button.vue"
import Form from '@screen/components/FormConfig';
import request from "@/utils/request";
import { Message } from "element-ui";
import { addEditFormList } from "./../data"
import { stakeMarkToArray, findPathIdByTreeId } from "@screen/utils/index.js"
export default {
name: 'AddNEditDialog',
components: {
Dialog,
Button,
Form
},
model: {
prop: 'visible',
event: "update:value"
},
props: {
visible: Boolean,
data: Object,
dataAll: Array
},
data() {
return {
submitting: false,
formData: {},
formList: addEditFormList
}
},
computed: {
modelVisible: {
get() {
return this.visible
},
set(val) {
this.$emit('update:value', val)
}
}
},
watch: {
modelVisible: {
immediate: true,
handler(bool) {
if (!bool) return;
this.formData = !this.data ? {} : {
...this.data
}
}
}
},
methods: {
checkRepeat(word){
let temp = _.find(this.dataAll, { word: word });
if (temp && Object.keys(temp).length>0) {
this.$message.error("该关键词已存在。");
return false
} else {
return true;
}
},
handleSubmit() {
this.$refs.FormConfigRef.validate()
.then((data) => {
data.word = data.word.trim();
if(!this.checkRepeat(data.word)){
return ;
}
this.submitting = true;
if (this.data) data.id = this.data.id;
request({
url: `/business/dcInfoBoardVocabulary`,
method: this.data ? 'PUT' : 'POST',
data
})
.then(result => {
if (result.code != 200) return Message.error(`提交失败!`);
Message.success(`提交成功!`);
this.$emit("afterSubmit");
this.modelVisible = false;
})
.catch((err) => {
console.log("%c [ err ]-110-「DeviceControlDialog.vue」", "font-size:15px; background:#547bf2; color:#98bfff;", err);
Message.error(`提交失败!`);
})
.finally(() => {
this.submitting = false;
})
})
}
},
}
</script>
<style lang='scss' scoped>
.AddNEditDialog {
width: 450px;
display: flex;
flex-direction: column;
gap: 15px;
.tips {
font-size: 12px;
}
}
</style>