Merge branch 'master' of http://114.55.169.15:3000/huxiaofeng666/jwl-applet into dev-hxf
This commit is contained in:
16
src/App.vue
16
src/App.vue
@@ -1,16 +1,21 @@
|
||||
<script>
|
||||
import useUserStore from '@/jtools/store/user'
|
||||
import useQuestionStore from '@/jtools/store/question' //引入store
|
||||
import storage from './jtools/storage'
|
||||
export default {
|
||||
onLaunch: function () {
|
||||
onLaunch: function (options) {
|
||||
// 如果是二维码扫描过来的,需要保存公司id
|
||||
if (options.query?.scene) {
|
||||
storage.set('companyId', options.query?.scene)
|
||||
}
|
||||
useUserStore().queryVipList()
|
||||
if(useUserStore().isLogin) {
|
||||
if (useUserStore().isLogin) {
|
||||
useUserStore().getUserInfo()
|
||||
useUserStore().searchUserVip()
|
||||
}
|
||||
},
|
||||
onShow: function () {
|
||||
useQuestionStore().getAllQuestion()
|
||||
useQuestionStore().getAllQuestion()
|
||||
console.log('App Show')
|
||||
},
|
||||
onHide: function () {
|
||||
@@ -23,5 +28,8 @@ export default {
|
||||
/*每个页面公共css */
|
||||
@import "uni_modules/uview-plus/index.scss";
|
||||
@import "static/style/index.scss";
|
||||
button::after{ border: none;}
|
||||
|
||||
button::after {
|
||||
border: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { defineStore } from 'pinia';
|
||||
import { login,logout,getInfo } from '@/jtools/api/login';
|
||||
import { queryVip,getVipList } from '@/jtools/api/vip'
|
||||
import { login, logout, getInfo } from '@/jtools/api/login';
|
||||
import { queryVip, getVipList } from '@/jtools/api/vip';
|
||||
import constants from '@/jtools/constants';
|
||||
import storage from '@/jtools/storage';
|
||||
|
||||
@@ -16,76 +16,77 @@ const useUserStore = defineStore({
|
||||
}),
|
||||
|
||||
actions: {
|
||||
login(params) {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const resp = await login(params);
|
||||
if (resp.code === '0000') {
|
||||
// 保存登录信息,用于重新登录
|
||||
this.isLogin = true;
|
||||
this.token = resp.data.token;
|
||||
this.userInfo = resp.data
|
||||
storage.set('isLogin', true)
|
||||
storage.set('token', resp.data.token)
|
||||
storage.set('userInfo', resp.data)
|
||||
resolve(resp.data);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
});
|
||||
},
|
||||
login(params) {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const resp = await login(params);
|
||||
if (resp.code === '0000') {
|
||||
// 保存登录信息,用于重新登录
|
||||
this.isLogin = true;
|
||||
this.token = resp.data.token;
|
||||
this.userInfo = resp.data;
|
||||
storage.set('isLogin', true);
|
||||
storage.set('token', resp.data.token);
|
||||
storage.set('userInfo', resp.data);
|
||||
storage.remove('companyId');
|
||||
resolve(resp.data);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
});
|
||||
},
|
||||
// 登出
|
||||
logout(force = false) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.resetUserData();
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
});
|
||||
resolve();
|
||||
})
|
||||
});
|
||||
},
|
||||
//过期登出
|
||||
logoutWithoutToken(force = false) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.resetUserData();
|
||||
resolve();
|
||||
});
|
||||
},
|
||||
//过期登出
|
||||
logoutWithoutToken(force = false) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.resetUserData();
|
||||
resolve();
|
||||
})
|
||||
},
|
||||
// 获取用户信息
|
||||
getUserInfo() {
|
||||
getInfo().then(resp => {
|
||||
if(resp.code == '0000') {
|
||||
this.userInfo = resp.data
|
||||
storage.set('userInfo', resp.data)
|
||||
if (resp.code == '0000') {
|
||||
this.userInfo = resp.data;
|
||||
storage.set('userInfo', resp.data);
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
resetUserData() {
|
||||
this.isLogin = false;
|
||||
this.token = '';
|
||||
this.userInfo = {}
|
||||
this.vipOnList = []
|
||||
storage.remove('isLogin')
|
||||
storage.remove('token')
|
||||
storage.remove('userInfo')
|
||||
this.userInfo = {};
|
||||
this.vipOnList = [];
|
||||
storage.remove('isLogin');
|
||||
storage.remove('token');
|
||||
storage.remove('userInfo');
|
||||
},
|
||||
// 查询当前用户的vip开通情况
|
||||
async searchUserVip() {
|
||||
this.currentCartype=storage.get('carType') || '1001'
|
||||
const resp=await queryVip({ carTypeId: this.currentCartype,memberId: null, subject:'' })
|
||||
if(resp.code == '0000') {
|
||||
this.vipOnList = resp.data
|
||||
}
|
||||
this.currentCartype = storage.get('carType') || '1001';
|
||||
const resp = await queryVip({ carTypeId: this.currentCartype, memberId: null, subject: '' });
|
||||
if (resp.code == '0000') {
|
||||
this.vipOnList = resp.data;
|
||||
}
|
||||
},
|
||||
// 查询所有的vip
|
||||
queryVipList() {
|
||||
this.currentCartype= storage.get('carType') || '1001'
|
||||
getVipList({ carTypeId: this.currentCartype,memberId: null, subject:'' }).then(resp => {
|
||||
if(resp.code == '0000') {
|
||||
this.vipAllList = resp.data
|
||||
this.currentCartype = storage.get('carType') || '1001';
|
||||
getVipList({ carTypeId: this.currentCartype, memberId: null, subject: '' }).then(resp => {
|
||||
if (resp.code == '0000') {
|
||||
this.vipAllList = resp.data;
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
export default useUserStore;
|
||||
|
||||
@@ -4,12 +4,15 @@
|
||||
<image style="width: 100%;height: 600rpx;" src="https://oss-bq.ahduima.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/vip%E9%A2%98%E5%BA%93_20230911211532.png"></image>
|
||||
<view style="margin-bottom: 100px;">
|
||||
<view class="flex jc-fa ai-c wp100 p14">
|
||||
<view style="width: 33.3%;" v-for="(item,index) of priceList" :key="index">
|
||||
<view class="option_tem relative" :class="checkedId===item.memberId?'checked_item':''" @click="checkPrice(item.memberId,item.price)">
|
||||
<text class="fw600 fs12 cor-333">{{item.memberName}}</text>
|
||||
<view class="mt5">
|
||||
<view style="width: 33.3%;" v-for="(item, index) of priceList" :key="index">
|
||||
<view class="option_tem relative" :class="checkedId === item.memberId ? 'checked_item' : ''" @click="checkPrice(item.memberId, item.price)">
|
||||
<text class="fw600 fs12 cor-333">{{ item.memberName }}</text>
|
||||
<view class="mt5" v-if="!isIOS">
|
||||
<text class="fs14" style="color: #FF6E02;">¥</text>
|
||||
<text class="fs30 fw600" style="color: #FF6E02;">{{item.price}}</text>
|
||||
<text class="fs30 fw600" style="color: #FF6E02;">{{ item.price }}</text>
|
||||
</view>
|
||||
<view v-else class="mt5">
|
||||
<text class="fs14" style="color: #FF6E02;">iOS暂不支持</text>
|
||||
</view>
|
||||
<text class="fs12 cor-999">一年有效</text>
|
||||
<!-- <view class="bottom_box fs12 cor-333" :class="checkedId===item.memberId?'checked_bottom':''">赠送vip题库</view> -->
|
||||
@@ -21,12 +24,12 @@
|
||||
</view>
|
||||
<view class="intr_box p14">
|
||||
<view class="fw600 fs16 cor-000">尊享以下权益</view>
|
||||
<view class="flex ai-c jc-sb mt15" v-if="subject=='1'||subject=='4'">
|
||||
<view class="flex ai-c jc-sb mt15" v-if="subject == '1' || subject == '4'">
|
||||
<view class="text-center" style="width: 33%">
|
||||
<view class="wp100 flex ai-c jc-c mb5">
|
||||
<image style="width: 63rpx;height: 63rpx;margin-right: 5px;" src="../../static/image/index/vip500.png"></image>
|
||||
</view>
|
||||
<text>精简{{titleNum}}题</text>
|
||||
<text>精简{{ titleNum }}题</text>
|
||||
</view>
|
||||
<view class="text-center" style="width: 33%;">
|
||||
<view class="wp100 flex ai-c jc-c mb5">
|
||||
@@ -59,14 +62,14 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="wp100 mt15" v-if="subject=='1'||subject=='4'">
|
||||
<view class="wp100 mt15" v-if="subject == '1' || subject == '4'">
|
||||
<image class="wp100" mode="widthFix" :src="picUrl"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="wp100 p14" style="position: absolute;left: 0;bottom:20px" @tap="handlePay()">
|
||||
<view v-if="!isIOS" class="wp100 p14" style="position: absolute;left: 0;bottom:20px" @tap="handlePay()">
|
||||
<view class="sub_btn flex ai-c jc-sb">
|
||||
<text class="cor-fff fs14">¥<text class="fs24 cor-fff">{{nowPrice}}</text></text>
|
||||
<text class="cor-fff fs14">¥<text class="fs24 cor-fff">{{ nowPrice }}</text></text>
|
||||
<image style="width: 276rpx;height: 88rpx;margin-top: -5px;" src="../../static/image/index/buy.png"></image>
|
||||
</view>
|
||||
</view>
|
||||
@@ -74,187 +77,197 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState,
|
||||
mapActions
|
||||
} from 'pinia' //引入映射函数
|
||||
import { getVipList } from '@/jtools/api/vip'
|
||||
import { querySysConfig } from '@/jtools/api/question';
|
||||
import storage from '@/jtools/storage';
|
||||
import Pay from '@/jtools/pay/index.js';
|
||||
import useUserStore from '@/jtools/store/user'
|
||||
export default {
|
||||
data(){
|
||||
return{
|
||||
picUrl:'',
|
||||
titleNum:500,
|
||||
subject:'1',
|
||||
loading:true,
|
||||
nowPrice:168,
|
||||
checkedId:0,
|
||||
priceList:[],
|
||||
order:{
|
||||
money:0,
|
||||
description:'会员充值'
|
||||
import {
|
||||
mapState,
|
||||
mapActions
|
||||
} from 'pinia' //引入映射函数
|
||||
import { getVipList } from '@/jtools/api/vip'
|
||||
import { querySysConfig } from '@/jtools/api/question';
|
||||
import storage from '@/jtools/storage';
|
||||
import Pay from '@/jtools/pay/index.js';
|
||||
import useUserStore from '@/jtools/store/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
picUrl: '',
|
||||
titleNum: 500,
|
||||
subject: '1',
|
||||
loading: true,
|
||||
nowPrice: 168,
|
||||
checkedId: 0,
|
||||
priceList: [],
|
||||
order: {
|
||||
money: 0,
|
||||
description: '会员充值'
|
||||
},
|
||||
isIOS: true
|
||||
}
|
||||
},
|
||||
onLoad(op) {
|
||||
this.isIOS = this.$platform.device().includes('ios')
|
||||
if (op.subject) {
|
||||
this.subject = op.subject
|
||||
}
|
||||
this.loading = true
|
||||
this.getVipList()
|
||||
this.getWXOpenId()
|
||||
this.getTitle()
|
||||
this.getPic()
|
||||
this.$set(this.order, 'userId', this.userInfo.userId);
|
||||
},
|
||||
computed: {
|
||||
...mapState(useUserStore, ["userInfo"])
|
||||
},
|
||||
methods: {
|
||||
getPic() {
|
||||
const currentCartype = storage.get('carType') || '1001'
|
||||
querySysConfig(currentCartype, 'VipDescImageUrl').then(res => {
|
||||
this.picUrl = JSON.parse(res.data.configJson).url
|
||||
})
|
||||
},
|
||||
getTitle() {
|
||||
const carId = storage.get('carType') || '1001'
|
||||
querySysConfig(carId, 'SimplifyQuestionNum').then(resp => {
|
||||
if (resp.code === '0000') {
|
||||
const list = JSON.parse(resp.data.configJson)
|
||||
this.titleNum = list.find(item => item.subject == this.subject).num
|
||||
}
|
||||
})
|
||||
},
|
||||
async handlePay() {
|
||||
if (this.loading) {
|
||||
this.loading = false
|
||||
await this.getWXOpenId()
|
||||
new Pay('wechat', this.order);
|
||||
this.loading = true
|
||||
}
|
||||
},
|
||||
onLoad(op){
|
||||
if(op.subject){
|
||||
this.subject=op.subject
|
||||
}
|
||||
this.loading=true
|
||||
this.getVipList()
|
||||
this.getWXOpenId()
|
||||
this.getTitle()
|
||||
this.getPic()
|
||||
this.$set(this.order, 'userId', this.userInfo.userId);
|
||||
getWXOpenId() {
|
||||
const that = this
|
||||
uni.login({
|
||||
success(res) {
|
||||
that.$set(that.order, 'code', res.code);
|
||||
}
|
||||
})
|
||||
},
|
||||
computed: {
|
||||
...mapState(useUserStore, ["userInfo"])
|
||||
},
|
||||
methods:{
|
||||
getPic(){
|
||||
const currentCartype = storage.get('carType') || '1001'
|
||||
querySysConfig(currentCartype, 'VipDescImageUrl').then(res => {
|
||||
this.picUrl = JSON.parse(res.data.configJson).url
|
||||
getVipList() {
|
||||
getVipList({
|
||||
carTypeId: storage.get('carType') || '1001',
|
||||
subject: this.subject
|
||||
}).then(resp => {
|
||||
if (resp.code === '0000') {
|
||||
this.priceList = resp.data
|
||||
this.checkedId = this.priceList[0].memberId
|
||||
this.order.outTradeNo = this.priceList[0].memberId
|
||||
this.order.money = this.priceList[0].price
|
||||
this.nowPrice = this.priceList[0].price
|
||||
this.priceList.forEach(item => {
|
||||
if (item.subjects.length > 1) {
|
||||
item.all = true
|
||||
}
|
||||
})
|
||||
},
|
||||
getTitle(){
|
||||
const carId=storage.get('carType') || '1001'
|
||||
querySysConfig(carId,'SimplifyQuestionNum').then(resp=>{
|
||||
if(resp.code==='0000'){
|
||||
const list = JSON.parse(resp.data.configJson)
|
||||
this.titleNum=list.find(item=>item.subject==this.subject).num
|
||||
}
|
||||
})
|
||||
},
|
||||
async handlePay(){
|
||||
if(this.loading){
|
||||
this.loading=false
|
||||
await this.getWXOpenId()
|
||||
new Pay('wechat', this.order);
|
||||
this.loading=true
|
||||
}
|
||||
},
|
||||
getWXOpenId() {
|
||||
const that = this
|
||||
uni.login({
|
||||
success(res) {
|
||||
that.$set(that.order, 'code', res.code);
|
||||
}
|
||||
})
|
||||
},
|
||||
getVipList(){
|
||||
getVipList({
|
||||
carTypeId: storage.get('carType') || '1001',
|
||||
subject:this.subject
|
||||
}).then(resp=>{
|
||||
if(resp.code==='0000'){
|
||||
this.priceList=resp.data
|
||||
this.checkedId=this.priceList[0].memberId
|
||||
this.order.outTradeNo=this.priceList[0].memberId
|
||||
this.order.money=this.priceList[0].price
|
||||
this.nowPrice=this.priceList[0].price
|
||||
this.priceList.forEach(item=>{
|
||||
if(item.subjects.length>1){
|
||||
item.all=true
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
checkPrice(val,price){
|
||||
this.checkedId=val
|
||||
this.order.outTradeNo=val
|
||||
this.nowPrice=price
|
||||
this.order.money=price
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
checkPrice(val, price) {
|
||||
this.checkedId = val
|
||||
this.order.outTradeNo = val
|
||||
this.nowPrice = price
|
||||
this.order.money = price
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.option_tem{
|
||||
width: 220rpx;
|
||||
height: 241rpx;
|
||||
text-align: center;
|
||||
background: #FFFFFF;
|
||||
border: 2px solid #D8D8D8;
|
||||
border-radius: 16rpx 46rpx 16rpx 16rpx;
|
||||
padding: 14px;
|
||||
}
|
||||
.checked_item{
|
||||
background: #FFF0E5;
|
||||
border: 4px solid #FF6E02;
|
||||
}
|
||||
.bottom_box{
|
||||
width: 214rpx;
|
||||
height: 40rpx;
|
||||
line-height: 40rpx;
|
||||
text-align: center;
|
||||
background: rgb(239,239,239);
|
||||
border-radius: 0 0 16rpx 16rpx;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
.checked_bottom{
|
||||
width: 218rpx;
|
||||
border-radius: 0 0 16rpx 5rpx;
|
||||
background-color: #FF6E02;
|
||||
color:#fff
|
||||
}
|
||||
.tag{
|
||||
padding:0 5px;
|
||||
height: 36rpx;
|
||||
background: linear-gradient(90deg, #E66501 0%, #F8A42C 100%);
|
||||
border-radius: 8rpx 20rpx 8rpx 8rpx;
|
||||
line-height: 36rpx;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
color: #FFFC27;
|
||||
position: absolute;
|
||||
left: 10rpx;
|
||||
top:-18rpx
|
||||
}
|
||||
.intr_box{
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding: 40rpx;
|
||||
background: #FFF0E5;
|
||||
border-radius: 16rpx;
|
||||
}
|
||||
.vip_item{
|
||||
width: 208rpx;
|
||||
height: 54rpx;
|
||||
line-height: 54rpx;
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
background: #F3D7C2;
|
||||
border-radius: 0rpx 10rpx 10rpx 10rpx;
|
||||
}
|
||||
.sub_btn{
|
||||
width:100%;
|
||||
height: 110rpx;
|
||||
border: 4px solid #F59B26;
|
||||
background: linear-gradient(0deg, #E66501 0%, #F8A42C 100%);
|
||||
box-shadow: 0rpx 16rpx 20rpx 1rpx rgba(245,155,38,0.78);
|
||||
border-radius: 55rpx;
|
||||
padding: 14rpx;
|
||||
}
|
||||
.contain-box {
|
||||
width: 344rpx;
|
||||
height: 196rpx;
|
||||
background: #00B74F;
|
||||
border-radius: 16rpx;
|
||||
}
|
||||
|
||||
.play_btn_2 {
|
||||
width: 65rpx;
|
||||
height: 65rpx;
|
||||
position: absolute;
|
||||
left: 165.5rpx;
|
||||
top: 78rpx
|
||||
}
|
||||
.option_tem {
|
||||
width: 220rpx;
|
||||
height: 241rpx;
|
||||
text-align: center;
|
||||
background: #FFFFFF;
|
||||
border: 2px solid #D8D8D8;
|
||||
border-radius: 16rpx 46rpx 16rpx 16rpx;
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.checked_item {
|
||||
background: #FFF0E5;
|
||||
border: 4px solid #FF6E02;
|
||||
}
|
||||
|
||||
.bottom_box {
|
||||
width: 214rpx;
|
||||
height: 40rpx;
|
||||
line-height: 40rpx;
|
||||
text-align: center;
|
||||
background: rgb(239, 239, 239);
|
||||
border-radius: 0 0 16rpx 16rpx;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.checked_bottom {
|
||||
width: 218rpx;
|
||||
border-radius: 0 0 16rpx 5rpx;
|
||||
background-color: #FF6E02;
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.tag {
|
||||
padding: 0 5px;
|
||||
height: 36rpx;
|
||||
background: linear-gradient(90deg, #E66501 0%, #F8A42C 100%);
|
||||
border-radius: 8rpx 20rpx 8rpx 8rpx;
|
||||
line-height: 36rpx;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
color: #FFFC27;
|
||||
position: absolute;
|
||||
left: 10rpx;
|
||||
top: -18rpx
|
||||
}
|
||||
|
||||
.intr_box {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding: 40rpx;
|
||||
background: #FFF0E5;
|
||||
border-radius: 16rpx;
|
||||
}
|
||||
|
||||
.vip_item {
|
||||
width: 208rpx;
|
||||
height: 54rpx;
|
||||
line-height: 54rpx;
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
background: #F3D7C2;
|
||||
border-radius: 0rpx 10rpx 10rpx 10rpx;
|
||||
}
|
||||
|
||||
.sub_btn {
|
||||
width: 100%;
|
||||
height: 110rpx;
|
||||
border: 4px solid #F59B26;
|
||||
background: linear-gradient(0deg, #E66501 0%, #F8A42C 100%);
|
||||
box-shadow: 0rpx 16rpx 20rpx 1rpx rgba(245, 155, 38, 0.78);
|
||||
border-radius: 55rpx;
|
||||
padding: 14rpx;
|
||||
}
|
||||
|
||||
.contain-box {
|
||||
width: 344rpx;
|
||||
height: 196rpx;
|
||||
background: #00B74F;
|
||||
border-radius: 16rpx;
|
||||
}
|
||||
|
||||
.play_btn_2 {
|
||||
width: 65rpx;
|
||||
height: 65rpx;
|
||||
position: absolute;
|
||||
left: 165.5rpx;
|
||||
top: 78rpx
|
||||
}
|
||||
</style>
|
||||
@@ -13,7 +13,7 @@
|
||||
<view class="list-call">
|
||||
<u-input class="sl-input" v-model="login.code" type="text" maxlength="6" border="none" placeholder="输入验证码">
|
||||
<template #suffix>
|
||||
<text class="fs14 mr10" style="color: #05C341;" @tap="getCode">{{countDown==0?'获取验证码':countDown}}</text>
|
||||
<text class="fs14 mr10" style="color: #05C341;" @tap="getCode">{{ countDown == 0 ? '获取验证码' : countDown }}</text>
|
||||
</template>
|
||||
</u-input>
|
||||
</view>
|
||||
@@ -27,138 +27,142 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
isPhone
|
||||
} from '@/jtools/utils/validate.js'
|
||||
import {
|
||||
getCode,
|
||||
login
|
||||
} from '@/jtools/api/login'
|
||||
import useUserStore from '@/jtools/store/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
login: {
|
||||
phone: '',
|
||||
code: ''
|
||||
},
|
||||
countDown: 0,
|
||||
js: undefined
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
if(useUserStore().isLogin) {
|
||||
this.toHome()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getCode() {
|
||||
if (isPhone(this.login.phone) && this.countDown == 0) {
|
||||
getCode({
|
||||
phone: this.login.phone
|
||||
}).then(resp => {
|
||||
// if (resp.code == '0000') {
|
||||
uni.showToast({
|
||||
title: '发送成功!',
|
||||
icon: 'none'
|
||||
})
|
||||
this.countDown = 60
|
||||
this.js = setInterval(() => {
|
||||
this.countDown--;
|
||||
if (this.countDown == 0) {
|
||||
this.clear()
|
||||
}
|
||||
}, 1000)
|
||||
// }
|
||||
import {
|
||||
isPhone
|
||||
} from '@/jtools/utils/validate.js'
|
||||
import {
|
||||
getCode,
|
||||
login
|
||||
} from '@/jtools/api/login'
|
||||
import useUserStore from '@/jtools/store/user'
|
||||
import storage from '@/jtools/storage';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
login: {
|
||||
phone: '',
|
||||
code: ''
|
||||
},
|
||||
countDown: 0,
|
||||
js: undefined
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
if (useUserStore().isLogin) {
|
||||
this.toHome()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getCode() {
|
||||
if (isPhone(this.login.phone) && this.countDown == 0) {
|
||||
getCode({
|
||||
phone: this.login.phone
|
||||
}).then(resp => {
|
||||
// if (resp.code == '0000') {
|
||||
uni.showToast({
|
||||
title: '发送成功!',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
},
|
||||
clear() {
|
||||
clearInterval(js)
|
||||
this.js = null
|
||||
this.countDown = 0
|
||||
},
|
||||
bindLogin() {
|
||||
if(isPhone(this.login.phone) && this.login.code) {
|
||||
useUserStore().login(this.login).then(resp => {
|
||||
if(resp.userId) {
|
||||
useUserStore().getUserInfo()
|
||||
useUserStore().searchUserVip()
|
||||
this.toHome()
|
||||
this.countDown = 60
|
||||
this.js = setInterval(() => {
|
||||
this.countDown--;
|
||||
if (this.countDown == 0) {
|
||||
this.clear()
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
toHome() {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
}, 1000)
|
||||
// }
|
||||
})
|
||||
}
|
||||
},
|
||||
clear() {
|
||||
clearInterval(js)
|
||||
this.js = null
|
||||
this.countDown = 0
|
||||
},
|
||||
bindLogin() {
|
||||
if (isPhone(this.login.phone) && this.login.code) {
|
||||
let params = { ...this.login }
|
||||
if (storage.get('companyId')) {
|
||||
params.id = storage.get('companyId')
|
||||
}
|
||||
useUserStore().login(params).then(resp => {
|
||||
if (resp.userId) {
|
||||
useUserStore().getUserInfo()
|
||||
useUserStore().searchUserVip()
|
||||
this.toHome()
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
toHome() {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
background-color: #fff;
|
||||
}
|
||||
page {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.header {
|
||||
margin-top: 166rpx;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
letter-spacing: 10rpx;
|
||||
}
|
||||
.header {
|
||||
margin-top: 166rpx;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
letter-spacing: 10rpx;
|
||||
}
|
||||
|
||||
.header image {
|
||||
width: 383rpx;
|
||||
}
|
||||
.header image {
|
||||
width: 383rpx;
|
||||
}
|
||||
|
||||
.list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: 120rpx;
|
||||
padding-left: 90rpx;
|
||||
padding-right: 90rpx;
|
||||
}
|
||||
.list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: 120rpx;
|
||||
padding-left: 90rpx;
|
||||
padding-right: 90rpx;
|
||||
}
|
||||
|
||||
.list-call {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 100rpx;
|
||||
color: #333333;
|
||||
border-bottom: 0.5px solid #e2e2e2;
|
||||
}
|
||||
.list-call {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 100rpx;
|
||||
color: #333333;
|
||||
border-bottom: 0.5px solid #e2e2e2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.list-call .sl-input {
|
||||
flex: 1;
|
||||
text-align: left;
|
||||
font-size: 32rpx;
|
||||
margin-left: 16rpx;
|
||||
}
|
||||
|
||||
.button-login {
|
||||
color: #FFFFFF;
|
||||
font-size: 34rpx;
|
||||
width: 560rpx;
|
||||
height: 100rpx;
|
||||
background: linear-gradient(90deg, #11DF20 0%, #00B74F 100%);
|
||||
border-radius: 50rpx;
|
||||
line-height: 100rpx;
|
||||
text-align: center;
|
||||
margin-top: 100rpx;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.list-call .sl-input {
|
||||
flex: 1;
|
||||
text-align: left;
|
||||
font-size: 32rpx;
|
||||
margin-left: 16rpx;
|
||||
}
|
||||
|
||||
.button-login {
|
||||
color: #FFFFFF;
|
||||
font-size: 34rpx;
|
||||
width: 560rpx;
|
||||
height: 100rpx;
|
||||
background: linear-gradient(90deg, #11DF20 0%, #00B74F 100%);
|
||||
border-radius: 50rpx;
|
||||
line-height: 100rpx;
|
||||
text-align: center;
|
||||
margin-top: 100rpx;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
</style>
|
||||
@@ -40,7 +40,7 @@
|
||||
<view v-if="!isLogin || !vipOn.length" class="text-center">
|
||||
<view class="fs18 fwb" style="color: #7E4012FF;">开通VIP尊享以下权益</view>
|
||||
<view class="fs15" style="color: #7E4012FF;">精选500题 / 真是模考 / 考前密卷</view>
|
||||
<view class="study fs16 text-center" style="margin: 25px auto 0;color: #F6E99FFF;">立即开通</view>
|
||||
<view class="study fs16 text-center" style="margin: 25px auto 0;color: #F6E99FFF;">{{ isIOS ? 'iOS暂不可用' : '立即开通' }}</view>
|
||||
</view>
|
||||
<view v-else-if="vipOn.length" class="text-center">
|
||||
<view class="fs18 fwb" style="color: #7E4012FF;">{{ vipText }}</view>
|
||||
@@ -135,26 +135,31 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
data(){
|
||||
return{
|
||||
carName:storage.get('carName') || '小车C1/C2/C3'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
carName: storage.get('carName') || '小车C1/C2/C3',
|
||||
isIOS: true
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.carName=storage.get('carName') || '小车C1/C2/C3'
|
||||
this.isIOS = this.$platform.device().includes('ios')
|
||||
this.carName = storage.get('carName') || '小车C1/C2/C3'
|
||||
},
|
||||
methods: {
|
||||
toChangeCarType(){
|
||||
uni.navigateTo({
|
||||
url:"/pages/me/changeCarType"
|
||||
})
|
||||
},
|
||||
toChangeCarType() {
|
||||
uni.navigateTo({
|
||||
url: "/pages/me/changeCarType"
|
||||
})
|
||||
},
|
||||
handleVip() {
|
||||
if (this.isIOS) {
|
||||
return
|
||||
}
|
||||
if (this.isLogin) {
|
||||
// if (this.vipOn.length) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/me/vip'
|
||||
})
|
||||
uni.navigateTo({
|
||||
url: '/pages/me/vip'
|
||||
})
|
||||
// } else {
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/index/videoVip'
|
||||
@@ -192,10 +197,10 @@ export default {
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/me/tijian'
|
||||
// })
|
||||
uni.showToast({
|
||||
title:'敬请期待',
|
||||
icon:'none'
|
||||
})
|
||||
uni.showToast({
|
||||
title: '敬请期待',
|
||||
icon: 'none'
|
||||
})
|
||||
} else {
|
||||
this.toLogin()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user