1985 lines
65 KiB
1985 lines
65 KiB
<template> |
|
<div> |
|
<newListLayout |
|
:isShow="{ |
|
seachZoom: true, |
|
listDetails: true, |
|
}" |
|
v-model="tableHeight" |
|
> |
|
<!-- 搜索框 start --> |
|
<div slot="seach"> |
|
<el-form |
|
:style="{ maxHeight: showSearch ? '' : '52px' }" |
|
label-width="90px" |
|
:inline="true" |
|
:model="page" |
|
class="search-form" |
|
:size="$store.getters.size" |
|
> |
|
<el-form-item> |
|
<el-select |
|
v-model="page.params.companyId" |
|
placeholder="请输入公司名称/ID检索" |
|
clearable |
|
filterable |
|
remote |
|
reserve-keyword |
|
:remote-method="searchCompanyInfo" |
|
> |
|
<el-option |
|
v-for="item in companyList" |
|
:key="item.id" |
|
:label="item.name" |
|
:value="item.id" |
|
> |
|
{{ item.name }} |
|
</el-option> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item> |
|
<el-select |
|
v-model="page.params.customerId" |
|
filterable |
|
remote |
|
reserve-keyword |
|
clearable |
|
placeholder="请输入司机编号/姓名/手机号码" |
|
:remote-method="searchUserInfo" |
|
> |
|
<el-option |
|
v-for="item in sysCustomerList" |
|
:key="item.id" |
|
:label="item.userName" |
|
:value="item.id" |
|
> |
|
{{ item.phone }} ( {{ item.userName }} - {{ item.userCode }}) |
|
</el-option> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item> |
|
<el-input |
|
v-model="page.params.siteName" |
|
placeholder="请输入油站名称" |
|
clearable |
|
/> |
|
</el-form-item> |
|
<el-form-item> |
|
<el-select |
|
v-model="page.params.channelCode" |
|
placeholder="油站渠道" |
|
clearable |
|
> |
|
<el-option value="XOIL" label="星油" /> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item> |
|
<el-select |
|
v-model="page.params.oilProductType" |
|
placeholder="油品类型" |
|
clearable |
|
> |
|
<el-option value="DIESEL" label="柴油" /> |
|
<el-option value="GAS" label="天然气" /> |
|
<el-option value="PETROL" label="汽油" /> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item> |
|
<el-select |
|
v-model="page.params.secondChannelCode" |
|
filterable |
|
clearable |
|
placeholder="二级所属渠道" |
|
> |
|
<el-option value="QP" label="壳牌" /> |
|
<el-option value="SQ" label="上汽" /> |
|
<el-option value="GDQP" label="广东壳牌" /> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item> |
|
<el-select |
|
v-model="page.params.orderStatus" |
|
placeholder="订单状态" |
|
clearable |
|
> |
|
<el-option label="支付失败" :value="-1" /> |
|
<el-option label="支付中" :value="0" /> |
|
<el-option label="支付成功" :value="1" /> |
|
<el-option label="已取消" :value="2" /> |
|
<el-option label="已退款" :value="3" /> |
|
<el-option label="退款中" :value="4" /> |
|
<el-option label="退款失败" :value="5" /> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item> |
|
<el-radio-group v-model="payAccountType_t"> |
|
<el-radio-button :label="2"> |
|
<svg |
|
t="1629252270571" |
|
style="transform: scale(1.8); margin-right: 2px" |
|
class="icon" |
|
viewBox="0 0 1024 1024" |
|
version="1.1" |
|
xmlns="http://www.w3.org/2000/svg" |
|
p-id="1219" |
|
width="10" |
|
height="10" |
|
> |
|
<path |
|
d="M416 192v224H192V192h224m32-64H160c-17.67 0-32 14.33-32 32v288c0 17.67 14.33 32 32 32h288c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM832 192v224H608V192h224m32-64H576c-17.67 0-32 14.33-32 32v288c0 17.67 14.33 32 32 32h288c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM416 608v224H192V608h224m32-64H160c-17.67 0-32 14.33-32 32v288c0 17.67 14.33 32 32 32h288c17.67 0 32-14.33 32-32V576c0-17.67-14.33-32-32-32zM832 608v224H608V608h224m32-64H576c-17.67 0-32 14.33-32 32v288c0 17.67 14.33 32 32 32h288c17.67 0 32-14.33 32-32V576c0-17.67-14.33-32-32-32z" |
|
p-id="1220" |
|
:fill="payAccountType_t != 2 ? '#87888B' : '#fff'" |
|
/> |
|
</svg> |
|
<span>全部账户</span> |
|
</el-radio-button> |
|
<el-radio-button :label="0"> |
|
<svg-icon icon-class="iconsiji1" /> 个人账户 |
|
</el-radio-button> |
|
<el-radio-button :label="1"> |
|
<svg-icon icon-class="icongongsi-" /> 企业账户 |
|
</el-radio-button> |
|
</el-radio-group> |
|
</el-form-item> |
|
<el-form-item> |
|
<el-input |
|
v-model="page.params.orderSerialNumber" |
|
placeholder="输入订单号/ID准确搜索" |
|
clearable |
|
@keyup.enter.native="getByPage" |
|
/> |
|
</el-form-item> |
|
<el-form-item> |
|
<gl-date-time-picker |
|
v-model="page.params.createTime" |
|
msg="创建时间" |
|
@keyup.enter.native="getByPage" |
|
/> |
|
</el-form-item> |
|
|
|
<el-form-item> |
|
<el-select |
|
v-model="page.params.siteBrand" |
|
placeholder="油站所属品牌" |
|
clearable |
|
@keyup.enter.native="getByPage" |
|
> |
|
<el-option label="中国石油" :value="1" /> |
|
<el-option label="中国石化" :value="2" /> |
|
<el-option label="壳牌" :value="3" /> |
|
<el-option label="民营" :value="4" /> |
|
<el-option label="中海油" :value="5" /> |
|
<el-option label="京博" :value="6" /> |
|
<el-option label="中化石油" :value="7" /> |
|
<el-option label="其他" :value="8" /> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item> |
|
<el-input |
|
v-model="page.params.plateNumber" |
|
placeholder="请输入车牌号" |
|
clearable |
|
/> |
|
</el-form-item> |
|
</el-form> |
|
</div> |
|
<!-- 搜索框 end --> |
|
<!-- 左边按钮区 start --> |
|
<div slot="seachbutten_left"> |
|
<el-row style="margin-top: 5px"> |
|
<el-col :span="12" class="tal"> |
|
<el-button |
|
class="group-item" |
|
:size="$store.getters.size" |
|
type="primary" |
|
@click="toSupplement" |
|
> |
|
<svg-icon icon-class="iconxinzeng" /> 星油补单 |
|
</el-button> |
|
|
|
<el-button |
|
class="group-item" |
|
:size="$store.getters.size" |
|
type="primary" |
|
@click="toSupplementZeYi" |
|
> |
|
<svg-icon icon-class="iconxinzeng" /> 三方补单 |
|
</el-button> |
|
<el-button |
|
class="group-item" |
|
:size="$store.getters.size" |
|
type="primary" |
|
@click="toOutPut" |
|
> |
|
<svg-icon icon-class="icondaochu" /> 导出 |
|
</el-button> |
|
</el-col> |
|
</el-row> |
|
</div> |
|
<!-- 左边按钮区 end --> |
|
<!-- 右边按钮区 start --> |
|
<div slot="seachbutten_right"> |
|
<el-row> |
|
<el-button |
|
type="primary" |
|
:size="$store.getters.size" |
|
icon="el-icon-search" |
|
@click="search" |
|
>查询</el-button |
|
> |
|
<el-button |
|
:size="$store.getters.size" |
|
icon="el-icon-refresh" |
|
type="info" |
|
@click="resetting" |
|
>重置</el-button |
|
> |
|
</el-row> |
|
</div> |
|
<!-- 右边按钮区 end --> |
|
<!-- 列表详情 start --> |
|
<div slot="listDetails"> |
|
<el-row> |
|
<el-col :span="24" :offset="0"> |
|
<el-collapse-transition> |
|
<div ref="showmore" class="statistic-container"> |
|
<div class="statictic-item"> |
|
<div class="left-count"> |
|
<div class="text">订单总数</div> |
|
<div class="count"> |
|
{{ totalData.totalCount | numSplit }} |
|
</div> |
|
</div> |
|
<div class="right-container"> |
|
<div |
|
v-for="(ele, index) in totalChannelData" |
|
:key="index" |
|
class="right-item" |
|
> |
|
<div class="pie-table"> |
|
<ripple-chart |
|
:chart-id="ele.type" |
|
:title="sites[ele.type]" |
|
:chart-color="pieColors[index]" |
|
:percent="ele.percent" |
|
/> |
|
</div> |
|
<div class="statis-info"> |
|
<div class="info-item">{{ sites[ele.type] }}</div> |
|
<div class="info-item"> |
|
订单总数:{{ ele.totalCount }}单 |
|
</div> |
|
<div class="info-item"> |
|
订单总金额:{{ ele.totalMoney }}¥ |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="statictic-item"> |
|
<div class="left-count"> |
|
<div class="text">订单总金额</div> |
|
<div class="count"> |
|
{{ totalData.totalMoney | numSplit }} |
|
</div> |
|
</div> |
|
<div class="right-container"> |
|
<div |
|
v-for="(item, index) in totalTypeData" |
|
:key="index" |
|
class="right-item" |
|
> |
|
<div class="pie-table"> |
|
<ripple-chart |
|
:chart-id="item.type" |
|
:title="item.type === '1' ? '企业' : '个人'" |
|
:chart-color="pieColors[index]" |
|
:percent="item.percent" |
|
/> |
|
</div> |
|
<div class="statis-info"> |
|
<div class="info-item"> |
|
{{ item.type === "1" ? "企业" : "个人" }} |
|
</div> |
|
<div class="info-item"> |
|
订单总数:{{ item.totalCount }}单 |
|
</div> |
|
<div class="info-item"> |
|
订单总金额:{{ item.totalMoney }}¥ |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</el-collapse-transition> |
|
</el-col> |
|
</el-row> |
|
</div> |
|
<!-- 列表详情 end --> |
|
<!-- 表格 start --> |
|
<div slot="list"> |
|
<el-table |
|
stripe |
|
v-loading="tableLoading" |
|
:data="dataPage.list" |
|
fit |
|
:max-height="tableHeight" |
|
style="width: 100%" |
|
:size="$store.getters.size" |
|
@sort-change="sortHandler" |
|
@selection-change="handleSelectionChange" |
|
> |
|
<el-table-column type="selection" width="55" /> |
|
<el-table-column label="序号" type="index" :index="indexMethod" /> |
|
<template v-for="(item, index) in tableColumns"> |
|
<el-table-column |
|
v-if="item.show" |
|
:key="index" |
|
:fixed="item.fixed" |
|
:align="item.align" |
|
:header-align="item.headerAlign" |
|
:show-overflow-tooltip="true" |
|
:min-width="item.minWidth" |
|
:width="item.width" |
|
:prop="item.prop" |
|
:sortable="item.sortable" |
|
:label="item.label" |
|
:formatter="item.render" |
|
/> |
|
</template> |
|
|
|
<el-table-column fixed="right" label="操作" width="150px"> |
|
<template slot-scope="scope"> |
|
<el-button |
|
:size="$store.getters.size" |
|
type="text" |
|
@click="handleDetail(scope.row.id)" |
|
> |
|
<svg-icon icon-class="iconxiangqing1" /> 详情 |
|
</el-button> |
|
<el-dropdown> |
|
<el-button type="text"> |
|
更多<i class="el-icon-arrow-down el-icon--right" /> |
|
</el-button> |
|
<el-dropdown-menu |
|
v-if="scope.row.payChannel === 'SXF_WECHAT_MINIAPPS_PAYMENT'" |
|
slot="dropdown" |
|
> |
|
<el-dropdown-item @click.native="wechartRefund(scope.row)"> |
|
<el-button |
|
v-if=" |
|
scope.row.orderType === 'REAL_ORDER' && |
|
[1, 5].indexOf(scope.row.orderStatus) !== -1 |
|
" |
|
:size="$store.getters.size" |
|
type="text" |
|
> |
|
<svg-icon icon-class="iconback" /> |
|
微信原路退回 |
|
</el-button> |
|
</el-dropdown-item> |
|
</el-dropdown-menu> |
|
|
|
<el-dropdown-menu v-else slot="dropdown"> |
|
<el-dropdown-item @click.native="toCancelSf(scope.row)"> |
|
<el-button |
|
v-if=" |
|
scope.row.orderType == 'REAL_ORDER' && |
|
scope.row.orderStatus == 2 && |
|
scope.row.createSource == 'SHUNFENG' && |
|
(scope.row.payChannel == 'BALANCE_PAYMENT' || |
|
scope.row.payChannel == 'WECHAT_MINIAPPS_PAYMENT' || |
|
scope.row.payChannel == 'WECHAT_APP_PAYMENT') |
|
" |
|
:size="$store.getters.size" |
|
type="text" |
|
> |
|
<svg-icon icon-class="iconlajitong" /> |
|
顺丰取消 |
|
</el-button> |
|
</el-dropdown-item> |
|
<el-dropdown-item @click.native="toRefund(scope.row)"> |
|
<el-button |
|
v-if=" |
|
scope.row.orderType == 'REAL_ORDER' && |
|
scope.row.orderStatus == 1 && |
|
scope.row.createSource != 'ZEYI' && |
|
scope.row.createSource != 'FUYOU' && |
|
scope.row.createSource != 'TY' && |
|
scope.row.createSource != 'SHUNFENG' && |
|
scope.row.createSource != 'WJY' && |
|
scope.row.createSource != 'QIAOPAI' && |
|
scope.row.createSource != 'RIRISHUN' && |
|
(scope.row.payChannel == 'BALANCE_PAYMENT' || |
|
scope.row.payChannel == 'WECHAT_MINIAPPS_PAYMENT' || |
|
scope.row.payChannel == 'WECHAT_APP_PAYMENT') |
|
" |
|
:size="$store.getters.size" |
|
type="text" |
|
> |
|
<svg-icon icon-class="iconlajitong" /> |
|
星油退款 |
|
</el-button> |
|
</el-dropdown-item> |
|
<el-dropdown-item @click.native="toRefundFY(scope.row)"> |
|
<el-button |
|
v-if=" |
|
scope.row.orderType == 'REAL_ORDER' && |
|
scope.row.orderStatus == 1 && |
|
scope.row.createSource == 'FUYOU' && |
|
(scope.row.payChannel == 'BALANCE_PAYMENT' || |
|
scope.row.payChannel == 'WECHAT_MINIAPPS_PAYMENT' || |
|
scope.row.payChannel == 'WECHAT_APP_PAYMENT') |
|
" |
|
:size="$store.getters.size" |
|
type="text" |
|
> |
|
<svg-icon icon-class="iconlajitong" /> |
|
福佑退款 |
|
</el-button> |
|
</el-dropdown-item> |
|
<!-- //顺丰退款 --> |
|
<el-dropdown-item @click.native="toRefundSf(scope.row)"> |
|
<el-button |
|
v-if=" |
|
scope.row.orderType == 'REAL_ORDER' && |
|
scope.row.orderStatus == 1 && |
|
scope.row.createSource == 'SHUNFENG' && |
|
(scope.row.payChannel == 'BALANCE_PAYMENT' || |
|
scope.row.payChannel == 'WECHAT_MINIAPPS_PAYMENT' || |
|
scope.row.payChannel == 'WECHAT_APP_PAYMENT') |
|
" |
|
:size="$store.getters.size" |
|
type="text" |
|
> |
|
<svg-icon icon-class="iconlajitong" /> |
|
顺丰退款 |
|
</el-button> |
|
</el-dropdown-item> |
|
<!-- 退款 + 通联 --> |
|
<el-dropdown-item @click.native="toTongLianRefund(scope.row)"> |
|
<el-button |
|
v-if=" |
|
scope.row.orderType == 'REAL_ORDER' && |
|
scope.row.orderStatus == 1 && |
|
scope.row.createSource != 'ZEYI' && |
|
scope.row.createSource != 'TY' && |
|
scope.row.createSource != 'WJY' && |
|
scope.row.payChannel == 'SYB_WECHAT_MINIAPPS_PAYMENT' |
|
" |
|
:size="$store.getters.size" |
|
type="text" |
|
> |
|
<svg-icon icon-class="iconlajitong" /> |
|
通联退款 |
|
</el-button> |
|
</el-dropdown-item> |
|
<el-dropdown-item @click.native="RefundToBalance(scope.row)"> |
|
<el-button |
|
v-if=" |
|
scope.row.orderType == 'REAL_ORDER' && |
|
scope.row.orderStatus == 1 && |
|
scope.row.createSource != 'ZEYI' && |
|
scope.row.createSource != 'TY' && |
|
scope.row.createSource != 'WJY' && |
|
scope.row.payChannel == 'SYB_WECHAT_MINIAPPS_PAYMENT' |
|
" |
|
:size="$store.getters.size" |
|
type="text" |
|
> |
|
<svg-icon icon-class="iconlajitong" /> |
|
退款到余额 |
|
</el-button> |
|
</el-dropdown-item> |
|
<el-dropdown-item @click.native="RefundToBalance(scope.row)"> |
|
<el-button |
|
v-if=" |
|
scope.row.orderType == 'REAL_ORDER' && |
|
scope.row.orderStatus == 1 && |
|
scope.row.createSource != 'ZEYI' && |
|
scope.row.createSource != 'TY' && |
|
scope.row.createSource != 'WJY' && |
|
(scope.row.payChannel == 'WECHAT_MINIAPPS_PAYMENT' || |
|
scope.row.payChannel == 'WECHAT_APP_PAYMENT') |
|
" |
|
:size="$store.getters.size" |
|
type="text" |
|
> |
|
<svg-icon icon-class="iconlajitong" /> |
|
微信退款到余额 |
|
</el-button> |
|
</el-dropdown-item> |
|
<el-dropdown-item @click.native="toCancelOrder(scope.row)"> |
|
<el-button |
|
v-if=" |
|
scope.row.orderType == 'REAL_ORDER' && |
|
scope.row.orderStatus == 1 && |
|
scope.row.createSource === 'ZEYI' && |
|
scope.row.payChannel == 'BALANCE_PAYMENT' && |
|
scope.row.suppleMark == 0 |
|
" |
|
:size="$store.getters.size" |
|
type="text" |
|
> |
|
<svg-icon icon-class="iconlajitong" /> |
|
则一退款 |
|
</el-button> |
|
</el-dropdown-item> |
|
<!-- end --> |
|
|
|
<el-dropdown-item @click.native="toTYRefund(scope.row)"> |
|
<el-button |
|
v-if=" |
|
scope.row.orderType == 'REAL_ORDER' && |
|
scope.row.orderStatus == 1 && |
|
scope.row.createSource === 'TY' && |
|
scope.row.payChannel == 'BALANCE_PAYMENT' && |
|
scope.row.suppleMark == 0 |
|
" |
|
:size="$store.getters.size" |
|
type="text" |
|
> |
|
<svg-icon icon-class="iconlajitong" /> |
|
团油退款 |
|
</el-button> |
|
</el-dropdown-item> |
|
|
|
<el-dropdown-item @click.native="toDelete(scope.row.id)"> |
|
<!-- <el-button |
|
:size="$store.getters.size" |
|
type="text" |
|
><svg-icon icon-class="iconlajitong" /> 删除</el-button> --> |
|
</el-dropdown-item> |
|
</el-dropdown-menu> |
|
</el-dropdown> |
|
</template> |
|
</el-table-column> |
|
</el-table> |
|
</div> |
|
<!-- 列表详情 end --> |
|
<!-- 分页底部 start --> |
|
<div slot="footerPage"> |
|
<el-pagination |
|
:current-page="page.currentPage" |
|
:page-sizes="[10, 15, 20, 30]" |
|
:page-size="page.pageSize" |
|
layout="total, sizes, prev, pager, next, jumper" |
|
:total="page.totalCount" |
|
@size-change="handleSizeChange" |
|
@current-change="handleCurrentChange" |
|
/> |
|
</div> |
|
<!-- 分页底部 end --> |
|
</newListLayout> |
|
<div> |
|
<el-drawer direction="ltr" :visible.sync="supplementDialog" size="60%"> |
|
<div slot="title" class="supplement-header"> |
|
<div class="icon"> |
|
<img |
|
src="https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/other/2021-4/a1eddda6dfde405a9a40da30af96eda5.png" |
|
alt="" |
|
/> |
|
</div> |
|
<div>补单</div> |
|
</div> |
|
<OrderInfoSupplement |
|
@getByPage="getByPage" |
|
@closeDialog="closeDialog" |
|
/> |
|
</el-drawer> |
|
<!-- 则一补单弹窗 --> |
|
<el-drawer |
|
direction="ltr" |
|
:visible.sync="supplementZeYiDialog" |
|
size="60%" |
|
> |
|
<div slot="title" class="supplement-header"> |
|
<div class="icon"> |
|
<img |
|
src="https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/other/2021-4/a1eddda6dfde405a9a40da30af96eda5.png" |
|
alt="" |
|
/> |
|
</div> |
|
<div>三方补单</div> |
|
</div> |
|
<OrderInfoZeYiSupplement |
|
@getByPage="getByPage" |
|
@closeDialog="closeDialog" |
|
/> |
|
</el-drawer> |
|
|
|
<!-- 添加弹窗 --> |
|
<el-dialog |
|
v-el-drag-dialog |
|
title="添加" |
|
:visible.sync="addDialog" |
|
width="55%" |
|
> |
|
<OrderInfoAdd @getByPage="getByPage" @closeDialog="closeDialog" /> |
|
</el-dialog> |
|
|
|
<!-- 订单匹配弹窗 --> |
|
<el-drawer |
|
direction="ltr" |
|
title="订单匹配" |
|
:visible.sync="orderTfDialog" |
|
size="60%" |
|
> |
|
<OrderTfAdd @getByPage="getByPage" @closeDialog="closeDialog" /> |
|
</el-drawer> |
|
|
|
<el-drawer |
|
title="导出" |
|
:visible.sync="outPutDialog" |
|
width="20%" |
|
size="40%" |
|
direction="ltr" |
|
> |
|
<el-form label-width="75px" size="small"> |
|
<el-row class="box_daochu"> |
|
<el-col :span="24"> |
|
<el-form-item label="导出方式"> |
|
<el-select v-model="output.outputType" style="width: 100%"> |
|
<el-option label="导出选中" :value="1" /> |
|
<el-option label="导出本页" :value="2" /> |
|
<el-option label="条件导出" :value="3" /> |
|
<el-option label="eseyExcel条件导出" :value="4" /> |
|
</el-select> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="24"> |
|
<el-form-item v-if="output.outputType !== 4"> |
|
<div style="color: red"> |
|
<span v-if="output.outputType === 1" |
|
>当前选中数据 {{ multipleSelection.length }} 条</span |
|
> |
|
<span v-if="output.outputType === 2" |
|
>本页数据 {{ dataPage.list.length }} 条</span |
|
> |
|
<span v-if="output.outputType === 3" |
|
>条件导出将直接使用页面搜索条件进行数据过滤</span |
|
> |
|
</div> |
|
</el-form-item> |
|
</el-col> |
|
<el-col |
|
v-if="output.outputType === 3 || output.outputType === 4" |
|
:span="12" |
|
> |
|
<el-form-item label="开始页"> |
|
<el-input v-model="output.startPage" /> |
|
</el-form-item> |
|
</el-col> |
|
<el-col |
|
v-if="output.outputType === 3 || output.outputType === 4" |
|
:span="12" |
|
> |
|
<el-form-item label="结束页"> |
|
<el-input v-model="output.endPage" /> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="24"> |
|
<el-form-item> |
|
<el-button type="primary" @click="outputData">导出</el-button> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
</el-form> |
|
</el-drawer> |
|
|
|
<!-- 导入弹窗 --> |
|
<el-dialog |
|
v-el-drag-dialog |
|
title="导入" |
|
:visible.sync="importDialog" |
|
width="55%" |
|
> |
|
<OrderInfoImport @getByPage="getByPage" @closeDialog="closeDialog" /> |
|
</el-dialog> |
|
|
|
<!-- 修改弹窗 --> |
|
<el-dialog |
|
v-el-drag-dialog |
|
title="修改" |
|
:visible.sync="updateDialog" |
|
width="55%" |
|
> |
|
<OrderInfoUpdate |
|
:order-info="orderInfo" |
|
@getByPage="getByPage" |
|
@closeDialog="closeDialog" |
|
/> |
|
</el-dialog> |
|
|
|
<!-- 详情抽屉 --> |
|
<el-drawer |
|
title="详情" |
|
:with-header="false" |
|
class="table-detail-drawer" |
|
:visible.sync="showTableDrawer" |
|
size="70%" |
|
direction="ltr" |
|
destroy-on-close |
|
> |
|
<OrderInfoInfo :order-info="orderInfo" /> |
|
</el-drawer> |
|
</div> |
|
</div> |
|
</template> |
|
<script> |
|
import tyApi from "@/api/finance/ty"; |
|
import OrderRefund from "@/api/finance/oilCompanyAccount"; |
|
import OrderTfAdd from "./OrderTfAdd"; |
|
import orderInfoApi from "@/api/order/orderInfo"; |
|
import sysCustomerInfoApi from "@/api/user/sysCustomerInfo"; |
|
import oilSiteInfoApi from "@/api/user/oilSiteInfo"; |
|
import OrderInfoAdd from "./OrderInfoAdd"; |
|
import OrderInfoUpdate from "./OrderInfoUpdate"; |
|
import OrderInfoInfo from "./OrderInfoInfo"; |
|
import OrderInfoImport from "./OrderInfoImport"; |
|
import OrderInfoSupplement from "./OrderInfoSupplement"; |
|
import OrderInfoZeYiSupplement from "./OrderInfoZeYiSupplement"; |
|
import rippleChart from "@/views/dashboard/admin/components/RippleChart"; |
|
import openTicketApi from "@/api/finance/openTicketApi"; |
|
import oilCompanyInfoApi from "@/api/user/oilCompanyInfo"; |
|
import newListLayout from "@/components/newListLayout/index/index"; |
|
import { mapGetters } from "vuex"; |
|
export default { |
|
components: { |
|
newListLayout, |
|
OrderInfoAdd, |
|
OrderTfAdd, |
|
OrderInfoUpdate, |
|
OrderInfoInfo, |
|
OrderInfoImport, |
|
OrderInfoSupplement, |
|
OrderInfoZeYiSupplement, |
|
rippleChart, |
|
}, |
|
data() { |
|
return { |
|
payAccountType_t: 2, |
|
companyList: [], |
|
tableLoading: false, |
|
sHeight: "", |
|
moreHeight: 260, |
|
orderFlag: false, |
|
output: { |
|
outputType: 1, // 导出方式,1导出选中,2导出本页,3条件导出,4导出全部 |
|
startPage: 1, // 导出开始页 |
|
endPage: 1, // 导出结束页 |
|
pageSize: 15, // 每页条数 |
|
}, |
|
siteList: [], |
|
multipleSelection: [], // 选择表格数据集合 |
|
importDialog: false, // 导入弹窗 |
|
outPutDialog: false, // 导出弹窗 |
|
showTableDrawer: false, |
|
page: { |
|
pageSize: 15, // 每页显示条数 |
|
currentPage: 1, // 默认页 |
|
params: {}, // 查询参数 |
|
sorted: { |
|
createTime: "desc", |
|
}, |
|
columns: [], |
|
}, |
|
tableHeight: "", |
|
filters: this.$options.filters, |
|
dataPage: { |
|
// 分页显示page |
|
pageSize: 10, // 每页显示条数 |
|
currentPage: 1, // 默认页 |
|
params: { |
|
// 查询参数 |
|
}, |
|
sorted: {}, |
|
}, |
|
tableColumns: [ |
|
{ |
|
prop: "orderSerialNumber", |
|
minWidth: 250, |
|
sortable: "custom", |
|
label: "订单号", |
|
show: true, |
|
render: (row, column, cell) => { |
|
// 订单号查询 |
|
return ( |
|
<div> |
|
<div> |
|
<el-button |
|
on-click={() => this.handleDetailBySerialNumber(cell)} |
|
type="text" |
|
> |
|
ID:{row.id} |
|
</el-button> |
|
</div> |
|
<div> |
|
<el-button |
|
on-click={() => this.handleDetailBySerialNumber(cell)} |
|
type="text" |
|
> |
|
订单号:{cell} |
|
</el-button> |
|
</div> |
|
</div> |
|
); |
|
}, |
|
}, |
|
{ |
|
prop: "customerId", |
|
minWidth: 200, |
|
sortable: "custom", |
|
label: "司机信息", |
|
show: true, |
|
render: (row, column, cell) => { |
|
return ( |
|
<div class="column-info-container"> |
|
<div class="column-info-icon"> |
|
<svg-icon |
|
v-show={row.payAccountType === 0} |
|
icon-class="iconsiji1" |
|
/> |
|
<svg-icon |
|
v-show={row.payAccountType === 1} |
|
icon-class="icongongsi-" |
|
/> |
|
</div> |
|
<div class="column-info-content"> |
|
<div class="column-info-content-item"> |
|
{row.oilCustomerInfo.name |
|
? row.oilCustomerInfo.name |
|
: "暂无"} |
|
- |
|
{row.oilCustomerInfo.phone |
|
? row.oilCustomerInfo.phone |
|
: "暂无"} |
|
</div> |
|
<div |
|
v-show={row.payAccountType === 1} |
|
class="column-info-content-item" |
|
> |
|
{row.companyInfo.name ? row.companyInfo.name : "暂无"} |
|
</div> |
|
<div class="column-info-content-item" v-show={!row.editor}> |
|
<span>{row.plateNumber}</span> |
|
<el-button |
|
on-click={() => |
|
this.changeEditor(row, row.orderSerialNumber) |
|
} |
|
type="text" |
|
> |
|
<svg-icon |
|
style="width: 15px;height:15px;" |
|
icon-class="iconxiugai" |
|
/> |
|
</el-button> |
|
</div> |
|
<div class="column-info-content-item" v-show={row.editor}> |
|
<el-input |
|
ref={row.orderSerialNumber} |
|
on-blur={() => this.changeRowPlate(row)} |
|
size="mini" |
|
v-model={row.plateNumber} |
|
clearable |
|
/> |
|
</div> |
|
</div> |
|
</div> |
|
); |
|
}, |
|
}, |
|
// { prop: 'siteId', minWidth: 200, headerAlign: 'center', sortable: 'custom', label: '油卡信息', show: true, render: (row, column, cell) => { |
|
// // <div class='column-info-content-item'>油卡余额:{row.oilCustomerInfo.plateNumber}</div> |
|
// return <div class='column-info-container'> |
|
// <div class='column-info-icon'> |
|
// <el-tag size='small' v-show={row.oilCardNature === 1} effect='plain' type='success'>个人</el-tag> |
|
// <el-tag size='small' v-show={row.oilCardNature === 2} effect='plain' type='primary'>直营</el-tag> |
|
// <el-tag size='small' v-show={row.oilCardNature === 3} effect='plain' type='danger'>外请</el-tag> |
|
// </div> |
|
// <div class='column-info-content'> |
|
// <div class='column-info-content-item'>{row.companyInfo.name}</div> |
|
// <div class='column-info-content-item'>卡号:{row.oilCustomerInfo.phone}</div> |
|
// </div> |
|
// </div> |
|
// } }, |
|
{ |
|
prop: "siteId", |
|
minWidth: 250, |
|
sortable: "custom", |
|
label: "油站", |
|
show: true, |
|
render: (row, column, cell) => { |
|
return ( |
|
<div class="column-info-container"> |
|
<div class="column-info-icon"> |
|
<img |
|
style="width: 30px; height: 30px" |
|
src={ |
|
"https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/site-" + |
|
row.channelCode + |
|
".png" |
|
} |
|
/> |
|
</div> |
|
<div class="column-info-content"> |
|
<div class="column-info-content-item"> |
|
{" "} |
|
{row.siteLevel} - {row.siteInfo.siteName}-{row.siteInfo.id} |
|
</div> |
|
<div> |
|
<span style="color: red;font-size=16px;margin-right: 10px;font-weight:bold"> |
|
{row.oilProductType === "GAS" |
|
? "天然气" |
|
: row.oilProductType === "PETROL" |
|
? "汽油" |
|
: "柴油"} |
|
/{row.oilsCode} |
|
</span> |
|
<span> |
|
{row.realPrice}¥/ |
|
{row.oilProductType === "GAS" ? "KG" : "L"} |
|
</span> |
|
</div> |
|
<div> |
|
<div> |
|
{row.volume.toFixed(2)} |
|
{row.oilProductType === "GAS" ? "KG" : "L"}/ |
|
{row.payRealAmount}¥ |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
); |
|
}, |
|
}, |
|
{ |
|
prop: "orderStatus", |
|
minWidth: 120, |
|
sortable: "custom", |
|
label: "订单状态", |
|
show: true, |
|
render: (row, column, cell) => { |
|
if (cell === -1) { |
|
return <el-tag type="danger">支付失败</el-tag>; |
|
} else if (cell === 0) { |
|
return <el-tag type="primary">支付中</el-tag>; |
|
} else if (cell === 1) { |
|
return <el-tag type="success">支付成功</el-tag>; |
|
} else if (cell === 2) { |
|
return ( |
|
<el-tag type="info" minWidth="80"> |
|
已取消 |
|
</el-tag> |
|
); |
|
} else if (cell === 3) { |
|
return ( |
|
<el-tag type="info" minWidth="80"> |
|
已退款 |
|
</el-tag> |
|
); |
|
} else if (cell === 4) { |
|
return ( |
|
<el-tag type="info" minWidth="80"> |
|
退款中 |
|
</el-tag> |
|
); |
|
} else if (cell === 5) { |
|
return ( |
|
<el-tag type="info" minWidth="80"> |
|
退款失败 |
|
</el-tag> |
|
); |
|
} else { |
|
return cell; |
|
} |
|
}, |
|
}, |
|
// { prop: 'siteBrand', minWidth: 80, sortable: 'custom', label: '油站所属品牌', show: true, render: (row, column, cell) => { |
|
// if (cell === 1) { |
|
// return '中国石油' |
|
// } |
|
// if (cell === 2) { |
|
// return '审核通过' |
|
// } |
|
// if (cell === 3) { |
|
// return '壳牌' |
|
// } |
|
// if (cell === 4) { |
|
// return '民营' |
|
// } |
|
// if (cell === 5) { |
|
// return '中海油' |
|
// } |
|
// if (cell === 6) { |
|
// return '京博' |
|
// } |
|
// if (cell === 7) { |
|
// return '中化石油' |
|
// } |
|
// if (cell === 8) { |
|
// return '其他' |
|
// } |
|
// return cell |
|
// } }, |
|
// { prop: 'realAmount', minWidth: 150, sortable: 'custom', label: '油品/升数/金额', show: true, render: (row, column, cell) => { |
|
// return <div> |
|
// <div> |
|
// <span style='color: red;font-size=16px;margin-right: 10px;font-weight:bold'>{row.oilsCode}</span> |
|
// <span>{row.realPrice} ¥/L</span> |
|
// </div> |
|
// <div> |
|
// <div>{row.volume}L/{row.payRealAmount}¥</div> |
|
// </div> |
|
// </div> |
|
// } }, |
|
{ |
|
prop: "createTime", |
|
minWidth: 160, |
|
sortable: "custom", |
|
label: "创建时间", |
|
show: true, |
|
render: (row, column, cell) => { |
|
return cell; |
|
}, |
|
}, |
|
{ |
|
prop: "orderSource", |
|
minWidth: 180, |
|
label: "来源/支付方式", |
|
show: true, |
|
render: (row, column, cell) => { |
|
var oilCardNatureName = ""; |
|
if (row.oilCardNature === 2) { |
|
oilCardNatureName = "自营油卡"; |
|
} |
|
if (row.oilCardNature === 3) { |
|
oilCardNatureName = "外请油卡"; |
|
} |
|
return ( |
|
<div> |
|
<div>来源:{this.markData.ORDER_SOURCE[cell]}</div> |
|
<div> |
|
支付:{oilCardNatureName ? oilCardNatureName + "/" : ""} |
|
{this.markData.PAY_CHANNEL[row.payChannel]} |
|
</div> |
|
</div> |
|
); |
|
}, |
|
}, |
|
], |
|
updateDialog: false, // 修改弹窗 |
|
supplementDialog: false, // 补单 |
|
supplementZeYiDialog: false, // 则一补单 |
|
orderTfDialog: false, // 订单匹配 |
|
orderInfo: {}, |
|
showStatistic: false, // 是否展示统计信息 |
|
showSearch: true, // 是否展示统计信息 |
|
totalData: {}, // 总金额和总订单数 |
|
totalTypeData: [], // 个人和企业统计信息 |
|
totalChannelData: [], // 渠道统计信息 |
|
sysCustomerList: [], // 用户集合 |
|
pieColors: [ |
|
// 饼图颜色 |
|
"#fe6b45", |
|
"#ff2e3b", |
|
"#fe6a46", |
|
"#5ed65e", |
|
], |
|
sites: { |
|
XOIL: "星油", |
|
WJY: "万金油", |
|
LV: "老吕", |
|
TY: "团油", |
|
YDJY: "一点加油", |
|
}, |
|
valColumn: [ |
|
"createTime", |
|
"siteInfo.siteName", |
|
"sitePrice", |
|
"realPrice", |
|
"volume", |
|
"sitePriceAmount", |
|
"payRealAmount", |
|
"siteLevel", |
|
"channelCode", |
|
"oilsCode", |
|
"orderStatus", |
|
"companyInfo.name", |
|
"oilCustomerInfo.customerId", |
|
"oilCustomerInfo.name", |
|
"plateNumber", |
|
"payAccountType", |
|
"siteId", |
|
"provinceName", |
|
"cityName", |
|
"oilsBar", |
|
"payTime", |
|
"updateTime", |
|
"id", |
|
"orderSerialNumber", |
|
"otherOrderId", |
|
"suppleRemak", |
|
], |
|
headers: [ |
|
"创建时间", |
|
"油站名称", |
|
"油站单价", |
|
"实际单价", |
|
"体积", |
|
"油站计算金额", |
|
"实际支付金额", |
|
"油站等级", |
|
"渠道名称", |
|
"油品类型", |
|
"订单状态", |
|
"公司名称", |
|
"司机编号", |
|
"司机姓名", |
|
"车牌号", |
|
"账户类型", |
|
"油站编号", |
|
"油站所在省", |
|
"油站所在市区", |
|
"油枪号", |
|
"支付时间", |
|
"修改时间", |
|
"订单编号", |
|
"流水号", |
|
"三方订单编号", |
|
"补单说明", |
|
], |
|
}; |
|
}, |
|
computed: { |
|
...mapGetters(["sysUserList", "markData"]), |
|
}, |
|
watch: { |
|
tableHeight(newValue, oldValue) { |
|
console.log(newValue, "-----------"); |
|
// this.tableHeight = document.documentElement.clientHeight - 300 - 60 - 60 |
|
}, |
|
}, |
|
created() { |
|
this.getByPage(); |
|
// this.getHeight() |
|
// 增加监听事件,窗口变化时得到高度。 |
|
// window.addEventListener('resize', this.getHeight, false) |
|
}, |
|
mounted() { |
|
// this.sHeight = this.$refs.searchHeight.offsetHeight |
|
}, |
|
methods: { |
|
Sfpush() { |
|
//顺丰订单补推 |
|
let data = { |
|
startTime: "2021-12-15 00:00:00", |
|
endTime: "2021-12-15 23:59:59", |
|
}; |
|
oilSiteInfoApi.handPushOrderToShunFeng(data).then((res) => { |
|
console.log(res); |
|
}); |
|
}, |
|
toRefundFY(row) { |
|
console.log(row.id); |
|
// 通联退款 |
|
this.$confirm( |
|
` |
|
您确定要对该福佑订单进行退款?当前退款人为[<span style="color:red">${row.oilCustomerInfo.name}</span>]。<br/> |
|
退款人手机号[<span style="color: red">${row.oilCustomerInfo.phone}</span>], |
|
退款金额[<span style="color: red">${row.payRealAmount}</span>]元<br/> |
|
`, |
|
|
|
"提示", |
|
{ type: "info", dangerouslyUseHTMLString: true } |
|
).then(() => { |
|
let obj = { |
|
id: row.id, |
|
}; |
|
orderInfoApi.refundFY(obj).then((res) => { |
|
console.log(res); |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
}); |
|
}, |
|
RefundToBalance(row) { |
|
// 退款到余额 |
|
console.log(row.id); |
|
OrderRefund.RefundToAccount(row.id).then((res) => { |
|
console.log(res); |
|
this.getByPage(); |
|
}); |
|
}, |
|
resetting() { |
|
this.page.params = {}; |
|
this.payAccountType_t = ""; |
|
}, |
|
searchCompanyInfo(info) { |
|
const oilSiteInfo = {}; |
|
oilSiteInfo.name = info; |
|
if (info && info !== "") { |
|
oilCompanyInfoApi.getLikeByNameOrId(oilSiteInfo).then((res) => { |
|
this.companyList = res.data; |
|
}); |
|
} |
|
}, |
|
// 微信退款 |
|
wechartRefund(row) { |
|
this.$confirm( |
|
` |
|
您确定要对该订单进行退款?当前退款人为[<span style="color:red">${row.oilCustomerInfo.name}</span>]。<br/> |
|
退款人手机号[<span style="color: red">${row.oilCustomerInfo.phone}</span>], |
|
退款金额[<span style="color: red">${row.payRealAmount}</span>]元<br/> |
|
`, |
|
"提示", |
|
{ type: "info", dangerouslyUseHTMLString: true } |
|
).then(() => { |
|
this.tableLoading = true; |
|
OrderRefund.wechatPayRefund({ |
|
orderNum: row.orderSerialNumber, |
|
}).then((res) => { |
|
try { |
|
if (res.code === 20000) { |
|
this.$message.success("退款已发起,请稍后刷新列表查看"); |
|
this.getByPage(); |
|
} else { |
|
this.$message.error(res.msg); |
|
} |
|
} finally { |
|
this.tableLoading = false; |
|
} |
|
}); |
|
}); |
|
}, |
|
showSearchs() { |
|
console.log(this.showSearch); |
|
if (this.showSearch) { |
|
this.showSearch = false; |
|
this.tableHeight = this.tableHeight + this.sHeight; |
|
} else { |
|
this.showSearch = true; |
|
this.tableHeight = this.tableHeight - this.sHeight; |
|
} |
|
}, |
|
showStatistics() { |
|
console.log(this.moreHeight, "this.moreHeight"); |
|
if (this.showStatistic) { |
|
this.moreHeight = this.$refs.showmore.offsetHeight; |
|
console.log(this.showStatistic, " 为true时"); |
|
this.showStatistic = false; |
|
this.tableHeight = this.tableHeight + this.moreHeight; |
|
console.log(this.tableHeight, " this.tableHeight"); |
|
} else { |
|
console.log(this.showStatistic, " 为false时"); |
|
this.showStatistic = true; |
|
this.tableHeight = this.tableHeight - this.moreHeight; |
|
console.log(this.tableHeight, " this.tableHeight changee"); |
|
} |
|
}, |
|
searchUserInfo(info) { |
|
if (info && info !== "") { |
|
sysCustomerInfoApi.searchInfo(info).then((res) => { |
|
this.sysCustomerList = res.data; |
|
}); |
|
} |
|
}, |
|
// 远程搜索主油站 |
|
getSimpleOilSiteInfo(siteName) { |
|
if (siteName) { |
|
const oilSiteInfo = {}; |
|
oilSiteInfo.siteName = siteName; |
|
oilSiteInfoApi.getSimpleOilSiteInfo(oilSiteInfo).then((res) => { |
|
this.siteList = res.data; |
|
}); |
|
} else { |
|
this.sites = []; |
|
} |
|
}, |
|
indexMethod(index) { |
|
return (index + 1) * 1; |
|
}, |
|
handleSelectionChange(val) { |
|
// 选择表格数据 |
|
this.multipleSelection = val; |
|
}, |
|
toForbid() { |
|
// 禁用 |
|
if (!this.multipleSelection || this.multipleSelection.length < 1) { |
|
this.$message.error("请选择需要操作的数据"); |
|
return; |
|
} |
|
}, |
|
toStartUsing() { |
|
// 启用 |
|
if (!this.multipleSelection || this.multipleSelection.length < 1) { |
|
this.$message.error("请选择需要操作的数据"); |
|
return; |
|
} |
|
}, |
|
changeEditor(row, r) { |
|
// 修改是否允许修改标识 |
|
this.$set(row, "editor", true); |
|
this.$nextTick(() => { |
|
// console.log(this.$refs[r]) |
|
this.$refs[r].focus(); |
|
}); |
|
}, |
|
changeRowPlate(row) { |
|
// 修改车牌号 |
|
// row.plateNumber = row.oilCustomerInfo.plateNumber |
|
row.accountCardCode = null; |
|
orderInfoApi.update(row).then((res) => { |
|
this.$message.success(res.msg); |
|
this.$set(row, "editor", false); |
|
}); |
|
}, |
|
toSupplement() { |
|
// 补单 |
|
this.supplementDialog = true; |
|
}, |
|
toSupplementZeYi() { |
|
// 则一补单 |
|
this.supplementZeYiDialog = true; |
|
}, |
|
toOrderTf() { |
|
// 订单匹配 |
|
this.orderTfDialog = true; |
|
}, |
|
toOutPut() { |
|
// 导出 |
|
this.outPutDialog = true; |
|
}, |
|
formatJson(filterVal, jsonData) { |
|
// 处理数据 |
|
// console.log('filterVal:' + JSON.stringify(filterVal)) |
|
// console.log('jsonData:' + JSON.stringify(jsonData)) |
|
return jsonData.map((v) => |
|
filterVal.map((j) => { |
|
if (j.indexOf(".") < 0) { |
|
return v[j]; |
|
} |
|
const keyArr = j.split("."); |
|
let data = v[keyArr[0]]; |
|
for (var i = 1; i < keyArr.length; i++) { |
|
if (data) { |
|
data = data[keyArr[i]]; |
|
} |
|
} |
|
return data; |
|
}) |
|
); |
|
}, |
|
async outputData() { |
|
// 导出数据 |
|
let tmpData = []; |
|
const status = this.output.outputType; |
|
if (status === 1) { |
|
tmpData = this.multipleSelection; |
|
this.ImportExcel(tmpData); |
|
} else if (status === 3 || status === 2) { |
|
const endIndex = |
|
(parseInt(this.output.endPage) + |
|
1 - |
|
parseInt(this.output.startPage)) * |
|
parseInt(this.output.pageSize); |
|
const searchParam = { ...this.page }; |
|
searchParam.pageSize = endIndex; |
|
searchParam.currentPage = this.output.startPage; |
|
searchParam.params.null_convertRelationOrderId = true; |
|
const res = await orderInfoApi.getByCustomPage(searchParam); |
|
tmpData = res.data.list; |
|
this.ImportExcel(tmpData); |
|
} else if (status === 4) { |
|
const searchParam = { ...this.page }; |
|
searchParam.currentPage = this.output.startPage; |
|
searchParam.params.endPage = this.output.endPage; |
|
searchParam.params.null_convertRelationOrderId = true; |
|
orderInfoApi |
|
.export2Web(searchParam) |
|
.then((res) => { |
|
if (res.code === 20000) { |
|
this.$message.success(res.msg); |
|
} else { |
|
this.$message.error(res.msg); |
|
} |
|
}) |
|
.catch((err) => { |
|
this.$message.error(err); |
|
}); |
|
} else { |
|
const cs = await orderInfoApi.getCount(); |
|
const dataCount = cs.data; |
|
|
|
const searchParam = { |
|
currentPage: 1, |
|
pageSize: dataCount, |
|
}; |
|
const res = await orderInfoApi.getByCustomPage(searchParam); |
|
tmpData = res.data.list; |
|
this.ImportExcel(tmpData); |
|
} |
|
this.outPutDialog = false; |
|
}, |
|
ImportExcel(tmpData) { |
|
tmpData = tmpData.map((item) => { |
|
if (item["payAccountType"] === 0) { |
|
item["payAccountType"] = "个人账户支付"; |
|
} else if (item["payAccountType"] === 1) { |
|
item["payAccountType"] = "企业账户支付"; |
|
} else { |
|
item["payAccountType"] = "未识别"; |
|
} |
|
if (item["orderStatus"] === 0) { |
|
item["orderStatus"] = "待支付"; |
|
} else if (item["orderStatus"] === 1) { |
|
item["orderStatus"] = "已支付"; |
|
} else if (item["orderStatus"] === 2) { |
|
item["orderStatus"] = "已取消"; |
|
} else if (item["orderStatus"] === 3) { |
|
item["orderStatus"] = "已退款"; |
|
} else if (item["orderStatus"] === -1) { |
|
item["orderStatus"] = "支付失败"; |
|
} else { |
|
item["orderStatus"] = "未识别"; |
|
} |
|
|
|
if (!item["suppleRemak"]) { |
|
item["suppleRemak"] = "暂无"; |
|
} |
|
return item; |
|
}); |
|
import("@/vendor/Export2Excel").then((excel) => { |
|
const data = this.formatJson(this.valColumn, tmpData); |
|
excel.export_json_to_excel({ |
|
header: this.headers, |
|
data: data, |
|
autoWidth: true, |
|
bookType: "xlsx", |
|
}); |
|
this.$message.success("导出成功"); |
|
}); |
|
}, |
|
handleDetail(id) { |
|
// 查看行 详情 |
|
console.log(id); |
|
orderInfoApi.getInfo(id).then((res) => { |
|
this.orderInfo = res.data; |
|
this.showTableDrawer = true; |
|
}); |
|
}, |
|
handleDetailBySerialNumber(id) { |
|
// 查看行 详情 |
|
orderInfoApi.getInfoBySerialNumber(id).then((res) => { |
|
this.orderInfo = res.data; |
|
this.showTableDrawer = true; |
|
}); |
|
}, |
|
getHeight() { |
|
// 获取浏览器高度并计算得到表格所用高度。 |
|
this.tableHeight = |
|
document.documentElement.clientHeight - 300 - 60 - 60 - 100; |
|
console.log(this.tableHeight); |
|
console.log(document.documentElement.clientHeight); |
|
}, |
|
search() { |
|
// 搜索 |
|
this.page.currentPage = 1; |
|
this.getByPage(); |
|
}, |
|
toggleSearchAdvance() { |
|
this.searchAdvice = !this.searchAdvice; |
|
}, |
|
handleSizeChange(val) { |
|
this.page.pageSize = val; |
|
this.getByPage(); |
|
}, |
|
handleCurrentChange(val) { |
|
this.page.currentPage = val; |
|
this.getByPage(); |
|
}, |
|
sortHandler(column) { |
|
// 排序查询 |
|
const key = column.prop; |
|
const value = column.order; |
|
this.page.sorted = {}; |
|
this.page.sorted[key] = value; |
|
this.getByPage(); |
|
}, |
|
toUpdate(id) { |
|
// 跳转到更新 |
|
orderInfoApi.get(id).then((res) => { |
|
this.orderInfo = res.data; |
|
this.updateDialog = true; |
|
}); |
|
}, |
|
toTYRefund(row) { |
|
openTicketApi.shouldRefund(row.orderSerialNumber).then((res) => { |
|
console.log(res); |
|
if ( |
|
res.msg == |
|
"该笔订单有申请开票记录,请核实情况后再退款,是否继续退款。" |
|
) { |
|
this.$confirm(res.msg, "提示", { |
|
confirmButtonText: "确定", |
|
cancelButtonText: "取消", |
|
type: "warning", |
|
}) |
|
.then(() => { |
|
this.$confirm( |
|
` |
|
您确定要对该团油订单进行退款?当前退款人为[<span style="color:red">${row.oilCustomerInfo.name}</span>]。<br/> |
|
退款人手机号[<span style="color: red">${row.oilCustomerInfo.phone}</span>], |
|
退款金额[<span style="color: red">${row.payRealAmount}</span>]元<br/> |
|
`, |
|
|
|
"提示", |
|
{ type: "info", dangerouslyUseHTMLString: true } |
|
).then(() => { |
|
tyApi.refund(row.id).then((res) => { |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
}); |
|
}) |
|
.catch(() => { |
|
this.$message({ |
|
type: "info", |
|
message: "取消退款", |
|
}); |
|
}); |
|
} else if (res.code == 40000) { |
|
this.$message.error(res.msg); |
|
} else if (res.code == 20000) { |
|
this.$confirm( |
|
` |
|
您确定要对该团油订单进行退款?当前退款人为[<span style="color:red">${row.oilCustomerInfo.name}</span>]。<br/> |
|
退款人手机号[<span style="color: red">${row.oilCustomerInfo.phone}</span>], |
|
退款金额[<span style="color: red">${row.payRealAmount}</span>]元<br/> |
|
`, |
|
|
|
"提示", |
|
{ type: "info", dangerouslyUseHTMLString: true } |
|
).then(() => { |
|
tyApi.refund(row.id).then((res) => { |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
}); |
|
} |
|
}); |
|
// 团油退款 |
|
}, |
|
toRefund(row) { |
|
// 星油退款 |
|
console.log("测试"); |
|
console.log(row); |
|
openTicketApi.shouldRefund(row.orderSerialNumber).then((res) => { |
|
console.log(res); |
|
if ( |
|
res.msg == |
|
"该笔订单有申请开票记录,请核实情况后再退款,是否继续退款。" |
|
) { |
|
this.$confirm(res.msg, "提示", { |
|
confirmButtonText: "确定", |
|
cancelButtonText: "取消", |
|
type: "warning", |
|
}) |
|
.then(() => { |
|
this.$confirm( |
|
` |
|
您确定要对该星油订单进行退款?当前退款人为[<span style="color:red">${row.oilCustomerInfo.name}</span>]。<br/> |
|
退款人手机号[<span style="color: red">${row.oilCustomerInfo.phone}</span>], |
|
退款金额[<span style="color: red">${row.payRealAmount}</span>]元<br/> |
|
`, |
|
|
|
"提示", |
|
{ type: "info", dangerouslyUseHTMLString: true } |
|
).then(() => { |
|
if (row.openStatus == 1) { |
|
orderInfoApi.refundByOpenStatus(row).then((res) => { |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
} else { |
|
orderInfoApi.refund(row.id).then((res) => { |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
} |
|
}); |
|
}) |
|
.catch(() => { |
|
this.$message({ |
|
type: "info", |
|
message: "取消退款", |
|
}); |
|
}); |
|
} else if (res.code == 40000) { |
|
this.$message.error(res.msg); |
|
} else if (res.code == 20000) { |
|
console.log("发起退款"); |
|
this.$confirm( |
|
` |
|
您确定要对该星油订单进行退款?当前退款人为[<span style="color:red">${row.oilCustomerInfo.name}</span>]。<br/> |
|
退款人手机号[<span style="color: red">${row.oilCustomerInfo.phone}</span>], |
|
退款金额[<span style="color: red">${row.payRealAmount}</span>]元<br/> |
|
`, |
|
|
|
"提示", |
|
{ type: "info", dangerouslyUseHTMLString: true } |
|
).then(() => { |
|
if (row.openStatus == 1) { |
|
console.log(row); |
|
orderInfoApi.refundByOpenStatus(row).then((res) => { |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
} else { |
|
orderInfoApi.refund(row.id).then((res) => { |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
} |
|
}); |
|
} |
|
}); |
|
}, |
|
toRefundSf(row) { |
|
console.log(row.id); |
|
// 通联退款 |
|
this.$confirm( |
|
` |
|
您确定要对该顺丰订单进行退款?当前退款人为[<span style="color:red">${row.oilCustomerInfo.name}</span>]。<br/> |
|
退款人手机号[<span style="color: red">${row.oilCustomerInfo.phone}</span>], |
|
退款金额[<span style="color: red">${row.payRealAmount}</span>]元<br/> |
|
`, |
|
|
|
"提示", |
|
{ type: "info", dangerouslyUseHTMLString: true } |
|
).then(() => { |
|
let obj = { |
|
id: row.id, |
|
}; |
|
orderInfoApi.refundSf(obj).then((res) => { |
|
console.log(res); |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
}); |
|
}, |
|
toCancelSf(row) { |
|
//顺丰退款 |
|
console.log(row.id); |
|
// 通联退款 |
|
this.$confirm( |
|
` |
|
您确定要对该顺丰订单进行取消?当前取消人为[<span style="color:red">${row.oilCustomerInfo.name}</span>]。<br/> |
|
取消人手机号[<span style="color: red">${row.oilCustomerInfo.phone}</span>], |
|
取消金额[<span style="color: red">${row.payRealAmount}</span>]元<br/> |
|
`, |
|
|
|
"提示", |
|
{ type: "info", dangerouslyUseHTMLString: true } |
|
).then(() => { |
|
let obj = { |
|
id: row.id, |
|
}; |
|
console.log("obj:", obj, "row:", row); |
|
orderInfoApi.toCancelSf(row.id).then((res) => { |
|
console.log(res); |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
}); |
|
}, |
|
toTongLianRefund(row) { |
|
console.log(row.id); |
|
// 通联退款 |
|
this.$confirm( |
|
` |
|
您确定要对该星油订单进行退款?当前退款人为[<span style="color:red">${row.oilCustomerInfo.name}</span>]。<br/> |
|
退款人手机号[<span style="color: red">${row.oilCustomerInfo.phone}</span>], |
|
退款金额[<span style="color: red">${row.payRealAmount}</span>]元<br/> |
|
`, |
|
|
|
"提示", |
|
{ type: "info", dangerouslyUseHTMLString: true } |
|
).then(() => { |
|
console.log(row); |
|
if (row.openStatus == 1) { |
|
orderInfoApi.refundByOpenStatus(row).then((res) => { |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
} else { |
|
orderInfoApi.refund(row.id).then((res) => { |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
} |
|
}); |
|
}, |
|
toCancelOrder(row) { |
|
openTicketApi.shouldRefund(row.orderSerialNumber).then((res) => { |
|
console.log(res); |
|
if ( |
|
res.msg == |
|
"该笔订单有申请开票记录,请核实情况后再退款,是否继续退款。" |
|
) { |
|
this.$confirm(res.msg, "提示", { |
|
confirmButtonText: "确定", |
|
cancelButtonText: "取消", |
|
type: "warning", |
|
}) |
|
.then(() => { |
|
this.$confirm( |
|
` |
|
您确定要对该则一订单进行退款?当前退款人为[<span style="color:red">${row.oilCustomerInfo.name}</span>]。<br/> |
|
退款人手机号[<span style="color: red">${row.oilCustomerInfo.phone}</span>], |
|
退款金额[<span style="color: red">${row.payRealAmount}</span>]元<br/> |
|
`, |
|
|
|
"提示", |
|
{ type: "info", dangerouslyUseHTMLString: true } |
|
).then(() => { |
|
oilSiteInfoApi.cancelOrder(row.id).then((res) => { |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
}); |
|
}) |
|
.catch(() => { |
|
this.$message({ |
|
type: "info", |
|
message: "取消退款", |
|
}); |
|
}); |
|
} else if (res.code == 40000) { |
|
this.$message.error(res.msg); |
|
} else if (res.code == 20000) { |
|
this.$confirm( |
|
` |
|
您确定要对该则一订单进行退款?当前退款人为[<span style="color:red">${row.oilCustomerInfo.name}</span>]。<br/> |
|
退款人手机号[<span style="color: red">${row.oilCustomerInfo.phone}</span>], |
|
退款金额[<span style="color: red">${row.payRealAmount}</span>]元<br/> |
|
`, |
|
|
|
"提示", |
|
{ type: "info", dangerouslyUseHTMLString: true } |
|
).then(() => { |
|
oilSiteInfoApi.cancelOrder(row.id).then((res) => { |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
}); |
|
} |
|
}); |
|
|
|
// 则一退款 |
|
}, |
|
|
|
toDelete(id) { |
|
// 删除 |
|
this.$confirm("确定删除?", "提示", { type: "error" }).then(() => { |
|
orderInfoApi.deleteById(id).then((res) => { |
|
this.$message.success(res.msg); |
|
this.getByPage(); |
|
}); |
|
}); |
|
}, |
|
getByPage() { |
|
this.addDialog = false; |
|
|
|
if (this.page.params.orderStatus === "" && this.orderFlag) { |
|
delete this.page.params.orderStatus; |
|
console.log("删除订单标识"); |
|
} else { |
|
this.orderFlag = true; |
|
} |
|
console.log("订单标识"); |
|
console.log(this.orderFlag); |
|
if ( |
|
this.page.params.createTime != null && |
|
this.page.params.createTime != "" |
|
) { |
|
this.page.params.createTime_start = |
|
this.page.params.createTime.split("~")[0]; |
|
this.page.params.createTime_end = |
|
this.page.params.createTime.split("~")[1]; |
|
} |
|
|
|
this.page.params.payAccountType = this.payAccountType_t; |
|
if (this.payAccountType_t == 2) { |
|
delete this.page.params.payAccountType; |
|
} |
|
if ( |
|
this.page.params.orderStatus == "" && |
|
this.page.params.orderStatus != 0 |
|
) { |
|
delete this.page.params.orderStatus; |
|
} |
|
|
|
orderInfoApi.getByCustomPage(this.page).then((res) => { |
|
this.dataPage = res.data; |
|
this.page.totalCount = this.dataPage.totalCount; |
|
this.page.totalPage = this.dataPage.totalPage; |
|
this.getStatisticData(); |
|
}); |
|
}, |
|
async getStatisticData() { |
|
// 查询统计信息 |
|
|
|
const res = await orderInfoApi.statisticOrderTotalData(this.page); |
|
this.totalData = res.data ? res.data : {}; |
|
|
|
const res1 = await orderInfoApi.statisticOrderTotalDataByType(this.page); |
|
this.totalTypeData = res1.data; |
|
const res2 = await orderInfoApi.statisticOrderTotalDataByChannel( |
|
this.page |
|
); |
|
this.totalChannelData = res2.data; |
|
}, |
|
closeDialog() { |
|
this.addDialog = false; |
|
this.updateDialog = false; |
|
this.supplementDialog = false; |
|
this.supplementZeYiDialog = false; |
|
this.orderTfDialog = false; |
|
}, |
|
}, |
|
}; |
|
</script> |
|
<style lang="scss" scoped> |
|
>>> .foot-page { |
|
margin-top: 0 !important; |
|
} |
|
|
|
.felxLayout { |
|
display: flex; |
|
flex-direction: column; |
|
} |
|
|
|
.el-form { |
|
max-height: 300px; |
|
overflow: hidden; |
|
transition: 0.5s; |
|
} |
|
|
|
.statistic-container { |
|
display: flex; |
|
flex-direction: column; |
|
text-align: left; |
|
background-color: #3595f8; |
|
margin-top: 20px; |
|
color: #fff; |
|
|
|
.statictic-item { |
|
display: flex; |
|
height: 100px; |
|
justify-content: space-between; |
|
align-items: center; |
|
margin: 15px 0; |
|
|
|
.left-count { |
|
width: 16%; |
|
display: flex; |
|
flex-direction: column; |
|
justify-content: center; |
|
align-items: center; |
|
|
|
.count { |
|
font-size: 34px; |
|
font-weight: bold; |
|
} |
|
|
|
.text { |
|
font-size: 14px; |
|
margin-top: 5px; |
|
} |
|
} |
|
|
|
.right-container { |
|
width: 84%; |
|
height: 100%; |
|
display: flex; |
|
justify-content: start; |
|
align-items: center; |
|
|
|
.right-item { |
|
width: 25%; |
|
height: 100%; |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
|
|
.pie-table { |
|
margin-right: 15px; |
|
background-color: #fff; |
|
width: 100px; |
|
height: 100px; |
|
border-radius: 50%; |
|
color: #33334d; |
|
display: flex; |
|
justify-content: center; |
|
align-items: center; |
|
} |
|
|
|
.statis-info { |
|
font-size: 14px; |
|
font-weight: bold; |
|
display: flex; |
|
height: 100%; |
|
flex-direction: column; |
|
justify-content: space-evenly; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
</style> |
|
<style scoped> |
|
.box_daochu { |
|
padding: 3%; |
|
} |
|
|
|
.column-info-container { |
|
display: flex; |
|
align-items: center; |
|
} |
|
|
|
.column-info-icon { |
|
color: #4988fd; |
|
margin-right: 10px; |
|
} |
|
|
|
.column-info-icon .icon { |
|
width: 20px; |
|
height: 20px; |
|
} |
|
|
|
.column-info-content { |
|
font-size: 12px; |
|
} |
|
|
|
.handle-button-group { |
|
margin-bottom: 10px; |
|
} |
|
|
|
.supplement-header { |
|
display: flex; |
|
line-height: 2.5rem; |
|
color: #000; |
|
} |
|
|
|
.supplement-header img { |
|
background-size: cover; |
|
width: 2.5rem; |
|
margin-right: 0.8rem; |
|
} |
|
|
|
.table-header /deep/ .table-list { |
|
/* max-height: 100% !important; */ |
|
} |
|
</style>
|
|
|