Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a684d255d2 | ||
|
|
70fe0f0c42 | ||
|
|
62896b197d | ||
|
|
9b677ade15 | ||
|
|
4bd08bde70 | ||
|
|
e889c92d35 | ||
|
|
7442289a87 | ||
|
|
d70a0141cc | ||
|
|
459baca3f8 | ||
| f5c0df688c | |||
|
|
38cc93cba4 | ||
| ccef999bbe | |||
| 589eec1d80 | |||
| 242744c0f9 | |||
| e67e1edf12 | |||
| 8f50f42f8c | |||
| 65149c38cd | |||
| c26e306b3a | |||
| 6141270437 | |||
|
|
074b53f307 | ||
|
|
ab05529015 | ||
| 9e24edad28 | |||
| 67b3e63de9 |
@@ -6,5 +6,8 @@ VITE_APP_ENV = 'development'
|
|||||||
|
|
||||||
# 金武联驾校/开发环境
|
# 金武联驾校/开发环境
|
||||||
VITE_APP_BASE_API = 'https://jwl.ahduima.com/'
|
VITE_APP_BASE_API = 'https://jwl.ahduima.com/'
|
||||||
|
# VITE_APP_BASE_API = 'http://tk-api.ahfkbg.com/'
|
||||||
#
|
#
|
||||||
VITE_WEB_BASE_URL = 'https://jwl.ahduima.com'
|
VITE_WEB_BASE_URL = 'https://jwl.ahduima.com'
|
||||||
|
# 资源地址
|
||||||
|
VITE_RESOURSE_URL = 'http://huodong.ahduima.com'
|
||||||
@@ -9,3 +9,6 @@ VITE_APP_BASE_API = 'https://jwl.ahduima.com/'
|
|||||||
|
|
||||||
#
|
#
|
||||||
VITE_WEB_BASE_URL = 'https://jwl.ahduima.com'
|
VITE_WEB_BASE_URL = 'https://jwl.ahduima.com'
|
||||||
|
|
||||||
|
# 资源地址
|
||||||
|
VITE_RESOURSE_URL = 'http://huodong.ahduima.com'
|
||||||
@@ -4,8 +4,10 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev:h5": "uni",
|
"dev:h5": "uni",
|
||||||
"dev": "uni -p mp-weixin",
|
"dev": "uni -p mp-weixin",
|
||||||
|
"dev:dy": "uni -p mp-toutiao",
|
||||||
"build:h5": "uni build",
|
"build:h5": "uni build",
|
||||||
"build": "uni build -p mp-weixin",
|
"build": "uni build -p mp-weixin",
|
||||||
|
"build:dy": "uni build -p mp-toutiao",
|
||||||
"build-test:mp-weixin": "uni --mode test -p mp-weixin"
|
"build-test:mp-weixin": "uni --mode test -p mp-weixin"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -14,6 +16,7 @@
|
|||||||
"@dcloudio/uni-components": "3.0.0-alpha-3060420220922001",
|
"@dcloudio/uni-components": "3.0.0-alpha-3060420220922001",
|
||||||
"@dcloudio/uni-h5": "3.0.0-alpha-3060420220922001",
|
"@dcloudio/uni-h5": "3.0.0-alpha-3060420220922001",
|
||||||
"@dcloudio/uni-mp-weixin": "3.0.0-alpha-3060420220922001",
|
"@dcloudio/uni-mp-weixin": "3.0.0-alpha-3060420220922001",
|
||||||
|
"@dcloudio/uni-mp-toutiao": "3.0.0-alpha-3060420220922001",
|
||||||
"jsencrypt-plus": "^0.1.0",
|
"jsencrypt-plus": "^0.1.0",
|
||||||
"pinia": "2.0.36",
|
"pinia": "2.0.36",
|
||||||
"pinia-plugin-persist-uni": "^1.2.0",
|
"pinia-plugin-persist-uni": "^1.2.0",
|
||||||
|
|||||||
28
project.config.json
Normal file
28
project.config.json
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"appid": "wx24c1b58020a5ce66",
|
||||||
|
"compileType": "miniprogram",
|
||||||
|
"libVersion": "3.3.3",
|
||||||
|
"packOptions": {
|
||||||
|
"ignore": [],
|
||||||
|
"include": []
|
||||||
|
},
|
||||||
|
"setting": {
|
||||||
|
"coverView": true,
|
||||||
|
"es6": true,
|
||||||
|
"postcss": true,
|
||||||
|
"minified": true,
|
||||||
|
"enhance": true,
|
||||||
|
"showShadowRootInWxmlPanel": true,
|
||||||
|
"packNpmRelationList": [],
|
||||||
|
"babelSetting": {
|
||||||
|
"ignore": [],
|
||||||
|
"disablePlugins": [],
|
||||||
|
"outputPath": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"condition": {},
|
||||||
|
"editorSetting": {
|
||||||
|
"tabIndent": "insertSpaces",
|
||||||
|
"tabSize": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
7
project.private.config.json
Normal file
7
project.private.config.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||||
|
"projectname": "jwl-applet",
|
||||||
|
"setting": {
|
||||||
|
"compileHotReLoad": true
|
||||||
|
}
|
||||||
|
}
|
||||||
118
src/jtools/api/activity.js
Normal file
118
src/jtools/api/activity.js
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
import request from '../request/index.js';
|
||||||
|
|
||||||
|
//查询活动列表
|
||||||
|
export function queryActivityList(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/list',
|
||||||
|
method: 'get',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//查询活动详情
|
||||||
|
export function queryActivityDetail(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/detail',
|
||||||
|
method: 'get',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//查询抽奖次数
|
||||||
|
export function queryLuckyNum(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/lucky/num',
|
||||||
|
method: 'get',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//查询中奖结果
|
||||||
|
export function queryLuckyResult(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/lucky/result',
|
||||||
|
method: 'get',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//录入中奖结果
|
||||||
|
export function saveWinner(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/winner/save',
|
||||||
|
method: 'POST',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//核销
|
||||||
|
export function receiveWinner(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/winner/receive',
|
||||||
|
method: 'POST',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//查询中奖记录
|
||||||
|
export function getLuckyRecord(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/lucky/record',
|
||||||
|
method: 'get',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询中奖记录
|
||||||
|
export function canRecieveGift(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/receive/user',
|
||||||
|
method: 'get',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询中奖信息
|
||||||
|
export function queryWinnerInfo(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/winner/info',
|
||||||
|
method: 'get',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询助力信息
|
||||||
|
export function queryHelpInfo(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/help/info',
|
||||||
|
method: 'get',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//保存助力信息
|
||||||
|
export function saveHelpInfo(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/help/save',
|
||||||
|
method: 'post',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//微信登录获取手机号
|
||||||
|
export function wxLogin(data) {
|
||||||
|
return request({
|
||||||
|
url: 'activity/applet/activity/wx/login',
|
||||||
|
method: 'post',
|
||||||
|
data,
|
||||||
|
noToken: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ function service(options = {}) {
|
|||||||
useUserStore().logoutWithoutToken()
|
useUserStore().logoutWithoutToken()
|
||||||
//请求成功
|
//请求成功
|
||||||
resolved(res.data);
|
resolved(res.data);
|
||||||
} else if(res.data.code != '0000'&&res.data.code !='4001') {
|
} else if(res.data.code != '0000'&&res.data.code !='4001'&&res.data.code != 200) {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: res?.data?.message || '访问出错',
|
title: res?.data?.message || '访问出错',
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
|
|||||||
@@ -1,21 +1,16 @@
|
|||||||
import {
|
import { defineStore } from 'pinia';
|
||||||
defineStore
|
|
||||||
} from 'pinia';
|
|
||||||
import http from '@/jtools/request/index';
|
import http from '@/jtools/request/index';
|
||||||
import {
|
import { queryQuestion, getVersion, querySysConfig } from '@/jtools/api/question';
|
||||||
queryQuestion,
|
|
||||||
getVersion,
|
|
||||||
querySysConfig
|
|
||||||
} from '@/jtools/api/question';
|
|
||||||
import storage from '@/jtools/storage';
|
import storage from '@/jtools/storage';
|
||||||
|
let JSON_SPLIT_LENGTH = 10;
|
||||||
|
|
||||||
const question = defineStore({
|
const question = defineStore({
|
||||||
id: 'question',
|
id: 'question',
|
||||||
state: () => ({
|
state: () => ({
|
||||||
currentCartype: storage.get('carType') || '1001',
|
currentCartype: storage.get('carType') || '1001',
|
||||||
currentCarName: storage.get('carName') || '小车C1/C2/C3',
|
currentCarName: storage.get('carName') || '小车C1/C2/C3',
|
||||||
orderQuestion_subject1: storage.get('question_subject1') || [], //科目一顺序做题
|
orderQuestion_subject1: [], //科目一顺序做题
|
||||||
orderQuestion_subject4: storage.get('question_subject4') || [], //科目四顺序做题
|
orderQuestion_subject4: [], //科目四顺序做题
|
||||||
currentIndex_subject1: 0, //科目一索引 顺序做题
|
currentIndex_subject1: 0, //科目一索引 顺序做题
|
||||||
currentIndex_subject4: 0, //科目四索引 顺序做题
|
currentIndex_subject4: 0, //科目四索引 顺序做题
|
||||||
curSubject: storage.get('curSubject') || '1',
|
curSubject: storage.get('curSubject') || '1',
|
||||||
@@ -25,38 +20,37 @@ const question = defineStore({
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
resetStorage(){
|
resetStorage() {
|
||||||
this.currentIndex_subject1=0
|
this.currentIndex_subject1 = 0;
|
||||||
this.currentIndex_subject4=0
|
this.currentIndex_subject4 = 0;
|
||||||
this.curSubject=0
|
this.curSubject = 0;
|
||||||
storage.remove('curSubject')
|
storage.remove('curSubject');
|
||||||
storage.remove('wrongList_subject1')
|
storage.remove('wrongList_subject1');
|
||||||
storage.remove('wrongList_subject4')
|
storage.remove('wrongList_subject4');
|
||||||
storage.remove('rightList_subject1')
|
storage.remove('rightList_subject1');
|
||||||
storage.remove('rightList_subject4')
|
storage.remove('rightList_subject4');
|
||||||
this.getAllQuestion()
|
// this.getAllQuestion()
|
||||||
},
|
},
|
||||||
getAllQuestion() {
|
getAllQuestion() {
|
||||||
this.currentCartype = storage.get('carType') || '1001'
|
this.currentCartype = storage.get('carType') || '1001';
|
||||||
getVersion(this.currentCartype).then(resp => {
|
getVersion(this.currentCartype).then(resp => {
|
||||||
if (resp.code === '0000') {
|
if (resp.code === '0000') {
|
||||||
querySysConfig(this.currentCartype, 'QuestionBank').then(res => {
|
querySysConfig(this.currentCartype, 'QuestionBank').then(res => {
|
||||||
const urlList = JSON.parse(res.data.configJson)
|
const urlList = JSON.parse(res.data.configJson);
|
||||||
const urlOne = urlList.find(item => item.subject == '1').url
|
const urlOne = urlList.find(item => item.subject == '1').url;
|
||||||
const urlFour = urlList.find(item => item.subject == '4').url
|
const urlFour = urlList.find(item => item.subject == '4').url;
|
||||||
if (this.version != resp.data) {
|
if (this.version != resp.data) {
|
||||||
this.version = resp.data
|
this.version = resp.data;
|
||||||
storage.set('version', resp.data)
|
storage.set('version', resp.data);
|
||||||
this.getOrderQuestion_sub1(true, urlOne)
|
this.getOrderQuestion_sub1(true, urlOne);
|
||||||
this.getOrderQuestion_sub4(true, urlFour)
|
this.getOrderQuestion_sub4(true, urlFour);
|
||||||
} else {
|
} else {
|
||||||
this.getOrderQuestion_sub1(false, urlOne)
|
this.getOrderQuestion_sub1(false, urlOne);
|
||||||
this.getOrderQuestion_sub4(false, urlOne)
|
this.getOrderQuestion_sub4(false, urlFour);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
divideArray(array, numChunks) {
|
divideArray(array, numChunks) {
|
||||||
var chunkSize = Math.ceil(array.length / numChunks);
|
var chunkSize = Math.ceil(array.length / numChunks);
|
||||||
@@ -69,168 +63,93 @@ const question = defineStore({
|
|||||||
|
|
||||||
//改变当前科目
|
//改变当前科目
|
||||||
changeSubject(val) {
|
changeSubject(val) {
|
||||||
this.curSubject = val
|
this.curSubject = val;
|
||||||
storage.set('curSubject', val)
|
storage.set('curSubject', val);
|
||||||
},
|
},
|
||||||
// 获取顺序做题科目1
|
// 获取顺序做题科目1
|
||||||
getOrderQuestion_sub1(isUpdate, url) {
|
getOrderQuestion_sub1(isUpdate, url) {
|
||||||
if (isUpdate) {
|
if (isUpdate) {
|
||||||
this.loading_subject1 = true
|
this.loading_subject1 = true;
|
||||||
const that = this
|
this.loadAllQuestion(url, 1);
|
||||||
uni.request({
|
|
||||||
url: url,
|
|
||||||
success(resp) {
|
|
||||||
if (resp.data) {
|
|
||||||
that.orderQuestion_subject1 = resp.data.data
|
|
||||||
const diveList = that.divideArray(that.orderQuestion_subject1, 5)
|
|
||||||
that.loading_subject1 = false
|
|
||||||
uni.setStorageSync('questionOneSub1', diveList[0])
|
|
||||||
uni.setStorageSync('questionOneSub2', diveList[1])
|
|
||||||
uni.setStorageSync('questionOneSub3', diveList[2])
|
|
||||||
uni.setStorageSync('questionOneSub4', diveList[3])
|
|
||||||
uni.setStorageSync('questionOneSub5', diveList[4])
|
|
||||||
const falseList = storage.get('wrongList_subject1') || []
|
|
||||||
const trueList = storage.get('rightList_subject1') || []
|
|
||||||
const falseArr = []
|
|
||||||
const rightArr = []
|
|
||||||
that.orderQuestion_subject1.forEach(item => {
|
|
||||||
if (falseList.includes(item.questionId)) {
|
|
||||||
falseArr.push(item.questionId)
|
|
||||||
}
|
|
||||||
if (trueList.includes(item.questionId)) {
|
|
||||||
rightArr.push(item.questionId)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
storage.set('wrongList_subject1', falseArr)
|
|
||||||
storage.set('rightList_subject1', rightArr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
const list1 = uni.getStorageSync('questionOneSub1') || []
|
this.orderQuestion_subject1 = [];
|
||||||
const list2 = uni.getStorageSync('questionOneSub2') || []
|
for (let i = 0; i < JSON_SPLIT_LENGTH; i++) {
|
||||||
const list3 = uni.getStorageSync('questionOneSub3') || []
|
const arr = uni.getStorageSync(`question1Sub${i + 1}`) || [];
|
||||||
const list4 = uni.getStorageSync('questionOneSub4') || []
|
this.orderQuestion_subject1 = [...this.orderQuestion_subject1, ...arr];
|
||||||
const list5 = uni.getStorageSync('questionOneSub5') || []
|
|
||||||
this.orderQuestion_subject1 = [...list1, ...list2, ...list3, ...list4, ...list5]
|
|
||||||
if (this.orderQuestion_subject1 && this.orderQuestion_subject1.length) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
this.loading_subject1 = true
|
|
||||||
const that = this
|
|
||||||
uni.request({
|
|
||||||
url: url,
|
|
||||||
success(resp) {
|
|
||||||
if (resp.data) {
|
|
||||||
that.orderQuestion_subject1 = resp.data.data
|
|
||||||
const diveList = that.divideArray(that.orderQuestion_subject1, 5)
|
|
||||||
that.loading_subject1 = false
|
|
||||||
uni.setStorageSync('questionOneSub1', diveList[0])
|
|
||||||
uni.setStorageSync('questionOneSub2', diveList[1])
|
|
||||||
uni.setStorageSync('questionOneSub3', diveList[2])
|
|
||||||
uni.setStorageSync('questionOneSub4', diveList[3])
|
|
||||||
uni.setStorageSync('questionOneSub5', diveList[4])
|
|
||||||
const falseList = storage.get('wrongList_subject1') || []
|
|
||||||
const trueList = storage.get('rightList_subject1') || []
|
|
||||||
const falseArr = []
|
|
||||||
const rightArr = []
|
|
||||||
that.orderQuestion_subject1.forEach(item => {
|
|
||||||
if (falseList.includes(item.questionId)) {
|
|
||||||
falseArr.push(item.questionId)
|
|
||||||
}
|
}
|
||||||
if (trueList.includes(item.questionId)) {
|
if (this.orderQuestion_subject1.length == 0) {
|
||||||
rightArr.push(item.questionId)
|
this.loading_subject1 = true;
|
||||||
}
|
this.loadAllQuestion(url, 1);
|
||||||
})
|
|
||||||
storage.set('wrongList_subject1', falseArr)
|
|
||||||
storage.set('rightList_subject1', rightArr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 获取顺序做题科目4
|
// 获取顺序做题科目4
|
||||||
getOrderQuestion_sub4(isUpdate, url) {
|
getOrderQuestion_sub4(isUpdate, url) {
|
||||||
if (isUpdate) {
|
if (isUpdate) {
|
||||||
this.loading_subject4 = true
|
this.loading_subject4 = true;
|
||||||
const that = this
|
this.loadAllQuestion(url, 4);
|
||||||
uni.request({
|
|
||||||
url: url,
|
|
||||||
success(resp) {
|
|
||||||
if (resp.data) {
|
|
||||||
that.orderQuestion_subject4 = resp.data.data
|
|
||||||
const diveList = that.divideArray(that.orderQuestion_subject4, 5)
|
|
||||||
that.loading_subject4 = false
|
|
||||||
uni.setStorageSync('questionFourSub1', diveList[0])
|
|
||||||
uni.setStorageSync('questionFourSub2', diveList[1])
|
|
||||||
uni.setStorageSync('questionFourSub3', diveList[2])
|
|
||||||
uni.setStorageSync('questionFourSub4', diveList[3])
|
|
||||||
uni.setStorageSync('questionFourSub5', diveList[4])
|
|
||||||
const falseList = storage.get('wrongList_subject4') || []
|
|
||||||
const trueList = storage.get('rightList_subject4') || []
|
|
||||||
const falseArr = []
|
|
||||||
const rightArr = []
|
|
||||||
that.orderQuestion_subject4.forEach(item => {
|
|
||||||
if (falseList.includes(item.questionId)) {
|
|
||||||
falseArr.push(item.questionId)
|
|
||||||
}
|
|
||||||
if (trueList.includes(item.questionId)) {
|
|
||||||
rightArr.push(item.questionId)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
storage.set('wrongList_subject4', falseArr)
|
|
||||||
storage.set('rightList_subject4', rightArr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
const list1 = uni.getStorageSync('questionFourSub1') || []
|
this.orderQuestion_subject4 = [];
|
||||||
const list2 = uni.getStorageSync('questionFourSub2') || []
|
for (let i = 0; i < JSON_SPLIT_LENGTH; i++) {
|
||||||
const list3 = uni.getStorageSync('questionFourSub3') || []
|
const arr = uni.getStorageSync(`question4Sub${i + 1}`) || [];
|
||||||
const list4 = uni.getStorageSync('questionFourSub4') || []
|
this.orderQuestion_subject4 = [...this.orderQuestion_subject4, ...arr];
|
||||||
const list5 = uni.getStorageSync('questionFourSub5') || []
|
|
||||||
this.orderQuestion_subject4 = [...list1, ...list2, ...list3, ...list4, ...list5]
|
|
||||||
if (this.orderQuestion_subject4 && this.orderQuestion_subject4.length) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
this.loading_subject4 = true
|
|
||||||
const that = this
|
|
||||||
uni.request({
|
|
||||||
url: url,
|
|
||||||
success(resp) {
|
|
||||||
if (resp.data) {
|
|
||||||
that.orderQuestion_subject4 = resp.data.data
|
|
||||||
const diveList = that.divideArray(that.orderQuestion_subject4, 5)
|
|
||||||
that.loading_subject4 = false
|
|
||||||
uni.setStorageSync('questionFourSub1', diveList[0])
|
|
||||||
uni.setStorageSync('questionFourSub2', diveList[1])
|
|
||||||
uni.setStorageSync('questionFourSub3', diveList[2])
|
|
||||||
uni.setStorageSync('questionFourSub4', diveList[3])
|
|
||||||
uni.setStorageSync('questionFourSub5', diveList[4])
|
|
||||||
const falseList = storage.get('wrongList_subject4') || []
|
|
||||||
const trueList = storage.get('rightList_subject4') || []
|
|
||||||
const falseArr = []
|
|
||||||
const rightArr = []
|
|
||||||
that.orderQuestion_subject4.forEach(item => {
|
|
||||||
if (falseList.includes(item.questionId)) {
|
|
||||||
falseArr.push(item.questionId)
|
|
||||||
}
|
}
|
||||||
if (trueList.includes(item.questionId)) {
|
if (this.orderQuestion_subject4.length == 0) {
|
||||||
rightArr.push(item.questionId)
|
this.loading_subject4 = true;
|
||||||
}
|
this.loadAllQuestion(url, 4);
|
||||||
})
|
|
||||||
storage.set('wrongList_subject4', falseArr)
|
|
||||||
storage.set('rightList_subject4', rightArr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// 加载线上题目
|
||||||
|
loadAllQuestion(url, course) {
|
||||||
|
const that = this;
|
||||||
|
uni.request({
|
||||||
|
url: url,
|
||||||
|
success(resp) {
|
||||||
|
if (resp?.data) {
|
||||||
|
try {
|
||||||
|
for (let i = 0; i < JSON_SPLIT_LENGTH; i++) {
|
||||||
|
storage.remove(`question${course}Sub${i + 1}`);
|
||||||
|
}
|
||||||
|
that[`orderQuestion_subject${course}`] = resp.data?.data || [];
|
||||||
|
const diveList = that.divideArray(that[`orderQuestion_subject${course}`], JSON_SPLIT_LENGTH);
|
||||||
|
that[`loading_subject${course}`] = false;
|
||||||
|
for (let i = 0; i < JSON_SPLIT_LENGTH; i++) {
|
||||||
|
uni.setStorageSync(`question${course}Sub${i + 1}`, diveList[i]);
|
||||||
|
}
|
||||||
|
const falseList = storage.get(`wrongList_subject${course}`) || [];
|
||||||
|
const trueList = storage.get(`rightList_subject${course}`) || [];
|
||||||
|
const falseArr = [];
|
||||||
|
const rightArr = [];
|
||||||
|
that[`orderQuestion_subject${course}`].forEach(item => {
|
||||||
|
if (falseList.includes(item.questionId)) {
|
||||||
|
falseArr.push(item.questionId);
|
||||||
|
}
|
||||||
|
if (trueList.includes(item.questionId)) {
|
||||||
|
rightArr.push(item.questionId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
storage.set(`wrongList_subject${course}`, falseArr);
|
||||||
|
storage.set(`rightList_subject${course}`, rightArr);
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
uni.showToast({
|
||||||
|
title: '题库下载异常,请稍后再试',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
title: '加载题目失败,请稍后再试',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
//获取索引
|
//获取索引
|
||||||
getCurrentIndex(index, val) {
|
getCurrentIndex(index, val) {
|
||||||
this[`currentIndex_subject${val}`] = index
|
this[`currentIndex_subject${val}`] = index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -66,7 +66,13 @@
|
|||||||
"usingComponents" : true
|
"usingComponents" : true
|
||||||
},
|
},
|
||||||
"mp-toutiao" : {
|
"mp-toutiao" : {
|
||||||
"usingComponents" : true
|
"usingComponents" : true,
|
||||||
|
"appid" : "ttbbd1cd6c24e1c00801",
|
||||||
|
"setting" : {
|
||||||
|
"es6" : true,
|
||||||
|
"postcss" : true,
|
||||||
|
"minified" : true
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"uniStatistics" : {
|
"uniStatistics" : {
|
||||||
"enable" : false
|
"enable" : false
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
{
|
{
|
||||||
"path": "pages/index/index",
|
"path": "pages/index/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationBarTitleText": "金武联驾考",
|
||||||
"enablePullDownRefresh": false
|
"enablePullDownRefresh": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -84,13 +84,6 @@
|
|||||||
"enablePullDownRefresh": false
|
"enablePullDownRefresh": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"path": "pages/me/tijian",
|
|
||||||
"style": {
|
|
||||||
"navigationBarTitleText": "上传证件照",
|
|
||||||
"enablePullDownRefresh": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"path": "pages/me/school",
|
"path": "pages/me/school",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -146,19 +139,13 @@
|
|||||||
"navigationBarTitleText": "支付结果",
|
"navigationBarTitleText": "支付结果",
|
||||||
"enablePullDownRefresh": false
|
"enablePullDownRefresh": false
|
||||||
}
|
}
|
||||||
}, {
|
},
|
||||||
|
{
|
||||||
"path": "pages/index/trueTest",
|
"path": "pages/index/trueTest",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "真实考场模拟",
|
"navigationBarTitleText": "真实考场模拟",
|
||||||
"enablePullDownRefresh": false
|
"enablePullDownRefresh": false
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "pages/me/uploadPic",
|
|
||||||
"style": {
|
|
||||||
"navigationBarTitleText": "上传证件照",
|
|
||||||
"enablePullDownRefresh": false
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/index/secretPapers",
|
"path": "pages/index/secretPapers",
|
||||||
@@ -175,27 +162,31 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path" : "pages/index/activity",
|
"path": "pages/index/activity",
|
||||||
"style" :
|
"style": {
|
||||||
{
|
"navigationBarTitleText": "活动",
|
||||||
"navigationBarTitleText" : "活动",
|
"enablePullDownRefresh": false
|
||||||
"enablePullDownRefresh" : false
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path" : "pages/me/myGift",
|
"path": "pages/me/myGift",
|
||||||
"style" :
|
"style": {
|
||||||
{
|
"navigationBarTitleText": "我的奖品",
|
||||||
"navigationBarTitleText" : "我的奖品",
|
"enablePullDownRefresh": false
|
||||||
"enablePullDownRefresh" : false
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path" : "pages/me/qrCode",
|
"path": "pages/me/qrCode",
|
||||||
"style" :
|
"style": {
|
||||||
|
"navigationBarTitleText": "核销二维码",
|
||||||
|
"enablePullDownRefresh": false
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"navigationBarTitleText" : "核销二维码",
|
"path": "pages/me/help",
|
||||||
"enablePullDownRefresh" : false
|
"style": {
|
||||||
|
"navigationBarTitleText": "好友助力",
|
||||||
|
"enablePullDownRefresh": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -211,7 +202,8 @@
|
|||||||
"selectedColor": "#05C341",
|
"selectedColor": "#05C341",
|
||||||
"backgroundColor": "#FFFFFF",
|
"backgroundColor": "#FFFFFF",
|
||||||
"color": "#999999",
|
"color": "#999999",
|
||||||
"list": [{
|
"list": [
|
||||||
|
{
|
||||||
"pagePath": "pages/index/index",
|
"pagePath": "pages/index/index",
|
||||||
"iconPath": "static/image/tabbar/tab-home.png",
|
"iconPath": "static/image/tabbar/tab-home.png",
|
||||||
"selectedIconPath": "static/image/tabbar/tab-home-selected.png",
|
"selectedIconPath": "static/image/tabbar/tab-home-selected.png",
|
||||||
|
|||||||
@@ -134,6 +134,9 @@
|
|||||||
mounted() {
|
mounted() {
|
||||||
this.getTitle()
|
this.getTitle()
|
||||||
},
|
},
|
||||||
|
onShow() {
|
||||||
|
this.getTitle()
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(useUserStore, ["vipOnList", "token"]),
|
...mapState(useUserStore, ["vipOnList", "token"]),
|
||||||
...mapState(useQuestionStore, ["orderQuestion_subject1", "orderQuestion_subject4", "version"]), //映射函数,取出tagslist
|
...mapState(useQuestionStore, ["orderQuestion_subject1", "orderQuestion_subject4", "version"]), //映射函数,取出tagslist
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
<template>
|
<template>
|
||||||
<view style="padding-bottom: 50px;background-color: #9e0f00;">
|
<view style="padding-bottom: 50px;background-color: #9e0f00;">
|
||||||
<image class="wp100" mode="widthFix" src="https://jwl-jiakao-bq.oss-cn-hangzhou.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/ggl_header.png"></image>
|
<image class="wp100" mode="widthFix" src="https://jwl-jiakao-bq.oss-cn-hangzhou.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/ggl_header.png"></image>
|
||||||
<view class="tip">您今日还剩1次刮奖机会,共有999人参加活动</view>
|
<view class="tip">您今日还剩{{actiNum}}次刮奖机会,共有{{total}}人参加活动</view>
|
||||||
<view class="scraping">
|
<view class="scraping">
|
||||||
<scraping-card :result="result" watermark="刮一刮" title="刮一刮赢取大奖" ref="reset" ></scraping-card>
|
<scraping-card style="z-index: 20;" :result="result" watermark="刮一刮" title="刮一刮赢取大奖" ref="reset" @complete="handleComplete" >
|
||||||
<view v-if="showBtn" class="gj">
|
<cover-view v-if="showBtn" class="gj">
|
||||||
<view class="btn" @tap="handleScrap">
|
<cover-view class="btn" @tap="handleScrap">
|
||||||
点我刮奖
|
{{btnText}}
|
||||||
</view>
|
</cover-view>
|
||||||
</view>
|
</cover-view>
|
||||||
|
</scraping-card>
|
||||||
</view>
|
</view>
|
||||||
<view class="relative mt30 m20lr">
|
<view class="relative mt30 m20lr">
|
||||||
<image class="wp100" mode="widthFix" src="/static/image/index/tip.png"></image>
|
<image class="wp100" mode="widthFix" src="/static/image/index/tip.png"></image>
|
||||||
<view class="title">中奖名单</view>
|
<view class="title">中奖名单</view>
|
||||||
<view class="card">
|
<view class="card">
|
||||||
<view v-for="(item, index) in winningList" :key="index" class="card-item">
|
<view v-for="(item, index) in winningList" :key="index" class="card-item">
|
||||||
<text class="item-text">188****8888</text>
|
<text class="item-text">{{ hidePhoneNumber(item.phone) }}</text>
|
||||||
<text class="item-text">一等奖</text>
|
<text class="item-text">{{ item.awards }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -24,39 +25,120 @@
|
|||||||
<image class="wp100" mode="widthFix" src="/static/image/index/tip.png"></image>
|
<image class="wp100" mode="widthFix" src="/static/image/index/tip.png"></image>
|
||||||
<view class="title">活动说明</view>
|
<view class="title">活动说明</view>
|
||||||
<view class="card">
|
<view class="card">
|
||||||
<view class="item-text">1. 中奖率100%</view>
|
<u-parse :content="activityRule"></u-parse>
|
||||||
<view class="item-text">2. 报名后可获得一次抽奖机会</view>
|
|
||||||
<view class="item-text">3. 中奖用户请于"我的-我的奖品"中查看并核销</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import useUserStore from '@/jtools/store/user'
|
||||||
import ScrapingCard from './scraping.vue'
|
import ScrapingCard from './scraping.vue'
|
||||||
|
import { queryActivityDetail,queryLuckyNum,queryLuckyResult,saveWinner,getLuckyRecord } from '@/jtools/api/activity'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
ScrapingCard
|
ScrapingCard
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
result: '特等奖',
|
detailId: undefined,
|
||||||
|
result: '',
|
||||||
|
btnText: '点我刮奖',
|
||||||
showBtn: true,
|
showBtn: true,
|
||||||
winningList: [1,2,3,4,5,6,7,8]
|
actiNum: 0,
|
||||||
|
total: 0,
|
||||||
|
winningList: [],
|
||||||
|
activityRule: undefined
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
onLoad(op) {
|
||||||
|
this.detailId = op.detailId
|
||||||
|
this.getActivityDetail()
|
||||||
|
this.getActivityNum()
|
||||||
|
this.searchWinningList()
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleScrap() {
|
handleScrap() {
|
||||||
|
if(!this.actiNum) {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: '暂无抽奖机会'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
queryLuckyResult({
|
||||||
|
detailId: this.detailId
|
||||||
|
}).then(resp => {
|
||||||
|
if(resp.code == 200) {
|
||||||
|
this.result = resp.msg
|
||||||
this.showBtn = !this.showBtn
|
this.showBtn = !this.showBtn
|
||||||
|
this.$refs.reset.init()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getActivityDetail() {
|
||||||
|
queryActivityDetail({detailId: this.detailId}).then(resp => {
|
||||||
|
if(resp.code == 200) {
|
||||||
|
this.activityRule = resp.data.activity.activityRule
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
hidePhoneNumber(phoneNumber) {
|
||||||
|
// 验证电话号码格式
|
||||||
|
if (!/^\d{11}$/.test(phoneNumber)) {
|
||||||
|
return "无效的电话号码";
|
||||||
|
}
|
||||||
|
|
||||||
|
// 替换中间四位数字为星号
|
||||||
|
return phoneNumber.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
|
||||||
|
},
|
||||||
|
getActivityNum() {
|
||||||
|
queryLuckyNum({
|
||||||
|
detailId: this.detailId,
|
||||||
|
phone: useUserStore().userInfo?.phone || ''
|
||||||
|
}).then(resp => {
|
||||||
|
if(resp.code == 200) {
|
||||||
|
this.actiNum = resp.data.drawNum
|
||||||
|
this.total = resp.data.totalPeople
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
searchWinningList() {
|
||||||
|
getLuckyRecord({
|
||||||
|
detailId: this.detailId,
|
||||||
|
pageSize: 8
|
||||||
|
}).then(resp => {
|
||||||
|
if(resp.code == 200) {
|
||||||
|
this.winningList = resp.rows
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleComplete() {
|
||||||
|
saveWinner({
|
||||||
|
phone: useUserStore().userInfo?.phone || '',
|
||||||
|
detailId: this.detailId,
|
||||||
|
awards: this.result
|
||||||
|
}).then(resp => {
|
||||||
|
this.btnText = '再刮一次!'
|
||||||
|
if(resp.code == 200) {
|
||||||
|
this.getActivityNum()
|
||||||
|
let help = ",完成助力即可领取奖品!"
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: `恭喜获得${this.result}` + help
|
||||||
|
})
|
||||||
|
this.showBtn = true
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
|
||||||
.tip {
|
.tip {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-top: -80px;
|
margin-top: -80px;
|
||||||
|
|||||||
@@ -1,47 +1,42 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="scraping-happy" id="container">
|
<view class="scraping-happy" id="container">
|
||||||
<canvas
|
<canvas canvas-id="scraping-happy" class="scraping__canvas" :disable-scroll="true" @touchstart="touchstart"
|
||||||
canvas-id="scraping-happy"
|
@touchmove="touchmove" @touchend="touchend" />
|
||||||
class="scraping__canvas"
|
|
||||||
:disable-scroll="true"
|
|
||||||
@touchstart="touchstart"
|
|
||||||
@touchmove="touchmove"
|
|
||||||
@touchend="touchend"
|
|
||||||
/>
|
|
||||||
<cover-view class="scraping__view">
|
<cover-view class="scraping__view">
|
||||||
{{ showText }}
|
{{ showText }}
|
||||||
</cover-view>
|
</cover-view>
|
||||||
|
<slot></slot>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
/** @name 水印配置默认值 **/
|
/** @name 水印配置默认值 **/
|
||||||
const WATERMARK = {
|
const WATERMARK = {
|
||||||
text: '刮一刮',
|
text: '刮一刮',
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
color: '#C5C5C5',
|
color: '#C5C5C5',
|
||||||
}
|
}
|
||||||
/** @name 标题配置默认值 **/
|
/** @name 标题配置默认值 **/
|
||||||
const TITLE = {
|
const TITLE = {
|
||||||
text: '刮一刮',
|
text: '刮一刮',
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
color: '#333',
|
color: '#333',
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @name 涂层配置默认值
|
* @name 涂层配置默认值
|
||||||
* @property { string } color 涂层颜色
|
* @property { string } color 涂层颜色
|
||||||
* @property { number } drawSize 清除涂层的画笔大小
|
* @property { number } drawSize 清除涂层的画笔大小
|
||||||
*/
|
*/
|
||||||
const MASK = {
|
const MASK = {
|
||||||
color: '#DDDDDD',
|
color: '#DDDDDD',
|
||||||
drawSize: 20,
|
drawSize: 20,
|
||||||
}
|
}
|
||||||
/** @name 容错值,解决部分机型涂层没有覆盖满的情况,主要原因是由于像素尺寸不同导致的,应尽可能让width与height保持整数 **/
|
/** @name 容错值,解决部分机型涂层没有覆盖满的情况,主要原因是由于像素尺寸不同导致的,应尽可能让width与height保持整数 **/
|
||||||
const TOLERANT = 3;
|
const TOLERANT = 3;
|
||||||
|
|
||||||
let ctx = null;
|
let ctx = null;
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
/** @name 涂层设置 **/
|
/** @name 涂层设置 **/
|
||||||
mask: {
|
mask: {
|
||||||
@@ -58,7 +53,7 @@ export default {
|
|||||||
/** @name 刮开百分之多少直接消除图层,为0的时候不消除 **/
|
/** @name 刮开百分之多少直接消除图层,为0的时候不消除 **/
|
||||||
percentage: {
|
percentage: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 60,
|
default: 40,
|
||||||
},
|
},
|
||||||
result: {
|
result: {
|
||||||
type: String,
|
type: String,
|
||||||
@@ -78,19 +73,25 @@ export default {
|
|||||||
maskSetting() {
|
maskSetting() {
|
||||||
return {
|
return {
|
||||||
...MASK,
|
...MASK,
|
||||||
...(typeof this.mask === 'object' ? this.mask : { text: this.mask }),
|
...(typeof this.mask === 'object' ? this.mask : {
|
||||||
|
text: this.mask
|
||||||
|
}),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watermarkSetting() {
|
watermarkSetting() {
|
||||||
return {
|
return {
|
||||||
...WATERMARK,
|
...WATERMARK,
|
||||||
...(typeof this.watermark === 'object' ? this.watermark : { text: this.watermark }),
|
...(typeof this.watermark === 'object' ? this.watermark : {
|
||||||
|
text: this.watermark
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
titleSetting() {
|
titleSetting() {
|
||||||
return {
|
return {
|
||||||
...TITLE,
|
...TITLE,
|
||||||
...(typeof this.title === 'object' ? this.title : { text: this.title }),
|
...(typeof this.title === 'object' ? this.title : {
|
||||||
|
text: this.title
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -105,7 +106,10 @@ export default {
|
|||||||
const query = uni.createSelectorQuery().in(this);
|
const query = uni.createSelectorQuery().in(this);
|
||||||
query
|
query
|
||||||
.select('#container')
|
.select('#container')
|
||||||
.boundingClientRect(({ width, height }) => {
|
.boundingClientRect(({
|
||||||
|
width,
|
||||||
|
height
|
||||||
|
}) => {
|
||||||
this.width = width;
|
this.width = width;
|
||||||
this.height = height;
|
this.height = height;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -117,7 +121,10 @@ export default {
|
|||||||
},
|
},
|
||||||
/** @name 初始化canvas状态 **/
|
/** @name 初始化canvas状态 **/
|
||||||
initCanvas() {
|
initCanvas() {
|
||||||
const { width, height } = this;
|
const {
|
||||||
|
width,
|
||||||
|
height
|
||||||
|
} = this;
|
||||||
// 清空矩形内容
|
// 清空矩形内容
|
||||||
ctx.clearRect(0, 0, width, height);
|
ctx.clearRect(0, 0, width, height);
|
||||||
// 设置画笔颜色
|
// 设置画笔颜色
|
||||||
@@ -139,7 +146,10 @@ export default {
|
|||||||
// 旋转
|
// 旋转
|
||||||
ctx.rotate((-10 * Math.PI) / 180);
|
ctx.rotate((-10 * Math.PI) / 180);
|
||||||
// 水印具体绘制过程
|
// 水印具体绘制过程
|
||||||
const { width, height } = this;
|
const {
|
||||||
|
width,
|
||||||
|
height
|
||||||
|
} = this;
|
||||||
const watermarkWidth = this.watermarkSetting.text.length * this.watermarkSetting.fontSize;
|
const watermarkWidth = this.watermarkSetting.text.length * this.watermarkSetting.fontSize;
|
||||||
let x = 0;
|
let x = 0;
|
||||||
let y = 0;
|
let y = 0;
|
||||||
@@ -193,6 +203,7 @@ export default {
|
|||||||
ctx.clearRect(0, 0, this.width, this.height);
|
ctx.clearRect(0, 0, this.width, this.height);
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
ctx.draw(true);
|
ctx.draw(true);
|
||||||
|
this.$emit('complete')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -236,31 +247,34 @@ export default {
|
|||||||
this.touchY = 0;
|
this.touchY = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.scraping-happy {
|
.scraping-happy {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 200rpx;
|
height: 200rpx;
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.scraping__canvas {
|
|
||||||
|
.scraping__canvas {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
/* background-color: red; */
|
/* background-color: red; */
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
.scraping__view {
|
|
||||||
|
.scraping__view {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
color: #f29100;
|
color: #f29100;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
letter-spacing: 8px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -1,18 +1,22 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<view v-if="getLoading" class="wp100 relative" style="height: 100vh;">
|
<view v-if="getLoading" class="wp100 relative" style="height: 100vh;">
|
||||||
<image class="wp100" mode="widthFix" src="https://oss-bq.ahduima.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/%E8%80%83%E8%AF%95%E6%8F%90%E9%86%92_20230906135037.png"></image>
|
<image class="wp100" mode="widthFix"
|
||||||
|
src="https://oss-bq.ahduima.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/%E8%80%83%E8%AF%95%E6%8F%90%E9%86%92_20230906135037.png">
|
||||||
|
</image>
|
||||||
<view class="wp100 flex ai-c jc-c" style="position: absolute;bottom: 0;left: 0;padding-bottom: 124rpx;">
|
<view class="wp100 flex ai-c jc-c" style="position: absolute;bottom: 0;left: 0;padding-bottom: 124rpx;">
|
||||||
<image style="width: 452rpx;" src="https://oss-bq.ahduima.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/%E9%87%91%E6%AD%A6%E8%81%94_20230831123333.png" mode="widthFix"></image>
|
<image style="width: 452rpx;"
|
||||||
|
src="https://oss-bq.ahduima.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/%E9%87%91%E6%AD%A6%E8%81%94_20230831123333.png"
|
||||||
|
mode="widthFix"></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-if="!getLoading">
|
<view v-if="!getLoading">
|
||||||
<j-navbar :isBack="false">金武联驾考</j-navbar>
|
<!-- <j-navbar :isBack="false">金武联驾考</j-navbar> -->
|
||||||
<u-sticky bgColor="#fff">
|
<u-sticky bgColor="#fff">
|
||||||
<u-tabs :list="categoryList" :current="curTab" :scrollable="false" @change="changeCategory"></u-tabs>
|
<u-tabs :list="categoryList" :current="curTab" :scrollable="false" @change="changeCategory"></u-tabs>
|
||||||
</u-sticky>
|
</u-sticky>
|
||||||
<view class="m10tb">
|
<view class="m10tb" v-if="activityList&&activityList.length">
|
||||||
<u-swiper :list="activityList" @click="handleToActivity"></u-swiper>
|
<u-swiper class="acticity" keyName="image" :list="activityList" @click="handleToActivity"></u-swiper>
|
||||||
</view>
|
</view>
|
||||||
<view style="background-color: rgb(245, 245, 245);">
|
<view style="background-color: rgb(245, 245, 245);">
|
||||||
<template v-if="subject=='1' || subject=='4'">
|
<template v-if="subject=='1' || subject=='4'">
|
||||||
@@ -31,12 +35,16 @@
|
|||||||
mapActions
|
mapActions
|
||||||
} from 'pinia' //引入映射函数
|
} from 'pinia' //引入映射函数
|
||||||
import useQuestionStore from '@/jtools/store/question' //引入store
|
import useQuestionStore from '@/jtools/store/question' //引入store
|
||||||
|
import useUserStore from '@/jtools/store/user'
|
||||||
import storage from '@/jtools/storage';
|
import storage from '@/jtools/storage';
|
||||||
import {
|
import {
|
||||||
querySysConfigList,
|
querySysConfigList,
|
||||||
} from '@/jtools/api/question';
|
} from '@/jtools/api/question';
|
||||||
import Subject1 from "./components/Subject1";
|
import Subject1 from "./components/Subject1";
|
||||||
import Subject2 from "./components/Subject2";
|
import Subject2 from "./components/Subject2";
|
||||||
|
// import {
|
||||||
|
// queryActivityList
|
||||||
|
// } from '@/jtools/api/activity';
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
Subject1,
|
Subject1,
|
||||||
@@ -44,7 +52,8 @@
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
show:false,
|
getLoading: true,
|
||||||
|
show: false,
|
||||||
subject: storage.get('curSubject') || '1',
|
subject: storage.get('curSubject') || '1',
|
||||||
curTab: 0,
|
curTab: 0,
|
||||||
searchValue: '',
|
searchValue: '',
|
||||||
@@ -52,41 +61,31 @@
|
|||||||
categoryList: [],
|
categoryList: [],
|
||||||
rightList: storage.get(`rightList_subject${this.subject}`) || [],
|
rightList: storage.get(`rightList_subject${this.subject}`) || [],
|
||||||
wrongList: storage.get(`wrongList_subject${this.subject}`) || [],
|
wrongList: storage.get(`wrongList_subject${this.subject}`) || [],
|
||||||
activityList: ['https://cdn.uviewui.com/uview/swiper/swiper1.png']
|
activityList: []
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
this.show=true
|
setTimeout(() => {
|
||||||
|
this.getLoading = false
|
||||||
|
this.show = true
|
||||||
|
}, 100);
|
||||||
this.getSubjectConfig()
|
this.getSubjectConfig()
|
||||||
if (this.subject == '1' || this.subject == '4') {
|
if (this.subject == '1' || this.subject == '4') {
|
||||||
this.rightList = storage.get(`rightList_subject${this.subject}`) || []
|
this.rightList = storage.get(`rightList_subject${this.subject}`) || []
|
||||||
this.wrongList = storage.get(`wrongList_subject${this.subject}`) || []
|
this.wrongList = storage.get(`wrongList_subject${this.subject}`) || []
|
||||||
}
|
}
|
||||||
if(this.subject=='2'||this.subject=='3'){
|
if (this.subject == '2' || this.subject == '3') {
|
||||||
this.$refs.subjectRef.getDiverType()
|
this.$refs.subjectRef.getDiverType()
|
||||||
}
|
}
|
||||||
|
// this.queryActivityList()
|
||||||
},
|
},
|
||||||
onHide(){
|
onHide() {
|
||||||
this.show=false
|
this.show = false
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(useQuestionStore, ["loading_subject4", "loading_subject1","curSubject","orderQuestion_subject1","orderQuestion_subject4"]), //映射函数,取出tagslist
|
...mapState(useQuestionStore, ["loading_subject4", "loading_subject1", "curSubject", "orderQuestion_subject1",
|
||||||
getLoading() {
|
"orderQuestion_subject4"
|
||||||
return this.loading_subject4 && this.loading_subject1
|
]), //映射函数,取出tagslist
|
||||||
}
|
|
||||||
},
|
|
||||||
watch:{
|
|
||||||
getLoading(newVal){
|
|
||||||
if(this.show){
|
|
||||||
if(newVal){
|
|
||||||
if(this.loading_subject4 && this.loading_subject1){
|
|
||||||
uni.hideTabBar();
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
uni.showTabBar()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapActions(useQuestionStore, ['getOrderQuestion_sub4', 'getOrderQuestion_sub1', 'changeSubject']),
|
...mapActions(useQuestionStore, ['getOrderQuestion_sub4', 'getOrderQuestion_sub1', 'changeSubject']),
|
||||||
@@ -101,8 +100,8 @@
|
|||||||
name: item.configItemName
|
name: item.configItemName
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.subject=storage.get('curSubject') || '1',
|
this.subject = storage.get('curSubject') || '1',
|
||||||
this.curTab=this.categoryList.findIndex(item=>item.configItemCode==this.subject)
|
this.curTab = this.categoryList.findIndex(item => item.configItemCode == this.subject) || 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -119,10 +118,27 @@
|
|||||||
}, 100)
|
}, 100)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
//查询活动列表
|
||||||
|
queryActivityList() {
|
||||||
|
queryActivityList({
|
||||||
|
schoolId: useUserStore().userInfo?.schoolId || ''
|
||||||
|
}).then(resp => {
|
||||||
|
this.activityList = resp.data.map(item => ({
|
||||||
|
...item,
|
||||||
|
image: 'https://jwl.ahduima.com' + item.image
|
||||||
|
}));
|
||||||
|
})
|
||||||
|
},
|
||||||
// 去活动
|
// 去活动
|
||||||
handleToActivity(index) {
|
handleToActivity(index) {
|
||||||
|
let detailId;
|
||||||
|
this.activityList.find((item, index1) => {
|
||||||
|
if (index === index1) {
|
||||||
|
detailId = item.detailId;
|
||||||
|
}
|
||||||
|
})
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: '/pages/index/activity'
|
url: '/pages/index/activity?detailId=' + detailId,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -216,14 +216,12 @@
|
|||||||
},
|
},
|
||||||
toSubmit() {
|
toSubmit() {
|
||||||
const restTime = this.time.hours * 60 * 60 + this.time.minutes * 60 + this.time.seconds
|
const restTime = this.time.hours * 60 * 60 + this.time.minutes * 60 + this.time.seconds
|
||||||
const score = this.list.reduce((pre, cur) => {
|
const trueCount = this.list.reduce((pre, cur) => {
|
||||||
const isTrue = cur.trueAnswer == cur.yourAnswer.replace(/,-g/, '')
|
const ya = cur.trueAnswer.replace('A', '1').replace('B', '2').replace('C', '3').replace('D', '4').replace('E', '5').replace('F', '6').replace('G', '7')
|
||||||
let s = 0
|
const isTrue = ya == cur.yourAnswer.replace(/,/g, '')
|
||||||
if (isTrue) {
|
return pre + 1 * (isTrue ? 1 : 0)
|
||||||
s = this.subject == 1 ? 1 : 2
|
|
||||||
}
|
|
||||||
return pre + s
|
|
||||||
}, 0)
|
}, 0)
|
||||||
|
const score = (trueCount / this.list.length * 100).toFixed(0)
|
||||||
submitTest({
|
submitTest({
|
||||||
"carTypeId": storage.get('carType') || '1001',
|
"carTypeId": storage.get('carType') || '1001',
|
||||||
"score": score,
|
"score": score,
|
||||||
|
|||||||
@@ -7,16 +7,16 @@
|
|||||||
|
|
||||||
<view class="list">
|
<view class="list">
|
||||||
<view class="list-call">
|
<view class="list-call">
|
||||||
<u-input class="sl-input" border="none" v-model="login.phone" type="number" maxlength="11"
|
<u-input class="sl-input" border="none" v-model="loginForm.phone" type="number" maxlength="11"
|
||||||
placeholder="输入手机号" />
|
placeholder="输入手机号" />
|
||||||
</view>
|
</view>
|
||||||
<view class="list-call">
|
<!-- <view class="list-call">
|
||||||
<u-input class="sl-input" v-model="login.code" type="text" maxlength="6" border="none" placeholder="输入验证码">
|
<u-input class="sl-input" v-model="loginForm.code" type="text" maxlength="6" border="none" placeholder="输入验证码">
|
||||||
<template #suffix>
|
<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>
|
</template>
|
||||||
</u-input>
|
</u-input>
|
||||||
</view>
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="button-login" @tap="bindLogin()">
|
<view class="button-login" @tap="bindLogin()">
|
||||||
@@ -39,9 +39,9 @@ import storage from '@/jtools/storage';
|
|||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
login: {
|
loginForm: {
|
||||||
phone: '',
|
phone: '',
|
||||||
code: ''
|
code: '000000'
|
||||||
},
|
},
|
||||||
countDown: 0,
|
countDown: 0,
|
||||||
js: undefined
|
js: undefined
|
||||||
@@ -54,9 +54,9 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getCode() {
|
getCode() {
|
||||||
if (isPhone(this.login.phone) && this.countDown == 0) {
|
if (isPhone(this.loginForm.phone) && this.countDown == 0) {
|
||||||
getCode({
|
getCode({
|
||||||
phone: this.login.phone
|
phone: this.loginForm.phone
|
||||||
}).then(resp => {
|
}).then(resp => {
|
||||||
// if (resp.code == '0000') {
|
// if (resp.code == '0000') {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
@@ -80,8 +80,8 @@ export default {
|
|||||||
this.countDown = 0
|
this.countDown = 0
|
||||||
},
|
},
|
||||||
bindLogin() {
|
bindLogin() {
|
||||||
if (isPhone(this.login.phone) && this.login.code) {
|
if (isPhone(this.loginForm.phone) && this.loginForm.code) {
|
||||||
let params = { ...this.login }
|
let params = { ...this.loginForm }
|
||||||
if (storage.get('companyId')) {
|
if (storage.get('companyId')) {
|
||||||
params.id = storage.get('companyId')
|
params.id = storage.get('companyId')
|
||||||
}
|
}
|
||||||
|
|||||||
254
src/pages/me/help.vue
Normal file
254
src/pages/me/help.vue
Normal file
@@ -0,0 +1,254 @@
|
|||||||
|
<template>
|
||||||
|
<view style="padding-bottom: 50px;background-color: #C5121B;">
|
||||||
|
<image class="wp100 img" mode="widthFix"
|
||||||
|
src="https://oss-bq.ahduima.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/%E5%8A%A9%E5%8A%9B%E4%B8%BB%E5%9B%BE.jpg">
|
||||||
|
</image>
|
||||||
|
<view class="relative tip">邀请好友帮助你进行助力即可有机会领取奖品</view>
|
||||||
|
<view class="relative help_div">
|
||||||
|
<!-- -->
|
||||||
|
<view v-if="type == 1" class="relative help_card">
|
||||||
|
<view class="relative help_tip">
|
||||||
|
还差{{diffNum}}位好友助力即可领取奖品:
|
||||||
|
</view>
|
||||||
|
<view v-if="winnerInfo.awards != undefined" class="relative help_tip" style="font-size: 40rpx;">
|
||||||
|
{{winnerInfo.awards}}
|
||||||
|
</view>
|
||||||
|
<view class="p20">
|
||||||
|
<u-grid :border="false" col="3">
|
||||||
|
<u-grid-item v-for="(item, index) in helpUserList" :key="index">
|
||||||
|
<u-avatar v-if="item.id" class="p10tb border" size="120rpx" :src="item.avatarUrl"></u-avatar>
|
||||||
|
<view v-else class="p10tb">
|
||||||
|
<view class="avatar-text">
|
||||||
|
<u-avatar bg-color="#fff" color="#ccc" size="120rpx" text="邀"></u-avatar>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-grid-item>
|
||||||
|
</u-grid>
|
||||||
|
</view>
|
||||||
|
<view class="help_btn">
|
||||||
|
<button open-type="share" class="help_btn_font"> 邀请好友助力</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view v-if="type == 2" class="relative help_card">
|
||||||
|
<view class="relative help_list" style="top: 200rpx;">
|
||||||
|
<view v-if="winnerInfo?.activityName" class="help_tip"
|
||||||
|
style="font-size: 40rpx; margin: 25rpx 0rpx;">
|
||||||
|
{{winnerInfo?.activityName}}
|
||||||
|
</view>
|
||||||
|
<view v-if="winnerInfo.schoolName != undefined" class="help_tip">
|
||||||
|
举办单位:{{winnerInfo.schoolName}}
|
||||||
|
</view>
|
||||||
|
<view v-if="winnerInfo.awards != undefined" class="help_tip" style="font-size: 45rpx;margin: 25rpx 0rpx;">
|
||||||
|
奖品:{{winnerInfo.awards}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="help_btn">
|
||||||
|
<button class="help_btn_font" open-type="chooseAvatar" @chooseavatar="handleHelp"
|
||||||
|
:disabled="disBtn">帮好友助力</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import useUserStore from '@/jtools/store/user'
|
||||||
|
import {
|
||||||
|
queryActivityDetail,
|
||||||
|
queryHelpInfo,
|
||||||
|
saveHelpInfo,
|
||||||
|
queryWinnerInfo
|
||||||
|
} from '@/jtools/api/activity'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
winnerId: undefined,
|
||||||
|
helpUserList: [],
|
||||||
|
drawNum: 0,
|
||||||
|
phone: undefined,
|
||||||
|
type: 2,
|
||||||
|
winnerInfo: undefined,
|
||||||
|
disBtn: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(op) {
|
||||||
|
this.winnerId = op.id
|
||||||
|
// this.type = op.type ? Number(op.type) : 1
|
||||||
|
this.phone = useUserStore().userInfo?.phone || undefined
|
||||||
|
console.log(this.phone)
|
||||||
|
this.getWinnerInfo()
|
||||||
|
this.getHelpInfo()
|
||||||
|
this.disBtn = false
|
||||||
|
|
||||||
|
},
|
||||||
|
onShareAppMessage(res) {
|
||||||
|
if (res.from === 'button') { // 来自页面内分享按钮
|
||||||
|
console.log(res.target)
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
title: '我正在参与领奖活动柜,请帮我助力',
|
||||||
|
path: '/pages/me/help?id=' + this.winnerId + '&type=2'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
//查询中奖信息
|
||||||
|
getWinnerInfo() {
|
||||||
|
queryWinnerInfo({
|
||||||
|
winnerId: this.winnerId
|
||||||
|
}).then(resp => {
|
||||||
|
if (resp.code == 200) {
|
||||||
|
console.log(resp)
|
||||||
|
this.winnerInfo = resp.data;
|
||||||
|
if (this.phone && this.winnerInfo.phone == this.phone) {
|
||||||
|
this.type = 1
|
||||||
|
} else {
|
||||||
|
this.type = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
//查询助力信息
|
||||||
|
getHelpInfo() {
|
||||||
|
queryHelpInfo({
|
||||||
|
winnerId: this.winnerId
|
||||||
|
}).then(resp => {
|
||||||
|
if (resp.code == 200) {
|
||||||
|
this.drawNum = resp.data.helpNum;
|
||||||
|
const list = resp.data.helpUsers.map(item => ({
|
||||||
|
...item,
|
||||||
|
avatarUrl: 'https://jwl.ahduima.com' + item.avatarUrl
|
||||||
|
}));
|
||||||
|
this.diffNum = (this.drawNum - list.length) < 0 ? 0 : (this.drawNum - list.length);
|
||||||
|
const arr = new Array(this.diffNum).fill({})
|
||||||
|
this.helpUserList = [...list,...arr]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//点击助力
|
||||||
|
handleHelp(e) {
|
||||||
|
this.disBtn = false
|
||||||
|
uni.login({
|
||||||
|
provider: 'weixin', //使用微信登录
|
||||||
|
success: (loginRes) => {
|
||||||
|
console.log(loginRes);
|
||||||
|
uni.uploadFile({
|
||||||
|
url: 'https://jwl.ahduima.com/activity/applet/activity/help/save',
|
||||||
|
// url: 'http://192.168.1.6:8089/applet/activity/help/save',
|
||||||
|
filePath: e.detail.avatarUrl,
|
||||||
|
name: 'file',
|
||||||
|
formData: {
|
||||||
|
'code': loginRes.code,
|
||||||
|
'winnerId': this.winnerId,
|
||||||
|
},
|
||||||
|
success: (uploadFileRes) => {
|
||||||
|
console.log(uploadFileRes.data);
|
||||||
|
let resp = JSON.parse(uploadFileRes.data);
|
||||||
|
console.log(resp);
|
||||||
|
|
||||||
|
if (resp.code == 200) {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: `助力成功`
|
||||||
|
})
|
||||||
|
this.disBtn = true
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'error',
|
||||||
|
title: resp.msg
|
||||||
|
})
|
||||||
|
this.disBtn = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.img {
|
||||||
|
top: -130rpx !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip {
|
||||||
|
height: 75px;
|
||||||
|
font-family: PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FEFEFE;
|
||||||
|
line-height: 48px;
|
||||||
|
top: -520rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 35rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar-text {
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 1px dashed #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.help_div {
|
||||||
|
width: 710rpx;
|
||||||
|
height: 996rpx;
|
||||||
|
top: -560rpx;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
margin-right: 20rpx;
|
||||||
|
background: linear-gradient(0deg, #F33D2F 100%, rgba(197, 18, 27, 0.01) 0%);
|
||||||
|
border-radius: 40rpx;
|
||||||
|
|
||||||
|
|
||||||
|
.help_card {
|
||||||
|
width: 630rpx;
|
||||||
|
height: 886rpx;
|
||||||
|
margin: 0rpx 39rpx;
|
||||||
|
top: 55rpx;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 24rpx;
|
||||||
|
|
||||||
|
.help_tip {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 32rpx;
|
||||||
|
font-family: PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #010101;
|
||||||
|
line-height: 55rpx;
|
||||||
|
top: 15rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help_list {
|
||||||
|
margin: 68rpx 25rpx 25rpx 20rpx;
|
||||||
|
height: 580rpx;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.help_btn {
|
||||||
|
text-align: center;
|
||||||
|
margin: 0 75rpx;
|
||||||
|
margin-bottom: 30rpx;
|
||||||
|
width: 500rpx;
|
||||||
|
height: 86rpx;
|
||||||
|
background: linear-gradient(0deg, #DE4224 0%, #B81706 100%);
|
||||||
|
border-radius: 43rpx;
|
||||||
|
|
||||||
|
.help_btn_font {
|
||||||
|
font-size: 32rpx;
|
||||||
|
font-family: PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 86rpx;
|
||||||
|
background: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -12,6 +12,9 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="mt5 fs14 cor-666">陪您学车 第{{ user.days }}天</view>
|
<view class="mt5 fs14 cor-666">陪您学车 第{{ user.days }}天</view>
|
||||||
</view>
|
</view>
|
||||||
|
<view v-if="canRecieve" class="ml20 p20" @tap="handleScan">
|
||||||
|
<u-icon name="scan" size="40"></u-icon>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="info flex ai-c" v-else @tap="toLogin">
|
<view class="info flex ai-c" v-else @tap="toLogin">
|
||||||
<u-avatar class="br-p50 overflow-h" :size="64" src="@/static/image/mine/default_avatar.png" shape="circle"></u-avatar>
|
<u-avatar class="br-p50 overflow-h" :size="64" src="@/static/image/mine/default_avatar.png" shape="circle"></u-avatar>
|
||||||
@@ -39,7 +42,7 @@
|
|||||||
<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 v-if="!isLogin || !vipOn.length" class="text-center">
|
<view v-if="!isLogin || !vipOn.length" class="text-center">
|
||||||
<view class="fs18 fwb" style="color: #7E4012FF;">开通VIP尊享以下权益</view>
|
<view class="fs18 fwb" style="color: #7E4012FF;">开通VIP尊享以下权益</view>
|
||||||
<view class="fs15" style="color: #7E4012FF;">精选500题 / 真是模考 / 考前密卷</view>
|
<view class="fs15" style="color: #7E4012FF;">精选500题 / 真实模考 / 考前密卷</view>
|
||||||
<view class="study fs16 text-center" style="margin: 25px auto 0;color: #F6E99FFF;">{{ isIOS ? 'iOS暂不可用' : '立即开通' }}</view>
|
<view class="study fs16 text-center" style="margin: 25px auto 0;color: #F6E99FFF;">{{ isIOS ? 'iOS暂不可用' : '立即开通' }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-else-if="vipOn.length" class="text-center">
|
<view v-else-if="vipOn.length" class="text-center">
|
||||||
@@ -80,11 +83,6 @@
|
|||||||
<template #icon>
|
<template #icon>
|
||||||
<u-icon size="24" name="gift"></u-icon>
|
<u-icon size="24" name="gift"></u-icon>
|
||||||
</template>
|
</template>
|
||||||
</u-cell>
|
|
||||||
<u-cell size="large" title="我的体检" isLink @tap="handleTJ">
|
|
||||||
<template #icon>
|
|
||||||
<img src="/static/image/mine/wdtj.png" style="width: 24px;height: 24px;">
|
|
||||||
</template>
|
|
||||||
</u-cell>
|
</u-cell>
|
||||||
<u-cell size="large" title="我的题库" :value="carName" @tap="toChangeCarType">
|
<u-cell size="large" title="我的题库" :value="carName" @tap="toChangeCarType">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
@@ -107,8 +105,8 @@
|
|||||||
<script>
|
<script>
|
||||||
import useUserStore from '@/jtools/store/user'
|
import useUserStore from '@/jtools/store/user'
|
||||||
import storage from '@/jtools/storage';
|
import storage from '@/jtools/storage';
|
||||||
|
import { receiveWinner,canRecieveGift } from '@/jtools/api/activity'
|
||||||
export default {
|
export default {
|
||||||
components: {},
|
|
||||||
computed: {
|
computed: {
|
||||||
isLogin() {
|
isLogin() {
|
||||||
return useUserStore().isLogin
|
return useUserStore().isLogin
|
||||||
@@ -148,14 +146,25 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
carName: storage.get('carName') || '小车C1/C2/C3',
|
carName: storage.get('carName') || '小车C1/C2/C3',
|
||||||
isIOS: true
|
isIOS: true,
|
||||||
|
canRecieve: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
this.isIOS = this.$platform.device().includes('ios')
|
this.isIOS = this.$platform.device().includes('ios')
|
||||||
this.carName = storage.get('carName') || '小车C1/C2/C3'
|
this.carName = storage.get('carName') || '小车C1/C2/C3'
|
||||||
|
this.searchActivityAuth()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
searchActivityAuth() {
|
||||||
|
canRecieveGift({
|
||||||
|
phone: useUserStore().userInfo?.phone || ''
|
||||||
|
}).then(resp => {
|
||||||
|
if(resp.code == 200) {
|
||||||
|
this.canRecieve = resp.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
// 拨打电话
|
// 拨打电话
|
||||||
callPhoneNumber() {
|
callPhoneNumber() {
|
||||||
uni.makePhoneCall({
|
uni.makePhoneCall({
|
||||||
@@ -208,19 +217,6 @@ export default {
|
|||||||
this.toLogin()
|
this.toLogin()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleTJ() {
|
|
||||||
if (this.isLogin) {
|
|
||||||
// uni.navigateTo({
|
|
||||||
// url: '/pages/me/tijian'
|
|
||||||
// })
|
|
||||||
uni.showToast({
|
|
||||||
title: '敬请期待',
|
|
||||||
icon: 'none'
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
this.toLogin()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
toLogin() {
|
toLogin() {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: '/pages/login/login'
|
url: '/pages/login/login'
|
||||||
@@ -233,6 +229,25 @@ export default {
|
|||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: '/pages/me/myGift'
|
url: '/pages/me/myGift'
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
handleScan() {
|
||||||
|
uni.scanCode({
|
||||||
|
scanType: ['qrCode'],
|
||||||
|
success(res) {
|
||||||
|
console.log('条码内容:' + res.result);
|
||||||
|
receiveWinner({
|
||||||
|
id: res.result,
|
||||||
|
receiveUser: useUserStore().userInfo?.phone || []
|
||||||
|
}).then(resp => {
|
||||||
|
if(resp.code == 200) {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: '核销成功!'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,15 +15,6 @@
|
|||||||
<u-icon name="arrow-right" color="#999" />
|
<u-icon name="arrow-right" color="#999" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="flex jc-sb ai-c bb1" style="height: 110rpx;">
|
|
||||||
<view class="title">身份证号</view>
|
|
||||||
<view class="m30lr fs14 cor-333">{{sfzNum}}</view>
|
|
||||||
</view>
|
|
||||||
<view class="flex ai-c" style="height: 110rpx;" @tap="toUploadPic">
|
|
||||||
<view class="title">证件照</view>
|
|
||||||
<view class="m30lr fs14 cor-333 fl1"></view>
|
|
||||||
<u-icon name="arrow-right" color="#999" />
|
|
||||||
</view> -->
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@@ -40,11 +31,6 @@
|
|||||||
this.sfzNum=storage.get('sfzNum') || ''
|
this.sfzNum=storage.get('sfzNum') || ''
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
toUploadPic(){
|
|
||||||
uni.navigateTo({
|
|
||||||
url: '/pages/me/uploadPic'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,42 +1,71 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="p10lr p20tb">
|
<view class="p10lr p20tb">
|
||||||
<view v-for="(item, index) in list" :key="index" class="item">
|
<u-list @scrolltolower="loadmore">
|
||||||
|
<u-list-item v-for="(item, index) in list" :key="index" class="item">
|
||||||
<view class="relative">
|
<view class="relative">
|
||||||
<img src="/static/image/mine/giftitem.png" style="width: 100%;" mode="widthFix" alt="" />
|
<img src="/static/image/mine/giftitem.png" style="width: 100%;" mode="widthFix" alt="" />
|
||||||
<view class="ab_full df ai-c jcc">一等奖</view>
|
<view class="ab_full df ai-c jcc">{{item.awards}}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="df ai-c jcsb p20tb p10lr">
|
<view class="df ai-c jcsb p20tb p10lr">
|
||||||
<view class="item-label">
|
<view class="item-label">
|
||||||
<view>活动名称:幸运刮刮乐开心赢大奖</view>
|
<view>活动名称:{{ item.activityName }}</view>
|
||||||
<view>参与时间:2024-01-01 08:00</view>
|
<view>参与时间:{{ item.createTime }}</view>
|
||||||
<view>有效期至:2024-03-01 08:00</view>
|
<view>有效期至:{{ item.endTime }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="ml20" style="width: 120rpx;">
|
<view class="ml20" style="width: 120rpx;">
|
||||||
<img v-if="index%2==0" src="/static/image/mine/writeoff.png" style="width: 120rpx;height: 120rpx;" />
|
<view v-if="item.status == 0" class="btn" @tap="handleHelp(item)">助力</view>
|
||||||
<view v-else class="btn" @tap="handleWriteoff(item)">核销</view>
|
<view v-else-if="item.status == 1" class="btn" @tap="handleWriteoff(item)">核销</view>
|
||||||
</view>
|
<img v-else-if="item.status == 2" src="/static/image/mine/writeoff.png" style="width: 120rpx;height: 120rpx;" />
|
||||||
|
<img v-else src="/static/image/mine/outtime.png" style="width: 120rpx;height: 120rpx;" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</u-list-item>
|
||||||
|
</u-list>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import useUserStore from '@/jtools/store/user'
|
||||||
|
import { getLuckyRecord } from '@/jtools/api/activity'
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
pageNum: 1,
|
||||||
list: []
|
list: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
|
this.pageNum = 1
|
||||||
|
this.list = []
|
||||||
this.handleSearch()
|
this.handleSearch()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleSearch() {
|
handleSearch() {
|
||||||
this.list = [1,2,3,4,5]
|
getLuckyRecord({
|
||||||
|
phone: useUserStore().userInfo.phone,
|
||||||
|
pageSize: 10,
|
||||||
|
pageNum: this.pageNum
|
||||||
|
}).then(resp => {
|
||||||
|
if(resp.code == 200) {
|
||||||
|
if(resp.rows && resp.rows.length) {
|
||||||
|
this.list = [...this.list, ...resp.rows]
|
||||||
|
} else {
|
||||||
|
this.pageNum = this.pageNum > 1 ? this.pageNum-1 : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
loadmore() {
|
||||||
|
this.handleSearch(this.pageNum++)
|
||||||
},
|
},
|
||||||
handleWriteoff(item) {
|
handleWriteoff(item) {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: `/pages/me/qrCode?item=${item}`
|
url: `/pages/me/qrCode?id=${item.id}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleHelp(item){
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/me/help?id=${item.id}`
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="df jcc" style="padding-top: 100px;">
|
<view class="df jcc" style="padding-top: 100px;">
|
||||||
<qrcode value="123" :size="200"/>
|
<qrcode v-if="value" :value="value" :size="200"/>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -16,11 +16,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad(option) {
|
onLoad(option) {
|
||||||
this.value = option.item
|
this.value = option.id
|
||||||
},
|
},
|
||||||
methods: {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -1,214 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="">
|
|
||||||
<view class="wp100 bc-fff p14">
|
|
||||||
<view class="title fontColor">第一步 上传学员图像</view>
|
|
||||||
<view class="mt15">
|
|
||||||
<!-- <u-upload width="165" height="165" :file-list=" fileList1" multiple :max-count="1" @afterRead="afterRead" @delete="deletePic" /> -->
|
|
||||||
<!-- <u-upload ref="uUpload" class="mt25" :size-type="['compressed']" :file-list="fileList1" deletable :multiple="false" :max-count="1" width="165rpx" height="165rpx" @afterRead="afterRead" @delete="deletePic" /> -->
|
|
||||||
<view style="width: 320rpx;height:300rpx;background-color: rgb(247, 255, 255);border-radius: 20rpx;">
|
|
||||||
<view style="width: 320rpx;height:240rpx;" class="flex jc-c ai-c">
|
|
||||||
<image v-if="fileList&&fileList.length" style="width: 240rpx;height: 240rpx;" :src="fileList[0].url">
|
|
||||||
</image>
|
|
||||||
<u-avatar v-else class="br-p50 overflow-h" :size="64" mp-avatar shape="circle"></u-avatar>
|
|
||||||
</view>
|
|
||||||
<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" multiple :maxCount="1" width="150"
|
|
||||||
height="150">
|
|
||||||
<view
|
|
||||||
style="width: 320rpx;height:60rpx;line-height:60rpx;background-color: #05C341;border-radius: 0 0 20rpx 20rpx;"
|
|
||||||
class="text-center cor-fff">
|
|
||||||
点击
|
|
||||||
</view>
|
|
||||||
</u-upload>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="mt20">
|
|
||||||
<view class="title fontColor">第二步 核实后再提交</view>
|
|
||||||
<u--form labelPosition="left" labelWidth="80" :model="form" :rules="rules" ref="form1">
|
|
||||||
<u-form-item label="姓名" :required="true" prop="idCardName" borderBottom ref="item1">
|
|
||||||
<u--input v-model="form.idCardName" border="none"></u--input>
|
|
||||||
</u-form-item>
|
|
||||||
<u-form-item label="身份证号" :required="true" prop="sfzmhm" borderBottom ref="item2">
|
|
||||||
<u--input v-model="form.sfzmhm" border="none"></u--input>
|
|
||||||
</u-form-item>
|
|
||||||
</u--form>
|
|
||||||
</view>
|
|
||||||
<view style="margin-top: 20px;">
|
|
||||||
<u-button type="primary" :style="{width: '100%',borderRadius:'40rpx',backgroundColor:'#05C341'}" :disabled="saving" text="提交"
|
|
||||||
@click="submit" />
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import storage from '@/jtools/storage';
|
|
||||||
import {
|
|
||||||
addInfo,
|
|
||||||
} from '@/jtools/api/index';
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
const shenfenzhen = (rule, value, callback) => {
|
|
||||||
/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(value) ? callback() : callback(
|
|
||||||
new Error('请输入正确的身份证号'))
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
form: {
|
|
||||||
idCardName: '',
|
|
||||||
sfzmhm: ''
|
|
||||||
},
|
|
||||||
driverLicenseImg:'',
|
|
||||||
fileList:[],
|
|
||||||
fileList1: [],
|
|
||||||
uploadList: [],
|
|
||||||
saving: false,
|
|
||||||
rules: {
|
|
||||||
idCardName: [{
|
|
||||||
required: true,
|
|
||||||
message: '请输入姓名',
|
|
||||||
trigger: ['blur', 'change']
|
|
||||||
}],
|
|
||||||
sfzmhm: [{
|
|
||||||
required: true,
|
|
||||||
message: '请输入身份证号',
|
|
||||||
trigger: ['blur', 'change']
|
|
||||||
},{
|
|
||||||
// 自定义验证函数,见上说明
|
|
||||||
validator: shenfenzhen,
|
|
||||||
message: '身份证号码不正确',
|
|
||||||
// 触发器可以同时用blur和change
|
|
||||||
trigger: ['change', 'blur'],
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
onReady() {
|
|
||||||
this.$refs.form1.setRules(this.rules);
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 删除图片
|
|
||||||
deletePic(event) {
|
|
||||||
this.fileList1.splice(event.index, 1);
|
|
||||||
this.uploadList.splice(event.index, 1);
|
|
||||||
},
|
|
||||||
// 新增图片
|
|
||||||
async afterRead(event) {
|
|
||||||
let imageInfoObj = await uni.getImageInfo({src: event.file[0].url})
|
|
||||||
console.log(imageInfoObj);
|
|
||||||
if(imageInfoObj.width!=720&&imageInfoObj.height!=720){
|
|
||||||
uni.showToast({
|
|
||||||
icon:'error',
|
|
||||||
title:'证件照尺寸有误'
|
|
||||||
})
|
|
||||||
this.fileList=[]
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
this.driverLicenseImg = this.urlTobase64(event.file[0].url)
|
|
||||||
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
|
|
||||||
const lists = [].concat(event.file);
|
|
||||||
this.fileList=lists
|
|
||||||
this.fileList1 = [];
|
|
||||||
uni.showToast({
|
|
||||||
title:'上传成功!'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
uploadFilePromise(url) {
|
|
||||||
this.saving = true;
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
uni.uploadFile({
|
|
||||||
url: process.env.VUE_APP_BASE_API + 'mongodb/uploadFile', // 仅为示例,非真实的接口地址
|
|
||||||
filePath: url,
|
|
||||||
name: 'file',
|
|
||||||
success: (res) => {
|
|
||||||
// setTimeout(() => {
|
|
||||||
resolve(JSON.parse(res.data).data);
|
|
||||||
// }, 100);
|
|
||||||
this.saving = false;
|
|
||||||
},
|
|
||||||
fail: () => {
|
|
||||||
resolve(null);
|
|
||||||
this.saving = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 提交
|
|
||||||
submit() {
|
|
||||||
this.$refs.form1.validate().then((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
const param={
|
|
||||||
driverLicenseImg:this.driverLicenseImg,
|
|
||||||
...this.form,
|
|
||||||
schoolOrgCode:'340103000700',
|
|
||||||
operater:'1d08daf852cf4ee28f67cb583f538cbf'
|
|
||||||
}
|
|
||||||
addInfo(param).then(resp=>{
|
|
||||||
uni.showToast({
|
|
||||||
title:"提交成功!",
|
|
||||||
duration:2000,
|
|
||||||
})
|
|
||||||
setTimeout(()=>{
|
|
||||||
uni.navigateBack()
|
|
||||||
},1000)
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
console.log('验证失败');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
},
|
|
||||||
urlTobase64(url){
|
|
||||||
let base64=''
|
|
||||||
console.log(url);
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
uni.getFileSystemManager().readFile({
|
|
||||||
filePath: url, //选择图片返回的相对路径
|
|
||||||
encoding: 'base64', //编码格式
|
|
||||||
success: res => { //成功的回调
|
|
||||||
console.log(res);
|
|
||||||
base64 = 'data:image/jpeg;base64,' + res.data //不加上这串字符,在页面无法显示的哦
|
|
||||||
resolve(base64);
|
|
||||||
},fail: (e) => {
|
|
||||||
console.log("图片转换失败");
|
|
||||||
reject(e)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.upload-img {
|
|
||||||
width: 165rpx;
|
|
||||||
height: 165rpx;
|
|
||||||
border: 1px dashed #c4c4c4;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontColor {
|
|
||||||
color: #383838;
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
::v-deep .u-textarea__count {
|
|
||||||
background-color: #f9faf9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
::v-deep .u-upload__button>.u-icon>.u-icon__icon {
|
|
||||||
font-size: 90rpx !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
::v-deep .u-button--square {
|
|
||||||
border-radius: 40rpx !important;
|
|
||||||
}
|
|
||||||
::v-deep .u-button--primary{
|
|
||||||
background-color: #05C341 !important;
|
|
||||||
border-color: #05C341 !important;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<swiper class="swiper mt20" :current="swiperIndex" :duration="duration" :autoplay="false" @change="onChange"
|
<swiper class="swiper mt20" :current="swiperIndex" :duration="duration" :autoplay="false" @change="onChange"
|
||||||
@animationfinish="onAnimationfinish" @touchend="touchEnd">
|
@animationfinish="onAnimationfinish" @touchend="touchEnd">
|
||||||
<swiper-item v-for="(quesItem,quesIndex) in swiperList" :key="quesIndex.questionId">
|
<swiper-item v-for="(quesItem,quesIndex) in swiperList" :key="quesItem.questionId">
|
||||||
<scroll-view scroll-y="true" class="swiper-scroll">
|
<scroll-view scroll-y="true" class="swiper-scroll">
|
||||||
<view>
|
<view>
|
||||||
<view class="m14lr">
|
<view class="m14lr">
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
import GradesChart from "./components/GradesChart.vue"
|
import GradesChart from "./components/GradesChart.vue"
|
||||||
import storage from '@/jtools/storage';
|
import storage from '@/jtools/storage';
|
||||||
import {
|
import {
|
||||||
testTotal
|
testTotal,getTestQuestionId
|
||||||
} from '@/jtools/api/question';
|
} from '@/jtools/api/question';
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@@ -182,15 +182,28 @@
|
|||||||
}else{
|
}else{
|
||||||
const list =JSON.stringify(this.wrongList)
|
const list =JSON.stringify(this.wrongList)
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url:"/pages/questionBank/questionBank?navTitle=错题&subject="+this.subject+"&questionList="+list
|
url:"/pages/questionBank/questionBank?navTitle=错题&subject="+this.subject+"&questionIdList="+list
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//重新考试
|
//重新考试
|
||||||
toExams(){
|
toExams(){
|
||||||
|
getTestQuestionId({
|
||||||
|
versionId: this.version,
|
||||||
|
carTypeId: storage.get('carType') || '1001',
|
||||||
|
subject: this.subject,
|
||||||
|
}).then(async (resp) => {
|
||||||
|
if (resp.code === '0000') {
|
||||||
|
const arr = resp.data
|
||||||
|
const listJson = JSON.stringify(arr)
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url:"/pages/questionBank/practiceExams?subject="+this.subject
|
url: "/pages/questionBank/practiceExams?title=模拟考试&subject=" + this.subject + "&questionIdList=" + listJson
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// uni.navigateTo({
|
||||||
|
// url:"/pages/questionBank/practiceExams?subject="+this.subject
|
||||||
|
// })
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
src/static/image/mine/outtime.png
Normal file
BIN
src/static/image/mine/outtime.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Reference in New Issue
Block a user