|
|
@@ -21,7 +21,11 @@
|
|
|
v-for="(fw, aIdx) in Array.isArray(r.farmWorkArrangeList) ? r.farmWorkArrangeList : []"
|
|
|
:key="`arrange-${uniqueTimestamp}-${idx}-${rIdx}-${aIdx}`"
|
|
|
class="arrange-card"
|
|
|
- :style="shouldShowIncompleteStatus(fw.farmWorkId) ? 'padding-bottom: 18px;' : 'padding-bottom: 10px'"
|
|
|
+ :style="
|
|
|
+ shouldShowIncompleteStatus(fw.farmWorkId)
|
|
|
+ ? 'padding-bottom: 18px;'
|
|
|
+ : 'padding-bottom: 10px'
|
|
|
+ "
|
|
|
:class="getArrangeStatusClass(fw)"
|
|
|
@click="handleRowClick(fw)"
|
|
|
>
|
|
|
@@ -36,7 +40,10 @@
|
|
|
</div>
|
|
|
<div class="card-content">
|
|
|
<span>{{ fw.interactionQuestion || "暂无提示" }}</span>
|
|
|
- <span v-if="!disableClick" :class="shouldShowIncompleteStatus(fw.farmWorkId) ? 'link-warning' : 'edit-link'" @click.stop="handleEdit(fw)"
|
|
|
+ <span
|
|
|
+ v-if="!disableClick"
|
|
|
+ :class="shouldShowIncompleteStatus(fw.farmWorkId) ? 'link-warning' : 'edit-link'"
|
|
|
+ @click.stop="handleEdit(fw)"
|
|
|
>点击编辑</span
|
|
|
>
|
|
|
</div>
|
|
|
@@ -146,18 +153,33 @@ const safeParseDate = (val) => {
|
|
|
const batchValidateData = ref({});
|
|
|
const allTrue = ref(false);
|
|
|
const invalidIds = ref([]);
|
|
|
+const invalidArr = ref([]);
|
|
|
// 验证农事卡片药肥报价信息是否完整
|
|
|
-const batchValidatePesticideFertilizerQuotes = (ids) => {
|
|
|
+const batchValidatePesticideFertilizerQuotes = (ids, items) => {
|
|
|
if (props.isStandard) {
|
|
|
return;
|
|
|
}
|
|
|
VE_API.monitor
|
|
|
.batchValidatePesticideFertilizerQuotes({ ids, schemeId: props.schemeId })
|
|
|
- .then(({ data,code }) => {
|
|
|
+ .then(({ data, code }) => {
|
|
|
if (code === 0) {
|
|
|
batchValidateData.value = data || {};
|
|
|
allTrue.value = Object.values(data).every((value) => value === true);
|
|
|
invalidIds.value = Object.keys(data).filter((key) => data[key] !== true);
|
|
|
+
|
|
|
+ // 清空之前的arrangeIds
|
|
|
+ invalidArr.value = [];
|
|
|
+ // 遍历items,判断farmWorkId是否在invalidIds中,如果对应上了就把item.id push进去
|
|
|
+ items.forEach((item) => {
|
|
|
+ // 判断item.farmWorkId是否在invalidIds数组中(需要转换为字符串进行比较)
|
|
|
+ const farmWorkIdStr = String(item.farmWorkId);
|
|
|
+ if (invalidIds.value.includes(farmWorkIdStr)) {
|
|
|
+ invalidArr.value.push({
|
|
|
+ arrangeId: item.id,
|
|
|
+ farmWorkId: item.farmWorkId,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
})
|
|
|
.catch(() => {});
|
|
|
@@ -167,17 +189,18 @@ const batchValidatePesticideFertilizerQuotes = (ids) => {
|
|
|
// 如果batchValidateData中对应的farmWorkId验证结果为true(已完善),则不显示
|
|
|
// 如果验证结果为false(未完善)或不存在,则显示
|
|
|
const shouldShowIncompleteStatus = (farmWorkId) => {
|
|
|
- if (!farmWorkId || !batchValidateData.value || typeof batchValidateData.value !== 'object') {
|
|
|
+ if (!farmWorkId || !batchValidateData.value || typeof batchValidateData.value !== "object") {
|
|
|
// 如果没有验证数据,默认不显示
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// 从对象中直接获取验证结果,支持字符串和数字类型的key
|
|
|
- const isValid = batchValidateData.value[farmWorkId] !== undefined
|
|
|
- ? batchValidateData.value[farmWorkId]
|
|
|
- : batchValidateData.value[String(farmWorkId)] !== undefined
|
|
|
- ? batchValidateData.value[String(farmWorkId)]
|
|
|
- : undefined;
|
|
|
+ const isValid =
|
|
|
+ batchValidateData.value[farmWorkId] !== undefined
|
|
|
+ ? batchValidateData.value[farmWorkId]
|
|
|
+ : batchValidateData.value[String(farmWorkId)] !== undefined
|
|
|
+ ? batchValidateData.value[String(farmWorkId)]
|
|
|
+ : undefined;
|
|
|
|
|
|
// 如果找到了验证结果
|
|
|
if (isValid !== undefined) {
|
|
|
@@ -340,6 +363,7 @@ const getArrangeStatusClass = (fw) => {
|
|
|
const handleRowClick = (item) => {
|
|
|
item.isEdit = shouldShowIncompleteStatus(item.farmWorkId);
|
|
|
item.invalidIds = invalidIds.value;
|
|
|
+ item.invalidArr = invalidArr.value;
|
|
|
emits("row-click", item);
|
|
|
};
|
|
|
|
|
|
@@ -418,7 +442,8 @@ const getFarmWorkPlan = () => {
|
|
|
requestAnimationFrame(() => {
|
|
|
// 测量timeline-list的实际渲染高度
|
|
|
if (timelineListRef.value) {
|
|
|
- const height = timelineListRef.value.offsetHeight || timelineListRef.value.clientHeight;
|
|
|
+ const height =
|
|
|
+ timelineListRef.value.offsetHeight || timelineListRef.value.clientHeight;
|
|
|
if (height > 0) {
|
|
|
timelineListHeight.value = height;
|
|
|
|
|
|
@@ -435,7 +460,9 @@ const getFarmWorkPlan = () => {
|
|
|
// 如果测量失败,延迟一下再尝试滚动
|
|
|
setTimeout(() => {
|
|
|
if (timelineListRef.value) {
|
|
|
- const height = timelineListRef.value.offsetHeight || timelineListRef.value.clientHeight;
|
|
|
+ const height =
|
|
|
+ timelineListRef.value.offsetHeight ||
|
|
|
+ timelineListRef.value.clientHeight;
|
|
|
if (height > 0) {
|
|
|
timelineListHeight.value = height;
|
|
|
}
|
|
|
@@ -454,6 +481,7 @@ const getFarmWorkPlan = () => {
|
|
|
|
|
|
// 收集所有farmWorkId
|
|
|
const farmWorkIds = [];
|
|
|
+ const farmWorks = [];
|
|
|
phenologyList.value.forEach((phenology) => {
|
|
|
if (Array.isArray(phenology.reproductiveList)) {
|
|
|
phenology.reproductiveList.forEach((reproductive) => {
|
|
|
@@ -461,6 +489,7 @@ const getFarmWorkPlan = () => {
|
|
|
reproductive.farmWorkArrangeList.forEach((farmWork) => {
|
|
|
if (farmWork.farmWorkId && farmWork.isFollow !== 0) {
|
|
|
farmWorkIds.push(farmWork.farmWorkId);
|
|
|
+ farmWorks.push(farmWork);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
@@ -470,7 +499,7 @@ const getFarmWorkPlan = () => {
|
|
|
|
|
|
// 调用验证方法,传入所有ids
|
|
|
if (farmWorkIds.length > 0) {
|
|
|
- batchValidatePesticideFertilizerQuotes(farmWorkIds);
|
|
|
+ batchValidatePesticideFertilizerQuotes(farmWorkIds, farmWorks);
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
@@ -507,7 +536,7 @@ watch(
|
|
|
|
|
|
// 使用 ResizeObserver 监听高度变化,确保在DOM完全渲染后获取准确高度
|
|
|
const setupResizeObserver = () => {
|
|
|
- if (!timelineListRef.value || typeof ResizeObserver === 'undefined') {
|
|
|
+ if (!timelineListRef.value || typeof ResizeObserver === "undefined") {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -653,7 +682,7 @@ watch(
|
|
|
color: #2199f8;
|
|
|
margin-left: 5px;
|
|
|
}
|
|
|
- .link-warning{
|
|
|
+ .link-warning {
|
|
|
color: #ff953d;
|
|
|
margin-left: 5px;
|
|
|
}
|