|
@@ -15,13 +15,13 @@
|
|
|
<!-- 品种选择 -->
|
|
<!-- 品种选择 -->
|
|
|
<div class="variety-tabs" v-if="varietyTabs.length > 0">
|
|
<div class="variety-tabs" v-if="varietyTabs.length > 0">
|
|
|
<div
|
|
<div
|
|
|
- v-for="v in varietyTabs"
|
|
|
|
|
- :key="v.key"
|
|
|
|
|
|
|
+ v-for="(v, index) in varietyTabs"
|
|
|
|
|
+ :key="index"
|
|
|
class="variety-tab"
|
|
class="variety-tab"
|
|
|
- :class="{ 'variety-tab--active': activeVariety === v.key }"
|
|
|
|
|
- @click="activeVariety = v.key"
|
|
|
|
|
|
|
+ :class="{ 'variety-tab--active': activeVariety === index }"
|
|
|
|
|
+ @click="handleVarietyClick(v,index)"
|
|
|
>
|
|
>
|
|
|
- {{ v.label }}
|
|
|
|
|
|
|
+ {{ v.regionName }}
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="archives-time-line-content">
|
|
<div class="archives-time-line-content">
|
|
@@ -38,7 +38,7 @@
|
|
|
<img src="@/assets/img/monitor/report-icon.png" alt="" class="report-icon" />
|
|
<img src="@/assets/img/monitor/report-icon.png" alt="" class="report-icon" />
|
|
|
</div>
|
|
</div>
|
|
|
<div class="time-line" :class="{ 'no-report': !hasReport }">
|
|
<div class="time-line" :class="{ 'no-report': !hasReport }">
|
|
|
- <archives-farm-time-line :farmId="gardenId"></archives-farm-time-line>
|
|
|
|
|
|
|
+ <archives-farm-time-line :farmId="farmIdData"></archives-farm-time-line>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -67,7 +67,7 @@ import agriExecutePopup from "@/components/popup/agriExecutePopup.vue";
|
|
|
|
|
|
|
|
// 品种选择(作物档案内)- 根据主体ID动态获取分区列表
|
|
// 品种选择(作物档案内)- 根据主体ID动态获取分区列表
|
|
|
const varietyTabs = ref([]);
|
|
const varietyTabs = ref([]);
|
|
|
-const activeVariety = ref(null);
|
|
|
|
|
|
|
+const activeVariety = ref(0);
|
|
|
|
|
|
|
|
const getVarietyTabs = async () => {
|
|
const getVarietyTabs = async () => {
|
|
|
if (!gardenId.value) {
|
|
if (!gardenId.value) {
|
|
@@ -77,22 +77,21 @@ const getVarietyTabs = async () => {
|
|
|
const res = await VE_API.monitor.listRegionsBySubjectId({
|
|
const res = await VE_API.monitor.listRegionsBySubjectId({
|
|
|
subjectId: gardenId.value,
|
|
subjectId: gardenId.value,
|
|
|
});
|
|
});
|
|
|
- const list = res.data || [];
|
|
|
|
|
- varietyTabs.value = list.map((item) => ({
|
|
|
|
|
- key: item.id || item.regionId,
|
|
|
|
|
- label: item.regionName || item.name,
|
|
|
|
|
- raw: item,
|
|
|
|
|
- }));
|
|
|
|
|
- if (varietyTabs.value.length) {
|
|
|
|
|
- activeVariety.value = varietyTabs.value[0].key;
|
|
|
|
|
- } else {
|
|
|
|
|
- activeVariety.value = null;
|
|
|
|
|
|
|
+ varietyTabs.value = res.data || []
|
|
|
|
|
+ if(varietyTabs.value.length > 0) {
|
|
|
|
|
+ handleVarietyClick(varietyTabs.value[0],0)
|
|
|
}
|
|
}
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.error("获取主体分区列表失败:", error);
|
|
console.error("获取主体分区列表失败:", error);
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+const farmIdData= ref(null);
|
|
|
|
|
+const handleVarietyClick = (tab,index) => {
|
|
|
|
|
+ activeVariety.value = index;
|
|
|
|
|
+ farmIdData.value = tab.farmId;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
const handleJump = () =>{
|
|
const handleJump = () =>{
|
|
|
router.push('/create_farm?type=farmer&expertMiniUserId=81881&isReload=true')
|
|
router.push('/create_farm?type=farmer&expertMiniUserId=81881&isReload=true')
|
|
|
}
|
|
}
|
|
@@ -124,7 +123,6 @@ const checkHasUnrepliedTriggeredInteraction = async () => {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const showFarmPopup = ref(false); // 农场领取成功弹窗
|
|
const showFarmPopup = ref(false); // 农场领取成功弹窗
|
|
|
-const date = ref(new Date());
|
|
|
|
|
|
|
|
|
|
const defaultGardenId = ref(null);
|
|
const defaultGardenId = ref(null);
|
|
|
const isHeaderShow = ref(false);
|
|
const isHeaderShow = ref(false);
|
|
@@ -144,24 +142,6 @@ onActivated(() => {
|
|
|
getReport();
|
|
getReport();
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-const receiveFarm = (json) => {
|
|
|
|
|
- VE_API.monitor
|
|
|
|
|
- .receiveFarm({
|
|
|
|
|
- agriculturalStoreId: json.agriculturalStoreId,
|
|
|
|
|
- farmId: json.farmId,
|
|
|
|
|
- })
|
|
|
|
|
- .then((res) => {
|
|
|
|
|
- if (res.code === 0) {
|
|
|
|
|
- showFarmPopup.value = true;
|
|
|
|
|
- defaultGardenId.value = json.farmId;
|
|
|
|
|
- } else {
|
|
|
|
|
- ElMessage.warning(res.msg);
|
|
|
|
|
- }
|
|
|
|
|
- // 清空路由参数
|
|
|
|
|
- router.replace({ path: route.path });
|
|
|
|
|
- });
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
const store = useStore();
|
|
const store = useStore();
|
|
|
const tabBarHeight = computed(() => store.state.home.tabBarHeight);
|
|
const tabBarHeight = computed(() => store.state.home.tabBarHeight);
|
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
@@ -262,80 +242,10 @@ const getBroadcastList = async (page = 1, isLoadMore = false) => {
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-// 滚动加载更多
|
|
|
|
|
-const onLoad = async () => {
|
|
|
|
|
- if (finished.value || loading.value) return;
|
|
|
|
|
-
|
|
|
|
|
- // 判断是否是首次加载(页码为1)
|
|
|
|
|
- const isLoadMore = currentPage.value > 1;
|
|
|
|
|
- const pageToLoad = currentPage.value;
|
|
|
|
|
-
|
|
|
|
|
- // 加载数据(页码会在 getBroadcastList 成功后自动更新)
|
|
|
|
|
- await getBroadcastList(pageToLoad, isLoadMore);
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
-// 卡片点击事件
|
|
|
|
|
-const handleCardClick = (card) => {
|
|
|
|
|
- const params = {
|
|
|
|
|
- farmId: gardenId.value,
|
|
|
|
|
- };
|
|
|
|
|
- router.push({
|
|
|
|
|
- path: card.route,
|
|
|
|
|
- query: { ...params, miniJson: JSON.stringify(params) },
|
|
|
|
|
- });
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
// 播报相关事件
|
|
// 播报相关事件
|
|
|
const isSpeaking = ref(false);
|
|
const isSpeaking = ref(false);
|
|
|
const speechSynthesis = window.speechSynthesis;
|
|
const speechSynthesis = window.speechSynthesis;
|
|
|
|
|
|
|
|
-const handleBroadcast = () => {
|
|
|
|
|
- if (isSpeaking.value) {
|
|
|
|
|
- // 如果正在播放,则停止
|
|
|
|
|
- speechSynthesis.cancel();
|
|
|
|
|
- isSpeaking.value = false;
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 构建播报文本
|
|
|
|
|
- let broadcastText = "实时播报:";
|
|
|
|
|
-
|
|
|
|
|
- if (broadcastList.value.length === 0) {
|
|
|
|
|
- broadcastText += "暂无更多播报";
|
|
|
|
|
- } else {
|
|
|
|
|
- broadcastList.value.forEach((item, index) => {
|
|
|
|
|
- broadcastText += `${index + 1}、${item.title}。${item.content}。`;
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 创建语音合成对象
|
|
|
|
|
- const utterance = new SpeechSynthesisUtterance(broadcastText);
|
|
|
|
|
-
|
|
|
|
|
- // 设置语音参数
|
|
|
|
|
- utterance.lang = "zh-CN";
|
|
|
|
|
- utterance.rate = 0.8; // 语速
|
|
|
|
|
- utterance.pitch = 1; // 音调
|
|
|
|
|
- utterance.volume = 1; // 音量
|
|
|
|
|
-
|
|
|
|
|
- // 播放开始事件
|
|
|
|
|
- utterance.onstart = () => {
|
|
|
|
|
- isSpeaking.value = true;
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 播放结束事件
|
|
|
|
|
- utterance.onend = () => {
|
|
|
|
|
- isSpeaking.value = false;
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 播放错误事件
|
|
|
|
|
- utterance.onerror = (event) => {
|
|
|
|
|
- isSpeaking.value = false;
|
|
|
|
|
- console.error("播报错误:", event.error);
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 开始播报
|
|
|
|
|
- speechSynthesis.speak(utterance);
|
|
|
|
|
-};
|
|
|
|
|
|
|
|
|
|
// 组件卸载时停止语音播放
|
|
// 组件卸载时停止语音播放
|
|
|
onDeactivated(() => {
|
|
onDeactivated(() => {
|
|
@@ -386,19 +296,6 @@ const changeGarden = ({ id }) => {
|
|
|
getVarietyTabs();
|
|
getVarietyTabs();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-function handlePage(url) {
|
|
|
|
|
- const query = {
|
|
|
|
|
- farmId: gardenId.value,
|
|
|
|
|
- };
|
|
|
|
|
- if (url === "/message_list") {
|
|
|
|
|
- query.from = "monitor";
|
|
|
|
|
- }
|
|
|
|
|
- router.push({
|
|
|
|
|
- path: url,
|
|
|
|
|
- query: query,
|
|
|
|
|
- });
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
function handleReportClick() {
|
|
function handleReportClick() {
|
|
|
router.push({
|
|
router.push({
|
|
|
path: "/growth_report",
|
|
path: "/growth_report",
|