Преглед изворни кода

Merge branch 'dev' into xqy_h5

谢杰标 пре 2 година
родитељ
комит
c844fb057a
50 измењених фајлова са 5711 додато и 4907 уклоњено
  1. 0 92
      common/config copy.js
  2. 11 2
      common/httpList/course.js
  3. 496 504
      common/httpList/goods.js
  4. 0 1
      common/request.js
  5. 75 0
      components/course/handoutsBox.vue
  6. 169 0
      components/course/handoutsTree.vue
  7. 82 0
      components/nav-bar/nav-logo.vue
  8. 3 0
      main.js
  9. 1169 1170
      pages.json
  10. 3 15
      pages/course/index.vue
  11. 3 46
      pages/index/index.vue
  12. 29 25
      pages/learn/index.vue
  13. 1 14
      pages/questionBank/index.vue
  14. 1 20
      pages/wd/index.vue
  15. 2 2
      pages/webview/sdlink.vue
  16. 1023 794
      pages2/bank/detail.vue
  17. 25 33
      pages2/bank/questionBank.vue
  18. 18 1
      pages2/bank/questionBankContinue.vue
  19. 3 3
      pages2/bank/question_detail.vue
  20. 23 12
      pages2/class/questionBank.vue
  21. 1771 1409
      pages2/invoice/index.vue
  22. 1 1
      pages2/learn/my_learn.vue
  23. 2 1
      pages2/msg/detail.vue
  24. 35 6
      pages2/order/confirm_list.vue
  25. 7 1
      pages2/order/confirm_pay.vue
  26. 282 262
      pages2/order/confirm_success.vue
  27. BIN
      pages2/static/icon-collect.png
  28. BIN
      pages2/static/icon-succecc.png
  29. 1 0
      pages2/subject/wrongTypeBank.vue
  30. 16 11
      pages2/wd/class.vue
  31. 85 21
      pages3/course/detail.vue
  32. 101 177
      pages3/polyv/detail.vue
  33. 3 15
      pages4/shopping/shoppingCart.vue
  34. 1 1
      pages5/exam/index.vue
  35. 23 10
      pages5/examBank/index.vue
  36. 1 1
      pages5/liveDetail/list.vue
  37. 1 1
      pages5/liveList/index.vue
  38. 0 256
      pages5/scan/examact.vue
  39. 227 0
      pages5/scan/retailact.vue
  40. BIN
      static/qrcode/h_act.png
  41. BIN
      static/qrcode/hnjsxt_act.png
  42. BIN
      static/qrcode/kw-xy.png
  43. BIN
      static/qrcode/mh5_act.png
  44. BIN
      static/qrcode/sdyxt_act.png
  45. BIN
      static/qrcode/sxh5_act.png
  46. BIN
      static/qrcode/yf_act.png
  47. BIN
      static/qrcode/zh5_act.png
  48. BIN
      static/qrcode/zsh5_act.png
  49. 16 0
      static/style/index.scss
  50. 2 0
      uni.scss

+ 0 - 92
common/config copy.js

@@ -1,92 +0,0 @@
-// test 测试环境
-const test = {
-  BASE_URL: "http://120.79.166.78:19012",
-  BASE_IMG_URL: "https://file-dev.xyyxt.net/",
-  WEBVIEW_URL: "http://120.79.166.78:18001/",
-  domain: "h.xyyxt.net",
-  tenantId: "867735392558919680", //详粤云学堂
-  appid: "wxd3c8ae80cf43a305",
-  version: "1.0.2",
-  TOP_LOGO: "/static/logo2.png",
-  SCAN_LOGO: "/static/me/logo.png",
-  tenantName: "祥粤云学堂",
-  host:
-    process.env.NODE_ENV === "production"
-      ? window.location.host
-      : "120.79.166.78:19012",
-};
-const index = 0; // 测试环境
-// const index = 1 // 祥粤云学堂
-// const index = 2 // 祥粤学堂
-// const index = 3 // 勘设云学堂
-// const index = 4 // 中正云学堂
-// const index = 5 // 山西云学堂
-const set = [
-  test,
-  // 祥粤云学堂
-  {
-    BASE_URL: "https://api.xyyxt.net",
-    BASE_IMG_URL: "https://file.xyyxt.net/",
-    WEBVIEW_URL: "https://m.xyyxt.net/",
-    domain: "h.xyyxt.net",
-    tenantId: "867735392558919680",
-    appid: "wxd3c8ae80cf43a305",
-    tenantName: "祥粤云学堂",
-    version: "1.0.2",
-    TOP_LOGO: "/static/logo2.png",
-    SCAN_LOGO: "/static/me/logo.png",
-  },
-  // 祥粤学堂
-  {
-    BASE_URL: "https://api.xyyxt.net",
-    BASE_IMG_URL: "https://file.xyyxt.net/",
-    WEBVIEW_URL: "https://cm.xyyxt.net/",
-    domain: "",
-    tenantId: "667735392758919630",
-    appid: "wx871153afc95f55f4",
-    tenantName: "祥粤学堂",
-    version: "1.0.2",
-    TOP_LOGO: "/static/logo2.png",
-    SCAN_LOGO: "/static/me/logo.png",
-  },
-  // 勘设云学堂
-  {
-    BASE_URL: "https://api.xyyxt.net",
-    BASE_IMG_URL: "https://file.xyyxt.net/",
-    WEBVIEW_URL: "https://zstcm.xyyxt.net/",
-    domain: "",
-    tenantId: "567735392758918520",
-    appid: "wx29d0ad81e625ad81",
-    tenantName: "勘设云学堂",
-    version: "1.0.2",
-    TOP_LOGO: "/static/logo520.png",
-    SCAN_LOGO: "/static/me/logo520.png",
-  },
-  // 中正云学堂
-  {
-    BASE_URL: "https://api.xyyxt.net",
-    BASE_IMG_URL: "https://file.xyyxt.net/",
-    WEBVIEW_URL: "https://live.gdzzkj.net/",
-    domain: "h.gdzzkj.net",
-    tenantId: "141250585240548145",
-    appid: "wx5872ef563d13dabf",
-    tenantName: "中正云学堂",
-    version: "1.0.2",
-    TOP_LOGO: "/static/logo145.png",
-    SCAN_LOGO: "/static/me/logo145.png",
-  },
-  // 山西云学堂
-  {
-    BASE_URL: "https://api.xyyxt.net",
-    BASE_IMG_URL: "https://file.xyyxt.net/",
-    WEBVIEW_URL: "https://sxlive.gdzzkj.net /",
-    domain: "sxm.gdzzkj.net",
-    tenantId: "471722209971055962",
-    appid: "wx5872ef563d13dabf",
-    tenantName: "山西云学堂",
-    version: "1.0.2",
-    TOP_LOGO: "/static/logo962.png",
-    SCAN_LOGO: "/static/me/logo962.png",
-  },
-];
-export default set[index];

+ 11 - 2
common/httpList/course.js

@@ -116,8 +116,9 @@ export default {
 
 	courseHandouts(data) {
 		return myRequest({
-			url: '/course/handouts/' + data,
-			method: 'get'
+			url: '/course/handouts/file/detail' ,
+			method: 'get',
+			data
 		})
 	},
 	getHandoutList(data) {
@@ -223,4 +224,12 @@ export default {
 			data: data
 		})
 	},
+	// 二建二造检测必修是否学完
+	checkFinishRequiredCourse(data) {
+		return myRequest({
+			url: '/grade/grade/checkFinishRequiredCourse',
+			method: 'get',
+			data: data
+		})
+	},
 }

+ 496 - 504
common/httpList/goods.js

@@ -1,505 +1,497 @@
-import {
-	myRequest
-} from '../request.js'
+import { myRequest } from "../request.js";
 export default {
-	goodsList(data) {
-		return myRequest({
-			url: '/app/common/goods/list',
-			method: 'get',
-			data: data,
-			noToken: true
-		})
-	},
-	actGoodsList(data) {
-		return myRequest({
-			url: '/app/common/goods/share/list/' + data,
-			method: 'get',
-			noToken: true
-		})
-	},
-	commonSystemTime() {
-		return myRequest({
-			url: '/app/common/system/dict/data/sys/time',
-			method: 'get',
-			noToken: true
-		})
-	},
-
-
-	commonGoodsDetail(data) {
-		return myRequest({
-			url: '/app/common/goods/' + data,
-			method: 'get',
-			noToken: true
-		})
-	},
-	// 校验商品状态 
-	checkGoodsStatus(data) {
-		return myRequest({
-			url: '/goods/check/goods/status',
-			method: 'post',
-			data
-		})
-	},
-	goodsBank(data) {
-		return myRequest({
-			url: '/goods/bank/list',
-			method: 'get',
-			data: data,
-		})
-	},
-	// goodsBank(data) {
-	// 	return myRequest({
-	// 		url: '/goods/bank/list',
-	// 		method: 'get',
-	// 		data: data,
-	// 	})
-	// },
-
-	bankExamExamList(data) {
-		return myRequest({
-			url: '/bank/exam/exam/list',
-			method: 'get',
-			data: data,
-		})
-	},
-   
-
-	goodsDetail(data) {
-		return myRequest({
-			url: '/goods/' + data,
-			method: 'get'
-		})
-	},
-	goodsCourseList(data) {
-		return myRequest({
-			url: '/app/common/goods/course/list/' + data,
-			method: 'get',
-			noToken: true
-		})
-	},
-	// 获取双师制
-	getGoodsCourseTeacher(data) {
-		return myRequest({
-			url: '/app/common/course/teacher/list',
-			method: 'get',
-			data: data,
-			noToken: true
-		})
-	},
-	collectQuestion(data) {
-		return myRequest({
-			url: '/collect/question',
-			data: data,
-			method: 'POST'
-		})
-	},
-	bankRecordEdit(data) {
-		return myRequest({
-			url: '/bank/record/edit',
-			data: data,
-			method: 'POST'
-		})
-	},
-
-	bankReportData(data) {
-		return myRequest({
-			url: '/bank/record/' + data,
-			method: 'get',
-		})
-	},
-
-	deleteCollectQuestion(data) {
-		return myRequest({
-			url: '/collect/question/delete/' + data,
-			method: 'POST',
-		})
-	},
-	examRecord(data) {
-		return myRequest({
-			url: '/exam/record',
-			data: data,
-			method: 'POST',
-		})
-	},
-	examRecordRightList(data) {
-		return myRequest({
-			url: '/exam/record/right_list',
-			data: data,
-			method: 'GET',
-		})
-	},
-
-	examRecordWrongList(data) {
-		return myRequest({
-			url: '/exam/record/wrong_list',
-			data: data,
-			method: 'GET',
-		})
-	},
-
-
-
-	bankRecord(data) {
-		return myRequest({
-			url: '/bank/record',
-			data: data,
-			method: 'POST',
-		})
-	},
-
-
-
-	examWrongRecord(data) {
-		return myRequest({
-			url: '/exam/wwrong/record',
-			data: data,
-			method: 'POST',
-		})
-	},
-
-	examRecordEdit(data) {
-		return myRequest({
-			url: '/exam/record/edit',
-			data: data,
-			method: 'POST',
-		})
-	},
-
-	goodsBankQuestionNum(data) {
-		return myRequest({
-			url: '/goods/bank/questionNum/' + data,
-			method: 'get',
-		})
-	},
-
-	bankExamNextExam(data) {
-		return myRequest({
-			url: '/bank/exam/nextExam',
-			data: data,
-			method: 'get',
-		})
-	},
-
-
-
-	examReport(data) {
-		return myRequest({
-			url: '/exam/record/' + data,
-			method: 'get',
-		})
-	},
-	// 随机练习
-	bankTempReport(data) {
-		return myRequest({
-			url: '/bank/exam/temp/' + data,
-			method: 'get',
-		})
-	},
-
-	examRecordCount(data) {
-		return myRequest({
-			url: '/exam/record/count',
-			data: data,
-			method: 'GET',
-		})
-	},
-
-	examaperList(data) {
-		return myRequest({
-			url: '/exam/paper/list',
-			data: data,
-			method: 'GET',
-		})
-	},
-
-	examRecordList(data) {
-		return myRequest({
-			url: '/exam/record/list',
-			data: data,
-			method: 'GET',
-		})
-	},
-
-	examRecordGroupList(data) {
-		return myRequest({
-			url: '/exam/record/group_list',
-			data: data,
-			method: 'GET',
-		})
-	},
-
-	collectQuestionTypeList(data) {
-		return myRequest({
-			url: '/collect/question/type_list',
-			data: data,
-			method: 'GET',
-		})
-	},
-
-	wrongRecordTypeQuestionList(data) {
-		return myRequest({
-			url: '/exam/wwrong/record/type_question_list',
-			data: data,
-			method: 'GET',
-		})
-	},
-
-	bankRecordDoNum(data) {
-		return myRequest({
-			url: '/bank/record/doNum',
-			data: data,
-			method: 'GET',
-		})
-	},
-
-	wrongRecordTypeList(data) {
-		return myRequest({
-			url: '/exam/wwrong/record/type_list',
-			data: data,
-			method: 'GET',
-		})
-	},
-
-	listGoodsUserQuestion(data) {
-		return myRequest({
-			url: '/bank/question/listGoodsUserQuestion',
-			data: data,
-			method: 'get'
-		})
-	},
-	getCollectInfo(data) {
-		return myRequest({
-			url: '/collect/question/getInfo',
-			data: data,
-			method: 'get'
-		})
-	},
-
-	goodsBankList(data) {
-		return myRequest({
-			url: '/app/common/bank/list',
-			method: 'get',
-			data: data,
-			noToken: true
-		})
-	},
-
-	wrongRecordList(data) {
-		return myRequest({
-			url: '/exam/wwrong/record/list',
-			method: 'get',
-			data: data
-		})
-	},
-
-
-	goodsChapterList(data) {
-		return myRequest({
-			url: '/app/common/bank/chapter/list',
-			method: 'get',
-			data: data,
-			noToken: true
-		})
-	},
-	wrongRecordExamQuestionList(data) {
-		return myRequest({
-			url: '/exam/wwrong/record/exam_question_list',
-			method: 'get',
-			data: data,
-		})
-	},
-
-	wrongRecordDelete(data) {
-		return myRequest({
-			url: '/exam/wwrong/record/delete/question',
-			method: 'post',
-			data: data
-		})
-	},
-
-	examWrongRecordWrongNum(data) {
-		return myRequest({
-			url: `/exam/wwrong/record/wrongNum`,
-			method: 'get',
-			data
-		})
-	},
-
-	collectQuestionExamQuestionList(data) {
-		return myRequest({
-			url: `/collect/question/exam_question_list`,
-			method: 'get',
-			data: data
-		})
-	},
-
-
-
-	bankExam(data) {
-		return myRequest({
-			url: '/bank/exam/' + data,
-			method: 'get',
-		})
-	},
-
-	goodsCollectExamList(data) {
-		return myRequest({
-			url: '/collect/question/exam_list',
-			method: 'get',
-			data: data
-		})
-	},
-
-	goodsBankDolist(data) {
-		return myRequest({
-			url: '/goods/bank/dolist',
-			method: 'get',
-			data: data
-		})
-	},
-
-	goodsChapterDolist(data) {
-		return myRequest({
-			url: '/goods/chapter/dolist',
-			method: 'get',
-			data: data
-		})
-	},
-	goodsExamDolist(data) {
-		return myRequest({
-			url: '/goods/exam/dolist',
-			method: 'get',
-			data: data
-		})
-	},
-
-
-
-	goodsCollectList(data) {
-		return myRequest({
-			url: '/collect/question/list',
-			method: 'get',
-			data: data
-		})
-	},
-
-	goodsExamList(data) {
-		return myRequest({
-			url: '/app/common/bank/exam/list',
-			method: 'get',
-			data: data,
-			noToken: true
-		})
-	},
-
-	studyRecordMenuAllList(data) {
-		return myRequest({
-			url: '/study/record/menuAllList',
-			method: 'get',
-			data: data
-		})
-	},
-
-
-
-	goodsTodayStudySectionNum(data) {
-		return myRequest({
-			url: '/goods/todayStudySectionNum',
-			method: 'get',
-			data: data
-		})
-	},
-
-	goodsQuestionList(data) {
-		return myRequest({
-			url: '/app/common/bank/question/list',
-			method: 'get',
-			data: data,
-			noToken: true
-		})
-	},
-	// 随机组题题目列表
-	goodsRandomQuestionList(data) {
-		return myRequest({
-			url: '/bank/exam/simulate',
-			method: 'post',
-			data
-		})
-	},
-	// 随时练习解析
-	goodsQuestionTempList(data) {
-		return myRequest({
-			url: '/app/common/bank/question/temp/list',
-			method: 'get',
-			data: data,
-			noToken: true
-		})
-	},
-
-	addCart(data) {
-		return myRequest({
-			url: '/base/cart',
-			method: 'post',
-			data: data
-		})
-	},
-	cartList(data) {
-		return myRequest({
-			url: '/base/cart/list',
-			method: 'get',
-			data: data
-		})
-	},
-
-	questionRecordList(data) {
-		return myRequest({
-			url: '/bank/question/record/list',
-			method: 'get',
-			data: data
-		})
-	},
-
-
-	deleteCart(data) {
-		return myRequest({
-			url: '/base/cart/delete/' + data,
-			method: 'post'
-		})
-	},
-
-	bankQuestionListFreeGoodsList(data) {
-		return myRequest({
-			url: '/bank/question/listFreeGoodsList',
-			method: 'get',
-			data: data
-		})
-	},
-	appCommonGoodsCourseModuleFreeExamList(data) {
-		return myRequest({
-			url: '/app/common/goods/course/moduleFreeExamList/' + data,
-			method: 'get',
-			noToken: true
-
-		})
-	},
-
-	goodsLivingSectionList(data) {
-		return myRequest({
-			url: '/goods/livingSectionList',
-			method: 'get',
-			data: data
-		})
-	},
-	// 查询用户拥有免费+自购题库商品
-	listUserFreeUnionBuyGoodsList(data) {
-		return myRequest({
-			url: '/bank/question/listUserFreeUnionBuyGoodsList',
-			method: 'get',
-			data: data
-		})
-	},
-
-
-
-}
+  goodsList(data) {
+    return myRequest({
+      url: "/app/common/goods/list",
+      method: "get",
+      data: data,
+      noToken: true,
+    });
+  },
+  actGoodsList(data) {
+    return myRequest({
+      url: "/app/common/goods/share/list/" + data,
+      method: "get",
+      noToken: true,
+    });
+  },
+  fxGoodsList(data) {
+    return myRequest({
+      url: "/app/common/goods/goods/list/" + data,
+      method: "get",
+      noToken: true,
+    });
+  },
+  commonSystemTime() {
+    return myRequest({
+      url: "/app/common/system/dict/data/sys/time",
+      method: "get",
+      noToken: true,
+    });
+  },
+
+  commonGoodsDetail(data) {
+    return myRequest({
+      url: "/app/common/goods/" + data,
+      method: "get",
+      noToken: true,
+    });
+  },
+  fxGoodsDetail(data) {
+    return myRequest({
+      url: "/app/common/goods/distribution/goods",
+      method: "get",
+      noToken: true,
+      data: data,
+    });
+  },
+  // 校验商品状态
+  checkGoodsStatus(data) {
+    return myRequest({
+      url: "/goods/check/goods/status",
+      method: "post",
+      data,
+    });
+  },
+  goodsBank(data) {
+    return myRequest({
+      url: "/goods/bank/list",
+      method: "get",
+      data: data,
+    });
+  },
+  // goodsBank(data) {
+  // 	return myRequest({
+  // 		url: '/goods/bank/list',
+  // 		method: 'get',
+  // 		data: data,
+  // 	})
+  // },
+
+  bankExamExamList(data) {
+    return myRequest({
+      url: "/bank/exam/exam/list",
+      method: "get",
+      data: data,
+    });
+  },
+
+  goodsDetail(data) {
+    return myRequest({
+      url: "/goods/" + data,
+      method: "get",
+    });
+  },
+  goodsCourseList(data) {
+    return myRequest({
+      url: "/app/common/goods/course/list/" + data,
+      method: "get",
+      noToken: true,
+    });
+  },
+  // 获取双师制
+  getGoodsCourseTeacher(data) {
+    return myRequest({
+      url: "/app/common/course/teacher/list",
+      method: "get",
+      data: data,
+      noToken: true,
+    });
+  },
+  collectQuestion(data) {
+    return myRequest({
+      url: "/collect/question",
+      data: data,
+      method: "POST",
+    });
+  },
+  bankRecordEdit(data) {
+    return myRequest({
+      url: "/bank/record/edit",
+      data: data,
+      method: "POST",
+    });
+  },
+
+  bankReportData(data) {
+    return myRequest({
+      url: "/bank/record/" + data,
+      method: "get",
+    });
+  },
+
+  deleteCollectQuestion(data) {
+    return myRequest({
+      url: "/collect/question/delete/" + data,
+      method: "POST",
+    });
+  },
+  examRecord(data) {
+    return myRequest({
+      url: "/exam/record",
+      data: data,
+      method: "POST",
+    });
+  },
+  examRecordRightList(data) {
+    return myRequest({
+      url: "/exam/record/right_list",
+      data: data,
+      method: "GET",
+    });
+  },
+
+  examRecordWrongList(data) {
+    return myRequest({
+      url: "/exam/record/wrong_list",
+      data: data,
+      method: "GET",
+    });
+  },
+
+  bankRecord(data) {
+    return myRequest({
+      url: "/bank/record",
+      data: data,
+      method: "POST",
+    });
+  },
+
+  examWrongRecord(data) {
+    return myRequest({
+      url: "/exam/wwrong/record",
+      data: data,
+      method: "POST",
+    });
+  },
+
+  examRecordEdit(data) {
+    return myRequest({
+      url: "/exam/record/edit",
+      data: data,
+      method: "POST",
+    });
+  },
+
+  goodsBankQuestionNum(data) {
+    return myRequest({
+      url: "/goods/bank/questionNum/" + data,
+      method: "get",
+    });
+  },
+
+  bankExamNextExam(data) {
+    return myRequest({
+      url: "/bank/exam/nextExam",
+      data: data,
+      method: "get",
+    });
+  },
+
+  examReport(data) {
+    return myRequest({
+      url: "/exam/record/" + data,
+      method: "get",
+    });
+  },
+  // 随机练习
+  bankTempReport(data) {
+    return myRequest({
+      url: "/bank/exam/temp/" + data,
+      method: "get",
+    });
+  },
+
+  examRecordCount(data) {
+    return myRequest({
+      url: "/exam/record/count",
+      data: data,
+      method: "GET",
+    });
+  },
+
+  examaperList(data) {
+    return myRequest({
+      url: "/exam/paper/list",
+      data: data,
+      method: "GET",
+    });
+  },
+
+  examRecordList(data) {
+    return myRequest({
+      url: "/exam/record/list",
+      data: data,
+      method: "GET",
+    });
+  },
+
+  examRecordGroupList(data) {
+    return myRequest({
+      url: "/exam/record/group_list",
+      data: data,
+      method: "GET",
+    });
+  },
+
+  collectQuestionTypeList(data) {
+    return myRequest({
+      url: "/collect/question/type_list",
+      data: data,
+      method: "GET",
+    });
+  },
+
+  wrongRecordTypeQuestionList(data) {
+    return myRequest({
+      url: "/exam/wwrong/record/type_question_list",
+      data: data,
+      method: "GET",
+    });
+  },
+
+  bankRecordDoNum(data) {
+    return myRequest({
+      url: "/bank/record/doNum",
+      data: data,
+      method: "GET",
+    });
+  },
+
+  wrongRecordTypeList(data) {
+    return myRequest({
+      url: "/exam/wwrong/record/type_list",
+      data: data,
+      method: "GET",
+    });
+  },
+
+  listGoodsUserQuestion(data) {
+    return myRequest({
+      url: "/bank/question/listGoodsUserQuestion",
+      data: data,
+      method: "get",
+    });
+  },
+  getCollectInfo(data) {
+    return myRequest({
+      url: "/collect/question/getInfo",
+      data: data,
+      method: "get",
+    });
+  },
+
+  goodsBankList(data) {
+    return myRequest({
+      url: "/app/common/bank/list",
+      method: "get",
+      data: data,
+      noToken: true,
+    });
+  },
+
+  wrongRecordList(data) {
+    return myRequest({
+      url: "/exam/wwrong/record/list",
+      method: "get",
+      data: data,
+    });
+  },
+
+  goodsChapterList(data) {
+    return myRequest({
+      url: "/app/common/bank/chapter/list",
+      method: "get",
+      data: data,
+      noToken: true,
+    });
+  },
+  wrongRecordExamQuestionList(data) {
+    return myRequest({
+      url: "/exam/wwrong/record/exam_question_list",
+      method: "get",
+      data: data,
+    });
+  },
+
+  wrongRecordDelete(data) {
+    return myRequest({
+      url: "/exam/wwrong/record/delete/question",
+      method: "post",
+      data: data,
+    });
+  },
+
+  examWrongRecordWrongNum(data) {
+    return myRequest({
+      url: `/exam/wwrong/record/wrongNum`,
+      method: "get",
+      data,
+    });
+  },
+
+  collectQuestionExamQuestionList(data) {
+    return myRequest({
+      url: `/collect/question/exam_question_list`,
+      method: "get",
+      data: data,
+    });
+  },
+
+  bankExam(data) {
+    return myRequest({
+      url: "/bank/exam/" + data,
+      method: "get",
+    });
+  },
+
+  goodsCollectExamList(data) {
+    return myRequest({
+      url: "/collect/question/exam_list",
+      method: "get",
+      data: data,
+    });
+  },
+
+  goodsBankDolist(data) {
+    return myRequest({
+      url: "/goods/bank/dolist",
+      method: "get",
+      data: data,
+    });
+  },
+
+  goodsChapterDolist(data) {
+    return myRequest({
+      url: "/goods/chapter/dolist",
+      method: "get",
+      data: data,
+    });
+  },
+  goodsExamDolist(data) {
+    return myRequest({
+      url: "/goods/exam/dolist",
+      method: "get",
+      data: data,
+    });
+  },
+
+  goodsCollectList(data) {
+    return myRequest({
+      url: "/collect/question/list",
+      method: "get",
+      data: data,
+    });
+  },
+
+  goodsExamList(data) {
+    return myRequest({
+      url: "/app/common/bank/exam/list",
+      method: "get",
+      data: data,
+      noToken: true,
+    });
+  },
+
+  studyRecordMenuAllList(data) {
+    return myRequest({
+      url: "/study/record/menuAllList",
+      method: "get",
+      data: data,
+    });
+  },
+
+  goodsTodayStudySectionNum(data) {
+    return myRequest({
+      url: "/goods/todayStudySectionNum",
+      method: "get",
+      data: data,
+    });
+  },
+
+  goodsQuestionList(data) {
+    return myRequest({
+      url: "/app/common/bank/question/list",
+      method: "get",
+      data: data,
+      noToken: true,
+    });
+  },
+  // 随机组题题目列表
+  goodsRandomQuestionList(data) {
+    return myRequest({
+      url: "/bank/exam/simulate",
+      method: "post",
+      data,
+    });
+  },
+  // 随时练习解析
+  goodsQuestionTempList(data) {
+    return myRequest({
+      url: "/app/common/bank/question/temp/list",
+      method: "get",
+      data: data,
+      noToken: true,
+    });
+  },
+  addCart(data) {
+    return myRequest({
+      url: "/base/cart",
+      method: "post",
+      data: data,
+    });
+  },
+  cartList(data) {
+    return myRequest({
+      url: "/base/cart/list",
+      method: "get",
+      data: data,
+    });
+  },
+
+  questionRecordList(data) {
+    return myRequest({
+      url: "/bank/question/record/list",
+      method: "get",
+      data: data,
+    });
+  },
+
+  deleteCart(data) {
+    return myRequest({
+      url: "/base/cart/delete/" + data,
+      method: "post",
+    });
+  },
+
+  bankQuestionListFreeGoodsList(data) {
+    return myRequest({
+      url: "/bank/question/listFreeGoodsList",
+      method: "get",
+      data: data,
+    });
+  },
+  appCommonGoodsCourseModuleFreeExamList(data) {
+    return myRequest({
+      url: "/app/common/goods/course/moduleFreeExamList/" + data,
+      method: "get",
+      noToken: true,
+    });
+  },
+
+  goodsLivingSectionList(data) {
+    return myRequest({
+      url: "/goods/livingSectionList",
+      method: "get",
+      data: data,
+    });
+  },
+  // 查询用户拥有免费+自购题库商品
+  listUserFreeUnionBuyGoodsList(data) {
+    return myRequest({
+      url: "/bank/question/listUserFreeUnionBuyGoodsList",
+      method: "get",
+      data: data,
+    });
+  },
+};

+ 0 - 1
common/request.js

@@ -3,7 +3,6 @@ import config from "@/common/config";
 import method from "@/common/methodTool";
 var num = 1;
 //接口api
-// export const BASE_URL = 'https://api.xyyxt.net'   //release
 export const BASE_URL = config.BASE_URL;
 // #ifdef MP-WEIXIN
 export let tenantId = config.tenantId; // 祥粤云学堂:867735392558919680,祥粤学堂:667735392758919630, 中建云学堂-567735392758918520

+ 75 - 0
components/course/handoutsBox.vue

@@ -0,0 +1,75 @@
+<template>
+  <view>
+    <template v-if="courseHandoutsData.handoutsId">
+      <u-search
+        placeholder="搜索讲义名称"
+        bg-color="#ffffff"
+        margin="0 0 20rpx"
+        v-model="fileName"
+        @custom="search"
+        @search="search"
+      ></u-search>
+
+      <view
+        class="handouts-box"
+        v-for="item in courseHandoutsData.fileList"
+        :key="item.fileId"
+      >
+        <handouts-tree
+          :canDownload="courseHandoutsData.canDownload"
+          :fileInfo="item"
+        ></handouts-tree>
+      </view>
+    </template>
+    <view v-else style="text-align: center">暂无讲义</view>
+  </view>
+</template>
+
+<script>
+import handoutsTree from "@/components/course/handoutsTree.vue";
+export default {
+  name: "HandoutsBox",
+  props: {
+    handoutsId: {
+      type: Number,
+    },
+  },
+  data() {
+    return {
+      fileName: "",
+      courseHandoutsData: {},
+    };
+  },
+
+  mounted() {
+    this.courseHandouts();
+  },
+  methods: {
+    search(val) {
+      this.courseHandouts();
+    },
+    courseHandouts() {
+      this.$api
+        .courseHandouts({
+          handoutsId: this.handoutsId,
+          fileName: this.fileName,
+        })
+        .then((res) => {
+          this.courseHandoutsData = res.data.data;
+        });
+    },
+  },
+
+  components: {
+    handoutsTree,
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.handouts-box {
+  border-radius: 20rpx;
+  background: #ffffff;
+  margin-bottom: 20rpx;
+}
+</style>

+ 169 - 0
components/course/handoutsTree.vue

@@ -0,0 +1,169 @@
+<template>
+  <view style="padding-left: 20rpx">
+    <view v-if="fileInfo.type == 2">
+      <view
+        @click="handelClick"
+        class="fl u-border-bottom"
+        style="height: 78rpx; padding-right: 30rpx"
+      >
+        <u-icon name="arrow-down" color="#999" size="24" v-if="!down"></u-icon>
+        <u-icon name="arrow-right" color="#999" size="24" v-if="down"></u-icon>
+        <view class="menu_name">
+          <view class="u-line-1">{{ fileInfo.urlName }}</view>
+          <view v-if="fileInfo.filePath" class="pathtips u-line-1">
+            {{ fileInfo.filePath }}
+          </view>
+        </view>
+      </view>
+      <view v-show="!down">
+        <view v-for="item in fileInfo.children" :key="item.fileId">
+          <handouts-tree
+            :canDownload="canDownload"
+            :fileInfo="item"
+          ></handouts-tree>
+        </view>
+      </view>
+    </view>
+    <view v-if="fileInfo.type == 1">
+      <view class="fl_c u-border-bottom level1">
+        <view class="title">
+          <view class="u-line-1">{{ fileInfo.urlName }}</view>
+          <view v-if="fileInfo.filePath" class="pathtips u-line-1">
+            {{ fileInfo.filePath }}
+          </view>
+        </view>
+
+        <view @click="openDocument">
+          <image
+            v-if="!downLoading"
+            src="/pages3/static/imgs/downLoad.png"
+          ></image>
+          <image
+            v-else
+            src="/pages3/static/imgs/downLoading.png"
+            class="loading_down"
+          ></image>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import handoutsTree from "@/components/course/handoutsTree.vue";
+export default {
+  name: "handoutsTree",
+  props: {
+    fileInfo: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    canDownload: {
+      type: Number,
+    },
+  },
+  data() {
+    return {
+      down: true,
+      downLoading: false,
+    };
+  },
+
+  methods: {
+    handelClick() {
+      this.down = !this.down;
+    },
+    openDocument() {
+      let url = this.$method.splitImgHost(this.fileInfo.url);
+      // #ifdef H5
+      window.location.href = url;
+      //   uni.navigateTo({
+      //     url: `/pages/webview/sdlink?url=` + url,
+      //   });
+      // #endif
+      // #ifdef MP-WEIXIN
+      this.downLoading = true;
+      uni.downloadFile({
+        url: url,
+        success: (res) => {
+          var filePath = res.tempFilePath;
+          // h5不支持
+          uni.openDocument({
+            filePath: filePath,
+            showMenu: this.canDownload == 1 ? true : false,
+            success: (res) => {
+              this.downLoading = false;
+              uni.setStorageSync("nofresh", 1);
+            },
+            fail: (err) => {
+              this.downLoading = false;
+              uni.showToast({
+                icon: "none",
+                title: "文档地址错误",
+              });
+            },
+          });
+        },
+        fail: (err) => {
+          this.downLoading = false;
+          uni.showModal({
+            title: "提示",
+            content: "文档错误," + err.errMsg,
+            showCancel: false,
+          });
+        },
+      });
+      // #endif
+    },
+  },
+  components: {
+    handoutsTree,
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.menu_name {
+  font-size: 26rpx;
+  font-weight: bold;
+  color: #333;
+  margin-left: 14rpx;
+  .pathtips {
+    font-size: 24rpx;
+    color: #999;
+  }
+}
+
+.level1 {
+  height: 78rpx;
+  padding-right: 20rpx;
+  .title {
+    flex: 1;
+    font-size: 26rpx;
+    color: #333;
+    .pathtips {
+      font-size: 22rpx;
+      color: #999;
+    }
+  }
+  .loading_down {
+    transform: rotate(360deg);
+    animation: rotation 3s linear infinite;
+  }
+  image {
+    width: 40rpx;
+    height: 40rpx;
+  }
+}
+
+@keyframes rotation {
+  from {
+    -webkit-transform: rotate(0deg);
+  }
+  to {
+    -webkit-transform: rotate(360deg);
+  }
+}
+</style>

+ 82 - 0
components/nav-bar/nav-logo.vue

@@ -0,0 +1,82 @@
+<template>
+  <view>
+    <u-navbar
+      :class="title ? 'navbarL' : 'navbarC'"
+      :is-back="false"
+      :title="title"
+      :border-bottom="false"
+      title-color="#333333"
+      back-icon-color="#ffffff"
+    >
+      <view class="slot-wrap" v-if="isShowLogo">
+        <image
+          :src="$method.splitImgHost(config.h5Logo)"
+          @load="load"
+          :style="{ width: imgwidth + 'rpx', height: imgheight + 'rpx' }"
+        />
+      </view>
+    </u-navbar>
+  </view>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  name: "NavLogo",
+  props: {
+    title: {
+      type: String,
+      default: "",
+    },
+    isShowLogo: {
+      type: Boolean,
+      default: false,
+    },
+  },
+  data() {
+    return {
+      imgwidth: 0,
+      imgheight: 0,
+    };
+  },
+
+  mounted() {},
+  computed: {
+    ...mapGetters(["userInfo", "config"]),
+  },
+  methods: {
+    load(e) {
+      this.imgwidth = e.detail.width;
+      this.imgheight = e.detail.height;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.navbarL {
+  image {
+    margin-left: 30rpx;
+  }
+  img {
+    margin-left: 30rpx;
+  }
+}
+.navbarC {
+  /deep/ .u-navbar-inner {
+    margin-right: 0 !important;
+  }
+
+  .slot-wrap {
+    width: 100vw;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+
+    image {
+      width: 178rpx;
+      height: 31rpx;
+    }
+  }
+}
+</style>

+ 3 - 0
main.js

@@ -24,6 +24,9 @@ import filters from './filters/index.js'
 import uView from "uview-ui";
 Vue.use(uView);
 
+import navLogo from "@/components/nav-bar/nav-logo.vue";
+Vue.component('navLogo', navLogo)
+
 // 全局过滤器
 Vue.filter('formate', filters['formDate'])
 

+ 1169 - 1170
pages.json

@@ -1,1171 +1,1170 @@
 {
-	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
-		{
-			"path": "pages/index/index",
-			"style": {
-				"navigationBarTitleText": "首页",
-				"onReachBottomDistance": 50,
-				"app-plus": {
-					"titleNView": false //禁用原生导航栏  
-				},
-				"navigationStyle": "custom" // 隐藏系统导航栏
-				// "navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/wd/index",
-			"style": {
-				"navigationBarTitleText": "我的",
-				// "navigationBarTextStyle": "white",
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"app-plus": {
-					"titleNView": false, //禁用原生导航栏 
-					"bounce": "none"
-				}
-			}
-		},
-		{
-			"path": "pages/course/index",
-			"style": {
-				"navigationBarTitleText": "选课中心",
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"enablePullDownRefresh": true,
-				"app-plus": {
-					"titleNView": false, //禁用原生导航栏 
-					"bounce": "none"
-				}
-			}
-		},
-		{
-			"path": "pages/learn/index",
-			"style": {
-				"navigationBarTitleText": "学习",
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"enablePullDownRefresh": true,
-				"backgroundTextStyle": "dark",
-				"app-plus": {
-					"titleNView": false, //禁用原生导航栏 
-					"bounce": "none"
-				}
-			}
-		},
-		{
-			"path": "pages/questionBank/index",
-			"style": {
-				"navigationBarTitleText": "题库",
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"app-plus": {
-					"titleNView": false, //禁用原生导航栏 
-					"bounce": "none"
-				}
-			}
-		},
-		{
-			"path": "pages/webview/index",
-			"style": {
-				"navigationBarTitleText": "网页",
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"app-plus": {
-					"titleNView": false, //禁用原生导航栏 
-					"bounce": "none"
-				}
-			}
-		},
-		{
-			"path": "pages/webview/sdlink",
-			"style": {
-				"navigationBarTitleText": "网页",
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"app-plus": {
-					"titleNView": false, //禁用原生导航栏 
-					"bounce": "none"
-				}
-			}
-		}
-	],
-	"subPackages": [
-		{
-			"root": "pages2",
-			"pages": [
-				{
-					"path": "wd/info",
-					"style": {
-						"navigationBarTitleText": "我的资料",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "wd/menu", //没有用到
-					"style": {
-						"navigationBarTitleText": "基本资料",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "wd/edu_info", //没有用到
-					"style": {
-						"navigationBarTitleText": "教育信息",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "register/register",
-					"style": {
-						"navigationBarTitleText": "注册页",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "register/forget",
-					"style": {
-						"navigationBarTitleText": "忘记密码",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "wd/class", //暂时不用
-					"style": {
-						"navigationBarTitleText": "我的网课",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "order/confirm_list",
-					"style": {
-						"navigationBarTitleText": "确认订单",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "order/confirm_pay",
-					"style": {
-						"navigationBarTitleText": "订单支付",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "order/confirm_success",
-					"style": {
-						"navigationBarTitleText": "支付成功",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "order/index",
-					"style": {
-						"navigationBarTitleText": "我的订单",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						// "enablePullDownRefresh": true,
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "invoice/index",
-					"style": {
-						"navigationBarTitleText": "发票申请",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						// "enablePullDownRefresh": true,
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "exam/index", // 暂时不用
-					"style": {
-						"navigationBarTitleText": "我的考试",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "exam/exam_appointment",
-					"style": {
-						"navigationBarTitleText": "考试预约",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "exam/signCommit",
-					"style": {
-						"navigationBarTitleText": "签署承诺书",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "exam/exam_result",
-					"style": {
-						"navigationBarTitleText": "考试成绩和证书",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "wd/question_bank",
-					"style": {
-						"navigationBarTitleText": "我的题库通",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/my_question",
-					"style": {
-						"navigationBarTitleText": "我的题库",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/free_question",
-					"style": {
-						"navigationBarTitleText": "赠送题卷",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/question_record",
-					"style": {
-						"navigationBarTitleText": "做题记录",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"enablePullDownRefresh": true,
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/question_record_list",
-					"style": {
-						"navigationBarTitleText": "做题记录",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"enablePullDownRefresh": true,
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/detail",
-					"style": {
-						"navigationBarTitleText": "题库详情",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/question_detail",
-					"style": {
-						"navigationBarTitleText": "进入刷题",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "msg/index",
-					"style": {
-						"enablePullDownRefresh": true,
-						"navigationBarTitleText": "我的消息",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/question_statistics",
-					"style": {
-						"navigationBarTitleText": "做题统计",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/question_report",
-					"style": {
-						"navigationBarTitleText": "试卷报告",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/questionBank",
-					"style": {
-						"navigationBarTitleText": "试卷题目",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "class/questionBank",
-					"style": {
-						"navigationBarTitleText": "试卷题目",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/questionBankExplain",
-					"style": {
-						"navigationBarTitleText": "解析",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/questionBankWrongExplain",
-					"style": {
-						"navigationBarTitleText": "错题解析",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/questionBankAllExplain",
-					"style": {
-						"navigationBarTitleText": "全部解析",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/questionBankContinue",
-					"style": {
-						"navigationBarTitleText": "试卷题目",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/questionBankExplainDetail",
-					"style": {
-						"navigationBarTitleText": "试卷解析",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/questionBankTest",
-					"style": {
-						"navigationBarTitleText": "试卷",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "msg/detail",
-					"style": {
-						"navigationBarTitleText": "消息详情",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "plan/index",
-					"style": {
-						"navigationBarTitleText": "学习计划",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "plan/create",
-					"style": {
-						"navigationBarTitleText": "创建计划",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "plan/edit",
-					"style": {
-						"navigationBarTitleText": "修改计划",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "verify/input",
-					"style": {
-						"navigationBarTitleText": "填写审核资料",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "verify/input2",
-					"style": {
-						"navigationBarTitleText": "填写审核资料",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "appointment/index",
-					"style": {
-						"navigationBarTitleText": "预约考试",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "appointment/order",
-					"style": {
-						"navigationBarTitleText": "预约考试",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "appointment/kporder",
-					"style": {
-						"navigationBarTitleText": "考前培训预约考试",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "appointment/appointment_success",
-					"style": {
-						"navigationBarTitleText": "预约成功",
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "subject/collectBank",
-					"style": {
-						"navigationBarTitleText": "试卷",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "subject/wrongBank",
-					"style": {
-						"navigationBarTitleText": "错题",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "subject/collectTypeBank",
-					"style": {
-						"navigationBarTitleText": "试卷",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "subject/wrongTypeBank",
-					"style": {
-						"navigationBarTitleText": "试卷",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "class/question_report",
-					"style": {
-						"navigationBarTitleText": "试卷报告",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "subject/wrong",
-					"style": {
-						"navigationBarTitleText": "错题集",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/wrongById",
-					"style": {
-						"navigationBarTitleText": "错题集",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "bank/collectById",
-					"style": {
-						"navigationBarTitleText": "收藏集",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "subject/collect",
-					"style": {
-						"navigationBarTitleText": "收藏集",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "learn/my_learn",
-					"style": {
-						"navigationBarTitleText": "我的学时",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "learn/details",
-					"style": {
-						"navigationBarTitleText": "详情",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "learn/menu",
-					"style": {
-						"navigationBarTitleText": "目录",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "wd/course",
-					"style": {
-						"navigationBarTitleText": "所有课程",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "dailyPractice/index",
-					"style": {
-						"navigationBarTitleText": "每日一练",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "randomPractice/index",
-					"style": {
-						"navigationBarTitleText": "随机练习",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				}
-			]
-		},
-		{
-			"root": "pages3",
-			"pages": [
-				{
-					"path": "polyv/polyv", // 没用用到
-					"style": {
-						"navigationBarTitleText": "保利威直播",
-						"app-plus": {
-							"bounce": "none"
-						},
-						"mp-weixin": {
-							"usingComponents": {
-								"player": "/pages3/static/polyv-sdk/components/player/player"
-							}
-						}
-					}
-				},
-				{
-					"path": "polyv/detail",
-					"style": {
-						"navigationBarTitleText": "课程详情",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						},
-						"mp-weixin": {
-							"usingComponents": {
-								"player": "/pages3/static/polyv-sdk/components/player/player",
-								"polyv-player": "plugin://polyv-player/player"
-							}
-						}
-					}
-				},
-				{
-					"path": "course/detail",
-					"style": {
-						"navigationBarTitleText": "课程详情",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						},
-						"mp-weixin": {
-							"usingComponents": {
-								"polyv-player": "plugin://polyv-player/player"
-							}
-						}
-					}
-				},
-				{
-					"path": "live/detail",
-					"style": {
-						"navigationBarTitleText": "商品详情",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						},
-						"mp-weixin": {
-							"usingComponents": {
-								"polyv-player": "plugin://polyv-player/player"
-							}
-						}
-					}
-				},
-				{
-					"path": "live/playback",
-					"style": {
-						"navigationBarTitleText": "回放视频",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						},
-						"mp-weixin": {
-							"usingComponents": {
-								"polyv-player": "plugin://polyv-player/player"
-							}
-						}
-					}
-				}
-			],
-			"plugins": {
-				"polyv-player": {
-					"version": "0.3.0",
-					"provider": "wx4a350a258a6f7876"
-				}
-			}
-		},
-		{
-			"root": "pages4",
-			"pages": [
-				{
-					"path": "login/login",
-					"style": {
-						"navigationBarTitleText": "登录页",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "login/pcLogin",
-					"style": {
-						"navigationBarTitleText": "pc登录页",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "login/pcLoginSuccess",
-					"style": {
-						"navigationBarTitleText": "登录成功",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "courseTopic/goodsTopic",
-					"style": {
-						"navigationBarTitleText": "选课中心",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "shopping/shoppingCart",
-					"style": {
-						"navigationBarTitleText": "购物车",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				}
-			]
-		},
-		{
-			"root": "pages5",
-			"pages": [
-				{
-					"path": "exam/index",
-					"style": {
-						"navigationBarTitleText": "我的模考",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "mockRecord/mock_record",
-					"style": {
-						"navigationBarTitleText": "模考记录",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "mockRecord/mock_record_list", // 没有用到
-					"style": {
-						"navigationBarTitleText": "模考记录",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "examCount/index",
-					"style": {
-						"navigationBarTitleText": "模拟考试",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "liveDetail/index",
-					"style": {
-						"navigationBarTitleText": "商品详情",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "liveDetail/list", // 暂时不用
-					"style": {
-						"navigationBarTitleText": "直播课列表",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "liveDetail/course",
-					"style": {
-						"navigationBarTitleText": "课程列表",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "examList/index",
-					"style": {
-						"navigationBarTitleText": "我的模考",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "examAppointList/index",
-					"style": {
-						"navigationBarTitleText": "模考预约",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "examReport/index",
-					"style": {
-						"navigationBarTitleText": "试卷报告",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "examReport/questionBankAllExplain",
-					"style": {
-						"navigationBarTitleText": "全部解析",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "examReport/questionBankWrongExplain",
-					"style": {
-						"navigationBarTitleText": "错题解析",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "examBank/index",
-					"style": {
-						"navigationBarTitleText": "模考",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "liveList/index",
-					"style": {
-						"navigationBarTitleText": "模考讲解直播",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "mockExam/examApply",
-					"style": {
-						"navigationBarTitleText": "模考报名",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "mockExam/registrationSuccess",
-					"style": {
-						"navigationBarTitleText": "模考报名成功",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "scan/recommen",
-					"style": {
-						"navigationBarTitleText": "课程列表",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				},
-				{
-					"path": "scan/examact",
-					"style": {
-						"navigationBarTitleText": "考前活动",
-						"navigationBarBackgroundColor": "#0386FD",
-						"navigationStyle": "custom", // 隐藏系统导航栏
-						"app-plus": {
-							"titleNView": false, //禁用原生导航栏 
-							"bounce": "none"
-						}
-					}
-				}
-			]
-		}
-	],
-	"preloadRule": {
-		"pages/index/index": {
-			"network": "all",
-			"packages": []
-		}
-	},
-	"globalStyle": {
-		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "WeChat",
-		"navigationBarBackgroundColor": "#F8F8F8",
-		"backgroundColor": "#F8F8F8",
-		"usingComponents": {}
-	},
-	"tabBar": {
-		"color": "#AAAAAA",
-		"selectedColor": "#222", //007AFF
-		"borderStyle": "black",
-		"backgroundColor": "#fff",
-		"list": [
-			{
-				"pagePath": "pages/index/index",
-				"iconPath": "static/nav1.png",
-				"selectedIconPath": "static/nav1_on.png",
-				"text": "首页"
-			},
-			{
-				"pagePath": "pages/course/index",
-				"iconPath": "static/nav2.png",
-				"selectedIconPath": "static/nav2_on.png",
-				"text": "选课"
-			},
-			{
-				"pagePath": "pages/learn/index",
-				"iconPath": "static/nav6.png",
-				"selectedIconPath": "static/nav6_on.png",
-				"text": "学习"
-			},
-			{
-				"pagePath": "pages/questionBank/index",
-				"iconPath": "static/nav3.png",
-				"selectedIconPath": "static/nav3_on.png",
-				"text": "题库"
-			},
-			{
-				"pagePath": "pages/wd/index",
-				"iconPath": "static/nav5.png",
-				"selectedIconPath": "static/nav5_on.png",
-				"text": "我的"
-			}
-		]
-	},
-	"navigateToMiniProgramAppIdList": [
-		""
-	],
-	"easycom": {
-		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
-	}
-}
+  "pages": [
+    //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+    {
+      "path": "pages/index/index",
+      "style": {
+        "navigationBarTitleText": "首页",
+        "onReachBottomDistance": 50,
+        "app-plus": {
+          "titleNView": false //禁用原生导航栏
+        },
+        "navigationStyle": "custom" // 隐藏系统导航栏
+        // "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/wd/index",
+      "style": {
+        "navigationBarTitleText": "我的",
+        // "navigationBarTextStyle": "white",
+        "navigationStyle": "custom", // 隐藏系统导航栏
+        "app-plus": {
+          "titleNView": false, //禁用原生导航栏
+          "bounce": "none"
+        }
+      }
+    },
+    {
+      "path": "pages/course/index",
+      "style": {
+        "navigationBarTitleText": "选课中心",
+        "navigationStyle": "custom", // 隐藏系统导航栏
+        "enablePullDownRefresh": true,
+        "app-plus": {
+          "titleNView": false, //禁用原生导航栏
+          "bounce": "none"
+        }
+      }
+    },
+    {
+      "path": "pages/learn/index",
+      "style": {
+        "navigationBarTitleText": "学习",
+        "navigationStyle": "custom", // 隐藏系统导航栏
+        "enablePullDownRefresh": true,
+        "backgroundTextStyle": "dark",
+        "app-plus": {
+          "titleNView": false, //禁用原生导航栏
+          "bounce": "none"
+        }
+      }
+    },
+    {
+      "path": "pages/questionBank/index",
+      "style": {
+        "navigationBarTitleText": "题库",
+        "navigationStyle": "custom", // 隐藏系统导航栏
+        "app-plus": {
+          "titleNView": false, //禁用原生导航栏
+          "bounce": "none"
+        }
+      }
+    },
+    {
+      "path": "pages/webview/index",
+      "style": {
+        "navigationBarTitleText": "网页",
+        "navigationStyle": "custom", // 隐藏系统导航栏
+        "app-plus": {
+          "titleNView": false, //禁用原生导航栏
+          "bounce": "none"
+        }
+      }
+    },
+    {
+      "path": "pages/webview/sdlink",
+      "style": {
+        "navigationBarTitleText": "网页",
+        "navigationStyle": "custom", // 隐藏系统导航栏
+        "app-plus": {
+          "titleNView": false, //禁用原生导航栏
+          "bounce": "none"
+        }
+      }
+    }
+  ],
+  "subPackages": [
+    {
+      "root": "pages2",
+      "pages": [
+        {
+          "path": "wd/info",
+          "style": {
+            "navigationBarTitleText": "我的资料",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "wd/menu", //没有用到
+          "style": {
+            "navigationBarTitleText": "基本资料",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "wd/edu_info", //没有用到
+          "style": {
+            "navigationBarTitleText": "教育信息",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "register/register",
+          "style": {
+            "navigationBarTitleText": "注册页",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "register/forget",
+          "style": {
+            "navigationBarTitleText": "忘记密码",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "wd/class", //暂时不用
+          "style": {
+            "navigationBarTitleText": "我的网课",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "order/confirm_list",
+          "style": {
+            "navigationBarTitleText": "确认订单",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "order/confirm_pay",
+          "style": {
+            "navigationBarTitleText": "订单支付",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "order/confirm_success",
+          "style": {
+            "navigationBarTitleText": "支付成功",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "order/index",
+          "style": {
+            "navigationBarTitleText": "我的订单",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            // "enablePullDownRefresh": true,
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "invoice/index",
+          "style": {
+            "navigationBarTitleText": "发票申请",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            // "enablePullDownRefresh": true,
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "exam/index", // 暂时不用
+          "style": {
+            "navigationBarTitleText": "我的考试",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "exam/exam_appointment",
+          "style": {
+            "navigationBarTitleText": "考试预约",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "exam/signCommit",
+          "style": {
+            "navigationBarTitleText": "签署承诺书",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "exam/exam_result",
+          "style": {
+            "navigationBarTitleText": "考试成绩和证书",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "wd/question_bank",
+          "style": {
+            "navigationBarTitleText": "我的题库通",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/my_question",
+          "style": {
+            "navigationBarTitleText": "我的题库",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/free_question",
+          "style": {
+            "navigationBarTitleText": "赠送题卷",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/question_record",
+          "style": {
+            "navigationBarTitleText": "做题记录",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "enablePullDownRefresh": true,
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/question_record_list",
+          "style": {
+            "navigationBarTitleText": "做题记录",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "enablePullDownRefresh": true,
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/detail",
+          "style": {
+            "navigationBarTitleText": "题库详情",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/question_detail",
+          "style": {
+            "navigationBarTitleText": "进入刷题",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "msg/index",
+          "style": {
+            "enablePullDownRefresh": true,
+            "navigationBarTitleText": "我的消息",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/question_statistics",
+          "style": {
+            "navigationBarTitleText": "做题统计",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/question_report",
+          "style": {
+            "navigationBarTitleText": "试卷报告",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/questionBank",
+          "style": {
+            "navigationBarTitleText": "试卷题目",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "class/questionBank",
+          "style": {
+            "navigationBarTitleText": "试卷题目",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/questionBankExplain",
+          "style": {
+            "navigationBarTitleText": "解析",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/questionBankWrongExplain",
+          "style": {
+            "navigationBarTitleText": "错题解析",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/questionBankAllExplain",
+          "style": {
+            "navigationBarTitleText": "全部解析",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/questionBankContinue",
+          "style": {
+            "navigationBarTitleText": "试卷题目",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/questionBankExplainDetail",
+          "style": {
+            "navigationBarTitleText": "试卷解析",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/questionBankTest",
+          "style": {
+            "navigationBarTitleText": "试卷",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "msg/detail",
+          "style": {
+            "navigationBarTitleText": "消息详情",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "plan/index",
+          "style": {
+            "navigationBarTitleText": "学习计划",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "plan/create",
+          "style": {
+            "navigationBarTitleText": "创建计划",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "plan/edit",
+          "style": {
+            "navigationBarTitleText": "修改计划",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "verify/input",
+          "style": {
+            "navigationBarTitleText": "填写审核资料",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "verify/input2",
+          "style": {
+            "navigationBarTitleText": "填写审核资料",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "appointment/index",
+          "style": {
+            "navigationBarTitleText": "预约考试",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "appointment/order",
+          "style": {
+            "navigationBarTitleText": "预约考试",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "appointment/kporder",
+          "style": {
+            "navigationBarTitleText": "考前培训预约考试",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "appointment/appointment_success",
+          "style": {
+            "navigationBarTitleText": "预约成功",
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "subject/collectBank",
+          "style": {
+            "navigationBarTitleText": "试卷",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "subject/wrongBank",
+          "style": {
+            "navigationBarTitleText": "错题",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "subject/collectTypeBank",
+          "style": {
+            "navigationBarTitleText": "试卷",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "subject/wrongTypeBank",
+          "style": {
+            "navigationBarTitleText": "试卷",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "class/question_report",
+          "style": {
+            "navigationBarTitleText": "试卷报告",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "subject/wrong",
+          "style": {
+            "navigationBarTitleText": "错题集",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/wrongById",
+          "style": {
+            "navigationBarTitleText": "错题集",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "bank/collectById",
+          "style": {
+            "navigationBarTitleText": "收藏集",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "subject/collect",
+          "style": {
+            "navigationBarTitleText": "收藏集",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "learn/my_learn",
+          "style": {
+            "navigationBarTitleText": "我的学时",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "learn/details",
+          "style": {
+            "navigationBarTitleText": "详情",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "learn/menu",
+          "style": {
+            "navigationBarTitleText": "目录",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "wd/course",
+          "style": {
+            "navigationBarTitleText": "所有课程",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "dailyPractice/index",
+          "style": {
+            "navigationBarTitleText": "每日一练",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "randomPractice/index",
+          "style": {
+            "navigationBarTitleText": "随机练习",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        }
+      ]
+    },
+    {
+      "root": "pages3",
+      "pages": [
+        {
+          "path": "polyv/polyv", // 没用用到
+          "style": {
+            "navigationBarTitleText": "保利威直播",
+            "app-plus": {
+              "bounce": "none"
+            },
+            "mp-weixin": {
+              "usingComponents": {
+                "player": "/pages3/static/polyv-sdk/components/player/player"
+              }
+            }
+          }
+        },
+        {
+          "path": "polyv/detail",
+          "style": {
+            "navigationBarTitleText": "课程详情",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            },
+            "mp-weixin": {
+              "usingComponents": {
+                "player": "/pages3/static/polyv-sdk/components/player/player",
+                "polyv-player": "plugin://polyv-player/player"
+              }
+            }
+          }
+        },
+        {
+          "path": "course/detail",
+          "style": {
+            "navigationBarTitleText": "课程详情",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            },
+            "mp-weixin": {
+              "usingComponents": {
+                "polyv-player": "plugin://polyv-player/player"
+              }
+            }
+          }
+        },
+        {
+          "path": "live/detail",
+          "style": {
+            "navigationBarTitleText": "商品详情",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            },
+            "mp-weixin": {
+              "usingComponents": {
+                "polyv-player": "plugin://polyv-player/player"
+              }
+            }
+          }
+        },
+        {
+          "path": "live/playback",
+          "style": {
+            "navigationBarTitleText": "回放视频",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            },
+            "mp-weixin": {
+              "usingComponents": {
+                "polyv-player": "plugin://polyv-player/player"
+              }
+            }
+          }
+        }
+      ],
+      "plugins": {
+        "polyv-player": {
+          "version": "0.3.0",
+          "provider": "wx4a350a258a6f7876"
+        }
+      }
+    },
+    {
+      "root": "pages4",
+      "pages": [
+        {
+          "path": "login/login",
+          "style": {
+            "navigationBarTitleText": "登录页",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "login/pcLogin",
+          "style": {
+            "navigationBarTitleText": "pc登录页",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "login/pcLoginSuccess",
+          "style": {
+            "navigationBarTitleText": "登录成功",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "courseTopic/goodsTopic",
+          "style": {
+            "navigationBarTitleText": "选课中心",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "shopping/shoppingCart",
+          "style": {
+            "navigationBarTitleText": "购物车",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        }
+      ]
+    },
+    {
+      "root": "pages5",
+      "pages": [
+        {
+          "path": "exam/index",
+          "style": {
+            "navigationBarTitleText": "我的模考",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "mockRecord/mock_record",
+          "style": {
+            "navigationBarTitleText": "模考记录",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "mockRecord/mock_record_list", // 没有用到
+          "style": {
+            "navigationBarTitleText": "模考记录",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "examCount/index",
+          "style": {
+            "navigationBarTitleText": "模拟考试",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "liveDetail/index",
+          "style": {
+            "navigationBarTitleText": "商品详情",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "liveDetail/list", // 暂时不用
+          "style": {
+            "navigationBarTitleText": "直播课列表",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "liveDetail/course",
+          "style": {
+            "navigationBarTitleText": "课程列表",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "examList/index",
+          "style": {
+            "navigationBarTitleText": "我的模考",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "examAppointList/index",
+          "style": {
+            "navigationBarTitleText": "模考预约",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "examReport/index",
+          "style": {
+            "navigationBarTitleText": "试卷报告",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "examReport/questionBankAllExplain",
+          "style": {
+            "navigationBarTitleText": "全部解析",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "examReport/questionBankWrongExplain",
+          "style": {
+            "navigationBarTitleText": "错题解析",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "examBank/index",
+          "style": {
+            "navigationBarTitleText": "模考",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "liveList/index",
+          "style": {
+            "navigationBarTitleText": "模考讲解直播",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "mockExam/examApply",
+          "style": {
+            "navigationBarTitleText": "模考报名",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "mockExam/registrationSuccess",
+          "style": {
+            "navigationBarTitleText": "模考报名成功",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "scan/recommen",
+          "style": {
+            "navigationBarTitleText": "课程列表",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        },
+        {
+          "path": "scan/retailact",
+          "style": {
+            "navigationBarTitleText": "课程列表",
+            "navigationBarBackgroundColor": "#0386FD",
+            "navigationStyle": "custom", // 隐藏系统导航栏
+            "app-plus": {
+              "titleNView": false, //禁用原生导航栏
+              "bounce": "none"
+            }
+          }
+        }
+      ]
+    }
+  ],
+  "preloadRule": {
+    "pages/index/index": {
+      "network": "all",
+      "packages": []
+    }
+  },
+  "globalStyle": {
+    "navigationBarTextStyle": "black",
+    "navigationBarTitleText": "WeChat",
+    "navigationBarBackgroundColor": "#F8F8F8",
+    "backgroundColor": "#F8F8F8",
+    "usingComponents": {}
+  },
+  "tabBar": {
+    "color": "#AAAAAA",
+    "selectedColor": "#222", //007AFF
+    "borderStyle": "black",
+    "backgroundColor": "#fff",
+    "list": [
+      {
+        "pagePath": "pages/index/index",
+        "iconPath": "static/nav1.png",
+        "selectedIconPath": "static/nav1_on.png",
+        "text": "首页"
+      },
+      {
+        "pagePath": "pages/course/index",
+        "iconPath": "static/nav2.png",
+        "selectedIconPath": "static/nav2_on.png",
+        "text": "选课"
+      },
+      {
+        "pagePath": "pages/learn/index",
+        "iconPath": "static/nav6.png",
+        "selectedIconPath": "static/nav6_on.png",
+        "text": "学习"
+      },
+      {
+        "pagePath": "pages/questionBank/index",
+        "iconPath": "static/nav3.png",
+        "selectedIconPath": "static/nav3_on.png",
+        "text": "题库"
+      },
+      {
+        "pagePath": "pages/wd/index",
+        "iconPath": "static/nav5.png",
+        "selectedIconPath": "static/nav5_on.png",
+        "text": "我的"
+      }
+    ]
+  },
+  "navigateToMiniProgramAppIdList": [""],
+  "easycom": {
+    "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
+  }
+}

+ 3 - 15
pages/course/index.vue

@@ -1,19 +1,6 @@
 <template>
   <view>
-    <u-navbar
-      :is-back="false"
-      title="选课中心"
-      :border-bottom="false"
-      title-color="#333333"
-      back-icon-color="#ffffff"
-    >
-      <view class="slot-wrap">
-        <image
-          :src="$method.splitImgHost(config.h5Logo)"
-          style="width: 178rpx; height: 31rpx; margin-left: 30rpx"
-        ></image>
-      </view>
-    </u-navbar>
+    <nav-logo title="选课中心"></nav-logo>
     <view v-show="!show">
       <view style="position: fixed; width: 100%; z-index: 999">
         <view class="check_ck">
@@ -394,7 +381,6 @@
 <script>
 import { mapGetters } from "vuex";
 export default {
-  components: {},
   data() {
     return {
       show: false,
@@ -458,6 +444,8 @@ export default {
         bId: 0,
         pId: 0,
       },
+      imgwidth: 0,
+      imgheight: 0,
     };
   },
   onPullDownRefresh() {

+ 3 - 46
pages/index/index.vue

@@ -1,16 +1,6 @@
 <template>
   <view class="index">
-    <u-navbar
-      class="navbar"
-      :is-back="false"
-      :border-bottom="false"
-      title-color="#333333"
-      back-icon-color="#ffffff"
-    >
-      <view class="slot-wrap">
-        <image :src="$method.splitImgHost(config.h5Logo)"></image>
-      </view>
-    </u-navbar>
+    <nav-logo :isShowLogo="true"></nav-logo>
     <view class="swiper">
       <swiper
         :indicator-dots="false"
@@ -412,6 +402,8 @@ export default {
       subIndex: 0,
       courSubjectId: "",
       optObj: {},
+      imgwidth: 0,
+      imgheight: 0,
     };
   },
   async onLoad(option) {
@@ -542,23 +534,6 @@ export default {
   },
   methods: {
     ...mapActions(["getUserInfo", "appCommonConfig"]),
-    // 公众号登录
-    OfficialLogin() {
-      console.log("公众号登录");
-      this.$http({
-        url: "/app/common/gzh_login",
-        method: "post",
-        data: {
-          code: this.optObj.code,
-        },
-        noToken: true,
-      }).then((res) => {
-        if (res.data.code == 200) {
-        } else {
-          this.$u.toast(res.data.msg);
-        }
-      });
-    },
     tobuy(item) {
       if (item.goodsType == 2) {
         uni.navigateTo({
@@ -1097,24 +1072,6 @@ page {
   white-space: nowrap;
 }
 .index {
-  .navbar {
-    /deep/ .u-navbar-inner {
-      margin-right: 0 !important;
-    }
-
-    .slot-wrap {
-      width: 100%;
-      display: flex;
-      align-items: center;
-      justify-content: center;
-
-      image {
-        width: 178rpx;
-        height: 31rpx;
-      }
-    }
-  }
-
   .swiper {
     width: 100%;
     position: relative;

+ 29 - 25
pages/learn/index.vue

@@ -1,19 +1,6 @@
 <template>
   <view class="learnings">
-    <u-navbar
-      :is-back="false"
-      title="学习中心"
-      :border-bottom="false"
-      title-color="#333333"
-      back-icon-color="#ffffff"
-    >
-      <view class="slot-wrap">
-        <image
-          :src="$method.splitImgHost(config.h5Logo)"
-          style="width: 178rpx; height: 31rpx; margin-left: 30rpx"
-        ></image>
-      </view>
-    </u-navbar>
+    <nav-logo title="学习中心"></nav-logo>
     <u-line color="#D6D6DB" />
     <view class="contents">
       <!-- <view class="diatance">
@@ -237,10 +224,11 @@
                             )
                           }}</view
                         >
-                        <view class="date"
+                        <view class="date">班级状态:已过期 </view>
+                        <!-- <view class="date"
                           >班级状态:已过期,有疑问请联系
                           <text @click="call()">020-87085982</text></view
-                        >
+                        > -->
                       </view>
                     </view>
                   </template>
@@ -277,10 +265,11 @@
                             )
                           }}</view
                         >
-                        <view class="date"
+                        <view class="date">班级状态:未到学习时间 </view>
+                        <!-- <view class="date"
                           >班级状态:未到学习时间,有疑问请联系
                           <text @click="call()">020-87085982</text></view
-                        >
+                        > -->
                       </view>
                     </view>
                   </template>
@@ -390,7 +379,7 @@
                             >
                             <text v-else-if="item.periodStatus == 1">
                               <text v-if="item.periodPlush > 0"
-                                >学时已上报注册中心</text
+                                >学时已上报信息中心</text
                               >
                               <text v-else>机构审核:学时审核通过</text>
                             </text>
@@ -716,8 +705,8 @@
     >
       <view class="slot-content">
         <view class="content">
-          为避免个人信息不正确导致您的学习时长无效,请认真核对以下信息是否正确,如信息有误请取消当前操作,立刻联系020-38946666
-
+          <!-- ,立刻联系020-38946666 -->
+          为避免个人信息不正确导致您的学习时长无效,请认真核对以下信息是否正确,如信息有误请取消当前操作。
           <view class="msg-list" v-if="userInfo">
             <view class="item">
               <text class="item__left">姓名:</text>
@@ -809,6 +798,8 @@ export default {
       appointTestShow: false, //预约考试弹窗
       appointTestList: [],
       appointItemIndex: {}, // 点击了哪项课程
+      imgwidth: 0,
+      imgheight: 0,
     };
   },
   filters: {
@@ -832,7 +823,9 @@ export default {
     // 1668873600 ,2022.11.20的时间戳
     this.leftDays = 1668873600 - parseInt(curTime / 1000);
     this.sysTime = +this.$method.timest();
-    !this.userInfo && this.$api.refreshUserInfo();
+    if (this.$method.isLogin()) {
+      !this.userInfo && this.$api.refreshUserInfo();
+    }
   },
   async onShow() {
     uni.pageScrollTo({
@@ -1052,10 +1045,11 @@ export default {
           });
           return;
         } else {
+          // ,有疑问,请联系020-87085982
           uni.showModal({
             showCancel: false,
             content:
-              "您的学习账号未开通,请稍后再尝试,有疑问,请联系020-87085982!",
+              "您的学习账号未开通,请稍后再尝试,有疑问!",
           });
           return;
         }
@@ -1250,11 +1244,12 @@ export default {
             if (res.data.data.pushInfo) {
               resolve(true);
             } else {
+              // ,有疑问,请联系020-87085982
               uni.showModal({
                 showCancel: false,
                 title: "提示",
                 content:
-                  "开通信息推送不成功,无法进入学习,请联系020-87085982!",
+                  "开通信息推送不成功,无法进入学习!",
               });
               resolve(false);
             }
@@ -1366,17 +1361,26 @@ export default {
               infoJson: JSON.stringify(infoJson),
             })
             .then((res) => {
+              if (res.data.code != 200) {
+                this.showUserConfirmInfo = false;
+                uni.showToast({
+                  icon: "none",
+                  title: res.data.msg,
+                });
+                return;
+              }
               if (res.data.data.pushInfo) {
                 uni.showToast({
                   icon: "none",
                   title: "提交成功",
                 });
               } else {
+                // ,有疑问,请联系020-87085982
                 uni.showModal({
                   showCancel: false,
                   title: "提示",
                   content:
-                    "开通信息推送不成功,无法进入学习,请联系020-87085982!",
+                    "开通信息推送不成功,无法进入学习!",
                 });
               }
               this.showUserConfirmInfo = false;

+ 1 - 14
pages/questionBank/index.vue

@@ -1,19 +1,6 @@
 <template>
   <view class="questionBank">
-    <u-navbar
-      :is-back="false"
-      title="题库中心"
-      :border-bottom="false"
-      title-color="#333333"
-      back-icon-color="#ffffff"
-    >
-      <view class="slot-wrap">
-        <image
-          :src="$method.splitImgHost(config.h5Logo)"
-          style="width: 178rpx; height: 31rpx; margin-left: 30rpx"
-        ></image>
-      </view>
-    </u-navbar>
+    <nav-logo title="题库中心"></nav-logo>
     <!-- 有学习的课程 -->
     <view v-if="questionLists.length" class="had_courses">
       <!-- 我的题库 -->

+ 1 - 20
pages/wd/index.vue

@@ -1,20 +1,6 @@
 <template>
   <view style="height:100%">
-    <!-- <image mode="widthFix" :src="isLogin ? '/static/wd_bg_login.jpg' : '/static/wd_bg.jpg'" :class="isLogin ? 'login_full_img' : 'full_img'"></image> -->
-    <u-navbar
-      :is-back="false"
-      title="我的"
-      :border-bottom="false"
-      title-color="#333333"
-      back-icon-color="#ffffff"
-    >
-      <view class="slot-wrap">
-        <image
-          :src="$method.splitImgHost(config.h5Logo)"
-          style="width: 178rpx; height: 31rpx; margin-left: 30rpx"
-        ></image>
-      </view>
-    </u-navbar>
+    <nav-logo title="我的"></nav-logo>
     <view v-if="isLogin" class="imgs_bg">
       <view class="infos">
         <image
@@ -158,11 +144,6 @@
       <view class="logout" @click="logout">退出</view>
     </view>
 
-    <!-- <u-navbar :is-back="false" title="我的" :border-bottom="false" background="{ background: '#ffffff',opacity:0.4; }" title-color="#ffffff" back-icon-color="#ffffff">
-			<view class="slot-wrap"><image src="/static/logo.png" style="width: 178rpx;height: 31rpx;margin-left: 30rpx;"></image></view>
-		</u-navbar> -->
-
-    <!-- <tab-bar v-model="current" :list="tabbarlist" :mid-button="true" :mid-button-size="50" class="tab_items"></tab-bar> -->
   </view>
 </template>
 

+ 2 - 2
pages/webview/sdlink.vue

@@ -18,9 +18,9 @@ export default {
   },
   onLoad(option) {
     this.url = option.url;
+    console.log(this.url, "123");
   },
 };
 </script>
 
-<style>
-</style>
+<style></style>

+ 1023 - 794
pages2/bank/detail.vue

@@ -1,868 +1,1097 @@
 <template>
-	<view>
-		<nav-bar title="题库详情"></nav-bar>
-		<view style="background-color: #FFFFFF;">
-			<image :src="$method.splitImgHost(goodsData.coverUrl)" style="width: 100%;height: 400rpx;"></image>
-			
-			<view class="cou_title">
-				<view class="title_name">
-					<view class="titleTag">{{ goodsData.goodsName }}</view>
-				</view>
-				<view style="display: flex;justify-content: space-between;margin-top: 13rpx;">
-					<view class="prices">
-						<!-- <text class="price_sym"></text> -->
-						<text v-if="goodsData.standPrice" class="price_word">¥ {{ goodsData.standPrice }}</text>
-						<text v-else class="price_word free">免费</text>
-						<text v-if="goodsData.linePrice" class="sale"> ¥ </text>
-						<text v-if="goodsData.linePrice" class="price_line"> {{ goodsData.linePrice }}</text>
-						
-					</view>
-					<view class="noteTag">
-						<!-- 共 <text class="blackFont">{{ goodsData.chapterNum }} 张卷 {{goodsData || '-'}}</text> 道题 -->
-					</view>
-				</view>
-			</view>
-		</view>
+  <view>
+    <nav-bar title="题库详情"></nav-bar>
+    <view style="background-color: #ffffff">
+      <image
+        :src="$method.splitImgHost(goodsData.coverUrl)"
+        style="width: 100%; height: 400rpx"
+      ></image>
 
-		<view class="contents">
-			
-			<!-- <view>
+      <view class="cou_title">
+        <view class="title_name">
+          <view class="titleTag">{{ goodsData.goodsName }}</view>
+        </view>
+        <view
+          style="
+            display: flex;
+            justify-content: space-between;
+            margin-top: 13rpx;
+          "
+        >
+          <view class="prices">
+            <!-- <text class="price_sym"></text> -->
+            <text v-if="goodsData.standPrice" class="price_word"
+              >¥ {{ goodsData.standPrice }}</text
+            >
+            <text v-else class="price_word free">免费</text>
+            <text v-if="goodsData.linePrice" class="sale"> ¥ </text>
+            <text v-if="goodsData.linePrice" class="price_line">
+              {{ goodsData.linePrice }}</text
+            >
+          </view>
+          <view class="noteTag">
+            <!-- 共 <text class="blackFont">{{ goodsData.chapterNum }} 张卷 {{goodsData || '-'}}</text> 道题 -->
+          </view>
+        </view>
+      </view>
+    </view>
+
+    <view class="contents">
+      <!-- <view>
 				<view><u-tabs :list="list" item-width="50%" font-size="30" bar-width="24" :current="current" @change="change" active-color="#007AFF"></u-tabs></view>
 			</view> -->
-			<view class="tabs">
-				<view v-for="(item, index) in list" :key="index" class="tab_item"
-					:class="[{nactive: current == index}]" @click="change(index)">{{ item.name }}</view>
-			</view>
+      <view class="tabs">
+        <view
+          v-for="(item, index) in list"
+          :key="index"
+          class="tab_item"
+          :class="[{ nactive: current == index }]"
+          @click="change(index)"
+          >{{ item.name }}</view
+        >
+      </view>
 
-			<view class="intro" v-if="current == 0">
-				<view v-if="goodsData.mobileDetailHtml" class="content" style="padding:10rpx;"><rich-text :nodes="goodsData.mobileDetailHtml"></rich-text></view>
-			</view>
-			<view class="title-list" v-if="current == 1">
-				<view class="content">
-					<view class="list" v-for="(item1, index1) in bankList" :key="index1">
-						<template v-if="item1.type == 1">
-							<view class="moduleItem" @click="clickModule(index1,item1.majorId)">
-								<view class="courseName">{{ item1.name }}</view>
-								<view>
-									<image src="/static/icon/up.png" class="icon_up" v-if="!item1.showList"></image>
-									<image src="/static/icon/down.png" class="icon_up" v-if="item1.showList"></image>
-								</view>
-							</view>
+      <view class="intro" v-if="current == 0">
+        <view
+          v-if="goodsData.mobileDetailHtml"
+          class="content"
+          style="padding: 10rpx"
+          ><rich-text :nodes="goodsData.mobileDetailHtml"></rich-text
+        ></view>
+      </view>
+      <view class="title-list" v-if="current == 1">
+        <view class="content">
+          <view class="list" v-for="(item1, index1) in bankList" :key="index1">
+            <template v-if="item1.type == 1">
+              <view
+                class="moduleItem"
+                @click="clickModule(index1, item1.majorId)"
+              >
+                <view class="courseName">{{ item1.name }}</view>
+                <view>
+                  <image
+                    src="/static/icon/up.png"
+                    class="icon_up"
+                    v-if="!item1.showList"
+                  ></image>
+                  <image
+                    src="/static/icon/down.png"
+                    class="icon_up"
+                    v-if="item1.showList"
+                  ></image>
+                </view>
+              </view>
 
-							<template v-if="item1.showList">
-								<view v-for="(item2, index2) in item1.list" :key="index2">
-									<view class="section" @click="changeItem(index1,index2,item2.chapterExamId,item1.type)">
-										<!-- <image src="/static/icon/down1.png" class="icon_up" v-if="item2.showList"></image>
+              <template v-if="item1.showList">
+                <view v-for="(item2, index2) in item1.list" :key="index2">
+                  <view
+                    class="section"
+                    @click="
+                      changeItem(
+                        index1,
+                        index2,
+                        item2.chapterExamId,
+                        item1.type
+                      )
+                    "
+                  >
+                    <!-- <image src="/static/icon/down1.png" class="icon_up" v-if="item2.showList"></image>
 										<image src="/static/icon/up1.png" class="icon_up" v-if="!item2.showList"></image> -->
-										<u-icon v-if="!item2.showList" name="arrow-right" color="#999" size="24"></u-icon>
-										<u-icon v-if="item2.showList" name="arrow-down" color="#999" size="24"></u-icon>
-										<text class="item_name">{{ item2.name }}</text>
-									</view>
-									<view class="article-list" v-if="item2.showList">
-										<view class="article" :class="{ active: showTest(article.examId) }" v-for="(article, index3) in item2.list" :key="index3">
-											<view class="flex_auto">{{ article.examName }}</view>
-											<view class="btn" @click="goTest(item1.type,article)" v-if="showTest(article.examId)">试做</view>
-										</view>
-									</view>
-									<u-line></u-line>
-								</view>
-							</template>
-						</template>
+                    <u-icon
+                      v-if="!item2.showList"
+                      name="arrow-right"
+                      color="#999"
+                      size="24"
+                    ></u-icon>
+                    <u-icon
+                      v-if="item2.showList"
+                      name="arrow-down"
+                      color="#999"
+                      size="24"
+                    ></u-icon>
+                    <text class="item_name">{{ item2.name }}</text>
+                  </view>
+                  <view class="article-list" v-if="item2.showList">
+                    <view
+                      class="article"
+                      :class="{ active: showTest(article.examId) }"
+                      v-for="(article, index3) in item2.list"
+                      :key="index3"
+                    >
+                      <view class="flex_auto">{{ article.examName }}</view>
+                      <view
+                        class="btn"
+                        @click="goTest(item1.type, article)"
+                        v-if="showTest(article.examId)"
+                        >试做</view
+                      >
+                    </view>
+                  </view>
+                  <u-line></u-line>
+                </view>
+              </template>
+            </template>
 
-						<template v-if="item1.type == 2">
-							<view class="section" @click="changeItem(index1,'',item1.majorId,item1.type)" >
-								<!-- <image src="/static/icon/down1.png" class="icon_up" v-if="item1.showList"></image>
+            <template v-if="item1.type == 2">
+              <view
+                class="section"
+                @click="changeItem(index1, '', item1.majorId, item1.type)"
+              >
+                <!-- <image src="/static/icon/down1.png" class="icon_up" v-if="item1.showList"></image>
 								<image src="/static/icon/up1.png" class="icon_up" v-if="!item1.showList"></image> -->
-								<u-icon v-if="!item1.showList" name="arrow-right" color="#999" size="24"></u-icon>
-								<u-icon v-if="item1.showList" name="arrow-down" color="#999" size="24"></u-icon>
-								<text class="item_name">{{ item1.name }}</text>
-							</view>
-							<view class="article-list" v-if="item1.showList" >
-								<view class="article" :class="{active:showTest(article.examId)}"  :key="index2" v-for="(article,index2) in item1.list">
-									<view class="flex_auto">{{article.examName}}</view>
-									<view class="btn" @click="goTest(item1.type,article)"  v-if="showTest(article.examId)">试做</view>
-								</view>
-							</view>
-						</template>
+                <u-icon
+                  v-if="!item1.showList"
+                  name="arrow-right"
+                  color="#999"
+                  size="24"
+                ></u-icon>
+                <u-icon
+                  v-if="item1.showList"
+                  name="arrow-down"
+                  color="#999"
+                  size="24"
+                ></u-icon>
+                <text class="item_name">{{ item1.name }}</text>
+              </view>
+              <view class="article-list" v-if="item1.showList">
+                <view
+                  class="article"
+                  :class="{ active: showTest(article.examId) }"
+                  :key="index2"
+                  v-for="(article, index2) in item1.list"
+                >
+                  <view class="flex_auto">{{ article.examName }}</view>
+                  <view
+                    class="btn"
+                    @click="goTest(item1.type, article)"
+                    v-if="showTest(article.examId)"
+                    >试做</view
+                  >
+                </view>
+              </view>
+            </template>
 
-						<template v-if="item1.type == 3">
-							<view class="article" :class="{ active: showTest(item1.majorId) }">
-								<view class="flex_auto">{{ item1.name }}</view>
-								<view class="btn" @click="goTest(item1.type,item1)" v-if="showTest(item1.majorId)">试做</view>
-							</view>
-						</template>
-					</view>
-				</view>
-			</view>
-		</view>
-		
-		<view class="bottomBox" v-if="!hideBuyState">
-			<!-- <view class="priceTag">¥ {{ toFixed(goodsData.standPrice) }}</view> -->
-			<view class="icons">
-				
-				<view class="icon_item ones">
-					<image src="/static/index/share.png" class="share"></image>
-					<button type="default" open-type="share" class="bt_share"></button>
-					<view class="share_w">分享</view>
-				</view>
-				<view class="icon_item">
-					<image src="/static/index/shopcar.png" class="shopcar" @click="toShopcar()"></image>
-					<view class="share_w">购物车</view>
-				</view>
-				
-			</view>
-			<view style="display: flex;color: #FFFFFF;align-items: center;">
-				<view class="btn1" @click="addCart">加购物车</view>
-				<view class="btn2" @click="buy">立即购买</view>
-			</view>
-		</view>
+            <template v-if="item1.type == 3">
+              <view
+                class="article"
+                :class="{ active: showTest(item1.majorId) }"
+              >
+                <view class="flex_auto">{{ item1.name }}</view>
+                <view
+                  class="btn"
+                  @click="goTest(item1.type, item1)"
+                  v-if="showTest(item1.majorId)"
+                  >试做</view
+                >
+              </view>
+            </template>
+          </view>
+        </view>
+      </view>
+    </view>
 
-		<!-- 已购买过课程的弹窗 -->
-		<u-popup v-model="bugCourseModel" mode="center" border-radius="40">
-			<view class="had_bugCourse">
-				<image src="/pages2/static/hadBug.png" class="share"></image>
-				<view class="tips">
-					<view class="warns">温馨提示</view>
-					<view class="words">您<text>已购买过</text>该商品课程</view>
-					<view class="words">可立即前往学习</view>
-				</view>
-				<view class="tip_botton">
-					<view class="cancel_btn" @click="changeKown()">知道了</view>
-					<view class="confirm_btn" @click="toStudy()">去学习</view>
-				</view>
-			</view>
-		</u-popup>
+    <view class="bottomBox" v-if="!hideBuyState">
+      <!-- <view class="priceTag">¥ {{ toFixed(goodsData.standPrice) }}</view> -->
+      <view class="icons">
+        <view class="icon_item ones">
+          <image src="/static/index/share.png" class="share"></image>
+          <button type="default" open-type="share" class="bt_share"></button>
+          <view class="share_w">分享</view>
+        </view>
+        <view class="icon_item" v-if="!disCode">
+          <image
+            src="/static/index/shopcar.png"
+            class="shopcar"
+            @click="toShopcar()"
+          ></image>
+          <view class="share_w">购物车</view>
+        </view>
+      </view>
+      <view style="display: flex; color: #ffffff; align-items: center">
+        <view class="btn1" v-if="!disCode" @click="addCart">加购物车</view>
+        <view class="btn2" @click="buy">立即购买</view>
+      </view>
+    </view>
 
-		<!-- 选择规格弹窗 -->
-        <u-popup v-model="toggleSkuShow" mode="bottom" border-radius="40">
-			<view class="popup_box">
-                <view class="check_head">
-                    <view class="headers">
-                    	<view class="grade">选择规格</view>
-                        <u-icon name="close" color="#9C9C9C" size="40" @click="closePop()"></u-icon>
-                    </view>
-                </view>
-                <view v-if="Object.keys(skuItem).length" class="pop_prices">
-                    <view class="lefts">
-						<image :src="$method.splitImgHost(skuItem.coverUrl)" class="imgs"></image>
-					</view>
-					<view class="rights">
-						<view class="goods_titles">{{ skuItem.goodsName }}</view>
-						<view class="goods_price">¥{{ skuItem.standPrice }}</view>
-					</view>
-                </view>
-				<view class="lines"></view>
-                <view class="check_con">
-					<scroll-view scroll-y="true" style="height: 490rpx;">
-						<view v-for="(item, index) in specList" :key="index" class="check_items">
-							<view class="grades">{{ item.name }}</view>
-							<!-- <scroll-view scroll-y="true" style="height: 180rpx;"> -->
-								<view class="grade_names">
-									<view class="course_items" v-for="(child, c_index) in item.specAttrList" :key="c_index" :class="{'nactive': child.check }"
-									@click="selectSku(child, index)">
-										{{ child.name }}
-									</view>
-								</view>
-							<!-- </scroll-view> -->
-						</view>
-					</scroll-view>
+    <!-- 已购买过课程的弹窗 -->
+    <u-popup v-model="bugCourseModel" mode="center" border-radius="40">
+      <view class="had_bugCourse">
+        <image src="/pages2/static/hadBug.png" class="share"></image>
+        <view class="tips">
+          <view class="warns">温馨提示</view>
+          <view class="words">您<text>已购买过</text>该商品课程</view>
+          <view class="words">可立即前往学习</view>
+        </view>
+        <view class="tip_botton">
+          <view class="cancel_btn" @click="changeKown()">知道了</view>
+          <view class="confirm_btn" @click="toStudy()">去学习</view>
+        </view>
+      </view>
+    </u-popup>
+
+    <!-- 选择规格弹窗 -->
+    <u-popup v-model="toggleSkuShow" mode="bottom" border-radius="40">
+      <view class="popup_box">
+        <view class="check_head">
+          <view class="headers">
+            <view class="grade">选择规格</view>
+            <u-icon
+              name="close"
+              color="#9C9C9C"
+              size="40"
+              @click="closePop()"
+            ></u-icon>
+          </view>
+        </view>
+        <view v-if="Object.keys(skuItem).length" class="pop_prices">
+          <view class="lefts">
+            <image
+              :src="$method.splitImgHost(skuItem.coverUrl)"
+              class="imgs"
+            ></image>
+          </view>
+          <view class="rights">
+            <view class="goods_titles">{{ skuItem.goodsName }}</view>
+            <view class="goods_price">¥{{ skuItem.standPrice }}</view>
+          </view>
+        </view>
+        <view class="lines"></view>
+        <view class="check_con">
+          <scroll-view scroll-y="true" style="height: 490rpx">
+            <view
+              v-for="(item, index) in specList"
+              :key="index"
+              class="check_items"
+            >
+              <view class="grades">{{ item.name }}</view>
+              <!-- <scroll-view scroll-y="true" style="height: 180rpx;"> -->
+              <view class="grade_names">
+                <view
+                  class="course_items"
+                  v-for="(child, c_index) in item.specAttrList"
+                  :key="c_index"
+                  :class="{ nactive: child.check }"
+                  @click="selectSku(child, index)"
+                >
+                  {{ child.name }}
                 </view>
-				<view class="confirm_btns">
-					<view v-if="Object.keys(skuItem).length == 0 || specList.length != isCheckSku" class="right_now r_disable">确 定</view>
-					<view v-else class="right_now" @click="rightNowBuy()">确 定</view>
-				</view>
-			</view>
-		</u-popup>
-	</view>
+              </view>
+              <!-- </scroll-view> -->
+            </view>
+          </scroll-view>
+        </view>
+        <view class="confirm_btns">
+          <view
+            v-if="
+              Object.keys(skuItem).length == 0 || specList.length != isCheckSku
+            "
+            class="right_now r_disable"
+            >确 定</view
+          >
+          <view v-else class="right_now" @click="rightNowBuy()">确 定</view>
+        </view>
+      </view>
+    </u-popup>
+  </view>
 </template>
 
 <script>
 // import { websocket } from '@/common/socket.js';
-import { mapGetters } from 'vuex';
+import { mapGetters } from "vuex";
 export default {
-	data() {
-		return {
-			list: [
-				{
-					name: '详情'
-				},
-				{
-					name: '大纲'
-				}
-			],
-			current: 0,
-			id: '',
-			goodsData: {},
-			bankList: [],
-			goodsExamConfig: [],
-			bugCourseModel: false, // 弹窗
-			hadBuyCourse: {}, // 已购买课程信息
-			toggleSkuShow: false,
-			skuItem: {},
-			isCarOrBuy: 1, // 1加入购物车 2立即购买
-			specList: [], // 规格列表
-		};
-	},
-	filters: {
-		formatDate: function(value) {
-			var date = new Date(value); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
-			var Y = date.getFullYear();
-			return Y;
-		}
-	},
-	onUnload() {},
-	computed: { 
-		...mapGetters(['userInfo','hideBuyState']),
-		isCheckSku() {
-			let checkCout = 0
-			this.specList.forEach((item, index) => {
-				if (item.specAttrList && item.specAttrList.length) {
-					item.specAttrList.forEach((child, c_index) => {
-						if (child.check) {
-							checkCout++
-						}
-					})
-				}
-				
-			})
-			return checkCout
-		},
-	},
-	onLoad(option) {
-		console.log('题库option:', option);
-		if (option.scene) {
-			// scene 生成二维码扫码进来的
-			let optObj = {}
-			let arrs = decodeURIComponent(option.scene).split('&')
-			for (let i = 0; i < arrs.length; i++) {
-				optObj[arrs[i].split('=')[0]] = arrs[i].split('=')[1]
-			}
-			this.id = optObj.id
-			uni.setStorageSync('newUser_sc', optObj.sc)
-			uni.setStorageSync("shareActivityCode", optObj.sac)
-			if (optObj.sac && this.$method.isLogin()) {
-				this.editShareActivityCode()
-			}
-		} else {
-			// 小程序正常跳转的
-			// this.id => goodsId
-			this.id = option.id
-			if (option.sac) {
-				uni.setStorageSync("shareActivityCode", option.sac)
-				if (this.$method.isLogin()) {
-					//已登录
-					this.editShareActivityCode()
-				}
-			}
-		}
-		this.getDetail();
-		this.goodsBankList();
-		this.getIsBuy() // 判断是否已经购买过该课程
-		wx.showShareMenu({
-			withShareTicket: true,
-			menus: ["shareAppMessage", "shareTimeline"]
-		})
-	},
-	onShow() {},
-	// 分享到朋友圈
-	onShareTimeline() {
-		return {
-			title: this.goodsData.goodsName,
-			query: 'id=' + this.id,
-			imageUrl: this.$method.splitImgHost(this.goodsData.coverUrl)
-		}
-	},
-	onShareAppMessage() {
-		return {
-			title: this.goodsData.goodsName,
-			path: `/pages2/bank/detail?id=` + this.id,
-			imageUrl: this.$method.splitImgHost(this.goodsData.coverUrl)
-		}
-	},
-	
-	methods: {
-		// 修改用户活动邀请码
-		editShareActivityCode() {
-			console.log('修改用户活动邀请码')
-			this.$http({
-				url: '/app/user/edit/shareActivityCode',
-				method: "post",
-				data: {
-					shareActivityCode: uni.getStorageSync("shareActivityCode")
-				}
-			}).then((res) => {
-				if (res.data.code == 200) {}
-			})
-		},
-		toFixed(number) {
-			if(number) {
-				return number.toFixed(2)
-			} else {
-				return '0.00'
-			}
-		},
-		getDetail() {
-			// '/app/common/goods/'+ data 获取商品详细信息
-			this.$api.commonGoodsDetail(this.id).then(res => {
-			if (res.data.data){
-				if (res.data.data.mobileDetailHtml) {
-					res.data.data.mobileDetailHtml = res.data.data.mobileDetailHtml.replace(/<img/gi, '<img style="max-width:100%;"');
-				}
-				this.goodsData = res.data.data;
-				this.goodsExamConfig = JSON.parse(res.data.data.goodsExamConfig);
-			}
-			});
-		},
-		goodsBankList() {
-			this.$api
-				.goodsBankList({
-					goodsId: this.id
-				})
-				.then(res => {
-					console.log(res);
-					this.bankList = res.data.data;
-					this.showAllCharpter();
-				});
-		},
-		/**
-		 * 展示第一个章下的节内容
-		 */
-		showAllCharpter() {
-			for(let i = 0; i < this.bankList.length; i++) {
-				if(this.bankList[i].type == 1) { //第一个是模块直接展开,再展开章下面的节
-					this.$api
-						.goodsChapterList({
-							moduleExamId: this.bankList[i].majorId
-						})
-						.then(res => {
-							this.$set(this.bankList[i], 'showList', true);
-							this.$set(this.bankList[i], 'list', res.data.data);
-							this.changeItem(i,0,this.bankList[i].list[0].chapterExamId,this.bankList[i].type)
-						});
-					break;
-				} else if(this.bankList[i].type == 2) { //第一个章展开下面的节
-					this.changeItem(i,'',this.bankList[i].majorId,this.bankList[i].type)
-					break;
-				}
-			}
-		},
-		goodsChapterList(bank, id) {
-			this.$api
-				.goodsChapterList({
-					moduleExamId: id
-				})
-				.then(res => {
-					this.$set(bank, 'list', res.data.data);
-				});
-		},
-		
-		goTest(type,item) {
-			
-			if(type == 1) {
-				uni.setStorageSync('testname',item.examName)
-				uni.navigateTo({
-					url:'/pages2/bank/questionBankTest?id=' + item.examId + '&num=' + this.showTest(item.examId).num
-				})
-			} else if(type == 2) {
-				uni.setStorageSync('testname',item.examName)
-				uni.navigateTo({
-					url:'/pages2/bank/questionBankTest?id='+item.examId+'&num='+ this.showTest(item.examId).num
-				})
-			} else if(type == 3) {
-				uni.setStorageSync('testname',item.name)
-				uni.navigateTo({
-					url:'/pages2/bank/questionBankTest?id=' + item.majorId + '&num=' + this.showTest(item.majorId).num
-				})
-			}
-		},
+  data() {
+    return {
+      list: [
+        {
+          name: "详情",
+        },
+        {
+          name: "大纲",
+        },
+      ],
+      current: 0,
+      id: "",
+      goodsData: {},
+      bankList: [],
+      goodsExamConfig: [],
+      bugCourseModel: false, // 弹窗
+      hadBuyCourse: {}, // 已购买课程信息
+      toggleSkuShow: false,
+      skuItem: {},
+      isCarOrBuy: 1, // 1加入购物车 2立即购买
+      specList: [], // 规格列表
+      options: {},
+    };
+  },
+  filters: {
+    formatDate: function (value) {
+      var date = new Date(value); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
+      var Y = date.getFullYear();
+      return Y;
+    },
+  },
+  onUnload() {},
+  computed: {
+    ...mapGetters(["userInfo", "hideBuyState"]),
+    isCheckSku() {
+      let checkCout = 0;
+      this.specList.forEach((item, index) => {
+        if (item.specAttrList && item.specAttrList.length) {
+          item.specAttrList.forEach((child, c_index) => {
+            if (child.check) {
+              checkCout++;
+            }
+          });
+        }
+      });
+      return checkCout;
+    },
+    disCode() {
+      return this.options.distributionCode;
+    },
+  },
+  onLoad(option) {
+    console.log("题库option:", option);
+    if (option.scene) {
+      // scene 生成二维码扫码进来的
+      let optObj = {};
+      let arrs = decodeURIComponent(option.scene).split("&");
+      for (let i = 0; i < arrs.length; i++) {
+        optObj[arrs[i].split("=")[0]] = arrs[i].split("=")[1];
+      }
+      this.id = optObj.id;
+      uni.setStorageSync("newUser_sc", optObj.sc);
+      uni.setStorageSync("shareActivityCode", optObj.sac);
+      if (optObj.sac && this.$method.isLogin()) {
+        this.editShareActivityCode();
+      }
+    } else {
+      // 小程序正常跳转的
+      // this.id => goodsId
+      this.id = option.id;
+      this.options = option;
+      if (option.sac) {
+        uni.setStorageSync("shareActivityCode", option.sac);
+        if (this.$method.isLogin()) {
+          //已登录
+          this.editShareActivityCode();
+        }
+      }
+    }
+    this.disCode ? this.getFxDetail() : this.getDetail();
+    this.goodsBankList();
+    this.getIsBuy(); // 判断是否已经购买过该课程
+    wx.showShareMenu({
+      withShareTicket: true,
+      menus: ["shareAppMessage", "shareTimeline"],
+    });
+  },
+  onShow() {},
+  // 分享到朋友圈
+  onShareTimeline() {
+    return {
+      title: this.goodsData.goodsName,
+      query: "id=" + this.id,
+      imageUrl: this.$method.splitImgHost(this.goodsData.coverUrl),
+    };
+  },
+  onShareAppMessage() {
+    return {
+      title: this.goodsData.goodsName,
+      path: `/pages2/bank/detail?id=` + this.id,
+      imageUrl: this.$method.splitImgHost(this.goodsData.coverUrl),
+    };
+  },
 
-		showTest(id) {
-			return this.goodsExamConfig.find(item => item.examId == id);
-		},
-		clickModule(index,id) {
+  methods: {
+    // 修改用户活动邀请码
+    editShareActivityCode() {
+      console.log("修改用户活动邀请码");
+      this.$http({
+        url: "/app/user/edit/shareActivityCode",
+        method: "post",
+        data: {
+          shareActivityCode: uni.getStorageSync("shareActivityCode"),
+        },
+      }).then((res) => {
+        if (res.data.code == 200) {
+        }
+      });
+    },
+    toFixed(number) {
+      if (number) {
+        return number.toFixed(2);
+      } else {
+        return "0.00";
+      }
+    },
+    getFxDetail() {
+      this.$api
+        .fxGoodsDetail({
+          goodsId: this.id,
+          disCode: this.disCode,
+        })
+        .then((res) => {
+          if (res.data.data) {
+            if (res.data.data.mobileDetailHtml) {
+              res.data.data.mobileDetailHtml =
+                res.data.data.mobileDetailHtml.replace(
+                  /<img/gi,
+                  '<img style="max-width:100%;"'
+                );
+            }
+            this.goodsData = res.data.data;
+            this.goodsExamConfig = JSON.parse(res.data.data.goodsExamConfig);
+          }
+        });
+    },
+    getDetail() {
+      // '/app/common/goods/'+ data 获取商品详细信息
+      this.$api.commonGoodsDetail(this.id).then((res) => {
+        if (res.data.data) {
+          if (res.data.data.mobileDetailHtml) {
+            res.data.data.mobileDetailHtml =
+              res.data.data.mobileDetailHtml.replace(
+                /<img/gi,
+                '<img style="max-width:100%;"'
+              );
+          }
+          this.goodsData = res.data.data;
+          this.goodsExamConfig = JSON.parse(res.data.data.goodsExamConfig);
+        }
+      });
+    },
+    goodsBankList() {
+      this.$api
+        .goodsBankList({
+          goodsId: this.id,
+        })
+        .then((res) => {
+          console.log(res);
+          this.bankList = res.data.data;
+          this.showAllCharpter();
+        });
+    },
+    /**
+     * 展示第一个章下的节内容
+     */
+    showAllCharpter() {
+      for (let i = 0; i < this.bankList.length; i++) {
+        if (this.bankList[i].type == 1) {
+          //第一个是模块直接展开,再展开章下面的节
+          this.$api
+            .goodsChapterList({
+              moduleExamId: this.bankList[i].majorId,
+            })
+            .then((res) => {
+              this.$set(this.bankList[i], "showList", true);
+              this.$set(this.bankList[i], "list", res.data.data);
+              this.changeItem(
+                i,
+                0,
+                this.bankList[i].list[0].chapterExamId,
+                this.bankList[i].type
+              );
+            });
+          break;
+        } else if (this.bankList[i].type == 2) {
+          //第一个章展开下面的节
+          this.changeItem(
+            i,
+            "",
+            this.bankList[i].majorId,
+            this.bankList[i].type
+          );
+          break;
+        }
+      }
+    },
+    goodsChapterList(bank, id) {
+      this.$api
+        .goodsChapterList({
+          moduleExamId: id,
+        })
+        .then((res) => {
+          this.$set(bank, "list", res.data.data);
+        });
+    },
 
-			if (this.bankList[index].list) {
-				this.$set(this.bankList[index], 'showList', !this.bankList[index].showList);
-				return;
-			}
+    goTest(type, item) {
+      if (type == 1) {
+        uni.setStorageSync("testname", item.examName);
+        uni.navigateTo({
+          url:
+            "/pages2/bank/questionBankTest?id=" +
+            item.examId +
+            "&num=" +
+            this.showTest(item.examId).num,
+        });
+      } else if (type == 2) {
+        uni.setStorageSync("testname", item.examName);
+        uni.navigateTo({
+          url:
+            "/pages2/bank/questionBankTest?id=" +
+            item.examId +
+            "&num=" +
+            this.showTest(item.examId).num,
+        });
+      } else if (type == 3) {
+        uni.setStorageSync("testname", item.name);
+        uni.navigateTo({
+          url:
+            "/pages2/bank/questionBankTest?id=" +
+            item.majorId +
+            "&num=" +
+            this.showTest(item.majorId).num,
+        });
+      }
+    },
 
-			this.$api
-				.goodsChapterList({
-					moduleExamId: id
-				})
-				.then(res => {
-					this.$set(this.bankList[index], 'showList', true);
-					this.$set(this.bankList[index], 'list', res.data.data);
-				});
-		},
-		buy() {
-			if (this.$method.isGoLogin()) {
-				return;
-			}
-			// 判断有没有规格选择
-			if (this.goodsData.specTemplateId) {
-				this.isCarOrBuy = 2
-				this.getSpecDetail()
-				return
-			}
-			this.$navTo.togo('/pages2/order/confirm_list?id=' + this.id);
-		},
-		addCart() {
-			// this.getSpecDetail()
-			// return
-			if (this.$method.isGoLogin()) {
-				return;
-			}
-			// 判断有没有规格选择
-			if (this.goodsData.specTemplateId) {
-				this.isCarOrBuy = 1
-				this.getSpecDetail()
-				return
-			}
-			this.addShopCart(this.id)
-		},
-		addShopCart(goodsId) {
-			this.$api.addCart({ goodsId: goodsId }).then(res => {
-				if (res.data.code == 200) {
-					uni.setStorageSync('updateCart', 1); //提醒刷新购物车
-					uni.showToast({
-						title: '添加成功'
-					});
-				} else {
-					this.$u.toast(res.data.msg);
-				}
-			});
-		},
-		getSpecDetail() {
-			this.$http({
-				url: `/app/common/spec/${this.goodsData.specTemplateId}`,
-				method: 'get',
-				noToken: true
-			}).then((res) => {
-				let data = res.data.data
-				if (data) {
-					this.toggleSkuShow = true
-					this.specList = data && (data.specList || [])
-					this.specList.forEach((item, index) => {
-						item.specAttrList.forEach((child, i_index) => {
-							this.$set(this.specList[index].specAttrList[i_index], 'check', false)
-						})
-					})
-				} else {
-					if (this.isCarOrBuy == 1) { // 加入购物车
-						this.addShopCart(this.id)
-					} else {
-						this.$navTo.togo('/pages2/order/confirm_list?id='+this.id);
-					}
-					this.closePop()
-				}
-			})
-		},
-		change(index) {
-			this.current = index;
-		},
-		changeItem(index1,index2,id,type) {
-			if (type == 1) {
-				console.log(1)
-				if (this.bankList[index1].list[index2].list) {
-					this.$set(this.bankList[index1].list[index2], 'showList', !this.bankList[index1].list[index2].showList);
-					return;
-				}
+    showTest(id) {
+      return this.goodsExamConfig.find((item) => item.examId == id);
+    },
+    toConfirmList(id) {
+      let str = "?id=" + id;
+      if (this.disCode) {
+        str += "&distributionCode=" + this.disCode;
+      }
+      if (this.options.linkCode) {
+        str += "&linkCode=" + this.options.linkCode;
+      }
+      uni.navigateTo({
+        url: "/pages2/order/confirm_list" + str,
+      });
+    },
+    clickModule(index, id) {
+      if (this.bankList[index].list) {
+        this.$set(
+          this.bankList[index],
+          "showList",
+          !this.bankList[index].showList
+        );
+        return;
+      }
 
-				this.$api
-					.goodsExamList({
-						chapterExamId: id
-					})
-					.then(res => {
-						this.$set(this.bankList[index1].list[index2], 'showList', true);
-						this.$set(this.bankList[index1].list[index2], 'list', res.data.data);
-					});
-			} else if (type == 2) {
-				console.log(2)
-				if (this.bankList[index1].list) {
-					this.$set(this.bankList[index1], 'showList', !this.bankList[index1].showList);
-					return;
-				}
+      this.$api
+        .goodsChapterList({
+          moduleExamId: id,
+        })
+        .then((res) => {
+          this.$set(this.bankList[index], "showList", true);
+          this.$set(this.bankList[index], "list", res.data.data);
+        });
+    },
+    buy() {
+      if (this.$method.isGoLogin()) {
+        return;
+      }
+      // 判断有没有规格选择
+      if (this.goodsData.specTemplateId) {
+        this.isCarOrBuy = 2;
+        this.getSpecDetail();
+        return;
+      }
+      this.toConfirmList(this.id);
+    },
+    addCart() {
+      // this.getSpecDetail()
+      // return
+      if (this.$method.isGoLogin()) {
+        return;
+      }
+      // 判断有没有规格选择
+      if (this.goodsData.specTemplateId) {
+        this.isCarOrBuy = 1;
+        this.getSpecDetail();
+        return;
+      }
+      this.addShopCart(this.id);
+    },
+    addShopCart(goodsId) {
+      this.$api
+        .addCart({
+          goodsId: goodsId,
+        })
+        .then((res) => {
+          if (res.data.code == 200) {
+            uni.setStorageSync("updateCart", 1); //提醒刷新购物车
+            uni.showToast({
+              title: "添加成功",
+            });
+          } else {
+            this.$u.toast(res.data.msg);
+          }
+        });
+    },
+    getSpecDetail() {
+      let data = {};
+      let url = `/app/common/spec/${this.detail.specTemplateId}`;
+      if (this.disCode) {
+        url = "/app/common/distribution/spec";
+        data = {
+          disCode: this.disCode,
+          specTemplateId: this.detail.specTemplateId,
+        };
+      }
+      this.$http({
+        url,
+        method: "get",
+        noToken: true,
+        data,
+      }).then((res) => {
+        let data = res.data.data;
+        if (data) {
+          this.toggleSkuShow = true;
+          this.specList = data && (data.specList || []);
+          this.specList.forEach((item, index) => {
+            item.specAttrList.forEach((child, i_index) => {
+              this.$set(
+                this.specList[index].specAttrList[i_index],
+                "check",
+                false
+              );
+            });
+          });
+        } else {
+          if (this.isCarOrBuy == 1) {
+            // 加入购物车
+            this.addShopCart(this.id);
+          } else {
+            this.toConfirmList(this.id);
+          }
+          this.closePop();
+        }
+      });
+    },
+    change(index) {
+      this.current = index;
+    },
+    changeItem(index1, index2, id, type) {
+      if (type == 1) {
+        console.log(1);
+        if (this.bankList[index1].list[index2].list) {
+          this.$set(
+            this.bankList[index1].list[index2],
+            "showList",
+            !this.bankList[index1].list[index2].showList
+          );
+          return;
+        }
 
-				this.$api
-					.goodsExamList({
-						chapterExamId: id
-					})
-					.then(res => {
-						this.$set(this.bankList[index1], 'showList', true);
-						this.$set(this.bankList[index1], 'list', res.data.data);
-					});
-			}
-		},
-		toShopcar() {
-			uni.navigateTo({
-			    url: '/pages4/shopping/shoppingCart'
-			})
-		},
-		getIsBuy() {
-			if (this.$method.isGoLogin()) {
-				return;
-			}
-			this.$http({
-				url: '/order/buyGoodsNotExpired',
-				method: 'get',
-				data: { goodsId: this.id }
-			}).then((res) => {
-				if (res.data.code == 200) {
-					if (res.data.data) { // 有data返回是已经购买过的课程
-						this.hadBuyCourse = res.data.data
-						this.bugCourseModel = true
-					}
-				}
-			})
-		},
-		changeKown() {
-			this.bugCourseModel = false
-		},
-		toStudy() {
-			let sysTime = this.$method.timest()
-			const { serviceStartTime, serviceEndTime, goodsId, orderGoodsId} = this.hadBuyCourse
-			if (serviceStartTime && serviceEndTime && (sysTime <= serviceStartTime || sysTime >= serviceEndTime)) {
-				uni.showToast({
-					icon: 'none',
-					title: '不在学习服务期,不能进入学习'
-				})
-				return;
-			}
-			uni.navigateTo({
-				url:'/pages2/bank/question_detail?id='+goodsId+'&orderGoodsId='+orderGoodsId
-			})
-			this.bugCourseModel = false
-		},
-		closePop() {
-            this.toggleSkuShow = false
-			this.skuItem = {}
-        },
-		selectSku(item, index) {
-            this.specList[index].specAttrList.forEach((i_item, i_index) => {
-				if (item.specAttributeId == i_item.specAttributeId) {
-					this.$set(this.specList[index].specAttrList[i_index], 'check', true)
-				} else {
-					this.$set(this.specList[index].specAttrList[i_index], 'check', false)
-				}
-			})
-			// console.log('this.specList', this.specList, this.isCheckSku)
-			if (this.specList.length == this.isCheckSku) {
-				let specAttrIds = []
-				this.specList.forEach((item) => {
-					let result = item.specAttrList.find(e => e.check)
-					if (result) {
-						specAttrIds.push(result.specAttributeId)
-					}
-				})
-				this.getGoodsInfos(specAttrIds)
-			}
+        this.$api
+          .goodsExamList({
+            chapterExamId: id,
+          })
+          .then((res) => {
+            this.$set(this.bankList[index1].list[index2], "showList", true);
+            this.$set(
+              this.bankList[index1].list[index2],
+              "list",
+              res.data.data
+            );
+          });
+      } else if (type == 2) {
+        console.log(2);
+        if (this.bankList[index1].list) {
+          this.$set(
+            this.bankList[index1],
+            "showList",
+            !this.bankList[index1].showList
+          );
+          return;
+        }
+
+        this.$api
+          .goodsExamList({
+            chapterExamId: id,
+          })
+          .then((res) => {
+            this.$set(this.bankList[index1], "showList", true);
+            this.$set(this.bankList[index1], "list", res.data.data);
+          });
+      }
+    },
+    toShopcar() {
+      uni.navigateTo({
+        url: "/pages4/shopping/shoppingCart",
+      });
+    },
+    getIsBuy() {
+      if (this.$method.isGoLogin()) {
+        return;
+      }
+      this.$http({
+        url: "/order/buyGoodsNotExpired",
+        method: "get",
+        data: { goodsId: this.id },
+      }).then((res) => {
+        if (res.data.code == 200) {
+          if (res.data.data) {
+            // 有data返回是已经购买过的课程
+            this.hadBuyCourse = res.data.data;
+            this.bugCourseModel = true;
+          }
+        }
+      });
+    },
+    changeKown() {
+      this.bugCourseModel = false;
+    },
+    toStudy() {
+      let sysTime = this.$method.timest();
+      const { serviceStartTime, serviceEndTime, goodsId, orderGoodsId } =
+        this.hadBuyCourse;
+      if (
+        serviceStartTime &&
+        serviceEndTime &&
+        (sysTime <= serviceStartTime || sysTime >= serviceEndTime)
+      ) {
+        uni.showToast({
+          icon: "none",
+          title: "不在学习服务期,不能进入学习",
+        });
+        return;
+      }
+      uni.navigateTo({
+        url:
+          "/pages2/bank/question_detail?id=" +
+          goodsId +
+          "&orderGoodsId=" +
+          orderGoodsId,
+      });
+      this.bugCourseModel = false;
+    },
+    closePop() {
+      this.toggleSkuShow = false;
+      this.skuItem = {};
+    },
+    selectSku(item, index) {
+      this.specList[index].specAttrList.forEach((i_item, i_index) => {
+        if (item.specAttributeId == i_item.specAttributeId) {
+          this.$set(this.specList[index].specAttrList[i_index], "check", true);
+        } else {
+          this.$set(this.specList[index].specAttrList[i_index], "check", false);
+        }
+      });
+      // console.log('this.specList', this.specList, this.isCheckSku)
+      if (this.specList.length == this.isCheckSku) {
+        let specAttrIds = [];
+        this.specList.forEach((item) => {
+          let result = item.specAttrList.find((e) => e.check);
+          if (result) {
+            specAttrIds.push(result.specAttributeId);
+          }
+        });
+        this.getGoodsInfos(specAttrIds);
+      }
+    },
+    // 获取规格属性值对应的商品信息
+    getGoodsInfos(specAttrIds) {
+      this.$http({
+        url: "/app/common/attr/goods",
+        method: "get",
+        data: {
+          specTemplateId: this.goodsData.specTemplateId,
+          specAttrIds: specAttrIds.join(","),
         },
-		// 获取规格属性值对应的商品信息
-		getGoodsInfos(specAttrIds) {
-			this.$http({
-				url: '/app/common/attr/goods',
-				method: 'get',
-				data: {
-					specTemplateId: this.goodsData.specTemplateId,
-					specAttrIds: specAttrIds.join(',')
-				},
-				noToken: true
-			}).then((res) => {
-				if (res.data.code == 200) {
-					this.skuItem = res.data.data || {}
-				} else {
-					this.skuItem = {}
-					this.$u.toast('商品已下架, 请重新选择')
-				}
-			})
-		},
-        rightNowBuy() {
-            if (this.specList.length != this.isCheckSku) {
-				this.$u.toast('请先选择所有的规格')
-				return
-			}
-			if (this.skuItem.goodsStatus == 0) {
-				this.$u.toast('商品已下架, 请重新选择')
-				return
-			}
-			let sysTime = this.$method.timest()
-			if (sysTime <= this.skuItem.validityStartTime || sysTime >= this.skuItem.validityEndTime) {
-				this.$u.toast('商品不在有效期, 请重新选择')
-				return
-			}
-            if (this.isCarOrBuy == 1) { // 加入购物车
-				this.addShopCart(this.skuItem.goodsId)
-			} else {
-				this.$navTo.togo('/pages2/order/confirm_list?id='+this.skuItem.goodsId);
-			}
-			this.closePop()
+        noToken: true,
+      }).then((res) => {
+        if (res.data.code == 200) {
+          this.skuItem = res.data.data || {};
+        } else {
+          this.skuItem = {};
+          this.$u.toast("商品已下架, 请重新选择");
         }
-	}
+      });
+    },
+    rightNowBuy() {
+      if (this.specList.length != this.isCheckSku) {
+        this.$u.toast("请先选择所有的规格");
+        return;
+      }
+      if (this.skuItem.goodsStatus == 0) {
+        this.$u.toast("商品已下架, 请重新选择");
+        return;
+      }
+      let sysTime = this.$method.timest();
+      if (
+        sysTime <= this.skuItem.validityStartTime ||
+        sysTime >= this.skuItem.validityEndTime
+      ) {
+        this.$u.toast("商品不在有效期, 请重新选择");
+        return;
+      }
+      if (this.isCarOrBuy == 1) {
+        // 加入购物车
+        this.addShopCart(this.skuItem.goodsId);
+      } else {
+        this.toConfirmList(this.skuItem.goodsId);
+      }
+      this.closePop();
+    },
+  },
 };
 </script>
 <style>
 page {
-	background-color: #F2F2F2;
+  background-color: #f2f2f2;
 }
 </style>
 <style lang="scss" scope>
-@import '../../pages3/course/index.scss';
+@import "../../pages3/course/index.scss";
 .contents {
-	width: 100%;
-	height: 100%;
-	background-color: #ffffff;
-	margin-top: 16rpx;
-	overflow: hidden;
-	
-	// tab
-	.tabs {
-		// width: 100%;
-		height: 78rpx;
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-		background-color: #F2F7FF;
-		border-radius: 38rpx;
-		margin: 24rpx;
-		padding: 0rpx 5rpx;
-		.tab_item {
-			width: 345rpx;
-			height: 65rpx;
-			line-height: 65rpx;
-			font-size: 28rpx;
-			font-weight: bold;
-			border-radius: 32rpx;
-			text-align: center;
-			color: #333;
-			&.nactive {
-				color: #fff;
-				background-color: #3577E8;
-			}
-			// &.twoBtn {
-			// 	width: 50%;
-			// }
-		}
-	}
+  width: 100%;
+  height: 100%;
+  background-color: #ffffff;
+  margin-top: 16rpx;
+  overflow: hidden;
+
+  // tab
+  .tabs {
+    // width: 100%;
+    height: 78rpx;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    background-color: #f2f7ff;
+    border-radius: 38rpx;
+    margin: 24rpx;
+    padding: 0rpx 5rpx;
+    .tab_item {
+      width: 345rpx;
+      height: 65rpx;
+      line-height: 65rpx;
+      font-size: 28rpx;
+      font-weight: bold;
+      border-radius: 32rpx;
+      text-align: center;
+      color: #333;
+      &.nactive {
+        color: #fff;
+        background-color: #3577e8;
+      }
+      // &.twoBtn {
+      // 	width: 50%;
+      // }
+    }
+  }
 }
 .cou_title {
-	padding: 24rpx 32rpx 40rpx 32rpx;
-	display: flex;
-	flex-direction: column;
-	justify-content: space-around;
+  padding: 24rpx 32rpx 40rpx 32rpx;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-around;
 }
 .prices {
-	.price_word {
-		font-size: 40rpx;
-		font-weight: 800;
-		color: #FC3F3F;
-	}
-	.sale {
-		color: #999999;
-		font-size: 28rpx;
-		margin-left: 8rpx;
-	}
-	.price_line {
-		color: #999999;
-		font-size: 28rpx;
-		text-decoration:line-through;
-		font-weight: 400;
-	}
-	.free {
-		font-size: 32rpx;
-	}
+  .price_word {
+    font-size: 40rpx;
+    font-weight: 800;
+    color: #fc3f3f;
+  }
+  .sale {
+    color: #999999;
+    font-size: 28rpx;
+    margin-left: 8rpx;
+  }
+  .price_line {
+    color: #999999;
+    font-size: 28rpx;
+    text-decoration: line-through;
+    font-weight: 400;
+  }
+  .free {
+    font-size: 32rpx;
+  }
 }
 .courseName {
-	white-space: nowrap;
-	overflow: hidden;
-	text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
 }
 .icon_up {
-	width: 32rpx;
-	height: 32rpx;
+  width: 32rpx;
+  height: 32rpx;
 }
 .intro {
-	background: #fff;
-	padding: 16rpx 16rpx 124rpx;
+  background: #fff;
+  padding: 16rpx 16rpx 124rpx;
 
-	.content {
-		background: #fff;
-		border-radius: 16rpx;
-		.top {
-			border-radius: 16rpx;
-			padding: 32rpx 28rpx 16rpx;
-			font-size: 30rpx;
-			color: #333333;
-		}
+  .content {
+    background: #fff;
+    border-radius: 16rpx;
+    .top {
+      border-radius: 16rpx;
+      padding: 32rpx 28rpx 16rpx;
+      font-size: 30rpx;
+      color: #333333;
+    }
 
-		.img {
-			width: 100%;
-		}
-	}
+    .img {
+      width: 100%;
+    }
+  }
 }
 
 .moduleItem {
-	height: 80rpx;
-	color: #333333;
-	font-size: 32rpx;
-	line-height: 80rpx;
-	font-weight: bold;
-	display: flex;
-	justify-content: space-between;
+  height: 80rpx;
+  color: #333333;
+  font-size: 32rpx;
+  line-height: 80rpx;
+  font-weight: bold;
+  display: flex;
+  justify-content: space-between;
 }
 .title-list {
-	background: #fff;
-	padding: 16rpx 16rpx 124rpx;
-	.content {
-		.list {
-			background: #fff;
-			margin-bottom: 30rpx;
-			overflow: hidden;
-			border-radius: 16rpx;
-			padding: 10rpx 16rpx;
+  background: #fff;
+  padding: 16rpx 16rpx 124rpx;
+  .content {
+    .list {
+      background: #fff;
+      margin-bottom: 30rpx;
+      overflow: hidden;
+      border-radius: 16rpx;
+      padding: 10rpx 16rpx;
 
-			.module {
-				font-size: 32rpx;
-				color: #333333;
+      .module {
+        font-size: 32rpx;
+        color: #333333;
 
-				.icon {
-					margin-right: 10rpx;
-				}
-			}
+        .icon {
+          margin-right: 10rpx;
+        }
+      }
+
+      .section {
+        font-size: 30rpx;
+        color: #333;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        padding: 20rpx 0;
+        display: flex;
+        align-items: center;
+        border-bottom: 1rpx solid #eee;
+      }
+      .item_name {
+        font-size: 24rpx;
+        font-family: PingFang SC;
+        font-weight: bold;
+        color: #333;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        margin-left: 8rpx;
+      }
+      // .article-list {
+      // 	margin-top:20rpx;
+      // }
+
+      .article {
+        padding: 10rpx 0;
+        min-height: 80rpx;
+        display: flex;
+        align-items: center;
+        margin-left: 35rpx;
+        font-size: 30rpx;
+        color: #666666;
+        border-bottom: 1rpx solid #eeeeee;
+        display: flex;
+
+        .flex_auto {
+          flex: 1;
+          font-size: 30rpx;
+          color: #666666;
+          word-break: break-all;
+        }
+
+        &:nth-last-of-type(1) {
+          border: 0;
+        }
 
-			.section {
-				font-size: 30rpx;
-				color: #333;
-				white-space: nowrap;
-				overflow: hidden;
-				text-overflow: ellipsis;
-				padding: 20rpx 0;
-				display: flex;
-				align-items: center;
-				border-bottom: 1rpx solid #eee;
-			}
-			.item_name {
-				font-size: 24rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #333;
-				white-space: nowrap;
-				overflow: hidden;
-				text-overflow: ellipsis;
-				margin-left: 8rpx;
-			}
-			// .article-list {
-			// 	margin-top:20rpx;				
-			// }
-			
-			.article {
-				padding:10rpx 0;
-				min-height: 80rpx;
-				display: flex;
-				align-items: center;
-				margin-left: 35rpx;
-				font-size: 30rpx;
-				color: #666666;
-				border-bottom: 1rpx solid #eeeeee;
-				display: flex;
-			
-				.flex_auto {
-					flex: 1;
-					font-size: 30rpx;
-    				color: #666666;
-					word-break: break-all;
-				}
-			
-				&:nth-last-of-type(1) {
-					border: 0;
-				}
-			
-				&.active {
-					color: #007aff;
-			
-					.btn {
-						width: 103rpx;
-						height: 48rpx;
-						line-height: 48rpx;
-						text-align: center;
-						color: #3577E8;
-						font-size: 24rpx;
-						border-radius: 24rpx;
-						background: #fff;
-						margin-left: 36rpx;
-						border: 1rpx solid #3577E8;
-					}
-				}
-			}
+        &.active {
+          color: #007aff;
 
-			
-		}
-	}
+          .btn {
+            width: 103rpx;
+            height: 48rpx;
+            line-height: 48rpx;
+            text-align: center;
+            color: #3577e8;
+            font-size: 24rpx;
+            border-radius: 24rpx;
+            background: #fff;
+            margin-left: 36rpx;
+            border: 1rpx solid #3577e8;
+          }
+        }
+      }
+    }
+  }
 }
 .btn2 {
-	width: 187rpx;
-	height: 79rpx;
-	line-height: 79rpx;
-	background: #FC3F3F;
-	border-radius: 40rpx;
-	text-align: center;
-	font-size: 24rpx;
+  width: 187rpx;
+  height: 79rpx;
+  line-height: 79rpx;
+  background: #fc3f3f;
+  border-radius: 40rpx;
+  text-align: center;
+  font-size: 24rpx;
 }
 .btn1 {
-	width: 187rpx;
-	height: 79rpx;
-	line-height: 79rpx;
-	background: #FFB102;
-	border-radius: 40rpx;
-	text-align: center;
-	margin-right: 11rpx;
-	font-size: 24rpx;
+  width: 187rpx;
+  height: 79rpx;
+  line-height: 79rpx;
+  background: #ffb102;
+  border-radius: 40rpx;
+  text-align: center;
+  margin-right: 11rpx;
+  font-size: 24rpx;
 }
 .blackFont {
-	color: #333333;
-	margin: 0 4rpx;
+  color: #333333;
+  margin: 0 4rpx;
 }
 .wk_icon {
-	width: 24rpx;
-	height: 24rpx;
-	margin-right: 12rpx;
+  width: 24rpx;
+  height: 24rpx;
+  margin-right: 12rpx;
 }
 .noteTag {
-	font-size: 24rpx;
-	font-family: PingFang SC;
-	font-weight: 500;
-	color: #999999;
-	align-items: center;
+  font-size: 24rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #999999;
+  align-items: center;
 }
 .priceTag {
-	font-size: 30rpx;
-	font-family: PingFang SC;
-	font-weight: bold;
-	color: #ff2d55;
+  font-size: 30rpx;
+  font-family: PingFang SC;
+  font-weight: bold;
+  color: #ff2d55;
 }
 .titleTag {
-	font-size: 36rpx;
-	font-weight: bold;
-	color: #333333;
-	// margin-left: 8rpx;
+  font-size: 36rpx;
+  font-weight: bold;
+  color: #333333;
+  // margin-left: 8rpx;
 }
 .yearTag {
-	width: 80rpx;
-	height: 32rpx;
-	background: #ebf5ff;
-	border: 2rpx solid #007aff;
-	border-radius: 16rpx;
-	font-size: 24rpx;
-	color: #007aff;
-	text-align: center;
-	line-height: 32rpx;
+  width: 80rpx;
+  height: 32rpx;
+  background: #ebf5ff;
+  border: 2rpx solid #007aff;
+  border-radius: 16rpx;
+  font-size: 24rpx;
+  color: #007aff;
+  text-align: center;
+  line-height: 32rpx;
 }
 .itemBox {
-	background: #ffffff;
-	box-shadow: 0rpx 10rpx 9rpx 1rpx rgba(165, 196, 239, 0.1);
-	border-radius: 24rpx;
-	width: 100%;
-	padding: 20rpx;
-	margin-bottom: 20rpx;
+  background: #ffffff;
+  box-shadow: 0rpx 10rpx 9rpx 1rpx rgba(165, 196, 239, 0.1);
+  border-radius: 24rpx;
+  width: 100%;
+  padding: 20rpx;
+  margin-bottom: 20rpx;
 }
 </style>

+ 25 - 33
pages2/bank/questionBank.vue

@@ -1070,7 +1070,8 @@ export default {
           }
           this.examData = res.data.data;
           this.allTimes = this.examData.answerTime * 60;
-          this.lastTime = this.examData.answerTime && this.examData.answerTime * 60;
+          this.lastTime =
+            this.examData.answerTime && this.examData.answerTime * 60;
           if (this.bankType == 2) {
             this.needBack = true;
           }
@@ -1622,8 +1623,6 @@ export default {
      * @param {Object} 多选确认
      */
     checkboxSubmit(bindex) {
-      // console.log('')
-      // if (this.questionList[bindex].ques) return;
       if (this.questionList[bindex].ques && this.bankType == 1) {
         return;
       }
@@ -1646,36 +1645,16 @@ export default {
       this.$set(this.questionList[bindex], "ques", arr);
       this.$u.toast("已确认答案");
       this.isDoOver();
-
-      // let isWrong = this.questionList[bindex].ques.some((item, i) => {
-      //   return this.questionList[bindex].ans.indexOf(item) == -1;
-      // })
-      // // 回答错误
-      // if (isWrong) {
-      //   this.$api
-      //     .examWrongRecord({
-      //       orderGoodsId: this.orderGoodsId,
-      //       examId: this.id,
-      //       goodsId: this.goodsId,
-      //       moduleExamId: this.moduleId || 0,
-      //       chapterExamId: this.chapterId || 0,
-      //       questionIds: [this.questionList[bindex].questionId],
-      //       recordId: this.recordId,
-      //     })
-      //     .then((res) => {});
-      // } else {
-      //   // let question = this.wrongList.find(item => item.questionId == this.questionList[bindex].questionId);
-      //   // if(question) {
-      //   // 	this.$api.wrongRecordDelete({
-      //   // 		"examId": +this.id,
-      //   // 		"goodsId": +this.goodsId,
-      //   // 		"questionId": this.questionList[bindex].questionId,
-      //   // 	}).then(res => {
-      //   // 	})
-      //   // }
-      // }
+      // 切换下一题
+      if (
+        this.bankType != 1 &&
+        this.cgType != 9 &&
+        bindex != this.questionList.length - 1
+      ) {
+        this.current = bindex + 1;
+        this.getCollectInfo(this.current);
+      }
     },
-
     /**
      * @param {Object} 案例多选确认
      */
@@ -1705,6 +1684,14 @@ export default {
       this.$set(this.questionList[bindex].ques, ansIndex, arr);
       this.$u.toast("已确认答案");
       this.isDoOver();
+      // 切换下一题
+      if (
+        this.bankType != 1 &&
+        this.cgType != 9 &&
+        ansIndex != this.questionList[bindex].ques.length - 1
+      ) {
+        this.questionList[bindex].current += 1;
+      }
     },
 
     /**
@@ -2205,7 +2192,12 @@ export default {
       this.isDoOver();
     },
     isCheck(item, index) {
-      if (this.questionList[index].ques) {
+      // 案例题处理
+      let { ques, type, ans } = item;
+      if (type == 4) {
+        return ans.length == ques.length;
+      }
+      if (ques) {
         return true;
       }
     },

+ 18 - 1
pages2/bank/questionBankContinue.vue

@@ -1217,6 +1217,15 @@ export default {
 
       this.$set(this.questionList[bindex], "ques", arr);
       this.isDoOver();
+      // 切换下一题
+      if (
+        this.bankType != 1 &&
+        this.cgType != 9 &&
+        bindex != this.questionList.length - 1
+      ) {
+        this.current = bindex + 1;
+        this.getCollectInfo(this.current);
+      }
     },
 
     /**
@@ -1243,6 +1252,14 @@ export default {
 
       this.$set(this.questionList[bindex].ques, ansIndex, arr);
       this.isDoOver();
+      // 切换下一题
+      if (
+        this.bankType != 1 &&
+        this.cgType != 9 &&
+        ansIndex != this.questionList[bindex].ques.length - 1
+      ) {
+        this.questionList[bindex].current += 1;
+      }
     },
 
     judgeSelect(index, bindex) {
@@ -1272,7 +1289,7 @@ export default {
     leaveNow() {
       this.needBack = false;
       this.isSubmit = true;
-      this.submit(false)
+      this.submit(false);
       uni.navigateBack({
         delta: 1,
       });

+ 3 - 3
pages2/bank/question_detail.vue

@@ -77,7 +77,7 @@
 								</view>
 								<view v-if="item2.showList">
 									<view class="article active" style="margin-left:62rpx;" v-for="(article, index3) in item2.list" :key="index3">
-										<view class="flex_auto">{{ article.examName }}</view>
+										<view class="flex_auto u-line-2">{{ article.examName }}</view>
 										<view class="btn" @click="toDo(article.examId, goodsData.goodsId, item1.majorId, item2.chapterExamId)" v-if="article.recordStatus == -1">做题</view>
 										<view class="btn" @click="continueDo(article.recordId,article.examId, goodsData.goodsId, item2.chapterExamId, item1.majorId)" v-if="article.recordStatus == 0 && article.doType == 1">继续</view>
 										<view class="btn" :class="{disabled:(article.answerNum > 0 && article.doNum >= article.answerNum)}" @click="doRepeat(article.recordId,article.examId, goodsData.goodsId, item2.chapterExamId, item1.majorId)" v-if="article.recordStatus == 1 || (article.recordStatus == 0 && article.doType == 2)">重做</view>
@@ -98,7 +98,7 @@
 						</view>
 						<view v-if="item1.showList">
 							<view class="article active" style="margin-left:64rpx;" v-for="(article, index2) in item1.list" :key="index2">
-								<view class="flex_auto">{{ article.examName }}</view>
+								<view class="flex_auto u-line-2">{{ article.examName }}</view>
 								<view class="btn" @click="toDo(article.examId, goodsData.goodsId, 0, item1.majorId)" v-if="article.recordStatus == -1">做题</view>
 								<view class="btn" @click="continueDo(article.recordId,article.examId, goodsData.goodsId, 0, item1.majorId)" v-if="article.recordStatus == 0 && article.doType == 1">继续</view>
 								<view class="btn" :class="{disabled:(article.answerNum > 0 && article.doNum >= article.answerNum)}" @click="doRepeat(article.recordId,article.examId, goodsData.goodsId, item1.majorId,0)" v-if="article.recordStatus == 1 || (article.recordStatus == 0 && article.doType == 2)">重做</view>
@@ -108,7 +108,7 @@
 
 					<template v-if="item1.type == 3">
 						<view class="article active">
-							<view class="flex_auto">{{ item1.name }}</view>
+							<view class="flex_auto u-line-2">{{ item1.name }}</view>
 							<view class="btn" @click="toDo(item1.majorId, goodsData.goodsId, 0, 0)" v-if="item1.recordStatus == -1">做题</view>
 							<view class="btn" @click="continueDo(item1.recordId,item1.majorId, goodsData.goodsId, 0, 0)" v-if="item1.recordStatus == 0 && item1.doType == 1">继续</view>
 							<view class="btn" :class="{disabled:(item1.answerNum > 0 && item1.doNum >= item1.answerNum)}" @click="doRepeat(item1.recordId,item1.majorId, goodsData.goodsId, 0, 0)" v-if="item1.recordStatus == 1 || (item1.recordStatus == 0 && item1.doType == 2)">重做</view>

+ 23 - 12
pages2/class/questionBank.vue

@@ -2056,17 +2056,15 @@ export default {
       this.$u.toast("已确认答案");
       this.isDoOver();
 
-      // let isWrong = this.questionList[bindex].ques.some(
-      //   (quesItem, quesIndex) => {
-      //     return (
-      //       this.questionList[bindex].ques[quesIndex] !=
-      //       this.questionList[bindex].ans[quesIndex]
-      //     );
-      //   }
-      // );
-      // let isWrong = this.questionList[bindex].ques.some((item, i) => {
-      //   return this.questionList[bindex].ans.indexOf(item) == -1;
-      // })
+      // 切换下一题
+      if (
+        this.bankType != 1 &&
+        this.cgType != 9 &&
+        bindex != this.questionList.length - 1
+      ) {
+        this.current = bindex + 1;
+        this.getCollectInfo(this.current);
+      }
     },
 
     /**
@@ -2098,6 +2096,14 @@ export default {
       this.$set(this.questionList[bindex].ques, ansIndex, arr);
       this.$u.toast("已确认答案");
       this.isDoOver();
+      // 切换下一题
+      if (
+        this.bankType != 1 &&
+        this.cgType != 9 &&
+        ansIndex != this.questionList[bindex].ques.length - 1
+      ) {
+        this.questionList[bindex].current += 1;
+      }
     },
 
     /**
@@ -2495,7 +2501,12 @@ export default {
       this.isDoOver();
     },
     isCheck(item, index) {
-      if (this.questionList[index].ques) {
+      // 案例题处理
+      let { ques, type, ans } = item;
+      if (type == 4) {
+        return ans.length == ques.length;
+      }
+      if (ques) {
         return true;
       }
     },

+ 1771 - 1409
pages2/invoice/index.vue

@@ -1,1425 +1,1787 @@
 <template>
-	<view class="invoice">
-		<nav-bar title="发票申请"></nav-bar>
-		<view class="invoice__tabs">
-			<u-tabs :list="list" sticky :current="current" @change="change" active-color="#007AFF"></u-tabs>
-		</view>
-		<view class="invoice__content">
-			<view class="open" v-if="current == 0">
-				<view class="form">
-					<u-form :model="form" ref="uForm">
-						<u-form-item label="发票类型" label-width="150" required prop="type" >
-							<u-radio-group v-model="form.type" @change="formTypeChange">
-								<u-radio v-for="(item, index) in typeList" :key="index" :name="item.value">
-									{{ item.name }}
-								</u-radio>
-							</u-radio-group>
-						</u-form-item>
-						
-						<!-- 增值税发票 -->
-						<template v-if="form.type == 2">
-							
-							<u-form-item label="申请主体" label-width="150" required  prop="subject">
-								<u-radio-group v-model="form.subject">
-									<u-radio :key="index" name="2">
-										企业
-									</u-radio>
-								</u-radio-group>
-							</u-form-item>
-							
-							<u-form-item label="发票抬头" label-width="150" required prop="invoiceTitle" >
-								<u-input placeholder="请输入发票抬头" v-model="form.invoiceTitle" />
-							</u-form-item>
-							<u-form-item label="纳税登记号" label-width="150" required prop="taxRegistryNumber" >
-								<u-input placeholder="请输入纳税登记号" v-model="form.taxRegistryNumber" />
-							</u-form-item>
-							<u-form-item label="单位地址" label-width="150" required prop="companyAddress" >
-								<u-input placeholder="请输入单位地址" v-model="form.companyAddress" />
-							</u-form-item>
-							<u-form-item label="电话号码" label-width="150" required prop="phone" >
-								<u-input placeholder="请输入电话号码" type="number" v-model="form.phone" />
-							</u-form-item>
-							<u-form-item label="开户银行" label-width="150" required prop="bankName" >
-								<u-input placeholder="请输入开户银行" v-model="form.bankName" />
-							</u-form-item>
-							<u-form-item label="银行账号" label-width="150" required prop="bankAccount" >
-								<u-input placeholder="请输入银行账号" type="number" v-model="form.bankAccount" />
-							</u-form-item>
-							<u-form-item label="收件地址" label-width="150" required prop="receivingAddress" >
-								<u-input placeholder="请输入收件地址" v-model="form.receivingAddress" />
-							</u-form-item>
-							<u-form-item label="收件人" label-width="150" required prop="receivingName" >
-								<u-input placeholder="请输入收件人" v-model="form.receivingName" />
-							</u-form-item>
-							<u-form-item label="收件手机" label-width="150" required prop="receivingTel" >
-								<u-input placeholder="请输入收件手机" v-model="form.receivingTel" />
-							</u-form-item>
-							
-						</template>
-						<!-- 增值税发票 -->
-						
-						<!-- 普通发票 -->
-						<template v-else>
-							<u-form-item label="申请主体" label-width="150" required prop="subject">
-								<u-radio-group v-model="form.subject">
-									<u-radio v-for="(item, index) in mainList" :key="index" :name="item.value">
-										{{ item.name }}
-									</u-radio>
-								</u-radio-group>
-							</u-form-item>
-							
-							<u-form-item label="发票抬头" label-width="150" required prop="invoiceTitle" >
-								<u-input placeholder="请输入发票抬头" v-model="form.invoiceTitle" />
-							</u-form-item>
-							<u-form-item v-if="form.subject == '2'" label="纳税登记号" label-width="150" required prop="taxRegistryNumber" >
-								<u-input placeholder="请输入纳税登记号" v-model="form.taxRegistryNumber" />
-							</u-form-item>
-						</template>
-						<!-- 普通发票 -->
-						
-						
-						<u-form-item label="选择订单" label-width="150" required prop="orderGoodsIds" right-icon="arrow-right" ref="orderGoodsIds">
-							<view class="form-item" @click="selectOrderModal = true">
-								<u-input placeholder="请点击选择订单" disabled  @click="selectOrderModal = true" />
-							</view>
-						</u-form-item>
-						<view>
-							<view class="check-order" v-for="(item,index) in filterOrderList" :key="index" >
-									<view class="close" @click="deleteOrder(index)">
-										<u-icon name="close-circle-fill" color="#FF2D55" size="40"></u-icon>
-									</view>
-									<view class="title">商品名称:{{item.goodsName}}</view>
-									<view class="number">订单编号:{{item.orderSn}}</view>
-									<view class="price">价格:¥ {{item.goodsPrice}}</view>
-							</view>
-						</view>
-						
-					</u-form>
-				</view>
-				
-				<view class="order-text">
-					<view class="order-text__label">本次申请开票金额:</view>
-					<view class="order-text__price">¥ {{toFixed(invoicePirce)}}</view>
-				</view>
-				
-				<view class="submit" @click="formSubmit">
-					提交申请
-				</view>
-			</view>
-			<view class="record" v-if="current == 1">
-				<view class="nodata" v-if="!recordList.length">
-					您暂无相关发票记录哦~
-				</view>
-				
-				<view class="record__list">
-					<view class="record-item"  @click="showDetailModal(record);" v-for="(record,index) in recordList" :key="index">
-						<view class="item__time">{{$method.timestampToTime(record.applyTime,false,false)}}</view>
-						<view class="item__content">
-							<view class="top">
-								<view class="state" :class="{wait:record.periodStatus == 1,refuse:record.periodStatus == 2,agree:record.periodStatus == 3}">
-									<text v-if="record.periodStatus == 1">待审核</text>
-									<text v-if="record.periodStatus == 2">驳回</text>
-									<text v-if="record.periodStatus == 3">通过</text>
-									<u-icon class="arrow" name="arrow-right" color="#ffffff" size="28"></u-icon>
-								</view>
-							</view>
-							
-							<view class="bottom">
-								<view class="flex">
-									<view class="text">发票类型</view>
-									<view class="flex__auto">
-										<text v-if="record.type == 1">普通发票</text>
-										<text v-if="record.type == 2">增值税专用发票</text>
-									</view>
-								</view>
-								<view class="flex">
-									<view class="text">申请主体</view>
-									<view class="flex__auto">
-										<text v-if="record.subject == 1">个人</text>
-										<text v-if="record.subject == 2">企业</text>
-									</view>
-								</view>
-								<view class="flex">
-									<view class="text">发票状态</view>
-									<view class="flex__auto">
-										<text class="red" v-if="record.invoiceStatus == 1">未开票</text>
-										<text class="green" v-if="record.invoiceStatus == 2">已开票</text>
-										<text class="red" v-if="record.invoiceStatus == -1">已退票</text>
-									</view>
-								</view>
-								<view @click.stop="showOrder(record.checked,index)">
-									<view class="flex noborder" >
-										<view class="text">开票订单</view>
-										<view class="flex__auto">
-											<text style="margin-right:10rpx;">{{record.orderList.length}}</text>
-											<u-icon v-if="!record.checked" name="arrow-down" color="#ccc" size="28"></u-icon>
-											<u-icon v-if="record.checked" name="arrow-up" color="#ccc" size="28"></u-icon>
-										</view>
-									</view>
-									<view class="order-list" v-if="record.checked">
-										<view class="order-item" :key="orderIndex" v-for="(orderItem,orderIndex) in record.orderList">{{orderIndex+1}}.{{orderItem.goodsName}}</view>
-									</view>
-								</view>
-							</view>
-						</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		
-		<u-popup class="modal" v-model="selectOrderModal" mode="bottom" border-radius="24">
-			<view class="select-order">
-				<view class="line"></view>
-				<view class="title">选择订单</view>
-				<u-line color="#D6D6DB" />
-				<view>
-					<scroll-view scroll-y="true" style="height: 500rpx;">
-						<view v-if="orderList.length">
-							<u-checkbox-group>
-								<view v-for="(item, index) in orderList" :key="index" >
-									<view class="order-item">
-										<view>
-											<u-checkbox 
-												:disabled="item.disabled"
-												shape="circle"
-												:name="item.name"
-												v-model="item.checked"
-											>	
-												<view class="order-item__bg" :class="item.checked?'active':''" >
-													<view>
-														<view class="order-title">{{item.goodsName}}</view>
-														<view class="order-number">{{item.orderSn}}</view>
-														<view class="order-price">¥ {{item.goodsPrice}}元</view>
-													</view>
-												</view>
-											</u-checkbox >
-										</view>
-										
-									</view>
-								</view>
-							</u-checkbox-group>
-						</view>
-						<view v-else class="no_data">
-							<text>暂无可开发票的订单</text>
-						</view>
-					</scroll-view>
-				</view>
-				<view class="confrim-btn">
-					<view class="okBtn" @click="okPopup()">确定</view>
-				</view>
-			</view>
-		</u-popup>
-		
-		<u-popup class="modal" v-model="orderDetailModal" mode="center" border-radius="40">
-			<view class="order-detail">
-				<view class="order-detail__content">
-					<scroll-view scroll-y="true" style="height: 860rpx;">
-						<view class="content">
-							<view class="header">{{$method.timestampToTime(invoiceDetail.applyTime,false,false)}}</view>
-							<view class="body">
-								<view class="body__item">
-									<view class="title">发票申请信息</view>
-									<view class="content">
-										<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-											<view slot="title">发票类型:</view>
-											<text v-if="invoiceDetail.type == 1">普通发票</text>
-											<text v-if="invoiceDetail.type == 2">增值税专用发票</text>
-										</u-cell-item>
-										<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-											<view slot="title">申请主体:</view>
-											<text v-if="invoiceDetail.subject == 1">个人</text>
-											<text v-if="invoiceDetail.subject == 2">企业</text>
-										</u-cell-item>
-										<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-											<view slot="title">发票抬头:</view>
-											<text>{{invoiceDetail.invoiceTitle}}</text>
-										</u-cell-item>
-										<template v-if="invoiceDetail.subject == 2">
-											<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-												<view slot="title">纳税登记号:</view>
-												<text>{{invoiceDetail.taxRegistryNumber || ''}}</text>
-											</u-cell-item>
-										</template>
-										<template v-if="invoiceDetail.type == 2">
-											<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-												<view slot="title">单位地址:</view>
-												<text>{{invoiceDetail.companyAddress || ''}}</text>
-											</u-cell-item>
-											<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-												<view slot="title">电话号码:</view>
-												<text>{{invoiceDetail.phone || ''}}</text>
-											</u-cell-item>
-											<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-												<view slot="title">开户银行:</view>
-												<text>{{invoiceDetail.bankName || ''}}</text>
-											</u-cell-item>
-											<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-												<view slot="title">银行账号:</view>
-												<text>{{invoiceDetail.bankAccount || ''}}</text>
-											</u-cell-item>
-											<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-												<view slot="title">收件地址:</view>
-												<text>{{invoiceDetail.receivingAddress || ''}}</text>
-											</u-cell-item>
-											<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-												<view slot="title">收件人:</view>
-												<text>{{invoiceDetail.receivingName || ''}}</text>
-											</u-cell-item>
-											<u-cell-item :border-bottom="false" hover-class="none" :arrow="false" >
-												<view slot="title">收件手机:</view>
-												<text>{{invoiceDetail.receivingTel || ''}}</text>
-											</u-cell-item>
-											<u-cell-item :border-bottom="false" hover-class="none" :arrow="false" >
-												<view slot="title">开票订单:</view>
-											</u-cell-item>
-										</template>
-										
-										<view class="order-list">
-											<view class="order-item" :key="orderIndex" v-for="(orderItem,orderIndex) in invoiceDetail.orderList">
-												<view class="order-title">{{orderItem.goodsName}}</view>
-												<view class="order-number">{{orderItem.orderSn}}</view>
-												<view class="order-price">¥ {{orderItem.goodsRealPrice}}元</view>
-											</view>
-										</view>
-										<view class="order-text">
-											<view class="order-text__label">本次申请开票金额:</view>
-											<view class="order-text__price">¥ {{toFixed(invoiceDetail.amount)}}</view>
-										</view>
-									</view>
-								</view>
-								<view class="body__item">
-									<view class="title">发票申请结果</view>
-									<view class="content">
-										<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-											<view slot="title">审核结果:</view>
-											<text class="text wait" v-if="invoiceDetail.periodStatus == 1">待审核</text>
-											<text class="text agree" v-if="invoiceDetail.periodStatus == 3">通过</text>
-											<text class="text refuse" v-if="invoiceDetail.periodStatus == 2">驳回</text>
-										</u-cell-item>
-										<u-cell-item :border-bottom="false" hover-class="none" :arrow="false" v-if="invoiceDetail.periodReason">
-											<view slot="title">审核反馈:</view>
-											<text class="text">{{invoiceDetail.periodReason||''}}</text>
-										</u-cell-item>
-										<u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
-											<view slot="title">发票状态:</view>
-											<text class="text refuse" v-if="invoiceDetail.invoiceStatus == 1">未开票</text>
-											<text class="text agree" v-if="invoiceDetail.invoiceStatus == 2">已开票</text>
-											<text class="text refuse" v-if="invoiceDetail.invoiceStatus == -1">已退票</text>
-										</u-cell-item>
-										
-										<u-cell-item :border-bottom="false" hover-class="none" :arrow="false" v-if="invoiceDetail.periodStatus == 3 &&  (invoiceDetail.invoiceStatus == 2 || invoiceDetail.invoiceStatus == -1)  && invoiceDetail.invoiceImg">
-											<view slot="title">发票预览:</view>
-											<view>
-												<image class="preview" @click="previewImg(invoiceDetail)" :src="$method.splitImgHost(invoiceDetail.invoiceImg)"></image>
-												<view class="download-btn" @click="download(invoiceDetail)">下载电子发票</view>
-											</view>
-										</u-cell-item>
-										
-										
-										<u-cell-item :border-bottom="false" hover-class="none" :arrow="false" v-if="invoiceDetail.periodStatus == 3 && (invoiceDetail.invoiceStatus == 2 || invoiceDetail.invoiceStatus == -1) && invoiceDetail.type == 2 && invoiceDetail.subject == 2">
-											<view slot="title">机构发票邮寄状态:</view>
-											<text class="text" v-if="invoiceDetail.sendInvoice == 1">是</text>
-											<text class="text" v-else>否</text>
-										</u-cell-item>
-										
-										<u-cell-item v-if="invoiceDetail.periodStatus == 3 && (invoiceDetail.invoiceStatus == 2 || invoiceDetail.invoiceStatus == -1)  && invoiceDetail.sendInvoice == 1 && invoiceDetail.type == 2 && invoiceDetail.subject == 2"  @click.stop="copy(invoiceDetail.trackingNum)" :border-bottom="false" hover-class="none" :arrow="false">
-												<view slot="title">发票邮寄快递单号:(点击可复制)</view>
-												<text class="text">{{invoiceDetail.trackingNum || ''}}</text>
-										</u-cell-item>
-									</view>
-								</view>
-							</view>
-						</view>
-						
-					</scroll-view>
-				</view>
-				<view class="order-detail__btns" v-if="invoiceDetail.periodStatus == 1">
-					<view class="btn" @click="orderDetailModal = false;">知道了</view>
-					<view class="btn warm" @click="orderCancelModal = true;">撤销申请</view>
-				</view>
-				
-				<view class="order-detail__btns" v-else>
-					<view class="btn ok" @click="orderDetailModal = false;">知道了</view>
-				</view>
-			</view>
-		</u-popup>
-		
-		<u-popup class="modal" v-model="orderCancelModal" mode="center" border-radius="24">
-			<view class="order-cancel">
-				<view class="header">
-					温馨提示
-				</view>
-				<view class="body">
-					<view>撤销申请后,</view>
-					<view>本次的发票申请内容将不存在。</view>
-					<view>请慎重考虑。 </view>
-					<view>您确定要取消本次发票申请吗?</view>
-				</view>
-				<view class="footer">
-					<view class="btn cancel" @click="orderCancelModal = false;">取消</view>
-					<view class="btn ok" @click="orderCancel()">确定</view>
-				</view>
-			</view>
-		</u-popup>
-	</view>
+  <view class="invoice">
+    <nav-bar title="发票申请"></nav-bar>
+    <view class="invoice__tabs">
+      <u-tabs
+        :list="list"
+        sticky
+        :current="current"
+        @change="change"
+        active-color="#007AFF"
+      ></u-tabs>
+    </view>
+    <view class="invoice__content">
+      <view class="open" v-if="current == 0">
+        <view class="form">
+          <u-form :model="form" ref="uForm">
+            <u-form-item
+              label="发票类型"
+              label-width="150"
+              required
+              prop="type"
+            >
+              <u-radio-group v-model="form.type" @change="formTypeChange">
+                <u-radio
+                  v-for="(item, index) in typeList"
+                  :key="index"
+                  :name="item.value"
+                >
+                  {{ item.name }}
+                </u-radio>
+              </u-radio-group>
+            </u-form-item>
+
+            <!-- 增值税发票 -->
+            <template v-if="form.type == 2">
+              <u-form-item
+                label="申请主体"
+                label-width="150"
+                required
+                prop="subject"
+              >
+                <u-radio-group v-model="form.subject">
+                  <u-radio :key="index" name="2"> 企业 </u-radio>
+                </u-radio-group>
+              </u-form-item>
+
+              <u-form-item
+                label="发票抬头"
+                label-width="150"
+                required
+                prop="invoiceTitle"
+              >
+                <u-input
+                  placeholder="请输入发票抬头"
+                  v-model="form.invoiceTitle"
+                />
+              </u-form-item>
+              <u-form-item label="邮箱" label-width="150" required prop="email">
+                <u-input placeholder="请输入邮箱" v-model="form.email" />
+              </u-form-item>
+              <u-form-item
+                label="纳税登记号"
+                label-width="150"
+                required
+                prop="taxRegistryNumber"
+              >
+                <u-input
+                  placeholder="请输入纳税登记号"
+                  v-model="form.taxRegistryNumber"
+                />
+              </u-form-item>
+              <u-form-item
+                label="单位地址"
+                label-width="150"
+                required
+                prop="companyAddress"
+              >
+                <u-input
+                  placeholder="请输入单位地址"
+                  v-model="form.companyAddress"
+                />
+              </u-form-item>
+              <u-form-item
+                label="电话号码"
+                label-width="150"
+                required
+                prop="phone"
+              >
+                <u-input
+                  placeholder="请输入电话号码"
+                  type="number"
+                  v-model="form.phone"
+                />
+              </u-form-item>
+              <u-form-item
+                label="开户银行"
+                label-width="150"
+                required
+                prop="bankName"
+              >
+                <u-input placeholder="请输入开户银行" v-model="form.bankName" />
+              </u-form-item>
+              <u-form-item
+                label="银行账号"
+                label-width="150"
+                required
+                prop="bankAccount"
+              >
+                <u-input
+                  placeholder="请输入银行账号"
+                  type="number"
+                  v-model="form.bankAccount"
+                />
+              </u-form-item>
+              <u-form-item
+                label="收件地址"
+                label-width="150"
+                required
+                prop="receivingAddress"
+              >
+                <u-input
+                  placeholder="请输入收件地址"
+                  v-model="form.receivingAddress"
+                />
+              </u-form-item>
+              <u-form-item
+                label="收件人"
+                label-width="150"
+                required
+                prop="receivingName"
+              >
+                <u-input
+                  placeholder="请输入收件人"
+                  v-model="form.receivingName"
+                />
+              </u-form-item>
+              <u-form-item
+                label="收件手机"
+                label-width="150"
+                required
+                prop="receivingTel"
+              >
+                <u-input
+                  placeholder="请输入收件手机"
+                  v-model="form.receivingTel"
+                />
+              </u-form-item>
+            </template>
+            <!-- 增值税发票 -->
+
+            <!-- 普通发票 -->
+            <template v-else>
+              <u-form-item
+                label="申请主体"
+                label-width="150"
+                required
+                prop="subject"
+              >
+                <u-radio-group v-model="form.subject">
+                  <u-radio
+                    v-for="(item, index) in mainList"
+                    :key="index"
+                    :name="item.value"
+                  >
+                    {{ item.name }}
+                  </u-radio>
+                </u-radio-group>
+              </u-form-item>
+
+              <u-form-item
+                label="发票抬头"
+                label-width="150"
+                required
+                prop="invoiceTitle"
+              >
+                <u-input
+                  placeholder="请输入发票抬头"
+                  v-model="form.invoiceTitle"
+                />
+              </u-form-item>
+              <u-form-item label="邮箱" label-width="150" required prop="email">
+                <u-input placeholder="请输入邮箱" v-model="form.email" />
+              </u-form-item>
+              <u-form-item
+                v-if="form.subject == '2'"
+                label="纳税登记号"
+                label-width="150"
+                required
+                prop="taxRegistryNumber"
+              >
+                <u-input
+                  placeholder="请输入纳税登记号"
+                  v-model="form.taxRegistryNumber"
+                />
+              </u-form-item>
+            </template>
+            <!-- 普通发票 -->
+
+            <u-form-item
+              label="选择订单"
+              label-width="150"
+              required
+              prop="orderGoodsIds"
+              right-icon="arrow-right"
+              ref="orderGoodsIds"
+            >
+              <view class="form-item" @click="selectOrderModal = true">
+                <u-input
+                  placeholder="请点击选择订单"
+                  disabled
+                  @click="selectOrderModal = true"
+                />
+              </view>
+            </u-form-item>
+            <view>
+              <view
+                class="check-order"
+                v-for="(item, index) in filterOrderList"
+                :key="index"
+              >
+                <view class="close" @click="deleteOrder(index)">
+                  <u-icon
+                    name="close-circle-fill"
+                    color="#FF2D55"
+                    size="40"
+                  ></u-icon>
+                </view>
+                <view class="title">商品名称:{{ item.goodsName }}</view>
+                <view class="number">订单编号:{{ item.orderSn }}</view>
+                <view class="price">价格:¥ {{ item.goodsPrice }}</view>
+              </view>
+            </view>
+          </u-form>
+        </view>
+
+        <view class="order-text">
+          <view class="order-text__label">本次申请开票金额:</view>
+          <view class="order-text__price">¥ {{ toFixed(invoicePirce) }}</view>
+        </view>
+
+        <view class="submit" @click="formSubmit"> 提交申请 </view>
+      </view>
+      <view class="record" v-if="current == 1">
+        <view class="nodata" v-if="!recordList.length">
+          您暂无相关发票记录哦~
+        </view>
+
+        <view class="record__list">
+          <view
+            class="record-item"
+            @click="showDetailModal(record)"
+            v-for="(record, index) in recordList"
+            :key="index"
+          >
+            <view class="item__time">{{
+              $method.timestampToTime(record.applyTime, false, false)
+            }}</view>
+            <view class="item__content">
+              <view class="top">
+                <view
+                  class="state"
+                  :class="{
+                    wait: record.periodStatus == 1,
+                    refuse: record.periodStatus == 2,
+                    agree: record.periodStatus == 3,
+                  }"
+                >
+                  <text v-if="record.periodStatus == 1">待审核</text>
+                  <text v-if="record.periodStatus == 2">驳回</text>
+                  <text v-if="record.periodStatus == 3">通过</text>
+                  <u-icon
+                    class="arrow"
+                    name="arrow-right"
+                    color="#ffffff"
+                    size="28"
+                  ></u-icon>
+                </view>
+              </view>
+
+              <view class="bottom">
+                <view class="flex">
+                  <view class="text">发票类型</view>
+                  <view class="flex__auto">
+                    <text v-if="record.type == 1">普通发票</text>
+                    <text v-if="record.type == 2">增值税专用发票</text>
+                  </view>
+                </view>
+                <view class="flex">
+                  <view class="text">申请主体</view>
+                  <view class="flex__auto">
+                    <text v-if="record.subject == 1">个人</text>
+                    <text v-if="record.subject == 2">企业</text>
+                  </view>
+                </view>
+                <view class="flex">
+                  <view class="text">发票状态</view>
+                  <view class="flex__auto">
+                    <text class="red" v-if="record.invoiceStatus == 1"
+                      >未开票</text
+                    >
+                    <text class="red" v-if="record.invoiceStatus == 3"
+                      >开票中</text
+                    >
+                    <text class="green" v-if="record.invoiceStatus == 2"
+                      >已开票</text
+                    >
+                    <text class="red" v-if="record.invoiceStatus == -1"
+                      >已退票</text
+                    >
+                  </view>
+                </view>
+                <view @click.stop="showOrder(record.checked, index)">
+                  <view class="flex noborder">
+                    <view class="text">开票订单</view>
+                    <view class="flex__auto">
+                      <text style="margin-right: 10rpx">{{
+                        record.orderList.length
+                      }}</text>
+                      <u-icon
+                        v-if="!record.checked"
+                        name="arrow-down"
+                        color="#ccc"
+                        size="28"
+                      ></u-icon>
+                      <u-icon
+                        v-if="record.checked"
+                        name="arrow-up"
+                        color="#ccc"
+                        size="28"
+                      ></u-icon>
+                    </view>
+                  </view>
+                  <view class="order-list" v-if="record.checked">
+                    <view
+                      class="order-item"
+                      :key="orderIndex"
+                      v-for="(orderItem, orderIndex) in record.orderList"
+                      >{{ orderIndex + 1 }}.{{ orderItem.goodsName }}</view
+                    >
+                  </view>
+                </view>
+              </view>
+            </view>
+          </view>
+        </view>
+      </view>
+    </view>
+
+    <u-popup
+      class="modal"
+      v-model="selectOrderModal"
+      mode="bottom"
+      border-radius="24"
+    >
+      <view class="select-order">
+        <view class="line"></view>
+        <view class="title">选择订单</view>
+        <u-line color="#D6D6DB" />
+        <view>
+          <scroll-view scroll-y="true" style="height: 500rpx">
+            <view v-if="orderList.length">
+              <u-checkbox-group>
+                <view v-for="(item, index) in orderList" :key="index">
+                  <view class="order-item">
+                    <view>
+                      <u-checkbox
+                        :disabled="item.disabled"
+                        shape="circle"
+                        :name="item.name"
+                        v-model="item.checked"
+                      >
+                        <view
+                          class="order-item__bg"
+                          :class="item.checked ? 'active' : ''"
+                        >
+                          <view>
+                            <view class="order-title">{{
+                              item.goodsName
+                            }}</view>
+                            <view class="order-number">{{ item.orderSn }}</view>
+                            <view class="order-price"
+                              >¥ {{ item.goodsPrice }}元</view
+                            >
+                          </view>
+                        </view>
+                      </u-checkbox>
+                    </view>
+                  </view>
+                </view>
+              </u-checkbox-group>
+            </view>
+            <view v-else class="no_data">
+              <text>暂无可开发票的订单</text>
+            </view>
+          </scroll-view>
+        </view>
+        <view class="confrim-btn">
+          <view class="okBtn" @click="okPopup()">确定</view>
+        </view>
+      </view>
+    </u-popup>
+
+    <u-popup
+      class="modal"
+      v-model="orderDetailModal"
+      mode="center"
+      border-radius="40"
+    >
+      <view class="order-detail">
+        <view class="order-detail__content">
+          <scroll-view scroll-y="true" style="height: 860rpx">
+            <view class="content">
+              <view class="header">{{
+                $method.timestampToTime(invoiceDetail.applyTime, false, false)
+              }}</view>
+              <view class="body">
+                <view class="body__item">
+                  <view class="title">发票申请信息</view>
+                  <view class="content">
+                    <u-cell-item
+                      :border-bottom="false"
+                      hover-class="none"
+                      :arrow="false"
+                    >
+                      <view slot="title">发票类型:</view>
+                      <text v-if="invoiceDetail.type == 1">普通发票</text>
+                      <text v-if="invoiceDetail.type == 2">增值税专用发票</text>
+                    </u-cell-item>
+                    <u-cell-item
+                      :border-bottom="false"
+                      hover-class="none"
+                      :arrow="false"
+                    >
+                      <view slot="title">申请主体:</view>
+                      <text v-if="invoiceDetail.subject == 1">个人</text>
+                      <text v-if="invoiceDetail.subject == 2">企业</text>
+                    </u-cell-item>
+                    <u-cell-item
+                      :border-bottom="false"
+                      hover-class="none"
+                      :arrow="false"
+                    >
+                      <view slot="title">发票抬头:</view>
+                      <text>{{ invoiceDetail.invoiceTitle }}</text>
+                    </u-cell-item>
+                    <template v-if="invoiceDetail.subject == 2">
+                      <u-cell-item
+                        :border-bottom="false"
+                        hover-class="none"
+                        :arrow="false"
+                      >
+                        <view slot="title">纳税登记号:</view>
+                        <text>{{ invoiceDetail.taxRegistryNumber || "" }}</text>
+                      </u-cell-item>
+                    </template>
+                    <template v-if="invoiceDetail.type == 2">
+                      <u-cell-item
+                        :border-bottom="false"
+                        hover-class="none"
+                        :arrow="false"
+                      >
+                        <view slot="title">单位地址:</view>
+                        <text>{{ invoiceDetail.companyAddress || "" }}</text>
+                      </u-cell-item>
+                      <u-cell-item
+                        :border-bottom="false"
+                        hover-class="none"
+                        :arrow="false"
+                      >
+                        <view slot="title">电话号码:</view>
+                        <text>{{ invoiceDetail.phone || "" }}</text>
+                      </u-cell-item>
+                      <u-cell-item
+                        :border-bottom="false"
+                        hover-class="none"
+                        :arrow="false"
+                      >
+                        <view slot="title">开户银行:</view>
+                        <text>{{ invoiceDetail.bankName || "" }}</text>
+                      </u-cell-item>
+                      <u-cell-item
+                        :border-bottom="false"
+                        hover-class="none"
+                        :arrow="false"
+                      >
+                        <view slot="title">银行账号:</view>
+                        <text>{{ invoiceDetail.bankAccount || "" }}</text>
+                      </u-cell-item>
+                      <u-cell-item
+                        :border-bottom="false"
+                        hover-class="none"
+                        :arrow="false"
+                      >
+                        <view slot="title">收件地址:</view>
+                        <text>{{ invoiceDetail.receivingAddress || "" }}</text>
+                      </u-cell-item>
+                      <u-cell-item
+                        :border-bottom="false"
+                        hover-class="none"
+                        :arrow="false"
+                      >
+                        <view slot="title">收件人:</view>
+                        <text>{{ invoiceDetail.receivingName || "" }}</text>
+                      </u-cell-item>
+                      <u-cell-item
+                        :border-bottom="false"
+                        hover-class="none"
+                        :arrow="false"
+                      >
+                        <view slot="title">收件手机:</view>
+                        <text>{{ invoiceDetail.receivingTel || "" }}</text>
+                      </u-cell-item>
+                      <u-cell-item
+                        :border-bottom="false"
+                        hover-class="none"
+                        :arrow="false"
+                      >
+                        <view slot="title">开票订单:</view>
+                      </u-cell-item>
+                    </template>
+
+                    <view class="order-list">
+                      <view
+                        class="order-item"
+                        :key="orderIndex"
+                        v-for="(
+                          orderItem, orderIndex
+                        ) in invoiceDetail.orderList"
+                      >
+                        <view class="order-title">{{
+                          orderItem.goodsName
+                        }}</view>
+                        <view class="order-number">{{
+                          orderItem.orderSn
+                        }}</view>
+                        <view class="order-price"
+                          >¥ {{ orderItem.goodsRealPrice }}元</view
+                        >
+                      </view>
+                    </view>
+                    <view class="order-text">
+                      <view class="order-text__label">本次申请开票金额:</view>
+                      <view class="order-text__price"
+                        >¥ {{ toFixed(invoiceDetail.amount) }}</view
+                      >
+                    </view>
+                  </view>
+                </view>
+                <view class="body__item">
+                  <view class="title">发票申请结果</view>
+                  <view class="content">
+                    <u-cell-item
+                      :border-bottom="false"
+                      hover-class="none"
+                      :arrow="false"
+                    >
+                      <view slot="title">审核结果:</view>
+                      <text
+                        class="text wait"
+                        v-if="invoiceDetail.periodStatus == 1"
+                        >待审核</text
+                      >
+                      <text
+                        class="text agree"
+                        v-if="invoiceDetail.periodStatus == 3"
+                        >通过</text
+                      >
+                      <text
+                        class="text refuse"
+                        v-if="invoiceDetail.periodStatus == 2"
+                        >驳回</text
+                      >
+                    </u-cell-item>
+                    <u-cell-item
+                      :border-bottom="false"
+                      hover-class="none"
+                      :arrow="false"
+                      v-if="invoiceDetail.periodReason"
+                    >
+                      <view slot="title">审核反馈:</view>
+                      <text class="text">{{
+                        invoiceDetail.periodReason || ""
+                      }}</text>
+                    </u-cell-item>
+                    <u-cell-item
+                      :border-bottom="false"
+                      hover-class="none"
+                      :arrow="false"
+                    >
+                      <view slot="title">发票状态:</view>
+                      <text
+                        class="text refuse"
+                        v-if="invoiceDetail.invoiceStatus == 1"
+                        >未开票</text
+                      >
+                      <text class="red" v-if="invoiceDetail.invoiceStatus == 3"
+                        >开票中</text
+                      >
+                      <text
+                        class="text agree"
+                        v-if="invoiceDetail.invoiceStatus == 2"
+                        >已开票</text
+                      >
+                      <text
+                        class="text refuse"
+                        v-if="invoiceDetail.invoiceStatus == -1"
+                        >已退票</text
+                      >
+                    </u-cell-item>
+
+                    <u-cell-item
+                      :border-bottom="false"
+                      hover-class="none"
+                      :arrow="false"
+                      v-if="
+                        invoiceDetail.periodStatus == 3 &&
+                        (invoiceDetail.invoiceStatus == 2 ||
+                          invoiceDetail.invoiceStatus == -1) &&
+                        invoiceDetail.invoiceImg
+                      "
+                    >
+                      <view slot="title">发票预览:</view>
+                      <view>
+                        <image
+                          class="preview"
+                          @click="previewImg(invoiceDetail)"
+                          :src="$method.splitImgHost(invoiceDetail.invoiceImg)"
+                        ></image>
+                        <view
+                          class="download-btn"
+                          @click="download(invoiceDetail)"
+                          >下载电子发票</view
+                        >
+                      </view>
+                    </u-cell-item>
+
+                    <u-cell-item
+                      :border-bottom="false"
+                      hover-class="none"
+                      :arrow="false"
+                      v-if="
+                        invoiceDetail.periodStatus == 3 &&
+                        (invoiceDetail.invoiceStatus == 2 ||
+                          invoiceDetail.invoiceStatus == -1) &&
+                        invoiceDetail.type == 2 &&
+                        invoiceDetail.subject == 2
+                      "
+                    >
+                      <view slot="title">机构发票邮寄状态:</view>
+                      <text class="text" v-if="invoiceDetail.sendInvoice == 1"
+                        >是</text
+                      >
+                      <text class="text" v-else>否</text>
+                    </u-cell-item>
+
+                    <u-cell-item
+                      v-if="
+                        invoiceDetail.periodStatus == 3 &&
+                        (invoiceDetail.invoiceStatus == 2 ||
+                          invoiceDetail.invoiceStatus == -1) &&
+                        invoiceDetail.sendInvoice == 1 &&
+                        invoiceDetail.type == 2 &&
+                        invoiceDetail.subject == 2
+                      "
+                      @click.stop="copy(invoiceDetail.trackingNum)"
+                      :border-bottom="false"
+                      hover-class="none"
+                      :arrow="false"
+                    >
+                      <view slot="title">发票邮寄快递单号:(点击可复制)</view>
+                      <text class="text">{{
+                        invoiceDetail.trackingNum || ""
+                      }}</text>
+                    </u-cell-item>
+                  </view>
+                </view>
+              </view>
+            </view>
+          </scroll-view>
+        </view>
+        <view class="order-detail__btns" v-if="invoiceDetail.periodStatus == 1">
+          <view class="btn" @click="orderDetailModal = false">知道了</view>
+          <view class="btn warm" @click="orderCancelModal = true"
+            >撤销申请</view
+          >
+        </view>
+
+        <view class="order-detail__btns" v-else>
+          <view class="btn ok" @click="orderDetailModal = false">知道了</view>
+        </view>
+      </view>
+    </u-popup>
+
+    <u-popup
+      class="modal"
+      v-model="orderCancelModal"
+      mode="center"
+      border-radius="24"
+    >
+      <view class="order-cancel">
+        <view class="header"> 温馨提示 </view>
+        <view class="body">
+          <view>撤销申请后,</view>
+          <view>本次的发票申请内容将不存在。</view>
+          <view>请慎重考虑。 </view>
+          <view>您确定要取消本次发票申请吗?</view>
+        </view>
+        <view class="footer">
+          <view class="btn cancel" @click="orderCancelModal = false">取消</view>
+          <view class="btn ok" @click="orderCancel()">确定</view>
+        </view>
+      </view>
+    </u-popup>
+  </view>
 </template>
 
 <script>
-import { mapGetters } from 'vuex';
+import { mapGetters } from "vuex";
 export default {
-	components: {},
-	data() {
-		return {
-			checkOrderList:[],
-			recordList:[],
-			list: [
-				{
-					name: '发票申请'
-				},
-				{
-					name: '发票记录'
-				}
-			],
-			invoiceDetail:{
-				amount:0
-			},
-			form:{
-				type:'1',
-				subject:'1',
-				invoiceTitle:'',
-				orderGoodsIds:'',
-				taxRegistryNumber:'',
-				companyAddress:'',
-				phone:'',
-				bankName:'',
-				bankAccount:'',
-				receivingAddress:'',
-				receivingName:'',
-				receivingTel:'',
-			},
-			rules: {
-				receivingTel: [
-					{ 
-						required: true, 
-						message: '请输入收件手机', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-					},
-					{
-						validator: (rule, value, callback) => {
-							// 上面有说,返回true表示校验通过,返回false表示不通过
-							// this.$u.test.mobile()就是返回true或者false的
-							console.log(this.$u.test.mobile(value),'this.$u.test.mobile(value)')
-							return this.$u.test.mobile(value);
-						},
-						message: '手机号码格式不正确',
-						// 触发器可以同时用blur和change
-						trigger: ['change'],
-					}
-				],
-				type: [
-					{ 
-						required: true, 
-						message: '请选择发票类型', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-					}
-				],
-				subject: [
-					{ 
-						required: true, 
-						message: '请选择申请主体', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-					}
-				],
-				invoiceTitle: [
-					{ 
-						required: true, 
-						message: '请输入发票抬头', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-					},
-				],
-				taxRegistryNumber: [
-					{ 
-						required: true, 
-						message: '请输入纳税登记号', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-					},
-					{
-						validator: (rule, value, callback) => {
-							// 上面有说,返回true表示校验通过,返回false表示不通过
-							var reg = /(^[0-9A-Z]{15,20}$)/;
-							console.log( reg.test(value),' reg.test(value)')
-							return reg.test(value);
-						},
-						message: '纳税登记号格式不正确',
-						// 触发器可以同时用blur和change
-						trigger: ['change'],
-					}
-				],
-				companyAddress: [
-					{ 
-						required: true, 
-						message: '请输入单位地址', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-					}
-				],
-				phone: [
-					{ 
-						required: true, 
-						message: '请输入电话号码', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-					},
-					{
-						validator: (rule, value, callback) => {
-							var vartest = /^([0-9]{3,4}-)?[0-9]{7,8}$/;
-							var vartest1 = /^([0-9]{3,4})?[0-9]{7,8}$/;
-							if (this.$u.test.mobile(value) || vartest.test(value) || vartest1.test(value)) {
-								return true;
-							} else {
-								return false;
-							}
-						},
-						message: '电话号码不正确',
-						trigger: ['change', 'blur']
-					}
-				],
-				bankName: [
-					{ 
-						required: true, 
-						message: '请输入开户银行', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-					},
-					{
-						validator: (rule, value, callback) => {
-							var reg = /[\u4E00-\u9FA5]+/;
-							return reg.test(value)
-						},
-						message: '开户银行名称不正确',
-						trigger: ['change', 'blur']
-					}
-				],
-				
-				
-				bankAccount: [
-					{ 
-						required: true, 
-						message: '请输入银行账号', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-						
-					},
-					{
-						validator: (rule, value, callback) => {
-							// 上面有说,返回true表示校验通过,返回false表示不通过
-							var reg = /^[1-9]{1}(\d{15}|\d{18})$/;
-							console.log( reg.test(value),' reg.test(value)')
-							return reg.test(value);
-						},
-						message: '银行卡号格式不正确',
-						// 触发器可以同时用blur和change
-						trigger: ['change'],
-					}
-				],
-				receivingAddress: [
-					{ 
-						required: true, 
-						message: '请输入收件地址', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-					}
-				],
-				receivingName: [
-					{ 
-						required: true, 
-						message: '请输入收件人', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-					}
-				],
-				orderGoodsIds: [
-					{ 
-						required: true, 
-						message: '请选择订单', 
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change'],
-					}
-				],
-			},
-			orderValue:'',
-			orderList:[],
-			selectOrderModal:false,
-			orderDetailModal:false,
-			orderCancelModal:false,
-			current: 0,
-			invoicePirce:0,
-			order: [],
-			typeList:[{
-				name:'普通发票',
-				value:'1'
-			},{
-				name:'增值税专用发票',
-				value:'2'
-			}],
-			mainList:[{
-				name:'个人',
-				value:'1'
-			},{
-				name:'企业',
-				value:'2'
-			}]
-		};
-	},
-	// onPullDownRefresh() {},
-	onLoad(option) {
-		this.orderInvoiceCanInvoiceList();
-	},
-	onReady() {
-		this.$refs.uForm.setRules(this.rules)
-	},
-	methods: {
-		orderCancel() {
-			let invoiceDetail = JSON.parse(JSON.stringify(this.invoiceDetail))
-			invoiceDetail.status = -1;
-			this.$api.orderInvoiceCancel(invoiceDetail).then(res => {
-				if(res.data.code == 200) {
-					this.orderInvoiceList();
-					this.orderInvoiceCanInvoiceList();
-					this.orderDetailModal = false;
-					this.orderCancelModal = false;
-					uni.showToast({
-						title:'撤销成功',
-						icon:'none'
-					})
-				} else {
-					
-				}
-			}) 
-		},
-		showDetailModal(item) {
-			this.orderDetailModal = true;
-			this.invoiceDetail = item;
-		},
-		toFixed(number) {
-			console.log(number.toFixed(2))
-			return number.toFixed(2)
-		},
-		/**
-		 * 获取可开发票的订单,/order/invoice/canInvoiceList
-		 */
-		orderInvoiceCanInvoiceList() {
-			this.$api.orderInvoiceCanInvoiceList().then(res => {
-				if(res.data.code == 200) {
-					res.data.rows.forEach(item => {
-						item.checked = false;
-					})
-					this.orderList = res.data.rows;
-				}
-			}) 
-		},
-		/**
-		 * @param {Object} checkedState 显示状态
-		 * @param {Object} index 索引值
-		 * 修改开票订单列表显示状态
-		 */
-		showOrder(showState,index) {
-			this.$set(this.recordList[index],'checked',!showState)
-		},
-		/**
-		 * 发票申请提交
-		 */
-		formSubmit() {
-			this.$refs.uForm.validate(valid => {
-				console.log(valid,'valid')
-				console.log(this.form,'this.form')
-				if(valid) {
-					
-					if(this.invoicePirce > 10000) {
-						uni.showModal({
-							title:'提示',
-							content:'您所选的订单总开票金额,大于10000元,超出单张发票的开票额度,请修改开票订单',
-							showCancel:false,
-						})
-						return
-					}
-					let data = JSON.parse(JSON.stringify(this.form));
-					data.orderGoodsIds = data.orderGoodsIds.split(',')
-					data.amount = this.invoicePirce;
-					if(data.subject == '1') {
-						data.taxRegistryNumber = '';
-						data.companyAddress = '';
-						data.phone = '';
-						data.bankName = '';
-						data.bankAccount = '';
-						data.receivingAddress = '';
-						data.receivingName = '';
-						data.receivingTel = '';
-					}
-					this.$api.orderInvoice(data).then(res => {
-						if(res.data.code == 200) {
-							this.orderInvoiceCanInvoiceList();
-							this.form = {
-								type:'1',
-								subject:'1',
-								invoiceTitle:'',
-								orderGoodsIds:'',
-								taxRegistryNumber:'',
-								companyAddress:'',
-								phone:'',
-								bankName:'',
-								bankAccount:'',
-								receivingAddress:'',
-								receivingName:'',
-								receivingTel:'',
-							};
-							this.invoicePirce = 0;
-							uni.showModal({
-								title:'操作提示',
-								content:`您本次的发票申请已经提交成功!\n机构将在3-7个工作日内进行处理,处理结果会在【发票记录】显示,请留意进度。`,
-								showCancel:false,
-								confirmText:'知道了'
-							})
-						} else {
-							uni.showToast({
-								icon:'none',
-								title:res.data.msg
-							})
-						}
-					})
-				}
-			})
-		},
-		/**
-		 * @param {Object} e value
-		 * 发票类型修改
-		 */
-		formTypeChange(e) {
-			console.log(e)
-			if(e == '2') {
-				this.$set(this.form,'subject','2')
-			} else {
-				
-			}
-		},
-		/**
-		 * @param {Object} e
-		 * tabs 切换
-		 */
-		change(e) {
-			console.log(e)
-			this.current = e;
-			
-			if(this.current == 1) {
-				this.orderInvoiceList();
-			} else {
-				this.$nextTick(() => {
-					this.$refs.uForm.setRules(this.rules)
-				})
-				
-			}
-		},
-		
-		orderInvoiceList() {
-			this.$api.orderInvoiceList().then(res => {
-				if(res.data.code == 200) {
-					this.recordList = res.data.rows
-				} else {
-					uni.showToast({
-						icon:'none',
-						title:res.data.msg
-					})
-				}
-			})
-		},
-		
-		radioGroupChange(e) {
-			console.log(e)
-		},
-		copy(str) {
-			if(!str) {
-				uni.showToast({
-					icon:'none',
-					title:'暂时没有可以复制的快递号'
-				})
-				return;
-			}
-			let newStr = String(str)
-			uni.setClipboardData({
-			    data: newStr,
-			    success: function () {
-			        console.log('success');
-			    }
-			});
-		},
-		okPopup() {
-			this.selectOrderModal = false;
-			let strArr = [];
-			this.invoicePirce = 0;
-			this.orderList.forEach((item,index) => {
-				if(item.checked) {
-					this.$set(this.orderList[index],'disabled',true)
-					strArr.push(item.orderGoodsId)
-					this.invoicePirce += item.goodsPrice
-				}
-			})
-			
-			this.form.orderGoodsIds = strArr.join(',')
-			this.$nextTick(() => {
-				this.$refs.orderGoodsIds.onFieldChange()
-			})
-			console.log(this.$refs.orderGoodsIds)
-		},
-		
-		deleteOrder(index) { 
-			this.$set(this.orderList[index],'disabled',false)
-			this.$set(this.orderList[index],'checked',false)
-			let strArr = [];
-			this.invoicePirce = 0;
-			this.orderList.forEach((item,index) => {
-				if(item.checked) {
-					strArr.push(item.orderGoodsId)
-					this.invoicePirce += item.goodsPrice
-				}
-			})
-			
-			this.form.orderGoodsIds = strArr.join(',')
-			this.$nextTick(() => {
-				this.$refs.orderGoodsIds.onFieldChange()
-			})
-		},
-		
-		previewImg(item) {
-			// 预览图片
-			uni.previewImage({
-				urls: [this.$method.splitImgHost(item.invoiceImg,true,1000)],
-				longPressActions: {
-					itemList: ['发送给朋友', '保存图片', '收藏'],
-					success: function(data) {
-						console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
-					},
-					fail: function(err) {
-						console.log(err.errMsg);
-					}
-				}
-			});
-		},
-		
-		download(item) {
-			//获取相册授权
-			   uni.getSetting({
-				 success:(res) => {
-				   if (!res.authSetting['scope.writePhotosAlbum']) {
-					 uni.authorize({
-					   scope: 'scope.writePhotosAlbum',
-					   success() {
-						 //这里是用户同意授权后的回调
-						 this.saveImgToLocal(item);
-					   },
-					   fail() {//这里是用户拒绝授权后的回调
-					   
-					   }
-					 })
-				   } else {//用户已经授权过了
-					 this.saveImgToLocal(item);
-				   }
-				 }
-			   })
-		},
-		
-		saveImgToLocal(item){
-			
-			uni.showModal({
-				title: '提示',
-				content: '确定保存到相册吗',
-				success: (res) => {
-					if (res.confirm) {
-						
-						uni.downloadFile({
-								url: this.$method.splitImgHost(item.invoiceImg,true,1000),//图片地址
-								success: (res) =>{
-									if (res.statusCode === 200){
-										uni.saveImageToPhotosAlbum({
-											filePath: res.tempFilePath,
-											success: function() {
-												uni.showToast({
-													title: "保存成功",
-													icon: "none"
-												});
-											},
-											fail: function() {
-												uni.showToast({
-													title: "保存失败",
-													icon: "none"
-												});
-											}
-										});
-									} 
-								}
-							})
-						
-						
-					} else if (res.cancel) {
-						
-					}
-				}
-			});
-			
-		}
-	},
-	computed: { 
-		...mapGetters(['userInfo']),
-		filterOrderList() {
-			return this.orderList.filter(i => i.disabled) || []
-		}
-	}
+  components: {},
+  data() {
+    return {
+      checkOrderList: [],
+      recordList: [],
+      list: [
+        {
+          name: "发票申请",
+        },
+        {
+          name: "发票记录",
+        },
+      ],
+      invoiceDetail: {
+        amount: 0,
+      },
+      form: {
+        type: "1",
+        subject: "1",
+        invoiceTitle: "",
+        orderGoodsIds: "",
+        taxRegistryNumber: "",
+        companyAddress: "",
+        email: "",
+        phone: "",
+        bankName: "",
+        bankAccount: "",
+        receivingAddress: "",
+        receivingName: "",
+        receivingTel: "",
+      },
+      rules: {
+        receivingTel: [
+          {
+            required: true,
+            message: "请输入收件手机",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+          {
+            validator: (rule, value, callback) => {
+              // 上面有说,返回true表示校验通过,返回false表示不通过
+              // this.$u.test.mobile()就是返回true或者false的
+              console.log(
+                this.$u.test.mobile(value),
+                "this.$u.test.mobile(value)"
+              );
+              return this.$u.test.mobile(value);
+            },
+            message: "手机号码格式不正确",
+            // 触发器可以同时用blur和change
+            trigger: ["change"],
+          },
+        ],
+        type: [
+          {
+            required: true,
+            message: "请选择发票类型",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+        ],
+        subject: [
+          {
+            required: true,
+            message: "请选择申请主体",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+        ],
+        invoiceTitle: [
+          {
+            required: true,
+            message: "请输入发票抬头",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+        ],
+        taxRegistryNumber: [
+          {
+            required: true,
+            message: "请输入纳税登记号",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+          {
+            validator: (rule, value, callback) => {
+              // 上面有说,返回true表示校验通过,返回false表示不通过
+              var reg = /(^[0-9A-Z]{15,20}$)/;
+              return reg.test(value);
+            },
+            message: "纳税登记号格式不正确",
+            // 触发器可以同时用blur和change
+            trigger: ["change"],
+          },
+        ],
+        email: [
+          {
+            required: true,
+            message: "请输入邮箱",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+          {
+            validator: (rule, value, callback) => {
+              // 上面有说,返回true表示校验通过,返回false表示不通过
+              var reg = /^([a-zA-Z\d][\w-]{2,})@(\w{2,})\.([a-z]{2,})(\.[a-z]{2,})?$/;
+              return reg.test(value);
+            },
+            message: "邮箱格式不正确",
+            // 触发器可以同时用blur和change
+            trigger: ["change"],
+          },
+        ],
+        companyAddress: [
+          {
+            required: true,
+            message: "请输入单位地址",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+        ],
+        phone: [
+          {
+            required: true,
+            message: "请输入电话号码",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+          {
+            validator: (rule, value, callback) => {
+              var vartest = /^([0-9]{3,4}-)?[0-9]{7,8}$/;
+              var vartest1 = /^([0-9]{3,4})?[0-9]{7,8}$/;
+              if (
+                this.$u.test.mobile(value) ||
+                vartest.test(value) ||
+                vartest1.test(value)
+              ) {
+                return true;
+              } else {
+                return false;
+              }
+            },
+            message: "电话号码不正确",
+            trigger: ["change", "blur"],
+          },
+        ],
+        bankName: [
+          {
+            required: true,
+            message: "请输入开户银行",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+          {
+            validator: (rule, value, callback) => {
+              var reg = /[\u4E00-\u9FA5]+/;
+              return reg.test(value);
+            },
+            message: "开户银行名称不正确",
+            trigger: ["change", "blur"],
+          },
+        ],
+
+        bankAccount: [
+          {
+            required: true,
+            message: "请输入银行账号",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+          {
+            validator: (rule, value, callback) => {
+              // 上面有说,返回true表示校验通过,返回false表示不通过
+              var reg = /^[1-9]{1}(\d{15}|\d{18})$/;
+              return reg.test(value);
+            },
+            message: "银行卡号格式不正确",
+            // 触发器可以同时用blur和change
+            trigger: ["change"],
+          },
+        ],
+        receivingAddress: [
+          {
+            required: true,
+            message: "请输入收件地址",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+        ],
+        receivingName: [
+          {
+            required: true,
+            message: "请输入收件人",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+        ],
+        orderGoodsIds: [
+          {
+            required: true,
+            message: "请选择订单",
+            // 可以单个或者同时写两个触发验证方式
+            trigger: ["change"],
+          },
+        ],
+      },
+      orderValue: "",
+      orderList: [],
+      selectOrderModal: false,
+      orderDetailModal: false,
+      orderCancelModal: false,
+      current: 0,
+      invoicePirce: 0,
+      order: [],
+      typeList: [
+        {
+          name: "普通发票",
+          value: "1",
+        },
+        {
+          name: "增值税专用发票",
+          value: "2",
+        },
+      ],
+      mainList: [
+        {
+          name: "个人",
+          value: "1",
+        },
+        {
+          name: "企业",
+          value: "2",
+        },
+      ],
+    };
+  },
+  // onPullDownRefresh() {},
+  onLoad(option) {
+    this.orderInvoiceCanInvoiceList();
+  },
+  onReady() {
+    this.$refs.uForm.setRules(this.rules);
+  },
+  methods: {
+    orderCancel() {
+      let invoiceDetail = JSON.parse(JSON.stringify(this.invoiceDetail));
+      invoiceDetail.status = -1;
+      this.$api.orderInvoiceCancel(invoiceDetail).then((res) => {
+        if (res.data.code == 200) {
+          this.orderInvoiceList();
+          this.orderInvoiceCanInvoiceList();
+          this.orderDetailModal = false;
+          this.orderCancelModal = false;
+          uni.showToast({
+            title: "撤销成功",
+            icon: "none",
+          });
+        } else {
+        }
+      });
+    },
+    showDetailModal(item) {
+      this.orderDetailModal = true;
+      this.invoiceDetail = item;
+    },
+    toFixed(number) {
+      console.log(number.toFixed(2));
+      return number.toFixed(2);
+    },
+    /**
+     * 获取可开发票的订单,/order/invoice/canInvoiceList
+     */
+    orderInvoiceCanInvoiceList() {
+      this.$api.orderInvoiceCanInvoiceList().then((res) => {
+        if (res.data.code == 200) {
+          res.data.rows.forEach((item) => {
+            item.checked = false;
+          });
+          this.orderList = res.data.rows;
+        }
+      });
+    },
+    /**
+     * @param {Object} checkedState 显示状态
+     * @param {Object} index 索引值
+     * 修改开票订单列表显示状态
+     */
+    showOrder(showState, index) {
+      this.$set(this.recordList[index], "checked", !showState);
+    },
+    /**
+     * 发票申请提交
+     */
+    formSubmit() {
+      this.$refs.uForm.validate((valid) => {
+        console.log(valid, "valid");
+        console.log(this.form, "this.form");
+        if (valid) {
+          if (this.invoicePirce > 10000) {
+            uni.showModal({
+              title: "提示",
+              content:
+                "您所选的订单总开票金额,大于10000元,超出单张发票的开票额度,请修改开票订单",
+              showCancel: false,
+            });
+            return;
+          }
+          let data = JSON.parse(JSON.stringify(this.form));
+          data.orderGoodsIds = data.orderGoodsIds.split(",");
+          data.amount = this.invoicePirce;
+          if (data.subject == "1") {
+            data.taxRegistryNumber = "";
+            data.companyAddress = "";
+            data.phone = "";
+            data.bankName = "";
+            data.bankAccount = "";
+            data.receivingAddress = "";
+            data.receivingName = "";
+            data.receivingTel = "";
+          }
+          this.$api.orderInvoice(data).then((res) => {
+            if (res.data.code == 200) {
+              this.orderInvoiceCanInvoiceList();
+              this.form = {
+                type: "1",
+                subject: "1",
+                invoiceTitle: "",
+                orderGoodsIds: "",
+                taxRegistryNumber: "",
+                companyAddress: "",
+                phone: "",
+                bankName: "",
+                bankAccount: "",
+                receivingAddress: "",
+                receivingName: "",
+                receivingTel: "",
+              };
+              this.invoicePirce = 0;
+              uni.showModal({
+                title: "操作提示",
+                content: `您本次的发票申请已经提交成功!\n请稍后留意邮箱。`,
+                showCancel: false,
+                confirmText: "知道了",
+              });
+            } else {
+              uni.showToast({
+                icon: "none",
+                title: res.data.msg,
+              });
+            }
+          });
+        }
+      });
+    },
+    /**
+     * @param {Object} e value
+     * 发票类型修改
+     */
+    formTypeChange(e) {
+      console.log(e);
+      if (e == "2") {
+        this.$set(this.form, "subject", "2");
+      } else {
+      }
+    },
+    /**
+     * @param {Object} e
+     * tabs 切换
+     */
+    change(e) {
+      console.log(e);
+      this.current = e;
+
+      if (this.current == 1) {
+        this.orderInvoiceList();
+      } else {
+        this.$nextTick(() => {
+          this.$refs.uForm.setRules(this.rules);
+        });
+      }
+    },
+
+    orderInvoiceList() {
+      this.$api.orderInvoiceList().then((res) => {
+        if (res.data.code == 200) {
+          this.recordList = res.data.rows;
+        } else {
+          uni.showToast({
+            icon: "none",
+            title: res.data.msg,
+          });
+        }
+      });
+    },
+
+    radioGroupChange(e) {
+      console.log(e);
+    },
+    copy(str) {
+      if (!str) {
+        uni.showToast({
+          icon: "none",
+          title: "暂时没有可以复制的快递号",
+        });
+        return;
+      }
+      let newStr = String(str);
+      uni.setClipboardData({
+        data: newStr,
+        success: function () {
+          console.log("success");
+        },
+      });
+    },
+    okPopup() {
+      this.selectOrderModal = false;
+      let strArr = [];
+      this.invoicePirce = 0;
+      this.orderList.forEach((item, index) => {
+        if (item.checked) {
+          this.$set(this.orderList[index], "disabled", true);
+          strArr.push(item.orderGoodsId);
+          this.invoicePirce += item.goodsPrice;
+        }
+      });
+
+      this.form.orderGoodsIds = strArr.join(",");
+      this.$nextTick(() => {
+        this.$refs.orderGoodsIds.onFieldChange();
+      });
+      console.log(this.$refs.orderGoodsIds);
+    },
+
+    deleteOrder(index) {
+      this.$set(this.orderList[index], "disabled", false);
+      this.$set(this.orderList[index], "checked", false);
+      let strArr = [];
+      this.invoicePirce = 0;
+      this.orderList.forEach((item, index) => {
+        if (item.checked) {
+          strArr.push(item.orderGoodsId);
+          this.invoicePirce += item.goodsPrice;
+        }
+      });
+
+      this.form.orderGoodsIds = strArr.join(",");
+      this.$nextTick(() => {
+        this.$refs.orderGoodsIds.onFieldChange();
+      });
+    },
+
+    previewImg(item) {
+      // 预览图片
+      uni.previewImage({
+        urls: [this.$method.splitImgHost(item.invoiceImg, true, 1000)],
+        longPressActions: {
+          itemList: ["发送给朋友", "保存图片", "收藏"],
+          success: function (data) {
+            console.log(
+              "选中了第" +
+                (data.tapIndex + 1) +
+                "个按钮,第" +
+                (data.index + 1) +
+                "张图片"
+            );
+          },
+          fail: function (err) {
+            console.log(err.errMsg);
+          },
+        },
+      });
+    },
+
+    download(item) {
+      //获取相册授权
+      uni.getSetting({
+        success: (res) => {
+          if (!res.authSetting["scope.writePhotosAlbum"]) {
+            uni.authorize({
+              scope: "scope.writePhotosAlbum",
+              success() {
+                //这里是用户同意授权后的回调
+                this.saveImgToLocal(item);
+              },
+              fail() {
+                //这里是用户拒绝授权后的回调
+              },
+            });
+          } else {
+            //用户已经授权过了
+            this.saveImgToLocal(item);
+          }
+        },
+      });
+    },
+
+    saveImgToLocal(item) {
+      uni.showModal({
+        title: "提示",
+        content: "确定保存到相册吗",
+        success: (res) => {
+          if (res.confirm) {
+            uni.downloadFile({
+              url: this.$method.splitImgHost(item.invoiceImg, true, 1000), //图片地址
+              success: (res) => {
+                if (res.statusCode === 200) {
+                  uni.saveImageToPhotosAlbum({
+                    filePath: res.tempFilePath,
+                    success: function () {
+                      uni.showToast({
+                        title: "保存成功",
+                        icon: "none",
+                      });
+                    },
+                    fail: function () {
+                      uni.showToast({
+                        title: "保存失败",
+                        icon: "none",
+                      });
+                    },
+                  });
+                }
+              },
+            });
+          } else if (res.cancel) {
+          }
+        },
+      });
+    },
+  },
+  computed: {
+    ...mapGetters(["userInfo"]),
+    filterOrderList() {
+      return this.orderList.filter((i) => i.disabled) || [];
+    },
+  },
 };
 </script>
 <style>
 page {
-	background: #eaeef1;
+  background: #eaeef1;
 }
 </style>
 <style scoped lang="scss">
-	
 .invoice {
-	&__tabs {
-		width: 100%;
-		text-align: center;
-		position: fixed;
-		height: 96rpx;
-		z-index: 999;
-	}
-	
-	&__content {
-		padding-top:96rpx;
-		
-		.open {
-			padding-bottom:150rpx;
-			margin:8rpx 24rpx 0;
-			
-			.form {
-				padding:24rpx;
-				width: 702rpx;
-				background: #FFFFFF;
-				border-radius: 24rpx;
-				
-				// /deep/ .u-input__input {
-				// 	text-align: right;
-				// }
-				
-				
-				.form-item {
-					height:78rpx;
-					display: flex;
-					align-items: center;
-					
-					.text {
-						font-size: 28rpx;
-						width:120rpx;
-						// color: #999999;
-					}
-					
-					.content {
-						flex:1;
-						text-align: left;
-						color:#bbb;
-					}
-				}
-				
-				.check-order {
-					margin-top:20rpx;
-					width: 654rpx;
-					height: 168rpx;
-					background: #F5F5F5;
-					border: 2px solid #F5F5F5;
-					padding:20rpx;
-					position:relative;
-					
-					.close {
-						position:absolute;
-						right:0;
-						top:0;
-					}
-					
-					
-					.title,.number,.price {
-						color:#333333;
-						margin-top:10rpx;
-						line-height: 30rpx;
-						font-size: 30rpx;
-					}
-					
-					.number {
-						color:#999;
-					}
-				}
-				
-			}
-			
-			.order-text {
-				margin-top:16rpx;
-				padding:0 30rpx;
-				width: 702rpx;
-				height: 80rpx;
-				background: #FFFFFF;
-				border-radius: 24rpx;
-				display: flex;
-				align-items: center;
-				
-				&__label {
-					font-size: 24rpx;
-				}
-				
-				&__price {
-					font-size: 30rpx;
-					margin-left:20rpx;
-					color:#FF2D55;
-				}
-			}
-				
-			.submit {
-				text-align: center;
-				line-height: 80rpx;
-				color:#fff;
-				font-size: 30rpx;
-				width: 526rpx;
-				height: 80rpx;
-				background: #007AFF;
-				box-shadow: 0rpx 8rpx 7rpx 1rpx rgba(0, 122, 255, 0.1);
-				border-radius: 40rpx;
-				position:fixed;
-				left:50%;
-				bottom:40rpx;
-				z-index: 999;
-				transform: translateX(-50%);
-			}
-		}
-		
-		.record {
-			.nodata {
-				padding-top:160rpx;
-				font-size: 32rpx;
-				text-align: center;
-				color: #999999;
-			}
-			
-			&__list {
-				
-				.record-item {
-					margin:0 8rpx 10rpx;
-					.item__time {
-						padding:20rpx 0;
-						text-align: center;
-						font-size: 24rpx;
-						color: #999999;
-					}
-					
-					.item__content {
-						background:#fff;
-						border-radius: 16rpx;
-						
-						.top {
-							padding:12rpx 0;
-							border-bottom:1px solid #EEEEEE;
-							.state {
-								position:relative;
-								text-align: center;
-								color:#fff;
-								font-size: 30rpx;
-								margin:0 auto;
-								width: 240rpx;
-								height: 56rpx;
-								line-height: 56rpx;
-								background: #007AFF;
-								border-radius: 28rpx;
-								
-								&.wait {
-									background: #007AFF;
-								}
-								&.refuse {
-									background: #FF3B30;
-								}
-								&.agree {
-									background: #34C759;
-								}
-								
-								.arrow {
-									position:absolute;
-									top:50%;
-									transform: translateY(-50%);
-									right:18rpx;
-								}
-							}
-						}
-						
-						.bottom {
-							padding:0 32rpx;
-							.flex {
-								height:80rpx;
-								display: flex;
-								align-items: center;
-								border-bottom:1px solid #EEEEEE;
-								
-								&.noborder{
-									border:0;
-								}
-								
-								
-								.text {
-									font-size: 24rpx;
-									color: #666666;
-								}
-								
-								&__auto {
-									text-align: right;
-									flex:1;
-									font-size: 30rpx;
-									font-weight: bold;
-									color: #666666;
-									
-									.red {
-										color:#FF3B30;
-									}
-									
-									.green {
-										color:#34C759;
-									}
-								}
-							}
-							
-							.order-list {
-								padding-bottom:30rpx;
-								.order-item {
-									border-radius: 16rpx;
-									padding:14rpx;
-									background:#F5F5F5;
-									font-size: 30rpx;
-									color:#333;
-									margin-top:16rpx;
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-	
-	.modal {
-		
-		.select-order {
-			.line {
-				width: 80rpx;
-				height: 8rpx;
-				background: #999999;
-				border-radius: 4rpx;
-				margin:8rpx auto 0;
-			}
-			
-			.title {
-				margin:20rpx 0 15rpx;
-				text-align: center;
-				font-size: 24rpx;
-				color: #999999;
-			}
-			
-			.order-item {
-				display: flex;
-				align-items: center;
-				padding: 20rpx;
-				
-				
-				&__bg {
-					width: 654rpx;
-					height: 168rpx;
-					background: #F5F5F5;
-					border: 2px solid #F5F5F5;
-					border-radius: 16rpx;
-					padding:20rpx;
-					
-					
-					&.active {
-						background: #EBF5FF;
-						border: 2px solid #007AFF;
-					}
-					
-					.order-title,.order-number,.order-price {
-						color:#333333;
-						margin-top:10rpx;
-						line-height: 30rpx;
-						font-size: 30rpx;
-					}
-					
-					.order-number {
-						color:#999;
-					}
-				}
-			}
-			
-			.confrim-btn {
-				width: 750rpx;
-				height: 98rpx;
-				background: rgba(255, 255, 255, 0.98);
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				
-				.okBtn {
-					text-align: center;
-					line-height: 64rpx;
-					color:#fff;
-					font-size: 30rpx;
-					width: 200rpx;
-					height: 64rpx;
-					background: linear-gradient(0deg, #015EEA, #00C0FA);
-					border-radius: 32rpx;
-				}
-			}
-			.no_data {
-				text-align: center;
-				margin-top: 40rpx;
-			}
-		}
-		
-		.order-detail {
-			width: 640rpx;
-			height: 1000rpx;
-			background: #FFFFFF;
-			display: flex;
-			flex-direction: column;
-			
-			
-			&__content {
-				flex:1;
-				
-				.content {
-					padding:24rpx 24rpx 0;
-					
-					/deep/ .u-cell {
-						padding:10rpx;
-						
-						&_title {
-							color:#999;
-						}
-						
-						&__value {
-							color:#333;
-							text-align: left;
-						}
-						
-						.text {
-							&.wait {
-								color:#007AFF;
-							}
-							
-							&.agree {
-								color:#34C759;
-							}
-							
-							&.refuse {
-								color:#FF3B30;
-							}
-						}
-						
-						.preview {
-							width:240rpx;
-							height:160rpx;
-						}
-						
-						.download-btn {
-							margin:10rpx 0 0;
-							text-align: center;
-							line-height: 56rpx;
-							color:#fff;
-							font-size: 30rpx;
-							width: 224rpx;
-							height: 56rpx;
-							background: #007AFF;
-							border-radius: 16rpx;
-						}
-					}
-					
-					
-					.header {
-						font-size: 30rpx;
-						font-weight: bold;
-						color: #333333;
-						line-height: 48rpx;
-					}
-					
-					.body {
-						&__item {
-							
-							border-bottom:1px solid #EEEEEE;
-							padding-bottom:30rpx;
-							
-							&:last-child {
-								border:0;
-							}
-							
-							.title {
-								margin-top:30rpx;
-								font-size: 24rpx;
-								color: #007AFF;
-								line-height: 48rpx;
-								
-								&::before {
-									content:'';
-									width: 4rpx;
-									height: 24rpx;
-									background: #007AFF;
-									border-radius: 2rpx;
-									display: inline-block;
-									margin-right:10rpx;
-								}
-							}
-							
-							.order-list {
-								
-								.order-item {
-									overflow: hidden;
-									border-radius: 16rpx;
-									padding:0 14rpx 14rpx;
-									background:#F5F5F5;
-									font-size: 30rpx;
-									color:#333;
-									margin-top:16rpx;
-									
-									.order-title,.order-number,.order-price {
-										color:#333333;
-										margin-top:20rpx;
-										line-height: 26rpx;
-										font-size: 26rpx;
-									}
-									
-									.order-number {
-										color:#999;
-									}
-								}
-							}
-							
-							.order-text {
-								margin-top:16rpx;
-								padding:0 30rpx;
-								height: 80rpx;
-								background: #F5F5F5;
-								border-radius: 16rpx;
-								display: flex;
-								align-items: center;
-								
-								&__label {
-									font-size: 24rpx;
-									color:#999999;
-								}
-								
-								&__price {
-									font-size: 30rpx;
-									margin-left:20rpx;
-									color:#FF2D55;
-								}
-							}
-						}
-					}
-				}
-				
-				
-				
-			}
-			
-			&__btns {
-				border-top:1px solid #EEEEEE;
-				padding:0 24rpx;
-				width: 100%;
-				height: 140rpx;
-				background: #FFFFFF;
-				display: flex;
-				justify-content: center;
-				align-items: center;
-				
-				.btn {
-					text-align: center;
-					width: 200rpx;
-					height: 80rpx;
-					line-height: 80rpx;
-					background: #F5F5F5;
-					border-radius: 40rpx;
-					color:#007AFF;
-					font-size: 30rpx;
-					margin:0 10rpx;
-					
-					
-					&.warm {
-						background: #FF3B30;
-						color:#fff;
-					}
-					
-					&.ok {
-						color:#fff;
-						width: 526rpx;
-						height: 80rpx;
-						background: #007AFF;
-						border-radius: 40rpx;
-					}
-				}
-				
-			}
-		}
-		
-		.order-cancel {
-			width: 640rpx;
-			height: 439rpx;
-			background: #FFFFFF;
-			padding:40rpx;
-			.header {
-				text-align: center;
-				font-size: 30rpx;
-				font-weight: bold;
-				color: #333333;
-				line-height: 48rpx;
-			}
-			
-			.body {
-				margin-top:40rpx;
-				
-				view {
-					font-size: 30rpx;
-					color: #666666;
-					line-height: 48rpx;
-				}
-			}
-			
-			.footer {
-				margin-top:40rpx;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				
-				.btn {
-					text-align: center;
-					line-height: 80rpx;
-					font-size: 30rpx;
-					color:#007AFF;
-					width: 200rpx;
-					height: 80rpx;
-					background: #F5F5F5;
-					border-radius: 40rpx;
-					margin:0 10rpx;
-					
-					&.ok {
-						color:#fff;
-						background: #007AFF;
-					}
-				}
-			}
-		}
-	}
-}
+  &__tabs {
+    width: 100%;
+    text-align: center;
+    position: fixed;
+    height: 96rpx;
+    z-index: 999;
+  }
+
+  &__content {
+    padding-top: 96rpx;
+
+    .open {
+      padding-bottom: 150rpx;
+      margin: 8rpx 24rpx 0;
+
+      .form {
+        padding: 24rpx;
+        width: 702rpx;
+        background: #ffffff;
+        border-radius: 24rpx;
+
+        // /deep/ .u-input__input {
+        // 	text-align: right;
+        // }
+
+        .form-item {
+          height: 78rpx;
+          display: flex;
+          align-items: center;
+
+          .text {
+            font-size: 28rpx;
+            width: 120rpx;
+            // color: #999999;
+          }
+
+          .content {
+            flex: 1;
+            text-align: left;
+            color: #bbb;
+          }
+        }
+
+        .check-order {
+          margin-top: 20rpx;
+          width: 654rpx;
+          height: 168rpx;
+          background: #f5f5f5;
+          border: 2px solid #f5f5f5;
+          padding: 20rpx;
+          position: relative;
+
+          .close {
+            position: absolute;
+            right: 0;
+            top: 0;
+          }
+
+          .title,
+          .number,
+          .price {
+            color: #333333;
+            margin-top: 10rpx;
+            line-height: 30rpx;
+            font-size: 30rpx;
+          }
+
+          .number {
+            color: #999;
+          }
+        }
+      }
+
+      .order-text {
+        margin-top: 16rpx;
+        padding: 0 30rpx;
+        width: 702rpx;
+        height: 80rpx;
+        background: #ffffff;
+        border-radius: 24rpx;
+        display: flex;
+        align-items: center;
+
+        &__label {
+          font-size: 24rpx;
+        }
+
+        &__price {
+          font-size: 30rpx;
+          margin-left: 20rpx;
+          color: #ff2d55;
+        }
+      }
+
+      .submit {
+        text-align: center;
+        line-height: 80rpx;
+        color: #fff;
+        font-size: 30rpx;
+        width: 526rpx;
+        height: 80rpx;
+        background: #007aff;
+        box-shadow: 0rpx 8rpx 7rpx 1rpx rgba(0, 122, 255, 0.1);
+        border-radius: 40rpx;
+        position: fixed;
+        left: 50%;
+        bottom: 40rpx;
+        z-index: 999;
+        transform: translateX(-50%);
+      }
+    }
+
+    .record {
+      .nodata {
+        padding-top: 160rpx;
+        font-size: 32rpx;
+        text-align: center;
+        color: #999999;
+      }
+
+      &__list {
+        .record-item {
+          margin: 0 8rpx 10rpx;
+          .item__time {
+            padding: 20rpx 0;
+            text-align: center;
+            font-size: 24rpx;
+            color: #999999;
+          }
+
+          .item__content {
+            background: #fff;
+            border-radius: 16rpx;
+
+            .top {
+              padding: 12rpx 0;
+              border-bottom: 1px solid #eeeeee;
+              .state {
+                position: relative;
+                text-align: center;
+                color: #fff;
+                font-size: 30rpx;
+                margin: 0 auto;
+                width: 240rpx;
+                height: 56rpx;
+                line-height: 56rpx;
+                background: #007aff;
+                border-radius: 28rpx;
+
+                &.wait {
+                  background: #007aff;
+                }
+                &.refuse {
+                  background: #ff3b30;
+                }
+                &.agree {
+                  background: #34c759;
+                }
 
+                .arrow {
+                  position: absolute;
+                  top: 50%;
+                  transform: translateY(-50%);
+                  right: 18rpx;
+                }
+              }
+            }
 
+            .bottom {
+              padding: 0 32rpx;
+              .flex {
+                height: 80rpx;
+                display: flex;
+                align-items: center;
+                border-bottom: 1px solid #eeeeee;
+
+                &.noborder {
+                  border: 0;
+                }
+
+                .text {
+                  font-size: 24rpx;
+                  color: #666666;
+                }
+
+                &__auto {
+                  text-align: right;
+                  flex: 1;
+                  font-size: 30rpx;
+                  font-weight: bold;
+                  color: #666666;
+
+                  .red {
+                    color: #ff3b30;
+                  }
+
+                  .green {
+                    color: #34c759;
+                  }
+                }
+              }
+
+              .order-list {
+                padding-bottom: 30rpx;
+                .order-item {
+                  border-radius: 16rpx;
+                  padding: 14rpx;
+                  background: #f5f5f5;
+                  font-size: 30rpx;
+                  color: #333;
+                  margin-top: 16rpx;
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+
+  .modal {
+    .select-order {
+      .line {
+        width: 80rpx;
+        height: 8rpx;
+        background: #999999;
+        border-radius: 4rpx;
+        margin: 8rpx auto 0;
+      }
+
+      .title {
+        margin: 20rpx 0 15rpx;
+        text-align: center;
+        font-size: 24rpx;
+        color: #999999;
+      }
+
+      .order-item {
+        display: flex;
+        align-items: center;
+        padding: 20rpx;
+
+        &__bg {
+          width: 654rpx;
+          height: 168rpx;
+          background: #f5f5f5;
+          border: 2px solid #f5f5f5;
+          border-radius: 16rpx;
+          padding: 20rpx;
+
+          &.active {
+            background: #ebf5ff;
+            border: 2px solid #007aff;
+          }
+
+          .order-title,
+          .order-number,
+          .order-price {
+            color: #333333;
+            margin-top: 10rpx;
+            line-height: 30rpx;
+            font-size: 30rpx;
+          }
+
+          .order-number {
+            color: #999;
+          }
+        }
+      }
+
+      .confrim-btn {
+        width: 750rpx;
+        height: 98rpx;
+        background: rgba(255, 255, 255, 0.98);
+        display: flex;
+        align-items: center;
+        justify-content: center;
+
+        .okBtn {
+          text-align: center;
+          line-height: 64rpx;
+          color: #fff;
+          font-size: 30rpx;
+          width: 200rpx;
+          height: 64rpx;
+          background: linear-gradient(0deg, #015eea, #00c0fa);
+          border-radius: 32rpx;
+        }
+      }
+      .no_data {
+        text-align: center;
+        margin-top: 40rpx;
+      }
+    }
+
+    .order-detail {
+      width: 640rpx;
+      height: 1000rpx;
+      background: #ffffff;
+      display: flex;
+      flex-direction: column;
+
+      &__content {
+        flex: 1;
+
+        .content {
+          padding: 24rpx 24rpx 0;
+
+          /deep/ .u-cell {
+            padding: 10rpx;
+
+            &_title {
+              color: #999;
+            }
+
+            &__value {
+              color: #333;
+              text-align: left;
+            }
+
+            .text {
+              &.wait {
+                color: #007aff;
+              }
+
+              &.agree {
+                color: #34c759;
+              }
+
+              &.refuse {
+                color: #ff3b30;
+              }
+            }
+
+            .preview {
+              width: 240rpx;
+              height: 160rpx;
+            }
+
+            .download-btn {
+              margin: 10rpx 0 0;
+              text-align: center;
+              line-height: 56rpx;
+              color: #fff;
+              font-size: 30rpx;
+              width: 224rpx;
+              height: 56rpx;
+              background: #007aff;
+              border-radius: 16rpx;
+            }
+          }
+
+          .header {
+            font-size: 30rpx;
+            font-weight: bold;
+            color: #333333;
+            line-height: 48rpx;
+          }
+
+          .body {
+            &__item {
+              border-bottom: 1px solid #eeeeee;
+              padding-bottom: 30rpx;
+
+              &:last-child {
+                border: 0;
+              }
+
+              .title {
+                margin-top: 30rpx;
+                font-size: 24rpx;
+                color: #007aff;
+                line-height: 48rpx;
+
+                &::before {
+                  content: "";
+                  width: 4rpx;
+                  height: 24rpx;
+                  background: #007aff;
+                  border-radius: 2rpx;
+                  display: inline-block;
+                  margin-right: 10rpx;
+                }
+              }
+
+              .order-list {
+                .order-item {
+                  overflow: hidden;
+                  border-radius: 16rpx;
+                  padding: 0 14rpx 14rpx;
+                  background: #f5f5f5;
+                  font-size: 30rpx;
+                  color: #333;
+                  margin-top: 16rpx;
+
+                  .order-title,
+                  .order-number,
+                  .order-price {
+                    color: #333333;
+                    margin-top: 20rpx;
+                    line-height: 26rpx;
+                    font-size: 26rpx;
+                  }
+
+                  .order-number {
+                    color: #999;
+                  }
+                }
+              }
+
+              .order-text {
+                margin-top: 16rpx;
+                padding: 0 30rpx;
+                height: 80rpx;
+                background: #f5f5f5;
+                border-radius: 16rpx;
+                display: flex;
+                align-items: center;
+
+                &__label {
+                  font-size: 24rpx;
+                  color: #999999;
+                }
+
+                &__price {
+                  font-size: 30rpx;
+                  margin-left: 20rpx;
+                  color: #ff2d55;
+                }
+              }
+            }
+          }
+        }
+      }
+
+      &__btns {
+        border-top: 1px solid #eeeeee;
+        padding: 0 24rpx;
+        width: 100%;
+        height: 140rpx;
+        background: #ffffff;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+
+        .btn {
+          text-align: center;
+          width: 200rpx;
+          height: 80rpx;
+          line-height: 80rpx;
+          background: #f5f5f5;
+          border-radius: 40rpx;
+          color: #007aff;
+          font-size: 30rpx;
+          margin: 0 10rpx;
+
+          &.warm {
+            background: #ff3b30;
+            color: #fff;
+          }
+
+          &.ok {
+            color: #fff;
+            width: 526rpx;
+            height: 80rpx;
+            background: #007aff;
+            border-radius: 40rpx;
+          }
+        }
+      }
+    }
+
+    .order-cancel {
+      width: 640rpx;
+      height: 439rpx;
+      background: #ffffff;
+      padding: 40rpx;
+      .header {
+        text-align: center;
+        font-size: 30rpx;
+        font-weight: bold;
+        color: #333333;
+        line-height: 48rpx;
+      }
+
+      .body {
+        margin-top: 40rpx;
+
+        view {
+          font-size: 30rpx;
+          color: #666666;
+          line-height: 48rpx;
+        }
+      }
+
+      .footer {
+        margin-top: 40rpx;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+
+        .btn {
+          text-align: center;
+          line-height: 80rpx;
+          font-size: 30rpx;
+          color: #007aff;
+          width: 200rpx;
+          height: 80rpx;
+          background: #f5f5f5;
+          border-radius: 40rpx;
+          margin: 0 10rpx;
+
+          &.ok {
+            color: #fff;
+            background: #007aff;
+          }
+        }
+      }
+    }
+  }
+}
 </style>

+ 1 - 1
pages2/learn/my_learn.vue

@@ -76,7 +76,7 @@
               >
                 <view class="label">审核提示:</view>
                 <view>
-                  机构已审核通过,需等待注册中心复审后即可获得继续教育学时。审核时间约15个工作日,届时请前往官网申请证书延期。
+                  机构已审核通过,需等待信息中心复审后即可获得继续教育学时。审核时间约15个工作日,届时请前往官网申请证书延期。
                   <view class="copySty" @tap="copyText">复制官网链接</view>
                 </view>
               </template>

+ 2 - 1
pages2/msg/detail.vue

@@ -122,9 +122,10 @@ export default {
 							console.log(currentTime < item.serviceStartTime || currentTime > item.serviceEndTime)
 							//内部系统
 							if (item.interfacePushId > 0 && item.officialStatus != 1) {
+								// ,有疑问请联系020-87085982
 								uni.showModal({
 									showCancel: false,
-									content: '机构正在为您报名中,请耐心等待,有疑问请联系020-87085982!'
+									content: '机构正在为您报名中,请耐心等待!'
 								});
 								return;
 							}

+ 35 - 6
pages2/order/confirm_list.vue

@@ -260,8 +260,8 @@ export default {
     if (option.fromCart) {
       this.fromCart = option.fromCart;
     }
-
-    this.getDetail();
+    this.options = option;
+    this.disCode ? this.getFxDetail() : this.getDetail();
   },
   onShow() {
     /* if(this.current === 2 && this.$method.isLogin()){
@@ -452,14 +452,24 @@ export default {
       if (this.isBK == "1") {
         this.$navTo.togo("/pages2/order/confirm_pay", {
           isBK: "1",
-          fromCart: this.fromCart,
+          ...this.addParam(),
         });
       } else {
         this.$navTo.togo("/pages2/order/confirm_pay", {
-          fromCart: this.fromCart,
+          ...this.addParam(),
         });
       }
     },
+    addParam() {
+      let data = { fromCart: this.fromCart };
+      if (this.disCode) {
+        data.distributionCode = this.disCode;
+      }
+      if (this.options.linkCode) {
+        data.linkCode = this.options.linkCode;
+      }
+      return data;
+    },
     getDetail() {
       let self = this;
       this.$api.commonGoodsDetail(this.id).then((res) => {
@@ -469,6 +479,20 @@ export default {
         }
       });
     },
+    getFxDetail() {
+      let self = this;
+      this.$api
+        .fxGoodsDetail({
+          goodsId: this.id,
+          disCode: this.disCode,
+        })
+        .then((res) => {
+          if (res.data.code == 200) {
+            self.detail = res.data.data;
+            self.getExamine(self.detail.projectId);
+          }
+        });
+    },
     bindChangeE(e) {
       console.log(e.detail.value);
       this.examIndex = e.detail.value[0];
@@ -501,10 +525,15 @@ export default {
     },
   },
   onReachBottom() {},
-  computed: { ...mapGetters(["userInfo"]) },
+  computed: {
+    ...mapGetters(["userInfo"]),
+    disCode() {
+      return this.options.distributionCode;
+    },
+  },
 };
 </script>
-<style >
+<style>
 page {
   background-color: #fff;
 }

+ 7 - 1
pages2/order/confirm_pay.vue

@@ -140,12 +140,14 @@ export default {
       hasPaying: false,
       showConfirmButton: false,
       confirmText: "",
+      options: {},
     };
   },
   onPullDownRefresh() {},
   onLoad(option) {
     this.fromCart = option.fromCart;
     this.isBK = option.isBK;
+    this.options = option;
   },
   onShow() {
     // #ifdef H5
@@ -220,15 +222,19 @@ export default {
             item.goodsInputData = goodsInputData;
           }
         }
+        if (this.options.distributionCode) {
+          item.distributionLinkCode = this.options.linkCode;
+          item.distributionCode = this.options.distributionCode;
+        }
       }
       let data = { goodsList: list };
       // 邀请码
       if (this.sac) {
         data["shareActivityCode"] = this.sac;
       }
+
       // #ifdef MP-WEIXIN
       this.$api.placeSmallOrder(data).then((res) => {
-        console.log(res, "res");
         this.orderResult(res);
       });
       // #endif

+ 282 - 262
pages2/order/confirm_success.vue

@@ -1,272 +1,292 @@
 <template>
-	<view>
-		<nav-bar title="支付成功"></nav-bar>
-		<view>
-			<view style="padding: 8rpx;">
-				<view class="box1">
-					<view class="box1_t1">
-						<u-icon name="checkmark-circle" color="#34C759" size="32"></u-icon><text style="margin-left: 8rpx;">您的订单已支付成功!</text>
-					</view>
-					
-					<view class="tip">*您可在“我的>我的订单”中查询</view>
-					<view style="display: flex;align-items: center;justify-content: center;" v-if="isBK === '1'">
-						<view class="btn1" @click="backMyStudent">
-							返回我的网课
-						</view>
-						<view class="btn2" @click="gots">
-							继续本次的考试预约
-						</view>
-					</view>
-					<view style="display: flex;align-items: center;justify-content: center;" v-else>
-						<view class="btn1" @click="goCourse">
-							继续选课
-						</view>
-						<view class="btn2" @click="goOrder">
-							立即学习
-						</view>
-					</view>
-				</view>
-				
-				<view class="box2">
-					<view class="title2">订单信息</view>
-					<u-line color="#D6D6DB" />
-					<view style="padding:10rpx 30rpx;" v-for="(item,index) in shoppingCartList" :key="index">
-						<view class="list_item">
-							<view class="txt_left">商品名称</view>
-							<view class="txt_right">{{item.goodsName}}</view>
-						</view>
-						<view class="list_item">
-							<view class="txt_left">应付金额</view>
-							<view class="txt_right_price">¥ {{item.standPrice}}</view>
-						</view>
-						<view class="list_item">
-							<view class="txt_left">订单编号</view>
-							<view class="txt_right_sn">{{sn}}</view>
-						</view>
-					</view>
-					<u-line color="#D6D6DB" />
-				</view>
-			</view>
-		</view>
-	</view>
-	
+  <view>
+    <nav-bar title="支付成功"></nav-bar>
+    <view>
+      <view>
+        <view class="box1">
+          <view class="box1_t1">
+            <!-- <u-icon name="checkmark-circle" color="#34C759" size="32"></u-icon
+            > -->
+            <image src="../static/icon-succecc.png" mode="" />
+            <text>订单支付成功</text>
+          </view>
+
+          <view class="tip">您可在“我的>我的订单”中查询</view>
+          <view class="fl_c" v-if="isBK === '1'">
+            <view class="btn1" @click="backMyStudent"> 返回我的网课 </view>
+            <view class="btn2" @click="gots"> 继续本次的考试预约 </view>
+          </view>
+          <view class="fl_c" v-else>
+            <view class="btn1" @click="goCourse"> 继续选课 </view>
+            <view class="btn2" @click="goOrder"> 立即学习 </view>
+          </view>
+        </view>
+        <!-- #ifdef H5 -->
+        <view class="collect">
+          <view class="fl" v-if="config.gzhImage">
+            <image :src="$method.splitImgHost(config.gzhImage)" mode="" />
+            <text>长按二维码,关注公众号 <br />方便下次进入学习哦 </text>
+          </view>
+          <view class="fl" v-else>
+            <image src="../static/icon-collect.png" mode="" />
+            <text>收藏链接,方便下次进入学习哦</text>
+          </view>
+        </view>
+        <!-- #endif -->
+        <view class="box2">
+          <view class="title2">订单信息</view>
+          <view
+            style="padding: 10rpx 0"
+            v-for="(item, index) in shoppingCartList"
+            :key="index"
+          >
+            <view class="list_item">
+              <view class="txt_left">商品名称</view>
+              <view class="txt_right u-line-1">{{ item.goodsName }}</view>
+            </view>
+            <view class="list_item">
+              <view class="txt_left">应付金额</view>
+              <view class="txt_right_price">¥ {{ item.standPrice }}</view>
+            </view>
+            <view class="list_item">
+              <view class="txt_left">订单编号</view>
+              <view class="txt_right_sn">{{ sn }}</view>
+            </view>
+          </view>
+        </view>
+      </view>
+    </view>
+  </view>
 </template>
 
 <script>
-
-import { mapGetters } from 'vuex';
+import { mapGetters } from "vuex";
 export default {
-	components: {
-		
-	},
-	data() {
-		return {
-			list:[
-				{
-					name: '网课'
-				},
-				{
-					name: '题库通'
-				}
-			],
-			array:['全部','建设工程施工管理','机电全科','机电工程管理与实','机电全科','全科'],
-			current:0,
-			menuIndex:0,
-			sn:'',
-			isBK:'',//1补考商品
-			getDatas:{}
-		};
-	},
-	onPullDownRefresh(){
-	},
-	onLoad(option) {
-		this.sn = option.sn
-		this.isBK = option.isBk
-		if(option.isBk === '1'){
-			this.getDatas = this.$store.getters.getBackPageApplyData
-			console.log(this.isBK === '1',this.getDatas)
-		}
-	},
-	onShow() {
-		/* if(this.current === 2 && this.$method.isLogin()){
+  components: {},
+  data() {
+    return {
+      list: [
+        {
+          name: "网课",
+        },
+        {
+          name: "题库通",
+        },
+      ],
+      array: [
+        "全部",
+        "建设工程施工管理",
+        "机电全科",
+        "机电工程管理与实",
+        "机电全科",
+        "全科",
+      ],
+      current: 0,
+      menuIndex: 0,
+      sn: "",
+      isBK: "", //1补考商品
+      getDatas: {},
+    };
+  },
+  onPullDownRefresh() {},
+  onLoad(option) {
+    this.sn = option.sn;
+    this.isBK = option.isBk;
+    if (option.isBk === "1") {
+      this.getDatas = this.$store.getters.getBackPageApplyData;
+    }
+  },
+  onShow() {
+    console.log(this.config.gzhImage);
+    /* if(this.current === 2 && this.$method.isLogin()){
 			this.$refs.refMy.init();
 		} */
-	},
-	methods: {
-		// 返回我的网课
-		backMyStudent(){
-			uni.redirectTo({
-			    url: '/pages2/wd/class'
-			});
-		},
-		// 继续本次的考试预约
-		gots(){
-			uni.redirectTo({
-			    url: `/pages2/appointment/index?goodsId=${this.getDatas.goodsId}&gradeId=${this.getDatas.gradeId}&orderGoodsId=${this.getDatas.orderGoodsId}&applyId=${this.getDatas.applyId}`
-			});
-		},
-		goCourse(){
-			uni.switchTab({
-			    url: '/pages/course/index'
-			});
-		},
-		goOrder(){
-			// uni.redirectTo({
-			//     url: '/pages2/order/index?current=1'
-			// });
-			uni.switchTab({
-				url:'/pages/learn/index'
-			})
-		},
-		radioChange(e) {
-			// console.log(e);
-		},
-		// 选中任一radio时,由radio-group触发
-		radioGroupChange(e) {
-			// console.log(e);
-		},
-		cMenu(index){
-			this.menuIndex = index;
-		},
-		change(index){
-			this.current = index;
-		}
-	},
-	onReachBottom() {},
-	computed: { ...mapGetters(['userInfo','shoppingCartList']) }
+  },
+  methods: {
+    // 返回我的网课
+    backMyStudent() {
+      uni.redirectTo({
+        url: "/pages2/wd/class",
+      });
+    },
+    // 继续本次的考试预约
+    gots() {
+      uni.redirectTo({
+        url: `/pages2/appointment/index?goodsId=${this.getDatas.goodsId}&gradeId=${this.getDatas.gradeId}&orderGoodsId=${this.getDatas.orderGoodsId}&applyId=${this.getDatas.applyId}`,
+      });
+    },
+    goCourse() {
+      uni.switchTab({
+        url: "/pages/course/index",
+      });
+    },
+    goOrder() {
+      // uni.redirectTo({
+      //     url: '/pages2/order/index?current=1'
+      // });
+      uni.switchTab({
+        url: "/pages/learn/index",
+      });
+    },
+    radioChange(e) {
+      // console.log(e);
+    },
+    // 选中任一radio时,由radio-group触发
+    radioGroupChange(e) {
+      // console.log(e);
+    },
+    cMenu(index) {
+      this.menuIndex = index;
+    },
+    change(index) {
+      this.current = index;
+    },
+  },
+  onReachBottom() {},
+  computed: { ...mapGetters(["userInfo", "shoppingCartList", "config"]) },
 };
 </script>
-<style >
-	::-webkit-scrollbar{
-	 width: 0;
-	 height: 0;
-	 color: transparent
-	}
-	page{
-		background-color: #EAEEF1;
-	}
+<style>
+::-webkit-scrollbar {
+  width: 0;
+  height: 0;
+  color: transparent;
+}
+</style>
+<style lang="scss" scoped>
+page {
+  background-color: #ffffff;
+}
+.btn2 {
+  padding: 0rpx 30rpx;
+  height: 76rpx;
+  background: #007aff;
+  border-radius: 100rpx;
+  font-size: 28rpx;
+  color: #ffffff;
+  text-align: center;
+  line-height: 76rpx;
+}
+.btn1 {
+  padding: 0 30rpx;
+  height: 76rpx;
+  border-radius: 100rpx;
+  border: 1px solid #828282;
+  box-sizing: border-box;
+  font-size: 28rpx;
+  color: #222222;
+  line-height: 76rpx;
+  margin-right: 48rpx;
+}
+.pay_icon {
+  width: 64rpx;
+  height: 64rpx;
+  margin-right: 10rpx;
+}
+.box3 {
+  width: 100%;
+  background: #ffffff;
+  border-radius: 16rpx;
+  margin-top: 30rpx;
+}
+.tip {
+  text-align: center;
+  font-size: 28rpx;
+  color: #999999;
+  height: 40rpx;
+  line-height: 40rpx;
+  color: #7c7c7c;
+  margin: 24rpx 0 48rpx;
+}
+.collect {
+  width: 89%;
+  background: #e7f1ff;
+  padding: 30rpx 40rpx;
+  margin-left: 34rpx;
+  border-radius: 24rpx;
+  &:nth-of-type(2) {
+    image {
+      width: 112rpx;
+      height: 112rpx;
+    }
+  }
+  text {
+    margin-left: 32rpx;
+    color: #222222;
+    font-size: 30rpx;
+    line-height: 44rpx;
+  }
+}
+.txt_right_sn {
+  color: #666666;
+}
+.txt_right_price {
+  font-weight: bold;
+  color: #eb5757;
+}
+.txt_left {
+  color: #444444;
+}
+.txt_right {
+  width: 70%;
+  text-align: right;
+  color: #666666;
+}
+.list_item {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-top: 40rpx;
+}
+.title2 {
+  font-weight: bold;
+  color: #222222;
+}
+.box2 {
+  margin: 0 40rpx;
+  margin-top: 64rpx;
+  font-size: 32rpx;
+}
+.box1_t2 {
+  font-size: 24rpx;
+  color: #999999;
+  text-align: center;
+}
+.box1_t1 {
+  font-size: 30rpx;
+  font-weight: bold;
+  color: #333333;
+  height: 70rpx;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  image {
+    width: 72rpx;
+    height: 72rpx;
+  }
+}
+.box1 {
+  width: 100%;
+  background: #ffffff;
+  border-radius: 16rpx;
+  padding: 56rpx 0 80rpx;
+  text {
+    margin-left: 8rpx;
+    font-weight: bold;
+    color: #222222;
+    font-size: 36rpx;
+  }
+}
+.bottomBtn {
+  position: fixed;
+  bottom: 0;
+  width: 100%;
+  height: 98rpx;
+  background: linear-gradient(0deg, #015eea, #00c0fa);
+  color: #ffffff;
+  text-align: center;
+  line-height: 98rpx;
+  font-weight: bold;
+  font-size: 30rpx;
+}
 </style>
-<style scoped>
-	.btn2{
-		/* width: 160rpx;		 */
-		padding: 0rpx 20rpx;
-		height: 56rpx;
-		background: #007AFF;
-		border-radius: 16rpx;
-		font-size: 30rpx;
-		color: #FFFFFF;
-		margin: 10rpx;
-		text-align: center;
-		line-height: 56rpx;
-	}
-	.btn1{
-		padding: 0rpx 20rpx;
-		/* width: 160rpx; */
-		height: 56rpx;
-		background: #F5F5F5;
-		border-radius: 16rpx;
-		font-size: 30rpx;
-		color: #007AFF;
-		margin: 10rpx;
-		text-align: center;
-		line-height: 56rpx;
-	}
-	.txt_left_pay{
-		display: flex;
-		align-items: center;
-		height: 64rpx;
-		font-size: 24rpx;
-		color: #666666;
-	}
-	.pay_icon{
-		width: 64rpx;
-		height: 64rpx;
-		margin-right: 10rpx;
-	}
-	.box3{
-		width: 100%;
-		background: #FFFFFF;
-		border-radius: 16rpx;
-		margin-top: 30rpx;
-	}
-	.tip{
-		text-align: center;
-		font-size: 24rpx;
-		color: #999999;
-		height: 40rpx;
-		line-height: 40rpx;
-	}
-	.txt_right_sn{
-		font-size: 30rpx;
-		font-weight: bold;
-		color: #666666;
-	}
-	.txt_right_price{
-		font-size: 30rpx;
-		font-weight: bold;
-		color: #FF2D55;
-	}
-	.txt_left{
-		font-size: 24rpx;
-		color: #666666;
-	}
-	.txt_right{
-		text-align: right;
-		color: #333333;
-		font-weight: bold;
-		width: 75%;
-	}
-	.list_item{
-		display: flex;
-		justify-content: space-between;
-		height: 80rpx;
-		align-items: center;
-	}
-	.title2{
-		font-size: 30rpx;
-		font-weight: bold;
-		color: #333333;
-		height: 80rpx;
-		line-height: 80rpx;
-		margin-left: 30rpx;
-	}
-	.box2{
-		width: 100%;
-		background: #FFFFFF;
-		border-radius: 16rpx;
-		margin-top: 16rpx;
-	}
-	.box1_t2{
-		font-size: 24rpx;
-		color: #999999;
-		text-align: center;
-	}
-	.box1_t1{
-		font-size: 30rpx;
-		font-weight: bold;
-		color: #333333;
-		height: 70rpx;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-
-	}
-	.box1{
-		width: 100%;
-		background: #FFFFFF;
-		border-radius: 16rpx;
-		padding: 15rpx;
-	}
-	.bottomBtn{
-		position: fixed;
-		bottom: 0;
-		width: 100%;
-		height: 98rpx;
-		background: linear-gradient(0deg, #015EEA, #00C0FA);
-		color: #FFFFFF;
-		text-align: center;
-		line-height: 98rpx;
-		font-weight: bold;
-		font-size: 30rpx;
-	}
-</style>

BIN
pages2/static/icon-collect.png


BIN
pages2/static/icon-succecc.png


+ 1 - 0
pages2/subject/wrongTypeBank.vue

@@ -985,6 +985,7 @@ export default {
             .then((res) => {});
         }
       }
+      
     },
 
     /**

+ 16 - 11
pages2/wd/class.vue

@@ -76,10 +76,11 @@
                     $method.timestampToTime(item.classEndTime, true, true)
                   }}</view
                 >
-                <view class="state"
+                <view class="state">班级状态:已过期</view>
+                <!-- <view class="state"
                   >班级状态:已过期,有疑问请联系
                   <text @click="call">020-87085982</text></view
-                >
+                > -->
               </view>
             </view>
           </template>
@@ -106,10 +107,11 @@
                     $method.timestampToTime(item.classEndTime, true, true)
                   }}</view
                 >
-                <view class="state"
+                <view class="state">班级状态:未到学习时间</view>
+                <!-- <view class="state"
                   >班级状态:未到学习时间,有疑问请联系
                   <text @click="call">020-87085982</text></view
-                >
+                > -->
               </view>
             </view>
           </template>
@@ -217,7 +219,7 @@
                     <text v-else-if="item.periodStatus == 3">学时审核中</text>
                     <text v-else-if="item.periodStatus == 1">
                       <text v-if="item.periodPlush > 0"
-                        >学时已上报注册中心</text
+                        >学时已上报信息中心</text
                       >
                       <text v-else>机构审核:学时审核通过</text>
                     </text>
@@ -510,8 +512,8 @@
     >
       <view class="slot-content">
         <view class="content">
-          为避免个人信息不正确导致您的学习时长无效,请认真核对以下信息是否正确,如信息有误请取消当前操作,立刻联系020-38946666
-
+          <!-- ,立刻联系020-38946666 -->
+          为避免个人信息不正确导致您的学习时长无效,请认真核对以下信息是否正确,如信息有误请取消当前操作。
           <view class="msg-list">
             <view class="item">
               <text class="item__left">姓名:</text>
@@ -653,11 +655,12 @@ export default {
               if (res.data.data.pushInfo) {
                 resolve(true);
               } else {
+                // ,请联系020-87085982
                 uni.showModal({
                   showCancel: false,
                   title: "提示",
                   content:
-                    "开通信息推送不成功,无法进入学习,请联系020-87085982!",
+                    "开通信息推送不成功,无法进入学习!",
                 });
                 resolve(false);
               }
@@ -686,11 +689,12 @@ export default {
                   title: "提交成功",
                 });
               } else {
+                // ,请联系020-87085982
                 uni.showModal({
                   showCancel: false,
                   title: "提示",
                   content:
-                    "开通信息推送不成功,无法进入学习,请联系020-87085982!",
+                    "开通信息推送不成功,无法进入学习!",
                 });
               }
               this.showUserConfirmInfo = false;
@@ -791,10 +795,11 @@ export default {
           // })
           // return;
         } else {
+          // ,请联系020-87085982
           uni.showModal({
             showCancel: false,
             content:
-              "您的学习账号未开通,请稍后再尝试,有疑问,请联系020-87085982!",
+              "您的学习账号未开通,请稍后再尝试,有疑问!",
           });
           return;
         }
@@ -1245,4 +1250,4 @@ page {
     }
   }
 }
-</style>
+</style>

+ 85 - 21
pages3/course/detail.vue

@@ -277,7 +277,7 @@
             <button type="default" open-type="share" class="bt_share"></button>
             <view class="share_w">分享</view>
           </view>
-          <view class="icon_item">
+          <view class="icon_item" v-if="!disCode">
             <image
               src="/static/index/shopcar.png"
               class="shopcar"
@@ -287,7 +287,7 @@
           </view>
         </view>
         <view style="display: flex; color: #ffffff; align-items: center">
-          <view class="btn1" @click="addCart()">加购物车</view>
+          <view class="btn1" v-if="!disCode" @click="addCart()">加购物车</view>
           <view class="btn2" @click="buy()">立即购买 </view>
         </view>
       </template>
@@ -482,6 +482,9 @@ export default {
       }
       return this.specAttrPriceList[0].specialGoods;
     },
+    disCode() {
+      return this.options.distributionCode;
+    },
   },
   onLoad(option) {
     if (option.scene) {
@@ -514,7 +517,7 @@ export default {
         }
       }
     }
-    this.getDetail();
+    this.disCode ? this.getFxDetail() : this.getDetail();
     this.goodsCourseList();
     this.appCommonGoodsCourseModuleFreeExamList();
     // #ifdef MP-WEIXIN
@@ -720,16 +723,20 @@ export default {
       if (!Array.isArray(goodsIds)) {
         goodsIds = [goodsIds];
       }
-      this.$api.addCart({ goodsIds: goodsIds }).then((res) => {
-        if (res.data.code == 200) {
-          uni.setStorageSync("updateCart", 1); //提醒刷新购物车
-          uni.showToast({
-            title: "添加成功",
-          });
-        } else {
-          this.$u.toast(res.data.msg);
-        }
-      });
+      this.$api
+        .addCart({
+          goodsIds: goodsIds,
+        })
+        .then((res) => {
+          if (res.data.code == 200) {
+            uni.setStorageSync("updateCart", 1); //提醒刷新购物车
+            uni.showToast({
+              title: "添加成功",
+            });
+          } else {
+            this.$u.toast(res.data.msg);
+          }
+        });
     },
     goodsCourseList() {
       // url: '/app/common/goods/course/list/'+ data,
@@ -900,11 +907,46 @@ export default {
         }
       });
     },
+    getFxDetail() {
+      let self = this;
+      let sectionIdList = [];
+      this.$api
+        .fxGoodsDetail({
+          goodsId: this.id,
+          disCode: this.disCode,
+        })
+        .then((res) => {
+          if (res.data.code == 200) {
+            if (res.data.data) {
+              if (res.data.data.mobileDetailHtml) {
+                res.data.data.mobileDetailHtml =
+                  res.data.data.mobileDetailHtml.replace(
+                    /<img/gi,
+                    '<img style="max-width:100%;"'
+                  );
+              }
+
+              self.detail = res.data.data;
+              this.courseBusiness();
+              if (self.detail.goodsAuditionConfig) {
+                self.listenConfigList = JSON.parse(
+                  self.detail.goodsAuditionConfig
+                );
+                for (var itemChild of self.listenConfigList) {
+                  sectionIdList.push(itemChild.sectionId); //存储试听节ID
+                }
+                self.$store.commit("setGoodsAuditionConfigIdList", {
+                  goodsAuditionConfigIdList: sectionIdList,
+                });
+              }
+            }
+          }
+        });
+    },
     // 获取课程详情
     getDetail() {
       let self = this;
       let sectionIdList = [];
-      // /app/common/goods/+data
       this.$api.commonGoodsDetail(this.id).then((res) => {
         if (res.data.code == 200) {
           if (res.data.data) {
@@ -933,6 +975,20 @@ export default {
         }
       });
     },
+    toConfirmList(id) {
+      uni.navigateTo({
+        url: "/pages2/order/confirm_list?id=" + id + this.addParam(),
+      });
+    },
+    addParam(str = "") {
+      if (this.disCode) {
+        str += "&distributionCode=" + this.disCode;
+      }
+      if (this.options.linkCode) {
+        str += "&linkCode=" + this.options.linkCode;
+      }
+      return str;
+    },
     buy() {
       if (this.$method.isGoLogin()) {
         return;
@@ -943,7 +999,7 @@ export default {
         this.getSpecDetail();
         return;
       }
-      this.$navTo.togo("/pages2/order/confirm_list?id=" + this.id);
+      this.toConfirmList(this.id);
     },
     drawBuy() {
       if (!this.$method.isLogin()) {
@@ -992,15 +1048,23 @@ export default {
       this.addShopCart(this.id);
     },
     getSpecDetail() {
-      // || 35
       this.checkedAttrs = [];
+      let data = {};
+      let url = `/app/common/spec/${this.detail.specTemplateId}`;
+      if (this.disCode) {
+        url = "/app/common/distribution/spec";
+        data = {
+          disCode: this.disCode,
+          specTemplateId: this.detail.specTemplateId,
+        };
+      }
       this.$http({
-        url: `/app/common/spec/${this.detail.specTemplateId}`,
+        url,
         method: "get",
         noToken: true,
+        data,
       }).then((res) => {
         let data = res.data.data;
-        console.log(data, "data");
         if (data) {
           this.toggleSkuShow = true;
           this.specAttrPriceList = data.specAttrPriceList;
@@ -1010,7 +1074,7 @@ export default {
             // 加入购物车
             this.addShopCart(this.id);
           } else {
-            this.$navTo.togo("/pages2/order/confirm_list?id=" + this.id);
+            this.toConfirmList(this.id);
           }
           this.closePop();
         }
@@ -1239,7 +1303,7 @@ export default {
           this.addShopCart(goodsIds);
         } else {
           if (this.isSingleChoice) {
-            this.$navTo.togo("/pages2/order/confirm_list?id=" + goodsIds);
+            this.toConfirmList(goodsIds);
           } else {
             let data = [];
             goodsIds.forEach((id) => {
@@ -1248,7 +1312,7 @@ export default {
             this.$store.commit("setShoppingCartList", {
               shoppingCartList: data,
             });
-            this.$navTo.togo("/pages2/order/confirm_pay");
+            this.$navTo.togo("/pages2/order/confirm_pay" + this.addParam("?"));
           }
         }
         this.closePop();

+ 101 - 177
pages3/polyv/detail.vue

@@ -244,31 +244,10 @@
         </view>
         <!--讲义 -->
         <view v-show="current == 1">
-          <template v-if="courseHandoutsData.length">
-            <view
-              class="lecture-box"
-              v-for="(item, index) in courseHandoutsData"
-              :key="index"
-            >
-              <view class="title">
-                {{ item.urlName }}
-              </view>
-              <view class="btn" @click="openDocument(item)">
-                <image
-                  v-if="!downLoading"
-                  src="/pages3/static/imgs/downLoad.png"
-                  style="width: 40rpx; height: 40rpx"
-                ></image>
-                <image
-                  v-else
-                  src="/pages3/static/imgs/downLoading.png"
-                  class="loading_down"
-                  style="width: 40rpx; height: 40rpx"
-                ></image>
-              </view>
-            </view>
-          </template>
-          <view v-else style="text-align: center">暂无讲义</view>
+          <handouts-box
+            :handoutsId="goodsData.handoutsId"
+            v-if="goodsData.handoutsId"
+          ></handouts-box>
         </view>
         <!--笔记 -->
         <view v-show="current == 2">
@@ -792,6 +771,7 @@ import plv from "../static/polyv-sdk/index";
 import courseModule from "@/components/course/courseModule.vue";
 import courseChapter from "@/components/course/courseChapter.vue";
 import courseSection from "@/components/course/courseSection.vue";
+import handoutsBox from "@/components/course/handoutsBox.vue";
 import PopupPhoto from "@/components/popup/index.vue";
 import { mapGetters, mapMutations } from "vuex";
 var polyvPlayerContext = null;
@@ -801,6 +781,7 @@ export default {
     courseChapter,
     courseSection,
     PopupPhoto,
+    handoutsBox,
   },
   data() {
     return {
@@ -827,7 +808,6 @@ export default {
         isAutoChange: false,
         forceVideo: false,
       },
-      courseHandoutsData: [],
       liveDetail: {},
       showSet: false,
       startStatus: false,
@@ -894,7 +874,6 @@ export default {
       clearTimer: null,
       livingItem: "",
       option: null,
-      downLoading: false, //下载讲义加载
       muluStyle: false, //显示和隐藏目录样式
       bottomHeight: 0,
       toggleCourseShow: false, // 切换课程弹窗
@@ -924,6 +903,7 @@ export default {
       pauseTime: 0,
       pauseTimer: null,
       barTimer: null,
+      isReach: false,
     };
   },
   computed: {
@@ -1185,7 +1165,9 @@ export default {
       if (this.playSecIsLearn && this.erJianErZao) {
         this.pauseTime = Date.now();
         this.pauseTimer = setInterval(() => {
+          console.log("暂停时间", Date.now() - this.pauseTime);
           if (Date.now() - this.pauseTime > 15 * 60 * 1000) {
+            // 15 * 60 * 1000
             let text = this.photoPopup ? "拍照停留" : "暂停";
             this.photoPopup = false;
             uni.showModal({
@@ -1246,7 +1228,6 @@ export default {
           this.studyRecordQueryLiveLast();
         }
       });
-      this.current = uni.getStorageSync("current") || 0;
     },
     // 原来的mouted内容
     originMounted() {
@@ -1257,6 +1238,7 @@ export default {
           oldSectionId
         );
         this.studyTimer && clearInterval(this.studyTimer); // 清除定时器
+        this.clearPauseTimer();
         this.hasStart = false;
         this.photoConfig = false;
         this.photoIndex = 0;
@@ -1291,19 +1273,11 @@ export default {
         this.$store.commit("setPlaySectionId", {
           playSectionId: item.sectionId || item.menuId,
         });
-        console.log(
-          "清除直播节点胡:",
-          this.moduleId,
-          this.chapterId,
-          this.playSectionId,
-          this.hasStart
-        );
         //获取拍照历史
         this.getPhotoLastRecord();
         this.playVideo(item);
       });
       uni.$on("levelId", (item) => {
-        console.log("点击节获取的各层级ID", item);
         let arr = item.split("-");
         //点击节获取的各层级ID
         this.moduleId = arr[0];
@@ -1331,6 +1305,7 @@ export default {
     },
     clearPauseTimer() {
       if (this.pauseTimer) {
+        this.pauseTime = 0;
         clearInterval(this.pauseTimer);
         this.pauseTimer = null;
       }
@@ -1373,7 +1348,6 @@ export default {
             uni.hideLoading();
           });
       }
-      uni.removeStorageSync("current");
     },
     changeCourses() {
       this.toggleCourseShow = true;
@@ -2123,19 +2097,6 @@ export default {
     itemWidth() {
       return 100 / this.list.length + "%";
     },
-    /**
-     * 获取讲义权限
-     */
-    courseHandouts() {
-      if (!this.goodsData.handoutsId) {
-        return;
-      }
-      this.$api
-        .getHandoutList({ handoutsId: this.goodsData.handoutsId })
-        .then((res) => {
-          this.courseHandoutsData = res.data.rows;
-        });
-    },
     findMenuNextSection(index) {
       for (let i = index + 1; i < this.reMenuList.length; i++) {
         let item = this.reMenuList[i];
@@ -2814,36 +2775,48 @@ export default {
       if (status > 0) {
         data.status = status;
       }
-      // console.log("提交接口:", data,'sectionId:', sectionId,'chapterId:', self.chapterId,'moduleId:', self.moduleId, 'courseId:', this.courseId);
-      this.$api
-        .studyRecord(data)
-        .then((res) => {
-          if (res.data.code == 200) {
-            if (status > 0) {
-              this.studyRecordMenuAllList();
-              let moduleId = this.moduleId || 0;
-              let chapterId = this.chapterId || 0;
-              let playNextIdisRebuild = `moduleId${moduleId}chapterId${chapterId}sectionId${sectionId}isRebuild`;
-              let playNextId = `moduleId${moduleId}chapterId${chapterId}sectionId${sectionId}`; //拼接对应章节唯一id
+      console.log(data, "记录参数");
+      return new Promise((resolve, reject) => {
+        this.$api
+          .studyRecord(data)
+          .then((res) => {
+            console.log(res, "记录返回");
+            let { code } = res.data;
+            if (code == 200) {
+              if (status > 0) {
+                this.studyRecordMenuAllList();
+                let moduleId = this.moduleId || 0;
+                let chapterId = this.chapterId || 0;
+                let playNextIdisRebuild = `moduleId${moduleId}chapterId${chapterId}sectionId${sectionId}isRebuild`;
+                let playNextId = `moduleId${moduleId}chapterId${chapterId}sectionId${sectionId}`; //拼接对应章节唯一id
 
-              uni.$emit("playNext" + playNextIdisRebuild, {
-                fromRebuild: this.isRebuild,
-              }); //通知播放结束,不来自重修目录的点击不用弹窗学习下一节
-              uni.$emit("playNext" + playNextId); //通知播放结束
+                uni.$emit("playNext" + playNextIdisRebuild, {
+                  fromRebuild: this.isRebuild,
+                }); //通知播放结束,不来自重修目录的点击不用弹窗学习下一节
+                uni.$emit("playNext" + playNextId); //通知播放结束
+              }
+              self.ossAvatarUrl = "";
+            } else {
+              this.uploadLock = false;
+              uni.showToast({
+                icon: "none",
+                title: res.data.msg,
+                duration: 2000,
+              });
+              if (this.erJianErZao && code == 559) {
+                this.isReach = true;
+                this.openPhoto();
+              }
+              if (code == 559 || code == 588) {
+                reject("中断执行");
+              }
             }
-
-            self.ossAvatarUrl = "";
-          } else {
-            this.uploadLock = false;
-            uni.showToast({
-              icon: "none",
-              title: res.data.msg,
-            });
-          }
-        })
-        .catch((err) => {
-          this.studyRecordMenuAllList();
-        });
+            resolve();
+          })
+          .catch((err) => {
+            this.studyRecordMenuAllList();
+          });
+      });
     },
     uploadFile(options, int) {
       var self = this;
@@ -3077,10 +3050,9 @@ export default {
         },
       }).then((res) => {});
     },
-    onStateChange(newstate, oldstate) {
+    async onStateChange(newstate, oldstate) {
       polyvPlayerContext = this.selectComponent("#playerVideo");
       if (newstate.detail.newstate == "playing") {
-        this.pauseTime = 0;
         if (this.needSeek) {
           // var polyvPlayerContext = this.selectComponent("#playerVideo");
           if (this.recordObj.videoCurrentTime) {
@@ -3122,13 +3094,14 @@ export default {
           title: "播放完毕",
         });
         this.hasStart = false;
-        this.postStudyRecord(1);
+        await this.postStudyRecord(1);
         this.nextSection();
         // uni.$emit('playNext') //播放重修下一节
       }
     },
     //播放下一节
     nextSection() {
+      console.log("播放下一节");
       if (!this.menuAllList.length) {
         return;
       }
@@ -3339,10 +3312,19 @@ export default {
       if (compareFaceData >= 80) {
         const waitYS = await this.imageInfos();
         this.postCoursePhotoRecord()
-          .then((res) => {
+          .then(async (res) => {
             this.photoHistoryList.push(this.photoIndex);
             // console.log('拍照确定提交', this.photoHistoryList);
             this.postStudyRecord(); //提交记录
+            if (this.erJianErZao && this.isReach) {
+              console.log("1校验");
+              await this.postStudyRecord(1);
+              this.photoPopup = false;
+              this.uploadLock = false;
+              this.enableAutoRotation = true;
+              this.nextSection();
+              return;
+            }
             //恢复播放
             // #ifdef MP-WEIXIN
             uni.setKeepScreenOn({
@@ -3388,12 +3370,16 @@ export default {
       this.isTaking = true;
       // #ifdef H5
       this.faceUrl = "";
-      this.getUserMedia({
-        video: {
-          width: 400,
-          height: 300,
+      this.getUserMedia(
+        {
+          video: {
+            width: 400,
+            height: 300,
+          },
         },
-      });
+        this.photographSuccess,
+        this.photographError
+      );
       // #endif
     },
     toTakePhoto() {
@@ -3453,17 +3439,40 @@ export default {
         this.navShow = false;
       }
     },
+    checkFinishRequiredCourse() {
+      return this.$api
+        .checkFinishRequiredCourse({
+          businessId: this.goodsData.businessId,
+          goodsId: this.goodsId,
+        })
+        .then((res) => {
+          if (res.data.data > 0) {
+            uni.showModal({
+              showCancel: false,
+              confirmText: "确定",
+              content: "该业务层次下有未学完的商品,无法学习新商品!",
+              success: function (resultst) {
+                uni.navigateBack();
+              },
+            });
+            return Promise.reject();
+          }
+          return Promise.resolve();
+        });
+    },
     getGoodsDetail() {
       let self = this;
       // '/goods/'+ data,
-      this.$api.goodsDetail(this.goodsId).then((res) => {
+      this.$api.goodsDetail(this.goodsId).then(async (res) => {
         this.goodsData = res.data.data;
+        await this.checkFinishRequiredCourse();
         if (self.goodsData.buyNote) {
           this.baseHandoutTipList();
         }
         self.gradeId = self.goodsData.gradeId;
+        self.erJianErZao = self.goodsData.erJianErZao;
+
         this.courseBusiness(this.goodsData.businessId);
-        this.courseHandouts();
         self.getMenuList();
         self.getReMenuList(); //获取重修目录
         setTimeout(function () {
@@ -3493,7 +3502,6 @@ export default {
             self.playbackRate = [0.5, 0.8, 1.0, 1.25, 1.5, 2.0];
           }
         }
-        self.erJianErZao = self.goodsData.erJianErZao;
         if (self.goodsData.goodsPhotographConfig) {
           self.goodsPhotographConfig = JSON.parse(
             self.goodsData.goodsPhotographConfig
@@ -3674,46 +3682,6 @@ export default {
     change(index) {
       this.current = index;
     },
-    openDocument(item) {
-      let url = this.$method.splitImgHost(item.url);
-      // #ifdef H5
-      window.location.href = url;
-      // #endif
-      // #ifdef MP-WEIXIN
-      this.downLoading = true;
-      uni.downloadFile({
-        url: url,
-        success: (res) => {
-          var filePath = res.tempFilePath;
-          // h5不支持
-          uni.openDocument({
-            filePath: filePath,
-            fileType: "pdf",
-            showMenu: item.canDownload == 1 ? true : false,
-            success: (res) => {
-              this.downLoading = false;
-              uni.setStorageSync("current", this.current);
-            },
-            fail: (err) => {
-              this.downLoading = false;
-              uni.showToast({
-                icon: "none",
-                title: "文档地址错误",
-              });
-            },
-          });
-        },
-        fail: (err) => {
-          this.downLoading = false;
-          uni.showModal({
-            title: "提示",
-            content: "文档错误," + err.errMsg,
-            showCancel: false,
-          });
-        },
-      });
-      // #endif
-    },
     clickMulu() {
       this.muluStyle = !this.muluStyle;
     },
@@ -3730,9 +3698,7 @@ export default {
     // 播放视频
     loadPlayer() {
       const polyvPlayer = window.polyvPlayer;
-      this.pauseTime = 0;
       this.$api.polyvVideoSign(this.vid).then(async (res) => {
-        console.log("播放凭证res", res, 465555555555555555555);
         this.player = await polyvPlayer({
           wrap: "#player",
           width: "100%",
@@ -3760,9 +3726,8 @@ export default {
         });
 
         polyvPlayerContext = this.player;
-        console.log("this.player:", this.player);
 
-        this.player.on("s2j_onPlayStart", (vid) => {
+        this.player.on("s2j_onPlayStart", async (vid) => {
           // 视频初次播放时触发
           console.log("视频初次播放时触发:");
           // #ifdef H5
@@ -3830,7 +3795,7 @@ export default {
           }, 15000);
         });
 
-        this.player.on("s2j_onPlayOver", () => {
+        this.player.on("s2j_onPlayOver", async () => {
           // 当前视频播放完毕时触发
           console.log("结束了结束了");
           this.hasStart = false;
@@ -3840,7 +3805,7 @@ export default {
             icon: "none",
             title: "播放完毕",
           });
-          this.postStudyRecord(1);
+          await this.postStudyRecord(1);
           this.nextSection(); // 播放下一节
         });
       });
@@ -4035,47 +4000,6 @@ export default {
   border-radius: 16rpx;
   font-size: 24rpx;
 }
-.lecture-box {
-  display: flex;
-  align-items: center;
-  height: 80rpx;
-  background: #ffffff;
-  border-radius: 16rpx 16rpx 16rpx 16rpx;
-  margin-bottom: 20rpx;
-  .title {
-    padding: 10rpx;
-    flex: 1;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-    color: #333;
-    font-weight: bold;
-    font-size: 32rpx;
-  }
-
-  .btn {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    width: 80rpx;
-    height: 80rpx;
-    background: #ffffff;
-    box-shadow: -4rpx 0rpx 4rpx 0rpx rgba(0, 0, 0, 0.1);
-    border-radius: 16rpx 16rpx 16rpx 16rpx;
-  }
-  @keyframes rotation {
-    from {
-      -webkit-transform: rotate(0deg);
-    }
-    to {
-      -webkit-transform: rotate(360deg);
-    }
-  }
-  .loading_down {
-    transform: rotate(360deg);
-    animation: rotation 3s linear infinite;
-  }
-}
 
 .lecture-content {
   background: #fff;

+ 3 - 15
pages4/shopping/shoppingCart.vue

@@ -1,19 +1,6 @@
 <template>
   <view>
-    <u-navbar
-      :is-back="false"
-      title="购物车"
-      :border-bottom="false"
-      title-color="#333333"
-      back-icon-color="#ffffff"
-    >
-      <view class="slot-wrap">
-        <image
-          :src="$method.splitImgHost(config.smallLogo)"
-          style="width: 178rpx; height: 31rpx; margin-left: 30rpx"
-        ></image>
-      </view>
-    </u-navbar>
+    <nav-logo title="购物车"></nav-logo>
     <view v-show="isLogin">
       <view v-if="!list.length"
         ><u-empty text="购物车为空" margin-top="500" mode="car"></u-empty
@@ -289,6 +276,7 @@
 <script>
 import { mapGetters } from "vuex";
 import ClassTimeTip from "../../components/common/ClassTimeTip.vue";
+import navLogo from "../../components/nav-bar/nav-logo.vue";
 export default {
   data() {
     return {
@@ -597,7 +585,7 @@ export default {
       });
     },
   },
-  components: { ClassTimeTip },
+  components: { ClassTimeTip, navLogo },
 };
 </script>
 <style>

+ 1 - 1
pages5/exam/index.vue

@@ -55,7 +55,7 @@ export default {
 		goLive() {
 			let uuid = new Date().valueOf() + ""
       		// buyCourse 是否购买课程:1是 0否
-			let encode = encodeURIComponent(this.config.hostLive+'pages/live/index?token='+uni.getStorageSync('token')+'&userInfo='+JSON.stringify(this.userInfo)+'&channelId='
+			let encode = encodeURIComponent(this.config.hostLive+'/pages/live/index?token='+uni.getStorageSync('token')+'&userInfo='+JSON.stringify(this.userInfo)+'&channelId='
 			+this.livingInfo.liveUrl+'&buyCourse=1'+'&ident='+uuid)
 			uni.navigateTo({
 				url:`../../pages/webview/index?url=`+encode

+ 23 - 10
pages5/examBank/index.vue

@@ -1582,15 +1582,15 @@ export default {
       this.$set(this.questionList[bindex], "ques", arr);
       this.$u.toast("已确认答案");
       this.isDoOver();
-      console.log("this.questionList[bindex]", this.questionList[bindex].ques);
-      // let isWrong = this.questionList[bindex].ques.some(
-      //   (quesItem, quesIndex) => {
-      //     return (
-      //       this.questionList[bindex].ques[quesIndex] !=
-      //       this.questionList[bindex].ans[quesIndex]
-      //     );
-      //   }
-      // );
+      // 切换下一题
+      if (
+        this.bankType != 1 &&
+        this.cgType != 9 &&
+        bindex != this.questionList.length - 1
+      ) {
+        this.current = bindex + 1;
+        this.getCollectInfo(this.current);
+      }
     },
 
     /**
@@ -1622,6 +1622,14 @@ export default {
       this.$set(this.questionList[bindex].ques, ansIndex, arr);
       this.$u.toast("已确认答案");
       this.isDoOver();
+      // 切换下一题
+      if (
+        this.bankType != 1 &&
+        this.cgType != 9 &&
+        ansIndex != this.questionList[bindex].ques.length - 1
+      ) {
+        this.questionList[bindex].current += 1;
+      }
     },
 
     /**
@@ -2009,7 +2017,12 @@ export default {
     },
 
     isCheck(item, index) {
-      if (this.questionList[index].ques) {
+      // 案例题处理
+      let { ques, type, ans } = item;
+      if (type == 4) {
+        return ans.length == ques.length;
+      }
+      if (ques) {
         return true;
       }
     },

+ 1 - 1
pages5/liveDetail/list.vue

@@ -120,7 +120,7 @@ export default {
 			let sectionId = item.sectionId || item.menuId;
 			let uuid = new Date().valueOf() + ""
       		// buyCourse 是否购买课程:1是 0否
-			let encode = encodeURIComponent(this.config.hostLive+'pages/live/index?token='+uni.getStorageSync('token')+'&userInfo='+JSON.stringify(this.userInfo)+'&channelId='
+			let encode = encodeURIComponent(this.config.hostLive+'/pages/live/index?token='+uni.getStorageSync('token')+'&userInfo='+JSON.stringify(this.userInfo)+'&channelId='
 			+item.liveUrl+'&gradeId='+0+'&courseId='+this.courseId+'&goodsId='+this.goodsId+'&orderGoodsId='+this.orderGoodsId+'&sectionId='+sectionId+'&chapterId='
 			+chapterId+'&moduleId='+moduleId+'&buyCourse=1'+'&ident='+uuid)
 			uni.navigateTo({

+ 1 - 1
pages5/liveList/index.vue

@@ -162,7 +162,7 @@ export default {
 			if(item.liveStatus == 0) { //直播中
 				let uuid = new Date().valueOf() + ""
 				// buyCourse 是否购买课程:1是 0否
-				let encode = encodeURIComponent(this.config.hostLive+'pages/live/index?token='+uni.getStorageSync('token')+'&userInfo='+JSON.stringify(this.userInfo)+
+				let encode = encodeURIComponent(this.config.hostLive+'/pages/live/index?token='+uni.getStorageSync('token')+'&userInfo='+JSON.stringify(this.userInfo)+
 				'&channelId='+item.liveUrl+'&buyCourse=1'+'&ident='+uuid)
 				uni.navigateTo({
 					url:`../../pages/webview/index?url=`+encode

+ 0 - 256
pages5/scan/examact.vue

@@ -1,256 +0,0 @@
-<template>
-  <view class="examact">
-    <view class="examact-tname">{{ tenantInfo.name }}</view>
-    <img
-      :src="$method.splitImgHost('oss/images/file/20230320/1679298401443.png')"
-      alt=""
-      srcset=""
-    />
-    <view class="examact-btn" @click="collectMerch"> 点击领取真题题库 </view>
-
-    <view class="examact-phone" v-if="tenantInfo.phone">
-      报名热线:
-      <view>{{ tenantInfo.phone1 }}</view>
-      <view>{{ tenantInfo.phone2 }}</view>
-    </view>
-    <view class="examact-qrcode">
-      <tki-qrcode
-        :show="true"
-        :size="160"
-        cid="qrcode1"
-        ref="qrcode"
-        :val="val"
-        :showLoading="false"
-        :loadMake="true"
-        :usingComponents="true"
-      />
-
-      <img
-        class="examact-qrcode111"
-        :src="'../../static/qrcode/' + tenantInfo.qrcodeUrl"
-        alt=""
-        srcset=""
-      />
-    </view>
-  </view>
-</template>
-
-<script>
-const map = {
-  "test.jqbao.net": {
-    name: "测试云学堂",
-    qrcodeUrl: "hnjsxt_act.png",
-    goodsId: "7722",
-  },
-  "120.79.166.78:19006": {
-    name: "广东省祥粤建设职业培训学校",
-    qrcodeUrl: "h_act.png",
-    phone: true,
-    phone1: "020-87085982",
-    phone2: "020-87085983",
-    goodsId: "16370",
-    scheme: "http://",
-  },
-  "h.xyyxt.net": {
-    name: "广东省祥粤建设职业培训学校",
-    qrcodeUrl: "h_act.png",
-    phone: true,
-    phone1: "020-87085982",
-    phone2: "020-87085983",
-    goodsId: "7798",
-  },
-  "www.hnjsxt.cn": {
-    name: "企帮(广州)工程建设咨询服务有限公司",
-    qrcodeUrl: "hnjsxt_act.png",
-    scheme: "http://",
-    learnUrl: "",
-    goodsId: "8673",
-  },
-  "zsh5.zzyxt.net": {
-    name: "中山市勘设工程咨询有限公司",
-    qrcodeUrl: "zsh5_act.png",
-    goodsId: "8678",
-  },
-  "zh5.zzyxt.net": {
-    name: "肇庆市建筑业协会",
-    qrcodeUrl: "zh5_act.png",
-    goodsId: "8677",
-    phone: true,
-    phone1: "0758—2285500",
-    phone2: "13600220253",
-  },
-  "sdyxt.gdzzkj.net": {
-    name: "佛山市顺德区市政建设工程协会",
-    qrcodeUrl: "sdyxt_act.png",
-    goodsId: "8673",
-  },
-  "mh5.zzyxt.net": {
-    name: "茂名市建设培训学校",
-    qrcodeUrl: "mh5_act.png",
-    goodsId: "8679",
-  },
-  "sxh5.zzyxt.net": {
-    name: "山西晋锦建族教育咨询有限公司",
-    qrcodeUrl: "sxh5_act.png",
-    goodsId: "8676",
-  },
-  "yfh5.zzyxt.net": {
-    name: "云浮市建筑业协会",
-    qrcodeUrl: "yf_act.png",
-    goodsId: "8672",
-  },
-  "h.kw-xy.com": {
-    name: "深圳市凯文云学堂",
-    qrcodeUrl: "kw-xy.png",
-    goodsId: "8680",
-  },
-};
-import { actCheck } from "../../common/httpList/act";
-import tkiQrcode from "tki-qrcode";
-import { tenantId, BASE_URL } from "@/common/request.js";
-export default {
-  name: "SaasMiniprogramExamact",
-  data() {
-    return {
-      goodsId: "",
-      goodsType: "2",
-      example:
-        "http://localhost:8080/pages5/scan/examact?jump=www.hnjsxt.cn/detail/6",
-      jump: undefined,
-      sale: "",
-      tenantInfo: {},
-      t: "",
-    };
-  },
-  onLoad(option) {
-    this.jump = option.jump;
-    this.sale = option.sale;
-    this.tenantInfo = this.backInfo();
-    this.goodsId = this.tenantInfo.goodsId;
-    this.t = option.t;
-    this.t && this.statistics();
-  },
-  methods: {
-    collectMerch() {
-      actCheck().then((res) => {
-        if (res.data.code === 200) {
-          //跳转去对应域名
-          this.toDatail();
-        } else {
-          this.$u.toast(res.data.msg);
-        }
-      });
-    },
-    toDatail() {
-      if (this.jump) {
-        window.location.href =
-          this.scheme + this.jump + "?sale=" + (this.sale || "");
-        return;
-      }
-      uni.navigateTo({
-        url:
-          "/pages3/course/detail?id=" +
-          this.goodsId +
-          "&goodsType=" +
-          this.goodsType +
-          "&sale=" +
-          (this.sale || "") +
-          "&isAct=" +
-          1,
-      });
-    },
-    backInfo() {
-      let domain = this.jump ? this.jump.split("/")[0] : window.location.host;
-      domain = this.$method.checkDomain(domain)
-        ? domain
-        : "120.79.166.78:19006";
-      return map[domain];
-    },
-    statistics() {
-      uni.request({
-        url: BASE_URL + "/app/common/save/activity/record/" + this.t,
-        method: "get",
-        header: {
-          TenantId: tenantId,
-        },
-        success: (res) => {},
-        fail: (err) => {},
-      });
-    },
-  },
-  components: {
-    tkiQrcode,
-  },
-  computed: {
-    scheme() {
-      return this.tenantInfo.scheme || "https://";
-    },
-    val() {
-      return (
-        this.scheme +
-        (this.jump ||
-          window.location.host + "/pages/questionBank/index?isAct=1")
-      );
-    },
-  },
-};
-</script>
-
-<style lang="scss" scoped>
-.examact {
-  position: relative;
-  img {
-    width: 100vw;
-  }
-  .examact-tname {
-    position: absolute;
-    top: 41rpx;
-    left: 48rpx;
-    font-size: 36rpx;
-    color: #2e3174;
-    font-weight: 500;
-  }
-  .examact-btn {
-    width: 620rpx;
-    height: 102rpx;
-    position: absolute;
-    top: 786rpx;
-    left: 50%;
-    margin-left: -310rpx;
-    background: linear-gradient(90deg, #1762ff 0%, #4af7da 100%);
-    box-shadow: 0px 9px 12px 0px rgba(50, 84, 130, 0.18);
-    border-radius: 200rpx;
-    line-height: 104rpx;
-    text-align: center;
-    font-weight: bold;
-    color: #ffffff;
-    font-size: 36rpx;
-  }
-  .examact-qrcode {
-    width: 396rpx;
-    display: flex;
-    position: absolute;
-    justify-content: space-between;
-    right: 32rpx;
-    bottom: 122rpx;
-    img {
-      width: 180rpx;
-      height: 180rpx;
-    }
-    view {
-      background: #ffffff;
-      width: 180rpx;
-      height: 180rpx;
-      padding: 10rpx;
-    }
-  }
-  .examact-phone {
-    position: absolute;
-    bottom: 46rpx;
-    left: 33rpx;
-    color: #222222;
-    font-size: 30rpx;
-    line-height: 40rpx;
-  }
-}
-</style>

+ 227 - 0
pages5/scan/retailact.vue

@@ -0,0 +1,227 @@
+<template>
+  <view class="scan_course">
+    <nav-bar title="商品列表" class="navbar"></nav-bar>
+    <view class="list_item" v-for="(item, index) in courseList" :key="index">
+      <view class="course_content">
+        <view class="c_title">{{ item.goodsName }}</view>
+        <view class="c_downs">
+          <view class="img">
+            <image :src="$method.splitImgHost(item.coverUrl, true)"></image>
+            <view class="time" v-if="item.year">{{
+              item.year ? item.year : ""
+            }}</view>
+          </view>
+          <view class="text">
+            <view class="desc">
+              <view class="left">
+                <view
+                  class="priceTag"
+                  v-if="
+                    !item.specTemplateId || (!item.maxPrice && !item.minPrice)
+                  "
+                >
+                  {{ item.standPrice === 0 ? "免费" : `¥${item.standPrice}` }}
+                </view>
+                <!-- 范围价格 -->
+                <view v-else class="priceTag">
+                  <view>{{ item.minPrice }}</view>
+                  <template v-if="item.minPrice != item.maxPrice">
+                    <text>-</text>
+                    <view>{{ item.maxPrice }}</view>
+                  </template>
+                </view>
+                <text v-if="item.linePrice" class="sale">¥ </text>
+                <text v-if="item.linePrice" class="price_line">
+                  {{ item.linePrice }}</text
+                >
+              </view>
+              <view class="right">
+                <view class="regiser_row" @click="toBuy(item)">立即购买</view>
+              </view>
+            </view>
+          </view>
+        </view>
+      </view>
+    </view>
+    <!-- <view class="tip"
+      >温馨提示:在线课程属虚拟商品,活动期间购买不予退款,请按需购买</view
+    > -->
+  </view>
+</template>
+
+<script>
+import { tenantId, BASE_URL } from "@/common/request.js";
+export default {
+  data() {
+    return {
+      courseList: [],
+    };
+  },
+  onLoad(options) {
+    this.options = options;
+    this.getCourseList();
+  },
+  methods: {
+    getCourseList() {
+      this.$api.fxGoodsList(this.options.distributionId).then((res) => {
+        if (res.data.code == 200) {
+          this.courseList = res.data.data;
+        } else {
+          this.$u.toast(res.data.msg);
+        }
+      });
+    },
+    addParam(item) {
+      let str = "?id=" + item.goodsId + "&goodsType=" + item.goodsType;
+      if (this.options.distributionCode) {
+        str += "&distributionCode=" + this.options.distributionCode;
+      }
+      if (this.options.linkCode) {
+        str += "&linkCode=" + this.options.linkCode;
+      }
+      return str;
+    },
+    toBuy(item) {
+      if (item.goodsType == 2) {
+        uni.navigateTo({
+          url: "/pages2/bank/detail" + this.addParam(item),
+        });
+      } else {
+        uni.navigateTo({
+          url: "/pages3/course/detail" + this.addParam(item),
+        });
+      }
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.scan_course {
+  padding: 32rpx 32rpx 0;
+
+  .list_item {
+    padding: 24rpx;
+    // height: 278rpx;
+    background: #ffffff;
+    box-shadow: 0rpx 0rpx 20rpx 1rpx rgba(1, 99, 235, 0.1);
+    border-radius: 24rpx;
+    background: #fff;
+    margin-bottom: 32rpx;
+    display: flex;
+    align-items: center;
+
+    .c_title {
+      font-size: 32rpx;
+      font-weight: bold;
+      margin-bottom: 24rpx;
+      font-weight: bold;
+      color: #222222;
+    }
+
+    .c_downs {
+      display: flex;
+    }
+
+    .img {
+      position: relative;
+      margin-right: 24rpx;
+      border-radius: 16rpx;
+      overflow: hidden;
+      width: 204rpx;
+      height: 120rpx;
+
+      image {
+        width: 100%;
+        height: 100%;
+      }
+
+      .time {
+        position: absolute;
+        bottom: 0;
+        right: 0;
+        width: 80rpx;
+        height: 32rpx;
+        background: rgba(1, 25, 45, 0.4);
+        color: #fff;
+        text-align: center;
+        line-height: 32rpx;
+        font-size: 24rpx;
+        border-radius: 10rpx 0px 10rpx 0px;
+      }
+    }
+
+    .text {
+      width: 440rpx;
+      position: relative;
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+      height: 120rpx;
+
+      .desc {
+        margin-top: 20rpx;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        width: 100%;
+
+        .left {
+          flex: 1;
+          color: #333;
+          font-size: 26rpx;
+
+          .sale {
+            color: #999999;
+            font-size: 24rpx;
+            margin-left: 8rpx;
+          }
+
+          .price_line {
+            color: #999999;
+            font-size: 24rpx;
+            text-decoration: line-through;
+            font-weight: 400;
+          }
+        }
+
+        .right {
+          font-size: 24rpx;
+          font-weight: bold;
+          padding-right: 20rpx;
+
+          .regiser_row {
+            width: 144rpx;
+            height: 52rpx;
+            line-height: 52rpx;
+            text-align: center;
+            border-radius: 16rpx;
+            background-color: #fc3f3f;
+            color: #fff;
+            font-weight: 500;
+            font-size: 26rpx;
+          }
+        }
+      }
+    }
+
+    .priceTag {
+      display: flex;
+      font-size: 32rpx;
+      font-family: PingFang SC;
+      font-weight: bold;
+      color: #fc3f3f;
+      view::before {
+        content: "¥";
+        font-size: 24rpx;
+        font-weight: bold;
+      }
+    }
+  }
+  .tip {
+    text-align: center;
+    color: #a7b0b8;
+    padding: 16rpx 30rpx 0;
+  }
+}
+</style>

BIN
static/qrcode/h_act.png


BIN
static/qrcode/hnjsxt_act.png


BIN
static/qrcode/kw-xy.png


BIN
static/qrcode/mh5_act.png


BIN
static/qrcode/sdyxt_act.png


BIN
static/qrcode/sxh5_act.png


BIN
static/qrcode/yf_act.png


BIN
static/qrcode/zh5_act.png


BIN
static/qrcode/zsh5_act.png


+ 16 - 0
static/style/index.scss

@@ -0,0 +1,16 @@
+.fl {
+  display: flex;
+  align-items: center;
+}
+
+.fl_b {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.fl_c {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}

+ 2 - 0
uni.scss

@@ -15,6 +15,8 @@
 	padding-bottom: constant(safe-area-inset-bottom);
 	padding-bottom: env(safe-area-inset-bottom);
 }
+// 通用样式
+@import "./static/style/index.scss";
 /* 颜色变量 */
 @import 'uview-ui/theme.scss';
 /* 行为相关颜色 */