diff --git a/src/main.js b/src/main.js index 6acd26e..7ef2f9a 100644 --- a/src/main.js +++ b/src/main.js @@ -15,6 +15,7 @@ Vue.prototype.kqUrl = 'https://proxy.shunzhi.net/achieve' import yxAxios from '@/https/yxAxios' Vue.prototype.yxAxios = yxAxios; +Vue.prototype.dialog = Dialog; import { mgop } from '@aligov/jssdk-mgop'; Vue.prototype.mgop = mgop; diff --git a/src/views/Service/ServiceKQ.vue b/src/views/Service/ServiceKQ.vue index 2d232d1..cff239d 100644 --- a/src/views/Service/ServiceKQ.vue +++ b/src/views/Service/ServiceKQ.vue @@ -4,6 +4,7 @@ <script> import ServiceBasekq from './ServiceBaseKQ.vue' +const userData = require('@/views/answerRank/data.json'); export default { name: 'ServiceKQ', data() { @@ -49,10 +50,10 @@ export default { window.location.href = `https://puser.zjzwfw.gov.cn/sso/alipay.do?action=ssoLogin&servicecode=hswsy` } else { alert('非浙里办渠道访问,显示测试用户数据') - console.log('非浙里办渠道访问,显示测试用户数据') + console.log('非浙里办渠道访问,显示测试用户数据',userData) this.centerNo = '2021111017103639979048000010279' localStorage.setItem('centerNo', '2021111017103639979048000010279') - let userInfo = JSON.stringify({'userId': 10}) + let userInfo = JSON.stringify(userData) localStorage.setItem('userInfo', userInfo) this.getUserInfo() } diff --git a/src/views/Yanxue/achievementsOne.vue b/src/views/Yanxue/achievementsOne.vue index 3969cb5..e720119 100644 --- a/src/views/Yanxue/achievementsOne.vue +++ b/src/views/Yanxue/achievementsOne.vue @@ -66,7 +66,7 @@ export default { if (res.data.code == 200) { this.newsList = res.data.data.list; } else { - this.$message.warning(res.data.message); + this.$toast.fail(res.data.message); } }); // this.yxAxios @@ -79,7 +79,7 @@ export default { // if (res.data.success) { // this.newsList = res.data.data.list; // } else { - // this.$message.warning(res.data.message); + // this.$toast.fail(res.data.message); // } // }); }, diff --git a/src/views/Yanxue/chooseSchoolOne.vue b/src/views/Yanxue/chooseSchoolOne.vue index 0eded7a..fa291dc 100644 --- a/src/views/Yanxue/chooseSchoolOne.vue +++ b/src/views/Yanxue/chooseSchoolOne.vue @@ -50,7 +50,7 @@ export default { this.schoolList = res.data.data; console.log(this.schoolList) } else { - this.$message.warning(res.data.message); + this.$toast.fail(res.data.message); } }); // this.yxAxios @@ -63,7 +63,7 @@ export default { // if (res.data.success) { // this.schoolList = res.data.data.list; // } else { - // this.$message.warning(res.data.message); + // this.$toast.fail(res.data.message); // } // }); }, diff --git a/src/views/Yanxue/pageDetails.vue b/src/views/Yanxue/pageDetails.vue index 024c726..c3b0813 100644 --- a/src/views/Yanxue/pageDetails.vue +++ b/src/views/Yanxue/pageDetails.vue @@ -58,7 +58,7 @@ export default { this.modelList = arr; // this.showFrame(); } else { - this.$message.warning(res.data.message); + this.$toast.fail(res.data.message); } }); // this.yxAxios @@ -77,7 +77,7 @@ export default { // this.modelList = arr; // // this.showFrame(); // } else { - // this.$message.warning(res.data.message); + // this.$toast.fail(res.data.message); // } // }); }, diff --git a/src/views/answerRank/ans_question.vue b/src/views/answerRank/ans_question.vue index 5a8d686..f3fe39a 100644 --- a/src/views/answerRank/ans_question.vue +++ b/src/views/answerRank/ans_question.vue @@ -2,35 +2,182 @@ <div class="bck"> <div class="title"> <div>单向选择</div> - <div>1<span>/5</span></div> + <div> + {{ dataObj.curNum }}<span>/{{ dataObj.totalNum }}</span> + </div> </div> <div class="ans"> - 这是一套题的题目,这是一题非常有难度的题,其考点在于对地理知识的储备量 + {{ dataObj.title }} </div> - <div class="ans_card"> - <div class="ans_item yellow">A.火星</div> - <div class="ans_item grey">B.水性</div> - <div class="ans_item grey">C.绍兴</div> + <div class="ans_card" v-for="(v, i) in contentJsonArray" :key="i"> + <div + class="ans_item grey" + :class="checkIndex === i ? 'yellow' : 'grey'" + @click="subAns(v.k, i)" + > + {{ v.k + " . " + v.v }} + </div> + <!-- <div class="ans_item grey">B.水性</div> + <div class="ans_item yellow">C.绍兴</div> --> </div> <div class="whiteLine"></div> - <div class="reply"> - <div class="reply_title">正确答案:a</div> - <div class="reply_text"> - 解析:本题的难点在于基础知识的掌握,同学们要注意这个陷阱问题,区别火星和水星在初级阶段是比较容易混淆,所以本题答案选a - </div> + <div class="reply" v-if="rightData.isShow"> + <div class="reply_title">正确答案:{{ rightData.rightAnswer }}</div> + <div class="reply_text">解析:{{ rightData.remark }}</div> </div> - <div class="btn">下一题</div> + <div + class="btn blue" + v-if="dataObj.curNum != 0 && dataObj.curNum == dataObj.totalNum" + @click="toEnd" + > + 完成 + </div> + <div class="btn" v-else @click="toNext">下一题</div> </div> </template> <script> export default { data() { - return {}; + return { + categoryId: 0, + dataObj: { + answer: null, + contentJsonArray: null, + curNum: 0, + id: 0, + itemCategoryId: 0, + remark: null, + score: 0, + sort: 0, + status: 0, + title: "", + totalNum: 0, + version: 0, + }, + contentJsonArray: [], //选项 + checkIndex: "", + //答案-解析 + rightData: { + rightAnswer: "", + remark: "", + isShow: false, + }, + }; + }, + methods: { + //获取题目-开始答题 + toBank() { + if (!this.categoryId) return this.$toast.fail("题库Id为空"); + this.yxAxios + .get( + `${ + this.kqUrl + }/item/getItemBank?travelerNum=${localStorage.getItem( + "travelerNum" + )}&categoryId=${this.categoryId}` + ) + .then((res) => { + if (res.data.code == 200) { + this.dataObj = res.data.data; + this.contentJsonArray = JSON.parse( + this.dataObj.contentJsonArray + ); + } else { + this.$toast.fail(res.data.message); + } + }); + }, + //提交答案 + subAns(val, index) { + this.checkIndex = index; + this.yxAxios + .get( + `${ + this.kqUrl + }/item/submit?travelerNum=${localStorage.getItem( + "travelerNum" + )}&itemBankId=${this.dataObj.id}&answer=${val}` + ) + .then((res) => { + if (res.data.code == 200) { + const data = res.data.data; + this.rightData = { + rightAnswer: data.rightAnswer, + remark: data.remark, + isShow: true, + }; + } else { + this.$toast.fail(res.data.message); + } + }); + }, + //下一题 + toNext() { + this.yxAxios + .get( + `${ + this.kqUrl + }/item/nextOne?travelerNum=${localStorage.getItem( + "travelerNum" + )}&curItemBankId=${this.dataObj.id}&categoryId=${ + this.categoryId + }` + ) + .then((res) => { + if (res.data.code == 200) { + this.remakeData(); + this.dataObj = res.data.data; + } else { + this.$toast.fail(res.data.message); + } + }); + }, + //完成 + toEnd() { + this.yxAxios + .get( + `${ + this.kqUrl + }/item/finish?travelerNum=${localStorage.getItem( + "travelerNum" + )}&categoryId=${this.categoryId}` + ) + .then((res) => { + if (res.data.code == 200) { + this.$dialog.alert({ + title: "完成答题", + message: "您的分数是:" + res.data.data, + theme: "round-button", + }).then(() => { + this.$router.push({ + name: 'stars' + }) + }); + } else { + this.$toast.fail(res.data.message); + } + }); + }, + //重置数据 + remakeData() { + this.rightData = { + rightAnswer: "", + remark: "", + isShow: false, + }; + (this.contentJsonArray = []), //选项 + (this.checkIndex = ""); + this.dataObj = this.$options.data().dataObj; + }, + }, + mounted() { + this.categoryId = this.$route.query.categoryId; + this.toBank(); }, }; </script> @@ -102,7 +249,7 @@ export default { bottom: 5vw; width: 70vw; height: 100px; - background-color: #FF3636; + background-color: #ff3636; font-size: 4.4vw; margin: 30vw 0 10vw; color: #fff; @@ -112,5 +259,8 @@ export default { border-radius: 10vw; letter-spacing: 10px; } + .blue { + background-color: #409eff; + } } </style> \ No newline at end of file diff --git a/src/views/answerRank/data.json b/src/views/answerRank/data.json new file mode 100644 index 0000000..66159d9 --- /dev/null +++ b/src/views/answerRank/data.json @@ -0,0 +1,130 @@ +{ + "nickName": null, + "travelerName": "夏洋涛", + "phone": "17858500169", + "centerNo": "2022031508525674030748540013076", + "idCard": "330881199606054935", + "thirdSource": 1, + "unionId": "oJPmPuLaAx2x2DaRGfCFeYuLWzLU", + "userState": null, + "userType": 2, + "gender": 1, + "isMember": 2, + "subUsers": [{ + "id": 49238, + "travelerName": "xia", + "travelerIdCard": "330881199606054935", + "travelerNum": "2022042515320607668704830046683", + "travelerMobile": "17858500169", + "travelerType": 0, + "enrollYear": "2016", + "age": null, + "gender": 1, + "channelCode": null, + "unionId": null, + "province": "浙江省", + "city": "温州市", + "area": "瓯海区", + "schoolName": "温州市第二十一中学", + "gradeName": "1班", + "className": "1班", + "whiteFlag": 1, + "studyCode": null, + "userState": 1, + "userType": 1, + "memberId": null, + "bingMobile": "17858500169", + "isBing": 1, + "ssoId": null, + "sex": null, + "pass": null, + "syncTime": "2022-04-25T15:32:06.250+08:00", + "updateTime": "2022-04-28T11:09:57.667+08:00" + }, { + "id": 52229, + "travelerName": "林淡", + "travelerIdCard": "331081198803306735", + "travelerNum": "2022050615163709304353550045179", + "travelerMobile": "15168313607", + "travelerType": null, + "enrollYear": null, + "age": null, + "gender": 1, + "channelCode": null, + "unionId": null, + "province": null, + "city": null, + "area": null, + "schoolName": null, + "gradeName": null, + "className": null, + "whiteFlag": null, + "studyCode": null, + "userState": 1, + "userType": 2, + "memberId": null, + "bingMobile": "13989547857,17858500169", + "isBing": 1, + "ssoId": null, + "sex": null, + "pass": null, + "syncTime": "2022-05-06T15:16:37.933+08:00", + "updateTime": "2022-05-06T15:23:51.297+08:00" + }, { + "id": 52230, + "travelerName": "林珈逸", + "travelerIdCard": "330602201507040021", + "travelerNum": "2022050615244927688271930045180", + "travelerMobile": "15168313607", + "travelerType": 1, + "enrollYear": "2021", + "age": null, + "gender": 2, + "channelCode": null, + "unionId": null, + "province": "浙江省", + "city": "绍兴市", + "area": "越城区", + "schoolName": "绍兴市塔山中心小学", + "gradeName": "3班", + "className": "3班", + "whiteFlag": null, + "studyCode": null, + "userState": 1, + "userType": 1, + "memberId": null, + "bingMobile": "17858500169,13989547857", + "isBing": 1, + "ssoId": null, + "sex": null, + "pass": null, + "syncTime": "2022-05-06T15:24:49.563+08:00", + "updateTime": "2022-07-09T12:20:29.790+08:00" + }], + "schoolNames": [{ + "schoolId": 7, + "schoolName": "绍兴市塔山中心小学", + "province": null, + "city": null, + "area": null + }, { + "schoolId": 4804, + "schoolName": "绍兴市建功中学", + "province": null, + "city": null, + "area": null + }, { + "schoolId": 355, + "schoolName": "绍兴蕺山外国语学校", + "province": null, + "city": null, + "area": null + }, { + "schoolId": 188, + "schoolName": "温州市第二十一中学", + "province": null, + "city": null, + "area": null + }], + "auth": false +} \ No newline at end of file diff --git a/src/views/answerRank/rank.vue b/src/views/answerRank/rank.vue index 61d2f25..216dea3 100644 --- a/src/views/answerRank/rank.vue +++ b/src/views/answerRank/rank.vue @@ -55,12 +55,7 @@ export default { data() { return { active: "a", - rankList: [ - {}, - {}, - {}, - {}, - ] + rankList: [] }; }, methods: { diff --git a/src/views/answerRank/stars.vue b/src/views/answerRank/stars.vue index e0915c6..ee6ac06 100644 --- a/src/views/answerRank/stars.vue +++ b/src/views/answerRank/stars.vue @@ -7,21 +7,23 @@ <img src="@/assets/rank/tx.png" /> </div> <div class="font_box"> - <div class="font_name">熊初墨</div> - <div class="font_sch">柯桥实验小学元培学院</div> + <div class="font_name" @click="getUser"> + {{ user.travelerName }} + </div> + <div class="font_sch">{{ user.schoolName }}</div> </div> </div> <div class="L_mid"> <div class="mid_item"> <div> - <span class="strong_font">23</span> + <span class="strong_font">xx</span> <span>分</span> </div> <div class="grey_font">已完成题数</div> </div> <div class="mid_item"> <div> - <span class="strong_font">50</span> + <span class="strong_font">xx</span> <span>%</span> </div> <div class="grey_font">正确率</div> @@ -59,14 +61,19 @@ <div class="flexBox" v-for="(v, i) in libraryList" :key="i"> <div class="tipPic"> - <img :src="v.imgUrl" /> + <!-- <img :src="v.imgUrl" /> --> + <img v-if="v.type == 1" src="@/assets/rank/qt.png" /> + <img v-if="v.type == 2" src="@/assets/rank/hj.png" /> + <img v-if="v.type == 3" src="@/assets/rank/bj.png" /> </div> <div class="context"> - <div class="context_title">{{ v.name }}</div> - <div class="context_grey">{{ v.text }}</div> + <div class="context_title" v-if="v.type == 1">青铜级</div> + <div class="context_title" v-if="v.type == 2">黄金级</div> + <div class="context_title" v-if="v.type == 3">白金级</div> + <div class="context_grey">{{ v.remark }}</div> </div> <div class="btnBox"> - <div class="btn" @click="toAns(i + 1)">开始答题</div> + <div class="btn" @click="toAns(v)">开始答题</div> </div> </div> </div> @@ -78,30 +85,75 @@ export default { data() { return { libraryList: [ - { - name: "青铜级", - text: "夯实基础,稳步前进", - imgUrl: require("@/assets/rank/qt.png"), - }, - { - name: "黄金级", - text: "夯实基础,稳步前进", - imgUrl: require("@/assets/rank/hj.png"), - }, - { - name: "白金级", - text: "夯实基础,稳步前进", - imgUrl: require("@/assets/rank/bj.png"), - }, + // { + // name: "青铜级", + // text: "夯实基础,稳步前进", + // imgUrl: require("@/assets/rank/qt.png"), + // }, + // { + // name: "黄金级", + // text: "夯实基础,稳步前进", + // imgUrl: require("@/assets/rank/hj.png"), + // }, + // { + // name: "白金级", + // text: "夯实基础,稳步前进", + // imgUrl: require("@/assets/rank/bj.png"), + // }, ], + userInfo: {}, + user: { + travelerName: "", + travelerNum: 0, + schoolName: "", + }, }; }, methods: { + //获取用户信息 + getUser() { + this.userInfo = JSON.parse(localStorage.getItem("userInfo")); + console.log(this.userInfo); + if (!this.userInfo.subUsers || this.userInfo.subUsers.length == 0) { + return this.$toast.fail("暂无绑定出行人"); + } + localStorage.setItem( + "travelerNum", + this.userInfo.subUsers[0].travelerNum + ); + + this.user = { + travelerNum: this.userInfo.subUsers[0].travelerNum, + travelerName: this.userInfo.subUsers[0].travelerName, + schoolName: this.userInfo.subUsers[0].schoolName, + }; + }, + //开始答题 toAns(val) { this.$router.push({ name: "ans_question", + query: {categoryId:val.itemCategoryId} }); }, + //获取类型 + getType() { + this.yxAxios + .get( + `${this.kqUrl}/item/getItemCategory?travelerNum=` + + localStorage.getItem("travelerNum") + ) + .then((res) => { + if (res.data.code == 200) { + this.libraryList = res.data.data + } else { + this.$toast.fail(res.data.message); + } + }); + }, + }, + mounted() { + this.getUser(); + this.getType(); }, }; </script> @@ -262,6 +314,7 @@ export default { border-bottom: 1px solid #f1f1f1; .tipPic { + width: 15vw; img { width: 16vw; height: 16vw; -- libgit2 0.21.0