添加:烟酒馆代理绑定烟酒馆商户
修改:餐厅、酒道馆、烟酒馆绑定对应类型商户流程。已被绑定则不可选择,需要先取消才能选择绑定。
This commit is contained in:
parent
d832e58da7
commit
3849be53f2
|
|
@ -107,16 +107,41 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="关联商户:">
|
<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-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
<!-- 仅配送商 显示商户关联(多个) && info.is_headquarters == 0-->
|
<!-- 仅配送商 显示商户关联(多个) && info.is_headquarters == 0-->
|
||||||
<el-col :span="24" v-if="info.agent_type == 8">
|
<el-col :span="24" v-if="info.agent_type == 8">
|
||||||
<el-form-item label="关联商户:">
|
<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-form-item>
|
||||||
</el-col>
|
</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-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</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="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="![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) === 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" type="success" @click="submitEditInfo">提交编辑</el-button>
|
||||||
<el-button size="small" @click="closeEditInfo">取消编辑</el-button>
|
<el-button size="small" @click="closeEditInfo">取消编辑</el-button>
|
||||||
<!-- 角色列表 -->
|
<!-- 角色列表 -->
|
||||||
|
|
@ -257,14 +282,38 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="关联商户:">
|
<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-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
<!-- 仅配送商 显示商户关联(多个) && children_list[index].is_headquarters == 0-->
|
<!-- 仅配送商 显示商户关联(多个) && children_list[index].is_headquarters == 0-->
|
||||||
<el-col :span="24" v-if="children_list[index].agent_type == 8">
|
<el-col :span="24" v-if="children_list[index].agent_type == 8">
|
||||||
<el-form-item label="关联商户:">
|
<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-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -460,6 +509,7 @@ export default {
|
||||||
// 商户选择
|
// 商户选择
|
||||||
mer_loading: false,
|
mer_loading: false,
|
||||||
mer_list: {},
|
mer_list: {},
|
||||||
|
selectedShop: {},// 已选择商户 mer=餐厅已选中,shop_mer=酒道馆已选中,wine=烟酒店已选中
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|
@ -551,8 +601,12 @@ export default {
|
||||||
};
|
};
|
||||||
getEditInfo(params).then((res) => {
|
getEditInfo(params).then((res) => {
|
||||||
if(res.status == 200){
|
if(res.status == 200){
|
||||||
_this.info = Object.assign({},res.data.info || {});
|
let data = Object.assign({},res.data || {});
|
||||||
_this.children_list = Object.assign({},res.data.children_list || {});
|
_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) => {
|
}).catch((res) => {
|
||||||
_this.$message.error(res.message)
|
_this.$message.error(res.message)
|
||||||
|
|
@ -751,23 +805,72 @@ export default {
|
||||||
// 选择商户 - 商户改变
|
// 选择商户 - 商户改变
|
||||||
changeMer(event,index){
|
changeMer(event,index){
|
||||||
let _this = this;
|
let _this = this;
|
||||||
|
// 当前代理选中商户信息变更
|
||||||
if(index == -1){
|
if(index == -1){
|
||||||
let agent_type = _this.info.agent_type;
|
let agent_type = _this.info.agent_type;
|
||||||
if(agent_type == 7) _this.info.mer_id = event.mer_id;
|
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{
|
}else{
|
||||||
let agent_type = _this.children_list[index].agent_type;
|
let agent_type = _this.children_list[index].agent_type;
|
||||||
if(agent_type == 7) _this.children_list[index].mer_id = event.mer_id;
|
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();
|
_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>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,24 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="mainContent">
|
<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-select
|
||||||
<el-option v-for="(item,index) in list" :key="index" :label="item.mer_name" :value="item.mer_id"></el-option>
|
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>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -15,61 +32,82 @@ export default {
|
||||||
type: String|Number|Object|Array,
|
type: String|Number|Object|Array,
|
||||||
default: 0
|
default: 0
|
||||||
},
|
},
|
||||||
|
merchant_type:{
|
||||||
|
type: String|Number,
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
is_multiple: {
|
is_multiple: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
|
selected_shop:{
|
||||||
|
type: Object|Array,
|
||||||
|
default: function () {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
agent_id:{
|
||||||
|
type: String|Number,
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
list: {},
|
list: {},
|
||||||
|
// 商户已经选中处理
|
||||||
|
selected_shop_mer_ids: {},
|
||||||
|
current_agent_selected: {},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
// 当前角色已选中商户id列表变更
|
||||||
mer_id: {
|
mer_id: {
|
||||||
handler: function () {
|
handler: function () {
|
||||||
if(Object.values(this.list).length <= 0){
|
if(Object.values(this.list).length <= 0){
|
||||||
this.getMer(this.mer_id);
|
|
||||||
|
this.searchMer('');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
immediate: true
|
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() {},
|
mounted() {},
|
||||||
methods: {
|
methods: {
|
||||||
// 搜索商户
|
// 搜索商户
|
||||||
searchMer(event) {
|
searchMer(event) {
|
||||||
let _this = this;
|
let _this = this;
|
||||||
this.loading = true;
|
|
||||||
let params = {
|
let params = {
|
||||||
keyword: event,
|
keyword: event
|
||||||
};
|
};
|
||||||
merchantListApi(params).then((res) => {
|
|
||||||
if(res.status == 200){
|
_this.getMerchantList(params);
|
||||||
this.list = res.data.list;
|
|
||||||
}
|
|
||||||
this.loading = false;
|
|
||||||
}).catch((res) => {
|
|
||||||
this.loading = false;
|
|
||||||
this.$message.error(res.message);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
// 获取商户
|
// 获取商户列表
|
||||||
getMer(mer_id) {
|
getMerchantList(params){
|
||||||
let _this = this;
|
let _this = this;
|
||||||
this.loading = true;
|
_this.loading = true;
|
||||||
let type = typeof mer_id;
|
// 参数补充
|
||||||
let params = {};
|
params.merchant_type = _this.merchant_type || 0;
|
||||||
if(type === 'object'){
|
params.status = 1;
|
||||||
params.mer_id_list = mer_id;
|
// 发起请求
|
||||||
}else{
|
|
||||||
params.mer_id = mer_id;
|
|
||||||
}
|
|
||||||
merchantListApi(params).then((res) => {
|
merchantListApi(params).then((res) => {
|
||||||
if(res.status == 200){
|
if(res.status == 200) _this.list = res.data.list;
|
||||||
_this.list = res.data.list;
|
|
||||||
}
|
|
||||||
_this.loading = false;
|
_this.loading = false;
|
||||||
}).catch((res) => {
|
}).catch((res) => {
|
||||||
_this.loading = false;
|
_this.loading = false;
|
||||||
|
|
@ -90,7 +128,18 @@ export default {
|
||||||
info.event = event;
|
info.event = event;
|
||||||
|
|
||||||
this.$emit('change', info);
|
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>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue