Files
LSM_OIL_SITE/pages/home/home.vue
2024-02-02 13:44:55 +08:00

778 lines
21 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">
<cu-custom class="main-topbar bg-main-oil" @showLists='showLists' :isChange='true' bgColor="bg-main-oil">
<block slot="changeChannel">切换</block>
<block slot="content">{{'星油云站'}}</block>
</cu-custom>
<view class="main-money bg-main-oil">
<view class="padding-left-lg">当前油站为<text>{{accountName}}</text></view>
<view class="padding-xs flex align-center">
<view class="flex-sub text-center padding-top-lg">
<view class="txet-xxs">
<text class="text-white">今日收款</text>
</view>
<!-- <view class="" @tap='changess'>butns</view> -->
<view class=" text-sl padding padding-top-xs"><text
class="text-white">{{userAccount.totalMoney|numberFilter}}</text></view>
</view>
</view>
</view>
<view class="bg-main-oil bg-main-color main-money">
</view>
<view class="bg-white radius margin-left margin-right to-top">
<view class=" flex ">
<view class="padding text-center flex-sub"
@tap="routerTo('/packageOrders/pages/orderList/dailyOrder/dailyOrder')">
<text>今日收款笔数</text>
<view class="padding-sm">
<text class="oil-main-color">{{userAccount.totalCount || 0}}</text>
</view>
<!-- <button class="cu-btn bg-main-oil text-white text-sm ">
查看明细
</button> -->
</view>
<view class="padding text-center flex-sub">
<text>账户余额</text>
<view class="padding-sm">
<text class="oil-main-color">{{userAccount.balance|numberFilter}}</text>
</view>
<!-- <button class="cu-btn bg-main-oil text-white text-sm ">
查看明细
</button> -->
</view>
</view>
</view>
<view class="showMainBox cu-list bg-white margin radius " style='z-index: 0;'>
<view class="foldOrExpand" v-if='SiteOliInfo.length>2'>
<view class="fold checkF" v-if='checkForE' @click='showOrNo(false) '>折叠 <image
src="../../static/img/zdU.png" mode="" class="showMainBox_item_top_img"></image>
</view>
<view class="Expand checkF" v-if='!checkForE' @click='showOrNo(true) '>展开 <image
src="../../static/img/zdD.png" mode="" class="showMainBox_item_top_img"></image>
</view>
</view>
<view v-if='SiteOliInfo.length' class="showMainBox_main" :style="{ height: showHeight}">
<view class="showMainBox_item" v-for='(item,i) in SiteOliInfo' :key='i'>
<view class="showMainBox_item_left">
<view class="showMainBox_item_left_title">{{item.oilProductCode}} 油</view>
<view class="showMainBox_item_left_tag">
<view class="showMainBox_item_left_tag_money">
发改委价: <text class='color-red'>&yen;{{item.marketPrice}} </text>
</view>
<view class="showMainBox_item_left_tag_money">
油站价: <text class='color-red'>&yen;{{item.sitePrice}}</text>
</view>
</view>
</view>
<view class="showMainBox_item_right" v-if="sitInfo.phone" @click="markerPhone">
<image src="../../static/img/kfrx.png" mode="" class="showMainBox_item_right_img"></image>
</view>
</view>
</view>
</view>
<view class="cu-list grid col-3 no-border listBox margin radius " style='z-index: 0;'>
<view class="cu-item" @tap="routerTo('/pages/station-info/station-info')">
<view :class="['cuIcon-' + cuIconList[0].cuIcon, 'text-' + cuIconList[0].color]" class="text-sl">
<view class="cu-tag badge" v-if="cuIconList[0].badge != 0">
<block v-if="cuIconList[0].badge != 1">
{{ cuIconList[0].badge > 99 ? '99+' : cuIconList[0].badge }}
</block>
</view>
</view>
<text>{{ cuIconList[0].name }}</text>
</view>
<view class="cu-item" v-for="(item,index) in menusList" :key="index" @tap="routerTo(item.path)"
v-if='item.name != "星油云站超级管理员"'>
<view :class="['cuIcon-' + item.cuIcon, 'text-' + cuIconList[index+1].color]" class="text-sl">
<view class="cu-tag badge" v-if="item.badge != 0">
<block v-if="item.badge != 1">{{ item.badge > 99 ? '99+' : item.badge }}</block>
</view>
</view>
<text>{{ item.name }}</text>
</view>
<!-- <view class="cu-item" @tap="routerTo('/pages/station-price/station-price')">
<view :class="['cuIcon-' + cuIconList[1].cuIcon, 'text-' + cuIconList[1].color]" class="text-sl">
<view class="cu-tag badge" v-if="cuIconList[1].badge != 0">
<block v-if="cuIconList[1].badge != 1">
{{ cuIconList[1].badge > 99 ? '99+' : cuIconList[1].badge }}
</block>
</view>
</view>
<text>{{ cuIconList[1].name }}</text>
</view> -->
<view style="height: 180rpx;display: flex;justify-content: flex-end;" class="cu-item"
@tap="routerTo('/pages/escalation/escalation')">
<view>
<image style="width: 50rpx;height: 50rpx;" src="/static/img/dzsb.png"></image>
</view>
<text>{{ cuIconList[2].name }}</text>
</view>
<!-- <view class="cu-item" @tap="routerTo('/pages/TransactionStatistics/TransactionStatistics')">
<view :class="['cuIcon-' + 'new', 'text-' + cuIconList[0].color]" class="text-sl">
<view class="cu-tag badge" v-if="cuIconList[0].badge != 0">
<block v-if="cuIconList[0].badge != 1">
{{ cuIconList[0].badge > 99 ? '99+' : cuIconList[0].badge }}</block>
</view>
</view>
<text>交易统计</text>
</view> -->
<!-- <view class="cu-item" @tap="scanQr">
<view class="text-sl cuIcon-scan text-yellow">
</view>
<text>扫星油云</text>
</view> -->
<!-- <view class="cu-item" @tap="showLists">
<view :class="['cuIcon-' + cuIconList[0].cuIcon, 'text-' + cuIconList[0].color]" class="text-sl">
<view class="cu-tag badge" >
</view>
</view>
<text>切换油站</text>
</view> -->
<view class="padding-bottom-xl">
</view>
</view>
<view class="cu-modal" :class="checkList">
<view class="cu-dialog">
<view class="cu-bar bg-red justify-end">
<view class="content ">
{{'选择登录油站'}}
</view>
<view class="action" @tap="hidecheckList">
<text class="cuIcon-close text-white"></text>
</view>
</view>
<view class="text-left padding-xl padding-bottom padding-top bg-white">
<view class="flex align-center justify-between margin-bottom-sm " v-for="(list,i) in oliList"
:key='list'>
<view class=""> {{list.otherSiteName}}</view>
<view class="">
<view class=" bg-red cu-btn text-white text-center btn-radius-10 text-sm"
@tap="checkLists(list)">
进入
</view>
</view>
</view>
</view>
</view>
</view>
<view class="cu-modal" :class="[checkFirst ? 'show':'']">
<view class="cu-dialog">
<view class="cu-bar bg-red justify-end">
<view class="content ">
{{'选择登录油站'}}
</view>
<view class="action" @tap="hidecheckList">
<text class="cuIcon-close text-white"></text>
</view>
</view>
<view class="text-left padding-xl padding-bottom padding-top bg-white">
<view class="flex align-center justify-between margin-bottom-sm " v-for="(list,i) in oliList"
:key='list'>
<view class=""> {{list.otherSiteName}}</view>
<view class="">
<view class=" bg-red cu-btn text-white text-center btn-radius-10 text-sm"
@tap="checkLists(list)">
进入
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import cloudSiteApi from '@/api/cloud-site.js'
import oliUserApi from '@/api/oli-user.js'
import oilIdentityApi from '@/api/oil-identity.js'
import oliSiteApi from '@/api/oli-site.js'
export default {
props: {
site: {
type: Object,
default () {}
},
// menusList:{
// type:Array,
// default(){}
// },
checkUser: {
type: Boolean,
default () {}
}
},
data() {
return {
showHeight: '340rpx',
checkForE: false,
sitInfo: {},
SiteOliInfo: [],
accountName: uni.getStorageSync('siteOli'),
userAccount: uni.getStorageSync('ueserList'),
checkList: '',
scanUrl: '',
menusList: uni.getStorageSync('menusChangeList'),
oliList: uni.getStorageSync('oliList'),
userMenu: uni.getStorageSync('userMenu'),
loginUser: uni.getStorageSync('loginUser'),
checkFirst: uni.getStorageSync('checkFirst'),
title: 'Hello',
changeChannel: {
username: '',
channelId: '',
unionId: ''
},
cuIconList: [{
cuIcon: 'location',
path: '/pages/station-info/station-info',
color: 'red',
badge: 0,
name: '油站信息'
},
{
cuIcon: 'moneybag',
path: '/pages/station-info/station-info',
color: 'yellow',
badge: 0,
name: '促销优惠'
},
{
cuIcon: 'new',
path: '/packageChart/operation-analysis/operation-analysis',
color: 'orange',
badge: 0,
name: '对账上报'
},
{
cuIcon: 'new',
path: '/packageChart/operation-analysis/operation-analysis',
color: 'orange',
badge: 0,
name: '经营分析'
}, {
cuIcon: 'form',
color: 'yellow',
path: '/packageOrders/pages/orderList/orderList',
badge: 0,
name: '加油订单'
},
{
cuIcon: 'scan',
path: '/pages/stationDetail/stationDetail',
color: 'olive',
badge: 0,
name: '扫码加油'
},
{
cuIcon: 'qr_code',
color: 'cyan',
badge: 0,
path: '/packageQr/pages/qrsite/QrCode_xy',
name: '油站二维码'
},
{
cuIcon: 'punch',
path: '/packageQr/pages/partnership/partnership',
color: 'blue',
badge: 0,
name: '合作企业'
}, {
cuIcon: 'expressman',
color: 'mauve',
// color: 'pink',
path: '暂无',
badge: 0,
name: '员工管理'
}, {
cuIcon: 'expressman',
color: 'mauve',
// color: 'pink',
path: '暂无',
badge: 0,
name: '交易统计'
},
]
};
},
// created() {
// let a = uni.getStorageSync('menusChangeList')
// console.log('aaaaaaaaa',a)
// },
created() {
let a = uni.getStorageSync('menusChangeList')
console.log('aaaaaaaaa',a)
this.checkInfo()
},
filters: {
numberFilter(value) {
if (value) {
value = value - 1 + 1
return value.toFixed(2)
} else {
return '0.00'
}
}
},
methods: {
showOrNo(type) {
this.checkForE = type
},
markerPhone() {
if (this.sitInfo.phone) {
uni.makePhoneCall({
phoneNumber: '4008-56-5355'
})
} else {
uni.showToast({
title: '暂无油站联系方式',
icon: 'none'
});
}
},
changess() {
oliUserApi.initCouldUser().then(res => {
//console.log(res)
})
},
changeMenuList(data) { //这里是切换处 更新权限menus处
const Menus = data
let menusList = []
// console.log('data',data)
Menus.forEach((item, index, Menus) => {
if (item.roleName != 'ROOT') {
menusList.push(this.Splicing(item)) //根据menus做处理
}
})
uni.setStorageSync('menusChangeList', menusList)
this.menusList = uni.getStorageSync('menusChangeList')
this.$emit('changMenus', this.menusList)
},
Splicing(list) {
let obj = {
cuIcon: '',
path: '',
color: '',
badge: 0,
name: ''
}
if (list.roleName == '扫码加油') {
obj.cuIcon = 'scan',
obj.path = '/pages/station-info/scan-camera/scan-camera',
obj.color = 'olive',
obj.badge = 0,
obj.name = list.roleName
} else if (list.roleName == '经营分析') {
obj.cuIcon = 'new',
obj.path = '',
obj.color = 'orange',
obj.badge = 0,
obj.name = list.roleName
} else if (list.roleName == '促销优惠') {
obj.cuIcon = 'moneybag',
obj.path = '',
// /pages/station-price/station-price
obj.color = 'orange',
obj.badge = 0,
obj.name = list.roleName
} else if (list.roleName == '加油订单') {
obj.cuIcon = 'form',
obj.path = '/packageOrders/pages/orderList/orderList',
obj.color = 'yellow',
obj.badge = 0,
obj.name = list.roleName
} else if (list.roleName == '油站二维码') {
obj.cuIcon = 'qr_code',
obj.path = '/packageQr/pages/qrsite/QrCode_xy',
obj.color = 'cyan',
obj.badge = 0,
obj.name = list.roleName
} else if (list.roleName == '员工管理') {
obj.cuIcon = 'expressman',
obj.path = '/packageStaff/pages/staff/List/List',
obj.color = 'mauve',
obj.badge = 0,
obj.name = list.roleName
} else if (list.roleName == '油站信息') {
obj.cuIcon = 'punch',
obj.path = '/packageQr/pages/partnership/partnership',
obj.color = 'blue',
obj.badge = 0,
obj.name = list.roleName
} else if (list.roleName == '交易统计') {
obj.cuIcon = 'punch',
obj.path = '/pages/TransactionStatistics/TransactionStatistics',
obj.color = 'blue',
obj.badge = 0,
obj.name = list.roleName
} else if (list.roleName == '星油云站超级管理员') {
obj.cuIcon = 'punch',
obj.path = ' ',
obj.color = 'blue',
obj.badge = 0,
obj.name = list.roleName
} else if (list.roleName == '账单推送') {
obj.cuIcon = 'punch',
obj.path = '/packageBill/push/index',
obj.color = 'blue',
obj.badge = 0
obj.name = list.roleName
} else if (list.roleName == '订单提货') {
obj.cuIcon = 'punch',
obj.path = '/packageIntegral/takeGoods/index',
obj.color = 'blue',
obj.badge = 0
obj.name = list.roleName
} else if (list.roleName == '商城订单') {
obj.cuIcon = 'punch',
obj.path = '/packageIntegral/orderList/index',
obj.color = 'blue',
obj.badge = 0
obj.name = list.roleName
}else if (list.roleName == '商品列表') {
obj.cuIcon = 'punch',
obj.path = '/packageIntegral/productList/index',
obj.color = 'blue',
obj.badge = 0
obj.name = list.roleName
}else if (list.roleName == '新增商品') {
obj.cuIcon = 'punch',
obj.path = '/packageIntegral/productAddition/index',
obj.color = 'blue',
obj.badge = 0
obj.name = list.roleName
}
return obj
},
checkInfo() {
let id = uni.getStorageSync('channelId')
if (id) {
this.getUserInfo(id)
//console.log(this.menusList)
this.getSiteInfo(id)
}
},
// 获取油站信息
getSiteInfo(channelId) {
oliSiteApi.getSiteDetail(channelId).then(res => {
// //console.log(res)
if (res.code === 20000) {
// console.log(res.data.oil)
this.sitInfo = res.data.site
this.SiteOliInfo = res.data.oil
if (res.data.oil.length < 3) {
this.showHeight = ' auto'
} else {
this.showHeight = '340rpx'
}
uni.setStorageSync('oilSitePriceId', res.data.site.id)
uni.setStorageSync('oilSitePriceName', res.data.site.siteName)
}
})
},
hidecheckList() {
this.checkList = ''
this.checkFirst = false
},
checkLists(items) {
let id = items.channelId
this.changeChannel.channelId = items.channelId
this.changeChannel.unionId = uni.getStorageSync('unionId')
this.changeChannel.username = this.loginUser.userPhone
uni.setStorageSync('channelId', items.channelId)
oilIdentityApi.changeChannelLogin(this.changeChannel).then((res) => {
if (res.code == 20000) {
uni.setStorageSync('siteOli', items.otherSiteName)
this.accountName = items.otherSiteName
this.checkList = ''
this.checkFirst = false
uni.setStorageSync('checkFirst', false)
uni.setStorageSync('Authorization', res.data.authTokenDTO.accessToken)
this.checkForE = false
uni.setStorageSync('userMenu', res.data.authTokenDTO.loginUser.roleMenus)
uni.setStorageSync('loginUser', {
id: res.data.authTokenDTO.loginUser.id,
name: res.data.authTokenDTO.loginUser.name,
userPhone: res.data.authTokenDTO.loginUser.userPhone
})
this.getSiteInfo(res.data.authTokenDTO.loginUser.channelId)
this.getUserInfo(id)
this.changeMenuList(res.data.authTokenDTO.loginUser.roleMenus)
} else if (res.code == 40000) {
uni.navigateTo({
url: '/pages/login/boforeLogin/boforeLogin'
})
}
})
},
//获取油站基本资料
getUserInfo(id) {
// 获取云站当前登录用户的基础资料
oliSiteApi.getSiteBasicData(id).then(res => {
uni.stopPullDownRefresh();
if (res.code === 20000) {
uni.setStorageSync('ueserList', res.data)
this.userAccount = res.data
}
})
},
showLists() {
if (!this.checkLogin()) return
let phoneNumber = this.loginUser.userPhone,
_that = this
oliUserApi.getByPhone(phoneNumber).then((res) => {
if (res.code == 20000) {
if (res.data.length < 2) {
uni.showToast({
title: '当前只有一个油站不可切换',
icon: 'none'
})
return
}
_that.checkList = 'show'
_that.oliList = res.data
_that.changeChannel.username = _that.loginUser.userPhone
_that.changeChannel.unionId = uni.getStorageSync('unionId')
} else {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none'
})
}
})
},
scanQr() {
let scanUrl = '/pages/station-info/scan-camera/scan-camera'
uni.navigateTo({
url: scanUrl,
fail: (err) => {
// //console.log(err)
},
success: (res) => {
// //console.log('chengg', res)
},
})
},
checkLogin() {
const token = uni.getStorageSync('Authorization')
if (!token) {
uni.showModal({
content: '您还没有登录哦',
confirmText: '前往登录',
success: res => {
if (res.confirm) {
uni.reLaunch({
url: '/pages/login/boforeLogin/boforeLogin'
})
}
}
})
return false
}
return true
},
routerTo(url, name) {
if (!this.checkLogin()) return
if (url == '') {
uni.showToast({
title: '暂时无法使用...',
icon: 'none'
})
return
}
if (name === '扫码加油') {
this.scanUrl = url
this.scanQr()
} else {
uni.navigateTo({
url: url
})
}
}
},
onShow() {
//console.log('这里是show')
},
watch: {
checkForE(newValue, oldValue) {
console.log(newValue)
console.log(oldValue)
if (newValue && this.SiteOliInfo.length > 2) {
this.showHeight = ' auto'
} else if (!newValue && this.SiteOliInfo.length > 2) {
this.showHeight = '340rpx'
} else if (this.SiteOliInfo.length == 2 || this.SiteOliInfo.length < 2) {
this.showHeight = ' auto'
}
}
}
};
</script>
<style scoped>
.showMainBox_main {
width: 100%;
}
.showMainBox_item_top_img {
width: 40rpx;
height: 40rpx;
margin-left: 2%;
}
.foldOrExpand {
width: 100%;
padding: 2% 3%;
border-bottom: 1px solid #eeee;
}
.foldOrExpand .checkF {
display: flex;
justify-content: flex-end;
align-items: center;
transition: all linear .3s;
}
.color-red {
color: #f70e0e;
font-weight: 700;
font-size: 35rpx;
margin-left: 3%;
}
.showMainBox_item_right_img {
width: 70rpx;
height: 70rpx;
}
.showMainBox_item_left_tag_money {
font-size: 25rpx;
width: 47%;
}
.showMainBox_item {
display: flex;
justify-content: space-between;
align-items: flex-end;
width: 100%;
padding: 5% 6%;
box-sizing: border-box;
border-bottom: 2rpx solid #eee;
}
.showMainBox_item_left_tag {
display: flex;
justify-content: space-between;
align-items: center;
width: 90%;
margin-top: 2%;
}
.showMainBox_item_left_title {
color: #333;
font-size: 36rpx;
}
.showMainBox_item_left {
display: flex;
justify-content: flex-start;
align-items: flex-start;
flex-direction: column;
width: 90%;
flex: 0 0 auto;
}
.showMainBox {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: flex-start;
}
.content {
height: 100%;
}
.listBox {
display: flex;
justify-content: flex-start;
align-items: center;
}
.bottom-bar {
position: relative;
padding-top: 50px;
margin-bottom: 0;
margin-top: 0;
}
.main-topbar>>>.cu-bar {
height: 380rpx !important;
z-index: 0 !important;
}
.main-topbar>>>.cu-bar .content {
padding-bottom: 300rpx;
}
.bottom-bar-fixed {
position: fixed;
bottom: 0;
padding-top: 70rpx;
width: 100%;
}
.main-money {
position: relative;
z-index: 1;
}
.van-tag {
display: inline-block;
padding: 0.3rem 0.4rem;
position: absolute;
right: 1px;
font-size: 12px;
top: 25%;
background-color: #b9ffca;
border-radius: 10rem 0 0 10rem;
border-color: transparent;
}
.bg-main-color {
min-height: 160rpx;
}
.to-top {
position: relative;
top: -140rpx;
z-index: 1;
}
.cu-list {
position: relative;
top: -140rpx;
z-index: 1;
}
.cu-list.grid>.cu-item [class*=cuIcon] {
font-size: 75rpx;
}
</style>