<template>
|
<GlobalWindow
|
:title="title"
|
:visible.sync="visible"
|
:withFooter="false"
|
width="calc(100% - 250px)"
|
:confirm-working="isWorking"
|
@close="close"
|
@confirm="confirm">
|
<div style="width: calc(100% - 32px); position: sticky;padding: 12px 16px; top: 0px; left: 0; z-index: 999; background-color: white">
|
<div style="display: flex;background: #e4ecfe;padding: 20px">
|
<div style="width: 60px;">
|
<div class="home_title" v-if="info">
|
<el-image v-if="info.fullCoverImage" style="width: 50px; height: 50px;border-radius: 50%;margin-right: 10px" :src="info.fullCoverImage"
|
:preview-src-list="[info.fullCoverImage]">
|
</el-image>
|
<el-image v-else style="width: 50px; height: 50px;border-radius: 50%;margin-right: 10px" src="avatar/man.png" >
|
</el-image>
|
</div>
|
</div>
|
<div style="width: calc(100% - 60px);">
|
<div class="home_title" v-if="info">
|
<div class="left">
|
<span class="m10">昵称:{{info.nickName }} <span class="ml10 bluebtn" :title="'姓名:'+(info.name||'未设置姓名')" >({{(info.name||'未设置姓名') }})</span></span>
|
<el-tag type="primary" class="mr10 tag1">发单方</el-tag>
|
<el-tag type="success" class="mr10 tag1" v-if="info.workerIdentity == 2 || info.driverIdentity == 2 || info.chefIdentity == 2">接单方</el-tag>
|
</div>
|
</div>
|
<div class="remark" v-if="info">
|
<el-button class="bluebtn" icon="el-icon-phone" title="手机号"> {{info.telephone||'未设置' }}</el-button>
|
<el-button class="yellowbtn" icon="el-icon-star-on" title="平均评分"> {{info.score||'0' }}分</el-button>
|
<el-button class="redbtn" icon="el-icon-coin" title="账号余额(元)"> {{(info.amount||0).toFixed(2)}}元</el-button>
|
</div>
|
</div>
|
</div>
|
<div class="tabs">
|
<div class="tab" :class="{ active: activeTabs === 0 }" @click="tabsClick(0)">余额明细</div>
|
<div class="tab" :class="{ active: activeTabs === 1 }" @click="tabsClick(1)">评价记录</div>
|
<div class="tab" :class="{ active: activeTabs === 2 }" @click="tabsClick(2)">认证信息</div>
|
</div>
|
</div>
|
<div class="main" v-if="activeTabs === 0 && info">
|
<div class="title" >
|
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
|
<el-form-item label="交易流水号" style="width: 200px;" label-width="100px" prop="transactionNo">
|
<el-input v-model="searchForm.transactionNo" style="width: 100px" clearable placeholder="请输入" ></el-input>
|
</el-form-item>
|
<el-form-item label="收支类型" prop="type" style="width: 200px;" label-width="100px" >
|
<el-select v-model="searchForm.optType" style="width: 100px" clearable placeholder="请选择类型" >
|
<el-option :value="1" label="收入"></el-option>
|
<el-option :value="-1" label="支出"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="收支时间" prop="eventType" style="width: 380px;" label-width="100px" >
|
<el-date-picker type="datetime" style="width: 120px" v-model="searchForm.startTime" clearable value-format="yyyy-MM-dd HH:mm:ss"
|
placeholder="开始时间" />-
|
<el-date-picker type="datetime" style="width: 120px" v-model="searchForm.endTime" clearable value-format="yyyy-MM-dd HH:mm:ss"
|
placeholder="结束时间" />
|
</el-form-item>
|
<section style="width: 280px;display: inline-block" >
|
<el-button type="primary" @click="handleCurrentChange0(0)">搜索</el-button>
|
<el-button @click="reset0">重置</el-button>
|
<el-button type="primary" @click="exportExcel0" :loading="export0">导出</el-button>
|
</section>
|
</el-form>
|
</div>
|
<el-table
|
v-loading="isWorking.search"
|
:data="tableData.records"
|
stripe
|
>
|
<el-table-column prop="type" label="收入/支出" width="80px" align="center" >
|
<template slot-scope="{row}">
|
<span style="cursor: pointer;color: #3acf18" v-if="row.optType ==1">收入</span>
|
<span style="cursor: pointer;color: #a10e0e" v-else>支出</span>
|
</template>
|
</el-table-column>
|
<el-table-column prop="amountInfo" label="金额(元)" width="120px" align="center">
|
<template slot-scope="{row}">
|
<span class="yellowbtn">{{ row.amountInfo || 0 }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column prop="createTime" label="收支时间" min-width="150px" align="center"></el-table-column>
|
<el-table-column prop="typeName" label="业务类型" min-width="100px" align="center"></el-table-column>
|
<el-table-column prop="transactionNo" label="订单/交易号" min-width="100px" align="center"> </el-table-column>
|
</el-table>
|
<el-pagination
|
@current-change="handleCurrentChange0"
|
:current-page="page0"
|
:page-size="pageSize"
|
layout="total, prev, pager, next, jumper"
|
:total="tableData.total">
|
</el-pagination>
|
</div>
|
<div class="main" v-if="activeTabs === 1 && info">
|
<el-radio-group v-model="type" @change="changeType" style="margin-bottom: 20px;">
|
<el-radio-button :label="0">收到的评价</el-radio-button>
|
<el-radio-button :label="1">发布的评价</el-radio-button>
|
</el-radio-group>
|
<el-table
|
v-loading="isWorking.search"
|
:data="tableData1.records"
|
stripe
|
>
|
<el-table-column prop="commentTime" label="评价时间" min-width="150px" align="center">
|
<template slot-scope="{row}">
|
<span >{{ row.commentTime }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column prop="commentLevel" label="评分" width="120px" align="center">
|
<template slot-scope="{row}">
|
<span class="yellowbtn">{{ row.commentLevel || 0 }}分</span>
|
</template>
|
</el-table-column>
|
<el-table-column prop="commentInfo" label="评价内容" min-width="100px" align="center"></el-table-column>
|
<el-table-column prop="code" label="订单号" min-width="100px" align="center"> </el-table-column>
|
<el-table-column prop="type" label="订单类型" min-width="100px" align="center">
|
<template slot-scope="{row}">
|
<span v-if="row.type ==0" >用工单
|
<span v-if="row.workType ==0">/采摘工</span>
|
<span v-if="row.workType ==1">/分拣工</span>
|
<span v-if="row.workType ==2">/包装工</span>
|
</span>
|
<span v-if="row.type ==1" >运货单</span>
|
<span v-if="row.type ==2" >订餐单</span>
|
</template>
|
</el-table-column>
|
</el-table>
|
<el-pagination
|
@current-change="handleCurrentChange0"
|
:current-page="page1"
|
:page-size="pageSize"
|
layout="total, prev, pager, next, jumper"
|
:total="tableData1.total">
|
</el-pagination>
|
</div>
|
<div class="main" v-if="activeTabs === 2 && info">
|
<div class="renzheng" v-for="item in tableData2">
|
<div class="info" >
|
<span class="m10" v-if="item.type ==0">用工认证</span>
|
<span class="m10" v-if="item.type ==1">货运认证</span>
|
<span class="m10" v-if="item.type ==2">供餐认证</span>
|
<el-tag type="primary" class="ml10 tag2" v-if="item.auditStatus == 1">申请中</el-tag>
|
<el-tag type="success" class="ml10 tag2" v-if="item.auditStatus == 2">认证通过</el-tag>
|
<el-tag type="danger" class="ml10 tag2" v-if="item.auditStatus == 3">认证失败</el-tag>
|
</div>
|
<div class="detail" >
|
<div class="line">
|
<span class="label"> 认证类型:</span> <span class="txt">{{item.authType == 0? '个人':'企业' }}</span>
|
<span class="label"> 联系人:</span> <span class="txt">{{item.linkName || '' }}</span>
|
<span class="label"> 联系方式:</span> <span class="txt">{{item.telephone || '' }}</span>
|
<span class="label"> 申请时间:</span> <span class="txt">{{item.createTime || '' }}</span>
|
</div>
|
<template v-if="item.authType ==1">
|
<div class="line">
|
<span class="label">单位位置:</span><span class="txt">{{item.location || '' }}</span>
|
<span class="label">单位名称:</span><span class="txt">{{item.companyName || '' }}</span>
|
</div>
|
<div class="line"> <span class="label">认证资料:</span> <span v-if="!item.imgList || item.imgList.length==0" class="txt">无</span> </div>
|
</template>
|
<template v-else>
|
<div class="line"> <span class="label">身份信息:</span> <span v-if="!item.imgList || item.imgList.length==0" class="txt">无</span> </div>
|
</template>
|
<div class="line" v-if="item.imgList && item.imgList.length>0">
|
<div v-for="info in item.imgList" style="display: inline-block">
|
<el-image v-if="info" style="width: 50px; height: 50px; margin-right: 10px" :src="info"
|
:preview-src-list="[info]">
|
</el-image>
|
</div>
|
</div>
|
<div class="line" v-if="item.auditStatus == 3 || item.auditStatus == 2" :style="'background-color: '+(item.auditStatus==2?'#eff8ea':'rgb(253 226 226)')+';padding: 20px'">
|
<span class="label"> 审核人:</span> <span class="txt">{{item.editorName}} </span><span class="label">{{item.auditTime || '' }} </span>
|
<div style="margin-top: 20px"> <span class="label"> 审核信息:</span> <span class="txt">{{item.auditRemark || '' }}</span></div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</GlobalWindow>
|
</template>
|
|
<script>
|
import GlobalWindow from '@/components/common/GlobalWindow'
|
import BaseOpera from '@/components/base/BaseOpera'
|
import { getById } from '@/api/business/member'
|
import { fetchList as yueList, exportExcel as yueExportExcel } from '@/api/business/memberRevenue'
|
import { fetchList as commentList } from '@/api/business/orders'
|
import { allList as renzhengList} from '@/api/business/identityInfo'
|
export default {
|
components: {
|
GlobalWindow
|
},
|
extends: BaseOpera,
|
data () {
|
return {
|
id: '',
|
visible: false,
|
activeTabs: 0,
|
type: 0,
|
info: {},
|
pageSize: 10,
|
page: 1,
|
total: 0,
|
tableData: {},
|
tableData1: {},
|
tableData2:[],
|
page0: 1,
|
page1: 1,
|
loading: false,
|
export0: false,
|
searchForm: {
|
type: 0,
|
startTime: null,
|
endTime: null,
|
optType: null,
|
acceptMemberId: -1,
|
releaseMemberId: -1,
|
transactionNo: null
|
}
|
}
|
},
|
methods: {
|
open (title, id) {
|
this.title = title
|
this.visible = true
|
this.activeTabs = 0
|
this.type = 0
|
this.page0 = 1
|
this.pageSize = 10
|
this.tableData = {}
|
this.tableData1 = {}
|
this.tableData2 = []
|
this.id = id
|
this.searchForm = {
|
type: 0,
|
startTime: null,
|
endTime: null,
|
optType: null,
|
acceptMemberId: -1,
|
releaseMemberId: -1,
|
transactionNo: null
|
}
|
this.getData()
|
},
|
getData () {
|
getById(this.id)
|
.then(res => {
|
this.info = res
|
this.visible = true
|
this.handleCurrentChange0(1)
|
this.changeType(0)
|
this.getRenzhengList()
|
})
|
},
|
exportExcel0 () {
|
this.$dialog.exportConfirm('确认导出吗?')
|
.then(() => {
|
this.export0 = true
|
yueExportExcel({
|
page: 1,
|
capacity: 1000000,
|
model: {
|
memberId: this.info.id || -1,
|
startTime: this.searchForm.startTime,
|
endTime: this.searchForm.endTime,
|
optType: this.searchForm.optType,
|
transactionNo: this.searchForm.transactionNo
|
}
|
}).then(response => {
|
this.download(response)
|
})
|
.catch(e => {
|
this.$tip.apiFailed(e)
|
})
|
.finally(() => {
|
this.export0 = false
|
})
|
})
|
.catch(() => {})
|
},
|
reset0 () {
|
this.searchForm.startTime = null
|
this.searchForm.endTime = null
|
this.searchForm.optType = null
|
this.searchForm.transactionNo = null
|
this.page0 = 0
|
this.getYueList()
|
},
|
handleCurrentChange0 (page) {
|
this.page0 = page
|
this.getYueList()
|
},
|
handleCurrentChange1 (page) {
|
this.page1 = page
|
this.getCommentList()
|
},
|
getYueList () {
|
this.loading = true
|
yueList({
|
capacity: this.pageSize,
|
page: this.page0,
|
model: {
|
memberId: this.info.id || -1,
|
startTime: this.searchForm.startTime,
|
endTime: this.searchForm.endTime,
|
optType: this.searchForm.optType,
|
transactionNo: this.searchForm.transactionNo
|
}
|
}).then(res => {
|
this.loading = false
|
this.tableData = res
|
console.log(this.tableData)
|
}).catch(e => {
|
this.$tip.apiFailed(e)
|
}).finally(() => {
|
this.loading = false
|
})
|
},
|
getCommentList () {
|
this.loading = true
|
commentList({
|
capacity: this.pageSize,
|
page: this.page1,
|
model: {
|
acceptMemberId: this.searchForm.acceptMemberId,
|
releaseMemberId: this.searchForm.releaseMemberId,
|
commentStatus: 1
|
}
|
}).then(res => {
|
this.loading = false
|
this.tableData1 = res
|
console.log(this.tableData1)
|
}).catch(e => {
|
this.$tip.apiFailed(e)
|
}).finally(() => {
|
this.loading = false
|
})
|
},
|
close () {
|
|
},
|
getRenzhengList () {
|
this.loading = true
|
renzhengList({
|
memberId: this.id || -1
|
}).then(res => {
|
this.loading = false
|
this.tableData2 = res
|
}).catch(e => {
|
this.$tip.apiFailed(e)
|
}).finally(() => {
|
this.loading = false
|
})
|
},
|
changeType (e) {
|
this.searchForm.acceptMemberId = -1
|
this.searchForm.releaseMemberId = -1
|
if (e == 0) {
|
this.searchForm.releaseMemberId = this.info.id || -1
|
this.searchForm.acceptMemberId = null
|
} else {
|
this.searchForm.acceptMemberId = this.info.id || -1
|
this.searchForm.releaseMemberId =null
|
}
|
this.page1 = 1
|
this.tableData1 = {}
|
this.handleCurrentChange1(0)
|
},
|
tabsClick (val) {
|
this.activeTabs = val
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
@import '@/assets/style/variables.scss';
|
.renzheng{
|
margin: 0px 0px 50px 20px;
|
width: calc(100% - 60px);
|
.detail{
|
font-size: 14px;
|
.label{
|
color: #8c939d;
|
}
|
.txt{
|
margin-right: 30px;
|
}
|
.line{
|
margin-top: 15px;
|
}
|
}
|
.ml10{
|
margin-left: 10px;
|
}
|
.info{
|
font-size: 14px;
|
font-weight: bold;
|
}
|
.tag2{
|
font-size: 12px;
|
}
|
}
|
.home_title {
|
.mr10{
|
margin-right: 10px;
|
}
|
.m10{
|
margin: 10px;
|
}
|
.bluebtn{
|
color: #2985f7;
|
}
|
.tag1{
|
border-radius: 10px;
|
font-size: 10px;
|
padding: 0px 15px;
|
height: 24px;
|
}
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
.left {
|
font-weight: 500;
|
font-size: 14px;
|
margin-right: 10px;
|
display: flex;
|
align-items: center;
|
.status {
|
padding: 0 6px;
|
height: 22px;
|
line-height: 22px;
|
border-radius: 2px;
|
border: 1px solid #00BA92;
|
color: #00BA92;
|
font-weight: 400;
|
font-size: 12px;
|
color: #00BA92;
|
}
|
}
|
}
|
.tab{
|
width: 20%;
|
}
|
.remark {
|
//background: #E8EBF7;
|
border-radius: 2px;
|
font-size: 14px;
|
margin: 10px 10px 0px -10px;
|
button{
|
border: none;
|
cursor: default;
|
margin-right: 20px;
|
background: #e4ecfe;
|
}
|
}
|
.bluebtn{
|
font-weight: bold;
|
color: #2985f7;
|
}
|
|
.redbtn{
|
font-weight: bold;
|
color: #ff1b1b;
|
}
|
.yellowbtn{
|
font-weight: bold;
|
color: #fc9d20;
|
}
|
|
.tabs {
|
border-bottom: 1px solid #DFE2E8;
|
display: flex;
|
margin-bottom: 20px;
|
.tab {
|
height: 58px;
|
line-height: 58px;
|
font-size: 14px;
|
color: #666666;
|
margin-right: 30px;
|
cursor: pointer;
|
}
|
|
.active {
|
font-weight: 500;
|
color: $primary-color;
|
border-bottom: 2px solid $primary-color;
|
}
|
}
|
|
.main {
|
padding: 12px 16px;
|
.title {
|
font-weight: 500;
|
font-size: 12px;
|
color: $primary-color;
|
margin-bottom: 15px;
|
}
|
/deep/ .el-form-item__label{
|
font-size: 12px;
|
}
|
.list {
|
display: flex;
|
flex-wrap: wrap;
|
/*background: #F7F7F7;*/
|
border-radius: 2px;
|
/*padding: 15px 20px;*/
|
margin-bottom: 20px;
|
|
.item {
|
font-size: 14px;
|
width: 25%;
|
margin-bottom: 16px;
|
|
.la {
|
color: #7f7f7f;
|
margin-bottom: 10px;
|
}
|
}
|
}
|
}
|
|
/deep/ .window__body {
|
padding: 0px !important;
|
}
|
</style>
|