Commit 85d9f140 by zhangzhen

完善用户信息部分内容

parent 99cd18b1
......@@ -24,6 +24,12 @@ export const getUserInfo=()=>{
return http.get(url)
}
export const getUserWallet=()=>{
let url=`/wallet/query`
return http.get(url)
}
// 修改用户信息
export const updateUserInfo=(data)=>{
let url=`/consumer/edit`
......
import http from "@/common/vmeitime-http/index.js"
// 查询充值记录列表
export const recordsList=(data)=>{
let url=`/recharge/list`
return http.get(url,data)
}
import http from "@/common/vmeitime-http/index.js"
// 查询充值记录列表
export const recordsList=(data)=>{
let url=`/recharge/list`
return http.get(url,data)
}
......@@ -134,6 +134,9 @@
},
methods: {
onTabbar(index) {
if(uni.getStorageSync("statusIndex")){
uni.removeStorageSync('statusIndex')
}
if (this.path !== this.list[index].url) {
uni.switchTab({
url: '/' + this.list[index].url
......
......@@ -2,8 +2,8 @@ const CONFIG = {
// 开发环境配置
development: {
// assetsPath: 'https://www.coujio.com/wechat_static', // 静态资源路径
assetsPath: 'https://coujiao.pseer.com/wechat_static', // 静态资源路径
// assetsPath: 'http://10.24.5.167:8211/static', // 静态资源路径
// assetsPath: 'https://coujiao.pseer.com/wechat_static', // 静态资源路径
assetsPath: 'http://10.24.5.167:8211/static', // 静态资源路径
// baseUrl: 'https://www.coujio.com/front-api', // 后台接口请求地址
baseUrl: 'https://coujiao.pseer.com/front-api', // 后台接口请求地址
// baseUrl: 'http://10.24.3.185:8883/front-api',
......
......@@ -73,6 +73,9 @@
"requiredPrivateInfos" : [ "getLocation" ],
"uniStatistics" : {
"enable" : false
},
"secureNetwork" : {
"enable" : false
}
},
"mp-alipay" : {
......
......@@ -51,13 +51,6 @@
}
},
{
"path": "pages/webUrl/index",
"style": {
"navigationBarTitleText": "详情",
"navigationStyle": "default"
}
},
{
"path": "pages/article/article",
"style": {
"navigationBarTitleText": "详情",
......@@ -145,13 +138,6 @@
}
},
{
"path": "pages/payRecord/index",
"style": {
"navigationBarTitleText": "消费记录",
"enablePullDownRefresh" : false
}
},
{
"path": "pages/deviceManage/index",
"style": {
"navigationBarTitleText": "设备控制"
......@@ -169,6 +155,27 @@
"navigationBarTitleText": "我的车辆",
"navigationStyle": "default"
}
},
{
"path": "webUrl/index",
"style": {
"navigationBarTitleText": "详情",
"navigationStyle": "default"
}
},
{
"path": "payRecord/index",
"style": {
"navigationBarTitleText": "消费记录",
"enablePullDownRefresh" : false
}
},
{
"path": "recharge/index",
"style": {
"navigationBarTitleText": "充值记录",
"enablePullDownRefresh" : false
}
}
]
}
......
......@@ -3,15 +3,16 @@
<view class="header" :style="{height: statusBarHeight+180+'px',paddingTop: statusBarHeight+'px'}">
<view class="header-content-box">
<view class="login-content">
<view v-if="loginStatus" class="flex-1 flex-row" @tap="onNavToSetUserInfo">
<view class="cu-avatar xl margin-left" >
<view class="flex-1 flex-row" @tap="onNavToSetUserInfo">
<view class="cu-avatar xl margin-left">
<image class="avatar-bg" :src="assetsPath+'/avatar_bg.png'" mode="scaleToFill"></image>
<view class="avatar-box">
<image class="avatar-img" :src="userInfo.avatar|| assetsPath+'/logo_icon.png'" mode="scaleToFill" @tap.stop="onProview"></image>
<image class="avatar-img" :src="userInfo.avatar|| assetsPath+'/logo_icon.png'"
mode="scaleToFill" @tap.stop="onProview"></image>
</view>
</view>
<view class="flex-col margin-left">
<text class="text-title text-lg text-bold text-xxl">{{userInfo.nickName||"凑角_"+userName}}</text>
<text class="text-title text-lg text-bold text-xxl">{{userInfo.nickName||"凑角用户"}}</text>
<!-- <view class="flex-row" style="margin-top: 10rpx;">
<text class="cuIcon-hotfill text-white"></text>
<text class="text-white text-lg">会员用户</text>
......@@ -22,93 +23,180 @@
<text class="text-gray">修改资料</text>
</view>
</view>
<view v-else class="none-login margin-left" @tap="onNavToLogin">
<view class="cu-avatar xl round">
<image class="avatar-img" :src=" assetsPath+'/avatar_no.png'" mode="scaleToFill"></image>
</view>
<text class="text-gray margin-left" >授权登录</text>
</view>
<view class="flex-between amount-coupon" :style="{background:'url('+assetsPath+'/my_coupon_bg.png) 0 0 / 100% 100% no-repeat'}">
<view class="part-left">
<text v-if="loginStatus" class="text-title text-xl">会员用户专享</text>
<text v-else class="text-title text-xl">点击上方授权登录,才能享受优惠哦!</text>
</view>
<view v-if="loginStatus" class="flex-row" @tap="onNavToMyCoupon">
<text class="text-name text-xl">优惠券</text>
<text class="text-white text-xl text-bold">{{userInfo.number|| 0}}</text>
<view class="flex-col content-box">
<!-- 我的钱包 -->
<view class="list-content-box">
<view class="header-title">
<text class="text-title text-bold">我的钱包</text>
<view class=""></view>
</view>
<view class="flex-row-center">
<view class="item-box">
<view class="icon-img">
<image :src="assetsPath+'/user/wallet_icon_1.png'" mode="scaleToFill"></image>
</view>
<view class="text-box">
<text class="text-gray">余额</text>
</view>
<view class="value-box">
<text class="text-black text-lg text-bold">{{userWalletInfo.balance || 0}}</text>
</view>
</view>
<view class="flex-col content-box">
<view class="user-action">
<view v-for="(item,k) in userAction" :key="k" v-if="item.show" class="action-box" >
<view :style="{background:item.color}" class="action-item" @tap="onActionNav(item,k)">
<view class="flex-1">
<text class="text-title text-lg">{{item.label}}</text>
<view class="item-box">
<view class="icon-img">
<image :src="assetsPath+'/user/wallet_icon_2.png'" mode="scaleToFill"></image>
</view>
<view class="img-box">
<image :src="item.iconUrl" mode="widthFix"></image>
<view class="text-box">
<text class="text-gray">积分</text>
</view>
<view class="value-box">
<text class="text-black text-lg text-bold">{{userWalletInfo.remainingIntegral || 0}}</text>
</view>
</view>
<view class="item-box">
<view class="icon-img">
<image :src="assetsPath+'/user/wallet_icon_3.png'" mode="scaleToFill"></image>
</view>
<view class="text-box">
<text class="text-gray">时长</text>
</view>
<view class="value-box">
<text class="text-black text-lg text-bold">{{userWalletInfo.remainingDuration || 0}}</text>
</view>
</view>
<view class="item-box" @tap="onNavByPath('couponList')">
<view class="icon-img">
<image :src="assetsPath+'/user/wallet_icon_4.png'" mode="scaleToFill"></image>
</view>
<view class="text-box">
<text class="text-gray">优惠券</text>
</view>
<view class="value-box">
<text class="text-black text-lg text-bold">{{userInfo.number|| 0}}</text>
</view>
</view>
</view>
</view>
<view class="main">
<view class="cu-list menu sm-border">
<view class="cu-item arrow" @tap="onHandle(6)">
<view class="content" style="position: relative;">
<image :src="assetsPath+'/my_list_3.png'" class="png" mode="aspectFit"></image>
<text class="text-title">我的车辆</text>
<view class="numberplate">
<text>{{userInfo.numberplate || ''}}</text>
<!-- 我的订单 -->
<view class="list-content-box">
<view class="header-title">
<text class="text-title text-bold">我的订单</text>
<view class="" @tap="onNavToOrderRecord(0)">
<text class="text-gray">全部订单</text>
<text class="cuIcon-right text-gray"></text>
</view>
</view>
<view class="flex-row-center">
<view v-for="(item,k) in orderTypeList" :key="k" class="item-box" @tap="onNavToOrderRecord(item)">
<view class="icon-img">
<image :src="item.iconPath" mode="scaleToFill"></image>
<view v-if="item.point" class="point-box">
<text>{{item.point}}</text>
</view>
</view>
<view class="text-box">
<text class="text-gray">{{item.label}}</text>
</view>
</view>
</view>
</view>
<view class="cu-item arrow" @tap="onHandle(1)">
<view class="content">
<image :src="assetsPath+'/my_list_1.png'" class="png" mode="aspectFit"></image>
<text class="text-title">客服咨询</text>
<!-- 常用工具 -->
<view class="list-content-box">
<view class="header-title">
<text class="text-title text-bold">常用工具</text>
<view class=""></view>
</view>
<view class="flex-row-center tool-list">
<view class="item-box" @tap="onNavByPath('recharge')">
<view class="icon-img">
<image :src="assetsPath+'/user/tool_4.png'" mode="scaleToFill"></image>
</view>
<view class="cu-item arrow" @tap="onHandle(2)">
<view class="content">
<image :src="assetsPath+'/my_list_2.png'" class="png" mode="aspectFit"></image>
<text class="text-title">WIFI连接</text>
<view class="text-box">
<text class="text-gray">充值记录</text>
</view>
</view>
<view class="cu-item arrow" @tap="onHandle(3)">
<view class="content">
<image :src="assetsPath+'/my_list_3.png'" class="png" mode="aspectFit"></image>
<text class="text-title">全国门店</text>
<view class="item-box" @tap="onNavByPath('payRecord')">
<view class="icon-img">
<image :src="assetsPath+'/user/tool_5.png'" mode="scaleToFill"></image>
</view>
<view class="text-box">
<text class="text-gray">消费记录</text>
</view>
<view class="cu-item arrow" @tap="onHandle(4)">
<view class="content">
<image :src="assetsPath+'/my_list_4.png'" class="png" mode="aspectFit"></image>
<text class="text-title">联系我们</text>
</view>
<view class="item-box" @tap="onNavByPath('licensePlateNumber')">
<view class="icon-img">
<image :src="assetsPath+'/user/tool_1.png'" mode="scaleToFill"></image>
</view>
<view v-if="userInfo.isAdmin" class="cu-item arrow" @tap="onHandle(5)">
<view class="content">
<image :src="assetsPath+'/my_list_4.png'" class="png" mode="aspectFit"></image>
<text class="text-title">设备控制</text>
<view class="text-box">
<text class="text-gray">我的车辆</text>
</view>
</view>
<view class="item-box" @tap="onHandle(1)">
<view class="icon-img">
<image :src="assetsPath+'/user/tool_2.png'" mode="scaleToFill"></image>
</view>
<view class="text-box">
<text class="text-gray">客服咨询</text>
</view>
</view>
<!-- <view class="login-out" v-if="loginStatus">
<button class="cu-btn block bg-pink lg round" @tap="onLoginOut">
<text class="cuIcon-exit"></text>退出登录
</button>
</view> -->
<LoginPop ref="loginPop" @success="onCheckUserLogin" />
<view class="item-box" @tap="onHandle(2)">
<view class="icon-img">
<image :src="assetsPath+'/user/tool_3.png'" mode="scaleToFill"></image>
</view>
<view class="text-box">
<text class="text-gray">WIFI连接</text>
</view>
</view>
<view class="item-box" @tap="onNavByPath('storeList')">
<view class="icon-img">
<image :src="assetsPath+'/user/tool_6.png'" mode="scaleToFill"></image>
</view>
<view class="text-box">
<text class="text-gray">全国门店</text>
</view>
</view>
<view class="item-box" @tap="onNavByPath('useCouponIllustrate')">
<view class="icon-img">
<image :src="assetsPath+'/user/tool_7.png'" mode="scaleToFill"></image>
</view>
<view class="text-box">
<text class="text-gray">联系我们</text>
</view>
</view>
<view class="item-box" @tap="onNavByPath('cleanManage')">
<view class="icon-img">
<image :src="assetsPath+'/user/tool_3.png'" mode="scaleToFill"></image>
</view>
<view class="text-box">
<text class="text-gray">保洁管理</text>
</view>
</view>
<view class="item-box" @tap="onNavByPath('cleanRecord')">
<view class="icon-img">
<image :src="assetsPath+'/user/tool_3.png'" mode="scaleToFill"></image>
</view>
<view class="text-box">
<text class="text-gray">保洁记录</text>
</view>
</view>
<view class="item-box" @tap="onNavByPath('deviceManage')">
<view class="icon-img">
<image :src="assetsPath+'/user/tool_3.png'" mode="scaleToFill"></image>
</view>
<view class="text-box">
<text class="text-gray">设备控制</text>
</view>
</view>
</view>
</view>
</view>
<f-tabbar></f-tabbar>
<uni-popup ref="popup" type="bottom" maskClick="false">
......@@ -138,83 +226,94 @@
<script>
import fTabbar from '@/components/module/f-tabbar/f-tabbar';
import {getUserInfo,loginOut,systemConfig} from "@/api/index.js"
import {
getUserInfo,
getUserWallet,
loginOut,
systemConfig
} from "@/api/index.js"
import config from "@/config/index.config"
import LoginPop from "@/components/login/login"
import {deviceCtrlAuth} from '@/api/store.js'
import {
deviceCtrlAuth
} from '@/api/store.js'
import {
orderList
} from "@/api/order.js"
export default {
components: {
fTabbar,
LoginPop
fTabbar
},
data() {
return {
loginStatus: true,
statusBarHeight: this.statusBarHeight,
assetsPath:config.assetsPath,
assetsPath: config.assetsPath,
hostUrl: config.hostUrl,
userInfo:{},
userAction:[],
wifiData:{
name:"",
password:''
userInfo: {},
userWalletInfo:'',
userAction: [],
wifiData: {
name: "",
password: ''
},
servicePhone:'',
userName:'',
deviceRole:false
}
},
onShow() {
this.userAction = [
servicePhone: '',
userName: '',
deviceRole: false,
orderTypeList:[
{
label:"我的订单",
iconUrl:config.assetsPath+'/my_list_15.png',
routePath:"/pages/orderRecord/orderRecord",
type:"1",
color:"#FEF9EE",
show:true
label:"已预约",
iconPath:config.assetsPath+"/user/order_icon_1.png",
value:1,
point:0
},
{
label:"消费记录",
iconUrl:config.assetsPath+'/my_list_16.png',
routePath:"/pages/payRecord/index",
type:"2",
color:"#EEF3FE",
show:true
label:"使用中",
iconPath:config.assetsPath+"/user/order_icon_1.png",
value:2,
point:0
},
{
label:"保洁管理",
iconUrl:config.assetsPath+'/my_list_17.png',
routePath:"/pages/cleanManage/cleanManage",
type:"3",
color:"#F1EEFE",
show:false
label:"已使用",
iconPath:config.assetsPath+"/user/order_icon_2.png",
value:3,
point:0
},
{
label:"保洁记录",
iconUrl:config.assetsPath+'/my_list_17.png',
routePath:"/pages/cleanRecord/index",
type:"4",
color:"#F1EEFE",
show:false
}
];
this.onCheckUserLogin();
label:"已取消",
iconPath:config.assetsPath+"/user/order_icon_3.png",
value:4,
point:0
}
],
routePathEnum:{
payRecord:"/setting/payRecord/index",
recharge:"/setting/recharge/index",
licensePlateNumber :"/setting/license-plate-number/list",
storeList :"/pages/storeList/storeList",
useCouponIllustrate :"/pages/useCouponIllustrate/useCouponIllustrate?keyData=call_us_images",
deviceManage:"/pages/deviceManage/index",
cleanManage:"/pages/cleanManage/cleanManage",
cleanRecord:"/pages/cleanRecord/index",
couponList:"/pages/couponList/index"
}
}
},
onShow() {
this.onGetSysConfig();
this.onGetUserInfo();
},
onLoad() {
// 隐藏原生的tabbar
uni.hideTabBar();
},
methods: {
onGetSysConfig(){
onGetSysConfig() {
let sysConfigList = uni.getStorageSync('sysConfig')
if(!sysConfigList){
systemConfig().then(res=>{
if(res.data.code == 200){
if (!sysConfigList) {
systemConfig().then(res => {
if (res.data.code == 200) {
uni.setStorage({
key:'sysConfig',
key: 'sysConfig',
data: res.data.rows,
success: () => {
this.onGetSysConfig();
......@@ -225,172 +324,141 @@
return;
}
let wifi = sysConfigList.find(item=>item.configKey === 'wechat.wifi')
if(wifi){
let wifi = sysConfigList.find(item => item.configKey === 'wechat.wifi')
if (wifi) {
let w = wifi.configValue.split(';')
this.wifiData.name=w[0];
this.wifiData.name = w[0];
this.wifiData.password = w[1];
}
let s = sysConfigList.find(item=>item.configKey === 'wechat.customer.service.phone')
if(s){
this.servicePhone= s.configValue
}
},
onCheckUserLogin() {
let tokenHeaders = uni.getStorageSync("tokenHeaders");
if (tokenHeaders) {
this.onGetUserInfo();
} else {
this.loginStatus = false;
uni.removeStorage({
key:'userInfo'
})
this.userInfo = {}
let s = sysConfigList.find(item => item.configKey === 'wechat.customer.service.phone')
if (s) {
this.servicePhone = s.configValue
}
},
onGetUserInfo() {
getUserInfo().then(res => {
if(res.data.code == 200){
if (res.data.code == 200) {
this.userInfo = res.data.data;
this.userName = this.userInfo.phone.slice(-4);
uni.setStorageSync('userInfo',this.userInfo)
this.userAction = this.userAction.map(item=>{
let show = item.show;
if(item.type == '3' && this.userInfo.isCleaner){
show = true
}
if(item.type == '4' && this.userInfo.isAdmin && !this.userInfo.isCleaner){
show = true
}
return {
...item,
show
uni.setStorageSync('userInfo', this.userInfo)
this.onGetOrderInfo();
}
})
this.loginStatus = true;
}
getUserWallet().then(res => {
console.log(res,9999)
this.userWalletInfo = res.data
})
},
onGetOrderInfo(){
orderList({
status:'0'
}).then(res => {
this.orderTypeList[0].point = res.data.total || 0;
this.$forceUpdate()
})
orderList({
status:'1'
}).then(res => {
this.orderTypeList[1].point = res.data.total || 0;
this.$forceUpdate()
})
},
onNavToLogin() {
this.$refs.loginPop.open();
},
onNavToMyCoupon(){
onNavToMyCoupon() {
uni.navigateTo({
url:"/pages/couponList/index"
url: "/pages/couponList/index"
})
},
onActionNav(val,k){
if(val.routePath){
if(k===0){
onActionNav(val, k) {
if (val.routePath) {
if (k === 0) {
uni.switchTab({
url:val.routePath
url: val.routePath
})
}else{
} else {
uni.navigateTo({
url:val.routePath
url: val.routePath
})
}
}
},
onNavToSetUserInfo(){
if(this.loginStatus==true){
onNavToSetUserInfo() {
uni.navigateTo({
url:"/pages/setUserInfo/index"
url: "/pages/setUserInfo/index"
})
}
},
onHandle(val){
if(val ==1){
onHandle(val) {
if (val == 1) {
uni.makePhoneCall({
phoneNumber:this.servicePhone
phoneNumber: this.servicePhone
})
}else if(val == 2){
if(this.wifiData.name && this.wifiData.password){
} else if (val == 2) {
if (this.wifiData.name && this.wifiData.password) {
this.$refs.popup.open()
}else{
} else {
uni.showToast({
icon:"none",
title:"无法进行WIFI连接"
icon: "none",
title: "无法进行WIFI连接"
})
}
}else if(val === 3){
uni.navigateTo({
url:'/pages/storeList/storeList'
})
} else if(val === 4){
uni.navigateTo({
url:'/pages/useCouponIllustrate/useCouponIllustrate?keyData=call_us_images'
})
}else if(val === 5){
uni.navigateTo({
url:'/pages/deviceManage/index'
})
}else if(val === 6){
let num = this.userInfo.numberplate || '';
uni.navigateTo({
url:'/setting/license-plate-number/list?number='+num
})
}
},
onClose(){
onClose() {
this.$refs.popup.close()
},
onCopy(){
onCopy() {
uni.setClipboardData({
data:this.wifiData.password
data: this.wifiData.password
})
},
onConnectWifi(){
onNavToOrderRecord(val = 0){
console.log(val,9999)
let statusIndex = val ? val.value : 0;
uni.setStorageSync("statusIndex",statusIndex)
uni.switchTab({
url:`/pages/orderRecord/orderRecord`
})
},
onConnectWifi() {
uni.startWifi({
success:()=>{
success: () => {
uni.connectWifi({
SSID:this.wifiData.name,
BSSID:this.wifiData.name,
password:this.wifiData.password,
SSID: this.wifiData.name,
BSSID: this.wifiData.name,
password: this.wifiData.password,
success: () => {
uni.showToast({
icon:"none",
title:'连接成功'
icon: "none",
title: '连接成功'
})
},
fail: (err) => {
uni.showToast({
icon:'none',
title:"WIFI连接失败"
icon: 'none',
title: "WIFI连接失败"
})
},
complete: (res) => {
console.log(res,909090)
console.log(res, 909090)
}
})
}
})
},
onProview(){
onProview() {
uni.previewImage({
current:0,
current: 0,
urls: [this.userInfo.avatar]
})
},
// 退出登录,解除手机号与当前微信的绑定
onLoginOut(){
uni.showLoading({
title:"加载中"
})
loginOut().then(res=>{
console.log(res)
if(res.data.code == 200){
uni.showToast({
icon:"none",
title:"用户已退出登录"
})
this.loginStatus = false;
uni.clearStorage();
}
onNavByPath(pathName){
uni.navigateTo({
url:this.routePathEnum[pathName]
})
}
}
......@@ -409,13 +477,13 @@
width: 100vw;
min-height: 100vh;
overflow-x: hidden;
background: linear-gradient(140deg, rgba(228, 5, 131, 0.16) 0%, #f1f1f1 32%, #f1f1f1 72%, rgba(228, 5, 131, 0.16) 100%);
.header {
display: flex;
flex-direction: column;
width: 100%;
min-height: 360upx;
background: linear-gradient(90deg,rgba(228, 5, 131, 0.2) 20%,rgba(255,255,255,0.9));
.header-content-box {
display: flex;
......@@ -426,19 +494,23 @@
flex-direction: column;
width: 100%;
margin-top: 30upx;
>.flex-row {
position: relative;
align-items: center;
.cu-avatar{
.cu-avatar {
position: relative;
background-color: transparent;
width: 80px;
height: 80px;
.avatar-bg{
.avatar-bg {
width: 100%;
height: 100%;
}
.avatar-box{
.avatar-box {
position: absolute;
width: 80%;
height: 80%;
......@@ -446,19 +518,22 @@
z-index: 99;
}
}
.nav-right{
.nav-right {
display: flex;
flex-direction: row;
align-items: center;
position: absolute;
right: 5vw;
// margin-top: 20upx;
.img{
.img {
width: 14px;
height: 16px;
margin-right: 6upx;
}
text{
text {
font-size: 30upx;
}
}
......@@ -475,20 +550,24 @@
background-size: 100% 100%;
height: 106upx;
padding: 0 30upx;
.part-left{
text{
.part-left {
text {
color: #512C19;
}
}
.flex-row {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
.text-name{
.text-name {
color: #936E4C;
}
.text-white{
.text-white {
color: #E2177C;
margin-left: 20upx;
}
......@@ -507,19 +586,22 @@
flex-direction: row;
align-items: center;
width: 100%;
.cu-avatar{
.cu-avatar {
width: 64px;
height: 64px;
border-radius: 50%;
background-color: #ffffff;
overflow: hidden;
.avatar-img{
.avatar-img {
width: 100%;
height: 100%;
}
}
.text-gray{
.text-gray {
font-size: 40rpx;
color: #36122D;
font-weight: bold;
......@@ -528,111 +610,82 @@
}
}
.content-box{
.content-box {
display: flex;
flex: 1;
flex-direction: column;
align-items: center;
width: 100%;
border-radius: 28upx 28upx 0 0;
margin-top: -28upx;
background-color: #ffffff;
box-shadow: 0rpx 0rpx 18rpx 2rpx rgba(81,6,49,0.3);
}
.user-action {
position: relative;
display: flex;
flex-direction: row;
width: 97%;
padding: 30upx 0;
z-index: 10;
.action-box{
width: 30%;
margin: 0 1.5%;
>.action-item {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
height: 88rpx;
border-radius: 12rpx;
.flex-1{
display: flex;
align-items: center;
justify-content: center;
}
.img-box{
display: flex;
align-items: flex-end;
width: 52upx;
height: 100%;
image{
width: 100%;
max-height: 40upx;
}
}
}
}
}
.main {
width: 100%;
.content{
.content {
display: flex;
flex-direction: row;
align-items: center;
}
}
}
.login-out{
.login-out {
width: 94%;
margin-top: 40upx;
}
.avatar-img{
.avatar-img {
width: 100%;
height: 100%;
border-radius: 50%;
}
.popup-content{
.popup-content {
display: flex;
flex-direction: column;
width: 100vw;
min-height: 40vh;
background-color: #f1f1f1;
border-radius: 20upx 20upx 0 0;
.title-box{
.title-box {
padding: 30upx 20upx 0 20upx;
align-items: center;
.cuIcon-roundclose{
.cuIcon-roundclose {
font-size: 68upx;
}
}
.flex-col{
.flex-col {
display: flex;
flex: 1;
width: 100%;
flex-direction: column;
justify-content: center;
align-items: center;
.text{
.text {
width: 60%;
margin: 10upx 0;
}
}
.box-btn{
.box-btn {
display: flex;
flex-direction: row;
padding: 30upx 0;
justify-content: center;
align-items: center;
margin-bottom: 10%;
.cu-btn{
.cu-btn {
margin: 0 5%;
}
}
}
.numberplate{
.numberplate {
position: absolute;
right: 8upx;
top: 0;
......@@ -640,4 +693,66 @@
display: flex;
align-items: center;
}
.list-content-box{
display: flex;
flex-direction: column;
width: 92%;
background-color: #ffffff;
padding: 20upx 30upx;
border-radius: 20upx;
margin: 20upx auto;
.header-title{
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20upx;
.text-title{
font-size: 30upx;
}
}
.flex-row-center{
display: flex;
flex-direction: row;
width: 100%;
.item-box{
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 25%;
.icon-img{
position: relative;
width: 44px;
height: 44px;
border-radius: 6px;
// background-color: #f1f1f1;
image{
width: 100%;
height: 100%;
}
.point-box{
position: absolute;
top: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
background-color: #e40583;
width: 4vw;
height: 4vw;
border-radius: 50%;
color: #ffffff;
font-size: 20upx;
}
}
.text-box{
margin: 0 0 4upx;
}
}
}
.tool-list{
flex-wrap: wrap;
}
}
</style>
\ No newline at end of file
......@@ -182,11 +182,7 @@ import NoLogin from "@/components/noLogin/noLogin"
listBlankImage:config.assetsPath+'/no_data_icon.png',
};
},
onLoad(option) {
if(option.index){
this.statusIndex = option.index
}
// 隐藏原生的tabbar
onLoad() {
uni.hideTabBar();
},
onReachBottom() {
......@@ -196,6 +192,11 @@ import NoLogin from "@/components/noLogin/noLogin"
}
},
onShow() {
let statusIndex = uni.getStorageSync("statusIndex");
console.log(statusIndex,99999)
if(statusIndex === 0 || statusIndex > 0){
this.statusIndex = statusIndex
}
this.onGetDicts()
},
methods: {
......
......@@ -61,14 +61,12 @@
userInfo:{}
};
},
onLoad(option) {
console.log(option, 999)
onLoad() {
this.userInfo = uni.getStorageSync('userInfo')
if (option.number){
if (this.userInfo.numberplate){
this.licensePlateNumber.push({
name: option.number
name: this.userInfo.numberplate
})
}
},
......
......@@ -8,7 +8,7 @@
<text class="text-title">{{item.name}}</text>
</view>
<view class="flex-row">
<text class="text-bold text-xl" :class="item.sign=='income'?'text-red':'text-black'">{{payStatus[item.sign||'expenditure']}}</text>
<text class="text-bold text-xl" :class="item.sign=='income'?'text-red':'text-black'">{{ item.price !== 0? payStatus[item.sign||'expenditure']:''}}</text>
<text class="text-black text-bold text-lg" >{{item.price}}</text>
</view>
</view>
......
<template>
<view class="order-record">
<view v-if="loginStatus" class="content-box">
<view class="list-content">
<view v-for="(item,index) in list" :key="index" class="list-item" @tap="onNavToOrderInfo(item)">
<view class="flex-between part-1">
<view class="">
<text class="text-title">{{item.name}}</text>
</view>
<view class="flex-row">
<text class="text-bold text-xl" :class="item.sign=='income'?'text-red':'text-black'">{{ item.price !== 0? payStatus[item.sign||'expenditure']:''}}</text>
<text class="text-black text-bold text-lg" >{{item.price}}</text>
</view>
</view>
<view class="flex-between part-1">
<text>{{item.createTime}}</text>
<text>{{item.payType}}</text>
</view>
</view>
</view>
</view>
<view v-if="loginStatus && list.length == 0" class="empty-box">
<u-empty text="暂无数据" textColor='#C1C1C1' width="120"
:icon="listBlankImage">
</u-empty>
</view>
<view v-if="loginStatus && list.length" style="padding: 12px 6% 0;">
<u-loadmore :status="status" :icon="true" :line='true' :loading-text="loadingText"
:loadmore-text="loadmoreText" :nomore-text="nomoreText" />
</view>
<NoLogin v-model="loginStatus" />
</view>
</template>
<script>
import config from "@/config/index.config"
import {
recordsList
} from "@/api/recharge.js"
import NoLogin from "@/components/noLogin/noLogin"
import {
getDictItem
} from "@/utils/tools.js"
export default {
components:{
NoLogin
},
data() {
return {
status: 'nomore ',
loadingText: '努力加载中',
loadmoreText: '上划加载',
nomoreText: '到底啦',
statusIndex: 0,
list: [],
statusList: [{
label: "全部",
value: "",
},
{
label: "已预约",
value: "0",
},
{
label: "使用中",
value: "1",
},
{
label: "已完成",
value: "2",
},
{
label: "退单",
value: "3",
}
],
queryParams: {
pageNum: 1,
pageSize: 10
},
loginStatus:true,
orderStatusEnum:{},
payTypeEnum:{
1:"微信支付",
2:"支付宝支付",
3:"余额支付"
},
payStatus:{
expenditure:'-',
income:'+'
},
listBlankImage:config.assetsPath+'/no_data_icon.png',
};
},
onLoad() {
},
onReachBottom() {
if (this.status == 'loadmore') {
this.queryParams.pageNum += 1;
this.onLoading();
}
},
onShow() {
this.onGetDicts()
},
methods: {
onGetDicts() {
let dicts = []
if (uni.getStorageSync('dicts')) {
dicts = JSON.parse(uni.getStorageSync('dicts'))
this.orderStatusEnum = getDictItem(dicts, "store_order_status");
this.onLoading()
} else {
dictList().then(res => {
dicts = res.data.data;
uni.setStorageSync('dicts', JSON.stringify(res.data.data))
this.orderStatusEnum = getDictItem(dicts, "store_order_status");
this.onLoading()
})
}
},
onLoading() {
uni.showLoading({
title: '加载中'
})
this.status = 'loading'
this.queryParams.status = this.statusList[this.statusIndex].value;
recordsList(this.queryParams).then(res => {
console.log(res)
uni.hideLoading()
if (res.data.code == 200) {
if(this.queryParams.pageNum ==1){
this.list = res.data.rows
}else{
this.list = [...this.list,...res.data.rows]
}
if(this.list.length < res.data.total){
this.status = "loadmore"
}else{
this.status = 'nomore'
}
}else if(res.data.code == 401){
this.loginStatus = false
}
})
},
tabSelect(i) {
console.log(i, 99999)
this.statusIndex = i;
this.queryParams.pageNum = 1;
this.list = []
this.onLoading()
},
onNavToOrderInfo(val){
uni.navigateTo({
url:"/pages/orderResult/orderResult?orderNo="+val.orderNo
})
}
}
}
</script>
<style>
page{
background-color: #f1f1f1;
}
</style>
<style lang="scss" scoped>
.order-record {
display: flex;
flex-direction: column;
.content-box {
display: flex;
flex-direction: column;
.list-content{
display: flex;
flex-direction: column;
align-items: center;
.list-item{
width: 94%;
padding: 20upx 20upx;
border-radius: 20upx;
background-color: #ffffff;
margin-top: 30upx;
.part-1{
display: flex;
align-items: center;
padding: 10upx;
.flex-row{
display: flex;
flex-direction: row;
align-items: center;
}
}
}
}
}
}
</style>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment