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.
 
 
 
 

410 lines
11 KiB

<template>
<view class="fd flex">
<topBar height="373rpx" title="企业动销">
<view slot="coment">
<view style="padding: 26rpx 40rpx">
<seleBar @seleBarFn='seleBarFn' :seleBarData='seleBarData' />
</view>
<view class="header_footer">
<view>
<view class="flex jc">负责人</view>
<view
@click="chargeOpen"
style="border-bottom-left-radius:0px;border-top-left-radius: 0px;width:164rpx;"class="header_footer_item flex ac jc">
<text style="width: 100%;white-space:nowrap;overflow:hidden;text-overflow: ellipsis;">{{getData.params.customerName}}</text>
</view>
</view>
<view style="flex: 1;display: flex;flex-direction: column;justify-content: center;align-items: center;">
<view class="flex js ae">
<text>统计日期</text>
<text style="font-size: 18rpx;visibility: hidden;">01/25 16:08 </text>
</view>
<view style="padding: 0 20rpx; width: fit-content;" class="header_footer_item flex ac jc">
<text style="font-size: 27rpx;" @click="isShow.date=true"> {{ getData.params.startTime.split(' ')[0] }} {{getData.params.endTime.split(' ')[0] }} </text>
</view>
</view>
<view class="header_footer_item_right">
<view @click="isShow.filters=true"
style="border-bottom-right-radius:0px;border-top-right-radius: 0px;"
class="header_footer_item flex ac jc ">
{{getData.params.dataArrangement=='desc'?'顺序':'倒序'}}
</view>
</view>
</view>
</view>
</topBar>
<view class="sale_list">
<scroll-view v-if="dataList.length!==0" :refresher-triggered='isShow.refresherTriggered' @refresherrefresh='refresherrefresh' :refresher-enabled='true' @scrolltolower='scrolltolower' scroll-y="true" class="list_scroll">
<view :key='index' v-for="(item,index) in dataList">
<view @click="jump(item)" class="list_item flex jb">
<text :style="{color:item.rankingNum==1?'#E5920E':item.rankingNum==2?'#9495AD':item.rankingNum==3?'#BC853B':'',fontWeight:item.rankingNum>3?'':'600'}" class="flex ac ranking">No.{{item.rankingNum}}</text>
<view style="width: 160rpx; height: 100%; display: flex;flex-direction: column;align-items: center;overflow: hidden;" class="tc">
<view class="t-icon">
<view :style="{background:item.parentMark=='0'?'':'#BC853B'}" class="list_item_tip">
{{item.parentMark=='0'?'总公司':'子公司'}}
</view>
<!-- <image @error='imgError' style="width: 100%; height: 100%;" :src="item.siteImages?item.siteImages:'../../../static/selegs.png'"></image> -->
</view>
<view style="width: 100%;" class="textOverflow">
{{item.siteContacts||'暂无'}}
</view>
</view>
<view class="flex list_item_lable_right">
<view style="white-space:nowrap;overflow:hidden;text-overflow: ellipsis;">{{item.companyName}}</view>
<view class="flex jb">
<text>{{item.volume.toFixed(2)}}L</text>
<text>{{item.realPrice|price}}¥</text>
</view>
</view>
</view>
<view v-if="moreif(index)">
<moreFillend @moreFilledFn='moreFilledFn' :isShow='isShow.moreFilled'/>
</view>
</view>
</scroll-view>
<view v-if="dataList.length==0"
style="width: 100vw; height: 100%; display: flex;align-items: center;justify-content: center;">
<image src="@/static/qx.png" style="width: 536rpx; height: 399rpx;"></image>
</view>
</view>
<charge type='1' @chargeChange='chargeChange' v-model="isShow.charge" />
<datePopup @datePopupChange='datePopupChange' v-model="isShow.date" />
<filters @filtersChange='filtersChange' v-model="isShow.filters" />
</view>
</template>
<script>
import sy from '@/api/sy'
import seleBar from '@/components/seleBar'
import moreFillend from '../../components/more.vue'
import datePopup from '../../components/datePopup.vue'
import filters from '../../components/filters.vue'
import convertW from '../../components/convertW.js'
import charge from '../../components/charge.vue'
export default {
components: {
seleBar,
moreFillend,
charge,
datePopup,
filters
},
data() {
return {
seachValue: '',
index: 0,
single: "",
//展开控制器
isShow: {
moreFilled: true,
charge: false,
date: false,
filters: false,
refresherTriggered:false
},
seleBarData: [{
lable: '柴油',
value: 'DIESEL',
open:true
},
{
lable: '汽油',
value: 'PETROL',
open:true
},
{
lable: 'LNG',
value: 'GAS',
open:true
}
],
permission:false,
getData: {
pageSize:5,
currentPage: 1,
params: {
endTime: '',
startTime: '',
productType: 'DIESEL',
dataArrangement: 'desc',
customerId: '',
customerName:'全部'
}
},
dataList: [],
endDate: null,
}
},
watch:{
"isShow.charge":{
handler:function(n,o){
if(!n){
this.getData.currentPage = 1
this.getlist()
}
},
deep:true
}
},
created() {
let date = new Date
let yesterday = new Date(date.getTime()-86400000)
this.getData.params.endTime =`${yesterday.getFullYear()}-${yesterday.getMonth()+1<10?'0'+(yesterday.getMonth()+1):yesterday.getMonth()+1}-${yesterday.getDate()<10?'0'+yesterday.getDate():yesterday.getDate()} 23:59:59`
this.getData.params.startTime =`${yesterday.getFullYear()}-${yesterday.getMonth()+1<10?'0'+(yesterday.getMonth()+1):yesterday.getMonth()+1}-${yesterday.getDate()<10?'0'+yesterday.getDate():yesterday.getDate()} 00:00:00`
},
onShow() {
},
onLoad() {
},
mounted() {
this.getlist()
},
filters:{
price(e){
return convertW.convertW(e)
}
},
methods: {
refresherrefresh(){
this.getData.currentPage = 1
this.isShow.refresherTriggered = true
this.getlist()
},
imgError(e, index, i){},
moreif(index){
if(!this.seleBarData[this.index].open) return false
if(String(this.dataList.length/2).indexOf('.')!=-1){
return index+1 == (this.dataList.length+1)/2
}else{
return index+1 == this.dataList.length/2
}
},
jump(e){
uni.navigateTo({
url:'../enterpriseDetails/enterpriseDetails?jsData='+JSON.stringify(Object.assign(e,{endTime:this.getData.params.endTime,startTime:this.getData.params.startTime,productType:this.getData.params.productType}))
})
},
//获取列表方法
getlist() {
this.getData.pageSize = this.seleBarData[this.index].open? 5:10
sy.findEnterpriseDesc(this.getData).then(res=>{
this.isShow.refresherTriggered = false
if (res.code !== 20000) return
this.permission = Number(res.data.params.permission)==0?false:true
if (res.data.list.length == 0) {
uni.showToast({
title: '没有数据了哦',
icon: 'none'
})
if(this.getData.currentPage==1) this.dataList = []
return
}
if(this.seleBarData[this.index].open && res.data.list.length < 10){
this.seleBarData[this.index].open = false
}
if (this.getData.currentPage !== 1) {
this.dataList = this.dataList.concat(res.data.list);
return
}
this.dataList = res.data.list
})
},
//滑动到低触发的函数
scrolltolower() {
uni.showToast({
title: '到底了',
icon: 'none'
})
if(this.seleBarData[this.index].open) return
this.getData.currentPage+=1
this.getlist()
},
// 排序组件选中触发的函数 e当前所选值
filtersChange(e) {
this.getData.currentPage = 1;
this.getData.params.dataArrangement = e.value;
this.seleBarData[this.index].open = false;
this.getlist()
},
// 日期选择组件选中触发的函数 e选中的值
datePopupChange(e) {
this.getData.currentPage = 1
this.getData.params.startTime = e[0]
this.getData.params.endTime = e[1]
console.log(e,this.getData,this.seleBarData[this.index].open,'datePopupChange')
this.getlist()
},
//负责人选择组件选中触发的函数 e选中的值
chargeChange(e) {
this.getData.params.customerId = e.id
this.getData.params.customerName = e.userName
console.log(e)
},
//打开charge组件
chargeOpen() {
if(!this.permission) return;
this.isShow.charge = true
},
//点击moreFilled组件 回调事件
moreFilledFn() {
this.getData.currentPage = 1
this.seleBarData[this.index].open = false
this.getlist()
},
forList(e) {
let a = []
for (let i = 0; i < e; i++) {
a.push(i)
}
return a
},
//顶部选择器值变化时触发的函数 e 当前的值
seleBarFn(e,w) {
console.log('%c 当前选择项', 'color:red;font-size:50px')
console.log(e,w)
this.dataList = []
this.getData.currentPage = 1
this.index = w
this.getData.params.productType = e.value
this.isShow.moreFilled = this.seleBarData[this.index].open
this.getlist()
}
}
}
</script>
<style scoped>
.list_item_tip{
padding: 11rpx 14rpx;
background-color:#9F43CC;
color: #FFFFFF;
font-size: 16rpx;
width: fit-content;
margin: 0 auto;
display: flex;
}
.textOverflow{
overflow: hidden;/*超出部分隐藏*/
white-space: nowrap;/*不换行*/
text-overflow:ellipsis;/*超出部分文字以...显示*/
}
>>>.uni-easyinput__content {
border-radius: 15px !important;
margin-top: 15rpx;
}
.list_scroll:nth-child(1) {
color: #007AFF;
}
.picker-view {
/* height: 1000rpx; */
color: #000000;
}
.sj_icon {
text-align: center;
height: 30px;
transition: all .3s;
overflow: hidden;
}
.list_item_lable_right {
display: flex;
flex-direction: column;
justify-content: space-between;
width: 364rpx;
overflow: hidden;
}
.tc {
text-align: center;
}
.fw {
flex-wrap: wrap;
}
.t-icon {
/* width: 50rpx !important; */
height: 50rpx !important;
}
.list_scroll {
height: 100%;
overflow: hidden;
}
.list_item {
background-color: #FFFFFF;
margin: 0 40rpx 10rpx 40rpx;
border-radius: 10px;
color: #666666;
font-size: 28rpx;
padding: 26rpx;
}
.sale_list {
flex: 1;
padding-top: 40rpx;
overflow: hidden;
}
.header_footer_item_right {
border-bottom-right-radius: 0px;
border-top-right-radius: 0px;
}
.header_footer_item_right:before {
content: '111';
visibility: hidden;
}
.fd {
flex-direction: column;
flex-wrap: wrap;
height: 100vh;
}
.ae {
align-items: flex-end;
}
.jb {
justify-content: space-between;
}
.js {
justify-content: space-around;
}
.flex {
display: flex;
}
.ac {
align-items: center;
}
.jc {
justify-content: center;
}
.header_footer_item {
height: 90rpx;
padding: 0 40rpx;
border-radius: 10px;
background: #ADCEFF;
}
.header_footer {
display: flex;
gap: 25rpx
}
</style>