Jelajahi Sumber

修改考试上拉加载

aaa 4 tahun lalu
induk
melakukan
2c44c21115

+ 3 - 1
src/api/modules/user.js

@@ -27,6 +27,8 @@ export default {
     // 获取蓝信签名
     JTXT_GET_LAN_XIN_SIGNATURE: "/lanXin/getJsApiSignature",
     // 获取蓝信用户信息
-    JTXT_GET_LAN_XIN_USER_INFO: "/lanXin/getUserInfo"
+    JTXT_GET_LAN_XIN_USER_INFO: "/lanXin/getUserInfo",
+    // 工种列表
+    JTXT_GET_ENGINEERINGWORK_LIST: "/engineertypes"
   }
 };

+ 43 - 8
src/views/home/exam/page-exam.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="page-exam-box">
+  <div class="page-exam-box" @scroll="scrollExamBox($event)" ref="exam-box">
     <div class="exam-list" v-if="examList.length > 0">
       <div
         class="exam-item"
@@ -60,7 +60,10 @@ export default {
         NOTEXAM: 4 // 未参考
       },
       examList: [],
-      isInited: false // 是否已加载完毕
+      isInited: false, // 是否已加载完毕
+      examPage: 0,
+      examSize: 10,
+      canExamFlag: true // 加载考试标志
     };
   },
   computed: {
@@ -80,21 +83,27 @@ export default {
   },
   created() {
     this.getExamListFun(); // 查询:考试的场次列表信息
+    window.addEventListener("scroll", this.handleExamScroll, true);
+  },
+  destroyed () {
+    window.removeEventListener("scroll", this.scrollHander);
   },
   methods: {
     // 查询:考试场次的列表信息
     getExamListFun() {
       this.isInited = false;
       this.$store.commit("toggleLoading", true);
-      this.examList = [];
       let params = {
-        type: this.chooseEngneeringWork.value
+        // type: this.chooseEngneeringWork.name,
+        page: this.examPage,
+        size: this.examSize
       };
       this.$_http
         .get(this.$_API.GET_JTXT_GET_EXAMS, { params })
         .then(res => {
+        //   console.log("--exams--" + JSON.stringify(res));
           if (res.data) {
-            res.data.forEach(item => {
+            res.data.content.forEach(item => {
               let formateTimeDiff = this.formateTimeDiffFun(item.duration);
               item.examTimeMins = formateTimeDiff.examTimeMins;
               item.examTimeMinsTxt = formateTimeDiff.examTimeMinsTxt;
@@ -102,18 +111,44 @@ export default {
               item.examStatus = obj.status;
               item.examStatusTxt = obj.statusTxt;
             });
+            // 分页到底了
+            if (res.data.last) {
+              this.canExamFlag = false;
+              Toast("没有更多内容了");
+            } else {
+              this.canExamFlag = true;
+            }
             this.$nextTick(() => {
-              this.examList = res.data;
+              this.examList = [...this.examList, ...res.data.content];
+            //   console.log("----" + JSON.stringify(this.examList));
             });
             this.isInited = true;
           }
           this.$store.commit("toggleLoading", false);
         })
         .catch(() => {
+          this.canExamFlag = false;
+          Toast("系统异常");
           this.$store.commit("toggleLoading", false);
         });
     },
-    // 过滤秒为 时:分:秒 及 xx小时xx分钟xx秒
+
+    async handleExamScroll() {
+      let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
+      var windowHeight =
+        document.documentElement.clientHeight || document.body.clientHeight;
+      var scrollHeight =
+        document.documentElement.scrollHeight || document.body.scrollHeight;
+      //   console.log("---scrollTop-----" + scrollTop);
+      //   console.log("---windowHeight-----" + windowHeight);
+      //   console.log("---scrollHeight-----" + scrollHeight);
+      if (this.canExamFlag && scrollTop + windowHeight >= scrollHeight - 100) {
+        this.canExamFlag = false;
+        console.log("触底");
+        this.examPage = this.examPage + 1;
+        await this.getExamListFun();
+      }
+    },
     formateTimeDiffFun(secondes) {
       let hours = Math.floor(secondes / (1000 * 60 * 60));
       let minutes = Math.floor(
@@ -144,7 +179,7 @@ export default {
 
       if (curTime >= startTimesCeconds) {
         if (curTime >= endTimeCeconds) {
-          if (this.exam.examHistoryObj[exam.id]) {
+          if (this.exam.examHistoryObj && this.exam.examHistoryObj[exam.id]) {
             return {
               status: this.examStatesType.EXAMOVER,
               statusTxt: "已考完"

+ 46 - 1
src/views/home/index.vue

@@ -67,7 +67,9 @@ export default {
           iconInactive: require("@/assets/image/homeTab/person.png"),
           iconActive: require("@/assets/image/homeTab/personActive.png")
         }
-      ]
+      ],
+      engineeringWorkChooseValue: null, // 工种选择的值
+      engineeringWorkList: [] // 工种可选列表
     };
   },
   computed: {
@@ -122,6 +124,8 @@ export default {
           this.getCollection();
           // 获取所有考试历史
           this.getExamHistory();
+          //   查询工作信息
+          this.getEngineeringWorkList();
         })
         .catch(() => {
           this.$store.commit("toggleLoading", false);
@@ -181,6 +185,47 @@ export default {
           this.$store.commit("toggleLoading", false);
         });
     },
+    // 初始化工种信息
+    getEngineeringWorkList() {
+      //     this.engineeringWorkList = [
+      //   { text: "桥隧工", value: "QiaoSuiGong" },
+      //   // { text: "测量工", value: "CeLiangGong" },
+      //   { text: "线路工", value: "XianLuGong" }
+      // ];
+      this.$_http
+        .get(this.$_API.JTXT_GET_ENGINEERINGWORK_LIST)
+        .then(res => {
+          this.engineeringWorkList = res.data;
+          this.engineeringWorkList.forEach(element => {
+            element["text"] = element.name;
+            element["value"] = element.name;
+          });
+          //   选择工作列表
+          this.engineeringWorkChooseValue =
+      this.chooseEngneeringWork && this.chooseEngneeringWork.value
+        ? this.chooseEngneeringWork.value
+        : this.engineeringWorkList[0].value;
+          this.handleChangeEngneeringWorkFun(this.engineeringWorkChooseValue);
+        })
+        .catch(() => {
+          this.$store.commit("toggleLoading", false);
+        });
+    },
+    // 操作:选择了工种
+    handleChangeEngneeringWorkFun(value) {
+      let resultItem = null;
+      for (let i = 0; i < this.engineeringWorkList.length; i++) {
+        let item = this.engineeringWorkList[i];
+        if (value === item.value) {
+          resultItem = item;
+          break;
+        }
+      }
+      this.$store.commit("updateUserItemStore", {
+        field: "chooseEngneeringWork",
+        value: resultItem
+      });
+    },
     // 获取蓝信签名和鉴权
     getLanXinSignature() {
       this.$store.commit("toggleLoading", true);

+ 0 - 1
src/views/home/person/exam-history.vue

@@ -99,7 +99,6 @@ export default {
       this.$_http
         .get(this.$pathParams(this.$_API.JTXT_GET_USER_EXAM_POINTS, path))
         .then(res => {
-          console.log("----" + JSON.stringify(res));
           if (res.data.GENERAL_EXAM) {
             this.generalExamPoints = res.data.GENERAL_EXAM;
           }

+ 30 - 12
src/views/home/person/page-person.vue

@@ -145,21 +145,39 @@ export default {
     })
   },
   mounted() {
-    this.engineeringWorkList = [
-      { text: "桥隧工", value: "QiaoSuiGong" },
-      // { text: "测量工", value: "CeLiangGong" },
-      { text: "线路工", value: "XianLuGong" }
-    ];
-    this.engineeringWorkChooseValue =
+    this.getEngineeringWorkList();
+  },
+  methods: {
+    // 获取工作列表
+    getEngineeringWorkList() {
+      //     this.engineeringWorkList = [
+      //   { text: "桥隧工", value: "QiaoSuiGong" },
+      //   // { text: "测量工", value: "CeLiangGong" },
+      //   { text: "线路工", value: "XianLuGong" }
+      // ];
+      this.$_http
+        .get(this.$_API.JTXT_GET_ENGINEERINGWORK_LIST)
+        .then(res => {
+          console.log("--获取工作列表--" + JSON.stringify(res));
+          this.engineeringWorkList = res.data;
+          this.engineeringWorkList.forEach(element => {
+            element["text"] = element.name;
+            element["value"] = element.name;
+          });
+          //   选择工作列表
+          this.engineeringWorkChooseValue =
       this.chooseEngneeringWork && this.chooseEngneeringWork.value
         ? this.chooseEngneeringWork.value
         : this.engineeringWorkList[0].value;
-    this.handleChangeEngneeringWorkFun(this.engineeringWorkChooseValue);
-    console.log(this.userInfo);
-    this.getDailyPoints();
-    this.getAllPoints();
-  },
-  methods: {
+          this.handleChangeEngneeringWorkFun(this.engineeringWorkChooseValue);
+          console.log(this.userInfo);
+          this.getDailyPoints();
+          this.getAllPoints();
+        })
+        .catch(() => {
+          this.$store.commit("toggleLoading", false);
+        });
+    },
     // 操作:选择了工种
     handleChangeEngneeringWorkFun(value) {
       let resultItem = null;

+ 0 - 1
src/views/home/person/user-manual.vue

@@ -180,7 +180,6 @@ export default {
             res.data.forEach(element => {
               this.sumPointsObj[element.event] += element.delta;
             });
-            console.log("-------" + JSON.stringify(this.sumPointsObj));
             this.updateGetPoints();
           }
         })