|
@@ -2,12 +2,7 @@
|
|
|
<div class="service-records-page">
|
|
<div class="service-records-page">
|
|
|
<custom-header name="知识库"></custom-header>
|
|
<custom-header name="知识库"></custom-header>
|
|
|
<div class="record-list">
|
|
<div class="record-list">
|
|
|
- <list
|
|
|
|
|
- v-model:loading="listLoading"
|
|
|
|
|
- :finished="listFinished"
|
|
|
|
|
- finished-text=""
|
|
|
|
|
- @load="getKnowledgeList"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <list v-model:loading="listLoading" :finished="listFinished" finished-text="" @load="getKnowledgeList">
|
|
|
<div v-for="(item, index) in knowledgeList" :key="index" class="record-card">
|
|
<div v-for="(item, index) in knowledgeList" :key="index" class="record-card">
|
|
|
<img class="thumb" :src="item.media && item.media[0]" alt="暂无图片" />
|
|
<img class="thumb" :src="item.media && item.media[0]" alt="暂无图片" />
|
|
|
<div class="card-body" @click="handleItemClick(item)">
|
|
<div class="card-body" @click="handleItemClick(item)">
|
|
@@ -98,58 +93,26 @@ const getKnowledgeList = async () => {
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
let list = [];
|
|
let list = [];
|
|
|
-
|
|
|
|
|
- if (topicId.value === 6) {
|
|
|
|
|
- // 种植知识库:使用新接口
|
|
|
|
|
- // 如果是第一页,重新请求接口;否则使用缓存数据
|
|
|
|
|
- if (page.value === 1) {
|
|
|
|
|
- const { data } = await VE_API.user.listWithAnswer({
|
|
|
|
|
- farmId: store.state.home.gardenId
|
|
|
|
|
- });
|
|
|
|
|
- allDataCache.value = data || [];
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- list = allDataCache.value;
|
|
|
|
|
-
|
|
|
|
|
- // 新接口可能返回全部数据,需要手动分页处理
|
|
|
|
|
- const startIndex = (page.value - 1) * pageSize.value;
|
|
|
|
|
- const endIndex = startIndex + pageSize.value;
|
|
|
|
|
- const paginatedList = list.slice(startIndex, endIndex);
|
|
|
|
|
-
|
|
|
|
|
- if (page.value === 1) {
|
|
|
|
|
- knowledgeList.value = paginatedList;
|
|
|
|
|
- } else {
|
|
|
|
|
- knowledgeList.value = [...knowledgeList.value, ...paginatedList];
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 如果已经取完所有数据,标记为完成
|
|
|
|
|
- if (endIndex >= list.length) {
|
|
|
|
|
- listFinished.value = true;
|
|
|
|
|
- } else {
|
|
|
|
|
- page.value += 1;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 实战知识库:使用原接口(支持分页)
|
|
|
|
|
+ const params = {
|
|
|
|
|
+ page: page.value,
|
|
|
|
|
+ limit: pageSize.value,
|
|
|
|
|
+ topicId: topicId.value,
|
|
|
|
|
+ };
|
|
|
|
|
+ const { data } = await VE_API.home.warningPageList(params);
|
|
|
|
|
+ list = data || [];
|
|
|
|
|
+
|
|
|
|
|
+ if (page.value === 1) {
|
|
|
|
|
+ knowledgeList.value = list;
|
|
|
} else {
|
|
} else {
|
|
|
- // 实战知识库:使用原接口(支持分页)
|
|
|
|
|
- const params = {
|
|
|
|
|
- page: page.value,
|
|
|
|
|
- limit: pageSize.value,
|
|
|
|
|
- topicId: topicId.value,
|
|
|
|
|
- };
|
|
|
|
|
- const { data } = await VE_API.home.warningPageList(params);
|
|
|
|
|
- list = data || [];
|
|
|
|
|
-
|
|
|
|
|
- if (page.value === 1) {
|
|
|
|
|
- knowledgeList.value = list;
|
|
|
|
|
- } else {
|
|
|
|
|
- knowledgeList.value = [...knowledgeList.value, ...list];
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ knowledgeList.value = [...knowledgeList.value, ...list];
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- // 如果返回数量小于页大小,认为没有更多数据了
|
|
|
|
|
- if (list.length < pageSize.value) {
|
|
|
|
|
- listFinished.value = true;
|
|
|
|
|
- } else {
|
|
|
|
|
- page.value += 1;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 如果返回数量小于页大小,认为没有更多数据了
|
|
|
|
|
+ if (list.length < pageSize.value) {
|
|
|
|
|
+ listFinished.value = true;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ page.value += 1;
|
|
|
}
|
|
}
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.error("获取知识列表失败:", error);
|
|
console.error("获取知识列表失败:", error);
|
|
@@ -174,6 +137,7 @@ const handleItemClick = (item) => {
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
background: #f5f5f5;
|
|
background: #f5f5f5;
|
|
|
height: 100vh;
|
|
height: 100vh;
|
|
|
|
|
+
|
|
|
.record-list {
|
|
.record-list {
|
|
|
padding: 10px 12px;
|
|
padding: 10px 12px;
|
|
|
display: flex;
|
|
display: flex;
|
|
@@ -182,6 +146,7 @@ const handleItemClick = (item) => {
|
|
|
height: calc(100% - 60px);
|
|
height: calc(100% - 60px);
|
|
|
overflow-y: auto;
|
|
overflow-y: auto;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.record-card {
|
|
.record-card {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
gap: 12px;
|
|
gap: 12px;
|
|
@@ -191,6 +156,7 @@ const handleItemClick = (item) => {
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
height: 98px;
|
|
height: 98px;
|
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
|
|
|
+
|
|
|
.thumb {
|
|
.thumb {
|
|
|
width: 112px;
|
|
width: 112px;
|
|
|
height: 74px;
|
|
height: 74px;
|
|
@@ -198,18 +164,21 @@ const handleItemClick = (item) => {
|
|
|
object-fit: cover;
|
|
object-fit: cover;
|
|
|
flex: none;
|
|
flex: none;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.card-body {
|
|
.card-body {
|
|
|
flex: 1;
|
|
flex: 1;
|
|
|
height: 100%;
|
|
height: 100%;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
|
|
|
+
|
|
|
.card-body-left {
|
|
.card-body-left {
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
height: 95%;
|
|
height: 95%;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
|
|
|
+
|
|
|
.date {
|
|
.date {
|
|
|
font-size: 13px;
|
|
font-size: 13px;
|
|
|
color: #86909c;
|
|
color: #86909c;
|
|
@@ -218,12 +187,15 @@ const handleItemClick = (item) => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- .record-card + .record-card {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ .record-card+.record-card {
|
|
|
margin-top: 10px;
|
|
margin-top: 10px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.empty-wrap {
|
|
.empty-wrap {
|
|
|
padding-top: 40px;
|
|
padding-top: 40px;
|
|
|
text-align: center;
|
|
text-align: center;
|
|
|
|
|
+
|
|
|
.empty-text {
|
|
.empty-text {
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
color: #86909c;
|
|
color: #86909c;
|