easypay-admin/src/views/examine/index.vue
2024-03-08 09:30:20 +08:00

2163 lines
84 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="divBox relative">
<el-card class="box-card">
<div class="clearfix">
<div class="container">
<el-form size="small" label-width="100px">
<el-form-item label="订单类型:" v-if="false">
<el-radio-group v-model="tableFrom.type" type="button" class="mr20" size="small"
@change="seachList">
<el-radio-button v-for="(item, i) in options" :key="i" :label="item.value">{{
item.label
}}</el-radio-button>
</el-radio-group>
</el-form-item>
<div style="display: flex;padding-left: 20px;margin-bottom: 20px;" >
<div class="tit" style="font-size: 22px;">剩余待领取订单数量:<span style="color: red;">{{ allOrderNum}}</span></div>
</div>
<el-form-item label="订单领取:">
<el-radio-group v-model="orderNum">
<el-radio-button label="10"></el-radio-button>
<el-radio-button label="20"></el-radio-button>
<el-radio-button label="30"></el-radio-button>
<el-radio-button label="40"></el-radio-button>
</el-radio-group>
<el-input v-model="orderNum" placeholder="请输入要领取的订单数量" style="width: 80px;" size="small"
>
</el-input>
<el-button type="primary" @click="getOrder()">确认领取</el-button>
</el-form-item>
<el-form-item label="订单状态:" v-if="checkPermi(['admin:order:status:num'])">
<el-radio-group v-model="tableFrom.status" type="button" @change="seachList">
<el-radio-button label="all">全部 {{ '(' + orderChartType.all ? orderChartType.all : 0 + ')'
}}</el-radio-button>
<el-radio-button label="unPaid" v-if="false">未支付 {{ '(' + orderChartType.unPaid ?
orderChartType.unPaid : 0 + ')'
}}</el-radio-button>
<el-radio-button label="audit">待审核 {{ '(' + orderChartType.audit ? orderChartType.audit : 0
+ ')'
}}</el-radio-button>
<el-radio-button label="awaitSign" >待签约 {{ '(' + orderChartType.awaitSign ?
orderChartType.awaitSign : 0 +
')' }}</el-radio-button>
<el-radio-button label="notShipped" >未发货 {{ '(' + orderChartType.notShipped ?
orderChartType.notShipped : 0
+ ')' }}</el-radio-button>
<!-- <el-radio-button label="spike"-->
<!-- >待收货 {{ '(' + orderChartType.spike ? orderChartType.spike : 0 + ')' }}</el-radio-button-->
<!-- >-->
<el-radio-button label="inUse" >使用中 {{ '(' + orderChartType.inUse ?
orderChartType.inUse : 0 + ')'
}}</el-radio-button>
<el-radio-button label="bargain">待评价 {{ '(' + orderChartType.bargain ?
orderChartType.bargain : 0 + ')'
}}</el-radio-button>
<el-radio-button label="complete" >交易完成 {{ '(' + orderChartType.complete ?
orderChartType.complete : 0 +
')' }}</el-radio-button>
<el-radio-button label="toBeWrittenOff" v-if="false">待核销
{{ '(' + orderChartType.toBeWrittenOff ? orderChartType.toBeWrittenOff : 0 + ')'
}}</el-radio-button>
<el-radio-button label="refunding" v-if="false">退款中 {{ '(' + orderChartType.refunding ?
orderChartType.refunding : 0 +
')' }}</el-radio-button>
<el-radio-button label="refunded" v-if="false">已退款 {{ '(' + orderChartType.refunded ?
orderChartType.refunded : 0 + ')'
}}</el-radio-button>
<el-radio-button label="auditReject" >已驳回 {{ '(' + orderChartType.auditReject ?
orderChartType.auditReject
: 0 + ')' }}</el-radio-button>
<el-radio-button label="deleted" v-if="false">已删除 {{ '(' + orderChartType.deleted ?
orderChartType.deleted : 0 + ')'
}}</el-radio-button>
<el-radio-button label="audited" v-if="false">已审核 {{ '(' + orderChartType.deleted ?
orderChartType.deleted : 0 + ')'
}}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="时间选择:" class="width100" v-if="false">
<el-radio-group v-model="tableFrom.dateLimit" type="button" class="mr20" size="small"
@change="selectChange(tableFrom.dateLimit)">
<el-radio-button v-for="(item, i) in fromList.fromTxt" :key="i" :label="item.val">{{
item.text
}}</el-radio-button>
</el-radio-group>
<el-date-picker v-model="timeVal" value-format="yyyy-MM-dd" format="yyyy-MM-dd" size="small"
type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 220px"
@change="onchangeTime" />
</el-form-item>
<div class="smallbox" style="display: flex;flex-wrap: wrap;">
<el-form-item label="订单号:">
<el-input v-model="tableFrom.orderNo" placeholder="请输入订单号" class="selWidth" size="small"
clearable>
<el-button slot="append" icon="el-icon-search" size="small" @click="seachList" />
</el-input>
</el-form-item>
<el-form-item label="用户姓名:">
<el-input v-model="tableFrom.userName" placeholder="请输入用户姓名" class="selWidth" size="small"
clearable>
<el-button slot="append" icon="el-icon-search" size="small" @click="seachList" />
</el-input>
</el-form-item>
</div>
<el-form-item class="width100">
<el-button size="small" @click="exports"
v-hasPermi="['admin:export:excel:order']">导出</el-button>
</el-form-item>
</el-form>
</div>
</div>
</el-card>
<el-card class="box-card">
<el-table v-loading="listLoading" border :data="tableData.data" size="mini" class="table"
highlight-current-row :header-cell-style="{ fontWeight: 'bold' }" :row-key="(row) => {
return row.orderId;
}
">
<!-- @selection-change="handleSelectionChange" -->
<!-- <el-table-column
type="selection"
:reserve-selection="true"
width="55"
/> -->
<!-- <el-table-column label="订单号" min-width="210" v-if="checkedCities.includes('订单号')">
<template slot-scope="scope">
<span style="display: block" v-text="scope.row.orderId" />
<span v-show="scope.row.isDel" style="color: #ed4014; display: block">用户已删除</span>
</template>
</el-table-column> -->
<el-table-column label="ID" min-width="50">
<template slot-scope="scope">
<span v-text="scope.row.id"></span>
</template>
</el-table-column>
<el-table-column label="订单信息" min-width="265" >
<template slot-scope="scope">
<div class="list">
<div class="li">订单编号: <span v-text="scope.row.orderId"></span></div>
</div>
<div class="list">
<div class="li">订单类型: <span v-text="scope.row.orderType"></span></div>
</div>
<div class="list">
<div class="li">下单时间: <span v-text="scope.row.createTime"></span></div>
</div>
<div class="list">
<div class="li">支付时间: <span v-text="scope.row.createTime"></span></div>
</div>
</template>
</el-table-column>
<!-- <el-table-column label="订单信息" min-width="210" max-width="210" >
<template slot-scope="scope">
<div class="list1" style="width: 210px;">
<div class="img">
<img src="http://img01.taobaocdn.com/bao/uploaded/i1/184783763/O1CN01kpWgHk1dfVJXquPtk_!!0-item_pic.jpg"
alt="">
</div>
<div class="info">
<div class="li">会员编号 <span>06605046</span></div>
<div class="li">会员等级: <span>普通会员</span></div>
</div>
</div>
</template>
</el-table-column> -->
<!-- <el-table-column prop="orderType" label="订单类型" min-width="110" v-if="checkedCities.includes('订单类型')" /> -->
<!-- <el-table-column prop="realName" label="收货人" min-width="100" v-if="checkedCities.includes('收货人')" /> -->
<el-table-column label="商品信息" min-width="200" v-if="checkedCities.includes('商品信息')">
<template slot-scope="scope">
<el-popover trigger="hover" placement="right" :open-delay="800">
<div v-if="scope.row.productList && scope.row.productList.length" slot="reference">
<div v-for="(val, i) in scope.row.productList" :key="i" class="tabBox acea-row row-middle"
style="flex-wrap: inherit">
<div class="demo-image__preview mr10">
<el-image :src="val.info.image" :preview-src-list="[val.info.image]" />
</div>
<div class="text_overflow">
<span class="tabBox_tit mr10">{{ val.info.productName + ' | ' }}{{ val.info.sku ? val.info.sku : '-'
}}</span>
<span class="tabBox_pice">{{
'¥' + val.info.price ? val.info.price + ' x ' + val.info.payNum : '-'
}}</span>
</div>
</div>
</div>
<div class="pup_card" v-if="scope.row.productList && scope.row.productList.length">
<div v-for="(val, i) in scope.row.productList" :key="i" class="tabBox acea-row row-middle"
style="flex-wrap: inherit">
<div class="">
<span class="tabBox_tit mr10">{{ val.info.productName + ' | ' }}{{ val.info.sku ? val.info.sku : '-'
}}</span>
<span class="tabBox_pice">{{
'¥' + val.info.price ? val.info.price + ' x ' + val.info.payNum : '-'
}}</span>
</div>
</div>
</div>
</el-popover>
</template>
</el-table-column>
<!-- <el-table-column prop="payPrice" label="实际支付" min-width="80" v-if="checkedCities.includes('实际支付')" /> -->
<!-- <el-table-column label="支付方式" min-width="80" v-if="checkedCities.includes('支付方式')">
<template slot-scope="scope">
<span>{{ scope.row.payTypeStr }}</span>
</template>
</el-table-column> -->
<el-table-column label="订单状态" min-width="150" v-if="checkedCities.includes('订单状态')">
<template slot-scope="scope">
<div>
<div v-if="scope.row.refundStatus === 1 || scope.row.refundStatus === 2" class="refunding">
<template>
<el-popover trigger="hover" placement="left" :open-delay="500">
<b style="color: #f124c7; cursor: pointer" slot="reference">{{ scope.row.statusStr.value }}</b>
<div class="pup_card flex-column">
<span>退款原因:{{ scope.row.refundReasonWap }}</span>
<span>备注说明:{{ scope.row.refundReasonWapExplain }}</span>
<span>退款时间:{{ scope.row.refundReasonTime }}</span>
<span class="acea-row">
退款凭证:
<template v-if="scope.row.refundReasonWapImg">
<div v-for="(item, index) in scope.row.refundReasonWapImg.split(',')" :key="index"
class="demo-image__preview" style="width: 35px; height: auto; display: inline-block">
<el-image :src="item" :preview-src-list="[item]" />
</div>
</template>
<span v-else style="display: inline-block">无</span>
</span>
</div>
</el-popover>
</template>
</div>
<div v-if="scope.row.statusStr.value === '待审核'">当前状态:<span style="color: green;">{{ scope.row.statusStr.value }}</span></div>
<div v-if="scope.row.statusStr.value === '审核失败'">当前状态:<span style="color: red;">{{ scope.row.statusStr.value }}</span></div>
<div v-else>当前状态:<span>{{ scope.row.statusStr.value }}</span></div>
<div >渠道名称: <span>{{scope.row.channel}}</span></div>
<div>审核人员:{{ scope.row.auditor }}</div>
<div>支付方式:{{ scope.row.payTypeStr }}</div>
<div>实际金额:{{ scope.row.payPrice }}</div>
</div>
</template>
</el-table-column>
<!-- <el-table-column prop="createTime" label="下单时间" min-width="150" v-if="checkedCities.includes('下单时间')" /> -->
<el-table-column label="用户信息" min-width="150" max-width="150">
<template slot-scope="scope">
<div class="list1" style="width: 150px;">
<div class="info" style="width: 150px;">
<div class="li" style="width: 100%;">姓名: <span v-text="scope.row.realName"></span></div>
<div class="li" style="margin-right: 10px;">性别: <span>{{ scope.row.sex }}</span></div>
<div class="li">年龄: <span>{{ scope.row.age }}</span></div>
<div class="li" v-if="scope.row.systemLoginLog">浏览器: <span>{{ scope.row.systemLoginLog.browserName }}</span></div>
<div class="li" style="width: 100%;" v-if="scope.row.systemLoginLog">定位: <span></span></div>
<div class="li" style="width: 100%;" v-if="scope.row.systemLoginLog">手机型号: <span>{{ scope.row.systemLoginLog.deviceModel }}</span></div>
<div class="li" style="width: 100%;" v-if="scope.row.systemLoginLog">下单IP <span>{{ scope.row.systemLoginLog.ipaddr }}</span></div>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="操作" min-width="250" fixed="right" align="center" :render-header="renderHeader">
<template slot-scope="scope">
<el-button size="small" @click.native="onOrderDetails(scope.row.orderId)">订单详情</el-button>
<!-- scope.row.uid -->
<el-button size="small" @click.native="getuserinfo(scope.row.uid)">用户信息</el-button>
<el-button size="small" style="margin-top: 10px;"
v-if="scope.row.orderType == '[分期订单]' && scope.row.statusStr.key === 'audit' && checkPermi(['admin:order:audit'])"
@click="onAudit(scope.row)">审核订单</el-button>
<el-button size="small" @click="sendOrder(scope.row)" v-if="scope.row.statusStr.key === 'notShipped' &&
scope.row.refundStatus === 0 &&
checkPermi(['admin:order:send'])
">发货</el-button>
<el-button size="small" style="margin-top: 10px;" @click="showht(scope.row.contractUrl)"
v-if="scope.row.contractUrl">查看合同</el-button>
<el-button size="small" style="margin-top: 10px;" v-if="scope.row.statusStr.key!='inUse' "
@click.native="handleDelete(scope.row, scope.$index)" >取消订单</el-button>
<!-- <el-button
v-if="scope.row.paid === false && !scope.row.isAlterPrice && checkPermi(['admin:order:update:price'])"
type="text"
size="small"
@click="edit(scope.row)"
class="mr10"
>编辑</el-button
>
<el-button
v-if="scope.row.orderType == '[分期订单]' && scope.row.statusStr.key === 'audit' && checkPermi(['admin:order:audit'])"
type="text"
size="small"
@click="onAudit(scope.row)"
class="mr10"
>审核</el-button
> -->
<!-- <el-button-->
<!-- v-if="scope.row.orderType == '[分期订单]' && scope.row.statusStr.key === 'audit'"-->
<!-- type="text"-->
<!-- size="small"-->
<!-- @click="userDetail(scope.row)"-->
<!-- class="mr10"-->
<!-- >用户详情</el-button>-->
<!-- <el-button
v-if="
scope.row.statusStr.key === 'notShipped' &&
scope.row.refundStatus === 0 &&
checkPermi(['admin:order:send'])
"
type="text"
size="small"
class="mr10"
@click="sendOrder(scope.row)"
>发送货</el-button
> -->
<!--视频号订单不可修改-->
<!-- <el-button
v-if="
scope.row.statusStr.key === 'spike' &&
scope.row.type === 0 &&
checkPermi(['admin:order:tracking:number:update']) &&
!scope.row.shipmentTaskId
"
type="text"
size="small"
class="mr10"
@click="handleUpdateNumber(scope.row)"
>修改快递单号</el-button
> -->
<!-- <el-button
v-if="
scope.row.statusStr.key === 'toBeWrittenOff' &&
scope.row.paid == true &&
scope.row.refundStatus === 0 &&
checkPermi(['admin:order:write:update'])
"
type="text"
size="small"
class="mr10"
@click="onWriteOff(scope.row)"
>立即核销</el-button
> -->
<el-dropdown trigger="click" v-show="false">
<span class="el-dropdown-link"> 更多<i class="el-icon-arrow-down el-icon--right" /> </span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="onOrderDetails(scope.row.orderId)"
v-if="checkPermi(['admin:order:info'])">订单详情</el-dropdown-item>
<el-dropdown-item @click.native="onInstallmentBills(scope.row.id)" v-if="checkPermi(['admin:order:info'])"
v-show="scope.row.orderType == '[分期订单]' && scope.row.statusStr.key != 'audit' && scope.row.statusStr.key != 'auditReject'">查看账单</el-dropdown-item>
<el-dropdown-item @click.native="onOrderLog(scope.row.orderId)"
v-if="checkPermi(['admin:order:status:list'])">订单记录</el-dropdown-item>
<el-dropdown-item @click.native="onOrderMark(scope.row)"
v-if="checkPermi(['admin:order:mark'])">订单备注</el-dropdown-item>
<el-dropdown-item v-if="scope.row.refundStatus === 1 && checkPermi(['admin:order:refund:refuse'])"
@click.native="onOrderRefuse(scope.row)">拒绝退款</el-dropdown-item>
<!--v-show="((scope.row.statusStr.key !== 'refunded' && scope.row.statusStr.key !== 'unPaid') && (parseFloat(scope.row.payPrice) >= parseFloat(scope.row.refundPrice))) || (scope.row.payPrice == 0 && [0,1].indexOf(scope.row.refundStatus) !== -1)"-->
<el-dropdown-item v-if="scope.row.refundStatus === 1 && checkPermi(['admin:order:refund'])"
@click.native="onOrderRefund(scope.row)">立即退款</el-dropdown-item>
<el-dropdown-item v-if="scope.row.statusStr.key === 'deleted' && checkPermi(['admin:order:delete'])"
@click.native="handleDelete(scope.row, scope.$index)">删除订单</el-dropdown-item>
<el-dropdown-item v-if="scope.row.statusStr.key !== 'unPaid'"
@click.native="onOrderPrint(scope.row)">打印小票</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</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 class="card_abs" v-show="card_select_show">
<template>
<div class="cell_ht">
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll"
@change="handleCheckAllChange">全选</el-checkbox>
<el-button type="text" @click="checkSave()">保存</el-button>
</div>
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
<el-checkbox v-for="item in columnData" :label="item" :key="item" class="check_cell">{{ item
}}</el-checkbox>
</el-checkbox-group>
</template>
</div>
<!--编辑-->
<el-dialog title="编辑订单" :visible.sync="dialogVisible" width="500px" :before-close="handleClose">
<zb-parser v-if="dialogVisible" :form-id="104" :is-create="isCreate" :edit-data="editData"
@submit="handlerSubmit" @resetForm="resetForm" />
</el-dialog>
<!--记录-->
<el-dialog title="操作记录" :visible.sync="dialogVisibleJI" width="700px">
<el-table v-loading="LogLoading" border :data="tableDataLog.data" style="width: 100%">
<el-table-column prop="oid" align="center" label="ID" min-width="80" />
<el-table-column prop="changeMessage" label="操作记录" align="center" min-width="280" />
<el-table-column prop="createTime" label="操作时间" align="center" min-width="280" />
</el-table>
<div class="block">
<el-pagination :page-sizes="[10, 20, 30, 40]" :page-size="tableFromLog.limit"
:current-page="tableFromLog.page" layout="total, sizes, prev, pager, next, jumper"
:total="tableDataLog.total" @size-change="handleSizeChangeLog" @current-change="pageChangeLog" />
</div>
</el-dialog>
<!--账单记录-->
<el-dialog title="账单记录" :visible.sync="dialogVisibleInstallment" width="1200px">
<el-table v-loading="InstallmentLoading" border :data="tableDataInstallment.data" style="width: 100%">
<el-table-column prop="id" align="center" label="ID" min-width="80" />
<el-table-column prop="uid" align="center" label="客户" min-width="80" />
<el-table-column prop="repaymentAmount" align="center" label="还款金额" min-width="80" />
<el-table-column prop="installmentNumber" align="center" label="第几期" min-width="80" />
<el-table-column prop="repaymentDeadline" align="center" label="还款时间" min-width="280" />
<el-table-column prop="repaymentStatus" align="center" label="还款状态" min-width="80" />
<el-table-column prop="paymentMethod" align="center" label="还款方式" min-width="80" />
<el-table-column prop="createTime" label="创建时间" align="center" min-width="280" />
</el-table>
<div class="block">
<el-pagination :page-sizes="[10, 20, 30, 40]" :page-size="tableFromInstall.limit"
:current-page="tableFromInstall.page" layout="total, sizes, prev, pager, next, jumper"
:total="tableDataInstallment.total" @size-change="handleSizeChangeLog"
@current-change="pageChangeLog" />
</div>
</el-dialog>
<!--详情-->
<details-from ref="orderDetail" :orderId="orderId" />
<!--审核-->
<el-dialog title="审核" v-if="AuditVisible" :visible.sync="AuditVisible" width="500px"
:before-close="AudithandleClose">
<zb-parser :form-id="145" :is-create="1" :edit-data="AuditData" @submit="AudithandlerSubmit"
@resetForm="resetFormAudithand" />
</el-dialog>
<el-dialog title="合同详情" :visible.sync="htVisible" width="1000px" :before-close="htClose">
<div class="pdfCom">
<iframe :src="pdfUrl" width="100%" height="600px" frameborder="0"
sandbox="allow-same-origin allow-scripts allow-forms"></iframe>
<!-- <canvas :id="'canvas'+item" v-for="item in pdfHTML" :key="item" /> -->
</div>
</el-dialog>
<el-dialog title="" :visible.sync="dialogVisibles" width="1388px" :before-close="handleClose">
<div class="detailbox" v-if="dialogVisibles">
<div class="titbox">
<div class="tit" v-for="(item, index) in detaillist" :key="index" v-if="index!=4&&index!=5&&index!=6&&index!=7&&index!=8" :class="detailindex == index ? 'act' : ''"
@click="changeindex(index)">{{ item.tit }}</div>
</div>
<div class="info_box" v-show="detailindex == 0">
<div class="info">
<div class="infoli">用户姓名:{{ userinfo.detailinfo.realName }}</div>
<div class="infoli">手机号:{{ userinfo.detailinfo.phoneNumber }}</div>
<div class="infoli">邮箱:{{ userinfo.detailinfo.email }}</div>
<div class="infoli">身份证号:{{ userinfo.detailinfo.idCardNumber }}</div>
</div>
<div class="tit" v-if="userinfo.detailinfo.userEmergencyContactsList">
紧急联系人:
</div>
<div class="addbox" v-if="userinfo.detailinfo.userEmergencyContactsList">
<div class="addli" style="width: 100%;" v-for="(item, index) in userinfo.detailinfo.userEmergencyContactsList" :key="index">
<div class="addtxt">
姓名:{{ item.contactName }}
</div>
<div class="addtxt">
手机号:{{ item.phoneNumber }}
</div>
<div class="addtxt" v-show="item.relationship != null">
关系:{{ getRelationship(item.relationship) }}
</div>
</div>
</div>
<div class="tit">
订单
</div>
<!-- <a @click="downloadAndOpenPDF" href="#">下载并打开PDF文件</a> -->
<div class="info">
<div class="infoli">总计订单:{{ userinfo.detailinfo.allOrderCount }} </div>
<div class="infoli">总金额:{{ userinfo.detailinfo.totalPendingRepayment }} </div>
<div class="infoli">待还金额:{{ userinfo.detailinfo.allConsumeCount }} </div>
</div>
<div class="tit">
身份证照片
</div>
<div class="info">
<div class="infoimg" style="justify-content: start;">
<!-- <div class="infoimg_box">
<div class="noimg">手持身份证照片</div>
<img src=""
alt=""
v-show="false">
<div class="text">手持身份证照片</div>
</div> -->
<div class="infoimg_box" style="margin-right: 100px;">
<div class="noimg" v-show="userinfo.detailinfo.idCardFrontPhoto == null">身份证正面</div>
<img :src="userinfo.detailinfo.idCardFrontPhoto" alt=""
v-show="userinfo.detailinfo.idCardFrontPhoto != ''"
@click="openImage(userinfo.detailinfo.idCardFrontPhoto)">
<div class="text">身份证正面</div>
</div>
<div class="infoimg_box" style="margin-right: 100px;">
<div class="noimg" v-show="userinfo.detailinfo.idCardBackPhoto == null">身份证反面</div>
<img :src="userinfo.detailinfo.idCardBackPhoto" alt="" v-show="userinfo.detailinfo.idCardBackPhoto != ''"
@click="openImage(userinfo.detailinfo.idCardBackPhoto)">
<div class="text">身份证反面</div>
</div>
<div class="infoimg_box">
<div class="noimg" v-show="userinfo.detailinfo.handIdCard == null">手持身份证正面</div>
<img :src="userinfo.detailinfo.handIdCard" alt="" v-show="userinfo.detailinfo.handIdCard != null"
@click="openImage(userinfo.detailinfo.handIdCard)">
<div class="text">手持身份证正面</div>
</div>
</div>
</div>
<div v-if="isImageOpen" class="overlay" @click="closeImage">
<div class="image-container">
<img :src="openedImage" alt="" class="enlarged-image">
</div>
</div>
<div class="tit">
收货地址:
</div>
<div class="addbox">
<div class="addli" v-for="(item, index) in userinfo.detailinfo.addresses" :key="index">
<div class="addtxt">
姓名:{{ item.realName }}
</div>
<div class="addtxt">
手机号:{{ item.phone }}
</div>
<div class="addtxt">
收件地址:{{ item.city }} {{ item.district }}{{ item.detail }}
</div>
</div>
</div>
<div class="tit">
IP记录
</div>
<div class="info" v-for="(item, index) in userinfo.detailinfo.ips" :key="index">
<div class="infoli">{{ item.loginTime }}</div>
<div class="infoli">{{ item.ipaddr }}</div>
<!-- <div class="infoli">福建省 福鼎市</div> -->
<div class="infoli" style="color: red;">{{ item.loginLocation }}</div>
</div>
<!-- <div class="tit">
位置信息
</div>
<div ref="map" style="width: 100%; height: 400px;"></div> -->
</div>
<div class="fkbox" v-if="detailindex == 3 && userinfo.tlxinfo && userinfo.zwxinfo">
<div class="titbox" style="margin-top: 10px;">
<div class="tit" :class="fkxindex == 0 ? 'act' : ''" @click="fkxindex = 0">
天狼星报告
</div>
<div class="tit" :class="fkxindex == 1 ? 'act' : ''" @click="fkxindex = 1">
紫微星报告
</div>
</div>
<div v-show="fkxindex == 0">
<div class="noreport">
<div class="btn" v-show="userinfo.tlxinfo.url == null" @click="tlxReport()">获取报告</div>
<div class="btn" v-show="userinfo.tlxinfo.url != null" @click="tlxReport()">重新获取报告</div>
<div class="tip" v-show="userinfo.tlxinfo.url == null">暂无报告</div>
</div>
<img :src="userinfo.tlxinfo.url" alt="" v-show="userinfo.tlxinfo.url != null">
</div>
<div v-show="fkxindex == 1">
<div class="noreport">
<div class="btn" v-show="userinfo.zwxinfo.url == null" @click="zwxReport()">获取报告</div>
<div class="btn" v-show="userinfo.zwxinfo.url != null" @click="zwxReport()">重新获取报告</div>
<div class="tip" v-show="userinfo.zwxinfo.url == null">暂无报告</div>
</div>
<img :src="userinfo.zwxinfo.url" alt="" v-show="userinfo.zwxinfo.url != null">
</div>
</div>
<div class="zdbox" v-if="detailindex != 0 && userinfo && detailindex != 3 && detailindex != 9"
style="width: 1500px;">
<el-col :span="20">
<el-table :data="tableDatas.data" style="width: 1200px;" v-loading="loading" max-height="700">
<el-table-column :prop="item.key" :label="item.title" width="item.minWidth" :show-overflow-tooltip="true"
v-for="(item, index) in columns" :key="index" />
</el-table>
<div class="block">
<el-pagination :page-sizes="[6, 12, 18, 24]" :page-size="tableFroms.limit" :current-page="tableFroms.page"
layout="total, sizes, prev, pager, next, jumper" :total="tableDatas.total"
@size-change="handleSizeChanges" @current-change="pageChanges" />
</div>
</el-col>
</div>
<div class="remake" v-if="detailindex == 9">
<el-popover placement="right" width="400" trigger="manual" v-model="visibl">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="adremake">
</el-input>
<el-button type="text" size="small" class="mr10" @click="addremark()">确认添加</el-button>
<el-button type="text" size="small" class="mr10" @click="visibl = false">取消</el-button>
<el-button type="text" size="small" slot="reference" class="mr10" @click="visibl = !visibl">添加备注</el-button>
</el-popover>
<el-table :data="remakeData.data" style="width: 100%" size="mini">
<el-table-column prop="updateTime" label="备注时间" min-width="50" align="center" />
<el-table-column prop="remark" label="备注内容" min-width="50" align="center" />
<el-table-column label="操作" min-width="120" fixed="right" align="center">
<template slot-scope="scope">
<el-button type="text" size="small" @click="delremark(scope.row)" class="mr10"
v-hasPermi="['admin:channel:update']">删除备注</el-button>
<el-popover placement="right" width="400" trigger="manual" v-model="visible">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="upremake">
</el-input>
<el-button type="text" size="small" class="mr10" @click="upRemake(scope.row)">确认修改</el-button>
<el-button type="text" size="small" class="mr10" @click="visible = false">取消</el-button>
<el-button type="text" size="small" slot="reference" class="mr10"
@click="visible = !visible">修改备注</el-button>
</el-popover>
<!-- <el-switch v-model="scope.row.status" :active-value="true" :inactive-value="false" active-text="打开"
inactive-text="关闭" @change="onchangeIsShow(scope.row)" /> -->
</template>
</el-table-column>
<!-- <el-table-column prop="installmentNumber" label="期数" min-width="50" align="center"/> -->
</el-table>
</div>
</div>
</el-dialog>
<!-- 发送货 -->
<order-send ref="send" :orderId="orderId" @submitFail="getList" :expressListNormal="expressListNormal"
:expressListElec="expressListElec" :orderDetail="orderDetail"></order-send>
<!-- 发送货视频号商品 -->
<order-video-send ref="videoSend" :orderId="orderId" @submitFail="getList"></order-video-send>
<!--拒绝退款-->
<el-dialog title="拒绝退款原因" v-if="RefuseVisible" :visible.sync="RefuseVisible" width="500px"
:before-close="RefusehandleClose">
<zb-parser :form-id="106" :is-create="1" :edit-data="RefuseData" @submit="RefusehandlerSubmit"
@resetForm="resetFormRefusehand" />
</el-dialog>
<!--立即退款-->
<el-dialog title="退款处理" :visible.sync="refundVisible" width="500px" :before-close="refundhandleClose">
<zb-parser :form-id="107" :is-create="1" :edit-data="refundData" @submit="refundhandlerSubmit"
v-if="refundVisible" @resetForm="resetFormRefundhandler" />
</el-dialog>
</div>
</template>
<script>
// const PDFJS = require("pdfjs-dist");
// PDFJS.GlobalWorkerOptions.workerSrc = require("pdfjs-dist/build/pdf.worker.min");
import {
orderListDataApi,
orderStatusNumApi,
writeUpdateApi,
orderListApi,
updatePriceApi,
orderLogApi,
orderMarkApi,
orderDeleteApi,
orderRefuseApi,
orderRefundApi,
orderPrint,
orderDetailApi, orderAuditApi,getUnclaimed,getAuditnum
} from '@/api/order'
import {
getIdentityInfos, getZwxReportCache, getTlxReportCache, infobyconditionApi, getZwxReport, getTlxReport, remarkList, remarkUpdata, addRemark, delRemark
} from '@/api/user'
import zbParser from '@/components/FormGenerator/components/parser/ZBParser';
// import detailsFrom from './orderDetail';
// import orderSend from './orderSend';
// import orderVideoSend from './orderVideoSend';
import { storeStaffListApi } from '@/api/storePoint';
import Cookies from 'js-cookie';
import { isWriteOff } from '@/utils';
import { orderExcelApi } from '@/api/store';
import { expressAllApi } from '@/api/sms';
import { checkPermi } from '@/utils/permission';
import { installmentBillList } from '@/api/installment' // 权限判断函数
import { integralListApi } from '@/api/marketing';
// import VueImageLightbox from 'vue-image-lightbox';
export default {
name: 'orderlistDetails',
components: {
zbParser,
// detailsFrom,
// orderSend,
// orderVideoSend,
},
data() {
return {
detailindex: 0,
fkxindex: 0,
userinfo: [
],
pdfDoc: null, // pdfjs 生成的对象
pdfHTML: 0, // pdfjs 生成的对象
pdfUrl: '',
detaillist: [
{ tit: '用户基础信息 ' },
{ tit: ' 订单记录 ' },
{ tit: '账单列表 ' },
{ tit: '风控报告 ' },
{ tit: '余额变动 ' },
{ tit: '好友关系 ' },
{ tit: '积分明细 ' },
{ tit: '签到记录 ' },
{ tit: '持有优惠券 ' },
{ tit: '备注' },
],
htVisible: false,
tableFroms: {
page: 1,
limit: 6,
type: '0',
userId: '',
},
upremake: '',
adremake: '',
visible: false,
visibl: false,
dialogVisibles: false,
options: [
{
value: 3,
label: '全部',
},
{
value: 0,
label: '普通订单',
},
{
value: 1,
label: '视频号订单',
},
{
value: 2,
label: '分期订单',
},
],
RefuseVisible: false,
RefuseData: {},
AuditVisible: false,//审核弹窗
AuditData: {},
orderId: '',
refundVisible: false,
refundData: {},
dialogVisibleJI: false,
dialogVisibleInstallment: false,
tableDataLog: {
data: [],
total: 0,
},
tableDataInstallment: {
data: [],
total: 0,
},
tableFromLog: {
page: 1,
limit: 10,
orderNo: 0,
},
tableFromInstall: {
page: 1,
limit: 10,
orderId: 0,
},
LogLoading: false,
InstallmentLoading: false,
isCreate: 1,
editData: null,
dialogVisible: false,
tableData: {
data: [],
total: 0,
},
listLoading: true,
//订单状态all 总数; 未支付 unPaid 未发货 notShipped待收货 spike待评价 bargain已完成 complete
// 待核销 toBeWrittenOff退款中:refunding已退款:refunded已删除:deleted
tableFrom: {
status: 'all',
dateLimit: '',
orderNo: '',
page: 1,
limit: 20,
type: 3,
userName: '',
},
remarkFrom: {
page: 1,
limit: 6,
type: '0',
uid: ''
},
tableDatas: {
data: [],
total: 0,
},
remakeData: {
data: [],
total: 0,
},
columns: [],
Visible: false,
orderChartType: {},
timeVal: [],
fromList: this.$constants.fromList,
fromType: [
{ value: 'all', text: '全部' },
{ value: 'info', text: '普通' },
{ value: 'pintuan', text: '拼团' },
{ value: 'bragin', text: '砍价' },
{ value: 'miaosha', text: '秒杀' },
],
selectionList: [],
ids: '',
orderids: '',
cardLists: [],
isWriteOff: isWriteOff(),
proType: 0,
active: false,
card_select_show: false,
checkAll: false,
checkedCities: ['订单号', '订单类型', '收货人', '商品信息', '实际支付', '支付方式', '订单状态', '下单时间'],
columnData: ['订单号', '订单类型', '收货人', '商品信息', '实际支付', '支付方式', '订单状态', '下单时间'],
isIndeterminate: true,
expressListNormal: [], //全部物流公司 normal
expressListElec: [], //全部物流公司 elec
orderDetail: null, //订单详情\
uid: '',
isImageOpen: false,
openedImage: '',
orderNum:'10',
allOrderNum:0,
};
},
mounted() {
this.getList();
this.getOrderStatusNum();
// this.getOrderListData();
// this.getExpress();
this.getauditNum()
},
methods: {
getRelationship(value) {
console.log(value,'valuevaluevaluevalue');
switch(value) {
case '0':
return '父母';
case '1':
return '子女';
case '2':
return '兄弟';
case '3':
return '姐妹';
case '4':
return '亲戚';
case '5':
return '朋友';
case '6':
return '配偶';
case '7':
return '同事';
default:
return '未知关系';
}
},
getOrder(){
if(this.orderNum==0){
this.$message.error('请输入正确的订单数量');
}else{
getAuditnum(this.orderNum).then((res) => {
this.getList();
this.getOrderStatusNum();
this.getauditNum()
});
}
},
getauditNum(){
getUnclaimed().then((res) => {
this.allOrderNum=res
console.log(res,'resres');
});
},
openImage(image) {
this.openedImage = image;
this.isImageOpen = true;
},
closeImage() {
this.isImageOpen = false;
},
checkPermi,
// 物流公司列表
async getExpress() {
this.expressListNormal = await this.getExpressList('normal'); //全部物流公司
this.expressListElec = await this.getExpressList('elec');
},
// 物流公司列表
async getExpressList(expressType) {
return new Promise((resolve, reject) => {
expressAllApi({ type: expressType }).then((res) => {
resolve(res);
});
});
},
showht(url){
// this.pdfUrl='@/assets/222.pdf'
this.pdfUrl='http://api.yruibao.com/crmebimage/public/content/2024/02/03/0eba557ba62041e190b8d819a9f69ca3884hdh9izs.pdf'
// const CMAP_URL = "https://cdn.jsdelivr.net/npm/pdfjs-dist@2.0.943/cmaps/";
// let obj = {};
// obj.url = this.pdfUrl; //pdf文件地址根据情景自行修改
// obj.cMapUrl = CMAP_URL;
// obj.cMapPacked = true;
// this.init(obj);
this.htVisible=true
},
async upRemake(row) {
console.log(this.upremake, 'idididid');
let data = {
remark: this.upremake,
}
let id = row.id
await remarkUpdata(id, data).then((res) => {
this.upremake = ''
this.visible = false
this.getremake()
});
},
delremark(row) {
delRemark(row.id).then((res) => {
this.getremake()
});
},
addremark() {
let data = {
remark: this.adremake,
uid: this.uid
}
addRemark(data).then((res) => {
this.adremake = ''
this.visibl = false
this.getremake()
});
},
htClose() {
this.htVisible = false
},
init(fileUrl) {
let _this = this;
PDFJS.getDocument(fileUrl).then(fileContent => {
_this.pdfDoc = fileContent;
_this.pdfHTML = fileContent.numPages;
setTimeout(() => {
_this.renderPage(fileContent.numPages);
}, 100)
});
},
renderPage(nums) {
for (let item = 1; item <= nums; item++) {
// 获取页面canvas节点
let canvas = document.getElementById(`canvas${item}`);
// 获取上下文
const ctx = canvas.getContext("2d");
// 获取每一页的内容
this.pdfDoc.getPage(item).then(page => {
// 文件页面的视图 1倍
const viewport = page.getViewport(1);
// 将画布宽度设置为视图宽度
canvas.width = viewport.width;
canvas.height = viewport.height;
const renderContext = {
canvasContext: ctx,
viewport: viewport
};
console.log(renderContext);
// 渲染页面内容参数是canvas画布上下文以及文件视图
page.render(renderContext);
});
}
},
pageChanges(page) {
this.tableFroms.page = page;
if (this.detailindex == 6) {
this.integral()
} else {
this.getInfos();
}
},
tlxReport() {
console.log("获取天狼星报告")
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
getTlxReport({ userId: this.uid }).then((res) => {
// console.log("11111111111111111---------"+JSON.stringify(res))
this.userinfo.tlxinfo = res
loading.close();
console.log(res, 'resresres');
if (res.code == 500) {
this.$message.error(res.msg);
}
this.$forceUpdate()
});
},
zwxReport() {
console.log("获取紫微星报告")
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
getZwxReport({ userId: this.uid }).then((res) => {
this.userinfo.zwxinfo = res
loading.close();
if (res.code == 500) {
this.$message.error(res.msg);
}
this.$forceUpdate()
});
},
handleSizeChanges(val) {
this.tableFroms.limit = val;
if (this.detailindex == 6) {
this.integral()
} else {
this.getInfos();
}
},
getuserinfo(id) {
this.detailindex = 0
this.uid = id
this.tableFroms.userId = id
getIdentityInfos(id)
.then((res) => {
let detailinfo = {}
detailinfo = res
this.userinfo.detailinfo = detailinfo
this.dialogVisibles = true
})
.catch((res) => {
this.loading = false;
});
getTlxReportCache(id)
.then((res) => {
this.userinfo.tlxinfo = res
})
.catch((res) => {
});
getZwxReportCache(id)
.then((res) => {
this.userinfo.zwxinfo = res
})
.catch((res) => {
});
console.log(this.userinfo, 'detailinfodetailinfodetailinfo');
},
changeindex(index) {
console.log(index, 'indexindexindex');
this.detailindex = index
if (index == 2) {
this.tableFroms.type = '6'
this.getInfos()
} else if (index == 1) {
this.tableFroms.type = '0'
this.getInfos()
} else if (index == 4) {
this.tableFroms.type = '4'
this.getInfos()
} else if (index == 5) {
this.tableFroms.type = '5'
this.getInfos()
} else if (index == 6) {
// this.tableFroms.type='2'
this.integral()
} else if (index == 7) {
this.tableFroms.type = '2'
this.getInfos()
} else if (index == 8) {
this.tableFroms.type = '3'
this.getInfos()
} else if (index == 9) {
this.getremake()
}
},
getremake() {
this.remarkFrom.uid = this.uid
remarkList(this.remarkFrom)
.then((res) => {
this.remakeData.data = res.list;
this.remakeData.total = res.total;
})
.catch(() => {
});
},
integral() {
this.loading = true;
integralListApi({ limit: this.tableFroms.limit, page: this.tableFroms.page }, { uid: this.uid })
.then((res) => {
this.tableDatas.data = res.list;
this.tableDatas.total = res.total;
this.columns = [
{
title: '来源/用途',
key: 'title',
minWidth: 120,
},
{
title: '积分变化',
key: 'integral',
minWidth: 120,
},
{
title: '变化后积分',
key: 'balance',
minWidth: 120,
},
{
title: '日期',
key: 'updateTime',
minWidth: 120,
},
{
title: '备注',
key: 'mark',
minWidth: 120,
},
];
this.loading = false;
})
.catch((res) => {
this.loading = false;
});
},
getInfos() {
infobyconditionApi(this.tableFroms)
.then((res) => {
this.tableDatas.data = res.list;
this.tableDatas.total = res.total;
console.log(this.tableDatas, ' this.tableDatas this.tableDatas');
switch (this.tableFroms.type) {
case '0':
this.columns = [
{
title: '订单ID',
key: 'orderId',
minWidth: 250,
},
{
title: '收货人',
key: 'realName',
minWidth: 90,
},
{
title: '商品数量',
key: 'totalNum',
minWidth: 80,
},
{
title: '订单状态',
key: 'statusStr.value',
minWidth: 80,
},
{
title: '商品总价',
key: 'totalPrice',
minWidth: 90,
},
{
title: '实付金额',
key: 'payPrice',
minWidth: 90,
},
{
title: '交易完成时间',
key: 'payTime',
minWidth: 160,
},
];
break;
case '2':
this.columns = [
{
title: '动作',
key: 'title',
minWidth: 120,
},
{
title: '获得积分',
key: 'number',
minWidth: 120,
},
{
title: '签到时间',
key: 'createTime',
minWidth: 120,
},
{
title: '备注',
key: 'title',
minWidth: 120,
},
];
break;
case '3':
this.columns = [
{
title: '优惠券名称',
key: 'name',
minWidth: 120,
},
{
title: '面值',
key: 'money',
minWidth: 120,
},
{
title: '有效期',
key: 'endTime',
minWidth: 120,
},
{
title: '最低消费额',
key: 'minPrice',
minWidth: 120,
},
{
title: '兑换时间',
key: 'updateTime',
minWidth: 120,
},
];
break;
case '4':
this.columns = [
{
title: '变动金额',
key: 'number',
minWidth: 120,
},
{
title: '变动后',
key: 'balance',
minWidth: 120,
},
{
title: '类型',
key: 'title',
minWidth: 120,
},
{
title: '创建时间',
key: 'add_time',
minWidth: 120,
},
{
title: '备注',
key: 'mark',
minWidth: 120,
},
];
break;
case '5':
this.columns = [
{
title: 'ID',
key: 'uid',
minWidth: 120,
},
{
title: '昵称',
key: 'nickname',
minWidth: 120,
},
{
title: '等级',
key: 'level',
minWidth: 120,
},
{
title: '加入时间',
key: 'createTime',
minWidth: 120,
},
];
break;
default:
this.columns = [
{
title: '账单ID',
key: 'id',
minWidth: 50,
},
{
title: '订单号',
key: 'orderIdStr',
minWidth: 200,
},
{
title: '期数',
key: 'installmentNumberStr',
minWidth: 30,
},
{
title: '还款时间',
key: 'repaymentDeadlineStr',
minWidth: 180,
},
{
title: '还款金额(元)',
key: 'repaymentAmount',
minWidth: 100,
},
{
title: '还款方式',
key: 'paymentMethod',
minWidth: 80,
},
{
title: '状态',
key: 'repaymentStatus',
minWidth: 80,
},
{
title: '创建时间',
key: 'createTime',
minWidth: 180,
},
];
}
})
.catch(() => {
});
},
resetFormRefundhandler() {
this.refundVisible = false;
},
resetFormRefusehand() {
this.RefuseVisible = false;
},
resetFormAudithand() {
this.AuditVisible = false;
},
resetForm(formValue) {
this.dialogVisible = false;
},
// 核销订单
onWriteOff(row) {
this.$modalSure('核销订单吗').then(() => {
writeUpdateApi(row.verifyCode).then(() => {
this.$message.success('核销成功');
this.tableFrom.page = 1;
this.getList();
});
});
},
seachList() {
this.tableFrom.page = 1;
this.getList();
this.getOrderStatusNum();
},
// 拒绝退款
RefusehandleClose() {
this.RefuseVisible = false;
},
//关闭 审核
AudithandleClose() {
this.AuditVisible = false;
},
onOrderRefuse(row) {
this.orderids = row.orderId;
this.RefuseData = {
orderId: row.orderId,
reason: '',
};
this.RefuseVisible = true;
},
RefusehandlerSubmit(formValue) {
orderRefuseApi({ orderNo: this.orderids, reason: formValue.reason }).then((data) => {
this.$message.success('操作成功');
this.RefuseVisible = false;
this.getList();
});
},
//审核提交
AudithandlerSubmit(formValue) {
let data;
if (formValue.audit == "reject" && (formValue.reason == undefined || formValue.reason == "")) {
this.$message.error("驳回原因不能为空");
return
}
if (formValue.audit == "pass") {
data = { orderNo: this.orderids, reason: "", audit: formValue.audit };
} else {
data = { orderNo: this.orderids, reason: formValue.reason, audit: formValue.audit };
}
console.log("formValue-------" + JSON.stringify(data));
orderAuditApi(formValue.audit, data).then((res) => {
this.$message.success('操作成功');
this.AuditVisible = false;
this.getList();
});
},
// 立即退款
refundhandleClose() {
this.refundVisible = false;
},
onOrderRefund(row) {
this.refundData = {
orderId: row.orderId,
amount: row.payPrice,
type: '',
};
this.orderids = row.orderId;
this.refundVisible = true;
},
refundhandlerSubmit(formValue) {
orderRefundApi({ amount: formValue.amount, orderNo: this.orderids }).then((data) => {
this.$message.success('操作成功');
this.refundVisible = false;
this.getList();
});
},
// 详情接口
getDetail(id) {
this.loading = true;
orderDetailApi({ orderNo: id })
.then((res) => {
this.orderDetail = res;
this.editData = {
orderId: id,
totalPrice: this.orderDetail.proTotalPrice,
totalPostage: this.orderDetail.payPostage,
payPrice: this.orderDetail.payPrice,
payPostage: this.orderDetail.payPostage,
};
})
.catch(() => {
this.orderDetail = null;
this.loading = false;
});
},
//修改快递单号
handleUpdateNumber(row) {
this.orderId = row.orderId;
this.$refs.send.modals = true;
this.$refs.send.loading = true;
//默认加载Normal物流公司
this.$refs.send.express = this.expressListNormal;
this.getDetail(row.orderId);
},
// 发送
sendOrder(row) {
this.orderDetail = null;
if (row.type === 0 || row.type === 2) {
this.$refs.send.modals = true;
//默认加载Normal物流公司
this.$refs.send.express = this.expressListNormal;
this.$refs.send.sheetInfo();
} else {
this.$refs.videoSend.modals = true;
if (!JSON.parse(sessionStorage.getItem('videoExpress'))) this.$refs.videoSend.companyGetList();
}
this.orderId = row.orderId;
},
// 订单删除
handleDelete(row, idx) {
if (row.isDel) {
this.$modalSure().then(() => {
orderDeleteApi({ orderNo: row.orderId }).then(() => {
this.$message.success('删除成功');
if (this.tableData.data.length === 1 && this.tableFrom.page > 1)
this.tableFrom.page = this.tableFrom.page - 1;
this.getList();
});
});
} else {
this.$confirm('您选择的的订单存在用户未删除的订单,无法删除用户未删除的订单!', '提示', {
confirmButtonText: '确定',
type: 'error',
});
}
},
// 详情
onOrderDetails(id) {
this.orderId = id;
this.$refs.orderDetail.getDetail(id);
this.$refs.orderDetail.dialogVisible = true;
},
// 账单
onInstallmentBills(id) {
this.tableFromLog.limit = 10;
this.orderId = id;
this.dialogVisibleInstallment = true;
this.getInstallmentList(id);
},
// 审核
onAudit(row) {
this.orderids = row.orderId;
this.AuditData = {
orderId: row.orderId,
audit: "pass",
reason: ""
};
this.AuditVisible = true;
},
userDetail(row) {
console.log("----------" + JSON.stringify(row))
// this.orderids = row.orderId;
// this.AuditData = {
// orderId: row.orderId,
// audit: "pass",
// reason: ""
// };
// this.AuditVisible = true;
},
// 订单记录
onOrderLog(id) {
this.tableFromLog.limit = 10;
this.orderId = id;
this.dialogVisibleJI = true;
this.getOrderStatusList(id);
},
//订单记录请求列表
getOrderStatusList(id) {
this.LogLoading = true;
this.tableFromLog.orderNo = id;
orderLogApi(this.tableFromLog)
.then((res) => {
this.tableDataLog.data = res.list;
this.tableDataLog.total = res.total;
this.LogLoading = false;
})
.catch(() => {
this.LogLoading = false;
});
},
//账单列表
getInstallmentList(id) {
this.InstallmentLoading = true;
this.tableFromInstall.orderId = id;
installmentBillList(this.tableFromInstall)
.then((res) => {
this.tableDataInstallment.data = res.list;
this.tableDataInstallment.total = res.total;
this.InstallmentLoading = false;
})
.catch(() => {
this.InstallmentLoading = false;
});
},
pageChangeLog(page) {
this.tableFromLog.page = page;
this.getOrderStatusList(this.orderId);
},
handleSizeChangeLog(val) {
this.tableFromLog.limit = val;
this.getOrderStatusList(this.orderId);
},
handleClose() {
this.dialogVisibles = false;
},
// 备注
onOrderMark(row) {
this.$prompt('订单备注', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputErrorMessage: '请输入订单备注',
inputType: 'textarea',
inputValue: row.remark,
inputPlaceholder: '请输入订单备注',
inputValidator: (value) => {
if (!value) return '输入不能为空';
},
})
.then(({ value }) => {
orderMarkApi({ mark: value, orderNo: row.orderId }).then(() => {
this.$message.success('操作成功');
this.getList();
});
})
.catch(() => {
this.$message.info('取消输入');
});
},
handleSelectionChange(val) {
this.selectionList = val;
const data = [];
this.selectionList.map((item) => {
data.push(item.orderId);
});
this.ids = data.join(',');
},
// 选择时间
selectChange(tab) {
this.timeVal = [];
this.tableFrom.page = 1;
this.getList();
this.getOrderStatusNum();
// this.getOrderListData();
},
// 具体日期
onchangeTime(e) {
this.timeVal = e;
this.tableFrom.dateLimit = e ? this.timeVal.join(',') : '';
this.tableFrom.page = 1;
this.getList();
this.getOrderStatusNum();
// this.getOrderListData();
},
// 编辑
edit(row) {
//this.getDetail(row.orderId);
this.orderId = row.orderId;
this.editData = {
orderId: row.orderId,
proTotalPrice: row.proTotalPrice,
beforePayPrice: row.beforePayPrice ? row.beforePayPrice : row.payPrice,
payPrice: row.payPrice,
};
this.dialogVisible = true;
},
handlerSubmit(formValue) {
let data = {
orderNo: formValue.orderId,
payPrice: formValue.payPrice,
};
updatePriceApi(data).then((data) => {
this.$message.success('编辑成功');
this.dialogVisible = false;
this.getList();
});
},
// 列表
getList() {
this.listLoading = true;
orderListApi(this.tableFrom)
.then((res) => {
this.tableData.data = res.list || [];
this.tableData.total = res.total;
this.listLoading = false;
this.checkedCities = this.$cache.local.has('order_stroge')
? this.$cache.local.getJSON('order_stroge')
: this.checkedCities;
})
.catch(() => {
this.listLoading = false;
});
},
// 数据统计
getOrderListData() {
orderListDataApi({ dateLimit: this.tableFrom.dateLimit }).then((res) => {
this.cardLists = [
{ name: '订单数量', count: res.count, color: '#1890FF', class: 'one', icon: 'icondingdan' },
{ name: '订单金额', count: res.amount, color: '#A277FF', class: 'two', icon: 'icondingdanjine' },
{
name: '微信支付金额',
count: res.weChatAmount,
color: '#EF9C20',
class: 'three',
icon: 'iconweixinzhifujine',
},
{ name: '余额支付金额', count: res.yueAmount, color: '#1BBE6B', class: 'four', icon: 'iconyuezhifujine2' },
];
});
},
// 获取各状态数量
getOrderStatusNum() {
orderStatusNumApi({ dateLimit: this.tableFrom.dateLimit, type: this.tableFrom.type }).then((res) => {
this.orderChartType = res;
});
},
pageChange(page) {
this.tableFrom.page = page;
this.getList();
},
handleSizeChange(val) {
this.tableFrom.limit = val;
this.getList();
},
exports() {
let data = {
dateLimit: this.tableFrom.dateLimit,
orderNo: this.tableFrom.orderNo,
status: this.tableFrom.status,
type: this.tableFrom.type,
};
orderExcelApi(data).then((res) => {
window.open(res.fileName);
});
},
renderHeader(h) {
return (
<p>
<span style="padding-right:5px;">操作</span>
<i class="el-icon-setting" onClick={() => this.handleAddItem()}></i>
</p>
);
},
handleAddItem() {
if (this.card_select_show) {
this.$set(this, 'card_select_show', false);
} else if (!this.card_select_show) {
this.$set(this, 'card_select_show', true);
}
},
handleCheckAllChange(val) {
this.checkedCities = val ? this.columnData : [];
this.isIndeterminate = false;
},
handleCheckedCitiesChange(value) {
let checkedCount = value.length;
this.checkAll = checkedCount === this.columnData.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.columnData.length;
},
checkSave() {
this.card_select_show = false;
this.$modal.loading('正在保存到本地,请稍候...');
this.$cache.local.setJSON('order_stroge', this.checkedCities);
setTimeout(this.$modal.closeLoading(), 1000);
},
//打印小票
onOrderPrint(data) {
orderPrint(data.orderId)
.then((res) => {
this.$modal.msgSuccess('打印成功');
})
.catch((error) => {
this.$modal.msgError(error.message);
});
},
},
};
</script>
<style lang="scss" scoped>
.pdfCom::-webkit-scrollbar {
width: 10px;
}
.pdfCom::-webkit-scrollbar-track {
background-color: #FFFFFF;
}
.pdfCom::-webkit-scrollbar-thumb {
background-color: #EAF4FF;
border-radius: 10px;
// height: .625rem;
}
.pdfCom::-webkit-scrollbar-thumb:hover {
background-color: #EAF4FF;
}
.pdfCom {
margin: 20px auto;
max-height: 600px;
overflow-x: hidden;
overflow-y: auto;
}
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.7);
z-index: 999;
display: flex;
justify-content: center;
align-items: center;
}
.image-container {
max-width: 80%;
max-height: 80%;
}
.enlarged-image {
max-width: 800px;
max-height: 800px;
}
.detailbox::-webkit-scrollbar {
width: 10px;
}
.detailbox::-webkit-scrollbar-track {
background-color: #FFFFFF;
}
.detailbox::-webkit-scrollbar-thumb {
background-color: #EAF4FF;
border-radius: 10px;
// height: .625rem;
}
.detailbox::-webkit-scrollbar-thumb:hover {
background-color: #EAF4FF;
}
.detailbox {
padding: 10px 60px;
width: 100%;
max-height: 670px;
overflow-x: hidden;
overflow-y: auto;
min-height: 600px;
.titbox {
display: flex;
flex-wrap: nowrap;
align-items: center;
.tit {
margin-right: 20px;
font-size: 18px;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 700;
color: #9B9B9B;
cursor: pointer;
}
.act {
color: #3D3D3D;
font-size: 24px;
}
}
.info_box {
margin-top: 25px;
width: 100%;
.info {
display: flex;
flex-wrap: wrap;
.infoli {
width: 33%;
font-size: 18px;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
color: #3D3D3D;
line-height: 50px;
}
.infoimg {
width: 100%;
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: space-between;
.infoimg_box {
display: flex;
flex-wrap: wrap;
justify-content: center;
width: 305px;
.noimg {
display: flex;
align-items: center;
justify-content: center;
width: 305px;
height: 181px;
background: #D8D8D8;
border-radius: 10px 10px 10px 10px;
font-size: 18px;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
color: #959595;
}
img {
width: 305px;
height: 181px;
border-radius: 10px 10px 10px 10px;
}
.text {
margin-top: 10px;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
color: #3A3A3A;
}
}
}
}
.tit {
font-size: 18px;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 700;
color: #3D3D3D;
line-height: 50px;
}
.addbox {
display: flex;
flex-wrap: wrap;
.addli {
display: flex;
flex-wrap: nowrap;
.addtxt {
margin-right: 20px;
font-size: 18px;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
color: #3D3D3D;
line-height: 50px;
}
}
}
}
.fkbox {
.titbox {
display: flex;
flex-wrap: nowrap;
align-items: center;
.tit {
margin-right: 30px;
font-size: 18px;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 700;
color: #9B9B9B;
cursor: pointer;
}
.act {
color: #3D3D3D;
font-size: 22px;
}
}
img {
width: 100%;
height: auto;
}
.noreport {
display: flex;
flex-wrap: wrap;
// justify-content: center;
.tip {
margin-top: 80px;
width: 100%;
font-size: 35px;
text-align: center;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
color: #CDCDCD;
}
.btn {
cursor: pointer;
margin-top: 20px;
display: flex;
align-items: center;
justify-content: center;
width: 130px;
height: 40px;
background: #468DFF;
border-radius: 10px 10px 10px 10px;
font-size: 16px;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
color: #FFFFFF;
}
}
}
}
.list1 {
display: flex;
flex-wrap: nowrap;
align-items: center;
.img {
width: 50px;
height: 50px;
img {
width: 50px;
height: 50px;
}
}
.info {
margin-left: 6px;
display: flex;
flex-wrap: wrap;
.li {
display: flex;
flex-wrap: wrap;
}
}
}
.list {
display: flex;
flex-wrap: wrap;
}
.el-table__body {
width: 100%;
table-layout: fixed !important;
}
.demo-table-expand {
::v-deeplabel {
width: 83px !important;
}
}
.refunding {
span {
display: block;
}
}
.selWidth {
width: 300px;
}
.el-dropdown-link {
cursor: pointer;
color: #409eff;
font-size: 12px;
}
.el-icon-arrow-down {
font-size: 12px;
}
.tabBox_tit {
font-size: 12px !important;
/*margin: 0 2px 0 10px;*/
letter-spacing: 1px;
/*padding: 5px 0;*/
box-sizing: border-box;
}
.text_overflow {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 400px;
}
.pup_card {
width: 200px;
border-radius: 5px;
padding: 5px;
box-sizing: border-box;
font-size: 12px;
line-height: 16px;
}
.flex-column {
display: flex;
flex-direction: column;
}
.mt20 {
margin-top: 20px;
}
.relative {
position: relative;
}
.card_abs {
position: absolute;
padding-bottom: 15px;
top: 520px;
right: 40px;
width: 200px;
background: #fff;
z-index: 99999;
box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.1);
}
.cell_ht {
height: 50px;
padding: 15px 20px;
box-sizing: border-box;
border-bottom: 1px solid #eeeeee;
display: flex;
justify-content: space-between;
align-items: center;
}
.check_cell {
width: 100%;
padding: 15px 20px 0;
}
::v-deep .el-checkbox__input.is-checked+.el-checkbox__label {
color: #606266;
}
.el-form-item__content {
float: right;
}</style>