开通交易申请

This commit is contained in:
DESKTOP-GMUNQ1B\k 2024-02-26 15:54:10 +08:00
parent 527481253c
commit fe8dcf8119
4 changed files with 551 additions and 702 deletions

View File

@ -10,126 +10,135 @@
import Layout from '@/layout'
import { roterPre } from '@/settings'
const merchantRouter =
{
path: `${roterPre}/merchant`,
name: 'merchant',
meta: {
icon: 'dashboard',
title: '商户管理'
},
alwaysShow: true,
component: Layout,
children: [
{
path: `${roterPre}/merchant`,
name: 'merchant',
path: 'system',
name: 'MerchantSystem',
meta: {
icon: 'dashboard',
title: '商户管理'
title: '商户权限管理',
noCache: true
},
alwaysShow: true,
component: Layout,
children: [
{
path: 'system',
name: 'MerchantSystem',
meta: {
title: '商户权限管理',
noCache: true
},
component: () => import('@/views/merchant/system/index')
},
{
path: 'list',
name: 'MerchantList',
meta: {
title: '商户列表',
noCache: true
},
component: () => import('@/views/merchant/list/index')
},
{
path: 'list/reconciliation/:id/:type?',
name: 'MerchantRecord',
component: () => import('@/views/merchant/list/record'),
meta: {
title: '商户对账',
noCache: true,
activeMenu: `${roterPre}/merchant/list`
},
hidden: true
},
{
path: 'classify',
name: 'MerchantClassify',
meta: {
title: '商户分类',
noCache: true
},
component: () => import('@/views/merchant/classify')
},
{
path: 'application',
name: 'MerchantApplication',
meta: {
title: '商户申请',
noCache: true
},
component: () => import('@/views/merchant/application')
},
{
path: 'agree',
name: 'MerchantAgreement',
meta: {
title: '入驻协议',
noCache: true
},
component: () => import('@/views/merchant/agreement')
},
{
path: 'type',
name: 'storeType',
meta: {
title: '店铺类型',
noCache: true
},
component: () => import('@/views/merchant/type/index')
},
{
path: 'applyMents',
name: 'MerchantApplyMents',
meta: {
title: '服务申请',
noCache: true
},
component: () => import('@/views/merchant/applyments/index')
},
{
path: 'applyList',
name: 'ApplyList',
meta: {
title: '分账商户列表'
},
component: () => import('@/views/merchant/applyments/list')
},
{
path: 'type/description',
name: 'MerTypeDesc',
meta: {
title: '店铺类型说明',
noCache: true
},
component: () => import('@/views/merchant/type/description')
},
{
path: 'deposit_list',
name: 'DepositList',
meta: {
title: '店铺保证金管理',
noCache: true
},
component: () => import('@/views/merchant/deposit/index')
},
{
path: 'recharge_record',
name: 'RechargeRecord',
meta: {
title: '商户充值记录',
noCache: true
},
component: () => import('@/views/merchant/rechargeRecord/index')
},
]
}
component: () => import('@/views/merchant/system/index')
},
{
path: 'list',
name: 'MerchantList',
meta: {
title: '商户列表',
noCache: true
},
component: () => import('@/views/merchant/list/index')
},
{
path: 'list/reconciliation/:id/:type?',
name: 'MerchantRecord',
component: () => import('@/views/merchant/list/record'),
meta: {
title: '商户对账',
noCache: true,
activeMenu: `${roterPre}/merchant/list`
},
hidden: true
},
{
path: 'classify',
name: 'MerchantClassify',
meta: {
title: '商户分类',
noCache: true
},
component: () => import('@/views/merchant/classify')
},
{
path: 'application',
name: 'MerchantApplication',
meta: {
title: '商户申请',
noCache: true
},
component: () => import('@/views/merchant/application')
},
{
path: 'open',
name: 'MerchantOpen',
meta: {
title: '商户开通申请',
noCache: true
},
component: () => import('@/views/merchant/open')
},
{
path: 'agree',
name: 'MerchantAgreement',
meta: {
title: '入驻协议',
noCache: true
},
component: () => import('@/views/merchant/agreement')
},
{
path: 'type',
name: 'storeType',
meta: {
title: '店铺类型',
noCache: true
},
component: () => import('@/views/merchant/type/index')
},
{
path: 'applyMents',
name: 'MerchantApplyMents',
meta: {
title: '服务申请',
noCache: true
},
component: () => import('@/views/merchant/applyments/index')
},
{
path: 'applyList',
name: 'ApplyList',
meta: {
title: '分账商户列表'
},
component: () => import('@/views/merchant/applyments/list')
},
{
path: 'type/description',
name: 'MerTypeDesc',
meta: {
title: '店铺类型说明',
noCache: true
},
component: () => import('@/views/merchant/type/description')
},
{
path: 'deposit_list',
name: 'DepositList',
meta: {
title: '店铺保证金管理',
noCache: true
},
component: () => import('@/views/merchant/deposit/index')
},
{
path: 'recharge_record',
name: 'RechargeRecord',
meta: {
title: '商户充值记录',
noCache: true
},
component: () => import('@/views/merchant/rechargeRecord/index')
},
]
}
export default merchantRouter

View File

@ -5,83 +5,34 @@
<div class="container">
<el-form size="small" label-width="100px" :inline="true">
<el-form-item label="选择时间:" style="width: 100%">
<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 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-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="状态:">
<el-radio-group
v-model="tableFrom.status"
size="small"
@change="statusChange(tableFrom.status)"
>
<el-radio-button
v-for="(itemn, indexn) in statusList.fromTxt"
:key="indexn"
:label="itemn.val"
>{{ itemn.text }}</el-radio-button
>
<el-radio-group v-model="tableFrom.status" size="small" @change="statusChange(tableFrom.status)">
<el-radio-button v-for="(itemn, indexn) in statusList.fromTxt" :key="indexn" :label="itemn.val">{{
itemn.text }}</el-radio-button>
</el-radio-group>
</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 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 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-input
v-model="tableFrom.keyword"
@keyup.enter.native="getList(1)"
placeholder="请输入商户名称关键字/联系电话"
class="selWidth"
>
<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>
@ -89,14 +40,8 @@
</el-form>
</div>
</div>
<el-table
v-loading="listLoading"
:data="tableData.data"
style="width: 100%"
size="small"
highlight-current-row
class="switchTable"
>
<el-table v-loading="listLoading" :data="tableData.data" style="width: 100%" size="small" highlight-current-row
class="switchTable">
<el-table-column prop="mer_intention_id" label="ID" min-width="60" />
<el-table-column prop="mer_name" label="商户名称" min-width="150" />
<el-table-column prop="category_name" label="商户分类" min-width="150" />
@ -107,13 +52,8 @@
<el-table-column prop="create_time" label="资质图片" min-width="150">
<template slot-scope="scope">
<div class="demo-image__preview">
<el-image
v-for="(item, index) in scope.row.images"
:key="index"
:src="item"
class="mr5"
:preview-src-list="[item]"
/>
<el-image v-for="(item, index) in scope.row.images" :key="index" :src="item" class="mr5"
:preview-src-list="[item]" />
</div>
</template>
</el-table-column>
@ -128,38 +68,17 @@
<el-table-column prop="mark" label="备注" min-width="150" />
<el-table-column label="操作" min-width="280" fixed="right" align="center">
<template slot-scope="scope">
<!-- <el-button
v-if="scope.row.status == 0"
type="text"
size="small"
@click="onchangeIsShow(scope.row.mer_intention_id)"
>审核</el-button
> -->
<el-button
type="text"
size="small"
@click="onEdit(scope.row.mer_intention_id)"
>备注</el-button
>
<el-button
type="text"
size="small"
@click="handleDelete(scope.row.mer_intention_id)"
>删除</el-button
>
<el-button v-if="scope.row.status == 0" type="text" size="small"
@click="onchangeIsShow(scope.row.mer_intention_id)">审核</el-button>
<el-button type="text" size="small" @click="onEdit(scope.row.mer_intention_id)">备注</el-button>
<el-button type="text" size="small" @click="handleDelete(scope.row.mer_intention_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"
/>
<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>
</div>
@ -212,7 +131,8 @@ export default {
keyword: "",
mer_intention_id: this.$route.query.id ? this.$route.query.id : "",
category_id: "",
type_id: ""
type_id: "",
type: 1,//
},
mer_id: this.$route.query.id ? this.$route.query.id : "",
autoUpdate: true,
@ -221,7 +141,7 @@ export default {
},
watch: {
mer_id(newName, oldName) {
this.getList("");
this.getList("");
}
},
mounted() {
@ -251,19 +171,19 @@ export default {
},
//
getMerCategory() {
getMerCateApi().then(res => {
this.merCateList = res.data
}).catch(res => {
this.$message.error(res.message)
})
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)
})
getStoreType() {
getstoreTypeApi().then(res => {
this.storeType = res.data
}).catch(res => {
this.$message.error(res.message)
})
},
//
getList(num) {

View File

@ -5,91 +5,35 @@
<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 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-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-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-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 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 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="店铺商圈:">
@ -107,43 +51,19 @@
:value="item.code"
/>
</el-select> -->
<el-cascader
v-model="tableFrom.area_id"
:options="form.options"
@change="handleChange1"
></el-cascader>
<el-cascader
v-model="tableFrom.street_id"
:options="form.options1"
@change="getList(1)"
></el-cascader>
<el-cascader v-model="tableFrom.area_id" :options="form.options" @change="handleChange1"></el-cascader>
<el-cascader v-model="tableFrom.street_id" :options="form.options1" @change="getList(1)"></el-cascader>
</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 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
>
<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 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="mer_name" label="商户类别" min-width="90">
@ -167,15 +87,8 @@
<el-table-column prop="mark" label="备注" min-width="200" />
<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)"
/>
<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="create_time" label="创建时间" min-width="150" />
@ -183,8 +96,8 @@
<template slot-scope="scope">
<span>{{
scope.row.is_margin == 1
? "未支付"
: scope.row.is_margin == 0
? "未支付"
: scope.row.is_margin == 0
? "无"
: "已支付"
}}</span>
@ -194,23 +107,11 @@
<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)"
/>
<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
label="操作"
min-width="280"
fixed="right"
align="center"
>
<el-table-column label="操作" min-width="280" fixed="right" align="center">
<template slot-scope="scope">
<!-- <router-link
v-if="tableFrom.status === '1'"
@ -218,40 +119,15 @@
>
<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
v-if="tableFrom.status === '1'"
type="text"
size="small"
@click="onPassword(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="handleTimes(scope.row.mer_id)"
>设置第三方平台商品复制次数</el-button
>
<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 v-if="tableFrom.status === '1'" type="text" size="small"
@click="onPassword(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="handleTimes(scope.row.mer_id)">设置第三方平台商品复制次数</el-button>
<!-- <el-button
v-if="tableFrom.status === '1'"
type="text"
@ -262,312 +138,104 @@
</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"
/>
<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>
<!-- 添加商户弹出层 -->
<el-dialog
:title="edit == 0 ? '新增商户信息' : '编辑商户信息'"
:visible.sync="popFormVisible"
@close="close('form')"
>
<el-dialog :title="edit == 0 ? '新增商户信息' : '编辑商户信息'" :visible.sync="popFormVisible" @close="close('form')">
<el-form :model="form" :rules="rules" ref="form">
<el-form-item
label="商户名称"
:label-width="formLabelWidth"
prop="mer_name"
>
<el-input
v-model="form.mer_name"
autocomplete="off"
placeholder="请输入商户名称"
></el-input>
<el-form-item label="商户名称" :label-width="formLabelWidth" prop="mer_name">
<el-input v-model="form.mer_name" autocomplete="off" placeholder="请输入商户名称"></el-input>
</el-form-item>
<el-form-item label="商户分类" :label-width="formLabelWidth">
<el-select v-model="form.category_id" placeholder="请选择商户分类">
<el-option
:label="item.label"
:value="item.value"
v-for="item in merCateList"
:key="item.value"
></el-option>
<el-option :label="item.label" :value="item.value" v-for="item in merCateList" :key="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item
label="店铺类型"
:label-width="formLabelWidth"
prop="type_id"
>
<el-form-item label="店铺类型" :label-width="formLabelWidth" prop="type_id">
<el-select v-model="form.type_id" placeholder="请选择店铺类型">
<el-option
:label="item.label"
:value="item.value"
v-for="item in storeType"
:key="item.value"
></el-option>
<el-option :label="item.label" :value="item.value" v-for="item in storeType" :key="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="商圈" :label-width="formLabelWidth">
<el-cascader
v-model="form.info"
:options="form.options"
@change="handleChange1"
></el-cascader>
<el-cascader
v-model="form.info1"
:options="form.options1"
@change="handleChange2"
></el-cascader>
<el-cascader
v-model="form.info2"
:options="form.options2"
@change="handleChange3($event, form.options2)"
></el-cascader>
<el-cascader v-model="form.info" :options="form.options" @change="handleChange1"></el-cascader>
<el-cascader v-model="form.info1" :options="form.options1" @change="handleChange2"></el-cascader>
<el-cascader v-model="form.info2" :options="form.options2"
@change="handleChange3($event, form.options2)"></el-cascader>
</el-form-item>
<el-form-item
label="商户账号"
:label-width="formLabelWidth"
prop="mer_account"
>
<el-input
v-model="form.mer_account"
autocomplete="off"
placeholder="请输入商户账号"
:disabled="!add"
></el-input>
<el-form-item label="商户账号" :label-width="formLabelWidth" prop="mer_account">
<el-input v-model="form.mer_account" autocomplete="off" placeholder="请输入商户账号" :disabled="!add"></el-input>
</el-form-item>
<el-form-item
label="登陆密码"
:label-width="formLabelWidth"
prop="mer_password"
>
<el-input
v-model="form.mer_password"
autocomplete="off"
placeholder="请输入登陆密码"
:disabled="!add"
></el-input>
<el-form-item label="登陆密码" :label-width="formLabelWidth" prop="mer_password">
<el-input v-model="form.mer_password" autocomplete="off" placeholder="请输入登陆密码" :disabled="!add"></el-input>
</el-form-item>
<div class="dis">
<el-form-item
label="保证金额度"
:label-width="formLabelWidth"
class="mer_phone"
>
<el-input
v-model="form.ot_margin"
style="width: 200px"
autocomplete="off"
disabled
placeholder="保证金额度"
></el-input>
<el-form-item label="保证金额度" :label-width="formLabelWidth" class="mer_phone">
<el-input v-model="form.ot_margin" style="width: 200px" autocomplete="off" disabled
placeholder="保证金额度"></el-input>
</el-form-item>
<el-form-item
label="已缴纳的保证金"
:label-width="formLabelWidth"
class="mer_phone"
>
<el-input
v-model="form.paid_margin"
style="width: 200px"
autocomplete="off"
disabled
placeholder="已缴纳的保证金"
></el-input>
<el-form-item label="已缴纳的保证金" :label-width="formLabelWidth" class="mer_phone">
<el-input v-model="form.paid_margin" style="width: 200px" autocomplete="off" disabled
placeholder="已缴纳的保证金"></el-input>
</el-form-item>
</div>
<div class="dis">
<el-form-item
label="需缴纳的保证金"
:label-width="formLabelWidth"
class="mer_phone"
>
<el-input
v-model="form.margin"
style="width: 200px"
autocomplete="off"
placeholder="请输入需缴纳的保证金"
></el-input>
<el-form-item label="需缴纳的保证金" :label-width="formLabelWidth" class="mer_phone">
<el-input v-model="form.margin" style="width: 200px" autocomplete="off" placeholder="请输入需缴纳的保证金"></el-input>
</el-form-item>
<el-form-item
label="自动扣除保证金比例"
:label-width="formLabelWidth"
prop="commission_rate"
>
<el-input
v-model="form.auto_margin_rate"
style="width: 200px"
autocomplete="off"
></el-input>
<el-form-item label="自动扣除保证金比例" :label-width="formLabelWidth" prop="commission_rate">
<el-input v-model="form.auto_margin_rate" style="width: 200px" autocomplete="off"></el-input>
</el-form-item>
</div>
<el-form-item
label="商户姓名"
:label-width="formLabelWidth"
prop="real_name"
>
<el-input
v-model="form.real_name"
autocomplete="off"
placeholder="请输入商户姓名"
></el-input>
<el-form-item label="商户姓名" :label-width="formLabelWidth" prop="real_name">
<el-input v-model="form.real_name" autocomplete="off" placeholder="请输入商户姓名"></el-input>
</el-form-item>
<div class="dis">
<el-form-item
label="商户手机号"
:label-width="formLabelWidth"
prop="mer_phone"
class="mer_phone"
>
<el-input
v-model="form.mer_phone"
autocomplete="off"
placeholder="请输入商户手机号"
></el-input>
<el-form-item label="商户手机号" :label-width="formLabelWidth" prop="mer_phone" class="mer_phone">
<el-input v-model="form.mer_phone" autocomplete="off" placeholder="请输入商户手机号"></el-input>
</el-form-item>
<el-form-item
label="手续费(%)"
:label-width="formLabelWidth"
prop="commission_rate"
>
<el-input-number
v-model="form.commission_rate"
@change="handleChange"
:min="0"
:max="10"
label="描述文字"
aria-placeholder="请输入手续费"
></el-input-number>
<el-form-item label="手续费(%)" :label-width="formLabelWidth" prop="commission_rate">
<el-input-number v-model="form.commission_rate" @change="handleChange" :min="0" :max="10" label="描述文字"
aria-placeholder="请输入手续费"></el-input-number>
</el-form-item>
</div>
<el-form-item
label="商户关键字"
:label-width="formLabelWidth"
prop="mer_keyword"
>
<el-input
v-model="form.mer_keyword"
autocomplete="off"
placeholder="请输入商户关键字"
></el-input>
<el-form-item label="商户关键字" :label-width="formLabelWidth" prop="mer_keyword">
<el-input v-model="form.mer_keyword" autocomplete="off" placeholder="请输入商户关键字"></el-input>
</el-form-item>
<el-form-item
label="商户地址"
:label-width="formLabelWidth"
prop="mer_address"
>
<el-input
v-model="form.mer_address"
autocomplete="off"
placeholder="请输入商户地址"
></el-input>
<el-form-item label="商户地址" :label-width="formLabelWidth" prop="mer_address">
<el-input v-model="form.mer_address" autocomplete="off" placeholder="请输入商户地址"></el-input>
</el-form-item>
<el-form-item
label="微信分账商户号"
:label-width="formLabelWidth"
prop="sub_mchid"
>
<el-input
v-model="form.sub_mchid"
autocomplete="off"
placeholder="请输入微信分账商户号"
></el-input>
<el-form-item label="微信分账商户号" :label-width="formLabelWidth" prop="sub_mchid">
<el-input v-model="form.sub_mchid" autocomplete="off" placeholder="请输入微信分账商户号"></el-input>
</el-form-item>
<el-form-item label="备注" :label-width="formLabelWidth" prop="mark">
<el-input
type="textarea"
placeholder="请输入备注"
maxlength="130"
v-model="form.mark"
autocomplete="off"
></el-input>
<el-input type="textarea" placeholder="请输入备注" maxlength="130" v-model="form.mark" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="排序" :label-width="formLabelWidth" prop="sort">
<el-input-number
v-model="form.sort"
@change="handleChange"
:min="0"
:max="10"
></el-input-number>
<el-input-number v-model="form.sort" @change="handleChange" :min="0" :max="10"></el-input-number>
</el-form-item>
<div class="switch_btn">
<el-form-item
class="mini_btn"
label="直播间审核"
prop="value1"
:label-width="formLabelWidth"
>
<el-switch
v-model="form.value1"
active-color="#3390ff"
active-text="开"
inactive-text="关"
inactive-color="#DCDFE6"
></el-switch>
<el-form-item class="mini_btn" label="直播间审核" prop="value1" :label-width="formLabelWidth">
<el-switch v-model="form.value1" active-color="#3390ff" active-text="开" inactive-text=""
inactive-color="#DCDFE6"></el-switch>
</el-form-item>
<el-form-item
class="mini_btn"
label="产品审核"
prop="value2"
:label-width="formLabelWidth"
>
<el-switch
v-model="form.value2"
active-color="#3390ff"
active-text="开"
inactive-text="关"
inactive-color="#DCDFE6"
></el-switch>
<el-form-item class="mini_btn" label="产品审核" prop="value2" :label-width="formLabelWidth">
<el-switch v-model="form.value2" active-color="#3390ff" active-text="开" inactive-text=""
inactive-color="#DCDFE6"></el-switch>
</el-form-item>
<el-form-item
class="mini_btn"
label="直播间商品审核"
prop="value3"
:label-width="formLabelWidth"
>
<el-switch
v-model="form.value3"
active-color="#3390ff"
active-text="开"
inactive-text="关"
inactive-color="#DCDFE6"
></el-switch>
<el-form-item class="mini_btn" label="直播间商品审核" prop="value3" :label-width="formLabelWidth">
<el-switch v-model="form.value3" active-color="#3390ff" active-text="开" inactive-text=""
inactive-color="#DCDFE6"></el-switch>
</el-form-item>
<el-form-item
class="mini_btn"
label="是否推荐"
prop="value4"
:label-width="formLabelWidth"
>
<el-switch
v-model="form.value4"
active-color="#3390ff"
active-text="开"
inactive-text="关"
inactive-color="#DCDFE6"
></el-switch>
<el-form-item class="mini_btn" label="是否推荐" prop="value4" :label-width="formLabelWidth">
<el-switch v-model="form.value4" active-color="#3390ff" active-text="开" inactive-text=""
inactive-color="#DCDFE6"></el-switch>
</el-form-item>
<el-form-item
class="mini_btn"
label="是否自营"
prop="value5"
:label-width="formLabelWidth"
>
<el-switch
v-model="form.value5"
active-color="#3390ff"
active-text="开"
inactive-text="关"
inactive-color="#DCDFE6"
></el-switch>
<el-form-item class="mini_btn" label="是否自营" prop="value5" :label-width="formLabelWidth">
<el-switch v-model="form.value5" active-color="#3390ff" active-text="开" inactive-text=""
inactive-color="#DCDFE6"></el-switch>
</el-form-item>
</div>
</el-form>
@ -616,7 +284,7 @@ import SettingMer from "@/libs/settingMer";
import Cookies from "js-cookie";
export default {
name: "MerchantList",
data () {
data() {
return {
add: true,
//
@ -720,24 +388,24 @@ export default {
};
},
created () {
created() {
this.getshopList();
},
beforeMount () { },
mounted () {
beforeMount() { },
mounted() {
this.getHeadNum();
this.getMerCategory();
this.getStoreType();
this.getList("");
},
methods: {
close (formName) {
close(formName) {
this.resetForm(formName);
},
handleChange (value) {
handleChange(value) {
// console.log(value);
},
async handleChange1 (value) {
async handleChange1(value) {
console.log(value);
const data = { area_code: value[0] };
const promise = await getShopAddressApi_two(data);
@ -749,7 +417,7 @@ export default {
}
console.log(this.form.info1);
},
async handleChange2 (value, ID) {
async handleChange2(value, ID) {
console.log(value, ID);
if (value !== value) {
this.form.info2 = 0;
@ -762,7 +430,7 @@ export default {
}
this.form.options2 = promise.data;
},
handleChange3 (e, val) {
handleChange3(e, val) {
// let id=''
// for(let item of val){
// if(item.code==e){
@ -788,17 +456,17 @@ export default {
// this.form.street_id = this.form.info1[0]
// this.form.village_id = id
},
open4 (err) {
open4(err) {
this.$message.error(err);
},
open2 (sus) {
open2(sus) {
this.$message({
message: sus,
type: "success"
});
},
//
submitForm (formName) {
submitForm(formName) {
console.log("1------------------1");
this.$refs[formName].validate(async valid => {
if (valid) {
@ -872,20 +540,20 @@ export default {
});
},
//
resetForm (formName) {
resetForm(formName) {
this.$nextTick(() => {
this.$refs[formName].resetFields();
});
// this.$refs[formName].resetFields();
},
//
handleChange (value) {
handleChange(value) {
console.log(value);
},
//
getShopClassify () { },
getShopClassify() { },
//
async getshopList () {
async getshopList() {
const data = { city_code: "510500" };
const promise = await getShopAddressApi(data).then(
res => {
@ -900,7 +568,7 @@ export default {
}
);
},
onLogo (id) {
onLogo(id) {
merchantLoginApi(id)
.then(res => {
Cookies.set("merchantToken", res.data.token);
@ -911,21 +579,21 @@ export default {
});
},
//
selectChange (tab) {
selectChange(tab) {
this.tableFrom.date = tab;
this.timeVal = [];
this.tableFrom.page = 1;
this.getList("");
},
//
onchangeTime (e) {
onchangeTime(e) {
this.timeVal = e;
this.tableFrom.date = this.timeVal ? this.timeVal.join("-") : "";
this.tableFrom.page = 1;
this.getList("");
},
//
getHeadNum () {
getHeadNum() {
merchantCountApi()
.then(res => {
this.headeNum[0]["count"] = res.data.valid;
@ -934,7 +602,7 @@ export default {
.catch(res => { });
},
//
getMerCategory () {
getMerCategory() {
getMerCateApi()
.then(res => {
this.merCateList = res.data;
@ -943,7 +611,7 @@ export default {
this.$message.error(res.message);
});
},
getStoreType () {
getStoreType() {
getstoreTypeApi()
.then(res => {
this.storeType = res.data;
@ -953,7 +621,7 @@ export default {
});
},
//
getList (num) {
getList(num) {
console.log(this.tableFrom);
this.listLoading = true;
this.tableFrom.page = num ? num : this.tableFrom.page;
@ -970,16 +638,16 @@ export default {
this.$message.error(res.message);
});
},
pageChange (page) {
pageChange(page) {
this.tableFrom.page = page;
this.getList("");
},
handleSizeChange (val) {
handleSizeChange(val) {
this.tableFrom.limit = val;
this.getList(1);
},
//
onchangeIsShow (row) {
onchangeIsShow(row) {
const title = row.is_best === 0 ? "是否开启推荐商户" : "是否关闭推荐商户";
this.$modalSure(title).then(() => {
merchantStatuseApi(row.mer_id, row.is_best === 1 ? 0 : 1)
@ -993,7 +661,7 @@ export default {
});
},
//
onchangeIsClose (row) {
onchangeIsClose(row) {
merchantIsCloseApi(row.mer_id, row.status === 1 ? 0 : 1)
.then(({ message }) => {
this.$message.success(message);
@ -1004,7 +672,7 @@ export default {
});
},
//
onAdd () {
onAdd() {
this.add = true;
this.edit = 0;
this.popFormVisible = true;
@ -1021,7 +689,7 @@ export default {
// this.$modalForm(merchantCreateApi()).then(() => this.getList(""));
},
//
async onEdit (id) {
async onEdit(id) {
//
this.popFormVisible = true; //
this.add = false;
@ -1050,7 +718,7 @@ export default {
let val = [];
val.push(res.geo_address.area_id);
this.handleChange1(val);
this.form.info1 = res.geo_address.street_id; //code
this.form.info1 = res.geo_address.street_id ? Number(res.geo_address.street_id) : ''; //code
this.form.info2 = res.geo_address.village_id; //id
let vala = [];
let ID = res.geo_address.street_id;
@ -1091,7 +759,7 @@ export default {
// this.$modalForm(merchantUpdateApi(id)).then(() => this.getList(""));
},
//
handleDelete (id) {
handleDelete(id) {
this.$modalSure(
"该商户下有相关数据信息,删除后不可恢复,您是否确定删除"
).then(() => {
@ -1107,16 +775,16 @@ export default {
});
},
//
onDeduct (id) {
onDeduct(id) {
this.$modalForm(marginDeductionForm(id)).then(() => this.getList(""));
},
//
handleTimes (id) {
handleTimes(id) {
this.$modalForm(changeCopyApi(id)).then(() => this.getList(""));
},
//
onPassword (id) {
onPassword(id) {
this.$modalForm(merchantPasswordApi(id));
}
}
@ -1128,16 +796,20 @@ export default {
margin-top: 0 !important;
width: 840px;
}
.mer_phone {
width: 400px;
// float: left;
}
.dis {
display: flex;
}
.switch_btn {
display: flex;
flex-wrap: wrap;
.mini_btn {
width: 390px !important;
}

View File

@ -0,0 +1,248 @@
<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="width: 100%">
<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="状态:">
<el-radio-group v-model="tableFrom.status" size="small" @change="statusChange(tableFrom.status)">
<el-radio-button v-for="(itemn, indexn) in statusList.fromTxt" :key="indexn" :label="itemn.val">{{
itemn.text }}</el-radio-button>
</el-radio-group>
</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-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>
</div>
</div>
<el-table v-loading="listLoading" :data="tableData.data" style="width: 100%" size="small" highlight-current-row
class="switchTable">
<el-table-column prop="mer_intention_id" label="ID" min-width="60" />
<el-table-column prop="company_name" label="公司名称" min-width="150" />
<el-table-column prop="mer_name" label="商户/店铺名称" min-width="150" />
<el-table-column prop="category_name" label="商户分类" min-width="150" />
<el-table-column prop="type_name" label="店铺类型" min-width="150" />
<el-table-column prop="address" label="详细地址" min-width="150" />
<el-table-column prop="name" label="商户姓名" min-width="100" />
<el-table-column prop="phone" label="联系方式" min-width="100" />
<el-table-column prop="create_time" label="申请时间" min-width="150" />
<el-table-column prop="social_credit_code" label="社会代码" min-width="150" />
<el-table-column prop="bank_code" label="银行账号" min-width="150" />
<el-table-column prop="bank_username" label="开户银行" min-width="150" />
<el-table-column prop="bank_opening" label="开户银行网点" min-width="150" />
<el-table-column label="开户凭证" min-width="150">
<template slot-scope="scope">
<div class="demo-image__preview">
<el-image v-for="(item, index) in scope.row.images" :key="index" :src="item" class="mr5"
:preview-src-list="[item]" />
</div>
</template>
</el-table-column>
<el-table-column label="状态" min-width="150">
<template slot-scope="scope">
<el-tag v-if="scope.row.status == 1" type="success">通过</el-tag>
<el-tag v-if="scope.row.status == 0" type="info">未处理</el-tag>
<el-tag v-if="scope.row.status == 2" type="warning">未通过</el-tag>
<div v-if="scope.row.status == 2">原因{{ scope.row.fail_msg }}</div>
</template>
</el-table-column>
<el-table-column prop="mark" label="备注" min-width="150" />
<el-table-column label="操作" min-width="280" fixed="right" align="center">
<template slot-scope="scope">
<el-button v-if="scope.row.status == 0" type="text" size="small"
@click="onchangeIsShow(scope.row.mer_intention_id)">审核</el-button>
<el-button type="text" size="small" @click="onEdit(scope.row.mer_intention_id)">备注</el-button>
<el-button type="text" size="small" @click="handleDelete(scope.row.mer_intention_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>
</div>
</template>
<script>
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEBCRMEB
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import {
intentionLstApi,
auditApi,
intentionDelte,
intentionStatusApi,
getstoreTypeApi,
getMerCateApi
} from "@/api/merchant";
import { categoryListApi } from "@/api/product";
import { fromList, statusList } from "@/libs/constants.js";
import { roterPre } from "@/settings";
export default {
name: "MerchantApplication",
data() {
return {
props: {
emitPath: false
},
fromList: fromList,
statusList: statusList, //
roterPre: roterPre,
isChecked: false,
listLoading: true,
merCateList: [],
storeType: [],
tableData: {
data: [],
total: 0,
},
tableFrom: {
page: 1,
limit: 20,
date: "",
status: this.$route.query.status ? this.$route.query.status : "",
keyword: "",
mer_intention_id: this.$route.query.id ? this.$route.query.id : "",
category_id: "",
type_id: "",
mer_type_id: '',
type: 2,//
},
mer_id: this.$route.query.id ? this.$route.query.id : "",
autoUpdate: true,
timeVal: [],
};
},
watch: {
mer_id(newName, oldName) {
this.getList("");
}
},
mounted() {
this.getMerCategory();
this.getStoreType();
this.getList("");
},
methods: {
//
selectChange(tab) {
this.tableFrom.date = tab;
this.timeVal = [];
this.tableFrom.page = 1;
this.getList("");
},
statusChange(tab) {
this.tableFrom.status = tab;
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("");
},
//
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;
intentionLstApi(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(id) {
this.$modalForm(intentionStatusApi(id)).then(() => this.getList(""));
},
//
//
onEdit(id) {
this.$modalForm(auditApi(id)).then(() => this.getList(""));
},
//
handleDelete(id) {
this.$deleteSure().then(() => {
intentionDelte(id)
.then(({ message }) => {
this.$message.success(message);
this.getList("");
})
.catch(({ message }) => {
this.$message.error(message);
});
});
},
},
};
</script>
<style lang="scss" scoped>
/deep/ table .el-image {
display: inline-block !important;
}
</style>