2024-03-22 15:48:25 +08:00
|
|
|
|
<template>
|
|
|
|
|
<div class="divBox">
|
|
|
|
|
<div class="selCard">
|
|
|
|
|
<el-form :model="tableFrom" ref="searchForm" size="small" label-width="85px" :inline="true">
|
|
|
|
|
<el-form-item label="选择时间:">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
v-model="timeVal"
|
|
|
|
|
type="daterange"
|
|
|
|
|
placeholder="选择日期"
|
|
|
|
|
format="yyyy/MM/dd"
|
|
|
|
|
value-format="yyyy/MM/dd"
|
|
|
|
|
range-separator="-"
|
|
|
|
|
style="width:280px;"
|
|
|
|
|
:picker-options="pickerOptions"
|
|
|
|
|
@change="onchangeTime"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="商户类别:" prop="is_trader">
|
|
|
|
|
<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="商户分类:" prop="category_id">
|
|
|
|
|
<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="店铺类型:" prop="type_id">
|
|
|
|
|
<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="是否推荐:" prop="is_best">
|
|
|
|
|
<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-form-item label="关键字:" prop="keyword">
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="tableFrom.keyword"
|
|
|
|
|
@keyup.enter.native="getList(1)"
|
|
|
|
|
placeholder="请输入店铺关键字/店铺名/联系电话"
|
|
|
|
|
class="selWidth"
|
|
|
|
|
clearable
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button type="primary" size="small" @click="getList(1)">搜索</el-button>
|
|
|
|
|
<el-button size="small" @click="searchReset()">重置</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</div>
|
|
|
|
|
<el-card class="mt14">
|
|
|
|
|
<div class="mb20">
|
|
|
|
|
<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-button size="small" type="primary" class="mt5" @click="onAdd">添加商户</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
<el-table
|
|
|
|
|
v-loading="listLoading"
|
|
|
|
|
:data="tableData.data"
|
|
|
|
|
size="small"
|
|
|
|
|
highlight-current-row
|
|
|
|
|
>
|
|
|
|
|
<el-table-column prop="mer_id" label="ID" min-width="60" />
|
|
|
|
|
<el-table-column prop="mer_name" label="商户名称" min-width="150" />
|
2024-04-05 18:19:51 +08:00
|
|
|
|
<el-table-column prop="is_huimei" label="是否惠美乡村" min-width="100">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span>{{scope.row.is_huimei == 1 ? '是' : '否'}}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="is_soldier" label="是否军人" min-width="80">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span>{{scope.row.is_soldier == 1 ? '是' : '否'}}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
2024-03-22 15:48:25 +08:00
|
|
|
|
<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="否"
|
|
|
|
|
:width="40"
|
|
|
|
|
@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="关闭"
|
|
|
|
|
:width="55"
|
|
|
|
|
@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">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<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>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<div class="block">
|
|
|
|
|
<el-pagination
|
|
|
|
|
background
|
|
|
|
|
:page-size="tableFrom.limit"
|
|
|
|
|
:current-page="tableFrom.page"
|
|
|
|
|
layout="total, prev, pager, next, jumper"
|
|
|
|
|
:total="tableData.total"
|
|
|
|
|
@size-change="handleSizeChange"
|
|
|
|
|
@current-change="pageChange"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<!--商户详情-->
|
|
|
|
|
<mer-detail
|
|
|
|
|
ref="merDetail"
|
|
|
|
|
:merId="merId"
|
|
|
|
|
:merCateList="merCateList"
|
|
|
|
|
:storeType="storeType"
|
|
|
|
|
@closeDrawer="closeDrawer"
|
|
|
|
|
@changeDrawer="changeDrawer"
|
|
|
|
|
@onPassword="onPassword"
|
|
|
|
|
@handleTimes="handleTimes"
|
|
|
|
|
@getList="getList"
|
|
|
|
|
:drawer="drawer"
|
|
|
|
|
></mer-detail>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<script>
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
import {
|
|
|
|
|
merchantListApi,
|
|
|
|
|
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";
|
|
|
|
|
import timeOptions from '@/utils/timeOptions';
|
|
|
|
|
export default {
|
|
|
|
|
name: "MerchantList",
|
|
|
|
|
components: { merDetail },
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
fromList: fromList,
|
|
|
|
|
pickerOptions: timeOptions,
|
|
|
|
|
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: ""
|
|
|
|
|
},
|
|
|
|
|
autoUpdate: true,
|
|
|
|
|
merId: "",
|
|
|
|
|
drawer: false,
|
|
|
|
|
timeVal: []
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
this.getHeadNum();
|
|
|
|
|
this.getMerCategory();
|
|
|
|
|
this.getStoreType();
|
|
|
|
|
this.getList("");
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
/**重置 */
|
|
|
|
|
searchReset(){
|
|
|
|
|
this.timeVal = []
|
|
|
|
|
this.tableFrom.date = ""
|
|
|
|
|
this.$refs.searchForm.resetFields()
|
|
|
|
|
this.getList(1)
|
|
|
|
|
},
|
|
|
|
|
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);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
// 具体日期
|
|
|
|
|
onchangeTime(e) {
|
|
|
|
|
this.timeVal = e;
|
|
|
|
|
this.tableFrom.date = this.timeVal ? this.timeVal.join("-") : "";
|
|
|
|
|
this.tableFrom.page = 1;
|
|
|
|
|
this.getList("");
|
|
|
|
|
},
|
|
|
|
|
// 获取开启商户数
|
|
|
|
|
getHeadNum() {
|
|
|
|
|
merchantCountApi()
|
|
|
|
|
.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 === 1 ? "是否开启推荐商户" : "是否关闭推荐商户";
|
|
|
|
|
this.$modalSure(title).then(() => {
|
|
|
|
|
merchantStatuseApi(row.mer_id, row.is_best)
|
|
|
|
|
.then(({ message }) => {
|
|
|
|
|
this.$message.success(message);
|
|
|
|
|
this.getList("");
|
|
|
|
|
})
|
|
|
|
|
.catch(({ message }) => {
|
|
|
|
|
this.getList("");
|
|
|
|
|
this.$message.error(message);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
// 开启关闭
|
|
|
|
|
onchangeIsClose(row) {
|
|
|
|
|
merchantIsCloseApi(row.mer_id, row.status)
|
|
|
|
|
.then(({ message }) => {
|
|
|
|
|
this.$message.success(message);
|
|
|
|
|
this.getList("");
|
|
|
|
|
this.getHeadNum();
|
|
|
|
|
})
|
|
|
|
|
.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>
|