This commit is contained in:
faiz 2024-04-05 11:50:20 +08:00
parent 51371680d2
commit 39000c124b
8 changed files with 183 additions and 52 deletions

View File

@ -164,6 +164,12 @@ export function transferDetailApi(id) {
export function transferReviewApi(id, data) { export function transferReviewApi(id, data) {
return request.post(`financial/status/${id}`, data) return request.post(`financial/status/${id}`, data)
} }
/**
* @description 申请转账 -- 批量审核
*/
export function transferReviewBatchApi(data) {
return request.post(`financial/status_batch`, data)
}
/** /**
* @description 申请转账 -- 备注 * @description 申请转账 -- 备注
*/ */

View File

@ -34,7 +34,7 @@
</el-form-item> </el-form-item>
<el-form-item prop="mer_lock_time" label="商户余额冻结期:"> <el-form-item prop="mer_lock_time" label="商户余额冻结期:">
<el-input-number v-model="settingForm.mer_lock_time" :step="1" :min="0" class="selWidth"></el-input-number> <el-input-number v-model="settingForm.mer_lock_time" :step="1" :min="0" class="selWidth"></el-input-number>
<span>单位 冻结期仅针对线下转账模式指用户支付成功后多少天商户余额可解冻设置为0即无冻结期</span> <span>单位 冻结期确认收货后多少天商户余额可解冻设置为0即无冻结期</span>
</el-form-item> </el-form-item>
<el-form-item prop="open_wx_combine" required> <el-form-item prop="open_wx_combine" required>
<span slot="label"> <span slot="label">

View File

@ -108,6 +108,7 @@
<el-card> <el-card>
<div class="mb20"> <div class="mb20">
<el-button size="small" type="primary" @click="exports">导出列表</el-button> <el-button size="small" type="primary" @click="exports">导出列表</el-button>
<el-button size="small" :disabled="multipleSelection.length==0" @click="batch">批量审核</el-button>
</div> </div>
<el-table <el-table
v-loading="listLoading" v-loading="listLoading"
@ -115,7 +116,9 @@
:data="tableData.data" :data="tableData.data"
size="small" size="small"
class="table" class="table"
@selection-change="handleSelectionChange"
> >
<el-table-column key="2" :selectable="selectable" type="selection" width="55" />
<el-table-column label="序号" min-width="60"> <el-table-column label="序号" min-width="60">
<template scope="scope"> <template scope="scope">
<span>{{ scope.$index+(tableFrom.page - 1) * tableFrom.limit + 1 }}</span> <span>{{ scope.$index+(tableFrom.page - 1) * tableFrom.limit + 1 }}</span>
@ -180,7 +183,7 @@
<el-dialog :title="transferData.status == 0 ? '审核' : '转账信息'" :visible.sync="dialogVisible" width="700px" v-if="dialogVisible"> <el-dialog :title="transferData.status == 0 ? '审核' : '转账信息'" :visible.sync="dialogVisible" width="700px" v-if="dialogVisible">
<div class="box-container"> <div class="box-container">
<el-form ref="ruleForm" size="small"> <el-form ref="ruleForm" size="small">
<div class="section"> <div class="section" v-if="isShow">
<div class="title">商户信息</div> <div class="title">商户信息</div>
<div class="list"> <div class="list">
<div class="item"><label class="name">商户名称</label>{{ transferData.merchant && transferData.merchant.mer_name }}</div> <div class="item"><label class="name">商户名称</label>{{ transferData.merchant && transferData.merchant.mer_name }}</div>
@ -194,17 +197,17 @@
</div> </div>
</div> </div>
<div class="section"> <div class="section">
<div class="title">收款信息</div> <div class="title" v-if="isShow">收款信息</div>
<div class="list"> <div class="list">
<div class="item" v-if="transferData.financial_type == 2"><label class="name">微信号</label>{{ transferData.financial_account.wechat }}</div> <div class="item" v-if="transferData.financial_type == 2"><label class="name">微信号</label>{{ transferData.financial_account.wechat }}</div>
<div class="item image" v-if="transferData.financial_type == 2"><label class="name">微信收款二维码</label><img style="max-width: 150px; height: 80px;" @click="getPicture(transferData.financial_account.wechat_code);return false;" :src="transferData.financial_account.wechat_code"/></div> <div class="item image" v-if="transferData.financial_type == 2"><label class="name">微信收款二维码</label><img style="max-width: 150px; height: 80px;" @click="getPicture(transferData.financial_account.wechat_code);return false;" :src="transferData.financial_account.wechat_code"/></div>
<div class="item" v-if="transferData.financial_type == 3"><label class="name">支付宝账号</label>{{ transferData.financial_account.alipay }}</div> <div class="item" v-if="transferData.financial_type == 3"><label class="name">支付宝账号</label>{{ transferData.financial_account.alipay }}</div>
<div class="item image" v-if="transferData.financial_type == 3"><label class="name">支付宝收款二维码</label><img style="max-width: 150px; height: 80px;" @click="getPicture(transferData.financial_account.alipay_code);return false;" :src="transferData.financial_account.alipay_code"/></div> <div class="item image" v-if="transferData.financial_type == 3"><label class="name">支付宝收款二维码</label><img style="max-width: 150px; height: 80px;" @click="getPicture(transferData.financial_account.alipay_code);return false;" :src="transferData.financial_account.alipay_code"/></div>
<div class="item"><label class="name">本次申请转账金额</label><span class="font-red">{{ transferData.extract_money }}</span></div> <div class="item" v-if="isShow"><label class="name">本次申请转账金额</label><span class="font-red">{{ transferData.extract_money }}</span></div>
<div class="item" v-if="transferData.status != 0"><label class="name">审核状态</label>{{ transferData.status == 0 ? '待审核' : transferData.status == 1 ? '已审核' : '审核失败' }}</div> <div class="item" v-if="transferData.status != 0&&isShow"><label class="name">审核状态</label>{{ transferData.status == 0 ? '待审核' : transferData.status == 1 ? '已审核' : '审核失败' }}</div>
<div class="item" v-if="transferData.status == 1"><label class="name">审核时间</label>{{ transferData.status_time }}</div> <div class="item" v-if="transferData.status == 1"><label class="name">审核时间</label>{{ transferData.status_time }}</div>
<div class="item" v-if="transferData.status == -1"><label class="name">审核未通过原因</label>{{ transferData.refusal }}</div> <div class="item" v-if="transferData.status == -1&&isShow"><label class="name">审核未通过原因</label>{{ transferData.refusal }}</div>
<el-form-item label="审核状态:" required v-if="transferData.status == 0" class="item"> <el-form-item label="审核状态:" required v-if="transferData.status == 0 || !isShow" class="item">
<el-radio-group v-model="formValidate.status"> <el-radio-group v-model="formValidate.status">
<el-radio :label="1" class="radio">通过</el-radio> <el-radio :label="1" class="radio">通过</el-radio>
<el-radio :label="-1">拒绝</el-radio> <el-radio :label="-1">拒绝</el-radio>
@ -232,7 +235,8 @@
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" @click="dialogVisible=false">取消</el-button> <el-button size="small" @click="dialogVisible=false">取消</el-button>
<el-button v-if="transferData.status == 0" type="primary" size="small" @click="transferReview(transferData.financial_id)">提交</el-button> <el-button v-if="transferData.status == 0 && isShow" type="primary" size="small" @click="transferReview(transferData.financial_id)">提交</el-button>
<el-button v-if="!isShow" type="primary" size="small" @click="transferReviewBatchApi()">提交</el-button>
<el-button v-if="transferData.status == 1" type="primary" size="small" @click="onSubmit(transferData.financial_id)">提交</el-button> <el-button v-if="transferData.status == 1" type="primary" size="small" @click="onSubmit(transferData.financial_id)">提交</el-button>
</span> </span>
</el-dialog> </el-dialog>
@ -255,7 +259,7 @@
// | Author: CRMEB Team <admin@crmeb.com> // | Author: CRMEB Team <admin@crmeb.com>
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
import { merSelectApi } from '@/api/product' import { merSelectApi } from '@/api/product'
import { transferRecordApi, transferDetailApi, transferReviewApi, transferEditApi, transferMarkApi, transferHeaderDataApi, transferRecordsExportApi } from '@/api/accounts' import { transferReviewBatchApi,transferRecordApi, transferDetailApi, transferReviewApi, transferEditApi, transferMarkApi, transferHeaderDataApi, transferRecordsExportApi } from '@/api/accounts'
import cardsData from "@/components/cards/index"; import cardsData from "@/components/cards/index";
import createWorkBook from '@/utils/newToExcel.js'; import createWorkBook from '@/utils/newToExcel.js';
import fileList from '@/components/exportFile/fileList' import fileList from '@/components/exportFile/fileList'
@ -276,6 +280,7 @@ export default {
{ label: "未到账", value: 0 } { label: "未到账", value: 0 }
], ],
listLoading: true, listLoading: true,
isShow:false,
cardLists: [], cardLists: [],
voucher_image: [], voucher_image: [],
formValidate: { formValidate: {
@ -309,6 +314,8 @@ export default {
] ]
}, },
merSelect: [], merSelect: [],
multipleSelection: [],
OffId: [],
tableFromLog: { tableFromLog: {
page: 1, page: 1,
limit: 20 limit: 20
@ -339,6 +346,40 @@ export default {
this.$refs.searchForm.resetFields() this.$refs.searchForm.resetFields()
this.getList(1) this.getList(1)
}, },
selectable(row, index){
return !row.status
},
handleSelectionChange(val) {
this.multipleSelection = val
const data = []
this.multipleSelection.map((item) => {
data.push(item.financial_id)
})
this.OffId = data
console.log(this.OffId);
},
//
batch() {
if(this.multipleSelection.length === 0) return this.$message.warning('请先选择记录')
this.isShow = false
this.dialogVisible = true
},
transferReviewBatchApi(){
let parmas = {
status: this.formValidate.status,
refusal: this.formValidate.refusal,
ids:this.OffId
}
transferReviewBatchApi(parmas).then(res => {
this.listLoading = false;
this.$message.success(res.message);
this.dialogVisible = false;
this.getList(1);
}).catch(res => {
this.listLoading = false;
this.$message.error(res.message)
})
},
// //
getMerSelect() { getMerSelect() {
merSelectApi() merSelectApi()
@ -363,6 +404,7 @@ export default {
if(num) this.voucher_image = [] if(num) this.voucher_image = []
transferDetailApi(id).then(res => { transferDetailApi(id).then(res => {
this.listLoading = false; this.listLoading = false;
this.isShow = true
this.dialogVisible = true; this.dialogVisible = true;
this.transferData = res.data this.transferData = res.data
this.formValidate.status = res.data.status this.formValidate.status = res.data.status
@ -384,6 +426,7 @@ export default {
}, },
// //
transferReview(id){ transferReview(id){
let parmas = { let parmas = {
status: this.formValidate.status, status: this.formValidate.status,
refusal: this.formValidate.refusal refusal: this.formValidate.refusal

View File

@ -162,6 +162,15 @@ export default {
this.loading = false; this.loading = false;
this.drawer = true; this.drawer = true;
this.merData = res.data; this.merData = res.data;
let financial_bank = {
name:'',
bank:'',
bank_code:'',
}
if(!res.data.financial_bank){
this.merData.financial_bank = financial_bank;
}
console.log(this.merData);
if(!this.isEdit)this.$refs.merInfo.onOperateLog(this.merId); if(!this.isEdit)this.$refs.merInfo.onOperateLog(this.merId);
}) })
.catch((res) => { .catch((res) => {

View File

@ -130,6 +130,41 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<div class="title">银行卡信息</div>
<el-row v-if="merData.financial_bank">
<el-col :span="12">
<el-form-item label="姓名:" prop="financial_bank.name">
<el-input
size="small"
v-model="merData.financial_bank.name"
placeholder="请输入姓名"
class="selWidth"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="开户银行:" prop="financial_bank.bank">
<el-input
size="small"
v-model="merData.financial_bank.bank"
placeholder="请输入开户银行"
class="selWidth"
/>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="merData.financial_bank">
<el-col :span="12">
<el-form-item label="开户银行卡号:" prop="financial_bank.bank_code">
<el-input
size="small"
v-model="merData.financial_bank.bank_code"
placeholder="请输入开户银行卡号"
class="selWidth"
/>
</el-form-item>
</el-col>
</el-row>
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="经营信息" name="operate"> <el-tab-pane label="经营信息" name="operate">

View File

@ -15,6 +15,14 @@
<div>商户类型</div> <div>商户类型</div>
<div class="value">{{merData.is_trader == 1 ? "自营" : "非自营"}}</div> <div class="value">{{merData.is_trader == 1 ? "自营" : "非自营"}}</div>
</li> </li>
<li class="item">
<div>是否为惠美乡村:</div>
<div class="value">{{merData.is_huimei == 1 ? "是" : "否"}}</div>
</li>
<li class="item">
<div>是否为军人:</div>
<div class="value">{{merData.is_soldier == 1 ? "是" : "否"}}</div>
</li>
<li class="item"> <li class="item">
<div>商户分类</div> <div>商户分类</div>
<div v-if="merData.merchantCategory" class="value"> <div v-if="merData.merchantCategory" class="value">
@ -46,6 +54,10 @@
<div>备注</div> <div>备注</div>
<div class="value">{{merData.mark}}</div> <div class="value">{{merData.mark}}</div>
</li> </li>
<li class="item" style="align-content: center;">
<div>营业执照</div>
<el-image style="width: 60px;height: 60px;" :src="merData.ext.company_image[0]" :preview-src-list="merData.ext.company_image" />
</li>
</ul> </ul>
</div> </div>
</el-tab-pane> </el-tab-pane>
@ -72,6 +84,18 @@
{{merData.is_margin == 0 ? '无' : merData.ot_margin}} {{merData.is_margin == 0 ? '无' : merData.ot_margin}}
</div> </div>
</li> </li>
<li class="item">
<div>上架费</div>
<div class="value">
{{merData.is_goods == 0 ? '无' : merData.goods_cost}}
</div>
</li>
<li class="item">
<div>产品服务费</div>
<div class="value">
{{merData.is_service == 0 ? '无' : merData.service_cost}}
</div>
</li>
<li v-if="merData.is_margin != 0" class="item"> <li v-if="merData.is_margin != 0" class="item">
<div>保证金支付状态</div> <div>保证金支付状态</div>
<div class="value">{{merData.is_margin == 1 ? '待缴' : merData.is_margin == 0 ? '无' : '已缴' }} <div class="value">{{merData.is_margin == 1 ? '待缴' : merData.is_margin == 0 ? '无' : '已缴' }}

View File

@ -135,6 +135,11 @@
<span>{{ scope.row.merchant ? scope.row.merchant.mer_name : '' }}</span> <span>{{ scope.row.merchant ? scope.row.merchant.mer_name : '' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="是否惠美乡村产品" min-width="100">
<template slot-scope="scope">
<span>{{ scope.row.is_soldier ? '是' : '否' }}</span>
</template>
</el-table-column>
<el-table-column prop="price" label="商品售价" min-width="80" /> <el-table-column prop="price" label="商品售价" min-width="80" />
<el-table-column prop="sales" label="销量" min-width="70" /> <el-table-column prop="sales" label="销量" min-width="70" />
<el-table-column prop="stock" label="库存" min-width="70" /> <el-table-column prop="stock" label="库存" min-width="70" />
@ -703,8 +708,8 @@ export default {
}, },
batch() { batch() {
if(this.multipleSelection.length === 0) return this.$message.warning('请先选择商品') if(this.multipleSelection.length === 0) return this.$message.warning('请先选择商品')
this.$refs.infoFrom.dialogVisible = true
this.isShow = false this.isShow = false
this.$refs.infoFrom.dialogVisible = true
}, },
handleSelectionChange(val) { handleSelectionChange(val) {
this.multipleSelection = val this.multipleSelection = val

View File

@ -4,7 +4,8 @@
title="商品审核" title="商品审核"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
:append-to-body='isAppend' :append-to-body='isAppend'
width="860px" width="1260px"
top="60px"
:before-close="handleClose" :before-close="handleClose"
class="projectInfo" class="projectInfo"
> >
@ -22,27 +23,27 @@
/> />
</div> </div>
</span> </span>
<span class="sp">联系人电话{{ projectData.unit_name }}</span> <span class="sp">联系人电话{{ projectData.unit_name }}</span>
</div> </div>
<el-tabs v-if="projectData && isShow" v-model="activeNames" v-loading="loading">
<el-tab-pane label="商品信息" name="first">
<div class="acea-row"> <div class="acea-row">
<span class="sp">商品id{{ projectData.product_id }}</span>
<span class="sp">商品名称{{ projectData.store_name }}</span> <span class="sp">商品名称{{ projectData.store_name }}</span>
<span class="sp">平台分类{{ projectData.storeCategory?projectData.storeCategory.cate_name:'' }}</span> <span class="sp">平台分类{{ projectData.storeCategory?projectData.storeCategory.cate_name:'' }}</span>
<span class="sp">品牌{{ projectData.brand?projectData.brand.brand_name:'其他' }}</span> <span class="sp">品牌{{ projectData.brand?projectData.brand.brand_name:'其他' }}</span>
<span class="sp">商品关键字{{ projectData.keyword }}</span> <span class="sp">商品关键字{{ projectData.keyword }}</span>
<span class="sp">商品单位{{ projectData.unit_name }}</span> <span class="sp">商品单位{{ projectData.unit_name }}</span>
<span class="sp" v-if="projectData.temp && projectData.temp.name">运费模板{{ projectData.temp?projectData.temp.name:'' }}</span> <span class="sp">
<span class="sp100" v-if="projectData.temp && projectData.temp.info">运费说明{{ projectData.temp?projectData.temp.info:'' }}</span>
<span class="sp100">
商品分类 商品分类
<template v-if="projectData.merCateId"> <template v-if="projectData.merCateId">
<span v-for="(item, index) in projectData.merCateId" :key="index" class="mr10">{{ item.category?item.category.cate_name:'' }}</span> <span v-for="(item, index) in projectData.merCateId" :key="index" class="mr10">{{ item.category?item.category.cate_name:'' }}</span>
</template> </template>
<span v-else>-</span> <span v-else>-</span>
</span> </span>
<span class="sp100">商品简介{{ projectData.store_info }}</span> <span class="sp">商品简介{{ projectData.store_info }}</span>
<span class="sp">商品备注{{ projectData.remark }}</span>
<span class="sp">是否惠美乡村{{ projectData.is_huimei?'是':'否' }}</span>
<span class="sp100"> <span class="sp100">
商品封面图 商品封面图
<div class="demo-image__preview"> <div class="demo-image__preview">
@ -53,6 +54,13 @@
/> />
</div> </div>
</span> </span>
</div>
<el-tabs v-if="projectData && isShow" v-model="activeNames" v-loading="loading">
<el-tab-pane label="商品信息" name="first">
<div class="acea-row">
<span class="sp" v-if="projectData.temp && projectData.temp.name">运费模板{{ projectData.temp?projectData.temp.name:'' }}</span>
<span class="sp100" v-if="projectData.temp && projectData.temp.info">运费说明{{ projectData.temp?projectData.temp.info:'' }}</span>
<span v-if="projectData.video_link" class="sp100"> <span v-if="projectData.video_link" class="sp100">
主图视频 主图视频
<video style="width:40%;height: 180px;border-radius: 10px;" :src="projectData.video_link" controls="controls"> <video style="width:40%;height: 180px;border-radius: 10px;" :src="projectData.video_link" controls="controls">
@ -559,6 +567,7 @@ export default {
}, tit); }, tit);
}, },
onSubmit() { onSubmit() {
console.log(this.isShow);
this.isShow ? this.ruleForm.id = this.proId : this.ruleForm.id = this.ids this.isShow ? this.ruleForm.id = this.proId : this.ruleForm.id = this.ids
productStatusApi(this.ruleForm).then(res => { productStatusApi(this.ruleForm).then(res => {
this.$message.success(res.message) this.$message.success(res.message)