Tang 1 jaar geleden
bovenliggende
commit
9d145a06ae

+ 2 - 2
common/config.js

@@ -1,7 +1,7 @@
 // test 测试环境
 const test = {
-	BASE_URL: "https://testapi.xyyxt.net",
-	// BASE_URL: "http://120.79.166.78:19012",
+	// BASE_URL: "https://testapi.xyyxt.net",
+	BASE_URL: "http://120.79.166.78:19012",
 	BASE_IMG_URL: "https://file-dev.xyyxt.net/",
 	domain: "h.xyyxt.net",
 	tenantId: "867735392558919680", //详粤云学堂

+ 3 - 3
components/course/courseSection.vue

@@ -439,7 +439,7 @@ export default {
           let uuid = new Date().valueOf() + "";
           // buyCourse 是否购买课程:1是 0否,type=vod是回放
           let encode = encodeURIComponent(
-            this.config.hostLive +
+            this.other.hostLive +
               "/pages/live/index?token=" +
               uni.getStorageSync("token") +
               "&userInfo=" +
@@ -547,7 +547,7 @@ export default {
         let uuid = new Date().valueOf() + "";
         // buyCourse 是否购买课程:1是 0否
         let encode = encodeURIComponent(
-          this.config.hostLive +
+          this.other.hostLive +
             "/pages/live/index?token=" +
             uni.getStorageSync("token") +
             "&userInfo=" +
@@ -582,7 +582,7 @@ export default {
     },
   },
   computed: {
-    ...mapGetters(["userInfo", "liveLast", "config"]),
+    ...mapGetters(["userInfo", "liveLast", "other"]),
     isActive() {
       if (!this.isBuy || !this.sectionItem) {
         return false;

+ 15 - 3
components/tabbar/index.vue

@@ -13,7 +13,8 @@
 						<view style="margin:14rpx;font-size: 26rpx;white-space: nowrap;color: #AAAAAA;">
 							{{consultMobile.servicingTime}}
 						</view>
-						<view style="font-weight: bold;line-height: 46rpx;white-space: pre-wrap;" @click="copy(consultMobile.serviceNumber)">
+						<view style="font-weight: bold;line-height: 46rpx;white-space: pre-wrap;"
+							@click="copy(consultMobile.serviceNumber)">
 							{{consultMobile.serviceNumber}}
 						</view>
 					</view>
@@ -46,7 +47,7 @@
 			<view class="we_l" v-if="!show" @click="show = !show">
 				<img src="https://file.xyyxt.net/web/static/img/icon/we.png" alt="" @click="activeIn = 0">
 			</view>
-			<view class="up" @click="backTop">
+			<view class="up" @click="backTop" :class="backTopBtn ? '':'hideBtn'">
 				<img src="https://file.xyyxt.net/web/static/img/icon/backTop.png" alt="">
 			</view>
 		</view>
@@ -65,6 +66,14 @@
 		options: {
 			styleIsolation: "shared"
 		},
+		props: {
+			backTopBtn: {
+				type: Boolean,
+				default: () => {
+					return false
+				}
+			}
+		},
 		data() {
 			return {
 				activeIn: 0,
@@ -173,7 +182,7 @@
 		display: flex;
 		flex-direction: column;
 		justify-content: end;
-		bottom: 40vh;
+		bottom: 20vh;
 
 		.we {
 			// background-color: #007aff;
@@ -297,4 +306,7 @@
 			}
 		}
 	}
+	.hideBtn{
+		visibility: hidden;
+	}
 </style>

+ 7 - 1
pages/course/index.vue

@@ -60,7 +60,7 @@
 			</view>
 		</view>
 		<!-- tabbar -->
-		<myTabbar></myTabbar>
+		<myTabbar :backTopBtn="backTopBtn"></myTabbar>
 		<filter-show-status ref="filterShowStatus"></filter-show-status>
 	</view>
 </template>
@@ -75,6 +75,7 @@
 		},
 		data() {
 			return {
+				backTopBtn:false,
 				scrollTop: 0,
 				courseLists: [{
 						name: "课程",
@@ -164,6 +165,11 @@
 			scroll(e) {
 				//记录scroll  位置
 				this.oldScrollTop = e.detail.scrollTop
+				if (e.detail.scrollTop > 100) {
+					this.backTopBtn = true
+				} else {
+					this.backTopBtn = false
+				}
 			},
 			openFilterBox() {
 				this.$refs.filterShowStatus.openBoxs(this.activeData)

+ 16 - 7
pages/index/index.vue

@@ -23,8 +23,8 @@
 		<view class="content" v-if="other.courseH5 == 1 && recommendCourse.length > 0">
 			<view class="header_top">
 				<text class="left">推荐课程</text>
-				<u-tabs class="u-tabs" :list="recommendCourse" :current="currentCourse" bg-color="transparent" :show-bar="false"
-					:height="50" @change="changeCurren($event,'currentCourse')"></u-tabs>
+				<u-tabs class="u-tabs" :list="recommendCourse" :current="currentCourse" bg-color="transparent"
+					:show-bar="false" :height="50" @change="changeCurren($event,'currentCourse')"></u-tabs>
 				<text class="right" @click="jumpPage(0)">更多></text>
 			</view>
 			<view class="noGoods" v-if="recommendCourse[currentCourse].goodsList.length == 0">
@@ -69,8 +69,8 @@
 		<view class="content" v-if="other.bankH5 == 1 &&recommendBank.length > 0">
 			<view class="header_top">
 				<text class="left">推荐题库</text>
-				<u-tabs class="u-tabs"  :list="recommendBank" :current="currentBank" bg-color="transparent" :show-bar="false"
-					:height="50" @change="changeCurren($event,'currentBank')"></u-tabs>
+				<u-tabs class="u-tabs" :list="recommendBank" :current="currentBank" bg-color="transparent"
+					:show-bar="false" :height="50" @change="changeCurren($event,'currentBank')"></u-tabs>
 				<text class="right" @click="jumpPage(2)">更多></text>
 			</view>
 			<view class="noGoods" v-if="recommendBank[currentBank].goodsList.length == 0">
@@ -177,7 +177,7 @@
 		</view>
 		<!-- #endif -->
 		<!-- tabbar -->
-		<myTabbar></myTabbar>
+		<myTabbar :backTopBtn="backTopBtn"></myTabbar>
 	</view>
 </template>
 
@@ -189,6 +189,7 @@
 	export default {
 		data() {
 			return {
+				backTopBtn:false,
 				currentCourse: 0,
 				currentBank: 0,
 				certificate: [{
@@ -380,7 +381,7 @@
 				recommendBank: [],
 				isFollow: null, //是否关注过,不是1就是没关注
 				curClose: true, // 当天时是否关闭过
-				version:null,//当前版本号
+				version: null, //当前版本号
 			};
 		},
 		async onLoad(option) {
@@ -428,8 +429,15 @@
 					"" : userInfo.userAccount,
 			};
 		},
+		onPageScroll(e) {
+			if (e.scrollTop > 100) {
+				this.backTopBtn = true
+			} else {
+				this.backTopBtn = false
+			}
+		},
 		computed: {
-			...mapGetters(["header","other", "dictObj", "userInfo", "tenantId"]),
+			...mapGetters(["header", "other", "dictObj", "userInfo", "tenantId"]),
 			filterNum: function() {
 				return function(list) {
 					if (list && list.length > 0) {
@@ -662,6 +670,7 @@
 			color: #666;
 		}
 	}
+
 	.swiper_cer {
 		height: 500rpx;
 

+ 13 - 5
pages/learn/index.vue

@@ -291,9 +291,9 @@
                   eduPhone
                 }},学时查询网址:http://gdzczx.gdcic.net
 							</div>
-							<div v-if="item.periodStatus === 1 && !sevenFunc(item)">
+							<!-- <div v-if="item.periodStatus === 1 && !sevenFunc(item)">
 								温馨提示:您的班级学习初审已通过,待广东省建设信息中心归集学时,归集完成即为完成本次继续教育学习。归集学时需约10-15个工作日,具体以广东省建设执业资格注册服务平台的“继续教育学时查询”公布学时记录为准,学时查询网址:http://gdzczx.gdcic.net
-							</div>
+							</div> -->
 						</view>
 						<!-- 按钮 -->
 						<view class="study_btns">
@@ -477,7 +477,7 @@
 			</view>
 		</u-modal>
 		<!-- tabbar -->
-		<myTabbar></myTabbar>
+		<myTabbar :backTopBtn="backTopBtn"></myTabbar>
 	</view>
 </template>
 
@@ -494,6 +494,7 @@
 	export default {
 		data() {
 			return {
+				backTopBtn:false,
 				leftDays: 0,
 				paramC: {
 					pageNum: 1,
@@ -540,7 +541,7 @@
 			formatRichText: filters.formatRichText,
 		},
 		computed: {
-			...mapGetters(["userInfo", "config"]),
+			...mapGetters(["userInfo", "other"]),
 			allCourse() {
 				return this.courseLists.length || this.livingLists.length ? true : false;
 			},
@@ -630,6 +631,13 @@
 		onPullDownRefresh() {
 			this.getCourseLiveQues();
 		},
+		onPageScroll(e) {
+			if (e.scrollTop > 100) {
+				this.backTopBtn = true
+			} else {
+				this.backTopBtn = false
+			}
+		},
 		onReachBottom() {
 			if (this.courseLists.length < this.total) {
 				this.paramC.pageNum++;
@@ -804,7 +812,7 @@
 				let uuid = new Date().valueOf() + "";
 				// buyCourse 是否购买课程:1是 0否
 				let encode = encodeURIComponent(
-					this.config.hostLive +
+					this.other.hostLive +
 					"/pages/live/index?token=" +
 					uni.getStorageSync("token") +
 					"&userInfo=" +

+ 291 - 309
pages/questionBank/index.vue

@@ -1,324 +1,306 @@
 <template>
-  <view class="questionBank">
-    <nav-logo title="题库中心"></nav-logo>
-    <!-- 有学习的课程 -->
-    <view v-if="questionLists.length" class="had_courses">
-      <!-- 我的题库 -->
-      <view class="my_courses">
-        <text class="titles">我的题库</text>
-        <view class="bottoms">
-          <view class="item collect" @click="toRecord(0)">
-            <view class="text">收藏集<u-icon name="arrow-right"></u-icon></view>
-            <image class="img" src="/static/questionBank_collect.png"></image>
-          </view>
-          <view class="item list">
-            <view class="list-in" @click="toRecord(1)">
-              <image class="img" src="/static/questionBank_record.png"></image>
-              <view class="text">
-                做题记录 <u-icon name="arrow-right"></u-icon>
-              </view>
-            </view>
-            <view class="list-in" @click="toRecord(2)">
-              <image class="img" src="/static/questionBank_wrong.png"></image>
-              <view class="text">
-                错题集 <u-icon name="arrow-right"></u-icon>
-              </view>
-            </view>
-          </view>
-        </view>
+	<view class="questionBank">
+		<nav-logo title="题库中心"></nav-logo>
+		<!-- 有学习的课程 -->
+		<view v-if="questionLists.length" class="had_courses">
+			<!-- 我的题库 -->
+			<view class="my_courses">
+				<text class="titles">我的题库</text>
+				<view class="bottoms">
+					<view class="item collect" @click="toRecord(0)">
+						<view class="text">收藏集<u-icon name="arrow-right"></u-icon></view>
+						<image class="img" src="/static/questionBank_collect.png"></image>
+					</view>
+					<view class="item list">
+						<view class="list-in" @click="toRecord(1)">
+							<image class="img" src="/static/questionBank_record.png"></image>
+							<view class="text">
+								做题记录 <u-icon name="arrow-right"></u-icon>
+							</view>
+						</view>
+						<view class="list-in" @click="toRecord(2)">
+							<image class="img" src="/static/questionBank_wrong.png"></image>
+							<view class="text">
+								错题集 <u-icon name="arrow-right"></u-icon>
+							</view>
+						</view>
+					</view>
+				</view>
 
-        <template v-if="questionLists.length">
-          <!-- @click="studyques(item)" -->
-          <view
-            v-for="(item, index) in questionLists"
-            :key="index"
-            class="course_item"
-          >
-            <view>
-              <view class="cou_titles">{{ item.goodsName }}</view>
-              <view
-                v-if="
+				<template v-if="questionLists.length">
+					<!-- @click="studyques(item)" -->
+					<view v-for="(item, index) in questionLists" :key="index" class="course_item">
+						<view>
+							<view class="cou_titles">{{ item.goodsName }}</view>
+							<view v-if="
                   item.serviceStartTime &&
                   item.serviceEndTime &&
                   !item.externalLinkStatus
-                "
-                class="learn_ranges"
-              >
-                <image
-                  class="l_range"
-                  src="/static/learn/learn_range.png"
-                ></image>
-                {{ isGetOtherQuetion ? "有效期" : "学习周期" }}:
-                <text class="l_time"
-                  >{{ item.serviceStartTime | formate("yyyy.mm.dd") }}-{{
+                " class="learn_ranges">
+								<image class="l_range" src="/static/learn/learn_range.png"></image>
+								{{ isGetOtherQuetion ? "有效期" : "学习周期" }}:
+								<text class="l_time">{{ item.serviceStartTime | formate("yyyy.mm.dd") }}-{{
                     item.serviceEndTime | formate("yyyy.mm.dd")
-                  }}</text
-                >
-              </view>
-            </view>
-            <view class="c_downs">
-              <view class="lefts">
-                <image
-                  class="lefet_img"
-                  :src="$method.splitImgHost(item.coverUrl, true)"
-                  mode=""
-                ></image>
-              </view>
-              <view class="rights" v-if="!item.externalLinkStatus">
-                <view class="learn_progress">
-                  <view class="progress_up">
-                    <view v-if="isGetOtherQuetion">
-                      总题数:{{ item.questionNum || 300 }}题
-                    </view>
-                    <template v-else>
-                      <view>
-                        学习进度:{{ item.doNum }}/{{ item.totalNum }}
-                      </view>
-                      <view class="progress_bar" style="width: 100%">
-                        <u-line-progress
-                          :show-percent="false"
-                          height="22"
-                          active-color="#ff9900"
-                          :percent="(item.doNum / item.totalNum) * 100"
-                        ></u-line-progress>
-                      </view>
-                    </template>
-                  </view>
-                </view>
-              </view>
-            </view>
-            <!-- 按钮 -->
-            <view class="study_btns" v-if="isGetOtherQuetion">
-              <view class="exam_word intos" @click="toSdLearn(item)"
-                >开始刷题</view
-              >
-            </view>
-            <view class="study_btns" v-else-if="!item.externalLinkStatus">
-              <view
-                v-for="(child, c_index) in item.paperVos"
-                :key="c_index"
-                class="exam_word intos"
-                @click.stop="toDailyPractice(item, child)"
-                >{{ child.paperName }}</view
-              >
-            </view>
-            <view class="study_btns" v-else>
-              <view
-                class="exam_word intos"
-                @click.stop="$method.toLink(item.externalLink)"
-                >进入学习</view
-              >
-            </view>
-          </view>
-        </template>
-      </view>
-    </view>
-    <!-- 没有学习的课程 -->
-    <view v-if="!allLoading && !questionLists.length" class="no_datas">
-      <!-- <image class="courses" src="/static/learn/no_course.png" mode=""></image>
+                  }}</text>
+							</view>
+						</view>
+						<view class="c_downs">
+							<view class="lefts">
+								<image class="lefet_img" :src="$method.splitImgHost(item.coverUrl, true)" mode="">
+								</image>
+							</view>
+							<view class="rights" v-if="!item.externalLinkStatus">
+								<view class="learn_progress">
+									<view class="progress_up">
+										<view v-if="isGetOtherQuetion">
+											总题数:{{ item.questionNum || 300 }}题
+										</view>
+										<template v-else>
+											<view>
+												学习进度:{{ item.doNum }}/{{ item.totalNum }}
+											</view>
+											<view class="progress_bar" style="width: 100%">
+												<u-line-progress :show-percent="false" height="22"
+													active-color="#ff9900"
+													:percent="(item.doNum / item.totalNum) * 100"></u-line-progress>
+											</view>
+										</template>
+									</view>
+								</view>
+							</view>
+						</view>
+						<!-- 按钮 -->
+						<view class="study_btns" v-if="isGetOtherQuetion">
+							<view class="exam_word intos" @click="toSdLearn(item)">开始刷题</view>
+						</view>
+						<view class="study_btns" v-else-if="!item.externalLinkStatus">
+							<view v-for="(child, c_index) in item.paperVos" :key="c_index" class="exam_word intos"
+								@click.stop="toDailyPractice(item, child)">{{ child.paperName }}</view>
+						</view>
+						<view class="study_btns" v-else>
+							<view class="exam_word intos" @click.stop="$method.toLink(item.externalLink)">进入学习</view>
+						</view>
+					</view>
+				</template>
+			</view>
+		</view>
+		<!-- 没有学习的课程 -->
+		<view v-if="!allLoading && !questionLists.length" class="no_datas">
+			<!-- <image class="courses" src="/static/learn/no_course.png" mode=""></image>
 			<view class="no_learns">您目前没有可学习的题库</view> -->
-      <image src="/static/learn/empty_status.png" class="empty_status"></image>
-      <text class="word_tip">暂无题库</text>
-      <view class="choose" @click="toChoose()">立即去选购</view>
-    </view>
-    <!-- tabbar -->
-    <myTabbar></myTabbar>
-  </view>
+			<image src="/static/learn/empty_status.png" class="empty_status"></image>
+			<text class="word_tip">暂无题库</text>
+			<view class="choose" @click="toChoose()">立即去选购</view>
+		</view>
+		<!-- tabbar -->
+		<myTabbar :backTopBtn="backTopBtn"></myTabbar>
+	</view>
 </template>
 
 <script>
-import { mapGetters } from "vuex";
-export default {
-  data() {
-    return {
-      allLoading: false, // 加载样式
-      questionLists: [], // 题库列表
-      param: {
-        pageNum: 1,
-        pageSize: 5,
-        querySign: 1,
-      },
-      total: 0,
-      options: {},
-      isGetOtherQuetion: false,
-    };
-  },
-  computed: {
-    ...mapGetters(["userInfo", "config"]),
-  },
-  async onLoad(options) {
-    uni.hideTabBar();
-    this.options = options;
-    if (this.options.isAct && !this.$method.isLogin()) {
-      uni.navigateTo({
-        url: "/pages4/login/login?isBack=" + true + "&isAct=1",
-      });
-      return;
-    }
-  },
-  async onShow() {
-    let { skipPort, sign } = this.options;
-    if (skipPort) {
-      this.options.skipPort = undefined;
-      this.options.sign = undefined;
-      await this.$method.skipLogin(skipPort);
-    }
-	if(this.$method.isLogin()){
-    this.param.pageNum = 1;
-    this.questionLists = [];
-    this.isGetOtherQuetion = sign || (await this.getIsHaveOtherQuetion());
-    this.getBankList();
-	}
-  },
-  onPullDownRefresh() {
-    this.param.pageNum = 1;
-    this.questionLists = [];
-    this.getBankList();
-  },
-  onReachBottom() {
-    if (this.questionLists.length < this.total) {
-      this.param.pageNum++;
-      this.getBankList();
-    }
-  },
-  methods: {
-    // 查询用户拥有免费+自购题库商品 /bank/question/listUserFreeUnionBuyGoodsList
-    getBankList() {
-      if (!this.$method.isLogin()) {
-        return;
-      }
-      this.allLoading = true;
-      const fn = this.isGetOtherQuetion
-        ? "sdQuestionList"
-        : "listUserFreeUnionBuyGoodsList";
-      this.$api[fn](this.param)
-        .then((res) => {
-          if (res.data.code == 200) {
-            this.questionLists.push(...(res.data.rows || []));
-            this.total = res.data.total;
-          }
-          this.allLoading = false;
-        })
-        .catch((err) => {
-          this.allLoading = false;
-        });
-    },
-    toChoose() {
-      	this.$store.state.current = 2
-      	uni.switchTab({
-      		url: '/pages/course/index'
-      	});
-    },
-    toDailyPractice(item, child) {
-      this.$method.checkLock("bank").then((res) => {
-        if (child.paperName == "每日一练") {
-          uni.navigateTo({
-            url:
-              "/pages2/dailyPractice/index?goodsId=" +
-              item.goodsId +
-              "&orderGoodsId=" +
-              item.orderGoodsId,
-          });
-        } else if (child.paperName == "随机练习") {
-          uni.navigateTo({
-            url:
-              "/pages2/randomPractice/index?goodsId=" +
-              item.goodsId +
-              "&orderGoodsId=" +
-              item.orderGoodsId,
-          });
-        } else {
-          this.studyques(item, child);
-        }
-      });
-    },
-    // 进入练习
-    studyques(item, child) {
-      let sysTime = this.$method.timest();
-      if (
-        item.serviceStartTime &&
-        item.serviceEndTime &&
-        (sysTime <= item.serviceStartTime || sysTime >= item.serviceEndTime)
-      ) {
-        uni.showToast({
-          icon: "none",
-          title: "不在学习服务期,不能进入学习",
-        });
-        return;
-      }
-      let paperId = (child && child.paperId) || "";
-      uni.navigateTo({
-        url:
-          "/pages2/bank/question_detail?id=" +
-          item.goodsId +
-          "&orderGoodsId=" +
-          item.orderGoodsId +
-          "&paperId=" +
-          paperId,
-      });
-    },
-    // 是否含有山东题库
-    async getIsHaveOtherQuetion() {
-      return new Promise((resolve, reject) => {
-        this.$api.getIsHaveOtherQuetion().then((res) => {
-          if (res.data.data == 1) {
-            uni.showModal({
-              title: "提示",
-              content: "是否学习山东题库?",
-              success: (res) => {
-                resolve(res.confirm);
-              },
-            });
-          } else {
-            resolve(false);
-          }
-        });
-      });
-    },
-    toSdLearn(item) {
-      this.$api.getOtherExamId({ relId: item.qsId }).then((res) => {
-        if (res.data.code == 200) {
-          uni.navigateTo({
-            url:
-              "/pages2/bank/questionBank?id=" +
-              res.data.data.examId +
-              "&goodsid=" +
-              item.goodsId +
-              "&orderGoodsId=" +
-              item.orderGoodsId +
-              "&entryType=sd",
-          });
-        } else {
-          uni.showToast({
-            icon: "none",
-            title: res.data.msg,
-          });
-        }
-      });
-    },
-    toRecord(type) {
-      let url = [
-        "/pages2/subject/collect",
-        "/pages2/bank/question_record",
-        "/pages2/subject/wrong",
-        "",
-      ][type];
-      if (this.isGetOtherQuetion) {
-        url += "?isOther=1";
-      }
-      uni.navigateTo({
-        url,
-      });
-    },
-  },
-};
+	import {
+		mapGetters
+	} from "vuex";
+	export default {
+		data() {
+			return {
+				backTopBtn:false,
+				allLoading: false, // 加载样式
+				questionLists: [], // 题库列表
+				param: {
+					pageNum: 1,
+					pageSize: 5,
+					querySign: 1,
+				},
+				total: 0,
+				options: {},
+				isGetOtherQuetion: false,
+			};
+		},
+		computed: {
+			...mapGetters(["userInfo", "config"]),
+		},
+		async onLoad(options) {
+			uni.hideTabBar();
+			this.options = options;
+			if (this.options.isAct && !this.$method.isLogin()) {
+				uni.navigateTo({
+					url: "/pages4/login/login?isBack=" + true + "&isAct=1",
+				});
+				return;
+			}
+		},
+		async onShow() {
+			let {
+				skipPort,
+				sign
+			} = this.options;
+			if (skipPort) {
+				this.options.skipPort = undefined;
+				this.options.sign = undefined;
+				await this.$method.skipLogin(skipPort);
+			}
+			if (this.$method.isLogin()) {
+				this.param.pageNum = 1;
+				this.questionLists = [];
+				this.isGetOtherQuetion = sign || (await this.getIsHaveOtherQuetion());
+				this.getBankList();
+			}
+		},
+		onPullDownRefresh() {
+			this.param.pageNum = 1;
+			this.questionLists = [];
+			this.getBankList();
+		},
+		onPageScroll(e) {
+			if (e.scrollTop > 100) {
+				this.backTopBtn = true
+			} else {
+				this.backTopBtn = false
+			}
+		},
+		onReachBottom() {
+			if (this.questionLists.length < this.total) {
+				this.param.pageNum++;
+				this.getBankList();
+			}
+		},
+		methods: {
+			// 查询用户拥有免费+自购题库商品 /bank/question/listUserFreeUnionBuyGoodsList
+			getBankList() {
+				if (!this.$method.isLogin()) {
+					return;
+				}
+				this.allLoading = true;
+				const fn = this.isGetOtherQuetion ?
+					"sdQuestionList" :
+					"listUserFreeUnionBuyGoodsList";
+				this.$api[fn](this.param)
+					.then((res) => {
+						if (res.data.code == 200) {
+							this.questionLists.push(...(res.data.rows || []));
+							this.total = res.data.total;
+						}
+						this.allLoading = false;
+					})
+					.catch((err) => {
+						this.allLoading = false;
+					});
+			},
+			toChoose() {
+				this.$store.state.current = 2
+				uni.switchTab({
+					url: '/pages/course/index'
+				});
+			},
+			toDailyPractice(item, child) {
+				this.$method.checkLock("bank").then((res) => {
+					if (child.paperName == "每日一练") {
+						uni.navigateTo({
+							url: "/pages2/dailyPractice/index?goodsId=" +
+								item.goodsId +
+								"&orderGoodsId=" +
+								item.orderGoodsId,
+						});
+					} else if (child.paperName == "随机练习") {
+						uni.navigateTo({
+							url: "/pages2/randomPractice/index?goodsId=" +
+								item.goodsId +
+								"&orderGoodsId=" +
+								item.orderGoodsId,
+						});
+					} else {
+						this.studyques(item, child);
+					}
+				});
+			},
+			// 进入练习
+			studyques(item, child) {
+				let sysTime = this.$method.timest();
+				if (
+					item.serviceStartTime &&
+					item.serviceEndTime &&
+					(sysTime <= item.serviceStartTime || sysTime >= item.serviceEndTime)
+				) {
+					uni.showToast({
+						icon: "none",
+						title: "不在学习服务期,不能进入学习",
+					});
+					return;
+				}
+				let paperId = (child && child.paperId) || "";
+				uni.navigateTo({
+					url: "/pages2/bank/question_detail?id=" +
+						item.goodsId +
+						"&orderGoodsId=" +
+						item.orderGoodsId +
+						"&paperId=" +
+						paperId,
+				});
+			},
+			// 是否含有山东题库
+			async getIsHaveOtherQuetion() {
+				return new Promise((resolve, reject) => {
+					this.$api.getIsHaveOtherQuetion().then((res) => {
+						if (res.data.data == 1) {
+							uni.showModal({
+								title: "提示",
+								content: "是否学习山东题库?",
+								success: (res) => {
+									resolve(res.confirm);
+								},
+							});
+						} else {
+							resolve(false);
+						}
+					});
+				});
+			},
+			toSdLearn(item) {
+				this.$api.getOtherExamId({
+					relId: item.qsId
+				}).then((res) => {
+					if (res.data.code == 200) {
+						uni.navigateTo({
+							url: "/pages2/bank/questionBank?id=" +
+								res.data.data.examId +
+								"&goodsid=" +
+								item.goodsId +
+								"&orderGoodsId=" +
+								item.orderGoodsId +
+								"&entryType=sd",
+						});
+					} else {
+						uni.showToast({
+							icon: "none",
+							title: res.data.msg,
+						});
+					}
+				});
+			},
+			toRecord(type) {
+				let url = [
+					"/pages2/subject/collect",
+					"/pages2/bank/question_record",
+					"/pages2/subject/wrong",
+					"",
+				][type];
+				if (this.isGetOtherQuetion) {
+					url += "?isOther=1";
+				}
+				uni.navigateTo({
+					url,
+				});
+			},
+		},
+	};
 </script>
 
 <style>
-page {
-  background: #eaeef1;
-}
+	page {
+		background: #eaeef1;
+	}
 </style>
 <style lang="scss" scoped>
-@import "./index.scss";
-</style>
+	@import "./index.scss";
+</style>

+ 9 - 1
pages/wd/index.vue

@@ -93,7 +93,7 @@
 			<view class="logout" @click="logout">退出</view>
 		</view>
 		<!-- tabbar -->
-		<myTabbar></myTabbar>
+		<myTabbar :backTopBtn="backTopBtn"></myTabbar>
 	</view>
 </template>
 
@@ -105,6 +105,7 @@
 	export default {
 		data() {
 			return {
+				backTopBtn:false,
 				list: [23, 24, 25, 26, 27, 28, 29],
 				content: "此功能暂未开放",
 				show: false,
@@ -119,6 +120,13 @@
 			uni.hideTabBar();
 			// console.log(option,987)
 		},
+		onPageScroll(e) {
+			if (e.scrollTop > 100) {
+				this.backTopBtn = true
+			} else {
+				this.backTopBtn = false
+			}
+		},
 		onShow() {
 			this.isLogin = this.$method.isLogin();
 			if (this.isLogin) {

+ 777 - 678
pages2/order/confirm_pay.vue

@@ -1,11 +1,11 @@
 <template>
-  <view>
-    <nav-bar title="订单支付"></nav-bar>
-    <view>
-      <view>
-        <view class="box2">
-          <view class="title2">支付信息</view>
-          <!-- <view style="padding:10rpx 30rpx;" v-for="(item,index) in shoppingCartList" :key="index">
+	<view>
+		<nav-bar title="订单支付"></nav-bar>
+		<view>
+			<view>
+				<view class="box2">
+					<view class="title2">支付信息</view>
+					<!-- <view style="padding:10rpx 30rpx;" v-for="(item,index) in shoppingCartList" :key="index">
 						<view class="list_title">
 							<view class="txt_left">商品名称</view>
 							<view class="txt_right">{{item.goodsName}}</view>
@@ -15,689 +15,788 @@
 							<view class="txt_right_price">¥ {{item.standPrice}}</view>
 						</view>
 					</view> -->
-          <view
-            v-for="(item, index) in shoppingCartList"
-            :key="index"
-            style="
+					<view v-for="(item, index) in shoppingCartList" :key="index" style="
               display: flex;
               justify-content: space-between;
               margin-bottom: 32rpx;
-            "
-          >
-            <image
-              :src="$method.splitImgHost(item.coverUrl)"
-              style="height: 120rpx; width: 204rpx; border-radius: 16rpx"
-            ></image>
-            <view class="right_con" style="margin-left: 20rpx">
-              <view style="color: #333333; font-size: 30rpx; font-weight: bold">
-                {{ item.goodsName }}
-              </view>
-              <view class="priceTag"> ¥ {{ item.standPrice }} </view>
-              <Class-time-tip
-                v-if="item.gradObj && item.gradObj.gradeId"
-                :classInfo="item.gradObj"
-              ></Class-time-tip>
-            </view>
-          </view>
-
-          <view class="info_right">
-            <!-- <u-line color="#D6D6DB" /> -->
-            <view class="list_item">
-              <view class="txt_left">应付总金额</view>
-              <view class="txt_right_price">¥ {{ totalPrice }}</view>
-            </view>
-          </view>
-        </view>
-        <view class="box3">
-          <view class="title2">支付方式</view>
-
-          <view>
-            <u-radio-group v-model="value" @change="radioGroupChange">
-              <view class="list_item">
-                <view class="txt_left_pay"
-                  ><image src="/static/wepay.png" class="pay_icon"></image
-                  >微信支付</view
-                >
-                <view
-                  ><u-radio @change="radioChange" name="wepay"></u-radio
-                ></view>
-              </view>
-              <view class="list_item" v-if="false">
-                <view class="txt_left_pay"
-                  ><image src="/static/unipay.png" class="pay_icon"></image
-                  >云闪付</view
-                >
-                <view
-                  ><u-radio @change="radioChange" name="unipay"></u-radio
-                ></view>
-              </view>
-            </u-radio-group>
-          </view>
-          <u-line color="#D6D6DB" />
-        </view>
-      </view>
-    </view>
-    <view class="bottomBox safeArea">
-      <view class="sums">
-        <text class="all_sum">总金额:</text>
-        <text class="priceTag">¥ {{ totalPrice }}</text>
-      </view>
-
-      <view style="display: flex; color: #ffffff; align-items: center">
-        <button class="btn2" @click="pay()" :disabled="btnNo">确认支付</button>
-      </view>
-    </view>
-
-    <u-modal
-      v-model="showModal"
-      :confirm-text="confirmText"
-      cancel-text="知道了"
-      cancel-color="#666666"
-      confirm-color="rgba(0, 122, 255, 1);"
-      :show-confirm-button="showConfirmButton"
-      :show-cancel-button="true"
-      :content="modalMsg"
-      @cancel="modalCancel()"
-      @confirm="modalConfirm()"
-      ref="uModal"
-    ></u-modal>
-  </view>
+            ">
+						<image :src="$method.splitImgHost(item.coverUrl)"
+							style="height: 120rpx; width: 204rpx; border-radius: 16rpx"></image>
+						<view class="right_con" style="margin-left: 20rpx">
+							<view style="color: #333333; font-size: 30rpx; font-weight: bold">
+								{{ item.goodsName }}
+							</view>
+							<view class="priceTag"> ¥ {{ item.standPrice }} </view>
+							<Class-time-tip v-if="item.gradObj && item.gradObj.gradeId"
+								:classInfo="item.gradObj"></Class-time-tip>
+						</view>
+					</view>
+
+					<view class="info_right">
+						<!-- <u-line color="#D6D6DB" /> -->
+						<view class="list_item">
+							<view class="txt_left">应付总金额</view>
+							<view class="txt_right_price">¥ {{ totalPrice }}</view>
+						</view>
+					</view>
+				</view>
+				<view class="box4" v-if="shoppingCartList.some(i => i.mailSign == 1)">
+				<view style="font-weight: bold;font-size: 28rpx;">
+					收件信息
+				</view>
+					<u-form :model="ruleForm" ref="ruleForm" label-position="top">
+						<u-form-item required label="收件人" prop="consignee">
+							<u-input v-model="ruleForm.consignee" />
+						</u-form-item>
+						<u-form-item required label="手机号码" prop="consigneePhone">
+							<u-input v-model="ruleForm.consigneePhone" />
+						</u-form-item>
+						<u-form-item required label="收件地址" prop="consigneeSite">
+							<u-input v-model="ruleForm.consigneeSite" />
+						</u-form-item>
+					</u-form>
+				</view>
+				<view class="box3">
+					<view class="title2">支付方式</view>
+
+					<view>
+						<u-radio-group v-model="value" @change="radioGroupChange">
+							<view class="list_item">
+								<view class="txt_left_pay">
+									<image src="/static/wepay.png" class="pay_icon"></image>微信支付
+								</view>
+								<view><u-radio @change="radioChange" name="wepay"></u-radio></view>
+							</view>
+							<view class="list_item" v-if="false">
+								<view class="txt_left_pay">
+									<image src="/static/unipay.png" class="pay_icon"></image>云闪付
+								</view>
+								<view><u-radio @change="radioChange" name="unipay"></u-radio></view>
+							</view>
+						</u-radio-group>
+					</view>
+					<u-line color="#D6D6DB" />
+				</view>
+			</view>
+		</view>
+		<view class="bottomBox safeArea">
+			<view class="sums">
+				<text class="all_sum">总金额:</text>
+				<text class="priceTag">¥ {{ totalPrice }}</text>
+			</view>
+
+			<view style="display: flex; color: #ffffff; align-items: center">
+				<button class="btn2" @click="pay()" :disabled="btnNo">确认支付</button>
+			</view>
+		</view>
+
+		<u-modal v-model="showModal" :confirm-text="confirmText" cancel-text="知道了" cancel-color="#666666"
+			confirm-color="rgba(0, 122, 255, 1);" :show-confirm-button="showConfirmButton" :show-cancel-button="true"
+			:content="modalMsg" @cancel="modalCancel()" @confirm="modalConfirm()" ref="uModal"></u-modal>
+	</view>
 </template>
 
 <script>
-import { tenantId } from "@/common/request.js";
-import { mapGetters, mapActions } from "vuex";
-import { getQueryString } from "../../common/navTo";
-import ClassTimeTip from "../../components/common/ClassTimeTip.vue";
-export default {
-  data() {
-    return {
-      showModal: false,
-      modalMsg: "",
-      list: [
-        {
-          name: "网课",
-        },
-        {
-          name: "题库通",
-        },
-      ],
-      array: [
-        "全部",
-        "建设工程施工管理",
-        "机电全科",
-        "机电工程管理与实",
-        "机电全科",
-        "全科",
-      ],
-      current: 0,
-      menuIndex: 0,
-      value: "wepay",
-      btnNo: false,
-      isBK: "",
-      fromCart: "",
-      hasPaying: false,
-      showConfirmButton: false,
-      confirmText: "",
-      options: {},
-    };
-  },
-  onPullDownRefresh() {},
-  onLoad(option) {
-    this.fromCart = option.fromCart;
-    this.isBK = option.isBK;
-    this.options = option;
-  },
-  onShow() {
-	  console.log(process.env,'env')
-    // #ifdef H5
-    this.authorize();
-    // #endif
-  },
-  methods: {
-    ...mapActions(["getUserInfo"]),
-    authorize() {
-		console.log("process.env",process.env)
-      if (location.search.includes("code")) {
-        const code = getQueryString("code");
-        this.$store.commit("setShoppingCartList", {
-          shoppingCartList: uni.getStorageSync("shopList"),
-        });
-        uni.setStorageSync("h5_code", code);
-        this.OfficialLogin(code);
-      } else {
-        // 没有code,就重定向到地址https://www.xyyxt.net?ask_type=https://api.xyyxt.net/pages2/order/confirm_pay 去获取code,授权后就会把code带上然后访问域名
-        // ?fromCart=&code=061F5a1w3aolh03SLe1w3sMsCF4F5a16&state=STATE
-        this.$api.checkBindGzh().then((res) => {
-			// && process.env.NODE_ENV !== "development"
-          if (!res.data.data ) {
-            uni.setStorageSync("shopList", this.shoppingCartList);
-            const url = window.location.host + "/pages2/order/confirm_pay";
-            // 跳自己授权
-            if (this.config.gzhSelfLicense) {
-				uni.request({
-				  url: `https://cloud.xyyxt.net/app/common/wx/config`,
-				  method: "get",
-				  data: {},
-				  header: {
-				    TenantId: tenantId,
-				  },
-				  success: (res) => {
-				    location.replace(
-				      `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${
+	import {
+		tenantId
+	} from "@/common/request.js";
+	import {
+		mapGetters,
+		mapActions
+	} from "vuex";
+	import {
+		getQueryString
+	} from "../../common/navTo";
+	import ClassTimeTip from "../../components/common/ClassTimeTip.vue";
+	export default {
+		data() {
+			const validateTel = (rule, value, callback) => {
+				var reg = /^1[34578][0-9]{9}$/;
+				if (!reg.test(value)) {
+					return callback(new Error("请输入正确手机号码"));
+				} else {
+					callback();
+				}
+			};
+			return {
+				ruleForm: {
+					consignee: '',
+					consigneePhone: '',
+					consigneeSite: '',
+				},
+				rules: {
+					consignee: [{
+						required: true,
+						message: '请输入收件人',
+						trigger: 'blur'
+					}],
+					consigneePhone: [{
+						required: true,
+						validator: validateTel,
+						trigger: 'blur'
+					}],
+					consigneeSite: [{
+						required: true,
+						message: '请输入收件地址',
+						trigger: 'blur'
+					}],
+				},
+				showModal: false,
+				modalMsg: "",
+				list: [{
+						name: "网课",
+					},
+					{
+						name: "题库通",
+					},
+				],
+				array: [
+					"全部",
+					"建设工程施工管理",
+					"机电全科",
+					"机电工程管理与实",
+					"机电全科",
+					"全科",
+				],
+				current: 0,
+				menuIndex: 0,
+				value: "wepay",
+				btnNo: false,
+				isBK: "",
+				fromCart: "",
+				hasPaying: false,
+				showConfirmButton: false,
+				confirmText: "",
+				options: {},
+			};
+		},
+		onPullDownRefresh() {},
+		onLoad(option) {
+			this.fromCart = option.fromCart;
+			this.isBK = option.isBK;
+			this.options = option;
+			this.ruleForm.consignee = this.$store.state.userInfo.realname || "";
+			this.ruleForm.consigneePhone =
+				this.$store.state.userInfo.telphone || "";
+			this.ruleForm.consigneeSite = "";
+		},
+		onShow() {
+			console.log(process.env, 'env')
+			// #ifdef H5
+			this.authorize();
+			// #endif
+		},
+		// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
+		onReady() {
+			if (this.shoppingCartList.some(i => i.mailSign == 1)) {
+				this.$refs.ruleForm.setRules(this.rules);
+			}
+		},
+		methods: {
+			...mapActions(["getUserInfo"]),
+			authorize() {
+				console.log("process.env", process.env)
+				if (location.search.includes("code")) {
+					const code = getQueryString("code");
+					this.$store.commit("setShoppingCartList", {
+						shoppingCartList: uni.getStorageSync("shopList"),
+					});
+					uni.setStorageSync("h5_code", code);
+					this.OfficialLogin(code);
+				} else {
+					// 没有code,就重定向到地址https://www.xyyxt.net?ask_type=https://api.xyyxt.net/pages2/order/confirm_pay 去获取code,授权后就会把code带上然后访问域名
+					// ?fromCart=&code=061F5a1w3aolh03SLe1w3sMsCF4F5a16&state=STATE
+					this.$api.checkBindGzh().then((res) => {
+						// && process.env.NODE_ENV !== "development"
+						if (!res.data.data) {
+							uni.setStorageSync("shopList", this.shoppingCartList);
+							const url = window.location.host + "/pages2/order/confirm_pay";
+							// 跳自己授权
+							if (this.config.gzhSelfLicense) {
+								uni.request({
+									url: `https://cloud.xyyxt.net/app/common/wx/config`,
+									method: "get",
+									data: {},
+									header: {
+										TenantId: tenantId,
+									},
+									success: (res) => {
+										location.replace(
+											`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${
 				        res.data.data.gzhAppId
 				      }&redirect_uri=${encodeURIComponent(
 				        "https://" + url
 				      )}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
-				    );
-				  },
-				  fail: (err) => {
-				    uni.showToast({
-				      title: "请求接口失败",
-				      icon: "none",
-				    });
-				  },
+										);
+									},
+									fail: (err) => {
+										uni.showToast({
+											title: "请求接口失败",
+											icon: "none",
+										});
+									},
+								});
+
+
+								// this.$api.getWxConfig().then((res) => {
+								//   location.replace(
+								//     `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${
+								//       res.data.data.gzhAppId
+								//     }&redirect_uri=${encodeURIComponent(
+								//       "https://" + url
+								//     )}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
+								//   );
+								// });
+							} else {
+								location.replace("https://www.xyyxt.net/?ask_type=" + url);
+							}
+						}
+					});
+				}
+			},
+			OfficialLogin(code) {
+				this.$api
+					.OfficialLogin({
+						code,
+					})
+					.then((res) => {
+						if (res.data.code !== 200) {
+							this.$u.toast(res.data.msg);
+						}
+					});
+			},
+			// 二建 && 七大员 需要先完善信息
+			async checkNeedInfo() {
+				let keys = [];
+				this.shoppingCartList.forEach((item) => {
+					if (item.erJianErZao) {
+						keys.push("realname", "idCard");
+					}
+					if (item.jjShiGongYuan && item.sevenYear != '2021' && item.sevenYear != '2022') {
+						keys.push("realname", "idCard", "sex", "companyName", "eduLevel");
+					}
+				});
+				if (keys.length) {
+					if (!this.userInfo) await this.getUserInfo();
+					if (keys.some((key) => !this.userInfo[key])) {
+						uni.showModal({
+							title: "提示",
+							content: "请先完善个人信息!",
+							success: (res) => {
+								if (res.confirm) {
+									uni.navigateTo({
+										url: "/pages2/verify/info_fill?keys=" +
+											Array.from(new Set(keys)).toString(),
+									});
+								}
+							},
+						});
+						return false;
+					}
+				}
+				return true;
+			},
+			async postOrder() {
+				let list = this.shoppingCartList;
+				for (let i = 0; i < list.length; i++) {
+					let item = list[i];
+					if (item.goodsType == 1) {
+						if (item.templateType == "class") {
+							delete item.gradObj.goodsList;
+							let goodsInputData = {
+								type: "class",
+								gradeId: item.gradObj.gradeId,
+								gradeJson: JSON.stringify(item.gradObj),
+							};
+							item.goodsInputData = goodsInputData;
+						}
+						if (item.templateType == "apply") {
+							let goodsInputData = {
+								type: "apply",
+								applyAreasJson: JSON.stringify(item.applyAreas),
+								examDateJson: JSON.stringify(item.examDate),
+							};
+							item.goodsInputData = goodsInputData;
+						}
+					}
+					if (this.options.distributionCode) {
+						item.distributionLinkCode = this.options.linkCode;
+						item.distributionCode = this.options.distributionCode;
+					}
+				}
+					  
+				list = list.map(i => {
+					if (i.mailSign == 1) {
+						let ij = JSON.parse(JSON.stringify(i))
+						return {...this.ruleForm,...ij}
+					} else {
+						return i;
+					}
+				});
+				let data = {
+					goodsList: list
+				};
+				// 邀请码
+				if (this.sac) {
+					data["shareActivityCode"] = this.sac;
+				}
+
+				// #ifdef MP-WEIXIN
+				this.$api.placeSmallOrder(data).then((res) => {
+					this.orderResult(res);
 				});
-				
-				
-              // this.$api.getWxConfig().then((res) => {
-              //   location.replace(
-              //     `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${
-              //       res.data.data.gzhAppId
-              //     }&redirect_uri=${encodeURIComponent(
-              //       "https://" + url
-              //     )}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
-              //   );
-              // });
-            } else {
-              location.replace("https://www.xyyxt.net/?ask_type=" + url);
-            }
-          }
-        });
-      }
-    },
-    OfficialLogin(code) {
-      this.$api
-        .OfficialLogin({
-          code,
-        })
-        .then((res) => {
-          if (res.data.code !== 200) {
-            this.$u.toast(res.data.msg);
-          }
-        });
-    },
-    // 二建 && 七大员 需要先完善信息
-    async checkNeedInfo() {
-      let keys = [];
-      this.shoppingCartList.forEach((item) => {
-        if (item.erJianErZao) {
-          keys.push("realname", "idCard");
-        }
-        if (item.jjShiGongYuan && item.sevenYear != '2021' && item.sevenYear != '2022') {
-          keys.push("realname", "idCard", "sex", "companyName", "eduLevel");
-        }
-      });
-      if (keys.length) {
-        if (!this.userInfo) await this.getUserInfo();
-        if (keys.some((key) => !this.userInfo[key])) {
-          uni.showModal({
-            title: "提示",
-            content: "请先完善个人信息!",
-            success: (res) => {
-              if (res.confirm) {
-                uni.navigateTo({
-                  url:
-                    "/pages2/verify/info_fill?keys=" +
-                    Array.from(new Set(keys)).toString(),
-                });
-              }
-            },
-          });
-          return false;
-        }
-      }
-      return true;
-    },
-    async postOrder() {
-      let list = this.shoppingCartList;
-      for (let i = 0; i < list.length; i++) {
-        let item = list[i];
-        if (item.goodsType == 1) {
-          if (item.templateType == "class") {
-            delete item.gradObj.goodsList;
-            let goodsInputData = {
-              type: "class",
-              gradeId: item.gradObj.gradeId,
-              gradeJson: JSON.stringify(item.gradObj),
-            };
-            item.goodsInputData = goodsInputData;
-          }
-          if (item.templateType == "apply") {
-            let goodsInputData = {
-              type: "apply",
-              applyAreasJson: JSON.stringify(item.applyAreas),
-              examDateJson: JSON.stringify(item.examDate),
-            };
-            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) => {
-        this.orderResult(res);
-      });
-      // #endif
-
-      // #ifdef H5
-      data["url"] = location.href;
-      this.$api.placeGzhOrder(data).then((res) => {
-        console.log(res, "h5支付res");
-        this.orderResult(res);
-      });
-      // #endif
-    },
-    orderResult(res) {
-      if (res.data.code == 200) {
-        uni.setStorageSync("updateCart", 1); //提醒刷新购物车
-        if (this.totalPrice == 0) {
-          //免费商品
-          uni.redirectTo({
-            url: `/pages2/order/confirm_success?sn=${res.data.data.orderSn}&isBk=${this.isBK}`,
-          });
-        } else {
-          let data = res.data.data;
-          uni.showLoading({
-            title: "支付中",
-            mask: true,
-          });
-          // #ifdef MP-WEIXIN
-          uni.requestPayment({
-            provider: data.provider,
-            nonceStr: data.nonceStr,
-            package: data.package,
-            signType: data.signType,
-            paySign: data.sign,
-            timeStamp: String(data.timeStamp),
-            success: (res) => {
-              uni.hideLoading();
-              this.btnNo = false;
-              uni.redirectTo({
-                url: `/pages2/order/confirm_success?sn=${data.orderSn}&isBk=${this.isBK}`,
-              });
-              console.log("success:" + JSON.stringify(res));
-            },
-            fail: (err) => {
-              uni.hideLoading();
-              this.btnNo = false;
-              console.log("fail:" + JSON.stringify(err));
-            },
-          });
-          // #endif
-
-          // #ifdef H5
-          this.h5_wxpay(data);
-          // #endif
-        }
-      } else if (res.data.code == 510) {
-        //有未支付订单
-        this.hasPaying = true;
-        this.btnNo = false;
-        this.modalMsg = res.data.msg;
-        this.showConfirmButton = true;
-        this.confirmText = "跳转到【我的订单】\n查看未支付订单";
-        this.showModal = true;
-      } else if (res.data.code == 511) {
-        //511 重复购买
-        this.hasPaying = false;
-        this.btnNo = false;
-        this.modalMsg = res.data.msg;
-        this.showConfirmButton = true;
-        this.showModal = true;
-
-        if (this.fromCart) {
-          console.log(this.fromCart);
-          this.confirmText = "返回购物车";
-        } else {
-          let type = "";
-          if (this.shoppingCartList.length == 1) {
-            type = this.shoppingCartList[0].goodsType;
-          } else {
-            type = this.shoppingCartList[0].goodsType;
-
-            if (this.shoppingCartList.find((item) => item.goodsType != type)) {
-              type = 3;
-            }
-          }
-          this.confirmText =
-            type == 1 || type == 6
-              ? "继续选课"
-              : type == 2
-              ? "继续选题"
-              : type == 3 || type == 8
-              ? "继续选购"
-              : "";
-        }
-      } else {
-        this.hasPaying = false;
-        this.btnNo = false;
-        this.showConfirmButton = false;
-        this.modalMsg = res.data.msg;
-        this.showModal = true;
-      }
-    },
-    h5_wxpay(data) {
-      console.log("====调起支付状态", data);
-      let self = this;
-      function onBridgeReady() {
-        // 加载框
-        WeixinJSBridge.invoke(
-          "getBrandWCPayRequest",
-          {
-            appId: data.appId, // 公众号名称,由商户传入
-            timeStamp: data.timeStamp, // 时间戳,自1970年以来的秒数
-            nonceStr: data.nonceStr, // 随机串
-            package: data.package,
-            signType: data.signType, // 微信签名方式:
-            paySign: data.paySign, // 微信签名
-          },
-          function (res) {
-            // 判断支付状态
-            console.log("支付状态", res, "this:", this, self);
-            if (res.err_msg === "get_brand_wcpay_request:ok") {
-              self.$u.toast("支付成功");
-              uni.hideLoading();
-              self.btnNo = false;
-              uni.redirectTo({
-                url: `/pages2/order/confirm_success?sn=${data.orderSn}&isBk=${self.isBK}`,
-              });
-            } else if (res.err_msg === "get_brand_wcpay_request:cancel") {
-              self.$u.toast("取消支付");
-            } else {
-              uni.hideLoading();
-              self.btnNo = false;
-              self.$u.toast("支付失败");
-            }
-          }
-        );
-      }
-      if (typeof WeixinJSBridge === "undefined") {
-        if (document.addEventListener) {
-          document.addEventListener(
-            "WeixinJSBridgeReady",
-            onBridgeReady,
-            false
-          );
-        } else if (document.attachEvent) {
-          document.attachEvent("WeixinJSBridgeReady", onBridgeReady);
-          document.attachEvent("onWeixinJSBridgeReady", onBridgeReady);
-        }
-      } else {
-        onBridgeReady();
-      }
-    },
-    modalCancel() {
-      this.showModal = false;
-    },
-    modalConfirm() {
-      if (this.hasPaying) {
-        uni.navigateTo({
-          url: "/pages2/order/index?current=0",
-        });
-      } else {
-        if (this.fromCart) {
-          uni.navigateTo({
-            url: "/pages4/shopping/shoppingCart",
-          });
-        } else {
-          if (this.shoppingCartList[0].goodsType == 8) {
-			  	this.$store.state.current = 3
-			  	uni.switchTab({
-			  		url: '/pages/course/index'
-			  	});
-            // uni.reLaunch({
-            //   url: "/pages/information/index",
-            // });
-            return;
-          }
-          uni.switchTab({
-            url: "/pages/course/index",
-          });
-        }
-      }
-    },
-    getOpenid(code) {
-      let self = this;
-      this.$api.wxOpenid({ code: code }).then((res) => {
-        if (res.data.code == 200) {
-          self.postOrder();
-        }
-      });
-    },
-    async pay() {
-      if (!(await this.checkNeedInfo())) {
-        return;
-      }
-      let self = this;
-      this.btnNo = true;
-      // #ifdef MP-WEIXIN
-      uni.login({
-        provider: "weixin",
-        success: function (loginRes) {
-          self.getOpenid(loginRes.code);
-        },
-      });
-      // #endif
-
-      // #ifdef H5
-      // 在首页已经请求过接口/gzh_login 提交code了
-      this.postOrder();
-      // #endif
-    },
-    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", "sac", "config"]),
-    totalPrice() {
-      return this.shoppingCartList.reduce(
-        (a, b) => a + Number(b.standPrice),
-        0
-      );
-    },
-  },
-  components: { ClassTimeTip },
-};
+				// #endif
+
+				// #ifdef H5
+				data["url"] = location.href;
+				this.$api.placeGzhOrder(data).then((res) => {
+					console.log(res, "h5支付res");
+					this.orderResult(res);
+				});
+				// #endif
+			},
+			orderResult(res) {
+				if (res.data.code == 200) {
+					uni.setStorageSync("updateCart", 1); //提醒刷新购物车
+					if (this.totalPrice == 0) {
+						//免费商品
+						uni.redirectTo({
+							url: `/pages2/order/confirm_success?sn=${res.data.data.orderSn}&isBk=${this.isBK}`,
+						});
+					} else {
+						let data = res.data.data;
+						uni.showLoading({
+							title: "支付中",
+							mask: true,
+						});
+						// #ifdef MP-WEIXIN
+						uni.requestPayment({
+							provider: data.provider,
+							nonceStr: data.nonceStr,
+							package: data.package,
+							signType: data.signType,
+							paySign: data.sign,
+							timeStamp: String(data.timeStamp),
+							success: (res) => {
+								uni.hideLoading();
+								this.btnNo = false;
+								uni.redirectTo({
+									url: `/pages2/order/confirm_success?sn=${data.orderSn}&isBk=${this.isBK}`,
+								});
+								console.log("success:" + JSON.stringify(res));
+							},
+							fail: (err) => {
+								uni.hideLoading();
+								this.btnNo = false;
+								console.log("fail:" + JSON.stringify(err));
+							},
+						});
+						// #endif
+
+						// #ifdef H5
+						this.h5_wxpay(data);
+						// #endif
+					}
+				} else if (res.data.code == 510) {
+					//有未支付订单
+					this.hasPaying = true;
+					this.btnNo = false;
+					this.modalMsg = res.data.msg;
+					this.showConfirmButton = true;
+					this.confirmText = "跳转到【我的订单】\n查看未支付订单";
+					this.showModal = true;
+				} else if (res.data.code == 511) {
+					//511 重复购买
+					this.hasPaying = false;
+					this.btnNo = false;
+					this.modalMsg = res.data.msg;
+					this.showConfirmButton = true;
+					this.showModal = true;
+
+					if (this.fromCart) {
+						console.log(this.fromCart);
+						this.confirmText = "返回购物车";
+					} else {
+						let type = "";
+						if (this.shoppingCartList.length == 1) {
+							type = this.shoppingCartList[0].goodsType;
+						} else {
+							type = this.shoppingCartList[0].goodsType;
+
+							if (this.shoppingCartList.find((item) => item.goodsType != type)) {
+								type = 3;
+							}
+						}
+						this.confirmText =
+							type == 1 || type == 6 ?
+							"继续选课" :
+							type == 2 ?
+							"继续选题" :
+							type == 3 || type == 8 ?
+							"继续选购" :
+							"";
+					}
+				} else {
+					this.hasPaying = false;
+					this.btnNo = false;
+					this.showConfirmButton = false;
+					this.modalMsg = res.data.msg;
+					this.showModal = true;
+				}
+			},
+			h5_wxpay(data) {
+				console.log("====调起支付状态", data);
+				let self = this;
+
+				function onBridgeReady() {
+					// 加载框
+					WeixinJSBridge.invoke(
+						"getBrandWCPayRequest", {
+							appId: data.appId, // 公众号名称,由商户传入
+							timeStamp: data.timeStamp, // 时间戳,自1970年以来的秒数
+							nonceStr: data.nonceStr, // 随机串
+							package: data.package,
+							signType: data.signType, // 微信签名方式:
+							paySign: data.paySign, // 微信签名
+						},
+						function(res) {
+							// 判断支付状态
+							console.log("支付状态", res, "this:", this, self);
+							if (res.err_msg === "get_brand_wcpay_request:ok") {
+								self.$u.toast("支付成功");
+								uni.hideLoading();
+								self.btnNo = false;
+								uni.redirectTo({
+									url: `/pages2/order/confirm_success?sn=${data.orderSn}&isBk=${self.isBK}`,
+								});
+							} else if (res.err_msg === "get_brand_wcpay_request:cancel") {
+								self.$u.toast("取消支付");
+							} else {
+								uni.hideLoading();
+								self.btnNo = false;
+								self.$u.toast("支付失败");
+							}
+						}
+					);
+				}
+				if (typeof WeixinJSBridge === "undefined") {
+					if (document.addEventListener) {
+						document.addEventListener(
+							"WeixinJSBridgeReady",
+							onBridgeReady,
+							false
+						);
+					} else if (document.attachEvent) {
+						document.attachEvent("WeixinJSBridgeReady", onBridgeReady);
+						document.attachEvent("onWeixinJSBridgeReady", onBridgeReady);
+					}
+				} else {
+					onBridgeReady();
+				}
+			},
+			modalCancel() {
+				this.showModal = false;
+			},
+			modalConfirm() {
+				if (this.hasPaying) {
+					uni.navigateTo({
+						url: "/pages2/order/index?current=0",
+					});
+				} else {
+					if (this.fromCart) {
+						uni.navigateTo({
+							url: "/pages4/shopping/shoppingCart",
+						});
+					} else {
+						if (this.shoppingCartList[0].goodsType == 8) {
+							this.$store.state.current = 3
+							uni.switchTab({
+								url: '/pages/course/index'
+							});
+							// uni.reLaunch({
+							//   url: "/pages/information/index",
+							// });
+							return;
+						}
+						uni.switchTab({
+							url: "/pages/course/index",
+						});
+					}
+				}
+			},
+			getOpenid(code) {
+				let self = this;
+				this.$api.wxOpenid({
+					code: code
+				}).then((res) => {
+					if (res.data.code == 200) {
+						self.postOrder();
+					}
+				});
+			},
+			async pay() {
+				if (this.shoppingCartList.some(i => i.mailSign == 1)) {
+					var DontStatus = false;
+					this.$refs.ruleForm.validate(valid => {
+						if (valid) {
+							DontStatus = false;
+							console.log('验证通过');
+						} else {
+							DontStatus = true;
+							console.log('验证失败');
+							return
+						}
+					});
+					if (DontStatus) return
+				}
+				if (!(await this.checkNeedInfo())) {
+					return;
+				}
+				let self = this;
+				this.btnNo = true;
+				// #ifdef MP-WEIXIN
+				uni.login({
+					provider: "weixin",
+					success: function(loginRes) {
+						self.getOpenid(loginRes.code);
+					},
+				});
+				// #endif
+
+				// #ifdef H5
+				// 在首页已经请求过接口/gzh_login 提交code了
+				this.postOrder();
+				// #endif
+			},
+			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", "sac", "config"]),
+			totalPrice() {
+				return this.shoppingCartList.reduce(
+					(a, b) => a + Number(b.standPrice),
+					0
+				);
+			},
+		},
+		components: {
+			ClassTimeTip
+		},
+	};
 </script>
 <style>
-::-webkit-scrollbar {
-  width: 0;
-  height: 0;
-  color: transparent;
-}
-page {
-  background-color: #eaeef1;
-}
+	::-webkit-scrollbar {
+		width: 0;
+		height: 0;
+		color: transparent;
+	}
+
+	page {
+		background-color: #eaeef1;
+	}
 </style>
 <style lang="scss" scoped>
-.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%;
-  height: 886rpx;
-  background: #ffffff;
-  // border-radius: 16rpx;
-  margin-top: 16rpx;
-  padding: 32rpx 32rpx 0rpx 32rpx;
-}
-.tip {
-  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: 32rpx;
-  font-weight: bold;
-  color: #ff2d55;
-}
-.txt_left {
-  font-size: 28rpx;
-  color: #666666;
-}
-.txt_right {
-  text-align: right;
-  color: #333333;
-  font-weight: bold;
-  width: 75%;
-}
-.list_title {
-  display: flex;
-  justify-content: space-between;
-}
-.list_item {
-  display: flex;
-  justify-content: space-between;
-  height: 110rpx;
-  align-items: center;
-}
-.title2 {
-  font-size: 32rpx;
-  font-weight: bold;
-  color: #333333;
-  // height: 80rpx;
-  // line-height: 80rpx;
-  // margin-left: 30rpx;
-  margin-bottom: 32rpx;
-}
-.box2 {
-  width: 100%;
-  background: #ffffff;
-  // border-radius: 16rpx;
-  padding: 32rpx 32rpx 0rpx 32rpx;
-  .right_con {
-    width: 450rpx;
-  }
-  .priceTag {
-    font-size: 28rpx;
-    font-family: PingFang SC;
-    font-weight: bold;
-    color: #fc3f3f;
-    margin-top: 6rpx;
-    margin-bottom: 10rpx;
-  }
-  .info_right {
-    height: 110rpx;
-    line-height: 110rpx;
-    border-top: 1rpx solid #f2f2f2;
-  }
-}
-.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%;
-  height: 120rpx;
-  background: #ffffff;
-  border-radius: 16rpx;
-}
-.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;
-  border-radius: 0;
-}
-.bottomBox {
-  position: fixed;
-  bottom: 0;
-  width: 100%;
-  left: 0;
-  height: 132rpx;
-  background-color: #ffffff;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  box-sizing: unset;
-  box-shadow: 0px -2px 6px 0px rgba(0, 0, 0, 0.1);
-  > view {
-    margin: 0 30rpx;
-  }
-  .sums {
-    display: flex;
-  }
-  .all_sum {
-    font-size: 28rpx;
-    font-weight: 500;
-    color: #303030;
-  }
-  .priceTag {
-    font-size: 32rpx;
-    font-weight: 800;
-    color: #fc3f3f;
-  }
-  .btn2 {
-    width: 232rpx;
-    height: 92rpx;
-    background: #fc3f3f;
-    border-radius: 120rpx;
-    text-align: center;
-    line-height: 92rpx;
-    color: #fff;
-  }
-}
-</style>
+	.txt_left_pay {
+		display: flex;
+		align-items: center;
+		height: 64rpx;
+		font-size: 24rpx;
+		color: #666666;
+	}
+
+	.pay_icon {
+		width: 64rpx;
+		height: 64rpx;
+		margin-right: 10rpx;
+	}
+
+	.box4 {
+		width: 100%;
+		background: #ffffff;
+		// border-radius: 16rpx;
+		margin-top: 16rpx;
+		padding: 32rpx 32rpx 0rpx 32rpx;
+	}
+
+	.box3 {
+		width: 100%;
+		// height: 886rpx;
+		background: #ffffff;
+		// border-radius: 16rpx;
+		margin-top: 16rpx;
+		padding: 32rpx 32rpx 0rpx 32rpx;
+	}
+
+	.tip {
+		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: 32rpx;
+		font-weight: bold;
+		color: #ff2d55;
+	}
+
+	.txt_left {
+		font-size: 28rpx;
+		color: #666666;
+	}
+
+	.txt_right {
+		text-align: right;
+		color: #333333;
+		font-weight: bold;
+		width: 75%;
+	}
+
+	.list_title {
+		display: flex;
+		justify-content: space-between;
+	}
+
+	.list_item {
+		display: flex;
+		justify-content: space-between;
+		height: 110rpx;
+		align-items: center;
+	}
+
+	.title2 {
+		font-size: 32rpx;
+		font-weight: bold;
+		color: #333333;
+		// height: 80rpx;
+		// line-height: 80rpx;
+		// margin-left: 30rpx;
+		margin-bottom: 32rpx;
+	}
+
+	.box2 {
+		width: 100%;
+		background: #ffffff;
+		// border-radius: 16rpx;
+		padding: 32rpx 32rpx 0rpx 32rpx;
+
+		.right_con {
+			width: 450rpx;
+		}
+
+		.priceTag {
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fc3f3f;
+			margin-top: 6rpx;
+			margin-bottom: 10rpx;
+		}
+
+		.info_right {
+			height: 110rpx;
+			line-height: 110rpx;
+			border-top: 1rpx solid #f2f2f2;
+		}
+	}
+
+	.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%;
+		height: 120rpx;
+		background: #ffffff;
+		border-radius: 16rpx;
+	}
+
+	.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;
+		border-radius: 0;
+	}
+
+	.bottomBox {
+		position: fixed;
+		bottom: 0;
+		width: 100%;
+		left: 0;
+		height: 132rpx;
+		background-color: #ffffff;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		box-sizing: unset;
+		box-shadow: 0px -2px 6px 0px rgba(0, 0, 0, 0.1);
+
+		>view {
+			margin: 0 30rpx;
+		}
+
+		.sums {
+			display: flex;
+		}
+
+		.all_sum {
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #303030;
+		}
+
+		.priceTag {
+			font-size: 32rpx;
+			font-weight: 800;
+			color: #fc3f3f;
+		}
+
+		.btn2 {
+			width: 232rpx;
+			height: 92rpx;
+			background: #fc3f3f;
+			border-radius: 120rpx;
+			text-align: center;
+			line-height: 92rpx;
+			color: #fff;
+		}
+	}
+</style>

+ 69 - 10
pages2/order/index.vue

@@ -43,7 +43,8 @@
                       items.sevenYear
                     }}</view>
 										<view v-if="item.orderFrom !== 6" class="goods-price">¥
-											{{ items.goodsRealPrice }}</view>
+											{{ items.goodsRealPrice }}
+										</view>
 									</view>
 								</view>
 								<view style="
@@ -126,11 +127,15 @@
 		<!-- 退款弹窗 -->
 		<u-popup v-model="show" :mask-close-able="false" closeable mode="center" width="80%" border-radius="24">
 			<view class="rf-popup-main">
-				<view class="title">提示</view>
-				<view class="tip">确认要退款吗</view>
-				<u-input v-model="refundForm.applyReason" placeholder-style="color:#999999" type="textarea"
-					placeholder="请输入退款原因" />
-				<u-button type="primary" style="border-radius: 60rpx" @click="refund">确定</u-button>
+				<view class="title">确认要退款吗</view>
+				<u-select v-model="showConfirm" mode="single-column" :list="refundList"
+					:default-value="[refundForm.applyReasonIndex-1]" @confirm="confirm"></u-select>
+				<view @click="showConfirm = true" class="btn_refund">
+					{{refundForm.applyReasonIndex?refundList[refundForm.applyReasonIndex-1].label:'选择退款原因'}}
+				</view>
+				<u-input v-if="refundForm.applyReasonIndex == 5" v-model="refundForm.applyReason"
+					placeholder-style="color:#999999" placeholder="输入退款原因" class="applyInput" />
+				<u-button type="primary" style="border-radius: 60rpx;" @click="refund">确定</u-button>
 			</view>
 		</u-popup>
 	</view>
@@ -144,6 +149,28 @@
 		components: {},
 		data() {
 			return {
+				showConfirm: false,
+				refundList: [{
+						label: "已学过,重复报名",
+						value: 1
+					},
+					{
+						label: "报错专业/课程",
+						value: 2
+					},
+					{
+						label: "班级未开班",
+						value: 3
+					},
+					{
+						label: "培训/继教周期未到",
+						value: 4
+					},
+					{
+						label: "其他",
+						value: 5
+					}
+				],
 				list: [{
 						name: "待支付",
 						count: 0,
@@ -194,8 +221,7 @@
 			return {
 				title: "中正",
 				path: `/pages/index/index?inviteCode=` + userInfo == null ?
-					"" :
-					userInfo.userAccount,
+					"" : userInfo.userAccount,
 			};
 		},
 		onReachBottom() {
@@ -203,6 +229,10 @@
 			this.getFY();
 		},
 		methods: {
+			confirm(e) {
+				this.refundForm.applyReasonIndex = e[0].value
+				this.refundForm.applyReason = ''
+			},
 			getOrderNum() {
 				this.$api
 					.getorderlists({
@@ -251,17 +281,31 @@
 					url: `/pages2/invoice/index`,
 				});
 			},
-			confirm() {},
 			handelRefund(orderSn, item) {
 				this.refundForm = {
 					orderSn: orderSn,
 					goodsId: item.goodsId,
 					orderGoodsId: item.orderGoodsId,
-					applyReason: ""
+					applyReasonIndex: "",
+					applyReason: "",
 				};
 				this.show = true;
 			},
 			refund() {
+				if (!this.refundForm.applyReasonIndex) {
+					uni.showToast({
+						title: "请选择退款原因"
+					})
+					return
+				} else if (this.refundForm.applyReasonIndex == 5 && !this.refundForm.applyReason) {
+					uni.showToast({
+						title: "请输入退款原因"
+					})
+					return
+				}
+				this.refundForm.applyReason = this.refundForm.applyReasonIndex == 5 ? this.refundForm.applyReason : this
+					.refundList[this.refundForm.applyReasonIndex - 1].label
+				delete this.refundForm.applyReasonIndex
 				this.$api.refundSmallOrder(this.refundForm).then((res) => {
 					this.show = false;
 					if (res.data.code == 200) {
@@ -753,4 +797,19 @@
 			border-radius: 60rpx !important;
 		}
 	}
+
+	.btn_refund {
+		border: 1rpx solid #999;
+		border-radius: 8rpx;
+		padding: 20rpx;
+		margin: 20rpx 0rpx;
+	}
+
+	.applyInput {
+		display: flex;
+		padding: 0rpx 10rpx;
+		margin-bottom: 10rpx;
+		border: 1rpx solid #999;
+		border-radius: 8rpx;
+	}
 </style>

+ 2 - 2
pages3/live/detail.vue

@@ -836,7 +836,7 @@ export default {
       "playSectionId",
       "playChannelId",
       "playVID",
-      "config",
+      "other",
     ]),
   },
   onLoad(option) {
@@ -1199,7 +1199,7 @@ export default {
       let uuid = new Date().valueOf() + "";
       // buyCourse 是否购买课程:1是 0否
       let encode = encodeURIComponent(
-        this.config.hostLive +
+        this.other.hostLive +
           "/pages/live/index?token=" +
           uni.getStorageSync("token") +
           "&userInfo=" +

+ 2 - 2
pages3/polyv/detail copy.vue

@@ -941,7 +941,7 @@ export default {
       "playSectionId",
       "playChannelId",
       "playVID",
-      "config",
+      "other",
     ]),
     playSecIsLearn() {
       return this.sectionItem.learning != 1;
@@ -1803,7 +1803,7 @@ export default {
       let uuid = new Date().valueOf() + "";
       // buyCourse 是否购买课程:1是 0否
       let encode = encodeURIComponent(
-        this.config.hostLive +
+        this.other.hostLive +
           "/pages/live/index?token=" +
           uni.getStorageSync("token") +
           "&userInfo=" +

+ 2 - 2
pages3/polyv/detail.vue

@@ -268,7 +268,7 @@
 			};
 		},
 		computed: {
-			...mapGetters(["userInfo", "config"]),
+			...mapGetters(["userInfo", "other"]),
 			playSecIsLearn() {
 				if (!this.playVid) {
 					return false;
@@ -900,7 +900,7 @@
 				let uuid = new Date().valueOf() + "";
 				// buyCourse 是否购买课程:1是 0否
 				let encode = encodeURIComponent(
-					this.config.hostLive +
+					this.other.hostLive +
 					"/pages/live/index?token=" +
 					uni.getStorageSync("token") +
 					"&userInfo=" +

+ 831 - 843
pages4/shopping/shoppingCart.vue

@@ -1,100 +1,64 @@
 <template>
-  <view>
-    <nav-bar title="购物车"></nav-bar>
-    <view v-show="isLogin">
-      <view v-if="!list.length"
-        ><u-empty text="购物车为空" margin-top="500" mode="car"></u-empty
-      ></view>
-      <view v-else>
-        <view class="shop_list">
-          <uni-swipe-action>
-            <u-checkbox-group @change="checkboxGroupChange" placement="column">
-              <view>
-                <!-- :show="item.show" -->
-                <uni-swipe-action-item
-                  :autoClose="false"
-                  @change="swipeChange($event, item)"
-                  v-for="(item, index) in list"
-                  :key="index"
-                >
-                  <view class="goods-item">
-                    <view class="item-wrap">
-                      <view class="goods-msg">
-                        <u-checkbox
-                          :disabled="item.disabled"
-                          style="width: 100%"
-                          v-model="item.checked"
-                          @change="checkboxChange"
-                          shape="circle"
-                          :name="item.id"
-                        >
-                          <view class="flex">
-                            <view class="goods-img">
-                              <image
-                                :src="$method.splitImgHost(item.coverUrl, true)"
-                              ></image>
-                            </view>
-                            <view class="flex__auto">
-                              <view class="goods-title"
-                                >{{ item.goodsName }}
-                                <text v-if="item.sevenYear">
-                                  ({{ item.sevenYear }})
-                                </text>
-                              </view>
-                              <view class="priceTag"
-                                >¥ {{ item.standPrice }}</view
-                              >
-                              <view
-                                class="priceTag"
-                                v-if="item.goodsStatus == 0"
-                                >该商品已下架</view
-                              >
-                            </view>
-                          </view>
-                        </u-checkbox>
-                      </view>
-                      <view
-                        class="goods-select"
-                        v-if="
+	<view>
+		<nav-bar title="购物车"></nav-bar>
+		<view v-show="isLogin">
+			<view v-if="!list.length"><u-empty text="购物车为空" margin-top="500" mode="car"></u-empty></view>
+			<view v-else>
+				<view class="shop_list">
+					<uni-swipe-action>
+						<u-checkbox-group @change="checkboxGroupChange" placement="column">
+							<view>
+								<!-- :show="item.show" -->
+								<uni-swipe-action-item :autoClose="false" @change="swipeChange($event, item)"
+									v-for="(item, index) in list" :key="index">
+									<view class="goods-item">
+										<view class="item-wrap">
+											<view class="goods-msg">
+												<u-checkbox :disabled="item.disabled" style="width: 100%"
+													v-model="item.checked" @change="checkboxChange" shape="circle"
+													:name="item.id">
+													<view class="flex">
+														<view class="goods-img">
+															<image :src="$method.splitImgHost(item.coverUrl, true)">
+															</image>
+														</view>
+														<view class="flex__auto">
+															<view class="goods-title">{{ item.goodsName }}
+																<text v-if="item.sevenYear">
+																	({{ item.sevenYear }})
+																</text>
+															</view>
+															<view class="priceTag">¥ {{ item.standPrice }}</view>
+															<view class="priceTag" v-if="item.goodsStatus == 0">该商品已下架
+															</view>
+														</view>
+													</view>
+												</u-checkbox>
+											</view>
+											<view class="goods-select" v-if="
                           item.templateType != null &&
                           item.goodsType == 1 &&
                           !item.disabled
-                        "
-                      >
-                        <u-line color="#D6D6DB" />
-                        <view
-                          class="goods-select__type"
-                          v-if="item.templateType == 'class'"
-                          @click="openPopup(0, item, index)"
-                        >
-                          <view style="color: #666666; font-size: 24rpx">{{
+                        ">
+												<u-line color="#D6D6DB" />
+												<view class="goods-select__type" v-if="item.templateType == 'class'"
+													@click="openPopup(0, item, index)">
+													<view style="color: #666666; font-size: 24rpx">{{
                             !item.gradObj.className
                               ? "选择班级"
                               : item.gradObj.className
                           }}</view>
-                          <view
-                            ><u-icon
-                              name="arrow-right"
-                              color="#999999"
-                              size="28"
-                            ></u-icon
-                          ></view>
-                        </view>
-                        <view
-                          v-if="item.gradObj.gradeId"
-                          style="padding: 0 100rpx 0 15rpx"
-                        >
-                          <Class-time-tip
-                            :classInfo="item.gradObj"
-                          ></Class-time-tip>
-                        </view>
-                        <view
-                          class="goods-select__type"
-                          v-if="item.templateType == 'apply'"
-                          @click="openPopup(1, item, index)"
-                        >
-                          <view style="color: #666666; font-size: 24rpx">
-                            {{
+													<view><u-icon name="arrow-right" color="#999999" size="28"></u-icon>
+													</view>
+												</view>
+												<view v-if="item.templateType == 'class' && item.gradObj.gradeId"
+													style="padding: 0 100rpx 0 15rpx">
+													<Class-time-tip :classInfo="item.gradObj"></Class-time-tip>
+												</view>
+												<view class="goods-select__type" v-if="item.templateType == 'apply'"
+													@click="openPopup(1, item, index)">
+													<view style="color: #666666; font-size: 24rpx">
+														{{
                               !item.applyAreas.areaName
                                 ? "报考地区"
                                 : item.examDate.examineName +
@@ -103,772 +67,796 @@
                                   "-" +
                                   item.applyAreas.cityName
                             }}
-                          </view>
-                          <view
-                            ><u-icon
-                              name="arrow-right"
-                              color="#999999"
-                              size="28"
-                            ></u-icon
-                          ></view>
-                        </view>
-                      </view>
-                    </view>
-                  </view>
-                  <template v-slot:right>
-                    <view class="operate" @click="delItem(item)">
-                      <view><text>删除</text></view>
-                    </view>
-                  </template>
-                </uni-swipe-action-item>
-              </view>
-            </u-checkbox-group>
-          </uni-swipe-action>
-        </view>
-      </view>
-      <u-popup v-model="show" mode="bottom" border-radius="40">
-        <view class="popup_box">
-          <view style="margin-bottom: 20rpx">
-            <view class="line1"></view>
-            <view class="grade">选择班级</view>
-          </view>
-          <u-line color="#D6D6DB" />
-          <view>
-            <scroll-view scroll-y="true" style="height: 536rpx">
-              <view>
-                <u-radio-group v-model="gradeValue">
-                  <view v-for="(item, index) in gradeList" :key="index">
-                    <view
-                      style="display: flex; align-items: center; padding: 20rpx"
-                    >
-                      <view>
-                        <u-radio shape="circle" :name="index">
-                          <view
-                            :class="
+													</view>
+													<view><u-icon name="arrow-right" color="#999999" size="28"></u-icon>
+													</view>
+												</view>
+											</view>
+										</view>
+									</view>
+									<template v-slot:right>
+										<view class="operate" @click="delItem(item)">
+											<view><text>删除</text></view>
+										</view>
+									</template>
+								</uni-swipe-action-item>
+							</view>
+						</u-checkbox-group>
+					</uni-swipe-action>
+				</view>
+			</view>
+			<u-popup v-model="show" mode="bottom" border-radius="40">
+				<view class="popup_box">
+					<view style="margin-bottom: 20rpx">
+						<view class="line1"></view>
+						<view class="grade">选择班级</view>
+					</view>
+					<u-line color="#D6D6DB" />
+					<view>
+						<scroll-view scroll-y="true" style="height: 536rpx">
+							<view>
+								<u-radio-group v-model="gradeValue">
+									<view v-for="(item, index) in gradeList" :key="index">
+										<view style="display: flex; align-items: center; padding: 20rpx">
+											<view>
+												<u-radio shape="circle" :name="index" :disabled="
+                          item.studentNum > 0 &&
+                          item.studentNum == item.studentUpper
+                        ">
+													<view :class="
                               index == gradeValue
                                 ? 'white-box blue-box'
                                 : 'white-box'
-                            "
-                          >
-                            <view>
-                              <view class="blackTxt">{{ item.className }}</view>
-                              <Class-time-tip
-                                :classInfo="item"
-                              ></Class-time-tip>
-                            </view>
-                          </view>
-                        </u-radio>
-                      </view>
-                    </view>
-                  </view>
-                </u-radio-group>
-              </view>
-            </scroll-view>
-          </view>
-          <view class="confrim-btn"
-            ><view class="okBtn" @click="okPopup(0)">确定</view></view
-          >
-        </view>
-      </u-popup>
-      <u-popup v-model="show1" mode="bottom" border-radius="40">
-        <view class="popup_box">
-          <view style="margin-bottom: 20rpx">
-            <view class="line1"></view>
-            <view class="grade">选择考期/地区</view>
-          </view>
-          <u-line color="#D6D6DB" />
-          <view style="display: flex; height: 536rpx">
-            <view style="width: 50%">
-              <view class="topTxt">考期</view>
-              <view>
-                <picker-view
-                  :indicator-style="indicatorStyle"
-                  :value="value"
-                  @change="bindChangeE"
-                  class="picker-view"
-                >
-                  <picker-view-column>
-                    <view
-                      class="picker-item"
-                      v-for="(item, index) in examine"
-                      :key="index"
-                      >{{ item.examineName }}</view
-                    >
-                  </picker-view-column>
-                </picker-view>
-              </view>
-            </view>
-            <view style="width: 50%">
-              <view class="topTxt">地区</view>
-              <view>
-                <picker-view
-                  :indicator-style="indicatorStyle"
-                  :value="value"
-                  @change="bindChange"
-                  class="picker-view"
-                >
-                  <picker-view-column>
-                    <view
-                      class="picker-item"
-                      v-for="(item, index) in provinceList"
-                      :key="index"
-                      >{{ item.areaName }}</view
-                    >
-                  </picker-view-column>
-                  <picker-view-column>
-                    <view
-                      class="picker-item"
-                      v-for="(item, index) in cityList"
-                      :key="index"
-                      >{{ item.areaName }}</view
-                    >
-                  </picker-view-column>
-                </picker-view>
-              </view>
-            </view>
-          </view>
-          <view class="confrim-btn"
-            ><view class="okBtn" @click="okPopup(1)">确定</view></view
-          >
-        </view>
-      </u-popup>
-    </view>
-    <view v-show="!isLogin">
-      <view
-        style="
+                            ">
+														<view>
+															<view class="blackTxt">{{ item.className }}</view>
+															<Class-time-tip :classInfo="item"></Class-time-tip>
+														</view>
+													</view>
+												</u-radio>
+											</view>
+										</view>
+									</view>
+								</u-radio-group>
+							</view>
+						</scroll-view>
+					</view>
+					<view class="confrim-btn">
+						<view class="okBtn" @click="okPopup(0)">确定</view>
+					</view>
+				</view>
+			</u-popup>
+			<u-popup v-model="show1" mode="bottom" border-radius="40">
+				<view class="popup_box">
+					<view style="margin-bottom: 20rpx">
+						<view class="line1"></view>
+						<view class="grade">选择考期/地区</view>
+					</view>
+					<u-line color="#D6D6DB" />
+					<view style="display: flex; height: 536rpx">
+						<view style="width: 50%">
+							<view class="topTxt">考期</view>
+							<view>
+								<picker-view :indicator-style="indicatorStyle" :value="value" @change="bindChangeE"
+									class="picker-view">
+									<picker-view-column>
+										<view class="picker-item" v-for="(item, index) in examine" :key="index">
+											{{ item.examineName }}
+										</view>
+									</picker-view-column>
+								</picker-view>
+							</view>
+						</view>
+						<view style="width: 50%">
+							<view class="topTxt">地区</view>
+							<view>
+								<picker-view :indicator-style="indicatorStyle" :value="value" @change="bindChange"
+									class="picker-view">
+									<picker-view-column>
+										<view class="picker-item" v-for="(item, index) in provinceList" :key="index">
+											{{ item.areaName }}
+										</view>
+									</picker-view-column>
+									<picker-view-column>
+										<view class="picker-item" v-for="(item, index) in cityList" :key="index">
+											{{ item.areaName }}
+										</view>
+									</picker-view-column>
+								</picker-view>
+							</view>
+						</view>
+					</view>
+					<view class="confrim-btn">
+						<view class="okBtn" @click="okPopup(1)">确定</view>
+					</view>
+				</view>
+			</u-popup>
+		</view>
+		<view v-show="!isLogin">
+			<view style="
           display: flex;
           align-items: center;
           flex-direction: column;
           margin-top: 40%;
           font-size: 32rpx;
-        "
-      >
-        <view style="color: #999999">您还没有登录哦~</view>
-        <view style="margin-top: 30rpx"
-          ><u-button type="primary" @click="login">去登录</u-button></view
-        >
-      </view>
-    </view>
-
-    <view class="bottomBox" v-if="!hideBuyState">
-      <view class="bottons_all">
-        <view class="check_alls">
-          <u-checkbox
-            label="all"
-            name="all"
-            shape="circle"
-            @change="checkboxAllChange"
-            v-model="allChecked"
-          ></u-checkbox>
-          <text class="checkall">全选</text>
-          <!-- <text class="rmb">¥</text> -->
-          <view class="all_sum">结算:</view>
-          <view class="priceTag">¥ {{ toFixed(totalPrice) }}</view>
-        </view>
-        <view style="display: flex; align-items: center">
-          <!-- <view style="color: #999999;margin-right: 8rpx;">合计</view> -->
-          <view
-            style="display: flex; color: #ffffff; align-items: center"
-            @click="goBuy()"
-          >
-            <view class="btn2">结算</view>
-            <!-- <u-icon name="arrow-right" color="#fff" size="30"></u-icon> -->
-          </view>
-        </view>
-      </view>
-    </view>
-  </view>
+        ">
+				<view style="color: #999999">您还没有登录哦~</view>
+				<view style="margin-top: 30rpx"><u-button type="primary" @click="login">去登录</u-button></view>
+			</view>
+		</view>
+
+		<view class="bottomBox" v-if="!hideBuyState">
+			<view class="bottons_all">
+				<view class="check_alls">
+					<u-checkbox label="all" name="all" shape="circle" @change="checkboxAllChange"
+						v-model="allChecked"></u-checkbox>
+					<text class="checkall">全选</text>
+					<!-- <text class="rmb">¥</text> -->
+					<view class="all_sum">结算:</view>
+					<view class="priceTag">¥ {{ toFixed(totalPrice) }}</view>
+				</view>
+				<view style="display: flex; align-items: center">
+					<!-- <view style="color: #999999;margin-right: 8rpx;">合计</view> -->
+					<view style="display: flex; color: #ffffff; align-items: center" @click="goBuy()">
+						<view class="btn2">结算</view>
+						<!-- <u-icon name="arrow-right" color="#fff" size="30"></u-icon> -->
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
 </template>
 
 <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 {
-      gradeValue: -1,
-      isLogin: false,
-      checkboxValue1: [],
-      list: [],
-      value: "",
-      show: false,
-      show1: false,
-      allChecked: false,
-      isOld: false,
-      gradeList: [],
-      examine: [],
-      provinceList: [],
-      cityList: [],
-      detail: {},
-      detailIndex: -1,
-      applyObj: {
-        applyAreasJson: null,
-        examDateJson: null,
-      },
-      pAreaIndex: 0,
-      cAreaIndex: 0,
-      examIndex: 0,
-      current: 3,
-      indicatorStyle: `height: 50px;`,
-    };
-  },
-  computed: {
-    ...mapGetters(["userInfo", "hideBuyState", "config"]),
-    totalPrice() {
-      let price = 0;
-      this.checkList.forEach((e) => (price += e.standPrice));
-      return price;
-    },
-    canCheckList() {
-      return this.list.filter((e) => e.status == 1 && e.goodsStatus == 1);
-    },
-    checkList() {
-      return this.canCheckList.filter((e) => e.checked == true);
-    },
-    selectGreadeId() {
-      if (this.detail.gradObj) {
-        return this.detail.gradObj.gradeId;
-      }
-      return "";
-    },
-  },
-  onLoad(option) {
-    // console.log(option,987)
-  },
-  onShow() {
-    this.isLogin = this.$method.isLogin();
-    if (this.isLogin) {
-      if (uni.getStorageSync("updateCart") || !this.isOld) {
-        this.isOld = true;
-        this.cartList();
-        uni.removeStorageSync("updateCart"); //消费购物车刷新事件
-      }
-    }
-  },
-  methods: {
-    toFixed(num) {
-      return num.toFixed(2);
-    },
-    bindChangeE(e) {
-      this.examIndex = e.detail.value[0];
-    },
-    bindChange(e) {
-      const val = e.detail.value;
-      if (this.pAreaIndex != e.detail.value[0]) {
-        this.pAreaIndex = e.detail.value[0];
-        this.getCityList(this.provinceList[this.pAreaIndex].areaId);
-      }
-      if (this.cAreaIndex != e.detail.value[1]) {
-        this.cAreaIndex = e.detail.value[1];
-      }
-    },
-    checkAreaData() {
-      if (this.examine.length == 0) {
-        uni.showModal({
-          title: "提示",
-          content: "请选择考期",
-          showCancel: false,
-        });
-        return false;
-      }
-      return true;
-    },
-    checkData() {
-      if (this.detail.templateType == "class") {
-        if (this.gradeValue < 0) {
-          uni.showModal({
-            title: "提示",
-            content: "请选择班级",
-            showCancel: false,
-          });
-          return false;
-        }
-      } else if (this.detail.templateType == "apply") {
-        if (!this.applyObj.examDateJson) {
-          uni.showModal({
-            title: "提示",
-            content: "请选择考期",
-            showCancel: false,
-          });
-          return false;
-        }
-      }
-      return true;
-    },
-    //弹出框确定
-    okPopup(index) {
-      if (index == 0) {
-        if (!this.checkData()) {
-          return;
-        }
-        this.gradeIndex = this.gradeValue;
-        this.list[this.detailIndex].gradObj = this.gradeList[this.gradeIndex]; //商品赋值选中班级
-        // this.$set(
-        //   this.list[this.detailIndex],
-        //   "gradObj",
-        //   this.gradeList[this.gradeIndex]
-        // );
-        this.show = false;
-      } else {
-        if (!this.checkAreaData()) {
-          return;
-        }
-        this.examDate = this.examine[this.examIndex];
-        let pData = this.provinceList[this.pAreaIndex];
-        let cData = this.cityList[this.cAreaIndex];
-        this.applyAreas = {
-          areaName: pData.areaName,
-          areaId: pData.areaId,
-          cityId: cData.areaId,
-          cityName: cData.areaName,
-        };
-        //	this.applyObj.applyAreasJson = JSON.stringify(this.applyAreas)
-        //	this.applyObj.examDateJson = JSON.stringify(this.examDate)
-        this.list[this.detailIndex].examDate = this.examDate; //商品赋值选中考期地区
-        this.list[this.detailIndex].applyAreas = this.applyAreas; //商品赋值选中考期地区
-        this.show1 = false;
-      }
-    },
-    getExamine(id) {
-      let self = this;
-      this.$api.getExamine({ projectId: id }).then((res) => {
-        if (res.data.code == 200) {
-          self.examine = res.data.rows;
-        }
-      });
-    },
-    getCityList(id) {
-      let self = this;
-      this.$api.getCityList({ parentId: id }).then((res) => {
-        if (res.data.code == 200) {
-          self.cityList = res.data.rows;
-        }
-      });
-    },
-    getProvinceList() {
-      let self = this;
-      if (self.provinceList.length > 0) {
-        return;
-      }
-      this.$api.getProvinceList().then((res) => {
-        if (res.data.code == 200) {
-          self.provinceList = res.data.rows;
-          if (self.provinceList.length > 0) {
-            self.getCityList(self.provinceList[0].areaId);
-          }
-        }
-      });
-    },
-    goodsGradeList(goodsId) {
-      let self = this;
-      this.$api.goodsGradeList({ goodsId: goodsId }).then((res) => {
-        if (res.data.code == 200) {
-          self.gradeList = res.data.rows;
-          if (self.gradeList.length == 0) {
-            let item = {
-              className: "系统分班",
-              gradeId: 0,
-            };
-            self.gradeList.push(item);
-          }
-          this.gradeValue = self.gradeList.findIndex(
-            (e) => e.gradeId == this.selectGreadeId
-          );
-        }
-      });
-    },
-    openPopup(index, item, itemIndex) {
-      this.detail = item;
-      console.log(this.detail, 798);
-      this.detailIndex = itemIndex;
-      if (index == 0) {
-        this.show = true;
-        this.goodsGradeList(item.goodsId);
-      } else {
-        this.applyObj = {
-          applyAreasJson: null,
-          examDateJson: null,
-        };
-        this.pAreaIndex = 0;
-        this.cAreaIndex = 0;
-        this.examIndex = 0;
-        this.show1 = true;
-        this.getProvinceList();
-        this.getExamine(item.projectId);
-      }
-    },
-    checkboxGroupChange(e) {
-      this.allChecked = this.canCheckList.length === this.checkList.length;
-    },
-    checkboxChange(e) {
-      this.updateCartCheckStatus([e.name], e.value);
-    },
-    login() {
-      uni.navigateTo({ url: "/pages4/login/login" });
-    },
-    cartList() {
-      let self = this;
-      this.$api.cartList().then((res) => {
-        let { code, rows } = res.data;
-        if (code == 200) {
-          for (const item of rows) {
-            let {
-              choiceStatus,
-              goodsStatus,
-              status,
-              gradeList,
-              templateType,
-              goodsType,
-            } = item;
-            item.gradObj = {};
-            item.show = false;
-            item.applyAreas = {};
-            item.examDate = {};
-            if (status != 1 || goodsStatus != 1) {
-              item.disabled = true;
-            } else {
-              item.disabled = false;
-              item.checked = choiceStatus == 1;
-              if (templateType === "class" && goodsType == 1) {
-                // 无返回就默认系统分班
-                if (gradeList || gradeList.length === 0) {
-                  gradeList = [
-                    {
-                      className: "系统分班",
-                      gradeId: 0,
-                    },
-                  ];
-                }
-                item.gradObj = item.gradeList[0];
-              }
-            }
-          }
-          self.list = res.data.rows;
-          this.checkboxGroupChange();
-        }
-      });
-    },
-    updateCartCheckStatus(ids, check) {
-      let data = {
-        ids,
-        choiceStatus: check ? 1 : 0,
-      };
-      this.$api.updateCartCheckStatus(data).then((res) => {});
-    },
-    delItem(item) {
-      let self = this;
-      this.$api.deleteCart(item.id).then((res) => {
-        if (res.data.code == 200) {
-          self.cartList();
-        }
-      });
-    },
-    swipeChange(e, item) {
-      item.show = e;
-    },
-    goBuy() {
-      if (this.checkList.length == 0) {
-        uni.showModal({
-          title: "提示",
-          content: "请选择商品",
-          showCancel: false,
-        });
-        return;
-      }
-      this.checkList.forEach((item) => {
-        if (item.templateType == "class" && item.goodsType == 1) {
-          if (!item.gradObj.className) {
-            uni.showModal({
-              title: "提示",
-              content: "请选择班级",
-              showCancel: false,
-            });
-            return false;
-          }
-        }
-        if (item.templateType == "apply" && item.goodsType == 1) {
-          // if (!item.applyAreas.areaName) {
-          // 	uni.showModal({
-          // 		title: '提示',
-          // 		content: '请选择报考地区',
-          // 		showCancel: false
-          // 	});
-          // 	return false;
-          // }
-        }
-      });
-      this.$store.commit("setShoppingCartList", {
-        shoppingCartList: this.checkList,
-      });
-      this.$navTo.togo("/pages2/order/confirm_pay?fromCart=true");
-    },
-    checkboxAllChange(n) {
-      let ids = [];
-      this.canCheckList.forEach((e) => {
-        e.checked = n.value;
-        ids.push(e.id);
-      });
-      this.updateCartCheckStatus(ids, n.value);
-    },
-  },
-  components: { ClassTimeTip, navLogo },
-};
+	import {
+		mapGetters
+	} from "vuex";
+	import ClassTimeTip from "../../components/common/ClassTimeTip.vue";
+	import navLogo from "../../components/nav-bar/nav-logo.vue";
+	export default {
+		data() {
+			return {
+				gradeValue: -1,
+				isLogin: false,
+				checkboxValue1: [],
+				list: [],
+				value: "",
+				show: false,
+				show1: false,
+				allChecked: false,
+				isOld: false,
+				gradeList: [],
+				examine: [],
+				provinceList: [],
+				cityList: [],
+				detail: {},
+				detailIndex: -1,
+				applyObj: {
+					applyAreasJson: null,
+					examDateJson: null,
+				},
+				pAreaIndex: 0,
+				cAreaIndex: 0,
+				examIndex: 0,
+				current: 3,
+				indicatorStyle: `height: 50px;`,
+			};
+		},
+		computed: {
+			...mapGetters(["userInfo", "hideBuyState", "config"]),
+			totalPrice() {
+				let price = 0;
+				this.checkList.forEach((e) => (price += e.standPrice));
+				return price;
+			},
+			canCheckList() {
+				return this.list.filter((e) => e.status == 1 && e.goodsStatus == 1);
+			},
+			checkList() {
+				return this.canCheckList.filter((e) => e.checked == true);
+			},
+			selectGreadeId() {
+				if (this.detail.gradObj) {
+					return this.detail.gradObj.gradeId;
+				}
+				return "";
+			},
+		},
+		onLoad(option) {
+			// console.log(option,987)
+		},
+		onShow() {
+			this.isLogin = this.$method.isLogin();
+			if (this.isLogin) {
+				if (uni.getStorageSync("updateCart") || !this.isOld) {
+					this.isOld = true;
+					this.cartList();
+					uni.removeStorageSync("updateCart"); //消费购物车刷新事件
+				}
+			}
+		},
+		methods: {
+			toFixed(num) {
+				return num.toFixed(2);
+			},
+			bindChangeE(e) {
+				this.examIndex = e.detail.value[0];
+			},
+			bindChange(e) {
+				const val = e.detail.value;
+				if (this.pAreaIndex != e.detail.value[0]) {
+					this.pAreaIndex = e.detail.value[0];
+					this.getCityList(this.provinceList[this.pAreaIndex].areaId);
+				}
+				if (this.cAreaIndex != e.detail.value[1]) {
+					this.cAreaIndex = e.detail.value[1];
+				}
+			},
+			checkAreaData() {
+				if (this.examine.length == 0) {
+					uni.showModal({
+						title: "提示",
+						content: "请选择考期",
+						showCancel: false,
+					});
+					return false;
+				}
+				return true;
+			},
+			checkData() {
+				if (this.detail.templateType == "class") {
+					if (this.gradeValue < 0) {
+						uni.showModal({
+							title: "提示",
+							content: "请选择班级",
+							showCancel: false,
+						});
+						return false;
+					}
+				} else if (this.detail.templateType == "apply") {
+					if (!this.applyObj.examDateJson) {
+						uni.showModal({
+							title: "提示",
+							content: "请选择考期",
+							showCancel: false,
+						});
+						return false;
+					}
+				}
+				return true;
+			},
+			//弹出框确定
+			okPopup(index) {
+				if (index == 0) {
+					if (!this.checkData()) {
+						return;
+					}
+					this.gradeIndex = this.gradeValue;
+					this.list[this.detailIndex].gradObj = this.gradeList[this.gradeIndex]; //商品赋值选中班级
+					// this.$set(
+					//   this.list[this.detailIndex],
+					//   "gradObj",
+					//   this.gradeList[this.gradeIndex]
+					// );
+					this.show = false;
+				} else {
+					if (!this.checkAreaData()) {
+						return;
+					}
+					this.examDate = this.examine[this.examIndex];
+					let pData = this.provinceList[this.pAreaIndex];
+					let cData = this.cityList[this.cAreaIndex];
+					this.applyAreas = {
+						areaName: pData.areaName,
+						areaId: pData.areaId,
+						cityId: cData.areaId,
+						cityName: cData.areaName,
+					};
+					//	this.applyObj.applyAreasJson = JSON.stringify(this.applyAreas)
+					//	this.applyObj.examDateJson = JSON.stringify(this.examDate)
+					this.list[this.detailIndex].examDate = this.examDate; //商品赋值选中考期地区
+					this.list[this.detailIndex].applyAreas = this.applyAreas; //商品赋值选中考期地区
+					this.show1 = false;
+				}
+			},
+			getExamine(id) {
+				let self = this;
+				this.$api.getExamine({
+					projectId: id
+				}).then((res) => {
+					if (res.data.code == 200) {
+						self.examine = res.data.rows;
+					}
+				});
+			},
+			getCityList(id) {
+				let self = this;
+				this.$api.getCityList({
+					parentId: id
+				}).then((res) => {
+					if (res.data.code == 200) {
+						self.cityList = res.data.rows;
+					}
+				});
+			},
+			getProvinceList() {
+				let self = this;
+				if (self.provinceList.length > 0) {
+					return;
+				}
+				this.$api.getProvinceList().then((res) => {
+					if (res.data.code == 200) {
+						self.provinceList = res.data.rows;
+						if (self.provinceList.length > 0) {
+							self.getCityList(self.provinceList[0].areaId);
+						}
+					}
+				});
+			},
+			goodsGradeList(goodsId) {
+				let self = this;
+				this.$api.goodsGradeList({
+					goodsId: goodsId
+				}).then((res) => {
+					if (res.data.code == 200) {
+						self.gradeList = res.data.rows;
+						if (self.gradeList.length == 0) {
+							let item = {
+								className: "系统分班",
+								gradeId: 0,
+							};
+							self.gradeList.push(item);
+						} else {
+							let isGradeFull = self.gradeList.every(
+								item =>
+								item.studentNum > 0 && item.studentNum == item.studentUpper
+							);
+							//所有班级都满了
+							if (isGradeFull) {
+								let item = {
+									className: "系统分班",
+									gradeId: 0
+								};
+								self.gradeList.unshift(item);
+							}
+						}
+						this.gradeValue = self.gradeList.findIndex(
+							(e) => e.gradeId == this.selectGreadeId
+						);
+					}
+				});
+			},
+			openPopup(index, item, itemIndex) {
+				this.detail = item;
+				console.log(this.detail, 798);
+				this.detailIndex = itemIndex;
+				if (index == 0) {
+					this.show = true;
+					this.goodsGradeList(item.goodsId);
+				} else {
+					this.applyObj = {
+						applyAreasJson: null,
+						examDateJson: null,
+					};
+					this.pAreaIndex = 0;
+					this.cAreaIndex = 0;
+					this.examIndex = 0;
+					this.show1 = true;
+					this.getProvinceList();
+					this.getExamine(item.projectId);
+				}
+			},
+			checkboxGroupChange(e) {
+				this.allChecked = this.canCheckList.length === this.checkList.length;
+			},
+			checkboxChange(e) {
+				this.updateCartCheckStatus([e.name], e.value);
+			},
+			login() {
+				uni.navigateTo({
+					url: "/pages4/login/login"
+				});
+			},
+			cartList() {
+				let self = this;
+				this.$api.cartList().then((res) => {
+					let {
+						code,
+						rows
+					} = res.data;
+					if (code == 200) {
+						for (const item of rows) {
+							let {
+								choiceStatus,
+								goodsStatus,
+								status,
+								gradeList,
+								templateType,
+								goodsType,
+							} = item;
+							item.gradObj = {};
+							item.show = false;
+							item.applyAreas = {};
+							item.examDate = {};
+							if (status != 1 || goodsStatus != 1) {
+								item.disabled = true;
+							} else {
+								item.disabled = false;
+								item.checked = choiceStatus == 1;
+								if (templateType === "class" && goodsType == 1) {
+									// 无返回就默认系统分班
+									if (item.gradeList.length === 0) {
+										gradeList = [{
+											className: "系统分班",
+											gradeId: 0,
+										}, ];
+									} else {
+										let isGradeFull = item.gradeList.every(
+											item =>
+											item.studentNum > 0 && item.studentNum == item.studentUpper
+										);
+										//所有班级都满了
+										if (isGradeFull) {
+											let items = {
+												className: "系统分班",
+												gradeId: 0
+											};
+											item.gradeList.unshift(items);
+										}
+									}
+									item.gradObj = item.gradeList[0] || gradeList[0];
+								}
+							}
+						}
+						self.list = res.data.rows;
+						this.checkboxGroupChange();
+					}
+				});
+			},
+			updateCartCheckStatus(ids, check) {
+				let data = {
+					ids,
+					choiceStatus: check ? 1 : 0,
+				};
+				this.$api.updateCartCheckStatus(data).then((res) => {});
+			},
+			delItem(item) {
+				let self = this;
+				this.$api.deleteCart(item.id).then((res) => {
+					if (res.data.code == 200) {
+						self.cartList();
+					}
+				});
+			},
+			swipeChange(e, item) {
+				item.show = e;
+			},
+			goBuy() {
+				if (this.checkList.length == 0) {
+					uni.showModal({
+						title: "提示",
+						content: "请选择商品",
+						showCancel: false,
+					});
+					return;
+				}
+				this.checkList.forEach((item) => {
+					if (item.templateType == "class" && item.goodsType == 1) {
+						if (!item.gradObj.className) {
+							uni.showModal({
+								title: "提示",
+								content: "请选择班级",
+								showCancel: false,
+							});
+							return false;
+						}
+					}
+					if (item.templateType == "apply" && item.goodsType == 1) {
+						// if (!item.applyAreas.areaName) {
+						// 	uni.showModal({
+						// 		title: '提示',
+						// 		content: '请选择报考地区',
+						// 		showCancel: false
+						// 	});
+						// 	return false;
+						// }
+					}
+				});
+				this.$store.commit("setShoppingCartList", {
+					shoppingCartList: this.checkList,
+				});
+				this.$navTo.togo("/pages2/order/confirm_pay?fromCart=true");
+			},
+			checkboxAllChange(n) {
+				let ids = [];
+				this.canCheckList.forEach((e) => {
+					e.checked = n.value;
+					ids.push(e.id);
+				});
+				this.updateCartCheckStatus(ids, n.value);
+			},
+		},
+		components: {
+			ClassTimeTip,
+			navLogo
+		},
+	};
 </script>
 <style>
-page {
-  background-color: #eaeef1;
-}
+	page {
+		background-color: #eaeef1;
+	}
 </style>
 <style scoped lang="scss">
-.shop_list {
-  padding: 16rpx 16rpx 180rpx 16rpx;
-  // padding-bottom: 98rpx;
-}
-.operate {
-  background-color: #ff3b30;
-  color: #ffffff;
-  border-top-right-radius: 16rpx;
-  border-bottom-right-radius: 16rpx;
-  margin-bottom: 20rpx;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  padding: 0 20rpx;
-}
-.picker-item {
-  height: 50px;
-  align-items: center;
-  justify-content: center;
-  text-align: center;
-}
-.picker-view {
-  width: 100%;
-  height: 420rpx;
-  text-align: center;
-}
-.topTxt {
-  font-size: 30rpx;
-  color: #666666;
-  text-align: center;
-  padding: 20rpx 0;
-}
-.blackTxt {
-  font-size: 30rpx;
-  font-family: PingFang SC;
-  font-weight: bold;
-  color: #333333;
-}
-
-.blue-box {
-  background: #ebf5ff;
-}
-.white-box {
-  width: 646rpx;
-  border-radius: 24rpx;
-  align-items: center;
-  display: flex;
-  padding-left: 15rpx;
-}
-.okBtn {
-  width: 200rpx;
-  height: 64rpx;
-  background: linear-gradient(0deg, #015eea, #00c0fa);
-  border-radius: 32rpx;
-  color: #ffffff;
-  text-align: center;
-  line-height: 64rpx;
-}
-.confrim-btn {
-  border-top: 1px solid #eeeeee;
-  height: 98rpx;
-  width: 100%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-.grade {
-  height: 23rpx;
-  font-size: 24rpx;
-  color: #999999;
-  margin: 0 auto;
-  margin-top: 15rpx;
-  text-align: center;
-}
-.line1 {
-  width: 80rpx;
-  height: 8rpx;
-  background: #999999;
-  border-radius: 4rpx;
-  margin: 0 auto;
-  margin-top: 15rpx;
-}
-.popup_box {
-  height: 700rpx;
-  box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
-  border-radius: 32rpx 32rpx 0rpx 0rpx;
-}
-
-.goods-item {
-  width: 100%;
-  background: #ffffff;
-  border-radius: 24rpx;
-  margin-bottom: 12rpx;
-  padding: 15rpx 0;
-  display: flex;
-
-  .item-wrap {
-    width: 100%;
-    .goods-msg {
-      padding: 0rpx 0rpx 0rpx 22rpx;
-      display: flex;
-      align-items: center;
-
-      .flex {
-        display: flex;
-        padding-bottom: 15rpx;
-        width: 630rpx;
-
-        .goods-img {
-          overflow: hidden;
-          width: 204rpx;
-          height: 120rpx;
-          border-radius: 22rpx;
-          margin-left: 22rpx;
-          margin-right: 24rpx;
-          image {
-            display: block;
-            // width: 278rpx;
-            // height: 156rpx;
-            width: 100%;
-            height: 100%;
-          }
-        }
-
-        &__auto {
-          flex: 1;
-
-          .goods-title {
-            color: #333333;
-            font-size: 28rpx;
-            font-weight: bold;
-            text-align: right;
-            width: 378rpx;
-            overflow: hidden;
-            text-overflow: ellipsis;
-            white-space: nowrap;
-          }
-
-          .priceTag {
-            font-size: 32rpx;
-            font-family: PingFang SC;
-            font-weight: bold;
-            color: #fc3f3f;
-            display: flex;
-            // flex-direction: row-reverse;
-            margin-right: 8rpx;
-            margin-top: 25rpx;
-          }
-        }
-      }
-    }
-
-    .goods-select {
-      &__type {
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-        height: 50rpx;
-        padding: 0 15rpx;
-      }
-    }
-  }
-}
-
-.btn2 {
-  font-size: 32rpx;
-  font-weight: 500;
-  color: #ffffff;
-  margin-right: 8rpx;
-  width: 232rpx;
-  height: 92rpx;
-  line-height: 92rpx;
-  text-align: center;
-  background: #fc3f3f;
-  border-radius: 120rpx;
-}
-.bottomBox {
-  position: fixed;
-  bottom: 0rpx;
-  width: 100%;
-  left: 0;
-  height: 132rpx;
-  background-color: #ffffff;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  padding: 0 32rpx;
-  box-shadow: 0px -2px 6px 0px rgba(0, 0, 0, 0.1);
-  z-index: 9999;
-  .bottons_all {
-    // width: 674rpx;
-    // height: 104rpx;
-    // background: #007AFF;
-    // border-radius: 52rpx;
-    width: 100%;
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    // padding: 0rpx 26rpx 0rpx 23rpx;
-  }
-  .priceTag {
-    font-size: 32rpx;
-    font-family: PingFang SC;
-    font-weight: bold;
-    color: #fc3f3f;
-    display: flex;
-    flex-direction: row-reverse;
-    margin-right: 20rpx;
-  }
-  .check_alls {
-    display: flex;
-    align-items: center;
-    color: #969696;
-    // .rmb {
-    // 	// margin-right: 9rpx;
-    // 	// margin-left: 35rpx;
-    // 	// font-size: 20rpx;
-    // 	// position: relative;
-    // 	// top: -14rpx;
-    // 	// left: 0rpx;
-    // }
-  }
-  .all_sum {
-    font-size: 28rpx;
-    font-weight: 800;
-    color: #303030;
-    margin-left: 35rpx;
-  }
-  .checkall {
-    font-weight: 500;
-    color: #969696;
-    font-size: 28rpx;
-  }
-}
-.half_circle {
-  position: fixed;
-  bottom: 0rpx;
-  width: 100%;
-  left: 0;
-  height: 20rpx;
-  border: 1rpx solid;
-  display: flex;
-  justify-content: center;
-  .bulge {
-    width: 110rpx;
-    height: 55rpx;
-    border-radius: 55px 55px 0px 0px;
-    background-color: #fff;
-  }
-}
-</style>
+	.shop_list {
+		padding: 16rpx 16rpx 180rpx 16rpx;
+		// padding-bottom: 98rpx;
+	}
+
+	.operate {
+		background-color: #ff3b30;
+		color: #ffffff;
+		border-top-right-radius: 16rpx;
+		border-bottom-right-radius: 16rpx;
+		margin-bottom: 20rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		padding: 0 20rpx;
+	}
+
+	.picker-item {
+		height: 50px;
+		align-items: center;
+		justify-content: center;
+		text-align: center;
+	}
+
+	.picker-view {
+		width: 100%;
+		height: 420rpx;
+		text-align: center;
+	}
+
+	.topTxt {
+		font-size: 30rpx;
+		color: #666666;
+		text-align: center;
+		padding: 20rpx 0;
+	}
+
+	.blackTxt {
+		font-size: 30rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #333333;
+	}
+
+	.blue-box {
+		background: #ebf5ff;
+	}
+
+	.white-box {
+		width: 646rpx;
+		border-radius: 24rpx;
+		align-items: center;
+		display: flex;
+		padding-left: 15rpx;
+	}
+
+	.okBtn {
+		width: 200rpx;
+		height: 64rpx;
+		background: linear-gradient(0deg, #015eea, #00c0fa);
+		border-radius: 32rpx;
+		color: #ffffff;
+		text-align: center;
+		line-height: 64rpx;
+	}
+
+	.confrim-btn {
+		border-top: 1px solid #eeeeee;
+		height: 98rpx;
+		width: 100%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.grade {
+		height: 23rpx;
+		font-size: 24rpx;
+		color: #999999;
+		margin: 0 auto;
+		margin-top: 15rpx;
+		text-align: center;
+	}
+
+	.line1 {
+		width: 80rpx;
+		height: 8rpx;
+		background: #999999;
+		border-radius: 4rpx;
+		margin: 0 auto;
+		margin-top: 15rpx;
+	}
+
+	.popup_box {
+		height: 700rpx;
+		box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
+		border-radius: 32rpx 32rpx 0rpx 0rpx;
+	}
+
+	.goods-item {
+		width: 100%;
+		background: #ffffff;
+		border-radius: 24rpx;
+		margin-bottom: 12rpx;
+		padding: 15rpx 0;
+		display: flex;
+
+		.item-wrap {
+			width: 100%;
+
+			.goods-msg {
+				padding: 0rpx 0rpx 0rpx 22rpx;
+				display: flex;
+				align-items: center;
+
+				.flex {
+					display: flex;
+					padding-bottom: 15rpx;
+					width: 630rpx;
+
+					.goods-img {
+						overflow: hidden;
+						width: 204rpx;
+						height: 120rpx;
+						border-radius: 22rpx;
+						margin-left: 22rpx;
+						margin-right: 24rpx;
+
+						image {
+							display: block;
+							// width: 278rpx;
+							// height: 156rpx;
+							width: 100%;
+							height: 100%;
+						}
+					}
+
+					&__auto {
+						flex: 1;
+
+						.goods-title {
+							color: #333333;
+							font-size: 28rpx;
+							font-weight: bold;
+							text-align: right;
+							width: 378rpx;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+						}
+
+						.priceTag {
+							font-size: 32rpx;
+							font-family: PingFang SC;
+							font-weight: bold;
+							color: #fc3f3f;
+							display: flex;
+							// flex-direction: row-reverse;
+							margin-right: 8rpx;
+							margin-top: 25rpx;
+						}
+					}
+				}
+			}
+
+			.goods-select {
+				&__type {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					height: 50rpx;
+					padding: 0 15rpx;
+				}
+			}
+		}
+	}
+
+	.btn2 {
+		font-size: 32rpx;
+		font-weight: 500;
+		color: #ffffff;
+		margin-right: 8rpx;
+		width: 232rpx;
+		height: 92rpx;
+		line-height: 92rpx;
+		text-align: center;
+		background: #fc3f3f;
+		border-radius: 120rpx;
+	}
+
+	.bottomBox {
+		position: fixed;
+		bottom: 0rpx;
+		width: 100%;
+		left: 0;
+		height: 132rpx;
+		background-color: #ffffff;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding: 0 32rpx;
+		box-shadow: 0px -2px 6px 0px rgba(0, 0, 0, 0.1);
+		z-index: 9999;
+
+		.bottons_all {
+			// width: 674rpx;
+			// height: 104rpx;
+			// background: #007AFF;
+			// border-radius: 52rpx;
+			width: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			// padding: 0rpx 26rpx 0rpx 23rpx;
+		}
+
+		.priceTag {
+			font-size: 32rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fc3f3f;
+			display: flex;
+			flex-direction: row-reverse;
+			margin-right: 20rpx;
+		}
+
+		.check_alls {
+			display: flex;
+			align-items: center;
+			color: #969696;
+			// .rmb {
+			// 	// margin-right: 9rpx;
+			// 	// margin-left: 35rpx;
+			// 	// font-size: 20rpx;
+			// 	// position: relative;
+			// 	// top: -14rpx;
+			// 	// left: 0rpx;
+			// }
+		}
+
+		.all_sum {
+			font-size: 28rpx;
+			font-weight: 800;
+			color: #303030;
+			margin-left: 35rpx;
+		}
+
+		.checkall {
+			font-weight: 500;
+			color: #969696;
+			font-size: 28rpx;
+		}
+	}
+
+	.half_circle {
+		position: fixed;
+		bottom: 0rpx;
+		width: 100%;
+		left: 0;
+		height: 20rpx;
+		border: 1rpx solid;
+		display: flex;
+		justify-content: center;
+
+		.bulge {
+			width: 110rpx;
+			height: 55rpx;
+			border-radius: 55px 55px 0px 0px;
+			background-color: #fff;
+		}
+	}
+</style>

+ 2 - 2
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.other.hostLive+'/pages/live/index?token='+uni.getStorageSync('token')+'&userInfo='+JSON.stringify(this.userInfo)+'&channelId='
 			+this.livingInfo.liveUrl+'&buyCourse=1'+'&ident='+uuid)
 			uni.navigateTo({
 				url:`/pages5/webview/index?url=`+encode
@@ -112,7 +112,7 @@ export default {
 		}
 	},
 	onReachBottom() {},
-	computed: { ...mapGetters(['userInfo','config']) }
+	computed: { ...mapGetters(['userInfo','other']) }
 };
 </script>
 <style >

+ 2 - 2
pages5/examList/index.vue

@@ -273,7 +273,7 @@ export default {
     };
   },
   computed: {
-    ...mapGetters(["userInfo", "config"]),
+    ...mapGetters(["userInfo", "other"]),
   },
   onLoad(option) {
     this.param.mockStatus = option.state || 0;
@@ -444,7 +444,7 @@ export default {
       let uuid = new Date().valueOf() + "";
       // buyCourse 是否购买课程:1是 0否
       let encode = encodeURIComponent(
-        this.config.hostLive +
+        this.other.hostLive +
           "/pages/live/index?token=" +
           uni.getStorageSync("token") +
           "&userInfo=" +

+ 2 - 2
pages5/examReport/index.vue

@@ -309,7 +309,7 @@ export default {
   },
 
   computed: {
-    ...mapGetters(["userInfo", "sysTime", "hideBuyState", "config"]),
+    ...mapGetters(["userInfo", "sysTime", "hideBuyState", "other"]),
   },
 
   onPullDownRefresh() {
@@ -540,7 +540,7 @@ export default {
       let uuid = new Date().valueOf() + "";
       // buyCourse 是否购买课程:1是 0否
       let encode = encodeURIComponent(
-        this.config.hostLive +
+        this.other.hostLive +
           "/pages/live/index?token=" +
           uni.getStorageSync("token") +
           "&userInfo=" +

+ 2 - 2
pages5/liveDetail/list.vue

@@ -48,7 +48,7 @@ export default {
 		};
 	},
 	onUnload() {},
-	computed: { ...mapGetters(['userInfo','config']) },
+	computed: { ...mapGetters(['userInfo','other']) },
 	onLoad(option) {
 		this.goodsListGoodsUserLive()
 		this.goodsLivingSectionList();
@@ -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.other.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({

+ 2 - 2
pages5/webview/index.vue

@@ -94,7 +94,7 @@ export default {
     }
   },
   computed: {
-    ...mapGetters(["userInfo", "config"]),
+    ...mapGetters(["userInfo", "other"]),
   },
   methods: {
     async doRequest() {
@@ -152,7 +152,7 @@ export default {
             let uuid = new Date().valueOf() + "";
             // buyCourse 是否购买课程:1是 0否
             this.url =
-              this.config.hostLive +
+              this.other.hostLive +
               "/pages/live/index?token=" +
               uni.getStorageSync("token") +
               "&userInfo=" +