20 Commits

Author SHA1 Message Date
xiaozhiyong
9aebbade3c 更新 2024-04-24 13:23:33 +08:00
xiaozhiyong
26d9e26c2f 更新 2024-04-18 16:49:56 +08:00
2552af652f Merge pull request '更新' (#15) from zyj into master
Reviewed-on: #15
2024-02-23 02:53:45 +00:00
e9f59282a3 更新 2024-02-23 10:53:21 +08:00
xiaozhiyong
289ba29759 Merge branch 'master' of http://121.196.213.68:3000/caoliancun/MP_XOIL_company_new 2024-02-21 15:12:09 +08:00
xiaozhiyong
7536516a37 更新 2024-02-21 15:12:03 +08:00
02a74211d6 Merge pull request 'zyj' (#14) from zyj into master
Reviewed-on: #14
2024-02-21 07:06:31 +00:00
1cc0753efc 更新 2024-02-21 15:04:21 +08:00
71a3188491 更新 2024-02-19 16:54:24 +08:00
d7746faca3 OCR 2024-02-07 16:52:36 +08:00
16bbe24e5b OCR 2024-02-05 16:16:23 +08:00
xiaozhiyong
607e13f266 更新 2024-01-19 13:39:47 +08:00
xiaozhiyong
fdf4935fb2 更新 2023-11-29 18:12:08 +08:00
xiaozhiyong
5c11f4644f 更新 2023-11-21 16:29:43 +08:00
xiaozhiyong
66ce529d41 Merge branch 'master' of http://121.196.213.68:3000/caoliancun/MP_XOIL_company_new 2023-11-20 13:24:33 +08:00
xiaozhiyong
74d32fa0a7 更新 2023-11-20 13:24:17 +08:00
928947bab4 Merge pull request '12' (#13) from caolc into master
Reviewed-on: #13
2023-11-19 10:42:05 +00:00
caoliancun
9d2c86a20d 12 2023-11-19 18:40:26 +08:00
xiaozhiyong
ff0986230c Merge branch 'master' of http://121.196.213.68:3000/caoliancun/MP_XOIL_company_new 2023-10-12 11:04:05 +08:00
642d6b07f8 Merge pull request 'xiaozy' (#12) from xiaozy into master
Reviewed-on: #12
2023-09-27 06:16:17 +00:00
27 changed files with 687 additions and 215 deletions

26
App.vue
View File

@@ -67,7 +67,7 @@
value: item.id
})
})
console.log(channelCodes, productCodes, siteBrands)
// console.log(channelCodes, productCodes, siteBrands)
this.menuList[0].detailList = this.menuList[0].detailList.concat(channelCodes)
this.menuList[1].detailList = this.menuList[1].detailList.concat(productCodes)
this.menuList[2].detailList = this.menuList[2].detailList.concat(siteBrands)
@@ -95,10 +95,12 @@
if(view.route === 'BagStation/pages/stationDetail/stationDetail') {
uni.removeStorageSync('refuseLogin')
}
// console.log('white.includes(view.route)',white.includes(view.route))
// // 是否跳过登陆
let isRefuseLogin = uni.getStorageSync('refuseLogin')
if(isRefuseLogin || white.includes(view.route) || view.route.includes('BagAuth')) return
this.getAmount()
// console.log('111111111111111')
this.getAmount()
})
},
// 是否token过期或ip更改
@@ -106,10 +108,14 @@
// clearTimeout(loginTimer)
accountApi.getTotalOilCardInfo().then(res => {
if (res.code == 42011) {
uni.setStorageSync('Authorization',null)
uni.setStorageSync('openid',null)
uni.showModal({
title: '需要您重新登录',
content: res.msg,
duration: '3000',
showCancel:false,
success: function(res) {
if (res.confirm) {
uni.redirectTo({
@@ -125,13 +131,17 @@
onReady() {
},
onUnload() {
uni.hideLoading()
},
onShow: function(option) {
const token = uni.getStorageSync('Authorization')
const openid = uni.getStorageSync('openid')
if (token && openid) {
this.getAmount()
}
// const token = uni.getStorageSync('Authorization')
// const openid = uni.getStorageSync('openid')
// if (token && openid) {
// this.getAmount()
// }
uni.getLocation({
type: 'wgs84',
success: function(res) {
@@ -142,7 +152,9 @@
}
});
},
}
</script>
<style lang="scss">

View File

@@ -280,9 +280,16 @@
submit() {
this.checkFn('name');
this.checkFn('plateNumber');
if (!this.fromStyle.nameType || !this.fromStyle.plateNumberType) {
if (!this.fromStyle.nameType) {
uni.showToast({
title: '还有信息没有填哦',
title: '请输入姓名',
icon: 'error'
});
return
};
if (!this.fromStyle.plateNumberType) {
uni.showToast({
title: '车牌号格式有误',
icon: 'error'
});
return

View File

@@ -55,7 +55,7 @@
共享企业余额
</view>
<text
class="text-grey">加油额度{{cardList[cardCur].orderAmountToplimit}}加油升数额度{{cardList[cardCur].orderVolumeToplimit}}L</text>
class="text-grey">加油额度{{cardList[cardCur].orderAmountToplimit || ''}}{{cardList[cardCur].orderAmountToplimit?'元': '无限制'}}加油升数额度{{cardList[cardCur].orderVolumeToplimit || ''}}{{cardList[cardCur].orderVolumeToplimit ? 'L' : '无限制'}}</text>
</view>
<view class="text-center padding">
<!-- <view class="text-red text-bold text-lg">
@@ -90,7 +90,7 @@
<uni-load-more :status="loadStatus"></uni-load-more>
</view>
<transBlcok ref="transBlcok" @reloadCard="getCards"/>
<transBlcok ref="transBlcok" @reloadCard="getCards" />
</view>
</template>
@@ -411,4 +411,4 @@
.opacity-half {
opacity: 0.2;
}
</style>
</style>

View File

@@ -153,7 +153,7 @@
<!-- <button class="cu-btn block lg margin-top " @tap="delOrder">删除订单</button> -->
</view>
<view class="customer-service" @click="arousePhone">
<image src="../../static/img/customer-service.png"></image>
<image src="../../BagStation/static/img/customer-service.png"></image>
联系客服
</view>
</view>
@@ -161,7 +161,7 @@
<script>
import orderApi from '@/api/oil-order.js'
import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue" //二维码生成器
import tkiQrcode from "../pages/components/tki-qrcode/tki-qrcode.vue" //二维码生成器
import oilSiteApi from '@/api/oil-site.js'
export default {
@@ -304,7 +304,7 @@
},
onLoad(option) {
console.log('++++++++++++++++++', option)
// console.log('++++++++++++++++++', option)
this.test = option.id
this.id = option.id
this.tsets = option.name
@@ -312,23 +312,23 @@
uni.showShareMenu()
let _that = this
this.timeinterval = setInterval(() => {
console.log('1')
// console.log('1')
_that.newQrString()
}, 1000 * 60 * 3);
},
filters: {
moneyIntercept(value) {
if (value) {
console.log(value)
// console.log(value)
let valus = (parseInt(value * 100) / 100).toFixed(2) + '¥/'
console.log(valus)
// console.log(valus)
return valus
} else {
return '暂无'
}
},
moneyFormath(value) {
console.log(value)
// console.log(value)
if (value != 'xxx.x') {
let number = value.toFixed(2)
return number

View File

@@ -164,7 +164,7 @@
<script>
import orderApi from '@/api/oil-order.js'
import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue" //二维码生成器
import tkiQrcode from "../pages/components/tki-qrcode/tki-qrcode.vue" //二维码生成器
import oilSiteApi from '@/api/oil-site.js'
import ureaFinanceApi from '../../api/urea_finance.js'
export default {

View File

@@ -135,7 +135,7 @@
import toilApi from '@/api/toil.js'
import ThirdPartyVoucher from '../components/third-party-voucher/third-party-voucher.vue'
import oilSiteApi from '@/api/oil-site.js'
import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue" //二维码生成器
import tkiQrcode from "../components/tki-qrcode/tki-qrcode.vue" //二维码生成器
export default {
components: {
ThirdPartyVoucher,

View File

@@ -188,6 +188,24 @@
</view>
</view>
</view>
<view class=" menu cu-list " v-if="plateNumberOcrShow==true">
<view class="cu-item nowrap">
<view class="text-bold ">
车牌识别
</view>
<view @tap="srcPhoto" class="text-center" style="width: 60%;margin: 0 2%;">
<input v-model="plateNumberOcr" type="digit" class="block"
placeholder="请点击拍照识别车牌" value="" style="border-bottom: 1px solid #efefef;" />
</view>
<view @tap="srcPhoto">
<uni-icons type="camera-filled" size="30"></uni-icons>
</view>
</view>
</view>
<view class="bg-white padding">
<view class="">
<text class="text-bold">优惠</text>
@@ -367,6 +385,39 @@
</view>
</view>
</view>
<view class="cu-modal bottom-modal " :class="showPlicePhoto">
<view class="cu-dialog bg-white">
<view class="cu-bar bg-white justify-end">
<view class="content"></view>
<view class="action" @tap="showPlicePhoto=''">
<text class="cuIcon-close text-red"></text>
</view>
</view>
<view style="height: 1000rpx;">
<view style="margin: 100rpx 0;">
<uni-icons type="clear" size="80" color="#f56c6c"></uni-icons>
<view>
<text style="color: #d9001b;font-size: 30rpx;font-weight: bold;">识别失败!</text>
</view>
</view>
<view style="margin: 60rpx 0;">
<button @tap="srcPhoto" style="width: 60%;background-color: #409EFF;color: #ffffff;">重新拍照</button>
</view>
<view style="margin: 60rpx 0;">
<button style="width: 60%;background-color: #F59A23;color: #ffffff;" @click="manualInput">手动输入车牌号</button>
</view>
</view>
</view>
</view>
<uni-popup ref="inputDialog" type="dialog">
<uni-popup-dialog mode="input" title="请输入车牌号" value="" :before-close="true"
placeholder="请输入" @close="inputClose" @confirm="inputConfirm"></uni-popup-dialog>
</uni-popup>
</view>
</template>
@@ -377,6 +428,7 @@
import oilOssApi from '@/api/oil-oss.js'
import utils from '@/utils/encode'
import oilInterfacesApi from '@/api/oil-interfaces.js'
import user from '@/api/user.js'
export default {
props: {
channelList: {
@@ -504,13 +556,18 @@
activeChannelCode: '',
checkBar: [],
realMoney: '',
xoilAmountGun: ''
xoilAmountGun: '',
plateNumberOcr:'',
plateNumberOcrShow:false,
showPlicePhoto:'',
plateNumberImages:''
}
},
created() {
let oilItem = uni.getStorageSync('oilItem'),
oilSite = uni.getStorageSync(''),
otherUser = uni.getStorageSync('otherUserInfo')
otherUser = uni.getStorageSync('otherUserInfo'),
companyId = JSON.parse(uni.getStorageSync('companyCard')).companyId
if (otherUser) {
// console.log('这里是卡里')
this.isOtherUser = true
@@ -520,6 +577,8 @@
console.log('oilItem', oilItem)
this.showtitles = oilItem.listTag;
this.init()
console.log(companyId)
this.getCompanyConfig(companyId)
},
watch: {
activeChannelCode: {
@@ -598,6 +657,86 @@
}
},
methods: {
manualInput(){
this.showPlicePhoto=''
this.$refs.inputDialog.open()
},
inputClose(){
this.$refs.inputDialog.close()
},
inputConfirm(val){
if(val){
this.plateNumberOcr = val
this.$refs.inputDialog.close()
}else{
uni.showToast({
title: '请输入车牌号',
icon: 'none'
})
}
},
getCompanyConfig(companyId){
if(companyId){
user.getCompanyConfigByCompanyId(companyId).then(res=>{
if(res.data.plateNumberOcr==1){
this.plateNumberOcrShow = true
}else{
this.plateNumberOcrShow = false
}
})
}
},
srcPhoto(){
this.showPlicePhoto=''
let _that = this
uni.chooseImage({
count: 1, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['camera'], // 只能拍照
success: function(res) {
uni.showLoading({
title: '识别中',
mask: true
});
const JSESSIONID = utils.uuid()
uni.uploadFile({
url: 'http://uat.xingoil.com/adminapi/oil-oss/obejct/carNoIdentify',
filePath: res.tempFilePaths[0],
name: 'file',
header: {
"Content-Type": "multipart/form-data",
"Authorization": uni.getStorageSync('Authorization'),
'dataSources': 'MP',
"imei": uni.getStorageSync('unionid'),
"openId": uni.getStorageSync('openid'),
'JSESSIONID': JSESSIONID,
'token': utils.md5Salt(JSESSIONID)
},
success(e) {
uni.hideLoading()
let obj = JSON.parse(e.data)
if(obj.data&&obj.data.carNo){
_that.plateNumberOcr = obj.data.carNo
_that.plateNumberImages = obj.data.imgUrl
}else{
_that.plateNumberOcr = ''
_that.showPlicePhoto = 'show'
}
},fail(res){
uni.hideLoading()
_that.showPlicePhoto = 'show'
}
})
}
})
},
typeChenk() {
return this.channelList[this.activeCur]?.secondChannelCode && this.thirdPartyDynamicData.includes(this
.channelList[this.activeCur].secondChannelCode)
@@ -1135,14 +1274,23 @@
'xoilAmountGun': this.vol
}
} else {
var orderData = {
if(this.plateNumberOcrShow == true){
if(!this.plateNumberOcr){
uni.showToast({
icon: 'none',
title: '请上传车牌照片'
})
return
}
var orderData = {
amountGun: this.activeChannelCode == 'TY' ? this.ty.realMoney : '',
shareCompanyQuota: 0, // 共享标识
priceId: this.oilSitePriceDetailsVo[this.radio].priceId, //类型String 必有字段 备注:油价主键
orderType: "REAL_ORDER", //类型String 必有字段 备注订单类型REAL_ORDER真实订单 VIRTUAL_ORDER虚拟订单
orderSource: "WECHAT_MINIAPPS", //类型String 必有字段 备注订单来源WECHAT_MINIAPPS
plateNumber: this.plateNumber ? this.plateNumber : this
.plateNumberSel, //类型String 必有字段 备注:车牌号
plateNumber: this.plateNumberOcrShow == true ? this.plateNumberOcr : this
.plateNumber, //类型String 必有字段 备注:车牌号
plateNumberImages: this.plateNumberImages, // 车牌照片地址
siteUserName: this.jober, //类型String 必有字段 备注:加油员
oilsBar: this.oilBar, //类型Number 必有字段 备注:油枪
volume: this.activeChannelCode == 'TY' ? this.tyRes.liter : this
@@ -1155,6 +1303,29 @@
'version': 1,
'xoilAmountGun': this.vol
}
}else{
var orderData = {
amountGun: this.activeChannelCode == 'TY' ? this.ty.realMoney : '',
shareCompanyQuota: 0, // 共享标识
priceId: this.oilSitePriceDetailsVo[this.radio].priceId, //类型String 必有字段 备注:油价主键
orderType: "REAL_ORDER", //类型String 必有字段 备注订单类型REAL_ORDER真实订单 VIRTUAL_ORDER虚拟订单
orderSource: "WECHAT_MINIAPPS", //类型String 必有字段 备注订单来源WECHAT_MINIAPPS
plateNumber: this.plateNumber ? this.plateNumber : this
.plateNumberSel, //类型String 必有字段 备注:车牌号
siteUserName: this.jober, //类型String 必有字段 备注:加油员
oilsBar: this.oilBar, //类型Number 必有字段 备注:油枪
volume: this.activeChannelCode == 'TY' ? this.tyRes.liter : this
.vol, //类型Number 必有字段 备注:加油升数
realPrice: this.oilSitePriceDetailsVo[this.radio].sitePrice, //类型Number 必有字段 备注:实际加油价格
suppleMark: 0, //类型Number 必有字段 备注补录标识0实时订单 1补录订单
createSource: "XOIL_DRIVER_COMPANY_WECHAT_APPLET", //类型String 必有字段 备注:创建来源( XOIL_DRIVER_COMPANY_WECHAT_APPLET
// "deviceImei": "mock", //类型String 可有字段 备注:设备唯一码
// "networkIp": "mock" //类型String 可有字段 备注ip地址
'version': 1,
'xoilAmountGun': this.vol
}
}
}
// console.log(orderData)
let location = uni.getStorageSync('location') || {

View File

@@ -91,6 +91,7 @@
},
methods: {
_makeCode() {
let that = this
if (!this._empty(this.val)) {
qrcode = new QRCode({

View File

@@ -461,7 +461,7 @@
}
} else {
uni.showToast({
title: '操作频繁',
title: '操作频繁请5s后再试',
icon: 'none'
})
this.isdisabled = false

View File

@@ -144,7 +144,7 @@
import toilApi from '@/api/toil.js'
import ThirdPartyVoucher from '../components/third-party-voucher/third-party-voucher.vue'
import oilSiteApi from '@/api/oil-site.js'
import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue" //二维码生成器
import tkiQrcode from "../components/tki-qrcode/tki-qrcode.vue" //二维码生成器
export default {
components: {
ThirdPartyVoucher,

View File

@@ -487,7 +487,7 @@
markerList.forEach((item, index) => {
let configure = {
siteId: item.id,
id: Number(`${index}`), //2023.08.30 在此处踩坑 一作这b竟然把id重新赋值了
id: Number(`${index}`), //2023.08.30 在此处踩坑 一作这b竟然把id重新赋值了。 一作去好好查一下官网的MAP中的marker的文档 id字段的注意事项再看一下后台给的id 补补课
imgCustomCallout: this.olitype(item.siteChannel),
iconPath: '../../static/img/tt.png',
width: 5,

View File

@@ -22,7 +22,7 @@
<script>
import serve from '@/api/account.js'
import tkiQrcode from '@/components/tki-qrcode/tki-qrcode.vue'
import tkiQrcode from '@/BagStation/pages/components/tki-qrcode/tki-qrcode.vue'
export default {
components: {
tkiQrcode
@@ -39,12 +39,14 @@
computed: {
phoneHandle() {
let phone = this.user.userPhone
console.log('user',this.user)
if(!phone) return ''
return `${phone.substr(0,3)}****${phone.substr(-4)}`
}
},
methods: {
getQrStr(reset = 0) {
console.log('this.user', this.user)
if (this.user.id) {
serve.getQrStr(this.user.id, reset).then(res => {
if (!res.data) return

View File

@@ -56,16 +56,16 @@
seleIndex:0,
kmData:[
{
lable:'20KM',
value:20000
lable:'5KM',
value:5000
},
{
lable:'10KM',
value:10000
},
{
lable:'30KM',
value:30000
},
{
lable:'50KM',
value:50000
}
]
}

View File

@@ -62,7 +62,7 @@
width: 40,
height: 50
},
radius: 20000,
radius: 5000,
LastCoordinate: [],
timer: null,
TXSDK: null,
@@ -212,7 +212,7 @@
// list.length = 100;
this.markers = this.locationProcessing(res.data);
this.spareMarkers = JSON.parse(JSON.stringify(this.markers));
console.log(this.spareMarkers, '////////////////////////')
// console.log(this.spareMarkers, '////////////////////////')
// markersArray.forEach((item,index)=>{
// })
@@ -363,8 +363,8 @@
},
mapUpdated(e) {
let that = this
console.log('%c 更新', 'font-size:50px;color:red');
console.log(e, '*****************************************')
// console.log('%c 更新', 'font-size:50px;color:red');
// console.log(e, '*****************************************')
// that.mapContext.getScale({
// success: function(e) {
// // that.$nextTick(function() {

View File

@@ -172,7 +172,7 @@
import accountApi from '@/api/account.js'
import priceTab from '../components/price-tab.vue'
import threeSites from '@/components/three-sites.vue'
import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue" //二维码生成器
import tkiQrcode from "../components/tki-qrcode/tki-qrcode.vue" //二维码生成器
export default {
components: {
priceTab,
@@ -215,10 +215,10 @@
if (this.activeChannelCode) {
if (this.secondChannelCode) {
this.posName = '壳牌'
return `../../BagStation/static/img/YDJY.png`
return `../../../static/img/YDJY.png`
} else {
this.posName = '星油云站'
return `../../BagStation/static/img/${this.activeChannelCode}.png`
return `../../../static/img/${this.activeChannelCode}.png`
}
}
},

View File

@@ -127,7 +127,7 @@
<script>
import orderApi from '@/api/oil-order.js'
import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue" //二维码生成器
import tkiQrcode from "../pages/components/tki-qrcode/tki-qrcode.vue" //二维码生成器
import oilSiteApi from '@/api/oil-site.js'
import ureaFinanceApi from '../../api/urea_finance.js'
export default {

18
api/integral.js Normal file
View File

@@ -0,0 +1,18 @@
import request from '@/utils/request'
export default {
getByPage(data) {
return request({
url: '/oil-finance/oilCustomerIntegralRecord/getByPage',
method: 'post',
data: data
})
},
getByCustomerId(customerId) {
return request({
url: `/oil-finance/oilCustomerIntegralAccount/getByCustomerId/${customerId}`,
method: 'get'
})
},
}

View File

@@ -2,7 +2,7 @@ import request from '@/utils/request'
const service_name = "oil-site"
const group_name = "oilSiteAppInfo"
const order_name = 'oilSiteOrderInfo'
export default {
export default {
getOrderDiscountInfo(data) {
return request({
url: `/${service_name}/${order_name}/getBOrderDiscountInfo`,
@@ -175,18 +175,11 @@ export default {
}
})
},
//检测在线状态
//检测在线状态
isLoginSuccess() {
return request({
url: `/oil-identity/operationUser/isLoginSuccess`,
method: 'POST',
})
},
getOilDriverQrCode(params) {
return request({
url: '/oil-site/qrCode/getOilDriverQrCode',
method:'post',
data:params
method: 'POST',
})
},
}

19
api/user.js Normal file
View File

@@ -0,0 +1,19 @@
import request from '@/utils/request'
const service_name = "oil-user"
const group_name = "oilCustomerInfo"
export default{
carNoIdentify(data) { //图片上传-ORC识别
return request({
url: `/${service_name}/${group_name}/carNoIdentify`,
method: 'post',
data: data
})
},
// 查询企业配置
getCompanyConfigByCompanyId(id) {
return request({
url: `/${service_name}/sysCompanyConfig/getCompanyConfigByCompanyId/${id}`,
method: 'GET'
})
},
}

View File

@@ -1,27 +1,36 @@
<template>
<view class="cu-item cur padding no-mr-border site-item" :style="{'min-height': siteItem.activitySwitch?mHeight+'rpx !important':''}">
<view class="cu-avatar radius lg "
<view class="cu-item cur padding no-mr-border site-item"
:style="{'min-height': siteItem.activitySwitch?mHeight+'rpx !important':''}">
<view class="cu-avatar radius lg "
:style="'background-image:url('+(siteItem.siteImages?siteItem.siteImages:defaultLogo)+');'">
</view>
<view class="content">
<view style="display: flex;">
<view style="flex-shrink:1" class="text-cut text-black text-lg padding-right-sm "> {{siteItem.siteName}}</view>
<view v-if="siteItem.siteLevel" class="siteName_tag">{{siteItem.siteLevel}}</view>
</view>
<view class="content">
<view style="display: flex;">
<view style="flex-shrink:1" class="text-cut text-black text-lg padding-right-sm ">
{{siteItem.siteName}}</view>
<!-- <view v-if="siteItem.siteLevel" class="siteName_tag">{{siteItem.siteLevel}}</view> -->
</view>
<view style="display: flex;" class="listTages">
<view :style="{background:siteItem.siteType==1?'#FF6700':'#00c15e'}" class=" cu-tag round bg-self--dark-yellow yu-tag text-xs">{{siteItem.siteType==1?'加油站':'加气站'}}</view>
<view :style="{background:siteItem.siteType==1?'#FF6700':'#00c15e'}"
class=" cu-tag round bg-self--dark-yellow yu-tag text-xs">{{siteItem.siteType==1?'加油站':'加气站'}}
</view>
<view class="cu-tag round bg-self--dark-blue yu-tag text-xs" v-show="siteItem.ureaNumber>0">尿素</view>
<!-- <view v-if="siteItem.siteLevel" class=" cu-tag round bg-self--dark-yellow yu-tag text-xs">{{siteItem.siteLevel}}</view> -->
<view class="cu-tag round bg-self-yellow yu-tag text-xs" :class="siteItem.channelCode=='XOIL'?'tag-red':''">{{siteItem.listTag|channelCodeFamt}}</view>
<view class="cu-tag round bg-self-yellow yu-tag text-xs"
:class="siteItem.channelCode=='XOIL'?'tag-red':''">{{siteItem.listTag|channelCodeFamt}}</view>
<view class="cu-tag round bg-self--dark-yellow yu-tag text-xs" v-show="first">距离最近</view>
<view v-if="siteItem.highSpeedMark||siteItem.roadTpye" class="cu-tag round bg-self--dark-blue yu-tag text-xs" :style="{background:speedMarkColor(siteItem.highSpeedMark,siteItem.roadTpye)}">{{speedMark(siteItem.highSpeedMark,siteItem.roadTpye)}}{{siteItem.roadName?':'+siteItem.roadName:''}}</view>
<view v-if="siteItem.highSpeedMark||siteItem.roadTpye"
class="cu-tag round bg-self--dark-blue yu-tag text-xs"
:style="{background:speedMarkColor(siteItem.highSpeedMark,siteItem.roadTpye)}">
{{speedMark(siteItem.highSpeedMark,siteItem.roadTpye)}}{{siteItem.roadName?':'+siteItem.roadName:''}}
</view>
<!-- <view v-if="siteItem.highSpeedMark!=null" class="cu-tag round bg-self--dark-blue yu-tag text-xs" :style="{background:speedMarkColor(siteItem.highSpeedMark)}">{{siteItem.highSpeedMark?siteItem.highSpeedMark:siteItem.roadTpye|speedMark(siteItem.highSpeedMark,siteItem.roadTpye)}}{{siteItem.roadName?':'+siteItem.roadName:''}}</view> -->
</view>
<view class="">
<view class="text-cut color-666 text-sm ">
{{siteItem.address}}
</view>
<view class="">
<view class="text-cut color-666 text-sm ">
{{siteItem.address}}
</view>
</view>
<view class="text-gray flex">
<view class="text-bold yellow-oil text-xl padding-right-xs">
@@ -29,20 +38,21 @@
</view>
<view class="oil-main-color text-xl text-bold padding-right-xs">
{{siteItem.sitePrice|moneyFormat}}
</view>
</view>
<view class="">
<text class="cu-tag oil-tag radius text-xs" v-if="siteItem.oilSitePrice - siteItem.sitePrice>0">{{(siteItem.oilSitePrice - siteItem.sitePrice)|moneyFormat}}</text>
</view>
<view class="text-cut padding-left-sm text-lg">
<text class="text-delete color-333 text-sm padding-right-xs">
{{siteItem.oilSitePrice|moneyFormat}}/L
</text>
<text class="cu-tag oil-tag radius text-xs"
v-if="siteItem.oilSitePrice - siteItem.sitePrice>0">{{(siteItem.oilSitePrice - siteItem.sitePrice)|moneyFormat}}</text>
</view>
<view class="text-cut padding-left-sm text-lg">
<text class="text-delete color-333 text-sm padding-right-xs">
{{siteItem.oilSitePrice|moneyFormat}}/L
</text>
<!-- <my-icon iconName="¥.png" class="padding-right-xs icon-rectangle"></my-icon>
<my-icon iconName="f.png" class="padding-right-xs "></my-icon> -->
</view>
</view>
</view>
</view>
<view class="text-gray" v-if="siteItem.activitySwitch">
<view class="activity-cu">
<text>活动</text>
@@ -51,12 +61,12 @@
</view>
</view>
<view class="action" style=" width: 88px;">
<view class="text-grey text-sm " style="padding-top: 6rpx;">
<view class="action" style=" width: 88px;">
<view class="text-grey text-sm " style="padding-top: 6rpx;">
<!-- <my-icon iconName="sy-der-icon.png" class="padding-right-xs text-sm"></my-icon> -->
{{siteItem.juli|distanceFilter}}
</view>
</view>
{{siteItem.juli|distanceFilter}}
</view>
</view>
</view>
</template>
@@ -76,51 +86,52 @@
return {
mHeight: 156,
starUrl: this.global.starUrl,
defaultLogo:'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/logo_default.png'
defaultLogo: 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/logo_default.png'
}
},
mounted() {
const query = uni.createSelectorQuery().in(this);
query.select('.activity-cu').boundingClientRect(data => {undefined
// console.log(data,'1111111111111111111')
if(data){
this.mHeight = this.mHeight + data.height*2
}
query.select('.activity-cu').boundingClientRect(data => {
undefined
// console.log(data,'1111111111111111111')
if (data) {
this.mHeight = this.mHeight + data.height * 2
}
}).exec();
},
methods: {
speedMarkColor(val,data){
if(val == 0){
if(data == '0'){
speedMarkColor(val, data) {
if (val == 0) {
if (data == '0') {
return '#666666'
}
if(data == '1'){
if (data == '1') {
return '#F9AA64'
}
if(data == '2'){
if (data == '2') {
return '#D61750'
}
}
if(val == 1){
if (val == 1) {
return '#11A265'
}
},
speedMark(val,data){
speedMark(val, data) {
// console.log(val,data,'qqqqqqqqqqqqqqqqqqqqqq')
if(val == 0){
if(data == '0'){
if (val == 0) {
if (data == '0') {
return '普通'
}
if(data == '1'){
if (data == '1') {
return '省道'
}
if(data == '2'){
if (data == '2') {
return '国道'
}
}
if(val == 1){
if (val == 1) {
return '高速'
}
},
@@ -128,7 +139,7 @@
filters: {
channelCodeFamt(value) {
// console.log(value)
if (value == null || value == '' ) {
if (value == null || value == '') {
return '未知'
// 渠道编码 ( XOIL星油 WJY万金油 LV老吕找油网 TY团油 YDJY一点加油壳牌)
// switch (value) {
@@ -159,7 +170,9 @@
// console.log('old:',value)
// console.log('new:',realAmount)
// return realAmount
return String(value).split('.')[1]&&String(value).split('.')[1].length>2?Number(`${String(value).split('.')[0]}.${String(value).split('.')[1].substring(0,2)}${Number(String(value).split('.')[1].substr(2))==0?'':9}`).toFixed(2) :Number(value).toFixed(2);
return String(value).split('.')[1] && String(value).split('.')[1].length > 2 ? Number(
`${String(value).split('.')[0]}.${String(value).split('.')[1].substring(0,2)}${Number(String(value).split('.')[1].substr(2))==0?'':9}`
).toFixed(2) : Number(value).toFixed(2);
} else {
return '0.00'
}
@@ -169,10 +182,10 @@
</script>
<style scoped>
.siteName_tag{
.siteName_tag {
background-color: #FF6700;
border-radius: 50rpx;
width: 20px ;
width: 20px;
height: 20px;
color: #FFFFFF;
display: flex;
@@ -182,49 +195,58 @@
box-sizing: border-box;
flex-shrink: 0;
}
.site-item {
margin-bottom: 1.8rem;
align-items: flex-start !important;
height: 147rpx!important;
.site-item {
margin-bottom: 1.8rem;
align-items: flex-start !important;
height: 147rpx !important;
}
.yellow-oil{
.yellow-oil {
color: #e8775a;
}
.cu-avatar{
.cu-avatar {
background-color: transparent !important;
}
.tag-red{
.tag-red {
background-color: red;
}
.levelBox{
font-size: 24rpx;
color: red;
font-weight:bold;
margin-left: 16rpx;
.levelBox {
font-size: 24rpx;
color: red;
font-weight: bold;
margin-left: 16rpx;
}
.bg-self--dark-blue{
.bg-self--dark-blue {
background: #2098ff;
color: #FFFFFF;
}
.activity-cu{
.activity-cu {
border: 1px solid #FF9000;
border-radius: 5px;
width: fit-content;
display: flex;
}
.activity-cu text{
.activity-cu text {
font-size: 12px;
padding: 0 18rpx;
line-height: 20px;
}
.activity-cu text:last-child{
color:#ff9818;
.activity-cu text:last-child {
color: #ff9818;
}
.activity-cu text:first-child{
color:#ff6f0e;
.activity-cu text:first-child {
color: #ff6f0e;
background: #FFEBDE;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
</style>
</style>

View File

@@ -1,19 +1,27 @@
<template>
<!-- 三个最近的油站弹窗 -->
<!-- 三个最近的油站弹窗 -->
<view>
<view class="cu-modal" :class="showThreeSites?'show':''" @touchmove.stop>
<view class="cu-modal" :class="showThreeSites?'show':''">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end">
<!-- <view class="content">选择油站</view> -->
<view class="action" @tap="hideModal">
<view class="content">选择油站</view>
<view class="action" @tap="hideModal('sites')">
<text class="cuIcon-close text-red"></text>
</view>
</view>
<view class="bg-white pb30">
<tki-qrcode ref="qrcode" cid="2" :val="qrcodeText" :size="400" :isHaveBg="true" pdground="#000"
foreground="#000" background="#fff" onval showLoading loadMake />
<view class="text-center padding-top text-sm margin-bottom">
提示该二维码每隔<text style="color: #ff0000;">3分钟</text>自动刷新一次
<view class="padding-xl bg-white">
<view class="" v-if="siteList.length>0">
<three-item v-for="(item,index) in siteList" :key="item.id" :site-item="item" :first="index==0"
class="cu-list menu-avatar cu-item " @tap="toDetail(item)">
</three-item>
</view>
<view class="" v-else>
<my-empty></my-empty>
</view>
<view class="btn-box padding-top">
<button @tap="toSitePage" class="cu-tn bg-red round margin-bottom lg" color="#3982F6"
size="large">前往油站列表查找
</button>
</view>
</view>
</view>
@@ -23,13 +31,11 @@
</template>
<script>
import serve from '@/api/oil-site.js'
import accountApi from '@/api/account.js'
import tkiQrcode from '@/components/tki-qrcode/tki-qrcode.vue'
import oilSiteApi from '@/api/oil-site.js'
import threeItem from './three-item.vue'
export default {
components: {
tkiQrcode
threeItem
},
props: {
showThreeSites: {
@@ -39,63 +45,91 @@
},
data() {
return {
qrcodeText: '',
user: uni.getStorageSync('user'),
timerInstance: null
siteList: [],
imgURL: this.global.baseURL,
}
},
watch: {
showThreeSites: {
handler(newval) {
if (newval) {
this.initQRCode()
created() {
this.getSiteList()
},
watch:{
showThreeSites:{
handler(newval){
if(newval==true){
this.getSiteList()
}
},
immediate: true
}
}
},
methods: {
async initQRCode() {
if (this.timerInstance) {
clearInterval(this.timerInstance)
this.timerInstance = null
toSitePage(){
// uni.setStorageSync('activeCur','station')
uni.switchTab({
url: '/pages/tabbar/station/stationList'
});
},
refreshLocation(){
uni.getLocation({
type: 'wgs84',
success: function (res) {
uni.setStorageSync('location',res)
}
});
},
getSiteList() {
this.refreshLocation()
let data1 = {
currentPage: 1,
pageSize: 3,
params: { //类型Object 必有字段 备注:// 筛选对象
sort: "juli", //类型String 必有字段 备注:// 智能排序 ( price价格最低 juli距离最近 ) 默认距离排序
...uni.getStorageSync('location'),
...this.filterData
// siteBrand: "", // 备注:// 石油品牌 ( 1-中国石油 2-中国石化 3-壳牌 4-民营 5-中海油 6-京博 7-中化石油 8-其他 )
// channelCode: "", // 备注:// 渠道编码 ( OIL星油 WJY万金油 LV老吕找油网 TY团油 YDJY一点加油壳牌)
// oilProductCode: "" // 备注:// 油号选择 ( 0# 92# 92#)
}
}
let accountResult = await accountApi.getUserAccount()
if (!accountResult.data.length) return
let params = {
companyId: accountResult.data[0].companyId,
orderSource: "WECHAT_MINIAPPS",
customerId: this.user.id,
channelCode: 'XOIL',
oilCardNature: accountResult.data[0].oilCardType, //油卡性质
accountCardCode: accountResult.data[0].accountCardCode //油卡卡号
}
serve.getOilDriverQrCode(params).then(res => {
if (!res.data) return
this.qrcodeText = res.data.codeStr
// readOnlySites
oilSiteApi.getSiteList(data1).then(res => {
if (res.code == 20000) {
this.siteList = res.data.list
}
})
this.timerInstance = setInterval(() => {
serve.getOilDriverQrCode(params).then(res => {
if (!res.data) return
this.qrcodeText = res.data.codeStr
})
}, 1000 * 60 * 3)
},
hideModal() {
clearInterval(this.timerInstance)
this.timerInstance = null
this.$refs.qrcode._clearCode()
this.$emit('hideOneModal')
toDetail(item) {
let itemS = JSON.stringify(item)
console.log(itemS)
uni.navigateTo({
url: `/BagStation/pages/stationDetail/stationDetail?item=${itemS}`,
fail: (err) => {
// console.log(err)
},
success: () => {
// console.log('err')
}
})
},
callShipper() {
uni.makePhoneCall({
phoneNumber: this.waybillData.shippePhone
})
},
hideModal(name) {
this.$emit('hideOneModal', name)
},
registerContracts() {
this.$emit('registerContracts')
},
toSetLocation() {
this.$emit('toSetLocation')
},
toAuth() {
uni.navigateTo({
url: '认证路径'
})
}
}
}
</script>
@@ -120,8 +154,4 @@
left: 0.2rem;
min-width: 100%;
}
.pb30 {
padding-bottom: 30rpx;
}
</style>

View File

@@ -34,10 +34,14 @@
"style": {
"navigationBarTitleText": "星油云" // "enablePullDownRefresh": true
}
}
, {
},
{
"path": "pages/tabbar/user/integralRecord",
"style": {
"navigationBarTitleText": ""
}
},
{
"path": "pages/tabbar/qrCenter/qrCenter",
"style": {
"navigationBarTitleText": "",

View File

@@ -53,7 +53,7 @@
}
},
mounted() {
console.log('mounted')
// console.log('mounted')
},
onLoad(option) {
this.option = option;
@@ -62,7 +62,7 @@
onReady(option) {},
methods: {
versionUpdate() {
console.log('versionUpdate')
// console.log('versionUpdate')
let that = this
const updateManager = uni.getUpdateManager();
updateManager.onCheckForUpdate(function(res) {
@@ -102,7 +102,7 @@
if(res.code==20000) isOnline = true
}).catch(err=>{})
}
console.log(isOnline,'isOnline')
// console.log(isOnline,'isOnline')
if (isOnline) {
this.key = '在线'
} else {
@@ -131,7 +131,7 @@
})
}
if (this.key == '在线') {
console.log(type, 'typetypetypetype');
// console.log(type, 'typetypetypetype');
uni.switchTab({
url: `/pages/tabbar/home/home`,
@@ -148,7 +148,7 @@
},
Interceptor(id) {
let taht = this
console.log(`%c 检测到参数拦截器启动`, 'color:red;font-size:50px');
// console.log(`%c 检测到参数拦截器启动`, 'color:red;font-size:50px');
// this.tools.overallInterceptor((opentype) => {
// uni.removeInterceptor(opentype);
// wxCode.getQrCodeType({
@@ -181,7 +181,7 @@
})
},
getFilterData() {
console.log('wodefenzhi')
// console.log('wodefenzhi')
oilSiteApi.getCheckInfo().then(res => {
if (res.code == 20000) {
@@ -206,13 +206,13 @@
value: item.id
})
})
console.log(channelCodes, productCodes, siteBrands)
// console.log(channelCodes, productCodes, siteBrands)
this.menuList[0].detailList = this.menuList[0].detailList.concat(channelCodes)
this.menuList[1].detailList = this.menuList[1].detailList.concat(productCodes)
this.menuList[2].detailList = this.menuList[2].detailList.concat(siteBrands)
uni.setStorageSync('filterData', this.menuList)
uni.setStorageSync('productCodeList', res.data.productCodeList)
console.log(res, '%c 这里是启动页调用的菜单列表', 'font-size:36px;color:red;')
// console.log(res, '%c 这里是启动页调用的菜单列表', 'font-size:36px;color:red;')
// this.$refs.slFilter.resetMenuList(this.menuList)
}
})

View File

@@ -0,0 +1,167 @@
<template>
<view class="container">
<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="banner">
<view>{{balance}}</view>
<view>当前积分</view>
</view>
<!-- <view class="list"> -->
<scroll-view class="list" :scroll-y="true" @scrolltolower="lower">
<view class="item" v-for="item,index in recodeList" :key="index">
<view>{{typeEnum[item.type]}}</view>
<view>{{item.createTime}}</view>
<view>{{(item.type == 1 ||item.type == 3) ? '+' : '-'}}{{item.occurAmount}}</view>
</view>
</scroll-view>
<view class="occupy"></view>
</view>
</template>
<script>
import serve from '@/api/integral.js'
export default {
data() {
return {
parameter: {
currentPage: 1,
pageSize: 20,
params: {
customerId: uni.getStorageSync('user').id
},
},
balance: 0,
recodeList: [],
typeEnum: {
1: '加油收入',
2: '加油退款',
3: '商品兑换',
4: '商品兑换退款'
},
}
},
created() {
this.getByCustomerId()
this.getByPage()
},
methods: {
getByPage() {
serve.getByPage(this.parameter).then(res => {
if (res.code === 20000) {
if (!res.data.list.length) {
uni.showToast({
title: '没有更多数据了~',
icon: 'none'
})
return
}
this.recodeList = this.recodeList.concat(res.data.list)
}
})
},
getByCustomerId() {
serve.getByCustomerId(this.parameter.params.customerId).then(res => {
if (res.code === 20000) {
this.balance = res.data.balance
}
})
},
lower() {
this.parameter.currentPage += 1
this.getByPage()
console.log('到底了')
}
}
}
</script>
<style lang="scss" scoped>
.container {
background: #F2F2F2;
height: 100vh;
display: flex;
flex-direction: column;
.banner {
margin: 37rpx auto 0;
padding-top: 105rpx;
width: 684rpx;
height: 337rpx;
background: url('https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/integral-background.png') 100%/100% no-repeat;
border-radius: 10rpx;
>view {
text-align: center;
color: #fff;
&:nth-of-type(1) {
font-size: 64rpx;
}
&:nth-of-type(2) {
margin-top: 10rpx;
font-size: 26rpx
}
}
}
.list {
flex: 1;
overflow-y: hidden;
margin: 37rpx auto 0;
padding-bottom: 10rpx;
width: 684rpx;
background: #FFF;
border-radius: 10rpx;
.item {
position: relative;
padding: 25rpx 30rpx 0 30rpx;
width: 100%;
height: 125rpx;
>view {
&:nth-of-type(1) {
font-size: 28rpx;
color: #333;
}
&:nth-of-type(2) {
margin-top: 15rpx;
font-size: 22rpx;
color: #999;
}
&:nth-of-type(3) {
position: absolute;
top: 50%;
transform: translateY(-50%);
right: 30rpx;
font-size: 28rpx;
color: #666;
}
}
&::after {
content: '';
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 0;
width: 632rpx;
height: 1rpx;
background: #f6f6f6;
}
}
}
.occupy {
height: 50rpx;
}
}
</style>

View File

@@ -109,24 +109,35 @@
<view class="cu-list menu">
<view class="cu-item hidden-cu-item">
</view>
<view class="cu-item arrow">
<view class="cu-item arrow" @click="goIntegral">
<view class="content">
<image :src="starUrl+'zskf.png'" class="png" mode="aspectFit"></image>
<!-- <image :src="imgURL+'yunsite-kefu.png'" class="png" mode="aspectFit"></image> -->
<text class="text-grey padding-left-sm">我的积分</text>
</view>
<view class="action">
<!-- <button class="cu-btn oil-main-btn-color" open-type="contact" @contact="onContact"> -->
<!-- <text class="text-grey text-sm">打开会话</text> -->
<!-- </button> -->
<view>{{balance}}</view>
</view>
</view>
<view class="cu-item arrow" @click="makeCall">
<view class="content">
<!-- <image :src="imgURL+'yunsite-kefu.png'" class="png" mode="aspectFit"></image> -->
<text class="text-grey padding-left-sm">专属客服</text>
</view>
<view class="action">
<!-- <button class="cu-btn oil-main-btn-color" open-type="contact" @contact="onContact"> -->
<!-- <text class="text-grey text-sm">打开会话</text> -->
<!-- </button> -->
<view class="cu-btn oil-main-btn-color" @click="makeCall">
<!-- <view class="cu-btn oil-main-btn-color" @click="makeCall">
<text class="text-grey text-sm">联系客服</text>
</view>
</view> -->
</view>
</view>
<view class="cu-item arrow">
<view class="content">
<image :src="starUrl+'gywm.png'" class="png" mode="aspectFit"></image>
<!-- <image :src="imgURL+'yunsite-about.png'" class="png" mode="aspectFit"></image> -->
<text class="text-grey padding-left-sm">关于我们</text>
</view>
</view>
@@ -143,6 +154,7 @@
import oilSiteApi from '@/api/oil-site.js'
import SwitchEnterprises from '@/components/SwitchEnterprises.vue'
import accountApi from '@/api/account.js'
import integralServe from '@/api/integral.js'
export default {
components: {
SwitchEnterprises
@@ -163,7 +175,8 @@
isCompany: uni.getStorageSync('accountStatus'),
user: uni.getStorageSync('user'),
wxInfo: uni.getStorageSync('wxInfo'),
userTotal: {}
userTotal: {},
balance: ''
};
},
onShow() {
@@ -171,8 +184,21 @@
this.getAuthInfo()
this.getAmount();
this.upadteCompanyCard()
this.getByCustomerId()
},
methods: {
goIntegral() {
uni.navigateTo({
url: './integralRecord'
})
},
getByCustomerId() {
integralServe.getByCustomerId(this.user.id).then(res => {
if (res.code === 20000) {
this.balance = res.data.balance
}
})
},
logout() {
this.isSwitchEnterprises = false
},

View File

@@ -5,10 +5,10 @@ import utils from '@/utils/encode'
// const env = 'test'
const env = 'production'
// 45
const testUrl = 'http://192.168.1.83:38080'
// const productUrl = 'https://www.xingoil.com/adminapi'
const testUrl = 'http://192.168.1.132:38080'
const productUrl = 'https://www.xingoil.com/adminapi'
const productUrl = 'http://uat.xingoil.com/adminapi'
// const productUrl = 'http://uat.xingoil.com/adminapi'
// const productUrl = 'http://192.168.0.191:38080'
// const productUrl = 'http://121.196.213.68/adminapi'
const service = axios.create({