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