|
@@ -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);
|