|
|
@@ -19,7 +19,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <div class="work-wrap" :class="{ 'has-bottom': info?.appType === 2 || (info?.appType === 1 && detail?.flowStatus === 3) }">
|
|
|
+ <div class="work-wrap has-bottom warning-info-show" :class="{ 'warning-info-show': detail?.flowStatus === 1 }">
|
|
|
<!-- 农事组信息 -->
|
|
|
<div class="box-wrap group-info group-box" v-if="(detail?.executionLimitDays || detail?.executionLimitDays === 0) && detail?.flowStatus !== 5">
|
|
|
<div class="group-name">
|
|
|
@@ -30,7 +30,7 @@
|
|
|
</div>
|
|
|
|
|
|
<!-- 每一段农事 -->
|
|
|
- <div v-for="(prescription, index) in stageList" :key="index" class="box-wrap stage-card">
|
|
|
+ <!-- <div v-for="(prescription, index) in stageList" :key="index" class="box-wrap stage-card">
|
|
|
<div class="work-info">
|
|
|
<div class="stage-header">
|
|
|
<div class="stage-title">{{ detail.farmWorkName }}</div>
|
|
|
@@ -68,7 +68,6 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 执行方式 -->
|
|
|
<div class="stage-tabs" v-if="hasAnyAvailableExecutionMethod(prescription)">
|
|
|
<div v-for="tab in getAvailableExecutionTabs(prescription)" :key="tab.value" class="tab-pill"
|
|
|
:class="{ active: getStageExecutionMethod(index) === tab.value }"
|
|
|
@@ -77,7 +76,6 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 药物处方表 -->
|
|
|
<div class="prescription-wrap"
|
|
|
v-if="prescription.pesticideList && prescription.pesticideList.length && hasAnyAvailableExecutionMethod(prescription)">
|
|
|
<div class="prescription-table">
|
|
|
@@ -112,7 +110,6 @@
|
|
|
</div>
|
|
|
|
|
|
|
|
|
- <!-- 农事凭证 -->
|
|
|
<div class="work-info photo-box" v-if="prescription.cropAlbum && prescription.cropAlbum.length">
|
|
|
<div class="photo-title">农事凭证</div>
|
|
|
<div class="tips-text" v-if="detail?.imageAuditRejectReason">{{ detail?.imageAuditRejectReason }}</div>
|
|
|
@@ -132,6 +129,57 @@
|
|
|
</photo-provider>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ </div> -->
|
|
|
+
|
|
|
+
|
|
|
+ <div class="box-wrap stage-card">
|
|
|
+ <div class="work-info">
|
|
|
+ <div class="map-box">
|
|
|
+ <div class="map-title">执行区域</div>
|
|
|
+ <div class="map-container" ref="mapContainer"></div>
|
|
|
+ </div>
|
|
|
+ <div class="area-list">
|
|
|
+ <div class="area-item" v-for="item in 2" :key="item">
|
|
|
+ <div class="area-l">
|
|
|
+ 分区名称1:具体时间
|
|
|
+ <span class="area-tag">未激活</span>
|
|
|
+ </div>
|
|
|
+ <div class="area-r">我已完成</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="box-wrap stage-card">
|
|
|
+ <div class="work-info">
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="info-title"><span class="title-block"></span>农事目的</div>
|
|
|
+ <div class="info-value">农事目的农事目的农事目的农事目的农事目的农事目的农事目的</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="info-title"><span class="title-block"></span>注意事项</div>
|
|
|
+ <div class="info-value">注意事项注意事项注意事项注意事项注意事项注意事项注意事项</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="info-title"><span class="title-block"></span>药物处方</div>
|
|
|
+ <div class="info-value"><span class="blod-text">机械:</span>药肥处方药肥处方药肥处方药肥处方药肥处方药肥</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="info-title"><span class="title-block"></span>执行方式</div>
|
|
|
+ <div class="info-value"><span class="blod-text">机械:</span>执行方式执行方式执行方式执行方式执行方式执行方式</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="warning-info">
|
|
|
+ <div class="warning-l">
|
|
|
+ <div class="warning-title">
|
|
|
+ <el-icon size="16" color="#FF953D"><WarningFilled /></el-icon>
|
|
|
+ 存在继发危害需巡园
|
|
|
+ </div>
|
|
|
+ <div class="warning-text">文案文案文案文案文案</div>
|
|
|
+ </div>
|
|
|
+ <div class="warning-r">异常记录</div>
|
|
|
</div>
|
|
|
|
|
|
<!-- 底部按钮 -->
|
|
|
@@ -141,9 +189,9 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <div class="fixed-btn-wrap execute-action" :class="{ 'no-share': miniJson?.hideDraw }" v-if="info?.appType === 1 && detail?.flowStatus === 3">
|
|
|
- <div class="action-item second" v-if="!miniJson?.hideDraw" @click="handleConvert">转发农事</div>
|
|
|
- <div class="action-item primary" @click="handleExecute">溯源认证</div>
|
|
|
+ <div class="fixed-btn-wrap execute-action">
|
|
|
+ <div class="action-item second" v-if="!miniJson?.hideDraw" @click="handleConvert">转发给执行人员</div>
|
|
|
+ <!-- <div class="action-item primary" @click="handleExecute">溯源认证</div> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -170,6 +218,7 @@ import UploadTips from "@/components/popup/uploadTips.vue";
|
|
|
import { Popup } from "vant";
|
|
|
import MapInfo from "./components/mapInfo.vue";
|
|
|
import { useRoute } from "vue-router";
|
|
|
+import AreaMap from "./components/areaMap.js";
|
|
|
|
|
|
const route = useRoute();
|
|
|
const showUploadTipsPopup = ref(false);
|
|
|
@@ -259,6 +308,9 @@ const getDetail = () => {
|
|
|
data?.expertNameFromFarmBasicInfo ?? "",
|
|
|
rangeWkt: data?.rangeWkt ?? null,
|
|
|
};
|
|
|
+
|
|
|
+ // 地图
|
|
|
+ areaMap.initMap("POINT(113.1093017627431 22.57454083668)", mapContainer.value);
|
|
|
});
|
|
|
};
|
|
|
|
|
|
@@ -509,6 +561,11 @@ const changeExecutionMethod = (stageIndex, value) => {
|
|
|
[stageIndex]: value
|
|
|
};
|
|
|
};
|
|
|
+
|
|
|
+// 地图
|
|
|
+
|
|
|
+const mapContainer = ref(null);
|
|
|
+const areaMap = new AreaMap();
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
@@ -604,7 +661,10 @@ const changeExecutionMethod = (stageIndex, value) => {
|
|
|
padding: 0 12px 12px;
|
|
|
z-index: 2;
|
|
|
&.has-bottom {
|
|
|
- margin-bottom: 76px;
|
|
|
+ margin-bottom: 88px;
|
|
|
+ }
|
|
|
+ &.warning-info-show {
|
|
|
+ margin-bottom: 168px;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -617,7 +677,7 @@ const changeExecutionMethod = (stageIndex, value) => {
|
|
|
.work-info {
|
|
|
background: #ffffff;
|
|
|
border-radius: 8px;
|
|
|
- padding: 14px 10px 10px 10px;
|
|
|
+ padding: 10px 10px;
|
|
|
box-shadow: 0 2px 8px rgba(15, 35, 52, 0.06);
|
|
|
}
|
|
|
|
|
|
@@ -689,6 +749,103 @@ const changeExecutionMethod = (stageIndex, value) => {
|
|
|
margin-top: 10px;
|
|
|
}
|
|
|
|
|
|
+.info-item + .info-item {
|
|
|
+ margin-top: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.info-item {
|
|
|
+ .info-title {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 4px;
|
|
|
+ color: #2199F8;
|
|
|
+ font-weight: 500;
|
|
|
+ .title-block {
|
|
|
+ width: 6px;
|
|
|
+ height: 6px;
|
|
|
+ background: #2199F8;
|
|
|
+ border-radius: 1px;
|
|
|
+ transform: rotate(45deg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .info-value {
|
|
|
+ padding-top: 4px;
|
|
|
+ color: #ACACAC;
|
|
|
+ line-height: 21px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .blod-text {
|
|
|
+ font-weight: 500;
|
|
|
+ }
|
|
|
+}
|
|
|
+.map-box {
|
|
|
+ position: relative;
|
|
|
+ .map-title {
|
|
|
+ z-index: 12;
|
|
|
+ position: absolute;
|
|
|
+ border-radius: 5px 0 0 5px;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ height: 25px;
|
|
|
+ padding: 0 18px;
|
|
|
+ line-height: 25px;
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: 500;
|
|
|
+ color: #fff;
|
|
|
+ background: rgba(0, 0, 0, 0.45);
|
|
|
+ backdrop-filter: blur(4px);
|
|
|
+ }
|
|
|
+
|
|
|
+ .map-container {
|
|
|
+ height: 140px;
|
|
|
+ width: 100%;
|
|
|
+ clip-path: inset(0px round 5px);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+.area-list {
|
|
|
+ margin-top: 10px;
|
|
|
+ .area-item + .area-item {
|
|
|
+ margin-top: 6px;
|
|
|
+ }
|
|
|
+ .area-item {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 10px;
|
|
|
+ border: 1px solid rgba(0, 0, 0, 0.1);
|
|
|
+ border-radius: 6px;
|
|
|
+ .area-l {
|
|
|
+ color: #000000;
|
|
|
+ font-weight: 500;
|
|
|
+ .area-tag {
|
|
|
+ background: rgba(98, 98, 98, 0.1);
|
|
|
+ color: #626262;
|
|
|
+ height: 22px;
|
|
|
+ line-height: 22px;
|
|
|
+ padding: 0 5px;
|
|
|
+ border-radius: 2px;
|
|
|
+ font-size: 12px;
|
|
|
+ margin-left: 5px;
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .area-r {
|
|
|
+ background: #2199F8;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: 500;
|
|
|
+ cursor: pointer;
|
|
|
+ height: 28px;
|
|
|
+ line-height: 28px;
|
|
|
+ padding: 0 10px;
|
|
|
+ border-radius: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
.stage-card {
|
|
|
|
|
|
.stage-header {
|
|
|
@@ -912,8 +1069,8 @@ const changeExecutionMethod = (stageIndex, value) => {
|
|
|
.execute-action {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- // justify-content: center;
|
|
|
- justify-content: space-between;
|
|
|
+ justify-content: center;
|
|
|
+ // justify-content: space-between;
|
|
|
gap: 16px;
|
|
|
|
|
|
.action-item {
|
|
|
@@ -940,10 +1097,50 @@ const changeExecutionMethod = (stageIndex, value) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-.fixed-btn-wrap {
|
|
|
+.warning-info {
|
|
|
+ position: fixed;
|
|
|
+ bottom: 100px;
|
|
|
+ left: 10px;
|
|
|
+ width: calc(100% - 20px);
|
|
|
+ background: linear-gradient(180deg, #FFDFC5 -13%, #FFFFFF 39%);
|
|
|
+ border-radius: 8px;
|
|
|
+ padding: 14px 10px;
|
|
|
+ box-sizing: border-box;
|
|
|
display: flex;
|
|
|
- // justify-content: center;
|
|
|
+ align-items: center;
|
|
|
justify-content: space-between;
|
|
|
+ box-shadow: 0px 4px 4px 0px #0000001A;
|
|
|
+ .warning-l {
|
|
|
+ .warning-title {
|
|
|
+ display: inline-flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 6px;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #FF953D;
|
|
|
+ }
|
|
|
+ .warning-text {
|
|
|
+ color: rgba(0, 0, 0, 0.4);
|
|
|
+ font-size: 12px;
|
|
|
+ // margin-top: 4px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .warning-r {
|
|
|
+ background: #FF953D;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 12px;
|
|
|
+ cursor: pointer;
|
|
|
+ padding: 0 7px;
|
|
|
+ height: 32px;
|
|
|
+ line-height: 32px;
|
|
|
+ border-radius: 20px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.fixed-btn-wrap {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ // justify-content: space-between;
|
|
|
|
|
|
&.center-btn {
|
|
|
justify-content: center;
|