Selaa lähdekoodia

Merge remote-tracking branch 'origin/2025鹅状元dev' into 2025鹅状元dev

# Conflicts:
#	pages/newEnglish/components/mainCard.vue
#	pages/newEnglish/index.vue
#	pages/study/index.vue
wangxy 3 kuukautta sitten
vanhempi
commit
7abaaa91fe

+ 27 - 1
common/styles/global/components.scss

@@ -430,4 +430,30 @@ position: absolute;left: 0;top: -4rpx;opacity: 0.4;}
 	width: 580rpx;border-radius: 12rpx;background-color: #fff;padding: 24rpx;
 	.tip-title{padding-top: 24rpx;font-size: 34rpx;color: #333;text-align: center;}
 	.tip-content{font-size: 32rpx;color: #666;margin:32rpx 32rpx 56rpx;line-height: 1.6;text-align: justify;}
-}
+}
+
+// 单词列表item
+.word-list-item{
+		display: flex;margin-bottom: 24rpx;
+		background-color: #fff;border-radius:14rpx;overflow: hidden;
+		.item-word{
+			width: 43%;margin: 16rpx 0 0 16rpx;line-height: 1.4;flex-shrink: 0;
+			.word-text{
+				font-size: 34rpx;color: #000;font-weight: bold;
+				.word-color:nth-child(odd){color: #ff9a01;}
+				}
+			.phonetic-alphabet{font-size: 26rpx;color: #999;margin: 0 0 16rpx;}
+		}
+		.item-explain{
+			width: 44%;display: flex;flex-direction: column;justify-content: center;margin-right: 2%;flex-shrink: 0;
+			.item-explain-content{height: 70rpx;text-align: justify;font-size: 22rpx;color: #787878;line-height: 1.4;overflow: hidden;}
+			.explain-text{@include multi-line-ellipsis(2);}
+			.explain-text + .explain-text{margin-top: 6rpx;}
+		}
+		.item-arrow{
+			width: 10%;background-color: #f4f4f4;flex: 1;flex-shrink: 0;
+			display: flex;align-items: center;justify-content: center;
+			icon{width: 34rpx;height: 34rpx;@include ezy-no-repeat-cover;
+			background-image: url("@/static/images/common/jt-right-black.svg");}
+		}
+	}

+ 15 - 24
common/styles/global/pages.scss

@@ -1834,30 +1834,6 @@
 		icon{width: 10rpx;height: 32rpx;background-color:#068aea;border-radius:4rpx;margin-right: 8rpx;}
 		text{font-size: 34rpx;color: #068aea;font-weight: bold;}
 	}
-	.word-list-item{
-		display: flex;margin-bottom: 24rpx;
-		background-color: #fff;border-radius:14rpx;overflow: hidden;
-		.item-word{
-			width: 40%;margin: 16rpx 0 0 24rpx;line-height: 1.4;flex-shrink: 0;
-			.word-text{
-				font-size: 34rpx;color: #000;font-weight: bold;
-				.word-color:nth-child(odd){color: #ff9a01;}
-				}
-			.phonetic-alphabet{font-size: 26rpx;color: #999;margin: 0 0 16rpx;}
-		}
-		.item-explain{
-			width: 44%;display: flex;flex-direction: column;justify-content: center;margin-right: 2%;flex-shrink: 0;
-			.item-explain-content{height: 70rpx;text-align: justify;font-size: 22rpx;color: #787878;line-height: 1.4;overflow: hidden;}
-			.explain-text{@include multi-line-ellipsis(2);}
-			.explain-text + .explain-text{margin-top: 6rpx;}
-		}
-		.item-arrow{
-			width: 10%;background-color: #f4f4f4;flex: 1;flex-shrink: 0;
-			display: flex;align-items: center;justify-content: center;
-			icon{width: 34rpx;height: 34rpx;@include ezy-no-repeat-cover;
-			background-image: url("@/static/images/common/jt-right-black.svg");}
-		}
-	}
 }
 
 // 单词详情
@@ -2155,3 +2131,18 @@
 	.select-version-confirm-btn:after{display: none;}
 }
 
+// 学习记录
+.learn-record-page{
+	width: 100%;height: 100vh;background-color: #00c5fe;position: relative;
+	padding-top:var(--status-bar-height);display: flex;flex-direction: column;
+	@include ezy-no-repeat-cover(bottom);background-image: url("@/static/images/common/ezy-page-bj.png");
+	.uni-list{background-color: transparent!important;}
+	.uni-list--border-top,.uni-list--border-bottom{display: none;}
+	.uni-list-item__container{padding: 0!important;}
+	
+	.learn-record-scroll-view{
+		margin-top: 16rpx;overflow-y: auto;height: calc(100vh - 370rpx - var(--status-bar-height));
+		box-sizing: border-box;padding: 0 20rpx;
+		.word-list-item{margin-bottom: 16rpx;}
+	}
+}

+ 50 - 50
pages.json

@@ -15,7 +15,7 @@
 		{
 			"path": "pages/selectGradesTerms/index",
 			"style": {
-				
+
 				"navigationBarTitleText": "选择学科和年纪",
 				"navigationStyle": "custom",
 				"app-plus": {
@@ -29,7 +29,7 @@
 				"navigationBarTitleText": "专题",
 				"navigationStyle": "custom"
 			}
-		},	
+		},
 		{
 			"path": "pages/zhuanti/zhuantiInfo",
 			"style": {
@@ -37,7 +37,7 @@
 				"navigationStyle": "custom"
 			}
 		},
-			{
+		{
 			"path": "pages/study/index",
 			"style": {
 				"navigationBarTitleText": "学习",
@@ -50,7 +50,7 @@
 				"navigationBarTitleText": "视频",
 				"navigationStyle": "custom"
 			}
-		},	{
+		}, {
 			"path": "pages/study/lookShipinNew",
 			"style": {
 				"navigationBarTitleText": "视频",
@@ -59,14 +59,14 @@
 		},
 		{
 			"path": "pages/game/index",
-				
+
 			"style": {
 				"navigationStyle": "custom",
 				"app-plus": {
 					"animationType": "none"
 				}
 			}
-		
+
 		},
 		{
 			"path": "pages/my/index",
@@ -75,16 +75,21 @@
 			}
 		},
 		{
+			"path": "pages/my/learnRecord",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
 			"path": "pages/my/aboutPage",
 			"style": {
 				"navigationStyle": "custom"
 			}
 		},
 		{
-			"path" : "pages/unitTest/index",
-			"style" :
-			{
-				"navigationBarTitleText" : "单元测试",
+			"path": "pages/unitTest/index",
+			"style": {
+				"navigationBarTitleText": "单元测试",
 				"navigationStyle": "custom",
 				"app-plus": {
 					"softinputMode": "adjustResize",
@@ -93,67 +98,64 @@
 			}
 		},
 		{
-			"path" : "pages/pay/svip",
-			"style" : 
-			{
+			"path": "pages/pay/svip",
+			"style": {
 				"navigationStyle": "custom"
 			}
 		},
 		{
-			"path" : "pages/pay/order",
-			"style" : 
-			{
+			"path": "pages/pay/order",
+			"style": {
 				"navigationStyle": "custom"
 			}
 		},
-		
+
 		{
-			"path" : "pages/pay/orderPay",
-			"style" : 
-			{
+			"path": "pages/pay/orderPay",
+			"style": {
 				"navigationStyle": "custom"
 			}
 		},
 		{
-			"path" : "pages/wrong/index",
-			"style" : 
-			{
+			"path": "pages/wrong/index",
+			"style": {
 				"navigationStyle": "custom"
 			}
 		},
 		{
-			"path" : "pages/mall/mallPage",
-			"style" : 
-			{
+			"path": "pages/mall/mallPage",
+			"style": {
 				"navigationStyle": "custom"
 			}
 		},
 		{
-			"path" : "pages/selectVersion/selectVersion",
-			"style" : 
-			{
+			"path": "pages/selectVersion/selectVersion",
+			"style": {
 				"navigationStyle": "custom"
 			}
 		},
 		{
-			"path" : "pages/wordList/wordList",
-			"style" :
-			{
+			"path": "pages/wordList/wordList",
+			"style": {
 				"navigationStyle": "custom"
 			}
 		},
 		{
-			"path" : "pages/newEnglish/index",
-			"style" : 
-			{
+			"path": "pages/newEnglish/index",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		}, {
+			"path": "pages/newEnglish/components/xiangjie",
+			"style": {
 				"navigationStyle": "custom"
 			}
 		}
 	],
-	 "tabBar": {
-	    "custom": true,
-	    "list": []
-	  },
+	"tabBar": {
+		"custom": true,
+		"list": []
+	},
 	// "tabBar": {
 	// 	"height": "90rpx",
 	// 	"iconWidth": "134rpx",
@@ -182,26 +184,24 @@
 		"navigationBarTitleText": "鹅状元",
 		"navigationBarBackgroundColor": "#F8F8F8",
 		"backgroundColor": "#F8F8F8",
-	//	"animationType": "none",
+		//	"animationType": "none",
 		//"animationDuration": "0",
 		//禁止滑动返回
 		"app-plus": {
-					// "popGesture": "none"
-				}
+			// "popGesture": "none"
+		}
 		/* "app-plus": {
 			"background": "#efeff4"
 		} */
 	},
 
 	"uniIdRouter": {},
-	"condition" : { //模式配置,仅开发期间生效
+	"condition": { //模式配置,仅开发期间生效
 		"current": 0, //当前激活的模式(list 的索引项)
-		"list": [
-			{
-				"name": "login", //模式名称
-				"path": "pages/login/index", //启动页面,必选
-				"query": "" //启动参数,在页面的onLoad函数里面得到
-			}
-		]
+		"list": [{
+			"name": "login", //模式名称
+			"path": "pages/login/index", //启动页面,必选
+			"query": "" //启动参数,在页面的onLoad函数里面得到
+		}]
 	}
 }

+ 9 - 1
pages/my/index.vue

@@ -23,6 +23,10 @@
 				<icon class="list-icon tel-icon"></icon>
 				<text>手机号码</text>
 			</view>
+			<view class="list-row" @click="xxjlClick" v-if="loginFlag">
+				<icon class="list-icon error-icon"></icon>
+				<text>学习记录</text>
+			</view>
 			<view class="list-row" @click="checkWrong">
 				<icon class="list-icon error-icon"></icon>
 				<text>我的错题</text>
@@ -407,7 +411,11 @@
 			isIOSorAndroid()
 		}
 	})
-
+	function xxjlClick(){
+		uni.redirectTo({
+			url: '/pages/my/learnRecord'
+		})
+	}
 	function checkWrong() {
 		if (loginFlag.value) {
 			const AuthCode = getUserIdentity();

+ 378 - 0
pages/my/learnRecord.vue

@@ -0,0 +1,378 @@
+<template>
+	<view class="learn-record-page">
+		<view class="icon-title-navBar-box">
+			<view @click="goBack" class="nav-bar-icon"></view>
+			<text class="nav-bar-title">本书学习记录</text>
+		</view>
+		<view class="ezy-tab-border">
+
+			<uni-segmented-control :current="xxjlData.current" :values="xxjlData.items" active-color="#3A7FE9"
+				@clickItem="onChangeTab" class="ezy-tab-box" />
+			<view>
+				<view v-if="xxjlData.current == 0">
+					<scroll-view scroll-y="true" refresher-enabled="true" @scrolltolower="onScrolltolower"
+						:refresher-triggered="xxjlData.weizhangwo.loading" :refresher-threshold="50"
+						refresher-background="transparent" @refresherrefresh="onRefresh" class="learn-record-scroll-view">
+						<!--数学-->
+						<uni-list>
+							<uni-list-item v-for="(item,index) in xxjlData.weizhangwo.list" :key="index"
+								class="word-list-item">
+								<template v-slot:body>
+									<view class="item-word">
+										<view class="word-text">
+											<text v-for="(word, wordIndex) in item.chaifen" 
+											:key="wordIndex" class="word-color">
+											{{ word }}
+											</text>
+										</view>
+										<view class="phonetic-alphabet">{{item.yinbiao || ''}}</view>
+									</view>
+									<view class="item-explain">
+										<view class="item-explain-content">
+											<view class="explain-text" v-for="(meaning, meaningIndex) in item.jianyi" :key="meaningIndex">{{meaning}}</view>
+										</view>
+									</view>
+									<view class="item-arrow"><icon></icon></view>
+								</template>
+							</uni-list-item>
+							<uni-load-more :status="xxjlData.weizhangwo.state" @click="getMore(2)"
+								:contentText="xxjlData.weizhangwo.contentText">
+							</uni-load-more>
+						</uni-list>
+					</scroll-view>
+				</view>
+				<view v-if="xxjlData.current == 1">
+					<scroll-view scroll-y="true" refresher-enabled="true" @scrolltolower="onScrolltolower"
+						:refresher-triggered="xxjlData.yizhangwo.loading" :refresher-threshold="50"
+						refresher-background="transparent" @refresherrefresh="onRefresh" class="learn-record-scroll-view">
+						<!--数学-->
+						<uni-list>
+							<uni-list-item v-for="(item,index) in xxjlData.yizhangwo.list" :key="index"
+								class="word-list-item">
+								<template v-slot:body>
+									
+								</template>
+							</uni-list-item>
+							<uni-load-more :status="xxjlData.yizhangwo.state" @click="getMore(1)"
+								:contentText="xxjlData.yizhangwo.contentText">
+							</uni-load-more>
+						</uni-list>
+					</scroll-view>
+				</view>
+				<view v-if="xxjlData.current == 2">
+					<scroll-view scroll-y="true" refresher-enabled="true" @scrolltolower="onScrolltolower"
+						:refresher-triggered="xxjlData.shouchang.loading" :refresher-threshold="50"
+						refresher-background="transparent" @refresherrefresh="onRefresh" class="learn-record-scroll-view">
+						<!--数学-->
+						<uni-list>
+							<uni-list-item v-for="(item,index) in xxjlData.shouchang.list" :key="index"
+								class="word-list-item">
+								<template v-slot:body>
+									<view class="item-word">
+										<view class="word-text">
+											<text v-for="(word, wordIndex) in item.chaifen" 
+											:key="wordIndex" class="word-color">
+											{{ word }}
+											</text>
+										</view>
+										<view class="phonetic-alphabet">{{item.yinbiao || ''}}</view>
+									</view>
+									<view class="item-explain">
+										<view class="item-explain-content">
+											<view class="explain-text" v-for="(meaning, meaningIndex) in item.jianyi" :key="meaningIndex">{{meaning}}</view>
+										</view>
+									</view>
+									<view class="item-arrow"><icon></icon></view>
+								</template>
+							</uni-list-item>
+							<uni-load-more :status="xxjlData.shouchang.state" @click="getMore(0)"
+								:contentText="xxjlData.shouchang.contentText">
+							</uni-load-more>
+						</uni-list>
+					</scroll-view>
+				</view>
+			</view>
+		</view>
+		<CustomTabBar></CustomTabBar>
+	</view>
+</template>
+
+<script setup>
+	import {reactive,ref} from "vue";
+	import {getWordList} from "@/api/word.js"
+	import {onLoad} from "@dcloudio/uni-app";
+	import CustomTabBar from '@/components/custom-tabbar/custom-tabbar.vue';
+	const xxjlData = reactive({
+		items: [ '未掌握', '已掌握', '收藏'],
+		current: 0,
+		count: 0, // 总数,默认值设为 0
+		studyCount: 0, // 已学总数,默认值设为 0
+		shouchang: {
+			page: 0,
+			list: [],
+			loading: false,
+			state: 'more',
+			contentText: {
+				contentdown: '查看更多',
+				contentrefresh: '加载中',
+				contentnomore: '没有更多'
+			}
+
+		},
+		yizhangwo: {
+			page: 0,
+			list: [],
+			loading: false,
+			state: 'more',
+			contentText: {
+				contentdown: '查看更多',
+				contentrefresh: '加载中',
+				contentnomore: '没有更多'
+			}
+		},
+		weizhangwo: {
+			page: 0,
+			list: [],
+			loading: false,
+			state: 'more',
+			contentText: {
+				contentdown: '查看更多',
+				contentrefresh: '加载中',
+				contentnomore: '没有更多'
+			}
+		},
+	})
+
+
+
+	function onChangeTab(e) {
+		if (xxjlData.current !== e.currentIndex) {
+			xxjlData.current = e.currentIndex;
+			if (xxjlData.current == 0) {
+				xxjlData.weizhangwo.page = 0
+			} else if (xxjlData.current == 1) {
+				xxjlData.yizhangwo.page = 0
+			} else if (xxjlData.current == 2) {
+				xxjlData.shouchang.page = 0
+			}
+			refreshData(xxjlData.current);
+		}
+	}
+
+	function onScrolltolower() {
+		getMore(xxjlData.current)
+	}
+
+	function refreshData(code) {
+		const opt = {
+			jieId:"666",
+		}
+
+		if (code == 0) {
+			xxjlData.weizhangwo.list = [];
+			// 英语
+			xxjlData.weizhangwo.state = 'loading';
+			xxjlData.weizhangwo.page++;
+			opt.page = xxjlData.weizhangwo.page;
+		} else if (code == 1) {
+			xxjlData.yizhangwo.list = [];
+			// 英语
+			xxjlData.yizhangwo.state = 'loading';
+			xxjlData.yizhangwo.page++;
+			opt.page = xxjlData.yizhangwo.page;
+		} else if (code == 2) {
+			xxjlData.shouchang.list = [];
+			// 数学
+			xxjlData.shouchang.state = 'loading';
+			xxjlData.shouchang.page++;
+			opt.page = xxjlData.shouchang.page;
+		}
+		getWordList(opt).then(res => {
+			if (code == 0) {
+				xxjlData.weizhangwo.list = xxjlData.weizhangwo.list.concat(res.data.data);
+				xxjlData.weizhangwo.loading = false;
+				
+			} else if (code == 1) {
+				xxjlData.yizhangwo.list = xxjlData.yizhangwo.list.concat(res.data.data);
+				xxjlData.yizhangwo.loading = false;
+			} else if (code == 2) {
+				xxjlData.shouchang.list = xxjlData.shouchang.list.concat(res.data.data);
+				xxjlData.shouchang.loading = false;
+			}
+			if (code == 0) {
+				if (res.data.total > xxjlData.weizhangwo.list.length) {
+					// 英语
+					xxjlData.weizhangwo.state = 'more';
+					xxjlData.weizhangwo.loading = false;
+				} else {
+					// 英语
+					xxjlData.weizhangwo.state = 'no-more';
+					xxjlData.weizhangwo.loading = false;
+				}
+			} else if (code == 1) {
+				if (res.data.total > xxjlData.yizhangwo.list.length) {
+					// 英语
+					xxjlData.yizhangwo.state = 'more';
+					xxjlData.yizhangwo.loading = false;
+				} else {
+					// 英语
+					xxjlData.yizhangwo.state = 'no-more';
+					xxjlData.yizhangwo.loading = false;
+				}
+			} else if (code == 2) {
+				if (res.data.total > xxjlData.shouchang.list.length) {
+					// 数学
+					xxjlData.shouchang.state = 'more';
+					xxjlData.shouchang.loading = false;
+				} else {
+					// 数学
+					xxjlData.shouchang.state = 'no-more';
+					xxjlData.shouchang.loading = false;
+				}
+				
+			}
+		}).catch(err => {
+			if (code == 0) {
+				xxjlData.weizhangwo.state = 'more';
+				xxjlData.weizhangwo.loading = false;
+			} else if (code == 1) {
+				xxjlData.yizhangwo.state = 'more';
+				xxjlData.yizhangwo.loading = false;
+			} else if (code == 2) {
+				xxjlData.shouchang.state = 'more';
+				xxjlData.shouchang.loading = false;
+			}
+		})
+	}
+
+	function onRefresh() {
+		if (xxjlData.current == 0) {
+			xxjlData.weizhangwo.page = 0;
+			xxjlData.weizhangwo.list = [];
+			xxjlData.weizhangwo.loading = true;
+			
+		} else if (xxjlData.current == 1) {
+			xxjlData.yizhangwo.page = 0;
+			xxjlData.yizhangwo.list = [];
+			xxjlData.yizhangwo.loading = true;
+		} else if (xxjlData.current == 2) {
+			xxjlData.shouchang.page = 0;
+			xxjlData.shouchang.list = [];
+			xxjlData.shouchang.loading = true;
+		}
+		refreshData(xxjlData.current);
+	}
+
+	function getMore(code) {
+		const opt = {
+			jieId:"666",
+		}
+
+		if (code == 0) {
+			if (xxjlData.weizhangwo.state == 'no-more') {
+				return;
+			}
+			xxjlData.weizhangwo.state = 'loading';
+			xxjlData.weizhangwo.page++;
+			opt.page = xxjlData.weizhangwo.page;
+			
+		} else if (code == 1) {
+			if (xxjlData.yizhangwo.state == 'no-more') {
+				return;
+			}
+			xxjlData.yizhangwo.state = 'loading';
+			xxjlData.yizhangwo.page++;
+			opt.page = xxjlData.yizhangwo.page;
+		} else if (code == 2) {
+			if (xxjlData.shouchang.state == 'no-more') {
+				return;
+			}
+			// 数学
+			xxjlData.shouchang.state = 'loading';
+			xxjlData.shouchang.page++;
+			opt.page = xxjlData.shouchang.page;
+		}
+		getWordList(opt).then(res => {
+			if (code == 0) {
+				xxjlData.weizhangwo.list = res.data.wordList;
+				xxjlData.weizhangwo.loading = false;
+			} else if (code == 1) {
+				xxjlData.yizhangwo.list = xxjlData.yizhangwo.list.concat(res.data.data);
+				xxjlData.yizhangwo.loading = false;
+			} else if (code == 2) {
+				xxjlData.shouchang.list = xxjlData.shouchang.list.concat(res.data.data);
+				xxjlData.shouchang.loading = false;
+			}
+			if (code == 0) {
+				if (res.data.total > xxjlData.weizhangwo.list.length) {
+					// 英语
+					xxjlData.weizhangwo.state = 'more';
+					xxjlData.weizhangwo.state_text = '加载更多';
+					xxjlData.weizhangwo.loading = false;
+				} else {
+					// 英语
+					xxjlData.weizhangwo.state = 'no-more';
+					xxjlData.weizhangwo.state_text = '没有更多啦';
+				
+					xxjlData.weizhangwo.loading = false;
+				}
+				
+			} else if (code == 1) {
+				if (res.data.total > xxjlData.yizhangwo.list.length) {
+					// 英语
+					xxjlData.yizhangwo.state = 'more';
+					xxjlData.yizhangwo.state_text = '加载更多';
+
+					xxjlData.yizhangwo.loading = false;
+				} else {
+					// 英语
+					xxjlData.yizhangwo.state = 'no-more';
+					xxjlData.yizhangwo.state_text = '没有更多啦';
+					xxjlData.yizhangwo.loading = false;
+				}
+			} else if (code == 2) {
+				if (res.data.total > xxjlData.shouchang.list.length) {
+					// 数学
+					xxjlData.shouchang.state = 'more';
+					xxjlData.shouchang.state_text = '加载更多';
+					xxjlData.shouchang.loading = false;
+				} else {
+					// 数学
+					xxjlData.shouchang.state = 'no-more';
+					xxjlData.shouchang.state_text = '没有更多啦';
+				
+					xxjlData.shouchang.loading = false;
+				}
+			}
+		}).catch(err => {
+			if (code == 0) {
+				xxjlData.weizhangwo.state = 'more';
+				xxjlData.weizhangwo.state_text = '加载更多';
+				xxjlData.weizhangwo.loading = false;
+			} else if (code == 1) {
+				xxjlData.yizhangwo.state = 'more';
+				xxjlData.yizhangwo.state_text = '加载更多';
+				xxjlData.yizhangwo.loading = false;
+			} else if (code == 2) {
+				xxjlData.shouchang.state = 'more';
+				xxjlData.shouchang.state_text = '加载更多';
+				xxjlData.shouchang.loading = false;
+			}
+		})
+	}
+
+	function goBack() {
+		uni.redirectTo({
+			url: '/pages/my/index'
+		})
+	}
+	
+	onLoad((options) => {
+		xxjlData.current = Number(options.status) || xxjlData.current
+		getMore(xxjlData.current);
+	})
+</script>
+
+<style>
+
+</style>

+ 42 - 32
pages/newEnglish/components/learnContent.vue

@@ -7,11 +7,11 @@
 		<view>{{activeWord.yinbiao}}</view>
 		<view @click="playMainAudio">{{activeWord.yinpin}}</view>
 		<view>{{activeWord.jianyi}}</view>
-		<view>详解 ></view>
+		<view @click="goXiangjie">详解 ></view>
 		<view v-for="(item,index) in activeWord.yinjie" :key="index">
 			<view>{{item.cigen}}</view>
 			<view>{{item.yinbiao}}</view>
-			<view >{{item.yinpin}}</view>
+			<view>{{item.yinpin}}</view>
 		</view>
 		<view>自然拼读</view>
 		<view>音节拆分</view>
@@ -21,11 +21,11 @@
 				{{activeWord.cigen}}
 			</view>
 		</view>
-		
+
 		<view @click="clearFun">
 			asdfasdfasfasdfdasdfasdfasfadsfasdfadsfasdfasd
 		</view>
-		
+
 	</view>
 </template>
 
@@ -33,11 +33,18 @@
 	import selectWordsVue from './selectWords.vue';
 	import selectTypesVue from './selectTypes.vue';
 	import audioManager from './audioManager'
-	import { reactive,ref,onMounted } from 'vue';
+	import {
+		reactive,
+		ref,
+		onMounted
+	} from 'vue';
 	const props = defineProps({
 		activeWord: {
 			type: Object,
 		},
+		pageData: {
+			type: Object,
+		},
 		activeWords: {
 			type: Array
 		},
@@ -46,50 +53,53 @@
 	// setTimeout(() => {
 	// 	console.log('activeWord',props.activeWord)
 	// })
-	
+	const goXiangjie = () => {
+		uni.redirectTo({
+			url: '/pages/newEnglish/components/xiangjie?jieId='+props.pageData.jieId+'&wordId='+props.pageData.activeId
+		})
+	}
 	const audioInfo = ref(null)
-	
+
 	// 初始化并缓存音频
 	const initAudio = async () => {
-	  // 1. 从缓存获取已有信息
-	  const cachedInfo = audioManager.getAudioInfoFromStorage(props.activeWord.id)
-	  
-	  if (cachedInfo) {
-	    audioInfo.value = cachedInfo
-	  }
-	  
-	  // 2. 预加载所有音频(无论是否已有缓存)
-	  await audioManager.cacheWordAudios(props.activeWord)
-	  
-	  // 3. 更新音频信息
-	  audioInfo.value = audioManager.getAudioInfoFromStorage(props.activeWord.id)
+		// 1. 从缓存获取已有信息
+		const cachedInfo = audioManager.getAudioInfoFromStorage(props.activeWord.id)
+
+		if (cachedInfo) {
+			audioInfo.value = cachedInfo
+		}
+
+		// 2. 预加载所有音频(无论是否已有缓存)
+		await audioManager.cacheWordAudios(props.activeWord)
+
+		// 3. 更新音频信息
+		audioInfo.value = audioManager.getAudioInfoFromStorage(props.activeWord.id)
 	}
-	
+
 	// 播放主音频
 	const playMainAudio = () => {
-	  if (audioInfo.value && audioInfo.value.main) {
-	    audioManager.playAudio(audioInfo.value.main)
-	  }
+		if (audioInfo.value && audioInfo.value.main) {
+			audioManager.playAudio(audioInfo.value.main)
+		}
 	}
-	
+
 	// 播放音节音频
 	const playSyllable = (syllable) => {
-	  audioManager.playAudio(syllable)
+		audioManager.playAudio(syllable)
 	}
-	
+
+
 	// 播放频度音频
 	const playFrequency = (frequency) => {
-	  audioManager.playAudio(frequency)
+		audioManager.playAudio(frequency)
 	}
 	const clearFun = (frequency) => {
-	  audioManager.clearAllCache()
+		audioManager.clearAllCache()
 	}
-	
+
 	onMounted(() => {
-	  initAudio()
+		initAudio()
 	})
-	
-	
 </script>
 
 <style>

+ 5 - 2
pages/newEnglish/components/mainCard.vue

@@ -2,6 +2,7 @@
 	<swiper class="word-view-swiper-box" :indicator-dots="false" :autoplay="false" :circular="false">
 		<swiper-item>
 			<view class="swiper-item uni-bg-red">
+<!--				<learnContent :active-word="activeWord" :pageData="pageData" :active-words="activeWords"></learnContent>-->
 				<xuePage :active-word="activeWord" :active-words="activeWords" @play-audio="handlePlayAudio"></xuePage>
 			</view>
 		</swiper-item>
@@ -12,8 +13,7 @@
 		</swiper-item>
 		<swiper-item>
 			<view class="swiper-item uni-bg-blue">
-				读
-				<hr />{{activeWord}}
+				<readContent :active-word="activeWord" :pageData="pageData" :active-words="activeWords"></readContent>
 			</view>
 		</swiper-item>
 		<swiper-item>
@@ -38,6 +38,9 @@
 		activeWord: {
 			type: Object,
 		},
+		pageData: {
+			type: Object,
+		},
 		activeWords: {
 			type: Array
 		},

+ 36 - 0
pages/newEnglish/components/readContent.vue

@@ -0,0 +1,36 @@
+<template>
+	<view>
+	<selectTypesVue activeSelect="3"></selectTypesVue>
+	</view>
+</template>
+
+<script setup>
+	import selectWordsVue from './selectWords.vue';
+	import selectTypesVue from './selectTypes.vue';
+	import {
+		reactive,
+		ref,
+		onMounted
+	} from 'vue';
+	const props = defineProps({
+		activeWord: {
+			type: Object,
+		},
+		pageData: {
+			type: Object,
+		},
+		activeWords: {
+			type: Array
+		},
+	})
+	let tabFlag = ref(1)
+	const audioInfo = ref(null)
+
+	
+	onMounted(() => {
+		
+	})
+</script>
+
+<style>
+</style>

+ 79 - 0
pages/newEnglish/components/xiangjie.vue

@@ -0,0 +1,79 @@
+<template>
+	<view class="icon-title-navBar-box">
+		<view @click="handleBack" class="nav-bar-icon"></view>
+		<text class="nav-bar-title">单词详解</text>
+	</view>
+	<view>
+		<view>
+			{{pageInfo.name}}
+		</view>
+		<view>
+			<text>
+				通用释义
+			</text>
+			<text  v-for="(item,index) in pageInfo.xiangyi" :key="index">
+				<text>
+					{{item}}
+				</text>
+			</text>
+		</view>
+		<view>
+			<text>
+				实用口语
+			</text>
+			<text  v-for="(item,index) in pageInfo.kouyu" :key="index">
+				<text>
+					{{item.en}}
+					{{item.zn}}
+				</text>
+			</text>
+		</view>
+	</view>
+</template>
+
+<script setup>
+	import {
+		reactive,
+		ref,
+		onMounted
+	} from 'vue';
+	import {
+		getWordInfo
+	} from "@/api/word.js"
+	import {
+		onLoad
+	} from '@dcloudio/uni-app';
+	const goXiangjie = () => {
+
+	}
+	const pageInfo = ref({
+		kouyu: [],
+		xiangyi: [],
+		name: ''
+	})
+	const data = ref(null)
+
+
+	onLoad((options) => {
+		getInfo(options)
+		data.value = options
+	})
+	const handleBack = () => {
+		uni.redirectTo({
+			url: `/pages/newEnglish/index?jieId=${data.value.jieId}&wordId=${data.value.wordId}`
+		});
+	}
+	const getInfo = (data) => {
+		let req = {
+			jieId: data.jieId,
+			wordId: data.wordId
+		}
+		getWordInfo(req).then(res => {
+			console.log('res', res);
+			pageInfo.value = res.data
+		})
+	}
+</script>
+
+<style>
+</style>

+ 10 - 10
pages/newEnglish/index.vue

@@ -7,8 +7,8 @@
 		<view class="ezy-tab-border">
 			<view class="ezy-border-body">
 				<template v-for="item in data.wordList">
-					<mainCardVue :active-word="data.activeWord" :active-words="activeWords"
-						@play-audio="handlePlayAudio"
+					<mainCardVue :active-word="data.activeWord"  :pageData="data" :active-words="activeWords"
+            @play-audio="handlePlayAudio"
 						v-if="item.id == data.activeId" :key="item.id">
 					</mainCardVue>
 				</template>
@@ -44,9 +44,9 @@
 	import {useAudioCache,audioPlayer } from "./components/useAudio.js"
 
 	const userCode = getUserIdentity();
-	
+
 	const {cacheAudio,clearAudioCache} = useAudioCache();
-	
+
 	const AudioP = new audioPlayer();
 
 	function courseBjFun() {
@@ -203,9 +203,9 @@
 				if (data.wordList.length) {
 					data.arrayList = chunkArray(data.wordList, 5); // 将1维单词数组转换为2维数组
 				}
-				console.log('res.data',res.data)
+				// console.log('res.data',res.data)
 				handleCacheAudio()
-				
+
 			})
 		} else {
 			httpApi.getCommonWordInfo({
@@ -218,12 +218,12 @@
 				if (data.wordList.length) {
 					data.arrayList = chunkArray(data.wordList, 5); // 将1维单词数组转换为2维数组
 				}
-				
+
 				handleCacheAudio()
 			})
 		}
 	}
-	
+
 	function handleCacheAudio() {
 
 		const arr = []
@@ -241,7 +241,7 @@
 		arr.map(item => cacheAudio(item));
 		// console.log('arr',arr)
 	}
-	
+
 	async function handlePlayAudio({url,code}) {
 		// console.log('播放', url)
 		const cachedPath = await cacheAudio(url);
@@ -255,7 +255,7 @@
 			});
 		}
 	}
-	
+
 </script>
 
 <style>

+ 0 - 6
pages/study/index.vue

@@ -503,12 +503,6 @@
 	}
 
 	function goDanciList(data, index) {
-		
-		uni.redirectTo({
-			url: 	'/pages/newEnglish/index?jieId=666&wordId=42'
-		})
-
-		return
 		if (!cacheManager.get('auth')) {
 			let youkeData = {
 				subjectId: subjectId.value,