添加:烟酒店

This commit is contained in:
wuhui_zzw 2024-03-14 10:25:37 +08:00
parent d20a739a9e
commit 88e33afa0b
4 changed files with 457 additions and 3 deletions

View File

@ -48,6 +48,15 @@ const merchantRouter =
},
component: () => import('@/views/merchant/list/supplier')
},
{
path: 'smoke',
name: 'MerchantShopList',
meta: {
title: '烟酒店',
noCache: true
},
component: () => import('@/views/merchant/list/smoke')
},
{
path: 'list/reconciliation/:id/:type?',
name: 'MerchantRecord',

View File

@ -337,11 +337,12 @@
<el-option label="普通商户" :value="0" />
<el-option label="酒道馆" :value="1" />
<el-option label="供应商" :value="2" />
<el-option label="烟酒店" :value="3" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="defaultMerchantType == 1">
<el-form-item label="关联商户:" prop="merchant_type">
<el-form-item label="关联商户:">
<el-select v-model="merData.shop_mer_id" filterable remote class="selWidth" placeholder="请输入关键字搜索商户" :remote-method="selectMerList">
<el-option
v-for="item in mer_list"
@ -435,7 +436,12 @@ export default {
merData: {
handler() {
this.merData.merchant_type = this.defaultMerchantType || 0;
this.mar_type_name = this.defaultMerchantType == 1 ? '酒道馆' : (this.defaultMerchantType == 2 ? '供应商' :'商户');
if(this.defaultMerchantType == 1) this.mar_type_name = '酒道馆';
else if(this.defaultMerchantType == 2) this.mar_type_name = '供应商';
else if(this.defaultMerchantType == 3) this.mar_type_name = '烟酒店';
else this.mar_type_name = '商户';
this.selectMerList();
this.selectBrandList('');

View File

@ -193,6 +193,7 @@
<div class="value" v-if="merData.merchant_type == 0">普通商户</div>
<div class="value" v-else-if="merData.merchant_type == 1">酒道馆</div>
<div class="value" v-else-if="merData.merchant_type == 2">供应商</div>
<div class="value" v-else-if="merData.merchant_type == 3">烟酒店</div>
</li>
<li class="item" v-if="defaultMerchantType == 1">
<div>关联商户</div>
@ -244,7 +245,11 @@ export default {
merData: {
handler() {
this.merData.merchant_type = this.defaultMerchantType || 0;
this.mar_type_name = this.defaultMerchantType == 1 ? '酒道馆' : (this.defaultMerchantType == 2 ? '供应商' :'商户');
if(this.defaultMerchantType == 1) this.mar_type_name = '酒道馆';
else if(this.defaultMerchantType == 2) this.mar_type_name = '供应商';
else if(this.defaultMerchantType == 3) this.mar_type_name = '烟酒店';
else this.mar_type_name = '商户';
},
deep: true
}

View File

@ -0,0 +1,434 @@
<template>
<div class="divBox">
<el-card class="box-card">
<div slot="header" class="clearfix">
<div class="container">
<el-form size="small" label-width="100px" :inline="true">
<el-form-item label="选择时间:" style="display: inline-block">
<el-radio-group
v-model="tableFrom.date"
size="small"
@change="selectChange(tableFrom.date)"
>
<el-radio-button
v-for="(itemn,indexn) in fromList.fromTxt"
:key="indexn"
:label="itemn.val"
>{{ itemn.text }}</el-radio-button>
</el-radio-group>
<el-date-picker
v-model="timeVal"
type="daterange"
placeholder="选择日期"
format="yyyy/MM/dd"
value-format="yyyy/MM/dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="onchangeTime"
/>
</el-form-item>
<el-form-item label="关键字:" label-width="80px" style="display: inline-block;">
<el-input
v-model="tableFrom.keyword"
@keyup.enter.native="getList(1)"
placeholder="请输入店铺关键字/店铺名/联系电话"
class="selWidth"
>
<el-button slot="append" icon="el-icon-search" class="el-button-solt" @click="getList(1)" />
</el-input>
</el-form-item>
<el-form-item label="烟酒店类别:">
<el-select
v-model="tableFrom.is_trader"
clearable
placeholder="请选择"
class="selWidth"
@change="getList(1)"
>
<el-option label="自营" value="1" />
<el-option label="非自营" value="0" />
</el-select>
</el-form-item>
<el-form-item label="烟酒店分类:">
<el-select
v-model="tableFrom.category_id"
clearable
placeholder="请选择"
class="selWidth"
@change="getList(1)"
>
<el-option
v-for="item in merCateList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="店铺类型:">
<el-select
v-model="tableFrom.type_id"
clearable
placeholder="请选择"
class="selWidth"
@change="getList(1)"
>
<el-option
v-for="item in storeType"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="是否推荐:">
<el-select
v-model="tableFrom.is_best"
clearable
placeholder="请选择"
class="selWidth"
@change="getList(1)"
>
<el-option key="1" label="是" value="1"/>
<el-option key="0" label="否" value="0"/>
</el-select>
</el-form-item>
<el-tabs v-if="headeNum.length > 0" v-model="tableFrom.status" @tab-click="getList(1),getHeadNum()">
<el-tab-pane
v-for="(item,index) in headeNum"
:key="index"
:name="item.type.toString()"
:label="item.title +'('+item.count +')' "
/>
</el-tabs>
</el-form>
</div>
<el-button size="small" type="primary" @click="onAdd">添加烟酒店</el-button>
</div>
<el-table
v-loading="listLoading"
:data="tableData.data"
style="width: 100%"
size="small"
highlight-current-row
class="switchTable"
>
<el-table-column prop="mer_id" label="ID" min-width="60" />
<el-table-column prop="mer_name" label="烟酒店名称" min-width="150" />
<el-table-column prop="real_name" label="烟酒店姓名" min-width="150" />
<el-table-column prop="status" label="推荐" min-width="100">
<template slot-scope="scope">
<el-switch
v-model="scope.row.is_best"
:active-value="1"
:inactive-value="0"
active-text="是"
inactive-text="否"
disabled
@click.native="onchangeIsShow(scope.row)"
/>
</template>
</el-table-column>
<el-table-column prop="status" label="开启/关闭" min-width="100">
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
:active-value="1"
:inactive-value="0"
active-text="开启"
inactive-text="关闭"
disabled
@click.native="onchangeIsClose(scope.row)"
/>
</template>
</el-table-column>
<el-table-column prop="create_time" label="创建时间" min-width="150" />
<el-table-column prop="margin" label="保证金" min-width="150">
<template slot-scope="scope">
<span>{{scope.row.is_margin == 1 ? '未支付' : scope.row.is_margin == 0 ? '无' : '已支付'}}</span>
</template>
</el-table-column>
<el-table-column prop="sort" label="排序" min-width="100" />
<el-table-column prop="mark" label="备注" min-width="200" />
<el-table-column label="操作" min-width="150" fixed="right" align="center">
<template slot-scope="scope">
<!-- <router-link
v-if="tableFrom.status === '1'"
:to="{path: roterPre+ '/merchant/list/reconciliation/' + scope.row.mer_id + '/1' }"
>
<el-button type="text" size="small" class="mr10">对账</el-button>
</router-link> -->
<el-button
v-if="tableFrom.status === '1'"
type="text"
size="small"
@click="onLogo(scope.row.mer_id)"
>登录</el-button>
<el-button type="text" size="small" @click="onEdit(scope.row.mer_id)">编辑</el-button>
<el-button type="text" size="small" @click="onDetails(scope.row.mer_id)">详情</el-button>
<el-button
v-if="tableFrom.status === '0'"
type="text"
size="small"
@click="handleDelete(scope.row.mer_id, scope.$index)"
>删除</el-button>
<!-- <el-button
v-if="tableFrom.status === '1'"
type="text"
size="small"
@click="onDeduct(scope.row.mer_id)"
>扣除保证金</el-button> -->
</template>
</el-table-column>
</el-table>
<div class="block">
<el-pagination
:page-sizes="[20, 40, 60, 80]"
:page-size="tableFrom.limit"
:current-page="tableFrom.page"
layout="total, sizes, prev, pager, next, jumper"
:total="tableData.total"
@size-change="handleSizeChange"
@current-change="pageChange"
/>
</div>
</el-card>
<!--烟酒店详情-->
<mer-detail
ref="merDetail"
:merId="merId"
@closeDrawer="closeDrawer"
@changeDrawer="changeDrawer"
@onPassword="onPassword"
@handleTimes="handleTimes"
@getList="getList"
:drawer="drawer"
:defaultMerchantType="3"
></mer-detail>
</div>
</template>
<script>
import {
merchantListApi,
merchantCreateApi,
merchantUpdateApi,
merchantDeleteForm,
merchantStatuseApi,
merchantPasswordApi,
merchantLoginApi,
changeCopyApi,
merchantCountApi,
merchantIsCloseApi,
getstoreTypeApi,
getMerCateApi, marginDeductionForm
} from "@/api/merchant";
import merDetail from './handle/merDetails.vue';
import { fromList } from "@/libs/constants.js";
import { roterPre } from "@/settings";
import SettingMer from "@/libs/settingMer";
import Cookies from "js-cookie";
export default {
name: "MerchantList",
components: { merDetail },
data() {
return {
fromList: fromList,
roterPre: roterPre,
isChecked: false,
listLoading: true,
merCateList: [],
storeType: [],
headeNum: [
{
count: '',
type: "1",
title: "正常开启的烟酒店"
},
{
count: '',
type: "0",
title: "已关闭烟酒店"
}
],
tableData: {
data: [],
total: 0
},
tableFrom: {
page: 1,
limit: 20,
date: "",
status: "1",
keyword: "",
is_trader: "",
is_best: "",
category_id: '',
type_id: "",
merchant_type: 3
},
autoUpdate: true,
merId: "",
drawer: false,
timeVal: []
};
},
mounted() {
this.getHeadNum();
this.getMerCategory();
this.getStoreType();
this.getList("");
},
methods: {
onLogo(id) {
merchantLoginApi(id)
.then(res => {
Cookies.set("merchantToken", res.data.token);
window.open(SettingMer.httpUrl + res.data.url);
})
.catch(res => {
this.$message.error(res.message);
});
},
//
selectChange(tab) {
this.tableFrom.date = tab;
this.timeVal = [];
this.tableFrom.page = 1;
this.getList("");
},
//
onchangeTime(e) {
this.timeVal = e;
this.tableFrom.date = this.timeVal ? this.timeVal.join("-") : "";
this.tableFrom.page = 1;
this.getList("");
},
//
getHeadNum() {
merchantCountApi(this.tableFrom)
.then(res => {
this.headeNum[0]["count"] = res.data.valid;
this.headeNum[1]["count"] = res.data.invalid;
})
.catch(res => {});
},
//
getMerCategory() {
getMerCateApi().then(res => {
this.merCateList = res.data
}).catch(res => {
this.$message.error(res.message)
})
},
getStoreType(){
getstoreTypeApi().then(res => {
this.storeType = res.data
}).catch(res => {
this.$message.error(res.message)
})
},
//
getList(num) {
this.listLoading = true;
this.tableFrom.page = num ? num : this.tableFrom.page;
merchantListApi(this.tableFrom)
.then(res => {
this.tableData.data = res.data.list;
this.tableData.total = res.data.count;
this.listLoading = false;
})
.catch(res => {
this.listLoading = false;
this.$message.error(res.message);
});
},
pageChange(page) {
this.tableFrom.page = page;
this.getList("");
},
handleSizeChange(val) {
this.tableFrom.limit = val;
this.getList(1);
},
//
onchangeIsShow(row) {
const title = row.is_best === 0 ? "是否开启推荐烟酒店" : "是否关闭推荐烟酒店";
this.$modalSure(title).then(() => {
merchantStatuseApi(row.mer_id, row.is_best === 1 ? 0 : 1)
.then(({ message }) => {
this.$message.success(message);
this.getList("");
})
.catch(({ message }) => {
this.$message.error(message);
});
});
},
//
onchangeIsClose(row) {
merchantIsCloseApi(row.mer_id, row.status === 1 ? 0 : 1)
.then(({ message }) => {
this.$message.success(message);
this.getList("");
})
.catch(({ message }) => {
this.$message.error(message);
});
},
//
onAdd() {
// this.$modalForm(merchantCreateApi()).then(() => this.getList(""));
this.drawer = true;
this.$refs.merDetail.initData();
},
//
onEdit(id) {
this.merId = id;
this.$refs.merDetail.isEdit = true;
this.$refs.merDetail.getInfo(id);
this.drawer = true;
},
//
onDetails(id) {
this.merId = id;
this.$refs.merDetail.isEdit = false;
this.$refs.merDetail.getInfo(id);
this.drawer = true;
},
changeDrawer(v) {
this.drawer = v;
},
closeDrawer() {
this.drawer = false;
},
//
handleDelete(id) {
this.$modalForm(merchantDeleteForm(id)).then(() => this.getList(""));
},
//
onDeduct(id) {
this.$modalForm(marginDeductionForm(id)).then(() => this.getList(""));
},
//
handleTimes(id) {
this.$modalForm(changeCopyApi(id)).then(() => this.getList(""));
},
//
onPassword(id) {
this.$modalForm(merchantPasswordApi(id));
}
}
};
</script>
<style scoped lang="scss">
</style>