Browse Source

更新新英语切换

wangxy 2 months ago
parent
commit
3583e9b45b
2 changed files with 73 additions and 19 deletions
  1. 25 0
      api/word.js
  2. 48 19
      pages/wordList/wordList.vue

+ 25 - 0
api/word.js

@@ -118,3 +118,28 @@ export function getWordCancel(data = {}) {
     timeout: 20000
     timeout: 20000
   })
   })
 }
 }
+
+
+export function getWordZhangList(data = {}) {
+  return request({
+    'url': '/app/word/zhang/list',
+    headers: {
+      isToken: true
+    },
+    method: 'post',
+    data,
+    timeout: 20000
+  })
+}
+
+export function getWordZhangListYK(data= {}) {
+	return request({
+	  'url': '/common/word/zhang/list',
+	  headers: {
+	    isToken: true
+	  },
+	  method: 'post',
+	  data,
+	  timeout: 20000
+	})
+}

+ 48 - 19
pages/wordList/wordList.vue

@@ -10,20 +10,23 @@
 				<scroll-view scroll-x="true" :scroll-left='wordLeft' class="word-title-box"
 				<scroll-view scroll-x="true" :scroll-left='wordLeft' class="word-title-box"
 					v-if="listData.jieNumberList && listData.jieNumberList.length >0">
 					v-if="listData.jieNumberList && listData.jieNumberList.length >0">
 					<view :id="'item-' + item.jieId" class="title-item" v-for="(item,index) in listData.jieNumberList"
 					<view :id="'item-' + item.jieId" class="title-item" v-for="(item,index) in listData.jieNumberList"
-						:key="item.jieId"
-						:class="{active: listData.activeIndex == index}">Unit{{item.number}}</view>
+						:key="item.jieId" :class="{active: listData.activeIndex == index}">Unit{{item.number}}</view>
 				</scroll-view>
 				</scroll-view>
 
 
 				<swiper class="word-view-swiper-box" :indicator-dots="false" :autoplay="false" :circular="false"
 				<swiper class="word-view-swiper-box" :indicator-dots="false" :autoplay="false" :circular="false"
-					@change="handleSwiperChange">
-					<swiper-item v-for="citem in unitList" :key="citem.jieId">
+					@change="handleSwiperChange" :disable-touch="!swiperData.isAllowed">
+					<swiper-item v-for="citem in unitList" :key="citem.jieId" @touchstart="handleTouchStart"
+						@touchend="handleTouchEnd">
 						<view class="word-list-body" v-if="citem.wordList && citem.wordList.length > 0">
 						<view class="word-list-body" v-if="citem.wordList && citem.wordList.length > 0">
 							<view class="word-num-box">
 							<view class="word-num-box">
 								<icon></icon><text>{{citem.studyCount || 0}}/{{citem.count || 0}}词</text>
 								<icon></icon><text>{{citem.studyCount || 0}}/{{citem.count || 0}}词</text>
 							</view>
 							</view>
 							<!-- 单词 -->
 							<!-- 单词 -->
-							<view class="word-list-item" v-for="(item,index) in item.wordList" :key="index"
+							<view class="word-list-item" v-for="(item,index) in citem.wordList" :key="index"
 								@click="toWord(item)" :class="{active: item.wcFlag == 1}">
 								@click="toWord(item)" :class="{active: item.wcFlag == 1}">
+
+
+
 								<view class="item-word">
 								<view class="item-word">
 									<view class="word-text">
 									<view class="word-text">
 										<text v-for="(word, wordIndex) in item.chaifen" :key="wordIndex"
 										<text v-for="(word, wordIndex) in item.chaifen" :key="wordIndex"
@@ -58,7 +61,8 @@
 <script setup>
 <script setup>
 	import {
 	import {
 		reactive,
 		reactive,
-		ref
+		ref,
+		nextTick
 	} from "vue";
 	} from "vue";
 	import {
 	import {
 		toast,
 		toast,
@@ -68,11 +72,16 @@
 		onLoad
 		onLoad
 	} from "@dcloudio/uni-app";
 	} from "@dcloudio/uni-app";
 	import {
 	import {
-		getWordList,
-		getWordListYk
+		getWordZhangList,
+		getWordZhangListYK,
 	} from "@/api/word.js";
 	} from "@/api/word.js";
 	import cacheManager from '@/utils/cacheManager.js';
 	import cacheManager from '@/utils/cacheManager.js';
 	import tipBigDialog from '@/components/dialog/tipBigDialog.vue';
 	import tipBigDialog from '@/components/dialog/tipBigDialog.vue';
+	import {
+		useSwiper
+	} from "@/utils/useSwiper";
+
+
 
 
 	const listData = reactive({
 	const listData = reactive({
 		jieNumberList: [], //节名称
 		jieNumberList: [], //节名称
@@ -90,18 +99,29 @@
 		zhangId: null,
 		zhangId: null,
 	})
 	})
 
 
+	const {
+		swiperData,
+		handleTouchStart,
+		handleTouchEnd
+	} = useSwiper(listData, (userCode) => {
+		console.log('userCode',userCode)
+		
+		
+	});
+
 	onLoad((options) => {
 	onLoad((options) => {
 		routerOpt = options;
 		routerOpt = options;
 		if (!cacheManager.get('auth')) {
 		if (!cacheManager.get('auth')) {
-			info.levelId = routerOpt.levelId;
-			info.zhangId = routerOpt.zhangId;
+
 			// 游客
 			// 游客
 			const youkeData = JSON.parse(routerOpt.youkePageData)
 			const youkeData = JSON.parse(routerOpt.youkePageData)
+			info.levelId = youkeData.levelId;
+			info.zhangId = youkeData.youkeZhangId;
 			wordJieId = youkeData.jieId
 			wordJieId = youkeData.jieId
 			getWordListDataYk();
 			getWordListDataYk();
 		} else {
 		} else {
 			// 获取缓存
 			// 获取缓存
-			[info.levelId, info.zhangId ] = getDataFromStr(cacheManager.get('auth').levelId)
+			[info.levelId, info.zhangId] = getDataFromStr(cacheManager.get('auth').levelId)
 
 
 			// 非游客
 			// 非游客
 			wordJieId = routerOpt.jieId
 			wordJieId = routerOpt.jieId
@@ -110,12 +130,21 @@
 	});
 	});
 
 
 	function handleSwiperChange(e) {
 	function handleSwiperChange(e) {
+		if (!swiperData.isAllowed) {
+			// 不满足条件时回退到原索引
+			nextTick(() => {
+				listData.activeIndex = 0; // 强制回退
+			});
+			swiperData.isAllowed = false; // 重置状态
+			return;
+		}
+
 		listData.activeIndex = e.detail.current;
 		listData.activeIndex = e.detail.current;
 		// unit滚动到指定位置
 		// unit滚动到指定位置
 		findWordLeft(listData.activeIndex)
 		findWordLeft(listData.activeIndex)
 		handleTitleClick(listData.jieNumberList[listData.activeIndex])
 		handleTitleClick(listData.jieNumberList[listData.activeIndex])
 	}
 	}
-	
+
 
 
 
 
 	// 游客弹窗---确定
 	// 游客弹窗---确定
@@ -195,9 +224,11 @@
 			zhangId: info.zhangId,
 			zhangId: info.zhangId,
 			jieId: wordJieId
 			jieId: wordJieId
 		};
 		};
-		getWordList(opt).then(res => {
+		getWordZhangList(opt).then(res => {
 			if (res.code === 0) {
 			if (res.code === 0) {
-				unitList.value = res.data;
+				listData.title = res.data.title;
+				unitList.value = res.data.jieWordsList;
+				listData.jieNumberList = res.data.jieNumberList;
 				unitList.value.forEach(item => {
 				unitList.value.forEach(item => {
 					if (item.jieId == wordJieId.value) {
 					if (item.jieId == wordJieId.value) {
 						listData.activeIndex = findIndexByJieId(listData.jieNumberList, wordJieId);
 						listData.activeIndex = findIndexByJieId(listData.jieNumberList, wordJieId);
@@ -216,13 +247,11 @@
 			zhangId: info.zhangId,
 			zhangId: info.zhangId,
 			jieId: wordJieId
 			jieId: wordJieId
 		};
 		};
-		getWordListYk(opt).then(res => {
+		getWordZhangListYK(opt).then(res => {
 			if (res.code === 0) {
 			if (res.code === 0) {
-				/* listData.jieNumberList = res.data.jieNumberList;
 				listData.title = res.data.title;
 				listData.title = res.data.title;
-				listData.wordList = res.data.wordList;
-				listData.activeIndex = findIndexByJieId(listData.jieNumberList, wordJieId); */
-				unitList.value = res.data;
+				unitList.value = res.data.jieWordsList;
+				listData.jieNumberList = res.data.jieNumberList;
 				unitList.value.forEach(item => {
 				unitList.value.forEach(item => {
 					if (item.jieId == wordJieId.value) {
 					if (item.jieId == wordJieId.value) {
 						listData.activeIndex = findIndexByJieId(listData.jieNumberList, wordJieId);
 						listData.activeIndex = findIndexByJieId(listData.jieNumberList, wordJieId);