Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gxpt_wechat
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
pseer
gxpt_wechat
Commits
85d9f140
Commit
85d9f140
authored
Jul 04, 2024
by
zhangzhen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完善用户信息部分内容
parent
99cd18b1
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
663 additions
and
308 deletions
+663
-308
index.js
api/index.js
+6
-0
recharge.js
api/recharge.js
+10
-0
uerInfo.js
api/uerInfo.js
+10
-0
f-tabbar.vue
components/module/f-tabbar/f-tabbar.vue
+3
-0
index.config.js
config/index.config.js
+2
-2
manifest.json
manifest.json
+3
-0
pages.json
pages.json
+21
-14
myInfo.vue
pages/my/myInfo.vue
+397
-281
orderRecord.vue
pages/orderRecord/orderRecord.vue
+6
-5
list.vue
setting/license-plate-number/list.vue
+3
-5
index.vue
setting/payRecord/index.vue
+1
-1
index.vue
setting/recharge/index.vue
+201
-0
index.vue
setting/webUrl/index.vue
+0
-0
No files found.
api/index.js
View file @
85d9f140
...
...
@@ -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`
...
...
api/recharge.js
0 → 100644
View file @
85d9f140
import
http
from
"@/common/vmeitime-http/index.js"
// 查询充值记录列表
export
const
recordsList
=
(
data
)
=>
{
let
url
=
`/recharge/list`
return
http
.
get
(
url
,
data
)
}
api/uerInfo.js
0 → 100644
View file @
85d9f140
import
http
from
"@/common/vmeitime-http/index.js"
// 查询充值记录列表
export
const
recordsList
=
(
data
)
=>
{
let
url
=
`/recharge/list`
return
http
.
get
(
url
,
data
)
}
components/module/f-tabbar/f-tabbar.vue
View file @
85d9f140
...
...
@@ -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
...
...
config/index.config.js
View file @
85d9f140
...
...
@@ -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',
...
...
manifest.json
View file @
85d9f140
...
...
@@ -73,6 +73,9 @@
"requiredPrivateInfos"
:
[
"getLocation"
],
"uniStatistics"
:
{
"enable"
:
false
},
"secureNetwork"
:
{
"enable"
:
false
}
},
"mp-alipay"
:
{
...
...
pages.json
View file @
85d9f140
...
...
@@ -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
}
}
]
}
...
...
pages/my/myInfo.vue
View file @
85d9f140
...
...
@@ -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
:
360
upx
;
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
:
30
upx
;
>.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
:
20
upx
;
.img{
.img
{
width
:
14px
;
height
:
16px
;
margin-right
:
6
upx
;
}
text
{
text
{
font-size
:
30
upx
;
}
}
...
...
@@ -475,20 +550,24 @@
background-size
:
100%
100%
;
height
:
106
upx
;
padding
:
0
30
upx
;
.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
:
20
upx
;
}
...
...
@@ -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
:
40
rpx
;
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
:
28
upx
28
upx
0
0
;
margin-top
:
-28
upx
;
background-color
:
#ffffff
;
box-shadow
:
0
rpx
0
rpx
18
rpx
2
rpx
rgba
(
81
,
6
,
49
,
0.3
);
}
.user-action
{
position
:
relative
;
display
:
flex
;
flex-direction
:
row
;
width
:
97%
;
padding
:
30
upx
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
:
88
rpx
;
border-radius
:
12
rpx
;
.flex-1{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
.img-box
{
display
:
flex
;
align-items
:
flex-end
;
width
:
52
upx
;
height
:
100%
;
image{
width
:
100%
;
max-height
:
40
upx
;
}
}
}
}
}
.main
{
width
:
100%
;
.content{
.content
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
}
}
}
.login-out
{
.login-out
{
width
:
94%
;
margin-top
:
40
upx
;
}
.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
:
20
upx
20
upx
0
0
;
.title-box{
.title-box
{
padding
:
30
upx
20
upx
0
20
upx
;
align-items
:
center
;
.cuIcon-roundclose{
.cuIcon-roundclose
{
font-size
:
68
upx
;
}
}
.flex-col
{
.flex-col
{
display
:
flex
;
flex
:
1
;
width
:
100%
;
flex-direction
:
column
;
justify-content
:
center
;
align-items
:
center
;
.text{
.text
{
width
:
60%
;
margin
:
10
upx
0
;
}
}
.box-btn
{
.box-btn
{
display
:
flex
;
flex-direction
:
row
;
padding
:
30
upx
0
;
justify-content
:
center
;
align-items
:
center
;
margin-bottom
:
10%
;
.cu-btn{
.cu-btn
{
margin
:
0
5%
;
}
}
}
.numberplate
{
.numberplate
{
position
:
absolute
;
right
:
8
upx
;
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
:
20
upx
30
upx
;
border-radius
:
20
upx
;
margin
:
20
upx
auto
;
.header-title{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
margin-bottom
:
20
upx
;
.text-title{
font-size
:
30
upx
;
}
}
.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
:
20
upx
;
}
}
.text-box
{
margin
:
0
0
4
upx
;
}
}
}
.tool-list
{
flex-wrap
:
wrap
;
}
}
</
style
>
\ No newline at end of file
pages/orderRecord/orderRecord.vue
View file @
85d9f140
...
...
@@ -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
:
{
...
...
setting/license-plate-number/list.vue
View file @
85d9f140
...
...
@@ -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
})
}
},
...
...
pages
/payRecord/index.vue
→
setting
/payRecord/index.vue
View file @
85d9f140
...
...
@@ -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>
...
...
setting/recharge/index.vue
0 → 100644
View file @
85d9f140
<
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
:
20
upx
20
upx
;
border-radius
:
20
upx
;
background-color
:
#ffffff
;
margin-top
:
30
upx
;
.part-1{
display
:
flex
;
align-items
:
center
;
padding
:
10
upx
;
.flex-row{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
}
}
}
}
}
}
</
style
>
\ No newline at end of file
pages
/webUrl/index.vue
→
setting
/webUrl/index.vue
View file @
85d9f140
File moved
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment