添加:烟酒馆代理绑定烟酒馆商户

修改:餐厅、酒道馆、烟酒馆绑定对应类型商户流程。已被绑定则不可选择,需要先取消才能选择绑定。
This commit is contained in:
wuhui_zzw 2024-03-22 11:16:52 +08:00
parent d832e58da7
commit 3849be53f2
2 changed files with 192 additions and 40 deletions

View File

@ -107,16 +107,41 @@
</el-col>
<el-col :span="24">
<el-form-item label="关联商户:">
<search-mer :mer_id="info.mer_id" @change="changeMer($event,-1)"></search-mer>
<search-mer
:mer_id="info.mer_id"
@change="changeMer($event,-1)"
:selected_shop="selectedShop['mer'] || {}"
:agent_id="info.id || 0"
></search-mer>
</el-form-item>
</el-col>
</template>
<!-- 仅配送商 显示商户关联多个 && info.is_headquarters == 0-->
<el-col :span="24" v-if="info.agent_type == 8">
<el-form-item label="关联商户:">
<search-mer :mer_id="info.mer_id_list" @change="changeMer($event,-1)" :is_multiple="true"></search-mer>
<search-mer
:mer_id="info.mer_id_list"
@change="changeMer($event,-1)"
:is_multiple="true"
:selected_shop="selectedShop['shop_mer'] || {}"
:agent_id="info.id || 0"
></search-mer>
</el-form-item>
</el-col>
<!-- 仅烟酒馆 显示商户关联多个-->
<el-col :span="24" v-if="info.agent_type == 11">
<el-form-item label="关联商户:">
<search-mer
:mer_id="info.mer_id_list"
:merchant_type="3"
@change="changeMer($event,-1)"
:is_multiple="true"
:selected_shop="selectedShop['wine'] || {}"
:agent_id="info.id || 0"
></search-mer>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
@ -135,7 +160,7 @@
<el-button v-if="Number(agent_type) === 6" size="small" type="primary" @click="addChildren(7)">添加餐厅</el-button>
<!--<el-button v-if="![0,4,7,8].includes(Number(agent_type))" size="small" type="warning" @click="addChildren(8)">添加配送商</el-button>-->
<el-button v-if="Number(agent_type) === 6" size="small" type="warning" @click="addChildren(8)">添加配送商</el-button>
<el-button v-if="Number(agent_type) != 11" size="small" type="primary" @click="addChildren(11)">添加烟酒店代销商</el-button>
<el-button v-if="![7,8,11].includes(Number(agent_type))" size="small" type="primary" @click="addChildren(11)">添加烟酒店代销商</el-button>
<el-button size="small" type="success" @click="submitEditInfo">提交编辑</el-button>
<el-button size="small" @click="closeEditInfo">取消编辑</el-button>
<!-- 角色列表 -->
@ -257,14 +282,38 @@
</el-col>
<el-col :span="24">
<el-form-item label="关联商户:">
<search-mer :mer_id="children_list[index].mer_id" @change="changeMer($event,index)"></search-mer>
<search-mer
:mer_id="children_list[index].mer_id"
@change="changeMer($event,index)"
:selected_shop="selectedShop['mer'] || {}"
:agent_id="children_list[index].id || 0"
></search-mer>
</el-form-item>
</el-col>
</template>
<!-- 仅配送商 显示商户关联多个 && children_list[index].is_headquarters == 0-->
<el-col :span="24" v-if="children_list[index].agent_type == 8">
<el-form-item label="关联商户:">
<search-mer :mer_id="children_list[index].mer_id_list" @change="changeMer($event,index)" :is_multiple="true"></search-mer>
<search-mer
:mer_id="children_list[index].mer_id_list"
@change="changeMer($event,index)"
:is_multiple="true"
:selected_shop="selectedShop['shop_mer'] || {}"
:agent_id="children_list[index].id || 0"
></search-mer>
</el-form-item>
</el-col>
<!-- 仅烟酒馆 显示商户关联多个-->
<el-col :span="24" v-if="children_list[index].agent_type == 11">
<el-form-item label="关联商户:">
<search-mer
:mer_id="children_list[index].mer_id_list"
:merchant_type="3"
@change="changeMer($event,index)"
:is_multiple="true"
:selected_shop="selectedShop['wine'] || {}"
:agent_id="children_list[index].id || 0"
></search-mer>
</el-form-item>
</el-col>
</el-row>
@ -460,6 +509,7 @@ export default {
//
mer_loading: false,
mer_list: {},
selectedShop: {},// mer=shop_mer=wine=
};
},
watch: {
@ -551,8 +601,12 @@ export default {
};
getEditInfo(params).then((res) => {
if(res.status == 200){
_this.info = Object.assign({},res.data.info || {});
_this.children_list = Object.assign({},res.data.children_list || {});
let data = Object.assign({},res.data || {});
_this.info = Object.assign({},data.info || {});
_this.children_list = Object.assign({},data.children_list || {});
_this.selectedShop.shop_mer = Object.assign({},data.shop_mer || {});
_this.selectedShop.wine = Object.assign({},data.wine || {});
_this.selectedShop.mer = Object.assign({},data.mer || {});
}
}).catch((res) => {
_this.$message.error(res.message)
@ -751,23 +805,72 @@ export default {
// -
changeMer(event,index){
let _this = this;
//
if(index == -1){
let agent_type = _this.info.agent_type;
if(agent_type == 7) _this.info.mer_id = event.mer_id;
else if(agent_type == 8) _this.info.mer_id_list = event.event || [];
else if(agent_type == 8 || agent_type == 11) _this.info.mer_id_list = event.event || [];
}else{
let agent_type = _this.children_list[index].agent_type;
if(agent_type == 7) _this.children_list[index].mer_id = event.mer_id;
else if(agent_type == 8) _this.children_list[index].mer_id_list = event.event || [];
else if(agent_type == 8 || agent_type == 11) _this.children_list[index].mer_id_list = event.event || [];
}
_this.changeSelectedShop(index);
_this.$forceUpdate();
},
//
changeSelectedShop(index){
let _this = this;
//
let currentAgent = _this.info
if(index >= 0) currentAgent = _this.children_list[index] || {};
//
let agentType = currentAgent.agent_type || 0;
let selectedMerIds = {};// ID
let keyName = '';
if(agentType == 7){
//
selectedMerIds = Number(currentAgent.mer_id) > 0 ? [currentAgent.mer_id] : {};
keyName = 'mer';
}else if(agentType == 8 || agentType == 11){
// ||
selectedMerIds = currentAgent.mer_id_list || {};
keyName = agentType == 8 ? 'shop_mer' : 'wine';
}
//
let selectedShop = Object.assign({}, _this.selectedShop[keyName] || {});
let selectedShopMerIds = [];//
Object.values(selectedShop).forEach(function (item, index) {
if(item.agent_id == currentAgent.id && !Object.values(selectedMerIds).includes(item.mer_id)){
//
delete selectedShop[index];
}else{
selectedShopMerIds.push(item.mer_id);
}
})
//
selectedShop = Object.values(selectedShop);
Object.values(selectedMerIds).forEach(function (merId) {
if(!Object.values(selectedShopMerIds).includes(merId)){
//
selectedShop.push({
agent_id: currentAgent.id,
contact_name: currentAgent.contact_name || '',
mer_id: merId
});
}
})
selectedShop = Object.values(selectedShop);
_this.$set(_this.selectedShop, keyName, Object.assign({}, selectedShop));
}
},
};
</script>

View File

@ -1,7 +1,24 @@
<template>
<div class="mainContent">
<el-select class="select-merchant" @change="changeMer" :value="mer_id ? mer_id : '' " :multiple="is_multiple" filterable remote reserve-keyword placeholder="请输入关键词搜索商户" :remote-method="searchMer" :loading="loading">
<el-option v-for="(item,index) in list" :key="index" :label="item.mer_name" :value="item.mer_id"></el-option>
<el-select
class="select-merchant"
@change="changeMer"
:value="mer_id ? mer_id : '' "
:multiple="is_multiple"
filterable
remote
reserve-keyword
placeholder="请输入关键词搜索"
:remote-method="searchMer"
:loading="loading"
>
<el-option
v-for="(item,index) in list"
:key="index"
:label="item.mer_name"
:value="item.mer_id"
:disabled="isDisabled(item.mer_id)"
></el-option>
</el-select>
</div>
</template>
@ -15,61 +32,82 @@ export default {
type: String|Number|Object|Array,
default: 0
},
merchant_type:{
type: String|Number,
default: 0
},
is_multiple: {
type: Boolean,
default: false
},
selected_shop:{
type: Object|Array,
default: function () {
return {};
},
},
agent_id:{
type: String|Number,
default: 0
},
},
data() {
return {
loading: false,
list: {},
//
selected_shop_mer_ids: {},
current_agent_selected: {},
};
},
watch: {
// id
mer_id: {
handler: function () {
if(Object.values(this.list).length <= 0){
this.getMer(this.mer_id);
this.searchMer('');
}
},
immediate: true
},
// ID
selected_shop: {
handler: function () {
let agentId = this.agent_id || 0;
let merIds = {};
let currentAgentSelected = {};
Object.values(this.selected_shop).forEach(function (item,index) {
merIds[index] = Number(item.mer_id);
if (item.agent_id == agentId) currentAgentSelected[index] = Number(item.mer_id);
})
this.selected_shop_mer_ids = merIds;
this.current_agent_selected = Object.values(currentAgentSelected);
},
immediate: true
},
},
mounted() {},
methods: {
//
searchMer(event) {
let _this = this;
this.loading = true;
let params = {
keyword: event,
keyword: event
};
merchantListApi(params).then((res) => {
if(res.status == 200){
this.list = res.data.list;
}
this.loading = false;
}).catch((res) => {
this.loading = false;
this.$message.error(res.message);
});
_this.getMerchantList(params);
},
//
getMer(mer_id) {
//
getMerchantList(params){
let _this = this;
this.loading = true;
let type = typeof mer_id;
let params = {};
if(type === 'object'){
params.mer_id_list = mer_id;
}else{
params.mer_id = mer_id;
}
_this.loading = true;
//
params.merchant_type = _this.merchant_type || 0;
params.status = 1;
//
merchantListApi(params).then((res) => {
if(res.status == 200){
_this.list = res.data.list;
}
if(res.status == 200) _this.list = res.data.list;
_this.loading = false;
}).catch((res) => {
_this.loading = false;
@ -90,7 +128,18 @@ export default {
info.event = event;
this.$emit('change', info);
},
//
isDisabled(mer_id){
//
if(Object.values(this.selected_shop_mer_ids).includes(Number(mer_id))){
//
return !Object.values(this.current_agent_selected).includes(Number(mer_id))
}
return false;
}
},
};
</script>