Compare commits
5 Commits
ae7e2bc17f
...
129b9808fb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
129b9808fb | ||
| d74abad722 | |||
| 90ffd2e4ff | |||
| b9d7228a90 | |||
| 1f6080aa01 |
@@ -1,7 +1,12 @@
|
|||||||
<script>
|
<script>
|
||||||
|
import useUserStore from '@/jtools/store/user'
|
||||||
export default {
|
export default {
|
||||||
onLaunch: function () {
|
onLaunch: function () {
|
||||||
console.log('App Launch')
|
useUserStore().queryVipList()
|
||||||
|
if(useUserStore().isLogin) {
|
||||||
|
useUserStore().getUserInfo()
|
||||||
|
useUserStore().searchUserVip()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onShow: function () {
|
onShow: function () {
|
||||||
console.log('App Show')
|
console.log('App Show')
|
||||||
|
|||||||
@@ -24,3 +24,10 @@ export function logout() {
|
|||||||
method: 'get',
|
method: 'get',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getInfo() {
|
||||||
|
return request({
|
||||||
|
url: 'driver-api/tdSysUser/info',
|
||||||
|
method: 'get',
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -7,3 +7,11 @@ export function queryVip(data) {
|
|||||||
data,
|
data,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getVipList(data) {
|
||||||
|
return request({
|
||||||
|
url: 'driver-api/tdMember/queryMember',
|
||||||
|
method: 'POST',
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -16,7 +16,7 @@ function service(options = {}) {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
options.header = {
|
options.header = {
|
||||||
Authorization: `Bearer ${token}`
|
Authorization: `${token}`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -34,7 +34,7 @@ function service(options = {}) {
|
|||||||
resolved(res.data);
|
resolved(res.data);
|
||||||
} else if(res.data.code != '0000') {
|
} else if(res.data.code != '0000') {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: resp.message,
|
title: res.data.message,
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
})
|
})
|
||||||
resolved(res.data)
|
resolved(res.data)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { defineStore } from 'pinia';
|
import { defineStore } from 'pinia';
|
||||||
import { login,logout } from '@/jtools/api/login';
|
import { login,logout,getInfo } from '@/jtools/api/login';
|
||||||
|
import { queryVip,getVipList } from '@/jtools/api/vip'
|
||||||
import constants from '@/jtools/constants';
|
import constants from '@/jtools/constants';
|
||||||
import storage from '@/jtools/storage';
|
import storage from '@/jtools/storage';
|
||||||
|
|
||||||
@@ -9,11 +10,13 @@ const useUserStore = defineStore({
|
|||||||
token: storage.get('token'),
|
token: storage.get('token'),
|
||||||
isLogin: storage.get('isLogin'), // 是否登陆
|
isLogin: storage.get('isLogin'), // 是否登陆
|
||||||
userInfo: storage.get('userInfo'), // 用户信息
|
userInfo: storage.get('userInfo'), // 用户信息
|
||||||
|
currentCartype: storage.get('carType') || '1001',
|
||||||
|
vipOnList: [],
|
||||||
|
vipAllList: []
|
||||||
}),
|
}),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
login(params) {
|
login(params) {
|
||||||
// commit('isLogin', true);
|
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve, reject) => {
|
||||||
const resp = await login(params);
|
const resp = await login(params);
|
||||||
if (resp.code === '0000') {
|
if (resp.code === '0000') {
|
||||||
@@ -40,13 +43,39 @@ const useUserStore = defineStore({
|
|||||||
resolve();
|
resolve();
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
// 获取用户信息
|
||||||
|
getUserInfo() {
|
||||||
|
getInfo().then(resp => {
|
||||||
|
if(resp.code == '0000') {
|
||||||
|
this.userInfo = resp.data
|
||||||
|
storage.set('userInfo', resp.data)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
resetUserData() {
|
resetUserData() {
|
||||||
this.isLogin = false;
|
this.isLogin = false;
|
||||||
this.token = '';
|
this.token = '';
|
||||||
this.userInfo = {}
|
this.userInfo = {}
|
||||||
|
this.vipOnList = []
|
||||||
storage.remove('isLogin')
|
storage.remove('isLogin')
|
||||||
storage.remove('token')
|
storage.remove('token')
|
||||||
storage.remove('userInfo')
|
storage.remove('userInfo')
|
||||||
|
},
|
||||||
|
// 查询当前用户的vip开通情况
|
||||||
|
searchUserVip() {
|
||||||
|
queryVip({ carTypeId: this.currentCartype,memberId: null, subject:'' }).then(resp => {
|
||||||
|
if(resp.code == '0000') {
|
||||||
|
this.vipOnList = resp.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 查询所有的vip
|
||||||
|
queryVipList() {
|
||||||
|
getVipList({ carTypeId: this.currentCartype,memberId: null, subject:'' }).then(resp => {
|
||||||
|
if(resp.code == '0000') {
|
||||||
|
this.vipAllList = resp.data
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -110,7 +110,21 @@
|
|||||||
"navigationBarTitleText": "登录",
|
"navigationBarTitleText": "登录",
|
||||||
"enablePullDownRefresh": false
|
"enablePullDownRefresh": false
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/index/iconSkill",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "图标技巧",
|
||||||
|
"enablePullDownRefresh": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/questionBank/chapterExercise",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "章节练习",
|
||||||
|
"enablePullDownRefresh": false
|
||||||
|
}
|
||||||
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
"globalStyle": {
|
"globalStyle": {
|
||||||
|
|||||||
18
src/pages/index/iconSkill.vue
Normal file
18
src/pages/index/iconSkill.vue
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<web-view :src="webviewPath"></web-view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return{
|
||||||
|
webviewPath:'https://jtbz.ahduima.com/index'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
</style>
|
||||||
@@ -104,6 +104,7 @@
|
|||||||
width: 218rpx;
|
width: 218rpx;
|
||||||
border-radius: 0 0 16rpx 12rpx;
|
border-radius: 0 0 16rpx 12rpx;
|
||||||
background-color: #FF6E02;
|
background-color: #FF6E02;
|
||||||
|
color:#fff
|
||||||
}
|
}
|
||||||
.tag{
|
.tag{
|
||||||
width: 122rpx;
|
width: 122rpx;
|
||||||
|
|||||||
@@ -57,19 +57,19 @@
|
|||||||
getCode({
|
getCode({
|
||||||
phone: this.login.phone
|
phone: this.login.phone
|
||||||
}).then(resp => {
|
}).then(resp => {
|
||||||
if (resp.code == '0000') {
|
// if (resp.code == '0000') {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '发送成功!',
|
title: '发送成功!',
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
})
|
})
|
||||||
this.countDown = 60
|
this.countDown = 60
|
||||||
this.js = setInterval(() => {
|
this.js = setInterval(() => {
|
||||||
this.countDown;
|
this.countDown--;
|
||||||
if (this.countDown == 0) {
|
if (this.countDown == 0) {
|
||||||
this.clear()
|
this.clear()
|
||||||
}
|
}
|
||||||
}, 1000)
|
}, 1000)
|
||||||
}
|
// }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<view class="ml12">
|
<view class="ml12">
|
||||||
<view class="flex ai-c fs18 cor-333 fwb">
|
<view class="flex ai-c fs18 cor-333 fwb">
|
||||||
<text class="mr10">{{ user.userName }}{{user.userId}}</text>
|
<text class="mr10">{{ user.userName }}{{user.userId}}</text>
|
||||||
<image src="/static/image/mine/vip.png" mode="widthFix" style="width: 18px;"></image>
|
<image v-if="vipOn.length" src="/static/image/mine/vip.png" mode="widthFix" style="width: 18px;"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="mt5 fs14 cor-666">陪您学车 第{{ user.count }}天</view>
|
<view class="mt5 fs14 cor-666">陪您学车 第{{ user.count }}天</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -26,47 +26,52 @@
|
|||||||
<view class="p15lr" style="transform: translateY(-90px);">
|
<view class="p15lr" style="transform: translateY(-90px);">
|
||||||
<view class="relative mb10" @tap="handleVip">
|
<view class="relative mb10" @tap="handleVip">
|
||||||
<image src="/static/image/mine/vip_bg.png" mode="widthFix" style="width: 100%;"></image>
|
<image src="/static/image/mine/vip_bg.png" mode="widthFix" style="width: 100%;"></image>
|
||||||
<view class="absolute p15lr p10tb flex ai-c jc-sb" style="left: 0;top: 0;right: 0;height: 40px;">
|
<view class="absolute p15lr p10tb flex ai-c jc-sb" style="left: 0;top: 0;right: 0;height: 40px;">
|
||||||
<view class="flex ai-c">
|
<view class="flex ai-c">
|
||||||
<view class="p3 br-p50" style="background-color: #873E1D;">
|
<view class="p3 br-p50" style="background-color: #873E1D;">
|
||||||
<image src="/static/image/mine/vip.png" mode="widthFix" style="width: 18px;height: 15px;"></image>
|
<image src="/static/image/mine/vip.png" mode="widthFix" style="width: 18px;height: 15px;"></image>
|
||||||
</view>
|
</view>
|
||||||
<text class="ml5 fs16 fwb" style="color: #7E4012FF;">VIP会员</text>
|
<text class="ml5 fs16 fwb" style="color: #7E4012FF;">VIP会员</text>
|
||||||
</view>
|
</view>
|
||||||
<text class="fs12" style="color: #7E4012FF;">2024-12-12到期</text>
|
<text v-if="vipOn.length" class="fs12" style="color: #7E4012FF;">{{expireTime}}到期</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="absolute flex ai-c jc-c" style="left: 0;top: 40px;right: 0;bottom: 0;">
|
<view class="absolute flex ai-c jc-c" style="left: 0;top: 40px;right: 0;bottom: 0;">
|
||||||
<view class="text-center">
|
<view class="text-center">
|
||||||
<view class="fs18 fwb" style="color: #7E4012FF;">尊享科目一二三四全部付费权益</view>
|
<view v-if="vipOn.length" class="fs18 fwb" style="color: #7E4012FF;">{{vipText}}</view>
|
||||||
<view class="study fs16 text-center" style="margin: 25px auto 0;color: #F6E99FFF;">
|
<view class="study fs16 text-center" style="margin: 25px auto 0;color: #F6E99FFF;">
|
||||||
马上学习
|
{{ vipOn.length?'马上学习':'开通会员'}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="br8 bc-fff p15 z-index2">
|
<view class="br8 bc-fff p15 z-index2">
|
||||||
<text class="fs16 cor-333">我的驾校</text>
|
<text class="fs16 cor-333">我的驾校</text>
|
||||||
<div class="mt12 flex ai-c jc-sb">
|
<view v-if="user.schoolId">
|
||||||
<text class="fs18 cor-000 fwb">合肥八一驾校</text>
|
<div class="mt12 flex ai-c jc-sb">
|
||||||
<u-button text="切换驾校" shape="circle" @click="handleChangeSchool"></u-button>
|
<text class="fs18 cor-000 fwb">{{user.schoolName}}</text>
|
||||||
</div>
|
<u-button text="切换驾校" shape="circle" @click="handleChangeSchool"></u-button>
|
||||||
<u-line margin="14px 0 18px 0"></u-line>
|
</div>
|
||||||
<view class="flex ai-c" @tap="handleCallPhone">
|
<u-line margin="14px 0 18px 0"></u-line>
|
||||||
<view class="flex ai-c jc-c phone">
|
<view class="flex ai-c" @tap="handleCallPhone">
|
||||||
<img src="/static/image/mine/phone.png" style="width: 12px;height: 12px;">
|
<view class="flex ai-c jc-c phone">
|
||||||
<text class="ml2 fs12 cor-fff">客服热线</text>
|
<img src="/static/image/mine/phone.png" style="width: 12px;height: 12px;">
|
||||||
|
<text class="ml2 fs12 cor-fff">客服热线</text>
|
||||||
|
</view>
|
||||||
|
<text class="ml5 fs26 cor-333 fwb" style="line-height: 26px;">{{user.schoolPhone}}</text>
|
||||||
</view>
|
</view>
|
||||||
<text class="ml5 fs26 cor-333 fwb" style="line-height: 26px;">0551-12345678</text>
|
</view>
|
||||||
|
<view v-else class="pt30 pb15">
|
||||||
|
<u-button text="绑定驾校" shape="circle" @click="handleChangeSchool"></u-button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="mt12 bc-fff br8">
|
<view class="mt12 bc-fff br8">
|
||||||
<u-cell-group>
|
<u-cell-group>
|
||||||
<u-cell size="large" title="我的资料" value="修改" isLink @tap="handleInfo">
|
<u-cell size="large" title="我的资料" isLink @tap="handleInfo">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<img src="/static/image/mine/wdzl.png" style="width: 24px;height: 24px;">
|
<img src="/static/image/mine/wdzl.png" style="width: 24px;height: 24px;">
|
||||||
</template>
|
</template>
|
||||||
</u-cell>
|
</u-cell>
|
||||||
<u-cell size="large" title="我的体检" value="查看报告" isLink @tap="handleTJ">
|
<u-cell size="large" title="我的体检" isLink @tap="handleTJ">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<img src="/static/image/mine/wdtj.png" style="width: 24px;height: 24px;">
|
<img src="/static/image/mine/wdtj.png" style="width: 24px;height: 24px;">
|
||||||
</template>
|
</template>
|
||||||
@@ -78,7 +83,7 @@
|
|||||||
</u-cell>
|
</u-cell>
|
||||||
</u-cell-group>
|
</u-cell-group>
|
||||||
</view>
|
</view>
|
||||||
<view class="flex ai-c jc-c mt12 br8 bc-fff" style="height: 50px;" @tap="handleLogout">
|
<view v-if="isLogin" class="flex ai-c jc-c mt12 br8 bc-fff" style="height: 50px;" @tap="handleLogout">
|
||||||
<text class="fs16" style="color: #A09F9F;">退出登录</text>
|
<text class="fs16" style="color: #A09F9F;">退出登录</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -86,7 +91,6 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import useUserStore from '@/jtools/store/user'
|
import useUserStore from '@/jtools/store/user'
|
||||||
import { queryVip } from '@/jtools/api/vip'
|
|
||||||
export default {
|
export default {
|
||||||
components: {},
|
components: {},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -94,7 +98,36 @@ export default {
|
|||||||
return useUserStore().isLogin
|
return useUserStore().isLogin
|
||||||
},
|
},
|
||||||
user() {
|
user() {
|
||||||
return useUserStore().userInfo
|
let userInfo = useUserStore().userInfo
|
||||||
|
return { ...userInfo, count: this.dateDiff(userInfo.createTime) }
|
||||||
|
},
|
||||||
|
vipOn() {
|
||||||
|
return useUserStore().vipOnList
|
||||||
|
},
|
||||||
|
expireTime() {
|
||||||
|
if(this.vipOn.length) {
|
||||||
|
const t = this.vipOn.reduce((pre, cur) => {
|
||||||
|
if(Date.parse(pre) > Date.parse(cur.endDate)) {
|
||||||
|
return cur.endDate
|
||||||
|
}
|
||||||
|
return pre
|
||||||
|
}, '2099-12-31')
|
||||||
|
return t.split(' ')[0]
|
||||||
|
}else {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
vipText() {
|
||||||
|
if(this.vipOn.length) {
|
||||||
|
const t = this.vipOn.reduce((pre, cur) => {
|
||||||
|
return [...pre, ...cur.subjects.split(',').map(it =>['','一','二','三','四'][it])]
|
||||||
|
}, [])
|
||||||
|
let val = Array.from(new Set(t))
|
||||||
|
val = val.length == 4 ? val.join('')+'全部':val.join('')
|
||||||
|
return `尊享科目${val}付费权益`
|
||||||
|
}else {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -102,30 +135,36 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
this.searchVip()
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
searchVip() {
|
|
||||||
queryVip().then(resp => {
|
|
||||||
if(resp.code == '0000') {
|
|
||||||
debugger
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleVip() {
|
handleVip() {
|
||||||
uni.navigateTo({
|
if(this.isLogin) {
|
||||||
url: '/pages/me/vip'
|
if(this.vipOn.length) {
|
||||||
})
|
uni.navigateTo({
|
||||||
|
url: '/pages/me/vip'
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/index/videoVip'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.toLogin()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
handleCallPhone() {
|
handleCallPhone() {
|
||||||
uni.makePhoneCall({
|
uni.makePhoneCall({
|
||||||
phoneNumber: '17318531354'
|
phoneNumber: this.user.schoolPhone
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleChangeSchool() {
|
handleChangeSchool() {
|
||||||
uni.navigateTo({
|
if(this.isLogin) {
|
||||||
url: '/pages/me/school'
|
uni.navigateTo({
|
||||||
})
|
url: '/pages/me/school'
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.toLogin()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
handleInfo() {
|
handleInfo() {
|
||||||
if(this.isLogin) {
|
if(this.isLogin) {
|
||||||
@@ -152,7 +191,20 @@ export default {
|
|||||||
},
|
},
|
||||||
handleLogout() {
|
handleLogout() {
|
||||||
useUserStore().logout()
|
useUserStore().logout()
|
||||||
}
|
},
|
||||||
|
dateDiff(end){
|
||||||
|
if(!end) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
today = new Date();
|
||||||
|
end = new Date(end);
|
||||||
|
if(end > today){
|
||||||
|
days = parseInt(Math.abs(end - today) / 1000 / 60 / 60 / 24);
|
||||||
|
}else{
|
||||||
|
days = parseInt(Math.abs(end - today) / 1000 / 60 / 60 / 24); // 如果不限制对比时间和当前时间大小可以不用if
|
||||||
|
}
|
||||||
|
return days + 1;
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
42
src/pages/questionBank/chapterExercise.vue
Normal file
42
src/pages/questionBank/chapterExercise.vue
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<view class="chapter_item p14" v-for="(item,index) of chapterList" :key="index" @tap="toQuestion">
|
||||||
|
{{item.label}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
chapterList:[
|
||||||
|
{label:'驾驶证申请相关'},
|
||||||
|
{label:'驾驶证申请相关'},
|
||||||
|
{label:'驾驶证登记处罚'},
|
||||||
|
{label:'机动车强制报废'},
|
||||||
|
{label:'其他考点'},
|
||||||
|
{label:'驾驶证登记处罚'},
|
||||||
|
{label:'机动车强制报废'},
|
||||||
|
{label:'其他考点'}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
toQuestion(){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:"/pages/questionBank/questionBank?navTitle="+章节技巧
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.chapter_item{
|
||||||
|
border-bottom: 1px solid rgb(210,209,214);
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
.chapter_item:hover{
|
||||||
|
background-color: rgb(210,209,214);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
</scroll-view>
|
</scroll-view>
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
</swiper>
|
</swiper>
|
||||||
<view class="wp100 flex jc-sb ai-c p14 bc-fff" style="position: fixed;bottom: 0;left: 0;">
|
<view class="wp100 flex jc-sb ai-c p14 bc-fff" v-if="isShowAll" style="position: fixed;bottom: 0;left: 0;">
|
||||||
<view style="width: 220rpx;">
|
<view style="width: 220rpx;">
|
||||||
<button v-if="type==='practice'" class="btn">四步学科一</button>
|
<button v-if="type==='practice'" class="btn">四步学科一</button>
|
||||||
<view v-else class="btn" style="text-align: center;" @tap="submitPaper">
|
<view v-else class="btn" style="text-align: center;" @tap="submitPaper">
|
||||||
@@ -65,6 +65,9 @@
|
|||||||
<text class="cor-666">题板</text>
|
<text class="cor-666">题板</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
<view v-else class="wp100 p14" style="position: fixed;bottom: 30rpx;left: 0;">
|
||||||
|
<button class="vip_btn" @click="toVip">立即查看全部题目</button>
|
||||||
|
</view>
|
||||||
<u-modal :show="tipShow">
|
<u-modal :show="tipShow">
|
||||||
<view class="relative wp100">
|
<view class="relative wp100">
|
||||||
<view class="text-center">
|
<view class="text-center">
|
||||||
@@ -149,10 +152,41 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</u-popup>
|
</u-popup>
|
||||||
</view>
|
<u-popup :show="showVip" mode="bottom" :closeOnClickOverlay="true" :round="16" @close="showVip=false">
|
||||||
|
<view class="p14" style="z-index: 9;">
|
||||||
|
<view class="wp100 flex ai-c jc-sb">
|
||||||
|
<text class="fs30 fw600 cor-000">VIP题库</text>
|
||||||
|
<u-icon name="close" color="#c2c2c2" size="20" @tap="showVip=false"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text class="fs16 cor-666">精准刷题,更高效</text>
|
||||||
|
<view style="width:100%;height: 110rpx;background-image: url(../../static/image/practice/vip_question.png);background-size: 100% 100%;" class="mt15 relative">
|
||||||
|
<view style="position: absolute;left:0,top:0;height: 110rpx;" class="wp100 flex jc-c ai-c">
|
||||||
|
<text class="fs16" style="color: #994800;">科一+科四精简500题</text>
|
||||||
|
</view>
|
||||||
|
<image style="width: 65rpx;height: 65rpx; position: absolute;right: 20px;top: -5px;" src="../../static/image/practice/vip_include.png"></image>
|
||||||
|
</view>
|
||||||
|
<view style="width:100%;height: 110rpx;background-image: url(../../static/image/practice/vip_test.png);background-size: 100% 100%;z-index: 9;" class="mt15 relative">
|
||||||
|
<view style="position: absolute;left:0,top:0;height: 110rpx;" class="wp100 flex jc-c ai-c">
|
||||||
|
<text class="fs16" style="color: #994800;">科一+科四考前密卷2套</text>
|
||||||
|
</view>
|
||||||
|
<image style="width: 65rpx;height: 65rpx; position: absolute;right: 20px;top: -5px;" src="../../static/image/practice/vip_include.png"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="height: 528rpx;width: 100%;background-image: url(../../static/image/practice/vip_bg.png);background-size: 100% 100%;margin-top: -65px;position: relative;">
|
||||||
|
<text style="position: absolute;top: 138px;left:100px;rotate: 16deg;" class="fs25 cor-fff">VIP题库</text>
|
||||||
|
</view>
|
||||||
|
<view class="wp100 p14" style="position: absolute;left: 0;bottom:20px">
|
||||||
|
<view class="sub_btn flex ai-c jc-sb">
|
||||||
|
<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>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import storage from '@/jtools/storage';
|
||||||
export default {
|
export default {
|
||||||
props:{
|
props:{
|
||||||
tabsList:{
|
tabsList:{
|
||||||
@@ -165,10 +199,16 @@ export default {
|
|||||||
isSubmit:{
|
isSubmit:{
|
||||||
type:Boolean,
|
type:Boolean,
|
||||||
default:false
|
default:false
|
||||||
|
},
|
||||||
|
isShowAll:{
|
||||||
|
type:Boolean,
|
||||||
|
default:true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
nowPrice:68,
|
||||||
|
showVip:false,
|
||||||
popupShow:false,
|
popupShow:false,
|
||||||
content:'太棒啦,已答完最后一题~',
|
content:'太棒啦,已答完最后一题~',
|
||||||
tipShow:false,
|
tipShow:false,
|
||||||
@@ -178,6 +218,7 @@ export default {
|
|||||||
qIndex:0,
|
qIndex:0,
|
||||||
rightList:[],
|
rightList:[],
|
||||||
wrongList:[],
|
wrongList:[],
|
||||||
|
collectList:storage.get('collectList') || [],
|
||||||
questionList: [],//数据源
|
questionList: [],//数据源
|
||||||
swiperList: [], // 轮播图数据列表
|
swiperList: [], // 轮播图数据列表
|
||||||
swiperIndex: 0, // 轮播图当前位置
|
swiperIndex: 0, // 轮播图当前位置
|
||||||
@@ -191,6 +232,10 @@ export default {
|
|||||||
this.renderSwiper(0)
|
this.renderSwiper(0)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
//开通VIP
|
||||||
|
toVip(){
|
||||||
|
this.showVip=true
|
||||||
|
},
|
||||||
submitPaper(){
|
submitPaper(){
|
||||||
this.$refs.countDown_1.pause();
|
this.$refs.countDown_1.pause();
|
||||||
this.$refs.countDown_2.pause();
|
this.$refs.countDown_2.pause();
|
||||||
@@ -222,18 +267,24 @@ export default {
|
|||||||
},
|
},
|
||||||
toCollect(){
|
toCollect(){
|
||||||
if(this.questionList[this.topicIndex].isCollect){
|
if(this.questionList[this.topicIndex].isCollect){
|
||||||
|
if(this.collectList.includes(this.questionList[this.topicIndex].questionId)){
|
||||||
|
const idx=this.collectList.indexOf(this.questionList[this.topicIndex].questionId)
|
||||||
|
this.collectList.splice(idx,1)
|
||||||
|
}
|
||||||
this.questionList[this.topicIndex].isCollect=false
|
this.questionList[this.topicIndex].isCollect=false
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title:"取消收藏",
|
title:"取消收藏",
|
||||||
icon:'none'
|
icon:'none'
|
||||||
})
|
})
|
||||||
}else{
|
}else{
|
||||||
|
this.collectList.push(this.questionList[this.topicIndex].questionId)
|
||||||
this.questionList[this.topicIndex].isCollect=true
|
this.questionList[this.topicIndex].isCollect=true
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title:"已收藏",
|
title:"已收藏",
|
||||||
icon:'none'
|
icon:'none'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
storage.set('collectList',this.collectList)
|
||||||
},
|
},
|
||||||
cancel(){
|
cancel(){
|
||||||
this.tipShow=false
|
this.tipShow=false
|
||||||
@@ -292,8 +343,13 @@ export default {
|
|||||||
// 轮播图动画结束
|
// 轮播图动画结束
|
||||||
onAnimationfinish(e) {
|
onAnimationfinish(e) {
|
||||||
if(this.index>=this.questionList.length){
|
if(this.index>=this.questionList.length){
|
||||||
this.tipShow=true
|
if(this.isShowAll){
|
||||||
|
this.tipShow=true
|
||||||
|
}else{
|
||||||
|
this.showVip=true
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
|
this.showVip=false
|
||||||
this.tipShow=false
|
this.tipShow=false
|
||||||
}
|
}
|
||||||
if (!this.isChange) return;
|
if (!this.isChange) return;
|
||||||
@@ -321,7 +377,7 @@ export default {
|
|||||||
}
|
}
|
||||||
console.log(this.rightList);
|
console.log(this.rightList);
|
||||||
if(this.wrongList.includes(this.questionList[this.topicIndex].questionId)){
|
if(this.wrongList.includes(this.questionList[this.topicIndex].questionId)){
|
||||||
const wIndex=this.wrongList.findIndex(this.questionList[this.topicIndex].questionId)
|
const wIndex=this.wrongList.indexOf(this.questionList[this.topicIndex].questionId)
|
||||||
this.wrongList.splice(wIndex,1)
|
this.wrongList.splice(wIndex,1)
|
||||||
}
|
}
|
||||||
if(this.topicIndex<this.questionList.length-1){
|
if(this.topicIndex<this.questionList.length-1){
|
||||||
@@ -766,4 +822,23 @@ export default {
|
|||||||
.content{
|
.content{
|
||||||
padding-top: calc(var(--window-top) + 10px);
|
padding-top: calc(var(--window-top) + 10px);
|
||||||
}
|
}
|
||||||
|
.vip_btn{
|
||||||
|
width:100%;
|
||||||
|
height: 100rpx;
|
||||||
|
line-height: 100rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 18px;
|
||||||
|
color:#fff;
|
||||||
|
background: linear-gradient(90deg, #FF9804 0%, #E95B0E 100%);
|
||||||
|
border-radius: 50rpx;
|
||||||
|
}
|
||||||
|
.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;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="p14">
|
<view class="p14">
|
||||||
<view class="flex jc-sb">
|
<view class="flex jc-sb">
|
||||||
<view class="relative mr5">
|
<view class="relative mr5" @tap="toIconSkill">
|
||||||
<image style="width: 336rpx;height: 152rpx;" src="../../static/image/practice/errorprone_bg.png">
|
<image style="width: 336rpx;height: 152rpx;" src="../../static/image/practice/errorprone_bg.png">
|
||||||
</image>
|
</image>
|
||||||
<view style="position: absolute;left: 0;top: 0;" class="p10">
|
<view style="position: absolute;left: 0;top: 0;" class="p10">
|
||||||
<view style="color: #04B13B;font-size: 18px;">图表技巧</view>
|
<view style="color: #04B13B;font-size: 18px;">图标技巧</view>
|
||||||
<text style="color: #04B13B;font-size: 14px;">快速记忆</text>
|
<text style="color: #04B13B;font-size: 14px;">快速记忆</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="relative ml5">
|
<view class="relative ml5" @tap="toChapterSkill">
|
||||||
<image style="width: 363rpx;height: 170rpx;" src="../../static/image/practice/chapter_bg.png"></image>
|
<image style="width: 363rpx;height: 170rpx;" src="../../static/image/practice/chapter_bg.png"></image>
|
||||||
<view style="position: absolute;left: 0;top: 0;" class="p10">
|
<view style="position: absolute;left: 0;top: 0;" class="p10">
|
||||||
<view style="color: #FF6E02;font-size: 18px;">章节练习</view>
|
<view style="color: #FF6E02;font-size: 18px;">章节练习</view>
|
||||||
@@ -92,6 +92,16 @@
|
|||||||
url:"/pages/questionBank/questionBank?navTitle="+title
|
url:"/pages/questionBank/questionBank?navTitle="+title
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
toIconSkill(){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:"/pages/index/iconSkill"
|
||||||
|
})
|
||||||
|
},
|
||||||
|
toChapterSkill(){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:"/pages/questionBank/chapterExercise"
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
<!-- <u-navbar :title="navTitle" @rightClick="rightClick" :autoBack="true">
|
<!-- <u-navbar :title="navTitle" @rightClick="rightClick" :autoBack="true">
|
||||||
</u-navbar> -->
|
</u-navbar> -->
|
||||||
<j-navbar>{{navTitle}}</j-navbar>
|
<j-navbar>{{navTitle}}</j-navbar>
|
||||||
<Question :tabsList="tabsList" />
|
<Question :tabsList="tabsList" :isShowAll="true" />
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {
|
import {
|
||||||
@@ -41,11 +41,11 @@
|
|||||||
methods: {
|
methods: {
|
||||||
rightClick() {
|
rightClick() {
|
||||||
console.log('返回');
|
console.log('返回');
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style scoped>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
BIN
src/static/image/practice/vip_bg.png
Normal file
BIN
src/static/image/practice/vip_bg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 MiB |
BIN
src/static/image/practice/vip_include.png
Normal file
BIN
src/static/image/practice/vip_include.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
BIN
src/static/image/practice/vip_question.png
Normal file
BIN
src/static/image/practice/vip_question.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 51 KiB |
BIN
src/static/image/practice/vip_test.png
Normal file
BIN
src/static/image/practice/vip_test.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
Reference in New Issue
Block a user