星油云站
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.
 
 
 
 

425 lines
8.5 KiB

<template>
<view class="content my-bg" style="height: 100vh; display: flex; flex-direction: column;">
<cu-custom class="main-totextbar bg-main-oil" :isBack="true" bgColor="bg-main-oil">
<block slot="backText">返回</block>
<block slot="content">账单推送</block>
</cu-custom>
<view class="fixed-t">
<scroll-view scroll-x class="bg-white nav">
<view class="flex text-center">
<view class="cu-item flex-sub" :class="index==currentIndex?'text-orange cur':''"
v-for="(item,index) in statusEnum" :key="index" @tap="tabSelect(index,item)">{{item.label}}
</view>
</view>
</scroll-view>
</view>
<view style="flex: 1; overflow: hidden;">
<scroll-view style="height: 100%;" scroll-y="true" @scrolltolower="scrolltolower">
<view v-if="listData.length" style="padding-bottom: 50rpx;">
<view class="item" v-for="(item,index) in listData" :key="index">
<view class="no">{{item.id}}</view>
<view class="top-region">
<view><text>确认金额</text><text>{{item.amount}}</text></view>
<view><text>油站实际金额</text><text>{{item.actualAmount || '--'}}</text></view>
<view><text>创建时间</text><text>{{item.createTime}}</text></view>
<view><text>推送时间</text><text>{{item.deadlineTime}}</text></view>
</view>
<view class="round" :class="statusEnum.find(i => i.value == item.ackStatus).color">
<view>
{{statusEnum.find(i => i.value == item.ackStatus).label}}
</view>
</view>
<view class="bottom-region" v-if="item.ackStatus == 1">
<button class="mini-btn" type="primary" size="mini" @click="examine(item)">审核</button>
</view>
</view>
</view>
<Empty v-else />
</scroll-view>
</view>
<uni-popup ref="popup" @change="change">
<view class="popup-frame">
<view class="title">余额审核</view>
<radio-group @change="radioChange">
<label class="radio" style="font-size: 25rpx;">
<radio style="transform:scale(0.7)" value="2" :checked="submitParams.ackStatus == 2" />余额无误
</label>
<label class="radio" style="font-size: 25rpx;margin-left: 20rpx;">
<radio style="transform:scale(0.7)" value="3" />余额有误
</label>
</radio-group>
<input v-if="submitParams.ackStatus == 3" class="uni-input input" v-model="submitParams.actualAmount"
placeholder-style="placeholder-style" placeholder="请输入正确余额" />
<button class="mini-btn position" type="primary" size="mini" @click="submit">提交</button>
<button class="mini-btn position" size="mini" @click="$refs.popup.close()">取消</button>
</view>
</uni-popup>
</view>
</template>
<script>
import serve from '@/api/packageBill/push.js'
export default {
data() {
return {
parameter: {
pageSize: 15,
currentPage: 1,
params: {
ackStatus: '',
},
sorted: {}
},
submitParams: {
batchNumber: '',
actualAmount: '',
ackStatus: '2'
},
listData: [],
currentIndex: 0,
statusEnum: [{
value: '',
label: '全部',
color: ''
},
{
value: '1',
label: '待确认',
color: 'orange'
}, {
value: '2',
label: '确认无误',
color: 'green'
}, {
value: '3',
label: '金额有误',
color: 'red'
}
],
siteId: uni.getStorageSync('oilSitePriceId')
}
},
onLoad() {
// console.log('this.siteId', this.siteId)
this.search()
},
// onReachBottom() { //上拉触底函数
// // console.log('触底函数')
// this.loadMoreOrder('onReachBottom')
// },
methods: {
tabSelect(index, item) {
this.currentIndex = index
this.parameter.params.ackStatus = item.value
this.parameter.currentPage = 1
this.search()
},
examine(item) {
this.submitParams.batchNumber = item.batchNumber
this.submitParams.actualAmount = ''
this.$refs.popup.open('center')
},
radioChange(val) {
this.submitParams.ackStatus = val.detail.value
if (val.detail.value == 2) {
this.submitParams.actualAmount = ''
}
},
submit() {
if (this.submitParams.ackStatus == 3 && !this.submitParams.actualAmount) {
uni.showToast({
title: "请输入正确价格",
icon: 'none'
})
return
}
serve.ackBill(this.submitParams).then(res => {
uni.showToast({
title: res.msg,
icon: 'none'
})
if (res.code !== 20000) return
this.$refs.popup.close()
this.parameter.currentPage = 1
this.search()
})
},
search() {
this.parameter.params.siteId = this.siteId
serve.getByPageRecord(this.parameter).then(res => {
if (res.code !== 20000) return
if (this.parameter.currentPage == 1) {
this.listData = res.data.list
return
}
if (!res.data.list.length) {
uni.showToast({
title: '没有更多数据了~',
icon: 'none'
})
return
}
this.listData = this.listData.concat(res.data.list);
})
},
scrolltolower() {
this.parameter.currentPage += 1
this.search()
},
}
}
</script>
<style lang="scss" scoped>
.popup-frame {
position: relative;
padding: 20rpx 50rpx;
width: 600rpx;
height: 335rpx;
background: #fff;
border-radius: 20rpx;
.title {
font-size: 30rpx;
margin-bottom: 20rpx;
text-align: center;
}
.input {
margin-top: 20rpx;
margin-left: 8rpx;
padding-left: 15rpx;
border: 1rpx solid #ddd;
width: 67%;
height: 57rpx;
line-height: 57rpx;
}
.position {
position: absolute;
bottom: 20rpx;
&:nth-of-type(1) {
right: 30rpx;
}
&:nth-of-type(2) {
right: 180rpx;
}
}
}
.placeholder-style {
line-height: 57rpx;
}
.item {
position: relative;
overflow: hidden;
margin: 40rpx auto 0;
padding: 0 20rpx 15rpx 20rpx;
width: 700rpx;
min-height: 260rpx;
font-size: 28rpx;
background: #fff;
border-radius: 12rpx;
box-shadow: 0px 3px 9px 0px rgba(88, 88, 88, 0.2);
.no {
position: relative;
// padding-right: 50rpx;
width: 100%;
height: 55rpx;
line-height: 55rpx;
text-align: right;
&::after {
content: '';
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 0;
width: 100%;
height: 1rpx;
background: #ddd;
}
}
.round {
position: absolute;
right: 35rpx;
top: 74rpx;
width: 160rpx;
height: 160rpx;
border-radius: 50%;
border: 1px solid;
transform: rotate(-30deg);
>view {
margin: 15rpx auto;
width: 130rpx;
height: 130rpx;
text-align: center;
font-size: 25rpx;
line-height: 130rpx;
border: 1px dashed;
border-radius: 50%;
}
&.green {
border-color: #67c23a;
>view {
border-color: #67c23a;
color: #67c23a;
}
}
&.orange {
border-color: #e6a23c;
>view {
border-color: #e6a23c;
color: #e6a23c;
}
}
&.red {
border-color: #f56c6c;
>view {
border-color: #f56c6c;
color: #f56c6c;
}
}
}
.top-region {
position: relative;
margin-top: 20rpx;
padding-left: 18rpx;
>view {
width: 65%;
text {
font-size: 22rpx;
&:nth-of-type(2) {
float: right;
}
}
}
}
.bottom-region {
margin-top: 50rpx;
text-align: right;
}
}
.content {
min-height: 100%;
}
.order-list .order-item:last-of-type {
margin-bottom: 0;
}
.placeholder-hidden {
opacity: 0;
}
.fixed-t {
// position: fixed;
width: 750upx;
// z-index: 3;
}
.uni-input {
height: 25rpx;
}
.uni-picker {
height: 25rpx;
}
.uni-list-cell-db {
width: 100%;
height: 30rpx;
}
.popup_card_bottom {
display: flex;
justify-content: center;
margin-top: 68rpx;
}
.popup_card_bottom_submit {
background: #FE0505;
color: #ffffff;
font-size: 25rpx;
width: 240rpx;
}
.popup_card_bottom_close {
background: #FFFFFF;
font-size: 25rpx;
width: 240rpx;
}
.popup_card_from_item_right_text {
font-size: 24rpx;
color: #000000;
max-width: 50%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-right: 25rpx;
}
.popup_card_from_item_left_text {
width: 150rpx;
font-size: 24rpx;
color: #666666;
}
.popup_card_from_item {
display: flex;
align-items: center;
margin-bottom: 40rpx;
}
.popup_card_title {
text-align: center;
font-weight: 500;
color: #000000;
font-size: 36rpx;
margin-bottom: 80rpx;
}
.popup_card {
width: 681rpx;
height: 528rpx;
background: #FFFFFF;
border-radius: 15px;
padding: 64rpx;
}
</style>