Преглед на файлове

Merge branch 'master' of http://139.9.50.163:3000/Project2024/menber-center

LinWuTai преди 1 ден
родител
ревизия
349087b9c9

+ 76 - 72
manifest.json

@@ -1,73 +1,77 @@
 {
-    "name" : "member-center",
-    "appid" : "__UNI__35AB102",
-    "description" : "",
-    "versionName" : "1.0.0",
-    "versionCode" : "100",
-    "transformPx" : false,
-    /* 5+App特有相关 */
-    "app-plus" : {
-        "usingComponents" : true,
-        "nvueStyleCompiler" : "uni-app",
-        "compilerVersion" : 3,
-        "splashscreen" : {
-            "alwaysShowBeforeRender" : true,
-            "waiting" : true,
-            "autoclose" : true,
-            "delay" : 0
-        },
-        /* 模块配置 */
-        "modules" : {},
-        /* 应用发布信息 */
-        "distribute" : {
-            /* android打包配置 */
-            "android" : {
-                "permissions" : [
-                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
-                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-                ]
-            },
-            /* ios打包配置 */
-            "ios" : {},
-            /* SDK配置 */
-            "sdkConfigs" : {}
-        }
-    },
-    /* 快应用特有相关 */
-    "quickapp" : {},
-    /* 小程序特有相关 */
-    "mp-weixin" : {
-        "appid" : "wxe56078006e93067c",
-        "setting" : {
-            "urlCheck" : false,
-            "minified" : true
-        },
-        "usingComponents" : true
-    },
-    "mp-alipay" : {
-        "usingComponents" : true
-    },
-    "mp-baidu" : {
-        "usingComponents" : true
-    },
-    "mp-toutiao" : {
-        "usingComponents" : true
-    },
-    "uniStatistics" : {
-        "enable" : false
-    },
-    "vueVersion" : "3"
-}
+	"name": "member-center",
+	"appid": "__UNI__35AB102",
+	"description": "",
+	"versionName": "1.0.0",
+	"versionCode": "100",
+	"transformPx": false,
+	/* 5+App特有相关 */
+	"app-plus": {
+		"usingComponents": true,
+		"nvueStyleCompiler": "uni-app",
+		"compilerVersion": 3,
+		"splashscreen": {
+			"alwaysShowBeforeRender": true,
+			"waiting": true,
+			"autoclose": true,
+			"delay": 0
+		},
+		/* 模块配置 */
+		"modules": {},
+		/* 应用发布信息 */
+		"distribute": {
+			/* android打包配置 */
+			"android": {
+				"permissions": [
+					"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+					"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+					"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+					"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CAMERA\"/>",
+					"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+					"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+					"<uses-feature android:name=\"android.hardware.camera\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+				]
+			},
+			/* ios打包配置 */
+			"ios": {},
+			/* SDK配置 */
+			"sdkConfigs": {}
+		}
+	},
+	/* 快应用特有相关 */
+	"quickapp": {},
+	/* 小程序特有相关 */
+	"mp-weixin": {
+		"appid": "wxe56078006e93067c",
+		"setting": {
+			"urlCheck": false,
+			"minified": true
+		},
+		"usingComponents": true,
+		"navigateToMiniProgramAppIdList": [
+			"wx65323471c83da344",
+			"wx050c17d8b239da86"
+		]
+	},
+	"mp-alipay": {
+		"usingComponents": true
+	},
+	"mp-baidu": {
+		"usingComponents": true
+	},
+	"mp-toutiao": {
+		"usingComponents": true
+	},
+	"uniStatistics": {
+		"enable": false
+	},
+	"vueVersion": "3"
+}

+ 7 - 2
pages/dynamic/dynamic/dynamic.vue

@@ -4,7 +4,8 @@
 			<view class="list-item-box" v-for="item in list" :key="item.id" @click="onDynamicClick(item)">
 				<view class="main-box">
 					<view class="icon-box">
-						<cover-image class="icon" :src="`${FILE_URL}/notice/icon-1.jpg`"></cover-image>
+						<view class="iconfont icon-yingfengdongtai"></view>
+						<!-- <cover-image class="icon" :src="`${FILE_URL}/notice/icon-1.jpg`"></cover-image> -->
 					</view>
 					<view class="content-box">
 						<view class="title">
@@ -93,7 +94,7 @@
 	.container {
 		// height: 100vh;
 		width: 100vw;
-		background-color: $uni-bg-color;
+		background-color: #FFFFFF;
 		padding: 0 20rpx env(safe-area-inset-bottom, 0);
 		
 		.search-box {
@@ -137,6 +138,10 @@
 							width: 70rpx;
 							height: 70rpx;
 						}
+						.iconfont{
+							font-size: 60rpx;
+							color: #0069f6;
+						}
 					}
 					.content-box {
 						width: 67%;

+ 320 - 0
pages/goOnEdu/course/courseDetail/courseDetail - 副本.vue

@@ -0,0 +1,320 @@
+<template>
+	<view>
+		<view class="container">
+			<view style="height: 500rpx;display: flex;
+				flex-direction: column;
+				justify-content: space-between;;">
+				<view style="height: 400rpx;width: 100%;background-color: aliceblue;flex: 0 0 auto;"></view>
+				<view class="course-tab-list">
+					<view class="course-tab-item" v-for="(data, index) in items" :key="index"
+						@click="onClickItem(index)" :class="currentTab === index ? 'tab-active' : ''">
+						{{ data }}
+					</view>
+				</view>
+			</view>
+			<view class="content">
+				<courseDesc v-if="currentTab === 0" :paddingBottom="100" showType="image"
+					:content="courseDetail.imgUrl?courseDetail.imgUrl:''" :hasBuy="courseDetail.hasBuy"
+					:payType="courseDetail.viewMode"></courseDesc>
+				<courseCredits v-if="currentTab === 1" :credit="courseDetail.courseCredits"></courseCredits>
+				<courseComment v-if="currentTab === 2" :paddingBottom="100" :commentList="commentList"></courseComment>
+			</view>
+
+		</view>
+		<view v-if="showBuy" class="section-bottom" @click="toBuy">
+			<text>点击购买</text>
+		</view>
+		<view v-if="currentTab === 2" class="section-bottom " style="background-color: #f2f2f2;">
+			<view class="comment-input-box">
+				<u-input :custom-style="inputStyle" class="comment-input" v-model="comment" :border="false"
+					placeholder="写留言" height="60" adjust-position />
+				<u-button class="comment-button" :hair-line="false" :custom-style="customStyle"
+					@click="toSend">发送</u-button>
+			</view>
+		</view>
+	</view>
+
+</template>
+
+<script setup>
+	import courseDesc from './component/courseDesc/courseDesc.vue';
+	import courseCredits from './component/courseCredits/courseCredits.vue';
+	import courseComment from './component/courseComment/courseComment.vue';
+	import {
+		loadCourseDetail,
+		loadCommentList,
+		sendComment
+	} from "@/api/edu.js"
+
+	import {
+		useAuthStore
+	} from '@/store/authStore'
+	const authStore = useAuthStore();
+	// const isMember = ref(false)
+
+	import {
+		ref, computed
+	} from 'vue'
+	import {
+		onLoad,
+		onShow
+	} from '@dcloudio/uni-app'
+
+	const courseDetail = ref({});
+	const courseId = ref(null);
+	const items = ref(['课程简介', '课程学分', '观看评论']);
+	const currentTab = ref(0);
+	const comment = ref("");
+	// 评论发送按钮样式
+	const customStyle = ref({
+		backgroundColor: '#e6e6e6',
+		color: '#333333',
+		fontWeight: 'bold',
+		height: '60rpx',
+		marginLeft: '20rpx',
+		border: 'none',
+		fontSize: '26rpx'
+	})
+	// 评论输入框样式
+	const inputStyle = ref({
+		backgroundColor: '#e6e6e6',
+		color: '#333333',
+		borderRadius: '5px',
+		padding: '0 20rpx',
+		fontSize: '26rpx'
+	})
+	// 评论列表
+	const commentList = ref([{
+			commentId: "01",
+			username: "用户名123",
+			iocn: "",
+			content: "评论内容评论内容评容,大赛冠军的",
+			commentTime: "2023-10-10 19:00:00"
+		},
+		{
+			commentId: "02",
+			username: "用户名567",
+			iocn: "",
+			content: "hajdkhd dhasjhd 等哈十九点按时鉴定会撒低级,撒谎客户端喝酒侃大山哈吉斯肯定会大会开始觉得暗黑界的是客户,大赛冠军的",
+			commentTime: "2023-10-11 19:00:00"
+		},
+		{
+			commentId: "03",
+			username: "用户名567",
+			iocn: "",
+			content: "hajdkhd dhasjhd ,,大赛冠军的",
+			commentTime: "2023-10-12 19:00:00"
+		},
+		{
+			commentId: "04",
+			username: "用户名567",
+			iocn: "",
+			content: "hajdkhd dhasjhd 等哈十九点按时鉴定会撒低级,撒谎客户端喝酒侃大山哈吉斯肯定会大会开始觉得暗黑界的是客户,大赛冠军的",
+			commentTime: "2023-10-13 19:00:00"
+		},
+		{
+			commentId: "05",
+			username: "用户名567",
+			iocn: "",
+			content: "hajdkhd dhasjhd 等哈十九点按时鉴定会撒低级,撒谎客户端喝酒侃大山哈吉斯肯定会大会开始觉得暗黑界的是客户,大赛冠军的",
+			commentTime: "2023-10-14 19:00:00"
+		},
+		{
+			commentId: "06",
+			username: "用户名567",
+			iocn: "",
+			content: "hajdkhd dhasjhd 等哈十九点按时鉴定会撒低级,撒谎客户端喝酒侃大山哈吉斯肯定会大会开始觉得暗黑界的是客户,大赛冠军的",
+			commentTime: "2025-01-17 12:00:00"
+		},
+		{
+			commentId: "07",
+			username: "用户名567",
+			iocn: "",
+			content: "hajdkhd dhasjhd 等哈十九点按时鉴定会撒低级,撒谎客户端喝酒侃大山哈吉斯肯定会大会开始觉得暗黑界的是客户,大赛冠军的",
+			commentTime: "2025-01-17 15:30:00"
+		}
+	])
+	// 点击tabs,切换
+	function onClickItem(e) {
+		if (currentTab.value != e) {
+			currentTab.value = e;
+			if (e === 2) {
+				getComment(courseId.value)
+			}
+		}
+	}
+	// 初始化
+	function init(id) {
+		loadCourseDetail(id).then(res => {
+			if (res?.data) {
+				courseDetail.value = res.data;
+				showBuy.value = showBuyAction()
+				// console.log(courseDetail, "课程详情")
+			}
+		})
+	}
+
+	function getComment(id) {
+		loadCommentList(id).then(res => {
+			if (res?.data) {
+				commentList.value = res.data;
+			}
+		})
+	}
+	// 购买课程
+	function toBuy() {
+		uni.navigateTo({
+			url: "/pages/goOnEdu/course/courseDetail/courseOrder?id=" + courseId.value
+		})
+		// console.log("购买该课程", courseDetail.value.id)
+	}
+
+	function toSend() {
+		sendComment({
+			courseId: courseId.value,
+			content: comment.value,
+			commentTime: formatDate(new Date())
+		}).then(res => {
+			getComment(courseId.value)
+			comment.value = ""
+		})
+	}
+
+	function formatDate(date) {
+		const pad = (num) => num.toString().padStart(2, '0');
+
+		const year = date.getFullYear();
+		const month = pad(date.getMonth() + 1); // 月份从0开始,需加1
+		const day = pad(date.getDate());
+
+		const hours = pad(date.getHours());
+		const minutes = pad(date.getMinutes());
+		const seconds = pad(date.getSeconds());
+
+		return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+	}
+	function showBuyAction(){
+		if (courseDetail.value.viewMode === '2' &&
+			!isMember.value &&
+			!courseDetail.value.hasBuy &&
+			currentTab.value === 0) {
+			console.log(1)
+			return true
+		}
+		// 付费,不管是不是会员,并且没买的
+		if (courseDetail.value.viewMode === '3' &&
+			!courseDetail.value.hasBuy &&
+			currentTab.value === 0) {
+			console.log(2)
+			return true
+		}
+		console.log(3)
+		return false
+	}
+	// const showBuy = computed(()=>{
+	// 	if (courseDetail.value.viewMode === '2' &&
+	// 		!isMember.value &&
+	// 		!courseDetail.value.hasBuy &&
+	// 		currentTab.value === 0) {
+	// 		console.log(1)
+	// 		return true
+	// 	}
+	// 	// 付费,不管是不是会员,并且没买的
+	// 	if (courseDetail.value.viewMode === '3' &&
+	// 		!courseDetail.value.hasBuy &&
+	// 		currentTab.value === 0) {
+	// 		console.log(2)
+	// 		return true
+	// 	}
+	// 	console.log(3)
+	// 	return false
+	// })
+	const showBuy = ref(false)
+	const isMember = computed(()=>{
+		return authStore.userInfo.isMember == '0' ? false : true
+	})
+	// 初始化页面
+	onLoad((option) => {
+		const {
+			id,
+			name
+		} = option;
+		// isMember.value = authStore.userInfo.isMember == '0' ? false : true;
+		// console.log("是否是会员", isMember.value)
+		courseId.value = id
+		uni.setNavigationBarTitle({
+			title: name
+		});
+	})
+	onShow(()=>{
+		init(courseId.value)
+		getComment(courseId.value)
+	})
+</script>
+
+<style lang="scss" scoped>
+	.container {
+		height: 100vh;
+		width: 100vw;
+		background-color: #fff;
+		padding: 0 20rpx;
+		// display: flex;
+		// flex-direction: column;
+	}
+
+	.course-tab-list {
+		// margin: 15rpx 0;
+		display: flex;
+		background-color: #f2f2f2;
+		flex: 0 0 auto;
+
+		.course-tab-item {
+			width: 100%;
+			height: 80rpx;
+			line-height: 80rpx;
+			text-align: center;
+		}
+
+		.tab-active {
+			border-bottom: 1px solid #0069f6;
+		}
+	}
+
+	.content {
+		overflow: scroll;
+		height: calc(100vh - 500rpx - env(safe-area-inset-bottom, 0));
+		// flex: 1;
+		// padding-bottom: ;
+	}
+
+	.section-bottom {
+		height: 90rpx;
+		color: #fff;
+		font-size: 34rpx;
+		text-align: center;
+		line-height: 80rpx;
+		background-color: #fe0000;
+		width: 100%;
+		position: fixed;
+		bottom: 0;
+		box-sizing: content-box;
+		padding-bottom: env(safe-area-inset-bottom, 0);
+	}
+
+	.comment-input-box {
+		width: 100%;
+		height: 100%;
+		display: flex;
+		box-sizing: border-box;
+		padding: 0 20rpx;
+		align-items: center;
+
+		.comment-input {
+			flex: 1;
+		}
+
+		.comment-button {
+			flex: 0 0 auto;
+		}
+	}
+</style>

+ 126 - 63
pages/goOnEdu/course/courseDetail/courseDetail.vue

@@ -1,35 +1,50 @@
 <template>
 	<view>
 		<view class="container">
-			<view style="height: 500rpx;display: flex;
-				flex-direction: column;
-				justify-content: space-between;;">
-				<view style="height: 400rpx;width: 100%;background-color: aliceblue;flex: 0 0 auto;"></view>
-				<view class="course-tab-list">
-					<view class="course-tab-item" v-for="(data, index) in items" :key="index"
-						@click="onClickItem(index)" :class="currentTab === index ? 'tab-active' : ''">
-						{{ data }}
-					</view>
+			<view class="container-poster" style="width: 100%;padding: 0 20rpx;">
+				<image :src="courseDetail.poster?courseDetail.poster:''" mode="widthFix" style="width: 100%;" ></image>
+			</view>
+			<view class="course-tab-list">
+				<view class="course-tab-item" v-for="(data, index) in items" :key="index"
+					@click="onClickItem(index)" :class="currentTab === index ? 'tab-active' : ''">
+					{{ data }}
 				</view>
 			</view>
-			<view class="content">
-				<courseDesc v-if="currentTab === 0" :paddingBottom="100" showType="image"
-					:content="courseDetail.imgUrl?courseDetail.imgUrl:''" :hasBuy="courseDetail.hasBuy"
-					:payType="courseDetail.viewMode"></courseDesc>
-				<courseCredits v-if="currentTab === 1" :credit="courseDetail.courseCredits"></courseCredits>
-				<courseComment v-if="currentTab === 2" :paddingBottom="100" :commentList="commentList"></courseComment>
+			<view class="content" v-if="currentTab === 0">
+				<view class="content-text">
+					<view class="text-title">{{courseDetail.courseName}}</view>
+					<view class="text-title">课程概述</view>
+					<view class="text-content">{{courseDetail.summary}}</view>
+					<view class="text-title">课程时间</view>
+					<view class="text-content">{{courseDetail.courseDate}}</view>
+					<view class="text-title">培训地点</view>
+					<view class="text-content">{{courseDetail.loc}}</view>
+					<view class="text-tip" v-if="!isMember">个人会员或单位会员免费,点击现在入会></view>
+				</view>
 			</view>
-
-		</view>
-		<view v-if="showBuy" class="section-bottom" @click="toBuy">
-			<text>点击购买</text>
-		</view>
-		<view v-if="currentTab === 2" class="section-bottom " style="background-color: #f2f2f2;">
-			<view class="comment-input-box">
-				<u-input :custom-style="inputStyle" class="comment-input" v-model="comment" :border="false"
-					placeholder="写留言" height="60" adjust-position />
-				<u-button class="comment-button" :hair-line="false" :custom-style="customStyle"
-					@click="toSend">发送</u-button>
+			<view class="content" v-if="currentTab === 1" style="overflow: hidden;">
+				<view class="" style="margin-bottom: 140rpx;height: 100%;overflow: scroll;padding-left: 20rpx;padding-right: 20rpx;">
+					<view v-for="(comment, index) in sortedCommentList" :key="index" class="comment-list-item">
+						<view class="comment-list-left">
+							<image :src="comment.icon" class="comment-list-avator"></image>
+						</view>
+						<view class="comment-list-right">
+							<view style="margin-bottom: 15rpx;">
+								<text class="comment-list-username">{{ comment.username }}</text>
+								<text class="comment-list-moment">{{ formatTime(comment.commentTime) }}</text>
+							</view>
+							<view>{{ comment.content }}</view>
+						</view>
+					</view>
+				</view>
+				<view class="section-bottom " style="background-color: #f2f2f2;">
+					<view class="comment-input-box">
+						<u-input :custom-style="inputStyle" class="comment-input" v-model="comment" :border="false"
+							placeholder="写留言" height="60" adjust-position />
+						<u-button class="comment-button" :hair-line="false" :custom-style="customStyle"
+							@click="toSend">发送</u-button>
+					</view>
+				</view>
 			</view>
 		</view>
 	</view>
@@ -37,9 +52,6 @@
 </template>
 
 <script setup>
-	import courseDesc from './component/courseDesc/courseDesc.vue';
-	import courseCredits from './component/courseCredits/courseCredits.vue';
-	import courseComment from './component/courseComment/courseComment.vue';
 	import {
 		loadCourseDetail,
 		loadCommentList,
@@ -62,7 +74,7 @@
 
 	const courseDetail = ref({});
 	const courseId = ref(null);
-	const items = ref(['课程简介', '课程学分', '观看评论']);
+	const items = ref(['课程简介', '观看评论']);
 	const currentTab = ref(0);
 	const comment = ref("");
 	// 评论发送按钮样式
@@ -198,37 +210,19 @@
 			!isMember.value &&
 			!courseDetail.value.hasBuy &&
 			currentTab.value === 0) {
-			console.log(1)
+			// console.log(1)
 			return true
 		}
 		// 付费,不管是不是会员,并且没买的
 		if (courseDetail.value.viewMode === '3' &&
 			!courseDetail.value.hasBuy &&
 			currentTab.value === 0) {
-			console.log(2)
+			// console.log(2)
 			return true
 		}
-		console.log(3)
+		// console.log(3)
 		return false
 	}
-	// const showBuy = computed(()=>{
-	// 	if (courseDetail.value.viewMode === '2' &&
-	// 		!isMember.value &&
-	// 		!courseDetail.value.hasBuy &&
-	// 		currentTab.value === 0) {
-	// 		console.log(1)
-	// 		return true
-	// 	}
-	// 	// 付费,不管是不是会员,并且没买的
-	// 	if (courseDetail.value.viewMode === '3' &&
-	// 		!courseDetail.value.hasBuy &&
-	// 		currentTab.value === 0) {
-	// 		console.log(2)
-	// 		return true
-	// 	}
-	// 	console.log(3)
-	// 	return false
-	// })
 	const showBuy = ref(false)
 	const isMember = computed(()=>{
 		return authStore.userInfo.isMember == '0' ? false : true
@@ -239,8 +233,6 @@
 			id,
 			name
 		} = option;
-		// isMember.value = authStore.userInfo.isMember == '0' ? false : true;
-		// console.log("是否是会员", isMember.value)
 		courseId.value = id
 		uni.setNavigationBarTitle({
 			title: name
@@ -250,23 +242,51 @@
 		init(courseId.value)
 		getComment(courseId.value)
 	})
+	
+	function formatDateS(dateStr) {
+		return dateStr.replace(" ", "T");
+	}
+	
+	function formatTime(timeString) {
+	    const commentDate = new Date(formatDateS(timeString));
+	    const now = new Date();
+	    const diff = now - commentDate;
+	
+	    const minutes = Math.floor(diff / 60000);
+	    const hours = Math.floor(diff / 3600000);
+	    const days = Math.floor(diff / 86400000);
+	
+	    if (minutes < 1) { // 修改这里以处理0分钟
+	        return "刚刚";
+	    } else if (minutes < 60) {
+	        return `${minutes}分钟前`;
+	    } else if (hours < 24) {
+	        return `${hours}小时前`;
+	    } else {
+	        return commentDate.toISOString().split('T')[0];
+	    }
+	}
+	
+	const sortedCommentList = computed(() => {
+		return commentList.value.sort((a, b) =>
+			new Date(formatDateS(b.commentTime)) - new Date(formatDateS(a.commentTime))
+		);
+	});
 </script>
 
 <style lang="scss" scoped>
 	.container {
-		height: 100vh;
+		// height: 100vh;
 		width: 100vw;
 		background-color: #fff;
-		padding: 0 20rpx;
-		// display: flex;
-		// flex-direction: column;
+		// padding: 0 20rpx;
 	}
 
 	.course-tab-list {
-		// margin: 15rpx 0;
 		display: flex;
 		background-color: #f2f2f2;
 		flex: 0 0 auto;
+		margin: 0 20rpx;
 
 		.course-tab-item {
 			width: 100%;
@@ -279,12 +299,31 @@
 			border-bottom: 1px solid #0069f6;
 		}
 	}
-
+	// .container-poster{
+	// 	height: calc(100vh - 500rpx - env(safe-area-inset-bottom, 0));
+	// }
 	.content {
 		overflow: scroll;
-		height: calc(100vh - 500rpx - env(safe-area-inset-bottom, 0));
-		// flex: 1;
-		// padding-bottom: ;
+		// height: calc(100vh - 500rpx - env(safe-area-inset-bottom, 0));
+		height: 700rpx;
+		position: relative;
+		.content-text{
+			padding: 0 20rpx env(safe-area-inset-bottom, 0);
+			font-size: 38rpx;
+			.text-title{
+				font-weight: bold;
+				margin-bottom: 15rpx;
+			}
+			.text-content{
+				font-size: 32rpx;
+				margin-bottom: 20rpx;
+			}
+			.text-tip{
+				color: red;
+				// margin-bottom: 20rpx;
+				margin-bottom: env(safe-area-inset-bottom, 0);
+			}
+		}
 	}
 
 	.section-bottom {
@@ -295,7 +334,7 @@
 		line-height: 80rpx;
 		background-color: #fe0000;
 		width: 100%;
-		position: fixed;
+		position: absolute;
 		bottom: 0;
 		box-sizing: content-box;
 		padding-bottom: env(safe-area-inset-bottom, 0);
@@ -317,4 +356,28 @@
 			flex: 0 0 auto;
 		}
 	}
+	
+	.comment-list-item {
+		display: flex;
+		padding: 20rpx 0;
+		font-size: 28rpx;
+		.comment-list-left{
+			flex: 0 0 auto;
+			padding-right: 20rpx;
+			padding-left: 10rpx;
+			.comment-list-avator{
+				width: 100rpx;
+				height: 100rpx;
+				border-radius: 50%;
+			}
+		}
+		.comment-list-right{
+			flex: 1;
+			.comment-list-username{
+				padding-right: 25rpx;
+				font-size: 32rpx;
+				font-weight: bold;
+			}
+		}
+	}
 </style>

+ 6 - 2
pages/goOnEdu/course/courseHome/courseHome.vue

@@ -15,7 +15,7 @@
 			<view v-for="(course,index) in filterCourses" :key="course.id" @click="toPage(course)">
 				<view class="course-item">
 					<view class="course-item-image">
-						<image class="course-image" :src="course.imgUrl" mode="aspectFill"></image>
+						<image class="course-image" :src="course.cover" mode="aspectFill"></image>
 					</view>
 					<view class="course-item-content">
 						<view class="course-title">
@@ -34,7 +34,11 @@
 							<u-icon name="clock" size="28"></u-icon>
 							{{ getDateWeek(course.courseDate) }}
 						</view>
-						<view class="course-price">¥{{ course.price }}元</view>
+						<view class="course-price" 
+						v-if=" (course.viewMode === '3') || (isMember && course.viewMode==='2')">
+						¥{{ isMember ? course.priceMember : course.price }}元
+						</view>
+						<view v-else style="height: 30rpx;width: 100%;"></view>
 						<button :class="['button', getButtonClass(course)]">{{ getButtonText(course) }}</button>
 					</view>
 				</view>

+ 4 - 4
pages/goOnEdu/course/courseMine/mineCredits/mineCredits.vue

@@ -20,9 +20,9 @@
 					{{item.year}}
 				</view>
 				<view class="list-item">
-					{{item.credit}}
+					{{item.gotCredit}}/{{item.credit}}
 				</view>
-				<view class="list-item" v-html="item.annIns!=='学分未达标不能申请年检' ? '完成学分' : '学分未达标,<br/>不能申请年检'"></view>
+				<view class="list-item" v-html="item.annIns!=='学分未达标不能申请年检' ? item.annIns : '学分未达标,<br/>不能申请年检'"></view>
 				<view class="list-item">
 					<view class="button" :class="[item.finish ? 'primary' : 'error']">
 						{{item.finish ? '已完成观看' : '未完成'}}
@@ -41,13 +41,13 @@
 	const initList = () => {
 		loadCredit().then(res=>{
 			if(res && res?.code ===0){
-				list.value = res.data
+				list.value = res.data.creditList
 			}
 		})
 	}
 	onLoad(() => {
 		initList()
-		console.log('onLoad')
+		// console.log('onLoad')
 	})
 </script>
 

+ 1 - 1
pages/goOnEdu/course/courseMine/mineRecord/mineRecord.vue

@@ -12,7 +12,7 @@
 			<view v-for="(course,index) in courses" :key="course.id">
 				<view class="course-item">
 					<view class="course-item-image">
-						<image class="course-image" :src="course.imgUrl" mode="aspectFill"></image>
+						<image class="course-image" :src="course.cover" mode="aspectFill"></image>
 					</view>
 					<view class="course-item-content">
 						<view class="course-title">

+ 8 - 3
pages/guide/guide/guide.vue

@@ -4,8 +4,9 @@
 			<view class="list-item-box" v-for="item in list" :key="item.id" @click="onGuideClick(item)">
 				<view class="main-box">
 					<view class="icon-box">
-						<cover-image class="icon"
-							:src="`${FILE_URL}/notice/icon-1.jpg`"></cover-image>
+						<view class="iconfont icon-banshizhiyin"></view>
+						<!-- <cover-image class="icon"
+							:src="`${FILE_URL}/notice/icon-1.jpg`"></cover-image> -->
 					</view>
 					<view class="content-box">
 						<view class="title">
@@ -99,7 +100,7 @@
 	.container {
 		height: 100vh;
 		width: 100vw;
-		background-color: $uni-bg-color;
+		background-color: #FFFFFF;
 		padding: 0 20rpx env(safe-area-inset-bottom, 0);
 		.search-box {
 			margin-bottom: 20rpx;
@@ -146,6 +147,10 @@
 							width: 70rpx;
 							height: 70rpx;
 						}
+						.iconfont{
+							font-size: 60rpx;
+							color: #0069f6;
+						}
 					}
 
 					.content-box {

+ 7 - 2
pages/notice/notice/notice.vue

@@ -13,7 +13,8 @@
 			<view class="list-item-box" v-for="item in list" :key="item.id" @click="onNoticeClick(item)">
 				<view class="main-box">
 					<view class="icon-box">
-						<cover-image class="icon" :src="`${FILE_URL}/notice/icon-2.jpg`"></cover-image>
+						<view class="iconfont icon-a-tongzhigonggao"></view>
+						<!-- <cover-image class="icon" :src="`${FILE_URL}/notice/icon-2.jpg`"></cover-image> -->
 					</view>
 					<view class="content-box">
 						<view class="title">
@@ -102,7 +103,7 @@
 	.container {
 		// height: 100vh;
 		width: 100vw;
-		background-color: $uni-bg-color;
+		background-color: #FFFFFF;
 		padding: 0 20rpx env(safe-area-inset-bottom, 0);
 		
 		.search-box {
@@ -146,6 +147,10 @@
 							width: 70rpx;
 							height: 70rpx;
 						}
+						.iconfont{
+							font-size: 60rpx;
+							color: #0069f6;
+						}
 					}
 					.content-box {
 						width: 67%;

+ 23 - 3
static/fonts/iconfont.css

@@ -1,8 +1,8 @@
 @font-face {
   font-family: "iconfont"; /* Project id 4808041 */
-  src: url('iconfont.woff2?t=1746771698048') format('woff2'),
-       url('iconfont.woff?t=1746771698048') format('woff'),
-       url('iconfont.ttf?t=1746771698048') format('truetype');
+  src: url('iconfont.woff2?t=1747813809195') format('woff2'),
+       url('iconfont.woff?t=1747813809195') format('woff'),
+       url('iconfont.ttf?t=1747813809195') format('truetype');
 }
 
 .iconfont {
@@ -13,6 +13,26 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-yingfengdongtai:before {
+  content: "\e622";
+}
+
+.icon-dongtai1:before {
+  content: "\e650";
+}
+
+.icon-dongtai:before {
+  content: "\e62d";
+}
+
+.icon-banshizhiyin:before {
+  content: "\e6bf";
+}
+
+.icon-a-tongzhigonggao:before {
+  content: "\e6bd";
+}
+
 .icon-xinxisousuo-01:before {
   content: "\e6c8";
 }

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
static/fonts/iconfont.js


+ 35 - 0
static/fonts/iconfont.json

@@ -6,6 +6,41 @@
   "description": "",
   "glyphs": [
     {
+      "icon_id": "1037697",
+      "name": "盈峰动态",
+      "font_class": "yingfengdongtai",
+      "unicode": "e622",
+      "unicode_decimal": 58914
+    },
+    {
+      "icon_id": "1072933",
+      "name": "动态",
+      "font_class": "dongtai1",
+      "unicode": "e650",
+      "unicode_decimal": 58960
+    },
+    {
+      "icon_id": "154254",
+      "name": "动态",
+      "font_class": "dongtai",
+      "unicode": "e62d",
+      "unicode_decimal": 58925
+    },
+    {
+      "icon_id": "11614317",
+      "name": "办事指引",
+      "font_class": "banshizhiyin",
+      "unicode": "e6bf",
+      "unicode_decimal": 59071
+    },
+    {
+      "icon_id": "24656645",
+      "name": "通知、公告",
+      "font_class": "a-tongzhigonggao",
+      "unicode": "e6bd",
+      "unicode_decimal": 59069
+    },
+    {
       "icon_id": "31086242",
       "name": "信息搜索-01",
       "font_class": "xinxisousuo-01",

BIN
static/fonts/iconfont.ttf


BIN
static/fonts/iconfont.woff


BIN
static/fonts/iconfont.woff2


Някои файлове не бяха показани, защото твърде много файлове са промени