油批
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

464 lines
14 KiB

<template>
<div style="padding: 30px 40px 50px" class="statementInfo">
<div style="width: 100%; position: absolute; top: 15px; left: 0">
<div style="display: flex; align-items: center; padding-left: 20px">
<svg-icon icon-class="iconsiji2" style="font-size: 30px; margin-right: 10px" />
<span>结算单详情</span>
</div>
<el-divider style="width: 100%"></el-divider>
</div>
<el-row>
<el-form ref="form" :model="importData" label-width="110px" size="mini">
<el-row class="borderBody">
<el-col :span="6">
<span class="spanLabel">结算单号</span>
<br />
<span>{{ importData.settlementNo }}</span>
</el-col>
<el-col :span="6">
<span class="spanLabel">审核状态</span>
<br />
<el-tag effect="dark" :type="accountStateEnum.find(item => item.value == importData.auditState).type">
{{ accountStateEnum.find(item => item.value == importData.auditState).label }}
</el-tag>
</el-col>
<el-col :span="6">
<span class="spanLabel">客户类型</span>
<br />
<span>{{ importData.settlementType == 1 ? '企业' : '炼厂' }}</span>
</el-col>
<el-col :span="6">
<span class="spanLabel">客户名称</span>
<br />
<span>{{ importData.settlementObjectName }}</span>
</el-col>
<el-col :span="6">
<span class="spanLabel">结算总金额</span>
<br />
<span>{{ importData.settlementAmount }}</span>
</el-col>
<el-col :span="6">
<span class="spanLabel">订单总金额</span>
<br />
<span>{{ importData.orderAmount }}</span>
</el-col>
<el-col :span="6">
<span class="spanLabel">充值总金额</span>
<br />
<span>{{ importData.rechargeAmount }}</span>
</el-col>
<el-col :span="6">
<span class="spanLabel">开票总金额</span>
<br />
<span>{{ importData.invoicedAmount }}</span>
</el-col>
<el-col :span="6">
<el-col :span="12">
<span class="spanLabel">创建人</span>
<br />
<span>{{ importData.createUserName }}</span>
</el-col>
<el-col :span="12">
<el-popover :disabled="!importData.createMark" placement="bottom" width="200" trigger="click" :content="importData.createMark">
<el-button slot="reference" size="mini">查看创建备注</el-button>
</el-popover>
</el-col>
</el-col>
<el-col :span="6">
<span class="spanLabel">创建时间</span>
<br />
<span>{{ importData.createTime }}</span>
</el-col>
<el-col :span="6">
<el-col :span="12">
<span class="spanLabel">审核人</span>
<br />
<span>{{ importData.auditUserName }}</span>
</el-col>
<el-col :span="12">
<el-popover :disabled="!importData.auditMark" placement="bottom" width="200" trigger="click" :content="importData.auditMark">
<el-button slot="reference" size="mini">查看审核备注</el-button>
</el-popover>
</el-col>
</el-col>
<el-col :span="6">
<span class="spanLabel">审核时间</span>
<br />
<span>{{ importData.auditTime }}</span>
</el-col>
</el-row>
</el-form>
</el-row>
<div slot="table">
<!--这里放表格和分页-->
<!-- 列表开始 -->
<el-table
:max-height="tableHeight"
:header-cell-style="{ background: '#f5f5f5' }"
show-summary
stripe
:summary-method="getSummaries"
:data="importData.orders"
fit
style="width: 100%"
:size="$store.getters.size"
>
<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"
: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>
<!-- 列表结束 -->
</div>
<div class="button-style" :span="24">
<el-divider style="width: 100%"></el-divider>
<el-button @click="close(1)" style="margin-right: 10px">关闭</el-button>
<el-button v-if="importData.auditState == 0" type="primary" @click="submit" style="margin-right: 10px">结算单审核 </el-button>
</div>
<el-dialog class="dialogInfo" append-to-body :visible.sync="submitDialog" v-if="submitDialog" width="500px">
<el-form class="messageConfirm" ref="form" :model="importData" label-width="110px" size="mini">
<div style="width: 100%; position: absolute; top: 15px; left: 0">
<div style="display: flex; align-items: center; padding-left: 20px">
<div style="width: 5px; height: 20px; background: #1890ff"></div>
<span style="margin-left: 10px">结算单审核</span>
</div>
<el-divider style="width: 100%"></el-divider>
</div>
<el-row style="padding: 0 20px">
<div style="width: 100%; margin-bottom: 35px; display: flex; align-items: center">
<img v-if="importData.settlementType == 1" style="width: 18px" src="../../assets/img/oilFinalStatement/jiesuandanQiye.png" alt="" />
<span style="margin-left: 10px">{{ importData.settlementObjectName }}</span>
</div>
<el-form-item label="结算总金额" prop="settlementAmount">
<span>{{ importData.settlementAmount }}元</span>
</el-form-item>
<el-form-item label="订单总金额" prop="orderAmount">
<span>{{ importData.orderAmount }}元</span>
</el-form-item>
<el-form-item label="充值总金额" prop="rechargeAmount">
<span>{{ importData.rechargeAmount }}元</span>
</el-form-item>
<el-form-item label="开票总金额" prop="realAmount">
<span>{{ importData.invoicedAmount }}元</span>
</el-form-item>
<el-form-item label="结算周期" prop="realAmount">
<span>{{ createT }}至 {{ endT }}</span>
</el-form-item>
<el-form-item label="订单总数" prop="companyName">
<span>{{ importData.orderQuantity }}条</span>
</el-form-item>
<el-form-item label="审核备注" prop="auditMark" style="width: 100%">
<el-input type="textarea" v-model="importData.auditMark"></el-input>
</el-form-item>
<div style="color: red; text-align: center; font-weight: 600">注意:确认后,无法再修改。请确认此次该的结算信息是否正确</div>
</el-row>
<div :span="24" style="margin-top: 50px; text-align: center; width: 100%">
<el-divider style="width: 100%"></el-divider>
<div style="display: flex; justify-content: end; width: 90%; margin: 0 auto">
<el-button @click="close" size="mini">关闭</el-button>
<el-button size="mini" type="danger" @click="save(-1)">审核驳回</el-button>
<el-button size="mini" type="primary" @click="save(1)">审核通过</el-button>
</div>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import internalCompanyApi from '@/api/user/internalCompany'
export default {
filters: {},
props: {
importData: {
type: Object,
default() {}
}
},
data() {
return {
tableHeight: document.documentElement.clientHeight - 470 - 55,
companyList: [],
roleList: [],
roleTypeList: [],
submitDialog: false,
accountStateEnum: [
{
label: '待审核',
value: 0,
type: 'warning'
},
{
label: '已审核',
value: 1,
type: 'success'
},
{
label: '审核失败',
value: -1,
type: 'danger'
}
],
tableColumns: [
{
prop: 'id',
minWidth: 180,
label: '订单号',
show: true,
render: (row, column, cell) => {
return cell
}
},
{
prop: 'actAmount',
minWidth: 120,
label: '订单金额',
show: true,
render: (row, column, cell) => {
cell = Number(cell).toFixed(2)
return cell ? cell : '0.00'
}
},
{
prop: 'customerSettleAmount',
minWidth: 120,
label: '结算金额',
show: true,
render: (row, column, cell) => {
cell = Number(cell).toFixed(2)
return cell ? cell : '0.00'
}
},
{
prop: 'customerSettleAmount',
minWidth: 120,
label: '充值金额',
show: true,
render: (row, column, cell) => {
cell = Number(cell).toFixed(2)
return cell ? cell : '0.00'
}
},
{
prop: 'customerSettleAmount',
minWidth: 120,
label: '开票金额',
show: true,
render: (row, column, cell) => {
cell = Number(cell).toFixed(2)
return cell ? cell : '0.00'
}
},
{
prop: 'createTime',
minWidth: 150,
label: '创建日期',
show: true,
render: (row, column, cell) => {
return cell
}
}
],
createT: '',
endT: ''
}
},
created() {
// 增加监听事件,窗口变化时得到高度。
window.addEventListener('resize', this.getHeight, false)
},
methods: {
settlement(val, data) {
if (val == 0) {
return '待审核'
}
if (val == 1) {
return '已审核'
}
if (val == -1) {
return '审核失败'
}
},
indexMethod(index) {
return (index + 1) * 1
},
getHeight() {
// 获取浏览器高度并计算得到表格所用高度。
this.tableHeight = document.documentElement.clientHeight - 470 - 55
},
close(val) {
if (val == 1) {
this.$emit('closeDialog')
this.tableColumns = []
} else {
this.submitDialog = false
}
},
submit() {
let payRealAmountEnd = []
let customerSettleAmountList = []
this.importData.orders.forEach(item => {
this.endT = item.createTime
payRealAmountEnd.push(item.actAmount ? item.actAmount : '0')
customerSettleAmountList.push(item.customerSettleAmount ? item.customerSettleAmount : '0')
})
function sum(val) {
return eval(val.join('+'))
}
this.importData.settlementAmount = Number(sum(customerSettleAmountList)).toFixed(2)
this.importData.orderAmount = Number(sum(payRealAmountEnd)).toFixed(2)
this.importData.rechargeAmount = Number(sum(customerSettleAmountList)).toFixed(2)
this.importData.invoicedAmount = Number(sum(customerSettleAmountList)).toFixed(2)
this.endT = this.endT.split(' ')[0]
this.createT = this.importData.orders[0].createTime.split(' ')[0]
this.submitDialog = true
},
save(val) {
var data = {
id: this.importData.id,
confirmSource: 'XOIL_OMS_WEB',
settlementType: this.importData.settlementType
}
if (val == -1) {
data.auditState = -1
} else if (val == 1) {
data.auditState = 1
}
data.auditMark = this.importData.auditMark
internalCompanyApi.update(data).then(res => {
if (res.code == 20000) {
this.importData = res.data
this.$message.success('操作成功')
this.$emit('closeDialog')
this.$emit('getByPage')
}
})
},
getSummaries(param) {
const { columns, data } = param
const sums = []
let actAmount = 0 // 订单金额
let customerSettleAmount = 0 // 充值=结算=开票
data.forEach(item => {
customerSettleAmount += Number(item.customerSettleAmount)
actAmount += Number(item.actAmount)
})
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计'
return
}
if (this.importData.settlementType == 1) {
switch (
column.property // column.property可以匹配它的每一列的命名, 然后赋值
) {
case 'customerSettleAmount':
sums[index] = customerSettleAmount.toFixed(2) + '元' // 值取自后台
break
case 'actAmount':
sums[index] = actAmount.toFixed(2) + '元'
break
default:
break
}
}
})
return sums
}
}
}
</script>
<style scoped>
.el-divider--horizontal {
margin: 10px 0;
}
.el-form-item__content >>> .el-date-editor.el-input {
width: 100%;
}
.el-divider--horizontal {
margin: 10px 0;
}
.borderBody {
box-shadow: 0px 0px 3px 0px #c1c1c1;
padding: 20px 15px;
margin-bottom: 30px;
font-size: 14px;
}
.borderBody >>> .el-col {
height: 55px;
margin-bottom: 15px;
padding-left: 10px;
}
.borderBody >>> .spanLabel {
display: inline-block;
color: #606266;
font-weight: 700;
margin-bottom: 10px;
}
.statementInfo >>> .el-table--fit th.gutter {
background: #f5f5f5;
}
.el-dialog__wrapper >>> .el-dialog__header {
text-align: center;
}
.dialogInfo >>> .el-dialog__body {
padding: 10px 20px;
}
.dialogInfo .el-button {
width: 80px;
}
.button-style {
margin-top: 20px;
text-align: right;
width: 100%;
position: absolute;
bottom: 15px;
left: 0;
}
.button-style .el-button {
width: 120px;
}
.el-form-item--mini.el-form-item {
display: flex;
align-items: center;
}
.el-form-item--mini >>> .el-form-item__content {
margin-left: 0 !important;
}
.messageConfirm .el-row {
display: flex;
flex-wrap: wrap;
margin-top: 25px;
justify-content: space-between;
}
.messageConfirm .el-form-item {
display: flex;
flex-direction: column;
width: 40%;
align-items: normal;
}
.messageConfirm >>> .el-form-item__label {
text-align: left;
}
</style>