ソースを参照

能点了 上面

于添 8 ヶ月 前
コミット
002630658b

+ 2 - 0
src/router/portal.js

@@ -34,11 +34,13 @@ const portal = [
 			{
 				name: 'portal.resourceCenter',
 				path: '/portal/resourceCenter',
+				hide: true,
 				component: () => import('@/resourceCenter/index.vue')
 			},
 			{
 				name: 'portal.resourceDetails',
 				path: '/portal/resourceDetails',
+				hide: true,
 				component: () => import('@/resourceDetails/index.vue')
 			}
 		]

+ 3 - 3
src/views/portal/components/Footer.vue

@@ -1,13 +1,13 @@
 <template>
 	<footer class="footer">
 		<div class="footer-links">
-			<a href="#">网站首页</a>
+			<!-- <a href="#">网站首页</a>
 			<a href="#">帮助中心</a>
 			<a href="#">联系我们</a>
 			<a href="#">招聘信息</a>
-			<a href="#">客户服务</a>
+			<a href="#">客户服务</a> -->
 		</div>
-		<div class="footer-info">Copyright © www.AxureUX.com, All Rights Reserved.</div>
+		<div class="footer-info">占位</div>
 	</footer>
 </template>
 

+ 10 - 4
src/views/portal/components/Header.vue

@@ -4,9 +4,9 @@
 			<div style="display: flex; padding-left: 10%">
 				<div style="width: 120px; height: 55px; background-color: brown" />
 				<a-menu v-model:selectedKeys="current" mode="horizontal" theme="light" style="line-height: 55px">
-					<a-menu-item style="margin-left: 10px; margin-right: 10px" key="1">首页</a-menu-item>
-					<a-menu-item style="margin-left: 10px; margin-right: 10px" key="resourceCenter">资源中心</a-menu-item>
-					<a-menu-item style="margin-left: 10px; margin-right: 10px" key="resourceDetails">资源管理</a-menu-item>
+					<a-menu-item style="margin-left: 10px; margin-right: 10px" key="portal">首页</a-menu-item>
+					<a-menu-item style="margin-left: 10px; margin-right: 10px" key="portal/resourceCenter">资源中心</a-menu-item>
+					<a-menu-item style="margin-left: 10px; margin-right: 10px" key="portal/resourceDetails">资源管理</a-menu-item>
 				</a-menu>
 			</div>
 
@@ -37,7 +37,9 @@
 
 <script setup>
 	import { ref } from 'vue'
-	const current = ref(['2']) // 默认选中“资源中心”
+	import { useRouter, useRoute } from 'vue-router'
+	const router = useRouter()
+	const current = ref(['1']) // 默认选中“资源中心”
 
 	const emit = defineEmits(['onChangeCurrent'])
 
@@ -47,6 +49,10 @@
 			console.log('新的是', newVal, '旧的是', oldVal)
 			if (newVal != oldVal) {
 				emit('onChangeCurrent', newVal)
+
+				// router.push({
+				// 	path: '/' + newVal
+				// })
 			}
 		}
 	)

+ 6 - 2
src/views/portal/index.vue

@@ -4,8 +4,8 @@
 		<a-layout>
 			<Header @onChangeCurrent="onChangeCurrent" />
 			<div style="width: 71%; margin-left: 10%">
-				<BreadCrumb />
-				<ResourceCenter />
+				<!-- <BreadCrumb />
+				<ResourceCenter /> -->
 				<!-- <ResourceDetails v-if="indexType == 'resourceDetails'" ref="ResourceDetailsRef" /> -->
 			</div>
 		</a-layout>
@@ -28,6 +28,10 @@
 	const ResourceDetailsRef = ref(null)
 	const onChangeCurrent = (current) => {
 		indexType.value = current
+
+		router.push({
+			path: '/' + current
+		})
 	}
 
 	const handlerItemSidebar = (item) => {

+ 57 - 12
src/views/resourceCenter/index.vue

@@ -1,25 +1,46 @@
 <template>
-	<div>
-		<ComplexChoices />
-		<div style="height: 20px"></div>
-		<a-row :gutter="16">
-			<a-col :span="18">
-				<ResourceList />
-			</a-col>
-			<a-col :span="6">
-				<SidebarRecommend @handlerItem="handlerItemSidebar" />
-				<Correlation @handlerItem="handlerItemCorrelation" />
-			</a-col>
-		</a-row>
+	<div style="overflow-y: auto">
+		<a-layout>
+			<Header @onChangeCurrent="onChangeCurrent" />
+			<div style="width: 71%; margin-left: 10%">
+				<ComplexChoices />
+				<div style="height: 20px"></div>
+				<a-row :gutter="16">
+					<a-col :span="18">
+						<ResourceList />
+					</a-col>
+					<a-col :span="6">
+						<SidebarRecommend @handlerItem="handlerItemSidebar" />
+						<Correlation @handlerItem="handlerItemCorrelation" />
+					</a-col>
+				</a-row>
+			</div>
+		</a-layout>
+		<Footer />
 	</div>
 </template>
 
 <script setup>
+	import Header from '@/views/portal/components/Header.vue'
+	import BreadCrumb from '@/views/portal/components/BreadCrumb.vue'
+	import Footer from '@/views/portal/components/Footer.vue'
 	import ComplexChoices from './components/ComplexChoices.vue'
 	import ResourceList from './components/ResourceList.vue'
 	import SidebarRecommend from './components/SidebarRecommend.vue'
 	import Correlation from './components/Correlation.vue'
+	import { useRouter, useRoute } from 'vue-router'
 
+	import EventBus from '@/utils/EventBus'
+
+	const router = useRouter()
+	const indexType = ref('resourceCenter')
+	const onChangeCurrent = (current) => {
+		indexType.value = current
+
+		router.push({
+			path: '/' + current
+		})
+	}
 	const handlerItemSidebar = (item) => {
 		// emit('handlerItemSidebar', item)
 	}
@@ -27,6 +48,30 @@
 	const handlerItemCorrelation = (item) => {
 		// emit('handlerItemSidebar', item)
 	}
+	const handleOpenResourceDetails = (item) => {
+		// emit('handlerItemSidebar', item)
+		// indexType.value = 'resourceDetails'
+		// nextTick(() => {
+		// 	console.log('看看呢', ResourceDetailsRef.value, item) /
+		// 		// if (ResourceDetailsRef.value) {
+		// 		// 	ResourceDetailsRef.value.setData(item)
+		// 		// }
+		// })
+		console.log('看看呢', item)
+		router.push({
+			path: '/portal/resourceDetails',
+			query: {
+				id: item.id
+			}
+		})
+	}
+	onMounted(() => {
+		// setTimeout(() => {
+		// 	images.value = 'http://192.168.1.245:10005/education/2025/7/2/1940361083973906434.jpg'
+		// }, 10000)
+	})
+	EventBus.off('openResourceDetails', handleOpenResourceDetails)
+	EventBus.on('openResourceDetails', handleOpenResourceDetails)
 </script>
 
 <style scoped>

+ 34 - 20
src/views/resourceDetails/components/TallItem.vue

@@ -6,40 +6,41 @@
 				<div style="width: 100%">
 					<div style="display: flex; flex-direction: column; margin-bottom: 0px">
 						<span style="display: block; font-size: 14px; font-weight: bold; margin-bottom: 0px">{{
-							props.item.name
+							props.item.userName
 						}}</span>
-						<span style="display: block; font-size: 12px">{{ props.item.talk }}</span>
+						<span style="display: block; font-size: 12px">{{ props.item.commentName }}</span>
 					</div>
 					<div style="width: 100%; display: flex; justify-content: space-between">
 						<div>
-							<span style="font-size: 10px">1天前</span>
+							<span style="font-size: 10px">{{ props.item.commentTime }}</span>
 						</div>
 						<div style="display: flex">
 							<div>
-								<MessageOutlined @click="handerMessage" />
-								<span style="margin-left: 5px">10</span>
+								<MessageOutlined style="cursor: pointer" @click="handerMessage" />
+								<span style="margin-left: 5px">{{ props.item.childSize }}</span>
 							</div>
 							<div style="margin-left: 15px">
-								<LikeOutlined @click="handerfollw" />
-								<span style="margin-left: 5px">10</span>
+								<!-- <LikeFilled /> -->
+								<LikeOutlined style="cursor: pointer" @click="handerfollw" />
+								<span style="margin-left: 5px">{{ props.item.giveNum }}</span>
 							</div>
 						</div>
 					</div>
 				</div>
 			</div>
-			<div v-show="props.item.callBackTalk.length > 0" v-for="(item, index) in props.item.callBackTalk" :key="index">
+			<div v-show="props.item.child.length > 0" v-for="(item, index) in props.item.child" :key="index">
 				<div style="display: flex; margin-left: 50px; margin-right: 0px">
 					<div style="width: 40px; height: 40px; background: #1e90ff; border-radius: 50%; margin-right: 10px"></div>
 					<div style="width: 100%">
 						<div style="display: flex; flex-direction: column; margin-bottom: 0px">
 							<span style="display: block; font-size: 14px; font-weight: bold; margin-bottom: 5px">{{
-								item.name
+								item.userName
 							}}</span>
-							<span style="display: block; font-size: 12px">{{ item.talk }}</span>
+							<span style="display: block; font-size: 12px">{{ item.commentName }}</span>
 						</div>
 						<div style="width: 100%; display: flex; justify-content: space-between">
 							<div>
-								<span style="font-size: 10px">1天前</span>
+								<span style="font-size: 10px">{{ item.commentTime }}</span>
 							</div>
 							<div style="display: flex">
 								<!-- <div>
@@ -47,8 +48,9 @@
 								<span style="margin-left: 5px">10</span>
 							</div> -->
 								<div style="margin-left: 15px">
-									<LikeOutlined @click="handerfollw" />
-									<span style="margin-left: 5px">10</span>
+									<!-- <LikeFilled /> -->
+									<LikeOutlined style="cursor: pointer" @click="handerfollwChild(item)" />
+									<span style="margin-left: 5px">{{ item.giveNum }}</span>
 								</div>
 							</div>
 						</div>
@@ -58,9 +60,9 @@
 
 			<div v-if="tallTag">
 				<div>
-					<a-textarea placeholder="" :rows="4" style="margin-top: 5px" />
+					<a-textarea placeholder="" v-model:value="talk" :rows="4" style="margin-top: 5px" />
 					<div style="display: flex; justify-content: flex-end; margin-top: 10px">
-						<a-button style="width: 100px" @click="handerPublish">发布</a-button>
+						<a-button style="width: 100px" @click="handerPublish">回复</a-button>
 					</div>
 				</div>
 			</div>
@@ -72,6 +74,7 @@
 	import { ref } from 'vue'
 	import TabSwitcher from './TabSwitcher.vue'
 	import EventBus from '@/utils/EventBus'
+	import { addViewCount, detail, add, cancel, queryList, pageComment, addComment, giveComment } from '@/api/portal'
 	const emit = defineEmits(['selectTab'])
 
 	// id: 1,
@@ -83,11 +86,11 @@
 		item: {
 			type: Object,
 			default: () => {}
+		},
+		id: {
+			type: String,
+			default: () => ''
 		}
-		// name: {
-		// 	type: String,
-		// 	default: () => ''
-		// },
 		// talk: {
 		// 	type: String,
 		// 	default: () => ''
@@ -103,6 +106,7 @@
 	})
 	const listUnpublishedView = ref(null)
 	const tallTag = ref(false)
+	const talk = ref('')
 	const handerMessage = (form) => {
 		console.log('查询内容', form)
 		tallTag.value == true ? (tallTag.value = false) : (tallTag.value = true)
@@ -117,15 +121,25 @@
 			console.log('item有变化吗', val)
 		}
 	)
+
+	const handerfollw = async () => {
+		await giveComment({ id: props.item.id })
+		EventBus.emit('onGetPageComment')
+	}
+	const handerfollwChild = async (item) => {
+		await giveComment({ id: item.id })
+		EventBus.emit('onGetPageComment')
+	}
 	const handerPublish = () => {
 		tallTag.value = false
-		emit('publish')
+		emit('publish', { resourceId: props.id, id: props.item.id, talk: talk.value })
 
 		//....
 		// listUnpublishedView.value.setData(tableData.value)
 	}
 	const handleCloseInput = (data, tag) => {
 		if (props.item.id != tag) {
+			talk.value = ''
 			tallTag.value = false
 		}
 	}

+ 37 - 17
src/views/resourceDetails/components/TallList.vue

@@ -81,7 +81,7 @@
 			<div class="line"></div>
 
 			<div>
-				<TallItem v-for="(item, index) in list" :key="index" :item="item" @publish="publish"></TallItem>
+				<TallItem v-for="(item, index) in list" :key="index" :item="item" :id="id" @publish="publish"></TallItem>
 			</div>
 		</div>
 
@@ -104,11 +104,18 @@
 	import EqualItem from './EqualItem.vue'
 	import { addViewCount, detail, add, cancel, queryList, pageComment, addComment } from '@/api/portal'
 	import { useRoute } from 'vue-router'
+	import EventBus from '@/utils/EventBus'
 	const emit = defineEmits(['selectTab'])
 	const listUnpublishedView = ref(null)
 	const route = useRoute()
 	const id = route.query.id
 	const talk = ref('')
+
+	const pagers = ref({
+		pages: 1,
+		size: 20
+	})
+
 	const equalList = ref([
 		{
 			id: 1,
@@ -156,22 +163,32 @@
 		}
 	])
 
-	const publish = () => {
-		list.value[0].callBackTalk.push({
-			id: 1,
-			name: '张三',
-			talk: '今天,我被你给打赏了1000元,请给我一个好评,谢谢123123123',
-			follw: 0
-		})
-
-		list.value = [...list.value]
-
-		console.log('最后的', list.value)
+	const publish = (data) => {
+		// { pid: props.item.id, talk }
+		addComment({ pid: data.id, resourceId: data.resourceId, commentName: data.talk })
+			.then((res) => {
+				getPageComment()
+				talk.value = ''
+			})
+			.catch((err) => {
+				console.log(err)
+			})
+		// list.value[0].callBackTalk.push({
+		// 	id: 1,
+		// 	name: '张三',
+		// 	talk: '今天,我被你给打赏了1000元,请给我一个好评,谢谢123123123',
+		// 	follw: 0
+		// })
+		// list.value = [...list.value]
+		// console.log('最后的', list.value)
 	}
 
 	const handerPublish = () => {
 		addComment({ resourceId: id, commentName: talk.value })
-			.then((res) => {})
+			.then((res) => {
+				getPageComment()
+				talk.value = ''
+			})
 			.catch((err) => {
 				console.log(err)
 			})
@@ -190,13 +207,13 @@
 		// listUnpublishedView.value.setData(tableData.value)
 	}
 	const getPageComment = () => {
-		pageComment({ resourceId: id })
+		pageComment({ resourceId: id, ...pagers.value })
 			.then((res) => {
 				if (res.code == 200) {
-					res.value = res.data.records
+					list.value = res.data.records
 
-					res.data.pages
-					res.data.size
+					pagers.value.pages = res.data.pages
+					pagers.value.size = res.data.size
 				}
 			})
 			.catch((err) => {
@@ -208,6 +225,9 @@
 		getList()
 		getPageComment()
 	})
+
+	EventBus.off('onGetPageComment', getPageComment)
+	EventBus.on('onGetPageComment', getPageComment)
 </script>
 
 <style scoped>

+ 14 - 1
src/views/resourceDetails/index.vue

@@ -18,9 +18,15 @@
 	import BreadCrumb from '@/views/portal/components/BreadCrumb.vue'
 	import Footer from '@/views/portal/components/Footer.vue'
 	import VideoDetails from './components/VideoDetails.vue'
-	import { useRoute } from 'vue-router'
+	import { useRoute, useRouter } from 'vue-router'
 	import TallList from './components/TallList.vue'
 	import { addViewCount, detail, add, queryList } from '@/api/portal'
+
+	import EventBus from '@/utils/EventBus'
+
+	const router = useRouter()
+
+	const indexType = ref('resourceCenter')
 	const itemData = ref({})
 	const VideoDetailsRef = ref(null)
 	const route = useRoute()
@@ -57,6 +63,13 @@
 	const handlerItemSidebar = (item) => {
 		// emit('handlerItemSidebar', item)
 	}
+	const onChangeCurrent = (current) => {
+		indexType.value = current
+
+		router.push({
+			path: '/' + current
+		})
+	}
 
 	const setData = (item) => {
 		// emit('handlerItemSidebar', item)