pull/6/head
xiaozhiyong 9 months ago
parent eb174869a4
commit 895d23dd5c
  1. 45
      api/dataStatistics/networkPoint.js
  2. 46
      api/orderList/orderDetails.js
  3. 132
      dataStatistics/networkPoint/components/charge.vue
  4. BIN
      dataStatistics/networkPoint/img/1.png
  5. BIN
      dataStatistics/networkPoint/img/2.png
  6. BIN
      dataStatistics/networkPoint/img/3.png
  7. 424
      dataStatistics/networkPoint/index.vue
  8. 325
      dataStatistics/networkPoint/province.vue
  9. 295
      orderList/orderDetails/orderDetails.vue
  10. 20
      pages.json
  11. 15
      pages/index/menu.json
  12. 2
      salesRanking/components/charge.vue
  13. 8
      utils/request.js

@ -0,0 +1,45 @@
import request from '@/utils/request'
export default {
getByProvince(data) {
return request({
url: '/oil-finance/siteOperateRecord/getByProvince',
method: 'post',
data: data
})
},
getCheckInfo(data) {
return request({
url: '/oil-site/oilSiteAppInfo/getCheckInfo',
method: 'get'
})
},
getByProvincePage(data) {
return request({
url: '/oil-finance/siteOperateRecord/getByProvincePage',
method: 'post',
data: data
})
},
getNetworkCount(data) {
return request({
url: '/oil-finance/siteOperateRecord/getNetworkCount',
method: 'post',
data: data
})
},
// getByProvincePage(data) {
// return request({
// url: '/oil-finance/siteOperateRecord/getByProvincePage',
// method: 'post',
// data: data
// })
// },
liekQuery(query) {
return request({
url: `/oil-user/sysCustomerInfo/liekQuery/${query}`,
method: 'get'
})
},
}

@ -0,0 +1,46 @@
import request from '@/utils/request'
export default {
// 福佑
fuyouRefund(data) {
return request({
url: '/oil-site/fuYou/refund',
method: 'post',
data: data
})
},
//智猪 长久 牧原 新希望(黑龙江中锐)
orderRefund(data) {
return request({
url: '/oil-site/openPlatform/orderRefund',
method: 'post',
data: data
})
},
//顺丰
sfRefund(data) {
return request({
url: '/oil-site/sf/refund',
method: 'post',
data: data
})
},
// 安能
refund(id) {
return request({
url: `/oil-finance/oilOrderInfo/refund/${id}`,
method: 'get'
})
},
// 安途 圆通(易管油)
unifiedRefund(data) {
return request({
url: '/oil-site/xoil/unifiedRefund',
method: 'post',
data: data
})
},
}

@ -0,0 +1,132 @@
<template>
<view>
<uni-popup @change="change" ref="popup" type="bottom" background-color="#fff">
<view style="height:50vh; display: flex;flex-direction: column;padding-top: 20rpx;">
<view style="display: flex;">
<uni-easyinput @confirm="confirmFn" style="width: 90%; margin: 0 auto;"
prefixIcon="search" v-model="nameOrPhone" placeholder="请输入内容" />
</view>
<picker-view @change="pickerChange" style="flex: 1;">
<picker-view-column>
<view style="display: flex;align-items: center;justify-content: center;"
v-for="(item,index) in list" :key="index">{{ item.userName || item.nickName }}</view>
</picker-view-column>
</picker-view>
<view @click="buttenFn" class="butten">
确定
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import serve from '@/api/dataStatistics/networkPoint.js'
export default {
name: 'charge',
props: {
value: {
type: Boolean,
default: false
},
},
watch: {
value: function(n, o) {
if (n) {
this.$refs.popup.open('bottom')
} else {
this.$refs.popup.close()
}
}
},
created() {
// this.getlist()
},
data() {
return {
determine: null,
list: [
],
seleData: null,
nameOrPhone: ''
}
},
methods: {
// iconClick() {
// if (!this.nameOrPhone) {
// this.getlist()
// }
// },
buttenFn() {
clearTimeout(this.determine)
uni.showLoading({
title: '加载中'
})
this.determine = setTimeout(() => {
this.$emit('chargeChange', this.seleData)
uni.hideLoading()
this.$emit('input', false)
}, 700)
},
getlist() {
// if (!this.nameOrPhone) {
// this.list = [{
// nickName: '',
// id: ''
// }]
// this.seleData = this.list[0]
// return
// }
serve.liekQuery(this.nameOrPhone).then(res => {
if (res.code !== 20000) return
if (res.data.length == 0) {
uni.showToast({
title: '暂无数据',
icon: 'none'
})
return
}
this.list = res.data
this.list.unshift({
nickName: '全部',
customerId: ''
})
this.seleData = this.list[0]
})
},
pickerChange(e) {
console.log('pickerChange(e)',e)
this.seleData = this.list[e.detail.value[0]]
},
change(e) {
// console.log('change(e)',e)
this.$emit('input', e.show)
},
confirmFn() {
this.getlist()
}
}
}
</script>
<style scoped>
.charge-container {
padding-top: 20rpx;
}
.butten {
display: flex;
justify-content: center;
font-size: 35rpx;
color: #ffffff;
width: 60%;
margin: 10rpx auto;
border-radius: 10px;
background: #007AFF;
padding: 20rpx 0;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1,424 @@
<template>
<view style="height: 100vh;display: flex;flex-direction: column;background: #F0F2FF;">
<view class="header">
<view :style="{height:styles.top+'px'}"></view>
<uni-nav-bar @clickLeft='back' :border="false" color='white' backgroundColor="rgba(0,0,0,0)"
left-icon="back" title="网点数据统计" />
</view>
<view class="options">
<view @click="changeUser">{{params.nickName || '负责人'}}
<uni-icons type="forward"></uni-icons>
</view>
<view>
<picker :range="areaList" range-key="areaName" @change="changeArea">
<view class="uni-input">
<text class="special">{{params.provinceName || '省份'}}</text>
<uni-icons style="vertical-align: top;" type="forward"></uni-icons>
</view>
</picker>
</view>
<view>
<uni-datetime-picker type="daterange" @change="changeDatetime">
{{dataTime.start || '开始时间'}} ~ {{dataTime.end || '结束时间'}}
<uni-icons type="forward"></uni-icons>
</uni-datetime-picker>
</view>
</view>
<view class="overview">
<view>{{info.revenueAmountCount || '- - '}}</view>
<view>GMV总金额</view>
<view>
<text>总毛利{{info.grossProfitCount || '- - '}}</text>
<text>毛利率{{info.grossMargin || '- - '}}%</text>
</view>
</view>
<view class="title">省份排名</view>
<view style="flex:1;overflow: hidden;margin-top: 35rpx;">
<view v-if="!tableList.length"
style="width: 100vw; height: 100%; display: flex;align-items: center;justify-content: center;">
<image src="@/static/qx.png" style="width: 500rpx; height: 355rpx;"></image>
</view>
<scroll-view style="height: 100%;" scroll-y="true">
<view class="container">
<view class="item" v-for="item,index in tableList" :key="index" @click="jumpDetail(item)">
<view class="sequence" :class="['first','second','third'][index] || ''">{{
index < 3 ? '' : index + 1
}}</view>
<view class="info">
<view>
<text>{{item.provinceName}}</text>
<text>动销油站<text style="color: #ff0000;">{{item.siteDXCount}}</text></text>
<text>{{item.revenueAmountCount || '- - '}}</text>
</view>
<view>
<view :style="{
width:(item.revenueAmountCount/denominator * 100 > 2
? item.revenueAmountCount/denominator * 100
: 2 )
+ '%'}">
</view>
</view>
<view>
<text>总毛利{{item.grossProfitCount|| '- - '}}</text>
<text>毛利率{{item.grossMargin|| '- - '}}%</text>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
<view style="height: 50rpx;"></view>
<charge v-model="controlWindows.charge" @chargeChange='chargeChange' />
</view>
</template>
<script>
import serve from '@/api/dataStatistics/networkPoint.js'
import charge from './components/charge.vue'
export default {
components: {
charge
},
data() {
return {
controlWindows: {
charge: false
},
dataTime: {
start: '',
end: ''
},
styles: {},
areaList: [],
params: {
businessLeader: '',
nickName: '',
provinceName: '',
dateStartTime: '',
dateEndTime: ''
},
tableList: [],
denominator: '',
info: {},
}
},
onLoad() {
this.styles = uni.getMenuButtonBoundingClientRect()
this.getCheckInfo()
this.initDate()
this.seachFn()
},
methods: {
getNetworkCount() {
serve.getNetworkCount(this.params).then(res => {
if (res.code === 20000) {
let {
grossMargin,
grossProfitCount,
revenueAmountCount
} = res.data
this.info = {
grossMargin: this.toFixed2Handle(grossMargin),
grossProfitCount: this.toFixed2Handle(grossProfitCount),
revenueAmountCount: this.toFixed2Handle(revenueAmountCount)
}
this.denominator = revenueAmountCount
}
})
},
chargeChange(item) {
let {
id,
nickName
} = item
this.params.businessLeader = id
this.params.nickName = nickName
this.seachFn()
},
initDate() {
let yesterday = new Date().getTime() - 86400000
let {
year,
month,
day
} = this.dateHandle(yesterday)
this.dataTime.start = this.dataTime.end = `${year}-${month}-${day}`
},
dateHandle(datetime) {
let date = new Date(datetime)
let year = date.getFullYear()
let month = date.getMonth() + 1
let day = date.getDate()
return {
year,
month,
day
}
},
jumpDetail(item) {
uni.navigateTo({
url: `./province?info=${encodeURIComponent(JSON.stringify({
dataTime:this.dataTime,
item
}))}`
})
},
changeUser() {
this.controlWindows.charge = true
},
changeArea(event) {
let index = event.detail.value
this.params.provinceName = index == 0 ? '' : this.areaList[index].areaName
this.seachFn()
},
changeDatetime(value) {
let [start, end] = value
this.dataTime.start = start
this.dataTime.end = end
this.seachFn()
},
async seachFn() {
this.tableList = []
let {
start,
end
} = this.dataTime
this.params.dateStartTime = start + ' 00:00:00'
this.params.dateEndTime = end + ' 23:59:59'
await this.getNetworkCount()
this.getByPage()
},
getByPage() {
serve.getByProvince(this.params).then(res => {
if (res.code === 20000) {
this.tableList = res.data.filter(item => {
if(item.provinceName) return item
}).map((item, index) => {
item.grossMargin = this.toFixed2Handle(item.grossMargin)
item.grossProfitCount = this.toFixed2Handle(item.grossProfitCount)
item.revenueAmountCount = this.toFixed2Handle(item.revenueAmountCount)
return item
});
}
})
},
toFixed2Handle(value) {
if (!value && value != 0) {
return ''
}
return +value.toFixed(2) + ''
},
getCheckInfo() {
serve.getCheckInfo().then(res => {
if (res.code == 20000) {
this.areaList = res.data.areaCodeList
this.areaList.unshift({
areaName: '全部'
})
}
})
},
// //
// scrolltolower() {
// this.paramter.currentPage += 1
// this.getByPage()
// },
back() {
uni.navigateBack()
},
jump(item) {
uni.navigateTo({
url: `./details?details=${item.details}`
})
},
}
}
</script>
<style lang="scss">
// .uni-easyinput__content {
// background-color: #fff;
// }
.header {
position: relative;
width: 100%;
background: #2866FF;
// min-height: 403rpx;
// background: url('https://xoi-support.oss-cn-hangzhou.aliyuncs.com/admin/sjbj.png') center/100% no-repeat;
}
.options {
display: flex;
margin-top: 30rpx;
padding: 0 33rpx;
>view {
&:nth-of-type(1),
&:nth-of-type(2),
{
flex: 1;
}
&:nth-of-type(3),
{
flex: 2.5;
}
}
.special {
display: inline-block;
max-width: 115rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.overview {
margin: 27rpx auto 0;
padding: 55rpx 41rpx 0;
width: 684rpx;
height: 285rpx;
color: #333;
background: url('https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/networkPoint-background.png') 100%/100%;
border-radius: 30rpx;
>view {
&:nth-of-type(1) {
text-align: center;
font-size: 60rpx;
color: #fff;
}
&:nth-of-type(2) {
// margin-top: 5rpx;
text-align: center;
font-size: 20rpx;
color: #fff;
}
&:nth-of-type(3) {
margin-top: 45rpx;
display: flex;
justify-content: space-between;
color: #fff;
}
}
}
.title {
margin-top: 34rpx;
padding-left: 33rpx;
font-size: 28rpx;
}
.container {
// margin-top: ;
padding: 0 60rpx 0 32rpx;
.item {
display: flex;
margin-bottom: 35rpx;
&:nth-last-of-type(1) {
margin-bottom: 0;
}
.sequence {
position: relative;
top: 3rpx;
width: 60rpx;
height: 60rpx;
font-size: 24rpx;
color: #999999;
line-height: 60rpx;
text-align: center;
&.first {
background: url('./img/1.png') 100%/100%;
}
&.second {
background: url('./img/2.png') 100%/100%;
}
&.third {
background: url('./img/3.png') 100%/100%;
}
}
.info {
margin-left: 15rpx;
flex: 1;
>view {
&:nth-of-type(1) {
font-size: 28rpx;
color: #333;
>text {
&:nth-of-type(1) {
display: inline-block;
width: 135rpx;
font-weight: 550;
}
&:nth-of-type(2) {
margin-left: 25rpx;
}
&:nth-of-type(3) {
float: right;
color: #333333;
}
}
}
&:nth-of-type(2) {
position: relative;
margin-top: 15rpx;
width: 100%;
height: 15rpx;
border-radius: 37rpx;
background: #E5E5E5;
>view {
position: relative;
width: 20%;
height: 15rpx;
border-radius: 37rpx;
background: #2866FF;
}
}
&:nth-of-type(3) {
margin-top: 5rpx;
padding-left: 97rpx;
color: #666666;
font-size: 24rpx;
>text {
&:nth-of-type(2) {
float: right;
}
}
}
}
}
}
}
</style>

@ -0,0 +1,325 @@
<template>
<view style="height: 100vh;display: flex;flex-direction: column;background: #F0F2FF;">
<view class="header">
<view :style="{height:styles.top+'px'}"></view>
<uni-nav-bar @clickLeft='back' :border="false" color='white' backgroundColor="rgba(0,0,0,0)"
left-icon="back" title="网点数据统计" />
</view>
<view class="options">
时间{{dataTime.start}} ~ {{dataTime.end}}
</view>
<view class="overview">
<view>{{info.revenueAmountCount}}</view>
<view>{{paramter.params.provinceName}}油站消费总金额</view>
<view>
<text>总毛利{{info.grossProfitCount}}</text>
<text>毛利率{{info.grossMargin}}%</text>
</view>
</view>
<view class="category">
<text v-for="item,index in menuList" :key="index" :class="currentIndex == index ? 'active':''"
@click="changeCategory(index,item)">{{item.label}}</text>
</view>
<view style="flex:1;overflow: hidden;margin-top: 55rpx;">
<view v-if="!tableList.length"
style="width: 100vw; height: 100%; display: flex;align-items: center;justify-content: center;">
<image src="@/static/qx.png" style="width: 500rpx; height: 355rpx;"></image>
</view>
<scroll-view style="height: 100%;" scroll-y="true" @scrolltolower='scrolltolower'>
<view class="container">
<view class="item" v-for="item,index in tableList" :key="index">
<view class="sequence" :class="['first','second','third'][index] || ''">{{
index < 3 ? '' : index + 1
}}</view>
<view class="info">
<view>
<text>{{item.siteName || item.accountName || ''}}</text>
<text>{{item.revenueAmountCount|| '- - '}}</text>
</view>
<view>
<view :style="{
width:(item.revenueAmountCount/info.revenueAmountCount * 100 > 2
? item.revenueAmountCount/info.revenueAmountCount * 100
: 2)
+ '%'}">
</view>
</view>
<view>
<text>总毛利{{item.grossProfitCount|| '- - '}}</text>
<text>毛利率{{item.grossMargin|| '- - '}}%</text>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
<view style="height: 50rpx;"></view>
</view>
</template>
<script>
import serve from '@/api/dataStatistics/networkPoint.js'
export default {
data() {
return {
styles: {},
currentIndex: 0,
paramter: {
currentPage: 1,
pageSize: 10,
params: {
provinceName: '',
dateStartTime: '',
dateEndTime: '',
type: '1'
}
},
tableList: [],
denominator: '',
menuList: [{
value: '1',
label: '油站排名'
},
{
value: '2',
label: '油站账户排名'
},
],
info: {},
dataTime: {}
}
},
onLoad(options) {
this.styles = uni.getMenuButtonBoundingClientRect()
let {
dataTime,
item
} = JSON.parse(decodeURIComponent(options.info))
this.dataTime = dataTime
this.info = item
this.paramter.params.provinceName = item.provinceName
this.paramter.params.dateStartTime = dataTime.start + ' 00:00:00'
this.paramter.params.dateEndTime = dataTime.end + ' 23:59:59'
this.seachFn()
},
methods: {
changeCategory(index, item) {
this.currentIndex = index
this.paramter.params.type = item.value
this.seachFn()
},
seachFn() {
this.tableList = []
this.paramter.currentPage = 1
this.getByPage()
},
getByPage() {
serve.getByProvincePage(this.paramter).then(res => {
if (res.code === 20000) {
if (this.paramter.currentPage !== 1 && !res.data.list.length) {
uni.showToast({
title: '没有更多数据了~',
icon: 'none'
})
return
}
let filterData = res.data.list.map((item, index) => {
// if (this.paramter.currentPage = 1 && index == 0) {
// this.denominator = item.revenueAmountCount
// }
item.grossMargin = this.toFixed2Handle(item.grossMargin)
item.grossProfitCount = this.toFixed2Handle(item.grossProfitCount)
item.revenueAmountCount = this.toFixed2Handle(item.revenueAmountCount)
return item
});
this.tableList = this.tableList.concat(filterData)
}
})
},
toFixed2Handle(value) {
if (!value && value != 0) {
return ''
}
return +value.toFixed(2) + ''
},
//
scrolltolower() {
this.paramter.currentPage += 1
this.getByPage()
},
back() {
uni.navigateBack()
},
}
}
</script>
<style lang="scss">
.header {
position: relative;
width: 100%;
background: #2866FF;
}
.options {
margin-top: 30rpx;
padding: 0 33rpx;
.special {
display: inline-block;
max-width: 115rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.overview {
margin: 27rpx auto 0;
padding: 55rpx 41rpx 0;
width: 684rpx;
height: 285rpx;
color: #333;
background: url('https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/networkPoint-background.png') 100%/100%;
border-radius: 30rpx;
>view {
&:nth-of-type(1) {
text-align: center;
font-size: 60rpx;
color: #fff;
}
&:nth-of-type(2) {
text-align: center;
font-size: 20rpx;
color: #fff;
}
&:nth-of-type(3) {
margin-top: 45rpx;
display: flex;
justify-content: space-between;
color: #fff;
}
}
}
.category {
display: flex;
justify-content: space-evenly;
margin-top: 45rpx;
>text {
color: #999999;
&.active {
font-weight: 550;
color: #333;
}
}
}
.container {
padding: 0 60rpx 0 32rpx;
.item {
display: flex;
margin-bottom: 35rpx;
&:nth-last-of-type(1) {
margin-bottom: 0;
}
.sequence {
position: relative;
top: 3rpx;
width: 60rpx;
height: 60rpx;
font-size: 24rpx;
color: #999999;
line-height: 60rpx;
text-align: center;
&.first {
background: url('./img/1.png') 100%/100%;
}
&.second {
background: url('./img/2.png') 100%/100%;
}
&.third {
background: url('./img/3.png') 100%/100%;
}
}
.info {
margin-left: 15rpx;
flex: 1;
>view {
&:nth-of-type(1) {
font-size: 28rpx;
color: #333;
>text {
&:nth-of-type(1) {
display: inline-block;
width: 400rpx;
font-weight: 550;
}
&:nth-of-type(2) {
float: right;
color: #333333;
}
}
}
&:nth-of-type(2) {
position: relative;
margin-top: 15rpx;
width: 100%;
height: 15rpx;
border-radius: 37rpx;
background: #E5E5E5;
>view {
position: relative;
width: 20%;
height: 15rpx;
border-radius: 37rpx;
background: #2866FF;
}
}
&:nth-of-type(3) {
margin-top: 5rpx;
color: #666666;
font-size: 24rpx;
>text {
&:nth-of-type(2) {
float: right;
}
}
}
}
}
}
}
</style>

@ -6,15 +6,18 @@
<image style="width: 65%;height: 65%;" :src="details.siteImages"></image>
</view>
<view class="payLi felx justifyContent alignItems">{{details.payAccountType==0?'个人':'企业'}}</view>
<view :style="{background:paymentStatus(details.orderStatus).bg,color:paymentStatus(details.orderStatus).color}" class="payment felx justifyContent alignItems">{{paymentStatus(details.orderStatus).text}}</view>
<view
:style="{background:paymentStatus(details.orderStatus).bg,color:paymentStatus(details.orderStatus).color}"
class="payment felx justifyContent alignItems">{{paymentStatus(details.orderStatus).text}}</view>
</view>
<view class="paymentInformation">
<view class=" flex">
<view></view>
<view>
<view class="Text">
{{details.siteName}}
<uni-icons @click="copy(details.siteName)" style="margin-left: 10rpx;" color="#bbbbbb" custom-prefix="iconfont" type="iconfuzhi" size="20"></uni-icons>
{{details.siteName}}
<uni-icons @click="copy(details.siteName)" style="margin-left: 10rpx;" color="#bbbbbb"
custom-prefix="iconfont" type="iconfuzhi" size="20"></uni-icons>
</view>
<view class="smallText">{{details.siteId}}</view>
</view>
@ -22,7 +25,11 @@
<view style="margin:33rpx 0;" class="flex">
<view></view>
<view>
<view class="Text"> <text>{{details.customerName}}</text> <text style="margin-left:35rpx;">{{details.customerPhone}}</text> <uni-icons @click="copy(details.customerPhone)" style="margin-left: 10rpx;" color="#bbbbbb" custom-prefix="iconfont" type="iconfuzhi" size="20"></uni-icons> </view>
<view class="Text"> <text>{{details.customerName}}</text> <text
style="margin-left:35rpx;">{{details.customerPhone}}</text>
<uni-icons @click="copy(details.customerPhone)" style="margin-left: 10rpx;" color="#bbbbbb"
custom-prefix="iconfont" type="iconfuzhi" size="20"></uni-icons>
</view>
<view class="smallText">{{details.customerId}}</view>
</view>
</view>
@ -45,12 +52,14 @@
<view class="price felx">
<view>
<view class="smallText">价格</view>
<view class="bgtext">{{ details.realAmount}}<text style="position: relative;left: 20rpx;" class="Text"></text>
<view class="bgtext">{{ details.realAmount}}<text style="position: relative;left: 20rpx;"
class="Text"></text>
</view>
</view>
<view style="margin-left: 143rpx;">
<view class="smallText">升数</view>
<view class="bgtext">{{details.volume}} <text style="position: relative;left: 20rpx;" class="Text">L</text>
<view class="bgtext">{{details.volume}} <text style="position: relative;left: 20rpx;"
class="Text">L</text>
</view>
</view>
</view>
@ -76,13 +85,16 @@
</view>
</view>
</view>
<view v-if="details.orderWfStatus==0" @tap='codeFn' :style="{marginBottom:!moreOpen?'':'0',background:'#228B22'}"
<view v-if="details.orderWfStatus==0" @tap='codeFn'
:style="{marginBottom:!moreOpen?'':'0',background:'#228B22'}"
class="writeOff felx justifyContent alignItems ">待核销</view>
<view v-else :style="{marginBottom:!moreOpen?'':'0',background:'#BBBBBB'}"
<view v-else :style="{marginBottom:!moreOpen?'':'0',background:'#BBBBBB'}"
class="writeOff felx justifyContent alignItems ">已核销</view>
<view v-if="!moreOpen" @click="moreOpen=!moreOpen" class="moreButten felx justifyContent alignItems smallText ">
<view v-if="!moreOpen" @click="moreOpen=!moreOpen"
class="moreButten felx justifyContent alignItems smallText ">
更多信息&退款信息
<uni-icons :style="{transform:moreOpen?'rotate(180deg)':'rotate(0deg)',transition:'transform .3s' }" size="15" class="content-clear-icon" type="bottom" color="#c0c4cc" ></uni-icons>
<uni-icons :style="{transform:moreOpen?'rotate(180deg)':'rotate(0deg)',transition:'transform .3s' }"
size="15" class="content-clear-icon" type="bottom" color="#c0c4cc"></uni-icons>
</view>
<view class="dxx" :style="{height:moreOpen?'265rpx':'0rpx'}">
<view class="splitLine">
@ -94,41 +106,53 @@
</view>
<view class="more">
<view @tap='moreOpen=false' style="display: flex; justify-content: space-between;" class="Text">
{{details.orderSerialNumber}}
<uni-icons :style="{transform:moreOpen?'rotate(0deg)':'rotate(180deg)',transition:'transform .3s' }" size="15" class="content-clear-icon" type="top" color="#c0c4cc" ></uni-icons>
{{details.orderSerialNumber}}
<uni-icons
:style="{transform:moreOpen?'rotate(0deg)':'rotate(180deg)',transition:'transform .3s' }"
size="15" class="content-clear-icon" type="top" color="#c0c4cc"></uni-icons>
</view>
<view style="margin-bottom:33rpx;" class="smallText">{{details.createTime}}</view>
<view @tap="refund" v-if="!customerList.includes(details.createSource)" :style="{background:details.orderStatus==1?'':'#bbbbbb'}" class="refund felx justifyContent alignItems">退款</view>
<!-- <view @tap="refund" v-if="!customerList.includes(details.createSource)"
:style="{background:details.orderStatus==1?'':'#bbbbbb'}"
class="refund felx justifyContent alignItems">退款</view> -->
<view @tap="refundff" :style="{background:details.orderStatus==1?'':'#bbbbbb'}"
class="refund felx justifyContent alignItems">退款</view>
</view>
</view>
</view>
<view class="footerButten felx">
<view @click="copy(details.orderSerialNumber)" class="copyButten felx justifyContent alignItems">复制订单号</view>
<view @click="copy(details.orderSerialNumber)" class="copyButten felx justifyContent alignItems">复制订单号
</view>
<!-- <button class="forwardButten felx justifyContent alignItems" open-type="share">分享</button> -->
</view>
<popup :show='show' @confirmFn='confirmFn' @closeFn='closeFn' :butten='butten' :styles="{height:'350rpx',width:'350rpx'}" v-model="iShow.seting">
<popup :show='show' @confirmFn='confirmFn' @closeFn='closeFn' :butten='butten'
:styles="{height:'350rpx',width:'350rpx'}" v-model="iShow.seting">
<view slot="coment">
<view style="height: 350rpx;display: flex;align-items: center; width: 100%;justify-content: center;flex-wrap: wrap;flex-direction: column;">
<view v-if="!details.secondChannelCode" style="width: 100%; font-size: 34rpx;text-align: center; margin-bottom: 15rpx;" class="smallText">核销二维码</view>
<qrcode v-if="iShow.seting&&details.secondChannelCode" ref="qrcode" cid="2" loadMake iconSize="10" :val="details.secondChannelCode" unit="upx"
background="#fff" foreground="#000" pdground="#000" onval
@result="qrR" />
<view v-if="!details.secondChannelCode">
二维码生成错误
</view>
</view>
<view
style="height: 350rpx;display: flex;align-items: center; width: 100%;justify-content: center;flex-wrap: wrap;flex-direction: column;">
<view v-if="!details.secondChannelCode"
style="width: 100%; font-size: 34rpx;text-align: center; margin-bottom: 15rpx;"
class="smallText">核销二维码</view>
<qrcode v-if="iShow.seting&&details.secondChannelCode" ref="qrcode" cid="2" loadMake iconSize="10"
:val="details.secondChannelCode" unit="upx" background="#fff" foreground="#000" pdground="#000"
onval @result="qrR" />
<view v-if="!details.secondChannelCode">
二维码生成错误
</view>
</view>
</view>
</popup>
</view>
</template>
<script>
import orderList from '@/api/orderList'
import qrcode from '@/components/tki-qrcode/tki-qrcode'
import tool from '@/utils/tool.js'
import serve from '@/api/orderList/orderDetails.js'
export default {
onShareAppMessage(res) {
return {
@ -141,18 +165,18 @@
},
data() {
return {
customerList:['HLL','FENGTU'],
details:{},
show:{
img:false,
footer:false
customerList: ['HLL', 'FENGTU'],
details: {},
show: {
img: false,
footer: false
},
iShow: {
seting: false
},
moreOpen: false,
val:'898989898',
id:null,
val: '898989898',
id: null,
butten: {
colse: '取消',
confirm: '确定',
@ -161,54 +185,103 @@
confirmBg: '',
confirmColor: ''
},
refundMap: new Map([
[
['FUYOU'], {
interface: serve.fuyouRefund,
type: 'post'
}
],
[
['ZHIZHU', 'NEWHOPE', 'MUYUAN', 'G7CLUSTER-CAHNGJIU'], {
interface: serve.orderRefund,
type: 'post'
}
],
[
['SHUNFENG'], {
interface: serve.sfRefund,
type: 'post'
}
],
[
['ANNENG'], {
interface: serve.refund,
type: 'get'
}
],
[
['YIGUANYOU', 'ANTU'], {
interface: serve.unifiedRefund,
type: 'post'
}
],
])
}
},
onLoad(e) {
if(e.jsData){
if (e.jsData) {
console.log(JSON.parse(e.jsData));
this.id = JSON.parse(e.jsData).id
this.id = JSON.parse(e.jsData).id
this.getList(this.id)
}
console.log('refundMap', this.refundMap)
},
methods: {
codeFn(){
if(this.details.orderWfStatus==0){
orderList.getOrderQrCodeOms(this.details.orderSerialNumber).then(res=>{
if(res.code==20000){
refundff() {
let {createSource} = this.details
if(!createSource) {
uni.showToast({
title:"createSource 为空",
icon:"none"
})
return
}
let keys = this.refundMap.keys()
console.log(keys)
// console.log(this.details)
// console.log('refundff')
},
codeFn() {
if (this.details.orderWfStatus == 0) {
orderList.getOrderQrCodeOms(this.details.orderSerialNumber).then(res => {
if (res.code == 20000) {
console.log(res)
this.val = res.data.codeStr
this.iShow.seting=true
}else{
this.iShow.seting = true
} else {
uni.showToast({
title:res.msg,
icon:'none'
title: res.msg,
icon: 'none'
})
}
})
}else{
this.iShow.seting=false
} else {
this.iShow.seting = false
}
},
refund(){
if(this.details.orderStatus!==1) return ;
let that =this
refund() {
if (this.details.orderStatus !== 1) return;
let that = this
uni.showModal({
title: '提示',
content: '是否确认退款',
success: function (res) {
success: function(res) {
if (res.confirm) {
orderList.refund({id:that.id}).then(res=>{
if(res.code==20000){
orderList.refund({
id: that.id
}).then(res => {
if (res.code == 20000) {
uni.showToast({
title: '退款成功',
duration: 2000
});
setTimeout(()=>{
setTimeout(() => {
that.getList(that.id)
},1000)
}, 1000)
}
})
console.log('用户点击确定');
@ -218,70 +291,72 @@
}
});
},
paymentStatus(e){
switch(e){
paymentStatus(e) {
switch (e) {
case 0:
return {
text:'待支付',
color:'#EBC153',
bg:'#FFF6DD'
}
break;
return {
text: '待支付',
color: '#EBC153',
bg: '#FFF6DD'
}
break;
case 1:
return {
text:'已支付',
color:'#17A00E',
bg:'#D1FFDA'
}
break;
return {
text: '已支付',
color: '#17A00E',
bg: '#D1FFDA'
}
break;
case -1:
return {
text:'支付失败',
color:'#EC4645',
bg:'#FFC8C8'
}
break;
return {
text: '支付失败',
color: '#EC4645',
bg: '#FFC8C8'
}
break;
case 2:
return {
text:'已取消',
color:'#999999',
bg:'#E9E9E9'
}
break;
return {
text: '已取消',
color: '#999999',
bg: '#E9E9E9'
}
break;
case 3:
return {
text:'已退款',
color:'#999999',
bg:''
}
break;
return {
text: '已退款',
color: '#999999',
bg: ''
}
break;
case 4:
return {
text:'退款中',
color:'#EBC153',
bg:''
}
// return '退'
break;
return {
text: '退款中',
color: '#EBC153',
bg: ''
}
// return '退'
break;
case 5:
return {
text:'退款失败',
color:'#EC4645',
bg:''
}
break;
}
return {
text: '退款失败',
color: '#EC4645',
bg: ''
}
break;
}
},
getList(e){
getList(e) {
orderList.findOrderDetails({
orderId:e
}).then(res=>{
if(res.code!==20000)return
orderId: e
}).then(res => {
if (res.code !== 20000) return
this.details = res.data;
tool.numberSetting(this.details,['realAmount','volume','realPrice','marketPrice','sitePrice'],2);
tool.numberSetting(this.details, ['realAmount', 'volume', 'realPrice', 'marketPrice',
'sitePrice'
], 2);
})
},
qrR(){
qrR() {
console.log('1')
},
closeFn() {
@ -306,7 +381,7 @@
},
copy(text) {
uni.setClipboardData({
data:`${text}`,
data: `${text}`,
// data: `ID:${this.details.id}\n:${this.details.orderSerialNumber}\n:${this.details.realAmount}\n:${this.details.volume}\n:${this.details.payAccountType==0?'':''}\n:${this.details.customerName}\nid:${this.details.customerId} ${this.details.companyName?'\n:' + this.details.companyName :''}\n:${this.details.customerPhone}`, //
// ${(this.details.payAccountType==0?'':'') + ':' + (this.details.payAccountType==0? this.details.customerName:this.details.companyName)}
success: () => { //

@ -551,6 +551,26 @@
"enablePullDownRefresh": false
}
}]
},
{
"root": "dataStatistics",
"pages": [{
"path": "networkPoint/index",
"style": {
"navigationBarTitleText": "网点数据统计",
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
},
{
"path": "networkPoint/province",
"style": {
"navigationBarTitleText": "各省数据统计",
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
}
]
}
],
"globalStyle": {

@ -204,5 +204,20 @@
"image":"../../static/newindex/customerList.png"
}
]
},
{
"name":"数据统计",
"icon":"iconxiugaiyonghuxinxi",
"label":"dataStatistics",
"colorOpen":false,
"submenu":[
{
"icon":"iconxiugaiyonghuxinxi",
"name":"网点统计",
"router":"/dataStatistics/networkPoint/index",
"lable":"dataStatistics:networkPoint:list",
"image":"../../static/newindex/customerList.png"
}
]
}
]

@ -31,7 +31,7 @@
},
type: {
type: String,
default: 0
default: 1
}
},
watch: {

@ -1,11 +1,11 @@
import axios from 'axios'
import utils from '@/utils/encode'
// const env = process.env.NODE_ENV
// const env = 'test'
const env = 'production'
// const testUrl = 'http://172.16.23.95:38080'
const env = 'test'
// const env = 'production'
const testUrl = 'http://192.168.110.77:38080'
// const productUrl = 'https://www.xingoil.com/adminapi'
// const productUrl = 'https://www.xingoil.com/adminapi' // 生产,加密 new
const productUrl = 'http://uat.xingoil.com/adminapi'
const service = axios.create({

Loading…
Cancel
Save