添加:烟酒馆代理绑定烟酒馆商户
修改:餐厅、酒道馆、烟酒馆绑定对应类型商户流程。已被绑定则不可选择,需要先取消才能选择绑定。
This commit is contained in:
parent
d832e58da7
commit
3849be53f2
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue