Files
MP_XOIL_company_new/pages/tabbar/station/stationList.vue
2022-08-08 09:17:43 +08:00

710 lines
19 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="my-bg">
<cu-custom class="main-totextbar bg-main-oil" bgColor="bg-main-oil">
<block slot="content">附近油站</block>
</cu-custom>
<view class="">
<view class="headList">
<view class="headList_head" v-for="(list,i) in tabHeadS" :class="[TabHead == i? 'ativeHead':'']" :key='i' @tap='changeHaed(list.value)'>
{{list.title}}
</view>
</view>
<!-- fixed-top-site -->
<view class="">
<view class="cu-bar search bg-white">
<view class="search-form round">
<text class="cuIcon-search"></text>
<input @focus="InputFocus" confirm-type="search" @confirm="onSearch"
@blur="InputBlur" v-model="siteName" :adjust-position="false" type="text" placeholder="请输入搜索站点名称" />
</view>
<view class="action" @tap="toMap">
<image class="icon shadow-blur round icon-gasstation"
src="https://www.51xingka.net/LSMOIL/static/img/gas-station.png" mode=""></image>
</view>
</view>
</view>
<!-- 筛选开始 -->
<scroll-view class="screentop bg-white">
<view @click="reunrnFn" class="">
<sl-filter reflexTitle ref="slFilter" :productCodeList="productCodeList" :areaCodeList="areaCodeList" @result="filterRes" :menuList="menuList" v-if="TabHead == 0"></sl-filter>
<sl-filter reflexTitle ref="slFilter" @result="filterRes" :menuList="ureaMenuList" v-if="TabHead == 1 && changeHs == true"></sl-filter>
<sl-filter reflexTitle ref="slFilter" @result="filterRes" :menuList="productTypes" v-if="changeHs == false && TabHead == 1 "></sl-filter>
</view>
<view class="bg-white min-height-50 padding-top" v-if="siteList.length>0">
<site-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)" v-if="TabHead == 0">
</site-item>
<ureaItem v-for="(list,index) in siteList" :key="list.id" :site-item="list" :first="index==0"
class="cu-list menu-avatar cu-item" @tap="ureaToDetail(list)" v-if="TabHead == 1">
</ureaItem>
<view class="placeholder-hidden"></view>
</view>
<view style="min-height: 100vh;" class="" v-else>
<my-empty></my-empty>
</view>
</scroll-view>
</view>
<view class="bg-white">
<uni-load-more :status="loadText"></uni-load-more>
</view>
</view>
</template>
<script>
import StationItem from '@/components/site-item/site-item.vue'
import ureaItem from '@/components/site-item/urea-site-item.vue'
import oilSiteApi from '@/api/oil-site.js'
import slFilter from '@/components/sl-filter/sl-filter.vue'
import oilMongoApi from '../../../api/oil-mongo.js'
import ureaSiteApi from '../../../api/urea_site.js'
export default {
components: {
StationItem,
slFilter,
ureaItem
},
data() {
return {
areaCodeList:[],
loadText:'more',
changeHs:true,
TabHead:0,
tabHeadS:[
{
title:'加油站',
value:0,
},{
title:'尿素站',
value:1,
}
],
productCodeList:null,
filterDatas: {
oilProductCode: '0#'
},
ureaFilterDatas:[],
loadStatus: 'load',
siteName: '',
menuList: [{
title: '距离',
isMutiple: false,
key: 'distance',
detailList: [{
title: "默认",
value: 20
},
{
title: "20Km",
value: 20
},
{
title: "30Km",
value: 30
},
{
title: "50Km",
value: 50
}
]
},{
title: '渠道',
isMutiple: false,
key: 'channelCode',
detailList: [{
title: "全部",
value: ""
}]
},
{
title: '0#轻柴油',
key: 'oilProductCode',
isMutiple: false,
detailList: [{
title: "全部",
value: ""
}]
},
{
title: '品牌',
key: 'siteBrand',
isSort: true,
isMutiple: false,
detailList: [{
title: "全部",
value: ""
}]
}
],
ureaMenuList:[
{
title: '加注方式',
isMutiple: false,
key: 'formats',
detailList: [{
title: "全部",
value: ""
},{
title: "加注机",
value: "1"
},{
title: "桶装",
value: "2"
},
]
},
{
title: '桶装品牌',
key: 'productType',
isMutiple: false,
detailList: [{
title: "全部",
value: ""
}]
},],
productTypes:[
{
title: '加注方式',
isMutiple: false,
key: 'formats',
detailList: [
{
title: "全部",
value: ""
},{
title: "加注机",
value: "1"
},{
title: "桶装",
value: "2"
},
]
}] ,
siteList: [],
InputBottom: 0,
show: false,
currentPage: 1,
brandName:'',
productType:'',
isLoadMore: false, //是否加载中
}
},
watch: {
loadStatus: {
deep: true,
immediate: true,
handler: function(val, oldVal) {
if (val.status == 'load') {
setTimeout(() => {
this.getSiteList()
}, 100)
} else {
uni.showToast({
title: '到底啦',
icon: 'none'
})
}
}
},
},
onTabItemTap(res) {
this.showThreeSites = false
},
onShow() {
this.refreshLocation()
let storykey = uni.getStorageInfoSync()
// console.log('%c look here↓','color:green;font-size:50px')
// console.log(storykey)
},
onLoad() {
if (!uni.getStorageSync('filterDatas')) {
this.getFilterData()
console.log('dhgiuhihqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq')
} else{
console.log('dhgiuhihiiiiiiiiiiiiiiiiiiiiiiiiiiiii')
}
this.findPriceDetails()
if (uni.getStorageSync('productCodeList')) {
this.productCodeList = uni.getStorageSync('productCodeList')
}
this.getSiteList()
},
onPullDownRefresh() {
this.filterRes(this.filterDatas)
setTimeout(function() {
uni.stopPullDownRefresh()
}, 600);
},
onReachBottom() {
if (this.loadStatus == 'load') {
setTimeout(() => {
if(this.TabHead == 0){
this.getSiteList()
}else if(this.TabHead == 1){
this.getUreaList()
}
}, 100)
} else {
uni.showToast({
title: '到底啦',
icon: 'none'
})
}
},
methods: {
reunrnFn(){
},
getUreaList(){
let location = uni.getStorageSync('location')
let data1 = {
currentPage: this.currentPage,
pageSize: 10,
params: { //类型Object 必有字段 备注:// 筛选对象
siteNameOrId:this.siteName,//产品类型(加注方式)
productType: this.productType? this.productType:'',//1-加注机; 2-桶装
brandName: this.brandName ? this.brandName:'', // 桶装品牌名称
currentLongitude:location.longitude+'',// 当前经度
currentLatitude:location.latitude+'', // 当前纬度
}
}
ureaSiteApi.getByPageMobile(data1).then(res=>{
if (res.code == 20000) {
let objs = []
res.data.list.forEach( ele =>{
let tag
if(ele.productType == 1){
tag = '加注机'
} else if(ele.productType == 2){
tag = '桶装'
}
let obj = {
address: ele.address,
id: ele.id,
juli: ele.totalDistance,
latitude: parseInt(ele.lat),
listTag:tag,
longitude:parseInt(ele.lng),
siteCustomerMark: null,
siteId: ele.siteId,
siteName:ele.siteName,
sitePrice: ele.price,
formats: ele.formats,
price: ele.price
}
objs.push(obj)
})
this.siteList = this.siteList.concat(objs)
if (res.data.list.length < 10) { //判断接口返回数据量小于请求数据量,则表示此为最后一页
this.loadStatus = 'nomore'
} else {
this.currentPage++
this.loadStatus = 'load'
}
}
})
},
changeHaed(code){
this.TabHead = code
this.siteList = []
this.siteName = ''
this.currentPage = 1
if(code == 1){
this.getUreaList()
}else if(code == 0){
this.getSiteList()
}
},
ureaToDetail(list){
let itemS = JSON.stringify(list)
if (uni.getStorageSync('user')) {
uni.navigateTo({
url: `/BagStation/pages/ureaDetail/ureaDetail?item=${itemS}`,
fail: (err) => {
// console.log(err)
},
success: () => {
// console.log('err')
}
})
} else {
uni.showModal({
title:'请您登录',
content:"登录小星加油才可以加油 |˛˙꒳​˙)♡",
confirmText:'去登陆',
success: (res) => {
if(res.confirm){
uni.reLaunch({
url:'../../../BagAuth/pages/login/login'
})
}
}
})
}
},
filterRes(val) {
console.log(val)
if(this.TabHead ==0){
this.filterDatas = val
this.currentPage = 1
this.siteList = []
this.getSiteList()
}else{
if( val.formats == 2){
this.changeHs = true
}else{
this.changeHs = false
}
this.filterDatas = val
this.productType = val.formats
this.brandName = val.productType
this.currentPage = 1
this.siteList = []
this.getUreaList()
}
},
getFilterData() {
oilSiteApi.getCheckInfo().then(res => {
if (res.code == 20000) {
uni.setStorageSync('productCodeList', res.data.productCodeList)
uni.setStorageSync('areaCodeList', res.data.areaCodeList)
this.areaCodeList = uni.getStorageSync('areaCodeList')
if(uni.getStorageSync('areaCodeList')){
this.areaCodeList = uni.getStorageSync('areaCodeList')
}else{
this.areaCodeList = res.data.areaCodeList
}
this.productCodeList = uni.getStorageSync('productCodeList')
// console.log(this.productCodeList,'新的列表格式')
res.data.channelCodes.map(item => {
this.menuList[1].detailList.push({
title: item.name,
value: item.id
})
})
res.data.productCodes.map(item => {
this.menuList[2].detailList.push({
title: item.name,
value: item.id
})
})
res.data.siteBrands.map(item => {
this.menuList[3].detailList.push({
title: item.name,
value: item.id
})
})
let data = [
{
title: '全部',
value: ''
},
{
title: '一级油站',
value: 'A'
},{
title: '二级油站',
value: 'B'
},{
title: '三级油站',
value: 'C'
},{
title: '四级油站',
value: 'D'
},{
title: '一级油站',
value: 'E'
},
]
this.oliMenuList[3].detailList = data
// // console.log(channelCodes, productCodes, siteBrands)
// this.$refs.slFilter.resetMenuList(this.menuList)
}
console.log(this.menuList,'----')
})
},
onSelected(e) {
// console.log(e)
},
findPriceDetails(){
ureaSiteApi.findPriceDetails().then(res=>{
// console.log(res)
res.data.forEach(item=>{
let obj={
title:item,
value:item
}
// console.log(obj)
this.ureaMenuList[1].detailList.push(obj)
// this.productTypes[0].detailList.push(obj)
})
console.log(this.ureaMenuList)
console.log(this.productTypes)
})
},
refreshLocation() {
uni.getLocation({
type: 'wgs84',
success: function(res) {
uni.setStorageSync('location', res)
},
complete(res) {
console.log('定位', res)
var msgTip = ''
if (res.errMsg == 'getLocation:fail auth deny') {
msgTip = '请允许小程序获取您的位置'
} else if (res.errMsg == 'getLocation:fail:ERROR_NOCELL&WIFI_LOCATIONSWITCHOFF') {
msgTip = '请您打开手机定位'
}
if (msgTip) {
setTimeout(() => {
uni.showToast({
title: msgTip,
icon: 'none'
})
}, 300)
}
}
})
},
getSiteList() {
this.refreshLocation()
let location = uni.getStorageSync('location')
console.log(this.filterDatas)
let data1 = {
currentPage: this.currentPage,
pageSize: 10,
params: { //类型Object 必有字段 备注:// 筛选对象
sort: "juli", //类型String 必有字段 备注:// 智能排序 ( price价格最低 juli距离最近 ) 默认距离排序
siteName: this.siteName,
...uni.getStorageSync('location'),
// ...this.filterData
siteBrand: this.siteName ? '' : this.filterDatas
.siteBrand, // 备注:// 石油品牌 ( 1-中国石油 2-中国石化 3-壳牌 4-民营 5-中海油 6-京博 7-中化石油 8-其他 )
channelCode: this.siteName ? '' : this.filterDatas
.channelCode, // 备注:// 渠道编码 ( OIL星油 WJY万金油 LV老吕找油网 TY团油 YDJY一点加油壳牌)
oilProductCode: this.siteName ? '' : this.filterDatas
.oilProductCode ,// 备注:// 油号选择 ( 0# 92# 92#)
siteLevel: this.siteName ? '' : this.filterDatas
.siteLevel ,
provinceCode:this.filterDatas.provinceCode,
cityCode:this.filterDatas.cityCode,
areaCode:this.filterDatas.areaCode,
distance:this.filterDatas.distance
}
}
if (!uni.getStorageSync('Authorization')) {
data1.params.role = 1
oilSiteApi.readOnlySites(data1).then(res => {
if (res.code == 20000) {
console.log(res,'+++')
this.siteList = this.siteList.concat(res.data.list)
if (res.data.list.length < 10) { //判断接口返回数据量小于请求数据量,则表示此为最后一页
this.loadStatus = 'nomore'
} else {
this.currentPage++
this.loadStatus = 'load'
}
}
})
} else {
oilSiteApi.getSiteList(data1).then(res => {
if (res.code == 20000) {
console.log(res,'+++')
this.siteList = this.siteList.concat(res.data.list)
if (res.data.list.length < 10) { //判断接口返回数据量小于请求数据量,则表示此为最后一页
this.loadStatus = 'nomore'
} else {
this.currentPage++
this.loadStatus = 'load'
}
}
})
}
},
// getSiteList() {
// this.refreshLocation()
// let data1 = {
// currentPage: this.currentPage,
// pageSize: 10,
// params: { //类型Object 必有字段 备注:// 筛选对象
// sort: "juli", //类型String 必有字段 备注:// 智能排序 ( price价格最低 juli距离最近 ) 默认距离排序
// siteName: this.siteName,
// longitude: 116.397451, // 必有字段 备注:// 当前位置经度
// latitude: 39.909187, // 必有字段 备注:// 当前位置维度
// ...uni.getStorageSync('location'),
// // ...this.filterData
// siteBrand: this.siteName ? '' : this.filterData
// .siteBrand, // 备注:// 石油品牌 ( 1-中国石油 2-中国石化 3-壳牌 4-民营 5-中海油 6-京博 7-中化石油 8-其他 )
// channelCode: this.siteName ? '' : this.filterData
// .channelCode, // 备注:// 渠道编码 ( OIL星油 WJY万金油 LV老吕找油网 TY团油 YDJY一点加油壳牌)
// oilProductCode: this.siteName ? '' : this.filterData
// .oilProductCode // 备注:// 油号选择 ( 0# 92# 92#)
// }
// }
// if (!uni.getStorageSync('Authorization')) {
// oilSiteApi.readOnlySites(data1).then(res => {
// if (res.code == 20000) {
// this.siteList = this.siteList.concat(res.data.list)
// if (res.data.list.length < 10) { //判断接口返回数据量小于请求数据量,则表示此为最后一页
// this.loadStatus = 'nomore'
// } else {
// this.currentPage++
// this.loadStatus = 'load'
// }
// }
// })
// } else {
// oilSiteApi.getSiteList(data1).then(res => {
// if (res.code == 20000) {
// this.siteList = this.siteList.concat(res.data.list)
// if (res.data.list.length < 10) { //判断接口返回数据量小于请求数据量,则表示此为最后一页
// this.loadStatus = 'nomore'
// } else {
// this.currentPage++
// this.loadStatus = 'load'
// }
// }
// })
// }
// },
toDetail(item) {
console.log(item)
console.log('这里是进入前')
let itemS = JSON.stringify(item)
if (uni.getStorageSync('user')) {
if(item.channelCode==='TY'){
uni.setStorageSync('OtherSiteInfo',item)
uni.navigateTo({
url: `/BagStation/pages/stationDetail/stationDetail?channerCode=${item.channelCode}`,
fail: (err) => {
// console.log(err)
},
success: () => {
// console.log('err')
}
})
return
}
uni.navigateTo({
url: `/BagStation/pages/stationDetail/stationDetail?item=${itemS}`,
fail: (err) => {
// console.log(err)
},
success: () => {
// console.log('err')
}
})
} else {
uni.showModal({
title: '请您登录',
content: "登录星油加油才可以加油 |˛˙꒳​˙)♡",
confirmText: '去登陆',
success: (res) => {
if (res.confirm) {
uni.reLaunch({
url: '../../../BagAuth/pages/login/login'
})
}
}
})
}
},
nameSelect(value, item) {
this.title2 = item.text
// console.log(item)
},
typeSelect(value, item) {
// console.log(item)
this.title1 = item.text
},
optionSelect(value, item) {
// console.log(item)
this.title3 = item.text
},
toMap() {
uni.navigateTo({
url: '/BagStation/pages/stationMap/stationMap',
})
},
InputFocus(e) {
this.InputBottom = e.detail.height
// console.log(e.detail)
// console.log(this.InputBottom)
},
InputBlur(e) {
this.InputBottom = 0
// console.log(this.InputBottom)
// console.log(e.detail)
},
onInput() {
setTimeout(() => {
this.currentPage = 1
this.siteList = []
this.getSiteList()
}, 100)
},
onSearch() {
this.currentPage = 1
this.siteList = []
if(this.TabHead == 0){
this.getSiteList()
}else if (this.TabHead == 1){
this.getUreaList()
}
}
}
}
</script>
<style scoped>
.headList_head{
padding: 2% 0;
width: 16%;
text-align: center;
font-size: 36rpx;
font-weight: 700;
border-bottom: 2px solid #fff;
margin: 0% 3%;
}
.headList{
display: flex;
justify-content: space-around;
align-items: center;
background-color: #fff;
padding: 1% 3%;
}
.ativeHead{
color: red;
border-bottom: 2px solid red;
}
.icon-gasstation {
width: 1.2rem;
height: 1.2rem;
}
.placeholder-hidden {
/* min-height: 95upx; */
}
.fixed-top-site {
/* top: 120rpx; */
z-index: 4;
position: fixed;
width: 750upx;
}
.min-height-50 {
min-height: 50vh;
}
</style>