|
|
@@ -19,6 +19,8 @@
|
|
|
<div class="title">农情互动</div>
|
|
|
<!-- 内容区域 -->
|
|
|
<div class="agricultural-list">
|
|
|
+ <div v-if="!unansweredList.length" class="empty-block">暂无数据</div>
|
|
|
+ <template v-else>
|
|
|
<div class="agricultural-item" v-for="(item, index) in unansweredList" :key="index">
|
|
|
<!-- 头部区域 -->
|
|
|
<div class="header-section">
|
|
|
@@ -35,24 +37,25 @@
|
|
|
<div class="warning-block" v-html="item.latestPhenologyProgressBroadcast?.content"></div>
|
|
|
|
|
|
<div class="timeline">
|
|
|
- <div class="timeline-item" v-for="item in timelineList" :key="item.id">
|
|
|
+ <div class="timeline-item" v-for="timelineItem in item.timelineList" :key="timelineItem.id">
|
|
|
<div class="timeline-left">
|
|
|
<div class="dot"></div>
|
|
|
<div class="line"></div>
|
|
|
</div>
|
|
|
<div class="timeline-right">
|
|
|
<div class="date">
|
|
|
- 预计{{ item.date }}天后触发<span class="work-name">{{ item.workName }}</span>
|
|
|
+ 预计{{ timelineItem.daysUntilTrigger }}天后触发<span class="work-name">{{ timelineItem.farmWorkName }}</span>
|
|
|
</div>
|
|
|
<div class="text">
|
|
|
- 预计报价<span class="price">{{ item.price }}元</span>
|
|
|
+ 预计报价<span class="price">{{ timelineItem.estimatedCost }}元</span>
|
|
|
<span class="action-detail">查看报价单</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="timeline-action" @click="handleTimelineAction(item)">转入农事任务</div>
|
|
|
+ <div class="timeline-action" @click="handleTimelineAction(timelineItem)">转入农事任务</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ </template>
|
|
|
</div>
|
|
|
</div>
|
|
|
<offer-popup ref="offerPopupRef"></offer-popup>
|
|
|
@@ -68,19 +71,6 @@ const taskList = ref([
|
|
|
{ id: 2, title: "梢期杀虫", executionTime: "2025.05.06", status: "pending" },
|
|
|
]);
|
|
|
|
|
|
-const timelineList = ref([
|
|
|
- {
|
|
|
- date: "3",
|
|
|
- workName: "梢期杀虫",
|
|
|
- price: "1258",
|
|
|
- },
|
|
|
- // {
|
|
|
- // date: "5",
|
|
|
- // workName: "梢期营养",
|
|
|
- // price: "1758",
|
|
|
- // },
|
|
|
-]);
|
|
|
-
|
|
|
const offerPopupRef = ref(null);
|
|
|
const handleTaskAction = (item) => {
|
|
|
const data = {
|
|
|
@@ -123,15 +113,31 @@ onMounted(() => {
|
|
|
getUnansweredFarms();
|
|
|
});
|
|
|
|
|
|
+//农情互动的农场列表接口(分页)
|
|
|
const unansweredList = ref([]);
|
|
|
-const getUnansweredFarms = () => {
|
|
|
+const getUnansweredFarms = async () => {
|
|
|
const params = {
|
|
|
page: 0,
|
|
|
limit: 3,
|
|
|
};
|
|
|
- VE_API.home.listUnansweredFarms(params).then((res) => {
|
|
|
- unansweredList.value = res.data || [];
|
|
|
- });
|
|
|
+ const res = await VE_API.home.listUnansweredFarms(params);
|
|
|
+ unansweredList.value = (res.data || []).map(item => ({
|
|
|
+ ...item,
|
|
|
+ timelineList: []
|
|
|
+ }));
|
|
|
+
|
|
|
+ // 串行请求,一个完成后再请求下一个
|
|
|
+ if(unansweredList.value.length){
|
|
|
+ for(let i = 0; i < unansweredList.value.length; i++){
|
|
|
+ await getFutureFarmWorkWarning(unansweredList.value[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+//查询未来农事预警
|
|
|
+const getFutureFarmWorkWarning = async (item) => {
|
|
|
+ const res = await VE_API.home.listFutureFarmWorkWarning({farmId: item.farmId});
|
|
|
+ item.timelineList = res.data || [];
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
@@ -212,6 +218,18 @@ const getUnansweredFarms = () => {
|
|
|
}
|
|
|
|
|
|
.agricultural-list {
|
|
|
+ .empty-block {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ height: 120px;
|
|
|
+ color: #a0a0a0;
|
|
|
+ font-size: 14px;
|
|
|
+ background-color: #ffffff;
|
|
|
+ border-radius: 8px;
|
|
|
+ margin-top: 8px;
|
|
|
+ }
|
|
|
+
|
|
|
.agricultural-item {
|
|
|
background-color: #ffffff;
|
|
|
border-radius: 8px;
|