|
|
@@ -5,16 +5,22 @@
|
|
|
<div v-for="(task, index) in taskList" :key="index" class="task-item">
|
|
|
<div class="task-content" @click="handleTaskAction(task)">
|
|
|
<div class="task-header">
|
|
|
- <div class="task-status-tag">待完成</div>
|
|
|
+ <div class="task-status-tag">{{ task.flowStatus === 4 ? '待完成' : '待复核' }}</div>
|
|
|
<div class="task-title">{{ task.farmWorkName }}</div>
|
|
|
</div>
|
|
|
- <div class="task-time" v-if="task.expectedExecuteDate">执行时间 {{ task.expectedExecuteDate }}</div>
|
|
|
- <div class="task-time deadline" v-else>截止时间 {{ task.executeDeadlineDate }}</div>
|
|
|
+ <div class="task-time" v-if="task.flowStatus === 5">
|
|
|
+ 复核时间
|
|
|
+ {{ task.reviewDate }}</div>
|
|
|
+ <div class="task-time" v-if="task.flowStatus === 4 && task.expectedExecuteDate">执行时间 {{ task.expectedExecuteDate }}</div>
|
|
|
+ <div class="task-time deadline" v-if="task.flowStatus === 4 && !task.expectedExecuteDate">截止时间 {{ task.executeDeadlineDate }}</div>
|
|
|
</div>
|
|
|
- <div v-if="task.expectedExecuteDate" class="task-action" :class="{ 'call-text': getButtonText(task) }" @click="showOfferPopup(task)">
|
|
|
+ <div v-if="task.flowStatus === 5" class="task-action" :class="{ 'call-text': getButtonText(task) }" @click="handleAction(task)">
|
|
|
+ {{ getButtonText(task) ? '提醒复核' : '上传复核照片' }}
|
|
|
+ </div>
|
|
|
+ <div v-else-if="task.flowStatus === 4 && task.expectedExecuteDate" class="task-action" :class="{ 'call-text': getButtonText(task) }" @click="showOfferPopup(task)">
|
|
|
{{ getButtonText(task) ? "提醒执行" : "上传照片" }}
|
|
|
</div>
|
|
|
- <div v-else class="task-action orange" :class="{ 'call-text': getButtonText(task) }" @click="selectExecuteTime(task)">
|
|
|
+ <div v-else-if="task.flowStatus === 4 && !task.expectedExecuteDate" class="task-action orange" :class="{ 'call-text': getButtonText(task) }" @click="selectExecuteTime(task)">
|
|
|
{{ getButtonText(task) ? "提醒确认执行时间" : "确认执行时间" }}
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -60,6 +66,9 @@
|
|
|
:min-date="minDate"
|
|
|
:max-date="maxDate"
|
|
|
/>
|
|
|
+
|
|
|
+ <!-- 上传复核照片 -->
|
|
|
+ <upload-execute ref="uploadExecuteRef" :onlyShare="false" @uploadSuccess="handleUploadSuccess" />
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
@@ -71,6 +80,7 @@ import { ElMessage } from "element-plus";
|
|
|
import offerPopup from "@/components/popup/offerPopup.vue";
|
|
|
import AgriculturalInteractionCard from "@/components/pageComponents/AgriculturalInteractionCard.vue";
|
|
|
import { formatDate } from "@/common/commonFun";
|
|
|
+import uploadExecute from "@/views/old_mini/task_condition/components/uploadExecute.vue";
|
|
|
// 任务列表数据
|
|
|
const taskList = ref([]);
|
|
|
|
|
|
@@ -81,6 +91,26 @@ const handleTaskAction = (item) => {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+// 计算复核时间:executeDate + reviewIntervalDays
|
|
|
+const calculateReviewDate = (task) => {
|
|
|
+ if (!task?.executeDate) {
|
|
|
+ return "--";
|
|
|
+ }
|
|
|
+
|
|
|
+ const executeDate = new Date(task.executeDate);
|
|
|
+ const reviewIntervalDays = Number(task?.reviewIntervalDays || 0);
|
|
|
+
|
|
|
+ // 将执行日期加上间隔天数
|
|
|
+ executeDate.setDate(executeDate.getDate() + reviewIntervalDays);
|
|
|
+
|
|
|
+ // 格式化为 YYYY-MM-DD
|
|
|
+ const year = executeDate.getFullYear();
|
|
|
+ const month = String(executeDate.getMonth() + 1).padStart(2, "0");
|
|
|
+ const day = String(executeDate.getDate()).padStart(2, "0");
|
|
|
+
|
|
|
+ return `${year}-${month}-${day}`;
|
|
|
+};
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
const userInfo = JSON.parse(localStorage.getItem("localUserInfo"));
|
|
|
agriculturalRole.value = userInfo.agriculturalRole;
|
|
|
@@ -108,6 +138,30 @@ const showOfferPopup = (item) => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+const uploadExecuteRef = ref(null);
|
|
|
+function handleAction(item) {
|
|
|
+ if(getButtonText(item)) {
|
|
|
+ const query = {
|
|
|
+ askInfo: { title: "农事提醒", content: "是否分享该农事提醒给好友" },
|
|
|
+ shareText: '向您分享了一条农事复核提醒,请您尽快复核',
|
|
|
+ targetUrl: `review_work`,
|
|
|
+ paramsPage: JSON.stringify({id: item.id}),
|
|
|
+ imageUrl: 'https://birdseye-img.sysuimars.com/birdseye-look-mini/invite_bg.png',
|
|
|
+ };
|
|
|
+ wx.miniProgram.navigateTo({
|
|
|
+ url: `/pages/subPages/share_page/index?pageParams=${JSON.stringify(query)}&type=sharePage`,
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ setTimeout(() => {
|
|
|
+ uploadExecuteRef.value.showPopup(item, "share-sheet");
|
|
|
+ }, 10);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function handleUploadSuccess() {
|
|
|
+ getTaskList();
|
|
|
+}
|
|
|
+
|
|
|
const selectExecuteTime = (item) => {
|
|
|
if (getButtonText(item)) {
|
|
|
const query = {
|
|
|
@@ -164,8 +218,24 @@ const updateAllData = () => {
|
|
|
};
|
|
|
//农情互动的农场列表接口(分页)
|
|
|
const getTaskList = async () => {
|
|
|
- const res = await VE_API.z_farm_work_record.getSimpleList({ role: 2, flowStatus: 4 });
|
|
|
- taskList.value = (res.data || []).slice(0, 2);
|
|
|
+ // 同时获取待完成(4)和待复核(5)的任务
|
|
|
+ const [res4, res5] = await Promise.all([
|
|
|
+ VE_API.z_farm_work_record.generalPendingFarmWork({ role: 2, flowStatus: 4 }),
|
|
|
+ VE_API.z_farm_work_record.generalPendingFarmWork({ role: 2, flowStatus: 5 })
|
|
|
+ ]);
|
|
|
+
|
|
|
+ const tasks4 = (res4.data || []).map(task => ({
|
|
|
+ ...task,
|
|
|
+ reviewDate: calculateReviewDate(task)
|
|
|
+ }));
|
|
|
+
|
|
|
+ const tasks5 = (res5.data || []).map(task => ({
|
|
|
+ ...task,
|
|
|
+ reviewDate: calculateReviewDate(task)
|
|
|
+ }));
|
|
|
+
|
|
|
+ // 合并两种状态的任务,总共取前2个
|
|
|
+ taskList.value = [...tasks4, ...tasks5].slice(0, 2);
|
|
|
};
|
|
|
|
|
|
const unansweredList = ref([]);
|