@@ -76,10 +76,7 @@ const nextStep = () => { | |||
msg("请先输入验证码!"); | |||
return; | |||
} | |||
//TODO 目前后端规定验证码只能是123456,所以目前写死 | |||
// navTo(`/login/forget-pwd-step3?phone=${phone.value}&code=${code.value}`); | |||
navTo(`/login/forget-pwd-step3?phone=${phone.value}&code=123456`); | |||
navTo(`/login/forget-pwd-step3?phone=${phone.value}&code=${code.value}`); | |||
}; | |||
</script> | |||
@@ -54,7 +54,7 @@ import { msg, confirm, checkStr } from "@/utils/utils"; | |||
import { reactive } from "vue"; | |||
import { onLoad } from "@dcloudio/uni-app"; | |||
import { request } from "@/utils/network/request"; | |||
import { resetPwd, regist } from "@/utils/network/api"; | |||
import { resetPwd } from "@/utils/network/api"; | |||
const state = reactive({ | |||
isPwdType: true, | |||
@@ -71,7 +71,7 @@ onLoad((options) => { | |||
state.code = options.code; | |||
}); | |||
/* 注册 */ | |||
/* 忘记密码 */ | |||
const doResetPwd = () => { | |||
if (!state.password) { | |||
msg("请输入密码"); | |||
@@ -91,10 +91,10 @@ const doResetPwd = () => { | |||
const options = { | |||
type: 2, | |||
data: { | |||
password: state.password, | |||
affirmPassword:state.affirmPassword, | |||
newPassword: state.password, | |||
affirmNewPassword:state.affirmPassword, | |||
mobile: state.phone, | |||
verificationCode: state.code, | |||
code: state.code, | |||
}, | |||
method: "POST", | |||
showLoading: true, |
@@ -193,7 +193,8 @@ const doLogin = () => { | |||
}; | |||
/* 执行登录 */ | |||
const reqLogin = (code, data) => { | |||
const reqLogin = (code:string, data:object) => { | |||
console.log(code,data); | |||
const options = { | |||
type: 2, | |||
data: data, | |||
@@ -201,8 +202,8 @@ const reqLogin = (code, data) => { | |||
showLoading: true, | |||
}; | |||
request(code, options).then((res) => { | |||
fetchToken(stringToJson(res.bizContent).code).then((data) => { | |||
setItem("phone", data.mobile); | |||
const result = stringToJson(res.bizContent); | |||
fetchToken(stringToJson(result).code).then((data:any) => { | |||
msg("登录成功!"); | |||
uni.$emit("refreshOrder"); | |||
uni.navigateBack(); |
@@ -1,35 +1,20 @@ | |||
{ | |||
"name": "navbar自定义导航条", | |||
"version": "v1.1.0", | |||
"lockfileVersion": 3, | |||
"lockfileVersion": 1, | |||
"requires": true, | |||
"packages": { | |||
"": { | |||
"name": "navbar自定义导航条", | |||
"version": "v1.1.0", | |||
"dependencies": { | |||
"base64-js": "^1.5.1", | |||
"image-tools": "^1.4.0", | |||
"js-base64": "^2.6.4", | |||
"text-decoding": "^1.0.0" | |||
} | |||
}, | |||
"node_modules/base64-js": { | |||
"dependencies": { | |||
"base64-js": { | |||
"version": "1.5.1", | |||
"resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", | |||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" | |||
}, | |||
"node_modules/image-tools": { | |||
"version": "1.4.0", | |||
"resolved": "https://registry.npmmirror.com/image-tools/-/image-tools-1.4.0.tgz", | |||
"integrity": "sha512-TKtvJ6iUwM0mfaD4keMnk1ENHFC470QEjBfA3IlvKdEOufzvWbjbaoNcoyYq6HlViF8+d5tOS1ooE6j7CHf1lQ==" | |||
}, | |||
"node_modules/js-base64": { | |||
"version": "2.6.4", | |||
"resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", | |||
"integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" | |||
"base64js": { | |||
"version": "1.0.1", | |||
"resolved": "https://registry.npmmirror.com/base64js/-/base64js-1.0.1.tgz", | |||
"integrity": "sha512-jxGN7DS7e+HHO5u+UT9NzK2BMKJByQPmmdXyvad7TN0mPKGC4kRMTnnV7g7HqhLlW51AFmtbRM4IDGxysBYuVg==" | |||
}, | |||
"node_modules/text-decoding": { | |||
"text-decoding": { | |||
"version": "1.0.0", | |||
"resolved": "https://registry.npmmirror.com/text-decoding/-/text-decoding-1.0.0.tgz", | |||
"integrity": "sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA==" |
@@ -81,7 +81,7 @@ | |||
} | |||
}, | |||
{ | |||
"path": "refund-order-balance/reslut", | |||
"path": "refund-order-balance/result", | |||
"style": { | |||
"navigationBarTitleText": "余额补领-办理成功", | |||
"enablePullDownRefresh": false | |||
@@ -1292,6 +1292,18 @@ | |||
"style": { | |||
"navigationBarTitleText": "存储卡圈存" | |||
} | |||
}, | |||
{ | |||
"path": "process/process", | |||
"style": { | |||
"navigationBarTitleText": "办理流程" | |||
} | |||
}, | |||
{ | |||
"path": "help/help", | |||
"style": { | |||
"navigationBarTitleText": "常见问题" | |||
} | |||
} | |||
] | |||
}, |
@@ -97,31 +97,27 @@ | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 办理流程 --> | |||
<view class="flow-path"> | |||
<scroll-view scroll-x="true" class="scroll-view"> | |||
<view class="top-menu"> | |||
<view :class="item == state.tabActive ? 'tab active' : 'tab'" v-for="item in state.flowPathTabList" | |||
:key="item" @click="flowPathTabHandle(item)"> | |||
<view class="border"></view>{{ item }} | |||
<!--支持帮助 --> | |||
<view class="express-lane"> | |||
<view class="title">支持帮助</view> | |||
<view class="lane"> | |||
<view class="lane-item lane-1" :style="{ '--background': bgOrange }" @click="goProcess"> | |||
<image :src="fileURL + 'image/index/icon-car.png'"></image> | |||
<view class="text"> | |||
<text class="head">办理流程</text> | |||
</view> | |||
</view> | |||
</scroll-view> | |||
<view v-if="state.tabActive === '办理流程'"> | |||
<view class="flow-list"> | |||
<flow-path-list :options="state.flowList"></flow-path-list> | |||
<view class="lane-item lane-2" :style="{ '--background': bgBlue }" @click="goHelp"> | |||
<image :src="fileURL + 'image/index/icon-truck.png'"></image> | |||
<view class="text"> | |||
<text class="head">常见问题</text> | |||
</view> | |||
</view> | |||
</view> | |||
<view v-else-if="state.tabActive === '办理条件'"> | |||
<view class="flow-list as-gravity-center"> 办理条件 </view> | |||
</view> | |||
<view v-else-if="state.tabActive === '常见问题'"> | |||
<view class="flow-list as-gravity-center"> 常见问题 </view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 高速快讯 --> | |||
@@ -171,7 +167,27 @@ | |||
</view> | |||
</view> | |||
<!-- 权益专区 --> | |||
<view class="service"> | |||
<view class="title">权益专区</view> | |||
<view class="service-box"> | |||
<view class="service-item border" @click="$util.msg('该功能正在开发中,敬请期待!')"> | |||
<image :src="fileURL + 'image/index/truck-point.png'"></image> | |||
<view class="text"> | |||
<view class="tit">货车积分返利权益</view> | |||
<view class="sub">海量商品任你选择</view> | |||
</view> | |||
</view> | |||
<view class="service-item" @click="$util.msg('该功能正在开发中,敬请期待!')"> | |||
<image :src="fileURL + 'image/index/parking-bill.png'"></image> | |||
<view class="text"> | |||
<view class="tit">其他优惠权益</view> | |||
<view class="sub">其他优惠权益说明</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- ETC选择弹窗 --> | |||
<view class="mask" v-if="isShowMask"> | |||
@@ -197,13 +213,14 @@ | |||
<script setup lang="ts"> | |||
import { | |||
onMounted, | |||
ref | |||
ref, | |||
reactive | |||
} from "vue"; | |||
import { | |||
onPageScroll, | |||
onLoad | |||
} from "@dcloudio/uni-app"; | |||
import flowPathList from "./components/flow-path-list.vue"; | |||
import { | |||
request | |||
} from "../../utils/network/request.js"; | |||
@@ -221,9 +238,6 @@ | |||
import { | |||
queryKey | |||
} from "@/utils/network/api.js"; | |||
import { | |||
reactive | |||
} from "vue"; | |||
import { | |||
fileURL | |||
} from "@/datas/fileURL.js"; | |||
@@ -345,10 +359,7 @@ | |||
// console.log(err); | |||
// }); | |||
}); | |||
//办理流程tab选择 | |||
const flowPathTabHandle = (tab) => { | |||
state.tabActive = tab; | |||
}; | |||
//安装激活 | |||
const goActivation = () => { | |||
@@ -452,6 +463,17 @@ | |||
console.log(err); | |||
}); | |||
} | |||
const goProcess = ()=>{ | |||
uni.navigateTo({ | |||
url: "/service/process/process", | |||
}); | |||
} | |||
const goHelp = ()=>{ | |||
uni.navigateTo({ | |||
url: "/service/help/help", | |||
}); | |||
} | |||
</script> | |||
<style> | |||
@@ -823,58 +845,4 @@ | |||
margin: 50rpx 30rpx 0rpx; | |||
} | |||
.flow-path { | |||
padding: 20rpx 0rpx 20rpx; | |||
.scroll-view { | |||
white-space: nowrap; | |||
// position: sticky; | |||
top: 0; | |||
} | |||
.top-menu { | |||
display: flex; | |||
} | |||
.top-menu .tab { | |||
font-size: 28rpx; | |||
padding: 38rpx 30rpx; | |||
color: #666666; | |||
position: relative; | |||
} | |||
.top-menu .active .border { | |||
position: absolute; | |||
width: 70%; | |||
height: 16rpx; | |||
background: #00b38b; | |||
opacity: 0.3; | |||
bottom: 40rpx; | |||
z-index: -99; | |||
left: 15%; | |||
border-radius: 6rpx; | |||
} | |||
.top-menu .active { | |||
font-weight: bold; | |||
font-size: 32rpx; | |||
color: #0d0f26; | |||
} | |||
.top-menu .active::before { | |||
width: 100%; | |||
height: 16rpx; | |||
background: #00b38b; | |||
opacity: 0.3; | |||
} | |||
.flow-list { | |||
margin: 0rpx 30rpx; | |||
min-height: 700rpx; | |||
background: #ffffff; | |||
box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8); | |||
border-radius: 20rpx; | |||
padding: 55rpx 30rpx 30rpx; | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,9 @@ | |||
<template> | |||
<view> 常见问题</view> | |||
</template> | |||
<script> | |||
</script> | |||
<style> | |||
</style> |
@@ -39,20 +39,20 @@ | |||
<style lang="scss" scoped> | |||
.as-layout-horizontal{ | |||
border-left: 1px solid #00B38B; | |||
border-left: 2px solid #00B38B; | |||
padding-bottom: 45rpx; | |||
margin-top: 10rpx; | |||
position: relative; | |||
&::after{ | |||
content: ''; | |||
left: -6rpx; | |||
left: -8rpx; | |||
top: -10rpx; | |||
position: absolute; | |||
width: 11rpx; | |||
height: 11rpx; | |||
width: 12rpx; | |||
height: 12rpx; | |||
border-radius: 50%; | |||
border: 1px solid #00B38B; | |||
border: 2rpx solid #00B38B; | |||
box-sizing: border-box; | |||
} | |||
&:last-child{ | |||
@@ -113,9 +113,9 @@ | |||
&::after{ | |||
content: ''; | |||
position: absolute; | |||
width: 11rpx; | |||
height: 11rpx; | |||
left:-6rpx; | |||
width: 12rpx; | |||
height: 12rpx; | |||
left:-8rpx; | |||
border-radius: 50%; | |||
background-color: #00B38B; | |||
} |
@@ -0,0 +1,107 @@ | |||
<template> | |||
<view class="wrapper"> | |||
<view class="flow-path"> | |||
<view > | |||
<view class="flow-list"> | |||
<flow-path-list :options="state.flowList"></flow-path-list> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script setup lang="ts"> | |||
import {reactive} from "vue"; | |||
import flowPathList from "./components/flow-path-list.vue"; | |||
const state = reactive({ | |||
flowPathTabList: ["办理流程", "办理条件", "常见问题"], | |||
flowList: [ | |||
//办理流程数据 | |||
{ | |||
title: "第一步:信息校验:", | |||
desc: "提交车牌号、车牌颜色、收货地址相关信息", | |||
}, | |||
{ | |||
title: "第二步:证件上传:", | |||
desc: "上传身份证、行驶证等相关信息", | |||
}, | |||
{ | |||
title: "第三步:签约代扣:", | |||
desc: "选择签约账户并关联", | |||
}, | |||
{ | |||
title: "第四步:产品选择:", | |||
desc: "选择购买的发行产品", | |||
}, | |||
{ | |||
title: "第五步:订单完成:", | |||
desc: "支付完成订单", | |||
}, | |||
], | |||
}); | |||
</script> | |||
<style lang="scss"> | |||
page{ | |||
background: #eef7f7; | |||
} | |||
.flow-path { | |||
padding: 20rpx 0rpx 20rpx; | |||
.scroll-view { | |||
white-space: nowrap; | |||
// position: sticky; | |||
top: 0; | |||
} | |||
.top-menu { | |||
display: flex; | |||
} | |||
.top-menu .tab { | |||
font-size: 28rpx; | |||
padding: 38rpx 30rpx; | |||
color: #666666; | |||
position: relative; | |||
} | |||
.top-menu .active .border { | |||
position: absolute; | |||
width: 70%; | |||
height: 16rpx; | |||
background: #00b38b; | |||
opacity: 0.3; | |||
bottom: 40rpx; | |||
z-index: -99; | |||
left: 15%; | |||
border-radius: 6rpx; | |||
} | |||
.top-menu .active { | |||
font-weight: bold; | |||
font-size: 32rpx; | |||
color: #0d0f26; | |||
} | |||
.top-menu .active::before { | |||
width: 100%; | |||
height: 16rpx; | |||
background: #00b38b; | |||
opacity: 0.3; | |||
} | |||
.flow-list { | |||
margin: 0rpx 30rpx; | |||
min-height: 700rpx; | |||
background: #ffffff; | |||
box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8); | |||
border-radius: 20rpx; | |||
padding: 55rpx 30rpx 30rpx; | |||
} | |||
} | |||
</style> |
@@ -48,6 +48,7 @@ export const useUserStore = defineStore("userStore", { | |||
/*根据登录code获取token信息*/ | |||
fetchToken(code) { | |||
console.log(code); | |||
const options = { | |||
type: 2, | |||
data: { | |||
@@ -59,9 +60,10 @@ export const useUserStore = defineStore("userStore", { | |||
showLoading: false, | |||
}; | |||
console.log("option********",options); | |||
return new Promise(async (resolve, reject) => { | |||
const res = await request(getToken, options); | |||
const data = stringToJson(res.bizContent); | |||
const data = stringToJson(stringToJson(res.bizContent)); | |||
this.saveToken(data.accessToken); | |||
this.saveOpenId(data.openId); | |||
resolve(data); |
@@ -28,11 +28,11 @@ export const queryKey = 'cefb3b5da25a49eeb18865c00bc91c96'//全量KEY | |||
//菜单配置 | |||
export const queryMenuConfig = '1032' | |||
/*统一 会员平台*/ | |||
export const sendCode = "2"; //统一会员平台发送验证码接口 | |||
export const regist = "3"; // 统一会员平台个人账号注册 | |||
export const sendCode = "1001"; //统一会员平台发送验证码接口 | |||
export const regist = "1003"; // 统一会员平台个人账号注册 | |||
export const login = "1004"; //统一会员平台个人账号手机号密码登录 | |||
export const loginCode = "1005"; //统一会员平台个人账号手机号验证码登录 | |||
export const resetPwd = "52"; //会员平台个人账号修改密码手机号验证码接口 | |||
export const resetPwd = "1009"; //会员平台个人账号修改密码手机号验证码接口 | |||
export const getToken = "1006"; //统一会员平台登录确认接口(用于换取openId和token) | |||
export const checkCode = "966"; //校验验证码 | |||
export const register = "52de4029940f4e03b18c3a0b8d64c2db";//USER-无感注册登录(个人/企业) |