Files
LSM_OIL_SITE/packageBill/push/index.vue
xiaozhiyong d2878369d4 更新
2023-12-12 15:05:37 +08:00

426 lines
8.5 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>
<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>