国家与省份匹配

This commit is contained in:
wuteng 2025-07-17 13:33:17 +08:00
parent 030cec434d
commit 1be934fb72
4 changed files with 112 additions and 14 deletions

View File

@ -81,8 +81,9 @@ methods: {
},
onChange() {
this.$emit("input", this.svalue);
this.$emit("onChange");
},
//传选中值对象
let selItem = this.optionItems.find(item => item.regionCode == this.svalue);
this.$emit("onChange", selItem);},
queryData(val,key) {
this.optionItems =[];

View File

@ -242,7 +242,7 @@
<el-form-item :label="$t('国家地区')" prop="sender.province" >
<div style="display:inline-flex">
<country-picker1 v-model="form.sender.country" ></country-picker1>
<province-picker1 v-model="form.sender.province" :countryCode="form.sender.country" style="margin-left:5px"></province-picker1>
<province-picker1 v-model="form.sender.province" :countryCode="form.sender.country" style="margin-left:5px" @onChange="onChangeSenderProvince"></province-picker1>
<city-picker1 v-model="form.sender.city" :parentCode="form.sender.province" style="margin-left:5px"></city-picker1>
<district-picker1 v-model="form.sender.county" :parentCode="form.sender.city" style="margin-left:5px"></district-picker1>
</div>
@ -306,7 +306,7 @@
<el-form-item :label="$t('国家地区')" prop="reciever.province">
<div style="display:inline-flex">
<country-picker2 v-model="form.reciever.country" ></country-picker2>
<ProvincePicker2 v-model="form.reciever.province" :countryCode="form.reciever.country" style="margin-left:5px" @onChange="handleCalcDestSite" ></ProvincePicker2>
<ProvincePicker2 v-model="form.reciever.province" :countryCode="form.reciever.country" style="margin-left:5px" @onChange="onChangeRecieverProvince"></ProvincePicker2>
<city-picker2 v-model="form.reciever.city" :parentCode="form.reciever.province" style="margin-left:5px" @onChange="handleCalcDestSite" ></city-picker2>
<district-picker2 v-model="form.reciever.county" :parentCode="form.reciever.city" style="margin-left:5px" @onChange="handleCalcDestSite" ></district-picker2>
</div>
@ -939,6 +939,31 @@ data() {
callback();
}
}
//校验寄件国家地区国家和省份是否匹配
var checkSenderCountryProvince = (rule, value, callback) => {
if (this.form.sender.country && this.senderCountryCode) {
if (this.form.sender.country != this.senderCountryCode) {
callback(new Error('寄件国家和省份不一致'));
} else {
callback();
}
} else {
callback();
}
}
//校验收件国家地区国家和省份是否匹配
var checkRecieverCountryProvince = (rule, value, callback) => {
console.log('value',value, this.form.reciever.country , this.recieverCountryCode)
if (this.form.reciever.country && this.recieverCountryCode) {
if (this.form.reciever.country != this.recieverCountryCode) {
callback(new Error('收件国家和省份不一致'));
} else {
callback();
}
} else {
callback();
}
}
return {
activeNames:['1','2','3','4'],
exchangeRate:null,
@ -968,6 +993,9 @@ data() {
subHasCnt:0
},
sendSiteSelectCount:0,//寄件网点变化次数
//寄件人省份的国家
senderCountryCode:null,
recieverCountryCode:null,
// 表单校验
rules: {
billCode: [
@ -987,7 +1015,9 @@ data() {
{ required: true, message: "收货人国家不能为空", trigger: ["blur",'change'] }
],
province: [
{ required: true, message: "收货省不能为空", trigger: ["blur",'change'] }
{ required: true, message: "收货省不能为空", trigger: ["blur",'change'] }, {
validator: checkRecieverCountryProvince, trigger: ['blur', 'change']
}
],
company: [
{ required: true, message: "收货公司不能为空", trigger: ["blur",'change'] }
@ -1013,7 +1043,8 @@ data() {
{ required: true, message: "寄件人国家不能为空", trigger: ["blur",'change'] }
],
province: [
{ required: true, message: "寄件省不能为空", trigger: ["blur",'change'] }
{ required: true, message: "寄件省不能为空", trigger: ["blur",'change'] },{
validator: checkSenderCountryProvince, trigger: ['blur', 'change'] }
],
company: [
{ required: true, message: "寄件公司不能为空", trigger: ["blur",'change'] }
@ -2486,6 +2517,19 @@ methods: {
this.form.remark = this.form.remark.replace(/该单为虚拟单:对应主单为[\da-zA-Z]+/g, '');
}
}
},
//寄件省份变化
onChangeSenderProvince(val){
if(val){
this.senderCountryCode = val.countryCode;
}
},
//收件省份变化
onChangeRecieverProvince(val){
if(val){
this.recieverCountryCode = val.countryCode;
}
this.handleCalcDestSite();
}
}
};

View File

@ -943,10 +943,9 @@ data() {
}
//校验寄件国家地区国家和省份是否匹配
var checkSenderCountryProvince = (rule, value, callback) => {
console.log('value',value, this.form.sender.country , this.senderCountryCode)
if (this.form.sender.country && this.senderCountryCode) {
if (this.form.sender.country != this.senderCountryCode) {
callback(new Error('国家和省份不一致'));
callback(new Error('寄件国家和省份不一致'));
} else {
callback();
}
@ -956,10 +955,9 @@ data() {
}
//校验收件国家地区国家和省份是否匹配
var checkRecieverCountryProvince = (rule, value, callback) => {
console.log('value',value, this.form.reciever.country , this.recieverCountryCode)
if (this.form.reciever.country && this.recieverCountryCode) {
if (this.form.reciever.country != this.recieverCountryCode) {
callback(new Error('国家和省份不一致'));
callback(new Error('收件国家和省份不一致'));
} else {
callback();
}

View File

@ -634,7 +634,7 @@
<el-form-item :label="$t('国家地区')" prop="sender.province" >
<div style="display:inline-flex">
<country-picker1 v-model="form.sender.country" ></country-picker1>
<province-picker1 v-model="form.sender.province" :countryCode="form.sender.country" style="margin-left:5px"></province-picker1>
<province-picker1 v-model="form.sender.province" :countryCode="form.sender.country" style="margin-left:5px" @onChange="onChangeSenderProvince"></province-picker1>
<city-picker1 v-model="form.sender.city" :parentCode="form.sender.province" style="margin-left:5px"></city-picker1>
<district-picker1 v-model="form.sender.county" :parentCode="form.sender.city" style="margin-left:5px"></district-picker1>
</div>
@ -691,7 +691,7 @@
<el-form-item :label="$t('国家地区')" prop="reciever.province">
<div style="display:inline-flex">
<country-picker2 v-model="form.reciever.country" ></country-picker2>
<ProvincePicker2 v-model="form.reciever.province" :countryCode="form.reciever.country" style="margin-left:5px" @onChange="handleCalcDestSite" ></ProvincePicker2>
<ProvincePicker2 v-model="form.reciever.province" :countryCode="form.reciever.country" style="margin-left:5px" @onChange="onChangeRecieverProvince"></ProvincePicker2>
<city-picker2 v-model="form.reciever.city" :parentCode="form.reciever.province" style="margin-left:5px" @onChange="handleCalcDestSite" ></city-picker2>
<district-picker2 v-model="form.reciever.county" :parentCode="form.reciever.city" style="margin-left:5px" @onChange="handleCalcDestSite" ></district-picker2>
</div>
@ -1297,6 +1297,30 @@ export default {
callback();
}
}
//校验寄件国家地区国家和省份是否匹配
var checkSenderCountryProvince = (rule, value, callback) => {
if (this.form.sender.country && this.senderCountryCode) {
if (this.form.sender.country != this.senderCountryCode) {
callback(new Error('寄件国家和省份不一致'));
} else {
callback();
}
} else {
callback();
}
}
//校验收件国家地区国家和省份是否匹配
var checkRecieverCountryProvince = (rule, value, callback) => {
if (this.form.reciever.country && this.recieverCountryCode) {
if (this.form.reciever.country != this.recieverCountryCode) {
callback(new Error('收件国家和省份不一致'));
} else {
callback();
}
} else {
callback();
}
}
return {
triggerCount:0,
activeNames:['1','2','3','4'],
@ -1314,6 +1338,9 @@ export default {
masterBillProductType:null,
// 表单参数
form:{},
//寄件人省份的国家
senderCountryCode:null,
recieverCountryCode:null,
// 表单校验
rules: {
billCode: [
@ -1333,7 +1360,9 @@ export default {
{ required: true, message: "收货人国家不能为空", trigger: ["blur",'change'] }
],
province: [
{ required: true, message: "收货省不能为空", trigger: ["blur",'change'] }
{ required: true, message: "收货省不能为空", trigger: ["blur",'change'] }, {
validator: checkRecieverCountryProvince, trigger: ['blur', 'change']
}
],
company: [
{ required: true, message: "发件公司不能为空", trigger: ["blur",'change'] }
@ -1359,7 +1388,8 @@ export default {
{ required: true, message: "寄件人国家不能为空", trigger: ["blur",'change'] }
],
province: [
{ required: true, message: "寄件省不能为空", trigger: ["blur",'change'] }
{ required: true, message: "寄件省不能为空", trigger: ["blur",'change'] },{
validator: checkSenderCountryProvince, trigger: ['blur', 'change'] }
],
company: [
{ required: true, message: "发件公司不能为空", trigger: ["blur",'change'] }
@ -1498,6 +1528,7 @@ export default {
this.applyTypeArr=[];
}
console.log("====>this.applyTypeArr==>",this.applyTypeArr);
this.initCountryCode();
},
deep: true
},
@ -2140,6 +2171,30 @@ export default {
this.form.startSiteCode = item.siteCode;
this.form.startSiteName = item.siteName;
},
//寄件省份变化
onChangeSenderProvince(val){
console.log('onChangeSenderProvince',val)
if(val){
this.senderCountryCode = val.countryCode;
}
},
//收件省份变化
onChangeRecieverProvince(val){
console.log('val++++++',val)
if(val){
this.recieverCountryCode = val.countryCode;
}
this.handleCalcDestSite();
},
//初始化选中省份的国家
initCountryCode(){
if(this.form.sender){
this.senderCountryCode = this.form.sender.country;
}
if(this.form.reciever){
this.recieverCountryCode = this.form.reciever.country;
}
}
}
};
</script>