|
@@ -2,13 +2,14 @@
|
|
|
<div class="completed-work">
|
|
<div class="completed-work">
|
|
|
<custom-header name="农事详情"></custom-header>
|
|
<custom-header name="农事详情"></custom-header>
|
|
|
<div class="work-content" :class="{'hasBottom': curRole == 0}">
|
|
<div class="work-content" :class="{'hasBottom': curRole == 0}">
|
|
|
- <div class="step-wrap">
|
|
|
|
|
|
|
+ <div class="step-wrap" v-show="query.status !== 'warning'">
|
|
|
<farm-steps :currentStep="currentStep" />
|
|
<farm-steps :currentStep="currentStep" />
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="content-status" v-if="currentStep !== 0">
|
|
|
|
|
|
|
+ <div class="content-status" :class="{'warning': query.status === 'warning'}" v-if="currentStep !== 0 || query.status === 'warning'">
|
|
|
<div class="status-l" v-if="status === 0">
|
|
<div class="status-l" v-if="status === 0">
|
|
|
- <div class="stauts-text">待执行</div>
|
|
|
|
|
- <div class="stauts-sub-text">距离预计执行时间还差 <span class="time-text">3</span> 天</div>
|
|
|
|
|
|
|
+ <div class="stauts-text">{{ query.status === 'warning' ? '已过期' : '待执行' }}</div>
|
|
|
|
|
+ <div class="stauts-sub-text" v-if="query.status !== 'warning'">距离预计执行时间还差 <span class="time-text">3</span> 天</div>
|
|
|
|
|
+ <div class="stauts-sub-text" v-else>该农事触发但未执行</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="status-l" v-if="status === 1">
|
|
<div class="status-l" v-if="status === 1">
|
|
|
<div class="stauts-text">
|
|
<div class="stauts-text">
|
|
@@ -16,10 +17,35 @@
|
|
|
该农事已完成
|
|
该农事已完成
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="status-r" v-if="curRole == 0">{{ status === 0 ? "设置提醒" : "去评价" }}</div>
|
|
|
|
|
- <div class="status-r" v-if="curRole == 1">{{ status === 0 ? "提醒执行" : "提醒复核" }}</div>
|
|
|
|
|
|
|
+ <template v-if="query.status !== 'warning'">
|
|
|
|
|
+ <div class="status-r" v-if="curRole == 0">{{ status === 0 ? "设置提醒" : "去评价" }}</div>
|
|
|
|
|
+ <div class="status-r" v-if="curRole == 1">{{ status === 0 ? "提醒执行" : "提醒复核" }}</div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="work-wrap">
|
|
|
|
|
+ <div class="box-wrap executor-info">
|
|
|
|
|
+ <div class="executor-title">执行人</div>
|
|
|
|
|
+ <div class="executor-content">
|
|
|
|
|
+ <div class="executor-avatar">
|
|
|
|
|
+ <img src="https://birdseye-img-ali-cdn.sysuimars.com/16926861-1e20-4cbd-8bf2-90208db5a2d0/806080da-1a30-4b5b-b64b-b22e722c6cb6/DJI_202509010800_001_806080da-1a30-4b5b-b64b-b22e722c6cb6/DJI_20250901080536_0045_V_code-ws0fsmge97gh.jpeg" alt="执行人" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="executor-details">
|
|
|
|
|
+ <div class="org-name">
|
|
|
|
|
+ <span class="name">河南农资农服组织</span>
|
|
|
|
|
+ <span class="rating">5.0分</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="service-info">
|
|
|
|
|
+ <div class="service-item">服务品种: <span>荔枝、龙眼</span></div>
|
|
|
|
|
+ <div class="service-item">服务设备: <span>无人机、水肥一体机、水肥一体机水肥</span></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="contact-buttons">
|
|
|
|
|
+ <button class="contact-btn">电话联系</button>
|
|
|
|
|
+ <button class="contact-btn">在线联系</button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
-
|
|
|
|
|
<div class="work-wrap">
|
|
<div class="work-wrap">
|
|
|
<div class="box-wrap farm-info">
|
|
<div class="box-wrap farm-info">
|
|
|
<div class="info-title">
|
|
<div class="info-title">
|
|
@@ -147,7 +173,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="fixed-btn-wrap" :class="{'center': currentStep == 0}" v-if="curRole === 0">
|
|
|
|
|
|
|
+ <div class="fixed-btn-wrap" :class="{'center': currentStep == 0}" v-if="curRole === 0 && query.status !== 'warning'">
|
|
|
<div class="fixed-btn expert" v-if="currentStep == 0">提醒专家确认</div>
|
|
<div class="fixed-btn expert" v-if="currentStep == 0">提醒专家确认</div>
|
|
|
<div class="fixed-btn orange" v-if="currentStep == 1" @click="handleDemand">发起需求</div>
|
|
<div class="fixed-btn orange" v-if="currentStep == 1" @click="handleDemand">发起需求</div>
|
|
|
<div class="fixed-btn" v-if="currentStep == 1" @click="handleOk">{{ status === 0 ? "我已完成" : "立即复核" }}</div>
|
|
<div class="fixed-btn" v-if="currentStep == 1" @click="handleOk">{{ status === 0 ? "我已完成" : "立即复核" }}</div>
|
|
@@ -164,16 +190,16 @@ import { onMounted, ref } from "vue";
|
|
|
import NewFarmMap from "./newFarmMap";
|
|
import NewFarmMap from "./newFarmMap";
|
|
|
import { useStore } from "vuex";
|
|
import { useStore } from "vuex";
|
|
|
import offerPopup from "@/components/popup/offerPopup.vue";
|
|
import offerPopup from "@/components/popup/offerPopup.vue";
|
|
|
-import { useRouter } from "vue-router";
|
|
|
|
|
|
|
+import { useRouter, useRoute } from "vue-router";
|
|
|
import farmSteps from "@/components/farmSteps.vue";
|
|
import farmSteps from "@/components/farmSteps.vue";
|
|
|
|
|
|
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
|
const store = useStore();
|
|
const store = useStore();
|
|
|
-
|
|
|
|
|
|
|
+const query = useRoute().query;
|
|
|
// 角色
|
|
// 角色
|
|
|
// const curRole = store.state.app.curRole
|
|
// const curRole = store.state.app.curRole
|
|
|
-const currentStep = ref(1);
|
|
|
|
|
-const curRole = 1
|
|
|
|
|
|
|
+const currentStep = ref(0);
|
|
|
|
|
+const curRole = 0
|
|
|
|
|
|
|
|
// 0:执行, 1: 复核
|
|
// 0:执行, 1: 复核
|
|
|
const status = ref(0);
|
|
const status = ref(0);
|
|
@@ -489,6 +515,14 @@ const changeRegion = (e) => {
|
|
|
color: #ffff;
|
|
color: #ffff;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ &.warning {
|
|
|
|
|
+ &::after {
|
|
|
|
|
+ background: #FF953D;
|
|
|
|
|
+ }
|
|
|
|
|
+ .stauts-sub-text {
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
.status-r {
|
|
.status-r {
|
|
|
height: 32px;
|
|
height: 32px;
|
|
|
line-height: 32px;
|
|
line-height: 32px;
|
|
@@ -504,6 +538,73 @@ const changeRegion = (e) => {
|
|
|
padding: 10px 0;
|
|
padding: 10px 0;
|
|
|
position: relative;
|
|
position: relative;
|
|
|
}
|
|
}
|
|
|
|
|
+ .executor-info {
|
|
|
|
|
+ margin-top: 14px;
|
|
|
|
|
+ .executor-title {
|
|
|
|
|
+ font-size: 18px;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ color: #000;
|
|
|
|
|
+ margin-bottom: 12px;
|
|
|
|
|
+ }
|
|
|
|
|
+ .executor-content {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: flex-start;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+ .executor-avatar {
|
|
|
|
|
+ flex-shrink: 0;
|
|
|
|
|
+ img {
|
|
|
|
|
+ width: 60px;
|
|
|
|
|
+ height: 60px;
|
|
|
|
|
+ border-radius: 8px;
|
|
|
|
|
+ object-fit: cover;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .executor-details {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ .org-name {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+ margin-bottom: 3px;
|
|
|
|
|
+ .name {
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ color: #000;
|
|
|
|
|
+ }
|
|
|
|
|
+ .rating {
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+ color: #FF953D;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .service-info {
|
|
|
|
|
+ margin-bottom: 12px;
|
|
|
|
|
+ .service-item {
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ color: #B6B6B6;
|
|
|
|
|
+ line-height: 1.3;
|
|
|
|
|
+ margin-bottom: 2px;
|
|
|
|
|
+ span{
|
|
|
|
|
+ color: #666666;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .contact-buttons {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: flex-end;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+ .contact-btn {
|
|
|
|
|
+ width: 88px;
|
|
|
|
|
+ height: 32px;
|
|
|
|
|
+ border-radius: 20px;
|
|
|
|
|
+ color: rgba(0, 0, 0, 0.5);
|
|
|
|
|
+ background: #fff;
|
|
|
|
|
+ border: 1px solid rgba(0, 0, 0, 0.1);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
.farm-info {
|
|
.farm-info {
|
|
|
color: rgba(0, 0, 0, 0.6);
|
|
color: rgba(0, 0, 0, 0.6);
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|