|
|
@@ -8,7 +8,9 @@
|
|
|
<div class="status-left">
|
|
|
<div class="status-text">
|
|
|
<div class="status-icon">
|
|
|
- <el-icon :size="24" color="#fff"><Warning /></el-icon>
|
|
|
+ <el-icon :size="24" color="#fff">
|
|
|
+ <Warning />
|
|
|
+ </el-icon>
|
|
|
</div>
|
|
|
<span v-show="status === 0">未执行</span>
|
|
|
<span v-show="status === 1">等待执行</span>
|
|
|
@@ -45,9 +47,62 @@
|
|
|
</div>
|
|
|
|
|
|
<div class="card-actions">
|
|
|
- <div class="action-btn" @click="handleViewPrescription">查看药物处方</div>
|
|
|
- <div class="action-btn" @click="handleViewArea">查看执行区域</div>
|
|
|
+ <div class="action-btn" @click="handleViewPrescription">
|
|
|
+ {{ showPrescription ? '收起药物处方' : '查看药物处方' }}
|
|
|
+ </div>
|
|
|
+ <div class="action-btn" @click="handleViewArea">
|
|
|
+ {{ showMapArea ? '收起执行区域' : '查看执行区域' }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <transition name="prescription-slide">
|
|
|
+ <div class="new-wrap"
|
|
|
+ v-show="showPrescription && detailData?.prescriptionList?.length && detailData?.prescriptionList[0]?.pesticideFertilizerList?.length > 0">
|
|
|
+ <div class="new-title">
|
|
|
+ <div class="title-1">
|
|
|
+ <div class="table-name">药肥类型</div>
|
|
|
+ </div>
|
|
|
+ <div class="title-2">
|
|
|
+ <div class="table-name">药肥名称</div>
|
|
|
+ </div>
|
|
|
+ <div class="title-4">
|
|
|
+ <div class="table-name">药肥配比</div>
|
|
|
+ </div>
|
|
|
+ <div class="title-5">
|
|
|
+ <div class="table-name">单亩用量</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="new-table-wrap"
|
|
|
+ v-for="(prescriptionItem, prescriptionI) in detailData?.prescriptionList"
|
|
|
+ :key="prescriptionI">
|
|
|
+ <div class="new-prescription"
|
|
|
+ v-for="(subP, subI) in prescriptionItem.pesticideFertilizerList" :key="subI">
|
|
|
+ <div class="new-table">
|
|
|
+ <div class="line-l">
|
|
|
+ <div class="line-1 title-1">{{ subP.typeName }}</div>
|
|
|
+ <div class="line-2">{{ subP.defaultName || subP.pesticideFertilizerName }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="line-r">
|
|
|
+ <div class="line-3">
|
|
|
+ <div class="sub-line title-4">{{ quotationData.executionMethod === 1 ?
|
|
|
+ subP.ratio2 : subP.ratio }}倍</div>
|
|
|
+ <div class="sub-line title-5">{{ quotationData.executionMethod === 1 ?
|
|
|
+ subP.muUsage2 : subP.muUsage }}{{ subP.unit }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="note-text" v-if="subP.remark">{{ subP.remark }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </transition>
|
|
|
+
|
|
|
+ <transition name="prescription-slide">
|
|
|
+ <div v-if="showMapArea" class="map-info-wrap">
|
|
|
+ <map-info :key="`map-${farmId}`" :farm-id="farmId" />
|
|
|
+ </div>
|
|
|
+ </transition>
|
|
|
</div>
|
|
|
|
|
|
<div class="card-box action-video">
|
|
|
@@ -58,15 +113,9 @@
|
|
|
<div class="forward-link" @click="handleForward">转发操作指南</div>
|
|
|
</div>
|
|
|
<div class="video-wrap">
|
|
|
- <video
|
|
|
- src="https://birdseye-img-ali-cdn.sysuimars.com/bbs_post/video/1767872309467.mp4"
|
|
|
- controls
|
|
|
- style="width: 100%; max-width: 100%; height: auto; border-radius: 8px"
|
|
|
- preload="metadata"
|
|
|
- playsinline
|
|
|
- webkit-playsinline
|
|
|
- x5-playsinline
|
|
|
- ></video>
|
|
|
+ <video src="https://birdseye-img-ali-cdn.sysuimars.com/bbs_post/video/1767872309467.mp4"
|
|
|
+ controls style="width: 100%; max-width: 100%; height: auto; border-radius: 8px"
|
|
|
+ preload="metadata" playsinline webkit-playsinline x5-playsinline></video>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
@@ -125,9 +174,9 @@
|
|
|
</popup>
|
|
|
|
|
|
<!-- 执行区域地图弹窗 -->
|
|
|
- <popup v-model:show="showMapPopup" closeable class="map-popup">
|
|
|
+ <!-- <popup v-model:show="showMapPopup" closeable class="map-popup">
|
|
|
<map-info :farm-id="farmId" />
|
|
|
- </popup>
|
|
|
+ </popup> -->
|
|
|
|
|
|
<!-- 处方卡片 -->
|
|
|
<detail-dialog ref="detailDialogRef" />
|
|
|
@@ -136,7 +185,9 @@
|
|
|
<popup v-model:show="showExamplePopup" overlay-class="example-overlay" class="example-popup">
|
|
|
<div class="example-content">
|
|
|
<!-- <img src="@/assets/img/home/example-4.png" alt="" /> -->
|
|
|
- <img class="example-img" src="https://birdseye-img-ali-cdn.sysuimars.com/birdseye-look-mini/94379/1768801082504.png" alt="" />
|
|
|
+ <img class="example-img"
|
|
|
+ src="https://birdseye-img-ali-cdn.sysuimars.com/birdseye-look-mini/94379/1768801082504.png"
|
|
|
+ alt="" />
|
|
|
<div class="example-tips">
|
|
|
拍摄要求:请采集代表农场作物物候期的照片,请采集代表农场作物物候期的照片。
|
|
|
</div>
|
|
|
@@ -202,19 +253,154 @@ const handleForward = async () => {
|
|
|
};
|
|
|
|
|
|
const detailDialogRef = ref(null);
|
|
|
+// 控制处方列表展开/收起
|
|
|
+const showPrescription = ref(false);
|
|
|
+
|
|
|
const handleViewPrescription = () => {
|
|
|
- // 查看药物处方
|
|
|
- detailDialogRef.value.showDialog('801074109092990976', "", false);
|
|
|
+ // 收起执行区域地图
|
|
|
+ showMapArea.value = false;
|
|
|
+ // 切换处方列表展开/收起状态
|
|
|
+ showPrescription.value = !showPrescription.value;
|
|
|
};
|
|
|
|
|
|
-// 执行区域地图
|
|
|
-const showMapPopup = ref(false);
|
|
|
+// 控制执行区域地图展开/收起
|
|
|
+const showMapArea = ref(false);
|
|
|
+
|
|
|
+const detailData = ref(
|
|
|
+ {
|
|
|
+ "consequenceText": "",
|
|
|
+ "id": "280962",
|
|
|
+ "reCheckText": "",
|
|
|
+ "orderId": "801082980008202240",
|
|
|
+ "farmWorkArrangeId": "11272",
|
|
|
+ "farmName": "荔枝博览园",
|
|
|
+ "farmPoint": "POINT(113.61702297075017 23.584863449735067)",
|
|
|
+ "area": 300,
|
|
|
+ "expert": "739294587868155904",
|
|
|
+ "orderStatus": 0,
|
|
|
+ "activeStatus": null,
|
|
|
+ "flowStatus": 5,
|
|
|
+ "farmId": 766,
|
|
|
+ "regionId": null,
|
|
|
+ "farmMiniUserId": 90739,
|
|
|
+ "farmMiniUserName": "",
|
|
|
+ "speciesId": "1",
|
|
|
+ "speciesName": "荔枝",
|
|
|
+ "agriculturalId": 214,
|
|
|
+ "agriculturalIcon": "",
|
|
|
+ "farmWorkId": "801074109092990976",
|
|
|
+ "farmWorkLibId": "801074109092990976",
|
|
|
+ "farmWorkLibName": "冬季防治(地面)",
|
|
|
+ "farmWorkName": "冬季防治(地面)",
|
|
|
+ "expertName": "飞鸟种植助手",
|
|
|
+ "expertUserName": "飞鸟种植助手",
|
|
|
+ "expertIcon": "https://birdseye-img-ali-cdn.sysuimars.com//expert/1757473957076.png",
|
|
|
+ "expertUserIcon": "https://birdseye-img-ali-cdn.sysuimars.com//expert/1757473957076.png",
|
|
|
+ "icon": null,
|
|
|
+ "indexName": "",
|
|
|
+ "indexChart": [],
|
|
|
+ "executeDate": "2026-01-19",
|
|
|
+ "executeDeadlineDate": "2026-01-19",
|
|
|
+ "expectedExecuteDate": "2026-01-19",
|
|
|
+ "finishDate": null,
|
|
|
+ "checkDate": null,
|
|
|
+ "beforeExecuteDate": null,
|
|
|
+ "indexJson": "",
|
|
|
+ "expertPrescription": "",
|
|
|
+ "code": "801074109080408065",
|
|
|
+ "condition": "",
|
|
|
+ "solarName": "",
|
|
|
+ "reCheck": 1,
|
|
|
+ "menu": 1,
|
|
|
+ "num": null,
|
|
|
+ "purpose": "",
|
|
|
+ "type": 1,
|
|
|
+ "farmWorkType": 3,
|
|
|
+ "farmWorkTypeName": "病虫",
|
|
|
+ "execute": 3,
|
|
|
+ "updateDate0": "2026-01-19",
|
|
|
+ "updateDate1": null,
|
|
|
+ "updateDate2": null,
|
|
|
+ "updateDate3": null,
|
|
|
+ "updateDate4": null,
|
|
|
+ "updateDate5": null,
|
|
|
+ "updateDate6": null,
|
|
|
+ "confirmPicture": [],
|
|
|
+ "executeEvidence": [
|
|
|
+ "birdseye-look-mini/94379/1768801082504.png",
|
|
|
+ "birdseye-look-mini/94379/1768801086136.png"
|
|
|
+ ],
|
|
|
+ "reviewImage": [],
|
|
|
+ "reviewImage2": [],
|
|
|
+ "reviewDate": null,
|
|
|
+ "reviewDate2": null,
|
|
|
+ "serviceRegion": "广州市从化区荔枝博览园",
|
|
|
+ "usageMode": "地面喷施",
|
|
|
+ "serviceMain": "数域行",
|
|
|
+ "executeMain": "数域行",
|
|
|
+ "storeShortName": "",
|
|
|
+ "weatherWarningMsg": "",
|
|
|
+ "userEvaluation": null,
|
|
|
+ "executeBlueZones": [],
|
|
|
+ "isMaster": null,
|
|
|
+ "isEdit": 0,
|
|
|
+ "selfExec": null,
|
|
|
+ "defaultFarmWork": 1,
|
|
|
+ "isPublic": 0,
|
|
|
+ "prescriptionList": [
|
|
|
+ {
|
|
|
+ "name": "病虫",
|
|
|
+ "pesticideFertilizerList": [
|
|
|
+ {
|
|
|
+ "defaultName": "",
|
|
|
+ "id": null,
|
|
|
+ "muPrice": 1,
|
|
|
+ "muUsage": 20,
|
|
|
+ "muUsage2": 20,
|
|
|
+ "price": "",
|
|
|
+ "ratio": 1000,
|
|
|
+ "ratio2": 100,
|
|
|
+ "remark": "",
|
|
|
+ "usageMode": "",
|
|
|
+ "usageModeList": [
|
|
|
+ "叶面施"
|
|
|
+ ],
|
|
|
+ "pesticideFertilizerCode": "1522",
|
|
|
+ "pesticideFertilizerId": "776945747475042304",
|
|
|
+ "pesticideFertilizerName": "5%高氯·甲维盐微乳剂",
|
|
|
+ "brand": "默认品牌",
|
|
|
+ "typeName": "胃毒性",
|
|
|
+ "unit": "ml"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "needReview": 0,
|
|
|
+ "conditionList": [],
|
|
|
+ "actualAgriculturalInput": null,
|
|
|
+ "actualFarmServiceInput": null,
|
|
|
+ "actualTotalInput": 996,
|
|
|
+ "executeName": "张扬",
|
|
|
+ "executorIcon": "https://birdseye-img.sysuimars.com/dinggou-mini/defalut-icon.png",
|
|
|
+ "executorUserId": 94379
|
|
|
+ }
|
|
|
+);
|
|
|
+
|
|
|
+
|
|
|
+const quotationData = ref(
|
|
|
+ {
|
|
|
+ "executionMethodName": "地面喷施",
|
|
|
+ "executionMethod": 1,
|
|
|
+ }
|
|
|
+);
|
|
|
// TODO: 根据实际数据来源设置 farmId,比如从接口详情或路由参数中获取
|
|
|
const farmId = ref(94500);
|
|
|
|
|
|
const handleViewArea = () => {
|
|
|
- // 查看执行区域:弹出地图信息
|
|
|
- showMapPopup.value = true;
|
|
|
+ // 收起药物处方
|
|
|
+ showPrescription.value = false;
|
|
|
+ // 切换执行区域地图展开/收起状态
|
|
|
+ showMapArea.value = !showMapArea.value;
|
|
|
};
|
|
|
|
|
|
const showExamplePopup = ref(false);
|
|
|
@@ -247,6 +433,7 @@ const handleShowQrCodePopup = (type) => {
|
|
|
height: 100vh;
|
|
|
width: 100%;
|
|
|
background: #f2f3f5;
|
|
|
+
|
|
|
.detail-content {
|
|
|
height: calc(100% - 44px);
|
|
|
overflow: auto;
|
|
|
@@ -280,11 +467,13 @@ const handleShowQrCodePopup = (type) => {
|
|
|
background: #ff6666;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
&.status-1 {
|
|
|
&::after {
|
|
|
background: #ff953d;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
&.status-2 {
|
|
|
&::after {
|
|
|
background: #2199f8;
|
|
|
@@ -359,9 +548,11 @@ const handleShowQrCodePopup = (type) => {
|
|
|
.card-wrap {
|
|
|
padding: 0 12px;
|
|
|
}
|
|
|
+
|
|
|
.content-card {
|
|
|
position: relative;
|
|
|
z-index: 2;
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
|
.card-info {
|
|
|
padding-top: 12px;
|
|
|
@@ -404,9 +595,119 @@ const handleShowQrCodePopup = (type) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+.new-wrap {
|
|
|
+ margin-top: 12px;
|
|
|
+ border-radius: 5px;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid rgba(225, 225, 225, 0.5);
|
|
|
+
|
|
|
+ .new-title {
|
|
|
+ background: rgba(241, 241, 241, 0.4);
|
|
|
+ border-radius: 5px 5px 0 0;
|
|
|
+ border-bottom: 1px solid rgba(225, 225, 225, 0.5);
|
|
|
+ display: flex;
|
|
|
+ color: #767676;
|
|
|
+ // justify-content: space-around;
|
|
|
+ padding: 5px 6px;
|
|
|
+ font-size: 12px;
|
|
|
+
|
|
|
+ .table-name {
|
|
|
+ width: 24px;
|
|
|
+ font-size: 12px;
|
|
|
+ margin: 0 auto;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .title-1 {
|
|
|
+ width: 46px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .title-2 {
|
|
|
+ flex: 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ .title-3 {
|
|
|
+ width: 52px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .title-4 {
|
|
|
+ width: 56px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .title-5 {
|
|
|
+ width: 52px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .new-table-wrap {
|
|
|
+ .new-prescription {
|
|
|
+ .new-table {
|
|
|
+ height: 45px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 5px;
|
|
|
+ color: rgba(0, 0, 0, 0.6);
|
|
|
+ font-size: 11px;
|
|
|
+
|
|
|
+ .line-l {
|
|
|
+ display: flex;
|
|
|
+ flex: 1;
|
|
|
+
|
|
|
+ .line-2 {
|
|
|
+ flex: 1;
|
|
|
+ padding: 0 2px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .line-r {
|
|
|
+ &.has-border {
|
|
|
+ border-left: 1px solid rgba(225, 225, 225, 0.8);
|
|
|
+ }
|
|
|
+
|
|
|
+ .line-3 {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .sub-line {
|
|
|
+ padding: 10px 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .line-4 {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ border-top: 1px solid rgba(225, 225, 225, 0.8);
|
|
|
+ }
|
|
|
+
|
|
|
+ .execute-line {
|
|
|
+ border-right: 1px solid rgba(225, 225, 225, 0.8);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .note-text {
|
|
|
+ margin: 8px 0 4px 0;
|
|
|
+ color: rgba(0, 0, 0, 0.4);
|
|
|
+ background: #fff;
|
|
|
+ padding: 6px 8px;
|
|
|
+ border-radius: 5px;
|
|
|
+ text-align: left;
|
|
|
+ font-size: 11px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .new-prescription+.new-prescription {
|
|
|
+ .new-table {
|
|
|
+ border-top: 1px solid rgba(0, 0, 0, 0.08);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
.action-video {
|
|
|
margin-top: 10px;
|
|
|
padding: 10px;
|
|
|
+
|
|
|
.video-wrap {
|
|
|
padding-top: 4px;
|
|
|
}
|
|
|
@@ -436,6 +737,10 @@ const handleShowQrCodePopup = (type) => {
|
|
|
text-align: center;
|
|
|
padding: 16px 0 6px 0;
|
|
|
}
|
|
|
+
|
|
|
+}
|
|
|
+.map-info-wrap {
|
|
|
+ padding-top: 12px;
|
|
|
}
|
|
|
|
|
|
.code-popup {
|
|
|
@@ -444,18 +749,22 @@ const handleShowQrCodePopup = (type) => {
|
|
|
padding: 36px 10px 20px 10px;
|
|
|
box-sizing: border-box;
|
|
|
background: linear-gradient(360deg, #ffffff 74.2%, #d1ebff 100%);
|
|
|
+
|
|
|
::v-deep {
|
|
|
.van-popup__close-icon {
|
|
|
color: #333333;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.code-popup-wrap {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
flex-direction: column;
|
|
|
+
|
|
|
.text-wrap {
|
|
|
padding: 8px 0 36px 0;
|
|
|
+
|
|
|
.qr-code-text {
|
|
|
font-size: 14px;
|
|
|
line-height: 22px;
|
|
|
@@ -463,11 +772,13 @@ const handleShowQrCodePopup = (type) => {
|
|
|
text-align: center;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.code-tips {
|
|
|
color: #666666;
|
|
|
font-size: 14px;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.qr-code-content {
|
|
|
.qr-code-img {
|
|
|
width: 197px;
|
|
|
@@ -489,12 +800,15 @@ const handleShowQrCodePopup = (type) => {
|
|
|
border-radius: 0;
|
|
|
background: none;
|
|
|
max-width: 100%;
|
|
|
+
|
|
|
.example-content {
|
|
|
text-align: center;
|
|
|
+
|
|
|
.example-img {
|
|
|
width: 100%;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.example-tips {
|
|
|
margin: 16px 12px 6px 12px;
|
|
|
background: #3d3d3d;
|
|
|
@@ -507,8 +821,40 @@ const handleShowQrCodePopup = (type) => {
|
|
|
text-align: left;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.example-overlay {
|
|
|
background: rgba(0, 0, 0, 0.6);
|
|
|
backdrop-filter: blur(8px);
|
|
|
}
|
|
|
+
|
|
|
+// 处方列表展开/收起过渡动画
|
|
|
+.prescription-slide-enter-active,
|
|
|
+.prescription-slide-leave-active {
|
|
|
+ transition: all 0.2s ease;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+
|
|
|
+.prescription-slide-enter-from {
|
|
|
+ // opacity: 0;
|
|
|
+ max-height: 0;
|
|
|
+ margin-top: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.prescription-slide-enter-to {
|
|
|
+ // opacity: 1;
|
|
|
+ max-height: 1000px;
|
|
|
+ margin-top: 12px;
|
|
|
+}
|
|
|
+
|
|
|
+.prescription-slide-leave-from {
|
|
|
+ opacity: 1;
|
|
|
+ max-height: 1000px;
|
|
|
+ margin-top: 12px;
|
|
|
+}
|
|
|
+
|
|
|
+.prescription-slide-leave-to {
|
|
|
+ opacity: 0;
|
|
|
+ max-height: 0;
|
|
|
+ margin-top: 0;
|
|
|
+}
|
|
|
</style>
|