提交 1f317554 编写于 作者: yi.li's avatar yi.li

Merge branch 'dev-question-bank-0916' of...

Merge branch 'dev-question-bank-0916' of 192.168.110.53:com.pica.cloud.education.frontend/pica-professional-exam into dev-question-bank-0916
......@@ -5,7 +5,7 @@
<article class="content">
<img class="img-tips" src="../../images/question/note.png" alt="">
<p class="tips">您已完成本次免费练习体验</p>
<p class="status"><span class="cm rn">{{rightNum}}</span>题,错<span class="cm en">{{errorNum}}</span>题,正确率<span class="cm rate">{{rate}}%</span></p>
<p class="status"><span class="cm rn">{{statisConfig.rightNum}}</span>题,错<span class="cm en">{{statisConfig.errorNum}}</span>题,正确率<span class="cm rate">{{statisConfig.rate}}%</span></p>
<p class="guide-tips">想体验完整题目,请先激活或购买题库</p>
<div class="btn-wrapper">
<span class="plain" @click="activeCard">去激活</span>
......@@ -20,22 +20,32 @@
<script>
export default {
props: {
statisConfig: {
type: Object,
default: () => {
return {
rightNum: 0,
errorNum: 0,
rate: 0
}
}
},
showDialog: {
type: Boolean,
default: true,
},
rightNum: {
type: Number | String,
default: 0,
},
errorNum: {
type: Number | String,
default: 0,
},
rate: {
type: Number | String,
default: 0,
}
// rightNum: {
// type: Number | String,
// default: 0,
// },
// errorNum: {
// type: Number | String,
// default: 0,
// },
// rate: {
// type: Number | String,
// default: 0,
// }
},
methods: {
......
......@@ -25,21 +25,13 @@ export default {
data() {
return {
queryParams: {
// commitKind: 1, // 答题来源 1:错题集 2:收藏 3:题库
// directoryId: 0, // 题库ID,获取错题集或收藏时传0
// pageFlag: 0, // 翻页标记:0往前翻页 1往后翻页
// pageSize: 10, // 每页大小
// secondSubjectId: 0, // 二级学科分类ID:用于判断学科下目录免费题数
// titleNo: 0, // 起始或结束题目序号,首次进入页面时传0,系统自动定位到上次做的题
commitKind: 3, // 答题来源 1:错题集 2:收藏 3:题库
directoryId: 1748, // 题库ID,获取错题集或收藏时传0
pageFlag: 0, // 翻页标记:0往前翻页 1往后翻页
pageSize: 5, // 每页大小
secondSubjectId: 106, // 二级学科分类ID:用于判断学科下目录免费题数
titleNo: 0, // 起始或结束题目ID,首次进入页面时传0,系统自动定位到上次做的题
commitKind: 3, // 答题来源 1:错题集 2:收藏 3:题库
directoryId: 1748, // 题库ID,获取错题集或收藏时传0
pageFlag: 0, // 翻页标记:0往前翻页 1往后翻页
pageSize: 5, // 每页大小
secondSubjectId: 106, // 二级学科分类ID:用于判断学科下目录免费题数
titleNo: 0, // 起始或结束题目序号,首次进入页面时传0,系统自动定位到上次做的题
}
};
},
computed: {
......@@ -48,14 +40,14 @@ export default {
"questionList",
"currentQuestion",
"totalCount",
"userInfo"
"userInfo",
"titleConfig",
"commonConfig",
])
},
methods: {
// 上一页 // 有可能要触发上分页(前端的个数只有一条)
// TODO
previous() {
// debugger
if (this.currentQuestion.titleNo == 1) {
Toast("已是第一题");
} else {
......@@ -64,8 +56,8 @@ export default {
"SET_CURRENT_QUESTION",
this.questionList[cIndex - 1] || { answerList: [] }
);
console.log(this.currentQuestion.isAnalyzed || (this.currentQuestion.commitFlag == 2));
if(cIndex == 1 && this.currentQuestion.titleNo > 2) {
console.log(cIndex == 1, this.currentQuestion.titleNo >= 2);
if(cIndex == 1 && this.currentQuestion.titleNo >= 2) {
this.$emit("pageQuestion", 0, this.questionList[0].titleNo);
}
}
......@@ -74,9 +66,9 @@ export default {
// 下一页 // 有可能要触发下分页(后面的个数只有一条)
// TODO
next() {
// if (this.currentQuestion.titleNo == this.totalCount) {
if (this.currentQuestion.titleNo == this.questionList.length) {
// Toast("已是最后一题");
if (this.currentQuestion.titleNo == this.totalCount
// if (this.currentQuestion.titleNo == this.questionList.length
|| this.currentQuestion.titleNo == this.questionList[this.questionList.length - 1].titleNo) {
this.$emit("statistics");
} else {
let cIndex = findQuestionIndexNo(this.questionList, 'titleNo', this.currentQuestion.titleNo);
......@@ -95,6 +87,9 @@ export default {
// 解析
toggleAnalysis() {
this.currentQuestion.isAnalyzed = true;
if(!this.currentQuestion.commitFlag) {
this.commitAnswer();
}
// this.$store.commit('SET_CURRENT_QUESTION', this.currentQuestion);
},
......@@ -105,32 +100,71 @@ export default {
},
// 收藏/取消收藏
favor(currentQuestion) {
let favorFlag = currentQuestion.favorFlag;
favor() {
let favorFlag = this.currentQuestion.favorFlag;
let param = {
dataType: 2,
directoryId: currentQuestion.directoryId,
examTitleId: currentQuestion.titleId,
directoryId: this.currentQuestion.directoryId,
examTitleId: this.currentQuestion.titleId,
operateType: favorFlag == 1 ? 2 : 1, // 操作类型:1:收藏 2:取消收藏
paperId: currentQuestion.paperId,
paperIndex: currentQuestion.paperIndex,
token: this.userInfo.userToken || this.token || '93521BDB92774134B2CC18633F2B6D3A',
paperId: this.currentQuestion.paperId,
paperIndex: this.currentQuestion.paperIndex,
token: this.userInfo.userToken || this.token,
setEntry: true
// userId: 0
};
this.currentQuestion.favorFlag = this.currentQuestion.favorFlag == 0 ? 1 : 0;
this.POST("onlineexam/collectExamTitle", param).then(res => {
if (res.code == "000000") {
if(res.data) {
let cIndex = this.questionList.findIndex( item => {
return item.titleNo = currentQuestion.titleNo;
});
this.questionList[cIndex].favorFlag = favorFlag == 0 ? 1 : 0;
this.currentQuestion.favorFlag = favorFlag == 0 ? 1 : 0;
// let cIndex = this.questionList.findIndex( item => {
// return item.titleNo = this.currentQuestion.titleNo;
// });
// this.questionList[cIndex].favorFlag = favorFlag == 0 ? 1 : 0;
// this.currentQuestion.favorFlag = favorFlag == 0 ? 1 : 0;
}
}
});
}
},
// 提交答案
commitAnswer() {
this.checkTokenForNative( () => {
let params = {
commitKind: this.commonConfig.commitKind, // 答题来源 1:错题集 2:收藏 3:题库
directoryId: this.currentQuestion.directoryId, // 题库ID
myAnswer: this.currentQuestion.myAnswer, // 我的答案,单选时单个答案,如A;多选答案,按照顺序使用
paperId: this.currentQuestion.paperId, // 试卷ID
paperIndex: this.currentQuestion.paperIndex, // 试卷索引(随机试卷的第n套)
resultId: this.titleConfig.resultId, // 刷题库轮次ID,刷收藏和错题集时为0
// rightFlag: 1, // 答题对错:1对 2错
titleId: this.currentQuestion.titleId, // 题目ID
titleNo: this.currentQuestion.titleNo, // 题目ID
setEntry: true,
token: this.userInfo.userToken,
};
// 计算是否答对了题目(只有多选题,才做相应处理)
// if (this.currentQuestion.typeId == 2) {
let isRight = this.currentQuestion.myAnswer == this.currentQuestion.answer;
if (isRight) {
this.currentQuestion.commitFlag = 1;
} else {
this.currentQuestion.commitFlag = 2;
}
this.currentQuestion.isAnalyzed = true;
// }
this.POST(`onlineexam/practise/commit`, params).then(({ data }) => {
console.log('in commitAnswer res', data);
// if(data.resultType == 1) {
// this.currentQuestion.commitFlag = 1;
// } else {
// this.currentQuestion.commitFlag = 0;
// }
}).catch( error => {
this.currentQuestion.commitFlag = 0;
this.currentQuestion.isAnalyzed = false;
})
});
}
}
};
</script>
......
......@@ -2,8 +2,10 @@
<section class="question-header-wrapper">
<img @click="goBack" class="left" src="../../images/left-array-black.png" alt="">
<span class="center">{{title}}</span>
<div class="right">
<span class="order">{{order}}</span><span class="total">/{{total}}</span>
<div class="right" >
<span v-show="total">
<span class="order">{{order}}</span><span class="total">/{{total}}</span>
</span>
</div>
</section>
</template>
......@@ -16,11 +18,11 @@ export default {
},
order: {
type: Number | String,
default: 1,
default: 0,
},
total: {
type: Number | String,
default: 20,
default: 0,
}
},
methods: {
......
const coop = {
state: {
userInfo: {appVersion: '343'},
userInfo: {appVersion: "343", userToken: "EFC0A4A5EC4B49FBBBBCD1AD0E46515F"},
statusBarHeight: {},
projectTabIndex: 1,
jumpURLForI: "", //中华医学会一类跳转地址
......
......@@ -54,7 +54,7 @@ const question = {
},
commonConfig: {
// 0: 免费; 1: 收费; 没有绑卡且是收费题库(bindStatus == 0 && freeFlag == 1)可以走免费体验流程
freeFlag: 0,
freeFlag: 0,
directoryId: "",
secondSubjectId: 0,
cardType: 3,
......@@ -97,19 +97,21 @@ const question = {
// 处理返回的数据
handlerQuestionList({ commit, state }, rezultData) {
let questionList = rezultData.practiseTitleModelList || [];
let handlerList = [], question, option, optionList = [], myAnswer = "", answer = "";
questionList.forEach( (item, index) => {
let handlerList = [], question, option, optionList = [], myAnswer = "",
answer = "", questionContent = "";
questionList.forEach((item, index) => {
myAnswer = item.myAnswer;
answer = item.answer;
answer = item.answer;
question = JSON.parse(JSON.stringify(item));
question.question = question.question.replace(/<img/, '<img style="max-width:98%;"');
question.intro = question.intro.replace(/<img/, '<img style="max-width:98%;"');
let isAnalyzed = question.commitFlag && myAnswer != answer;
question.isAnalyzed = isAnalyzed;
option = {};
optionList = [];
question.options.forEach( (text, i) => {
question.options.forEach((text, i) => {
option.isCorrect = answer.indexOf(getOrderText(i)) != -1;
if(myAnswer.indexOf(getOrderText(i)) != -1) {
if (myAnswer.indexOf(getOrderText(i)) != -1) {
option.isSelected = true;
} else {
option.isSelected = false;
......@@ -125,7 +127,7 @@ const question = {
let newList = concatArray(state.questionList, handlerList, 'titleNo');
commit("SET_QUESTION_LIST", newList);
if(rezultData.isFirst) {
if (rezultData.isFirst) {
let cIndex = findQuestionIndexNo(handlerList, 'titleNo', rezultData.currentTitleNo || 1);
let titleConfig = {
bindStatus: rezultData.bindStatus, // 绑卡状态:0未绑卡 1已绑卡
......@@ -134,7 +136,7 @@ const question = {
resultId: rezultData.resultId, // 刷题库轮次ID
totalCount: rezultData.totalCount, // 题目总数
}
commit("SET_CURRENT_QUESTION", newList[cIndex] || {titleNo: 1});
commit("SET_CURRENT_QUESTION", newList[cIndex] || { titleNo: 1 });
commit("SET_TITLE_CONIFG", titleConfig);
}
},
......
......@@ -14,9 +14,9 @@ service.interceptors.request.use(config => {
if (config.data && config.data.setEntry) {
config.headers['sysCode'] = config.data.sysCode || 10
if (config.data.token) {
config.headers['token'] = config.data.token || '93521BDB92774134B2CC18633F2B6D3A'
config.headers['token'] = config.data.token;
if (process.env.BUILD_ENV == "development") { // 本地开发环境
config.headers['token'] = config.data.token || '93521BDB92774134B2CC18633F2B6D3A';
config.headers['token'] = config.data.token;
}
}
delete config.data.setEntry;
......
......@@ -303,7 +303,7 @@ export function getOrderText(index) {
// 从数组中查找某个key对应值所在的位置(序号:0开始的)
export function findQuestionIndexNo(oList, key, keyValue) {
let index = oList.findIndex( item => {
let index = oList.findIndex(item => {
return item[key] == keyValue;
});
return index;
......@@ -311,22 +311,22 @@ export function findQuestionIndexNo(oList, key, keyValue) {
// 对两个数组中的元素进行排序
export function concatArray(firstArr = [], secondArr = [], key) {
if(firstArr.length == 0) return secondArr;
if(secondArr.length == 0) return [];
if (firstArr.length == 0) return secondArr;
if (secondArr.length == 0) return [];
let all = [], newArr = [], deleteIndex;
if(firstArr[0][key] == secondArr[0][key]) {
if (firstArr[0][key] == secondArr[0][key]) {
return firstArr;
}else if(firstArr[0][key] < secondArr[0][key]) {
} else if (firstArr[0][key] < secondArr[0][key]) {
all = firstArr.concat(secondArr);
} else {
all = secondArr.concat(firstArr);
}
// 从all中去重
for(let i = 0; i < all.length; i ++) {
for (let i = 0; i < all.length; i++) {
deleteIndex = findQuestionIndexNo(all.slice(i + 1), key, all[i][key]);
if(deleteIndex >= 0) {
if (deleteIndex >= 0) {
all.splice(deleteIndex, 1);
i --;
i--;
}
}
console.log("in contactArray", all);
......
import fetch from '@/utils/fetch'
import { getBaseUrl, getApiUrl } from '@/utils/index'
import store from '../store';
module.exports = {
data: function () {
return {
token: null
token: 'weewfwefw'
}
},
created: function () {
......@@ -110,7 +111,7 @@ module.exports = {
// 通用GET请求
GET(api, para, callback, str) {
// debugger
let token = para.token || this.token || this.$store.state.user.token || '93521BDB92774134B2CC18633F2B6D3A';
let token = para.token || this.token || this.$store.state.user.token || this.$store.state.coop.userInfo.userToken;
para.token = token;
delete para.token;
delete para.setEntry;
......@@ -148,7 +149,7 @@ module.exports = {
// 通用POST请求
POST(api, para, callback) {
let token = para.token || this.token || this.$store.state.user.token || '93521BDB92774134B2CC18633F2B6D3A';
let token = para.token || this.token || this.$store.state.user.token || this.$store.state.coop.userInfo.userToken;
para.token = token;
delete para.token;
delete para.setEntry;
......@@ -162,7 +163,7 @@ module.exports = {
// 通用POST请求
NEW_POST(api, para, callback) {
// para.token = para.token || this.token || '00175A13D70D4234822D90AC3C74202C'
// para.token = para.token || this.token || this.$store.state.coop.userInfo.userToken;
return fetch({
url: getBaseUrl(api),
method: 'post',
......@@ -172,7 +173,7 @@ module.exports = {
// 通用GET请求
API_GET(api, para, callback) {
para.token = para.token || this.token || '00175A13D70D4234822D90AC3C74202C' //'AF3DFCF2DD4B4115AC47ACA25D5420E9''F90DF48D3EFA49DFAE1267A67DBEFB18'//token
para.token = para.token || this.token || this.$store.state.coop.userInfo.userToken; //'AF3DFCF2DD4B4115AC47ACA25D5420E9''F90DF48D3EFA49DFAE1267A67DBEFB18'//token
let url = api + this.getUrlPara(para)
return fetch({
url: getApiUrl(url),
......@@ -183,7 +184,7 @@ module.exports = {
// 通用POST请求
API_POST(api, para, callback) {
para.token = para.token || this.token || '00175A13D70D4234822D90AC3C74202C' //'AF3DFCF2DD4B4115AC47ACA25D5420E9''F90DF48D3EFA49DFAE1267A67DBEFB18'//token
para.token = para.token || this.token || this.$store.state.coop.userInfo.userToken; //'AF3DFCF2DD4B4115AC47ACA25D5420E9''F90DF48D3EFA49DFAE1267A67DBEFB18'//token
return fetch({
url: getApiUrl(api),
method: 'post',
......@@ -222,7 +223,8 @@ module.exports = {
// 校验token,有效则调用回调函数,否则调起原生登陆页面
commonCheckToken(cb) {
let param = {
token: this.token,
// token: this.token,
token: this.token || this.$store.state.user.token || this.$store.state.coop.userInfo.userToken,
setEntry: true
};
this.GET("campaign/admin/task/checkToken", param).then(res => {
......@@ -237,7 +239,7 @@ module.exports = {
// 校验token,有效则调用回调函数,否则使用调起原生登陆页面
checkTokenForNative(cb) {
let param = {
token: this.token,
token: this.token || this.$store.state.coop.userInfo.userToken,
setEntry: true
};
this.GET("campaign/admin/task/checkToken", param).then(res => {
......
......@@ -6,13 +6,14 @@
:total="titleConfig.totalCount"
></question-header>
<article class="body">
<question-content v-show="questionList.length"></question-content>
<question-content ref="questionContentRef" v-show="questionList.length"></question-content>
<no-content v-show="!questionList.length" :listType="commitKind"></no-content>
</article>
<!-- <free-tips ></free-tips> -->
<question-footer @statistics="statistics" @pageQuestion="pageQuestion"></question-footer>
<question-footer v-show="questionList.length" @statistics="statistics" @pageQuestion="pageQuestion"></question-footer>
<ExperienceDialog
:showDialog="experienceDialog"
:statisConfig="statisConfig"
@activeCard="activeCard"
@buyCard="buyCard"
@close="experienceDialog = false"
......@@ -67,7 +68,8 @@ export default {
},
data() {
return {
// token: "", // mixns里有
token: "",
// token: "",
directoryId: "",
cardType: 3,
goodsType: 3,
......@@ -95,14 +97,21 @@ export default {
titleNo: 0, // 起始或结束题目ID,首次进入页面时传0,系统自动定位到上次做的题
pageFlag: 0, // 翻页标记:0往前翻页 1往后翻页
pageSize: 5, // 每页大小
},
statisConfig: {
rightNum: 0,
errorNum: 0,
rate: 0
}
};
},
computed: {
...mapGetters([
"userInfo",
"questionList",
"currentQuestion",
"totalCount",
"commonConfig",
"titleConfig"
]),
needFixed() {
......@@ -127,27 +136,15 @@ export default {
this.queryParams.directoryId = this.directoryId;
this.queryParams.secondSubjectId = this.secondSubjectId;
// queryParams: {
// commitKind: 3, // 答题来源 1:错题集 2:收藏 3:题库
// directoryId: 1748, // 题库ID,获取错题集或收藏时传0
// pageFlag: 0, // 翻页标记:0往前翻页 1往后翻页
// pageSize: 5, // 每页大小
// secondSubjectId: 106, // 二级学科分类ID:用于判断学科下目录免费题数
// titleNo: 0 // 起始或结束题目ID,首次进入页面时传0,系统自动定位到上次做的题
// }
window.__getUserInfoForQD = function(param) {
_this.token = param.userToken;
_this.setUserInfo(param);
_this.getPractiseTitles(true);
// _this.checkToken();
_this.init();
};
if (__isWeb) {
_this.getPractiseTitles(true);
} else {
_this.init();
// _this.getUserInfo();
} else {
this.getUserInfo();
}
window.__refresh = function() {
......@@ -165,9 +162,7 @@ export default {
methods: {
...mapActions(["setUserInfo", "handlerQuestionList"]),
init() {
// if (this.commitKind >= 2 && this.commitKind <= 4) {
this.currentTitle = titleArray[this.commitKind] || "习题集";
// }
this.currentTitle = titleArray[this.commitKind] || "习题集";
this.$store.commit("SET_COMMON_CONIFG", {
// 0: 免费; 1: 收费; 没有绑卡且是收费题库(bindStatus == 0 && freeFlag == 1)可以走免费体验流程
freeFlag: this.freeFlag,
......@@ -177,8 +172,7 @@ export default {
goodsType: this.goodsType,
commitKind: this.commitKind // 答题来源 1:错题集 2:收藏 3:题库
});
this.getUserInfo();
// this.getPractiseTitles();
this.getPractiseTitles(true);
// this.preJumper();
},
......@@ -191,13 +185,34 @@ export default {
// 统计当前信息
statistics() {
let correctNum = 0,
errNum = 0,
// 如果是收费的题库(不是错题集或收载),并且没有绑定卡
console.log(this.commonConfig.freeFlag, this.commitKind == 3, !this.titleConfig.bindStatus);
if(!(this.commonConfig.freeFlag == 1 && this.commitKind == 3 && !this.titleConfig.bindStatus)) {
Toast("已是最后一题");
return;
}
let rightNum = 0,
errorNum = 0,
rate = 0;
this.questionList.forEach(item => {
if (item.commitKind) {
if (item.commitFlag) {
if(item.myAnswer == item.answer) {
rightNum ++;
} else {
errorNum ++;
}
}
});
console.log();
if((rightNum + errorNum) > 0) {
rate = (rightNum * 100 / (rightNum + errorNum)).toFixed(0);
this.statisConfig = {
rightNum,
errorNum,
rate
}
}
this.experienceDialog = true;
},
......@@ -210,20 +225,21 @@ export default {
// 打开激活弹框
activeCard() {
this.experienceDialog = false;
this.showChangeCard = true;
this.checkTokenForNative(() => {
this.experienceDialog = false;
this.showChangeCard = true;
});
},
buyCard() {
!__isWeb && this.confirm();
this.checkTokenForNative(() => {
this.confirm();
});
},
// 跳转到原生的购买页面
confirm() {
// this.$sendBuriedData({
// component_tag: `882#88203`
// });
let appVersion = this.userInfo.appVersion || "";
let appVersionNum = appVersion.split(".").join("");
if (appVersionNum < 344) {
......@@ -256,7 +272,6 @@ export default {
seqNo: 1
}
];
this.$refs.tcPlayerRef && this.$refs.tcPlayerRef.pause();
rocNative.dispatchEventByModuleCode({
modeCode: "M200",
jsonString: paramList
......@@ -292,13 +307,16 @@ export default {
// 分页获取题目(前、后翻页)
getPractiseTitles(isFirst) {
if(isFirst) {
this.$store.commit("SET_QUESTION_LIST", []);
}
this.queryParams.token = this.userInfo.userToken || this.token;
this.queryParams.setEntry = true;
this.GET(`portal/titleTest/practise/titles`, this.queryParams).then(
({ data }) => {
this.currentTitleNo = data.currentTitleNo;
data.isFirst = isFirst;
this.handlerQuestionList(data);
// this.handlerPractiseData(data.practiseTitleModelList);
console.log(data);
}
);
},
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册