emis-frontend/src/views/emis/emisQuoteDispArea/emisQuoteDispAreaForm.vue
2024-05-11 14:05:11 +08:00

246 lines
7.0 KiB
Vue

<template>
<div >
<el-row :gutter="0">
<el-form ref="form" size="mini" :model="form" :rules="rules" label-width="80px">
<el-col :span="12">
<el-form-item label="区域名称" prop="areaName">
<el-input v-model="form.areaName" :disabled="disabled" placeholder="请输入区域名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="区域类型" prop="areaType">
<el-select style="width:100%" v-model="form.areaType" :disabled="disabled" placeholder="区域类型" @change="handleAreaTypeChange">
<el-option key="-1" label="全部" value="-1" />
<el-option key="1" label="网点" value="1" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="" prop="">
<el-button type="primary" :disabled="form.areaType == -1 || disabled " @click="handleSelectSite">选择网点</el-button>
<el-button
plain
type="primary"
size="mini"
:disabled="form.areaType == -1 || disabled "
@click="handleAddSite"
v-hasPermi="['emis:emisQuoteSendArea:edit']"
>追加网点</el-button>
</el-form-item>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="站点列表" prop="areaSite">
<el-input v-model="form.areaSite" type="textarea" rows="15" disabled placeholder="区域站点列表" />
</el-form-item>
</el-col>
</el-form>
</el-row>
<el-dialog title="选择网点" :visible.sync="openSiteSelectTreeForm" width="40%" :destroy-on-close="true" v-dialogDrag append-to-body>
<EmisSiteSelectTreePicker :areaId="form.areaId" :selectSiteCode="form.areaSiteCode" :selectSiteName="form.areaSite" @on-changed="onSelectSiteTreeCheckChange" @on-cancel="onCancelSelectSiteTreeForm"></EmisSiteSelectTreePicker>
</el-dialog>
<!-- @onSelectSiteTreeCheckChange="onSelectSiteTreeCheckChange" -->
<div style="text-align: center;margin-bottom: 10px;">
<el-button type="primary" :disabled="disabled" @click="submitForm">保 存</el-button>
<el-button :disabled="disabled" @click="cancel">取 消</el-button>
</div>
</div>
</template>
<script>
import { listEmisQuoteDispArea, getEmisQuoteDispArea, delEmisQuoteDispArea, addEmisQuoteDispArea, updateEmisQuoteDispArea } from "@/api/emis/emisQuoteDispArea";
import EmisSiteSelectTreePicker from '@/views/emis/EmisBaseTools/EmisSiteSelectTreePicker.vue';
export default {
name: "emisQuoteDispAreaForm",
props:{
areaObj:{
type:Object,
required: false
},
opType:{
type:Number,
required: false
},
useSiteCode:{
type:String
},
useSiteName:{
type:String
},
feeType:{
type:String
}
},
components: { EmisSiteSelectTreePicker },
dicts: [
],
data() {
return {
// emisQuoteDispAreaOptions: [],
// 遮罩层
loading: true,
isAddSite:false,
openSiteSelectTreeForm:false,
// 表单参数
form: {},
disabled:true,
// 表单校验
rules: {
areaId: [
{ required: true, message: "序号不能为空", trigger: "blur" }
],
areaName: [
{ required: true, message: "区域名称不能为空", trigger: "blur" }
],
areaType: [
{ required: true, message: "网点类型不能为空", trigger: "blur" }
],
areaSite: [
{ required: true, message: "网点不能为空", trigger: "blur" }
],
useSite: [
{ required: true, message: "使用站点名称不能为空", trigger: "blur" }
],
useSiteCode: [
{ required: true, message: "使用站点代码不能为空", trigger: "blur" }
],
}
};
},
watch: {
opType: {
handler(newValue, oldValue) {
this.initForm();
},
deep: true,
immediate: true
},
areaObj(newVal){
this.initData();
},
useSiteCode(newVal){
this.form.useSiteCode = newVal;
},
useSiteName(newVal){
this.form.useSite = newVal;
},
},
created() {
this.initData();
},
methods: {
initForm(){
// 1-新增 2-修改 3-追加网点
if(this.opType==1){
this.reset();
this.disabled=false;
}
else if(this.opType==2){
this.disabled=false;
}
else if(this.opType==3){
this.disabled=false;
}
else{
this.disabled=true;
}
},
initData() {
this.reset();
if(this.areaObj !=null) {
this.loading = true;
getEmisQuoteDispArea(this.areaObj.areaId).then(response => {
this.form = response.data;
this.loading = false;
});
}
},
handleAreaTypeChange(){
if(this.form.areaType == -1){
this.form.areaSite="全部"
}else{
// this.form.areaSite=""
}
},
// 取消按钮
cancel() {
this.reset();
this.disabled=true;
this.$emit("on-cancel");
},
// 表单重置
reset() {
this.form = {
areaId: null,
areaName: null,
useSite: this.useSiteName,
useSiteCode: this.useSiteCode,
areaSite: null,
areaSiteCode: null,
areaSiteId: null,
feeType: this.feeType,
areaType: '-1',
sync: null,
status: null,
remark: null,
tenantId: null,
delFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
createSite: null,
updateSite: null
};
this.resetForm("form");
},
handleSelectSite(){
this.isAddSite = false;
this.openSiteSelectTreeForm=true;
},
// 追加网点
handleAddSite(){
this.isAddSite = true;
this.openSiteSelectTreeForm=true;
},
onSelectSiteTreeCheckChange(item){
this.openSiteSelectTreeForm=false;
this.form.areaSite=item.selectSiteNameStr;
this.form.areaSiteCode=item.selectSiteCodeStr;
// console.log(item)
},
onCancelSelectSiteTreeForm(){
this.openSiteSelectTreeForm=false;
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.disabled=true;
if (this.form.areaId != null) {
updateEmisQuoteDispArea(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.$emit("on-changed");
});
} else {
addEmisQuoteDispArea(this.form).then(response => {
this.$modal.msgSuccess("添加成功");
this.$emit("on-changed");
});
}
}
});
},
}
};
</script>