|
@@ -1,40 +1,36 @@
|
|
|
<template>
|
|
|
<!-- 专家处方 -->
|
|
|
<div class="work-item" :class="{ dark: prescriptioData?.progress === 0 && ROLETYPE != '3' }">
|
|
|
- <div class="work-line">
|
|
|
- <div class="line-box">
|
|
|
- <div class="line-dotted">
|
|
|
- <div class="dotted-inset"></div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
<div class="work-info">
|
|
|
- <img v-if="prescriptioData?.progress === 0 && ROLETYPE == '3'" class="todo-img" src="@/assets/img/gallery/todo.png" />
|
|
|
- <img v-if="prescriptioData?.progress !== 0" class="done-img" src="@/assets/img/gallery/done.png" />
|
|
|
- <div class="card-item-title"><span class="dotted"></span>专家处方</div>
|
|
|
+ <img
|
|
|
+ v-if="prescriptioData?.progress === 0 && ROLETYPE == '3'"
|
|
|
+ class="todo-img"
|
|
|
+ src="@/assets/img/gallery/todo.png"
|
|
|
+ />
|
|
|
<div class="prescription-box">
|
|
|
<div class="step-box">
|
|
|
- <step-box :card="infoItem" :isDone="infoItem.status === 0 && (infoItem.reCheck === 1 || infoItem.execute === 4)" v-if="infoItem.orderStatus || infoItem.status === 0 || infoItem.orderStatus === 0"></step-box>
|
|
|
+ <step-box
|
|
|
+ :card="infoItem"
|
|
|
+ :isDone="infoItem.status === 0 && (infoItem.reCheck === 1 || infoItem.execute === 4)"
|
|
|
+ v-if="infoItem.orderStatus || infoItem.status === 0 || infoItem.orderStatus === 0"
|
|
|
+ ></step-box>
|
|
|
</div>
|
|
|
- <!-- <div class="blur-bg">
|
|
|
- <div class="lock-btn">解锁智能处方</div>
|
|
|
- </div> -->
|
|
|
<div class="work-info-conetnt">
|
|
|
<div class="info-item">
|
|
|
- <div class="info-name">农事编号</div>
|
|
|
+ <div class="info-name">农事编号:</div>
|
|
|
<div class="info-value">{{ infoItem.orderId }}</div>
|
|
|
</div>
|
|
|
<div class="info-item">
|
|
|
- <div class="info-name">服务亩数</div>
|
|
|
+ <div class="info-name">服务亩数:</div>
|
|
|
<div class="info-value">{{ infoItem.area }}亩</div>
|
|
|
</div>
|
|
|
<div class="info-item">
|
|
|
- <div class="info-name">服务区域</div>
|
|
|
+ <div class="info-name">服务区域:</div>
|
|
|
<div class="info-value">{{ infoItem.serviceRegion }}</div>
|
|
|
</div>
|
|
|
<div v-if="prescriptioData?.progress === 0 && ROLETYPE == '3'">
|
|
|
<div class="info-item">
|
|
|
- <div class="info-name">触发条件</div>
|
|
|
+ <div class="info-name">触发条件:</div>
|
|
|
<div class="info-value">
|
|
|
{{ infoItem.farmWorkLibName }}
|
|
|
<div class="select-value">
|
|
@@ -47,7 +43,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="info-item time-picker">
|
|
|
- <div class="info-name">执行时间</div>
|
|
|
+ <div class="info-name">执行时间:</div>
|
|
|
<div class="info-value">
|
|
|
<el-date-picker
|
|
|
style="width: 150px"
|
|
@@ -63,31 +59,30 @@
|
|
|
</div>
|
|
|
<div v-else>
|
|
|
<div class="info-item">
|
|
|
- <div class="info-name">触发条件</div>
|
|
|
+ <div class="info-name">触发条件:</div>
|
|
|
<div class="info-value">{{ infoItem.farmWorkLibName }}</div>
|
|
|
</div>
|
|
|
<div class="info-item">
|
|
|
- <div class="info-name">执行时间</div>
|
|
|
+ <div class="info-name">执行时间:</div>
|
|
|
<div class="info-value">{{ infoItem.executeDate }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <!-- <div class="info-item">
|
|
|
- <li class="info-name">执行时间</li>
|
|
|
- <div class="info-value primary-color">2025.01.12</div>
|
|
|
- </div> -->
|
|
|
</div>
|
|
|
<div class="desc">
|
|
|
- {{ prescriptioData?.expertPrescription }}
|
|
|
+ 您果园周边 3公里 出现虫害。根据气象模型推算,您的果园出现 卷叶蛾 风险达到90%。手机拍照上传
|
|
|
+ 果园照片,自动预测物候期可以确定.
|
|
|
+ <!-- {{ prescriptioData?.expertPrescription }} -->
|
|
|
</div>
|
|
|
<div class="prescription-item" v-if="prescriptioData?.progress === 0 && ROLETYPE == '3'">
|
|
|
<div class="recipe-box">
|
|
|
<div class="recipe-title">
|
|
|
- <div class="recipe-name">编辑处方</div>
|
|
|
+ <div class="recipe-name">药物处方</div>
|
|
|
<div class="recipe-btn" @click="addDomain">
|
|
|
- <el-icon><Plus /></el-icon>新增药物
|
|
|
+ <el-icon class="icon"><Plus /></el-icon>新增药物
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="recipe-item">
|
|
|
+ <custom-table type="0" @handleDelete="removeDomain" isEdit :tableHeader="tableHeader" :tableData="dynamicValidateForm.domains"></custom-table>
|
|
|
+ <!-- <div class="recipe-item">
|
|
|
<div class="recipe-form">
|
|
|
<el-form
|
|
|
ref="formRef"
|
|
@@ -106,13 +101,6 @@
|
|
|
<div class="form-l">使用功效</div>
|
|
|
<div class="form-r r-text">
|
|
|
{{ domain.typeName }}
|
|
|
- <!-- <el-select
|
|
|
- v-model="domain.typeName"
|
|
|
- placeholder="请选择"
|
|
|
- style="width: 140px"
|
|
|
- >
|
|
|
- <el-option :label="domain.typeName" :value="domain.typeName" />
|
|
|
- </el-select> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="box-item">
|
|
@@ -145,14 +133,6 @@
|
|
|
style="width: 140px"
|
|
|
placeholder="请输入"
|
|
|
/>
|
|
|
- <!-- <el-select
|
|
|
- v-model="domain.value3"
|
|
|
- placeholder="请选择"
|
|
|
- style="width: 140px"
|
|
|
- >
|
|
|
- <el-option label="1ml:5000ml" value="1" />
|
|
|
- <el-option label="1ml:10000ml" value="3" />
|
|
|
- </el-select> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="box-item sub-item">
|
|
@@ -183,14 +163,6 @@
|
|
|
style="width: 140px"
|
|
|
placeholder="请输入"
|
|
|
/>
|
|
|
- <!-- <el-select
|
|
|
- v-model="domain.value5"
|
|
|
- placeholder="请选择"
|
|
|
- style="width: 140px"
|
|
|
- >
|
|
|
- <el-option label="1:5000ml" value="1" />
|
|
|
- <el-option label="1:10000ml" value="3" />
|
|
|
- </el-select> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="form-title">无人机方式</div>
|
|
@@ -205,30 +177,8 @@
|
|
|
style="width: 140px"
|
|
|
placeholder="请输入"
|
|
|
/>
|
|
|
- <!-- <el-select
|
|
|
- v-model="domain.value6"
|
|
|
- placeholder="请选择"
|
|
|
- style="width: 140px"
|
|
|
- >
|
|
|
- <el-option label="1ml:5000ml" value="1" />
|
|
|
- <el-option label="1ml:10000ml" value="3" />
|
|
|
- </el-select> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
- <!-- <div class="box-item sub-item">
|
|
|
- <div class="form-l">施用方式
|
|
|
- </div>
|
|
|
- <div class="form-r">
|
|
|
- <el-select
|
|
|
- v-model="domain.value7"
|
|
|
- placeholder="请选择"
|
|
|
- style="width: 140px"
|
|
|
- >
|
|
|
- <el-option label="根部肥" value="1" />
|
|
|
- <el-option label="叶面肥" value="3" />
|
|
|
- </el-select>
|
|
|
- </div>
|
|
|
- </div> -->
|
|
|
<div class="box-item sub-item">
|
|
|
<div class="form-l has-sub">
|
|
|
<div class="main-name">单亩用量</div>
|
|
@@ -265,101 +215,15 @@
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="prescription-item" v-else>
|
|
|
- <div class="sub-title">
|
|
|
- <div class="sub-name">药物处方</div>
|
|
|
- </div>
|
|
|
- <div v-if="workType">
|
|
|
- <div
|
|
|
- class="item-table has-sub-title has-wrap-table"
|
|
|
- v-for="(item, index) in prescriptioData.pesticideFertilizers"
|
|
|
- :key="index"
|
|
|
- >
|
|
|
- <div class="prescription-result" :class="{ 'has-wrap': workType }">
|
|
|
- <div class="result-index">0{{ index + 1 }}</div>
|
|
|
- <div class="result-title">
|
|
|
- <div class="title-item">
|
|
|
- <div class="name">功效:</div>
|
|
|
- <div class="value">{{ item.typeName }}</div>
|
|
|
- </div>
|
|
|
- <div class="title-item">
|
|
|
- <div class="name">名称:</div>
|
|
|
- <div class="value">{{ item.defaultName }}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <el-table
|
|
|
- :data="handleTableData(item)"
|
|
|
- style="width: 100%"
|
|
|
- :header-cell-style="{ background: '#F5F5F5' }"
|
|
|
- >
|
|
|
- <el-table-column label="" width="50">
|
|
|
- <template #default="scope">
|
|
|
- <div class="table-l-title">
|
|
|
- {{ scope.row.executeStyle == 1 ? "人工" : "无人机" }}
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="配比" width="56">
|
|
|
- <template #default="scope">
|
|
|
- {{ scope.row.ratio ? scope.row.ratio + scope.row.unit : "---" }}
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="usageMode" label="施用方式" width="56" />
|
|
|
- <el-table-column prop="muUsage" label="单亩用量">
|
|
|
- <template #default="scope">
|
|
|
- {{ scope.row.muUsage ? scope.row.muUsage + scope.row.unit : "---" }}
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </div>
|
|
|
- <div class="remark-text">备注:{{ item.remark }}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div v-else class="item-table has-sub-title no-wrap-table">
|
|
|
- <div class="prescription-result">
|
|
|
- <el-table
|
|
|
- :data="prescriptioData.pesticideFertilizers"
|
|
|
- style="width: 100%"
|
|
|
- :header-cell-style="{ background: '#F5F5F5' }"
|
|
|
- >
|
|
|
- <el-table-column prop="typeName" label="功效" width="42" />
|
|
|
- <el-table-column prop="defaultName" label="名称"/>
|
|
|
- <el-table-column label="配比" width="52">
|
|
|
- <template #default="scope">
|
|
|
- {{ scope.row.ratio ? scope.row.ratio + scope.row.unit : "---" }}
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="usageMode" label="施用方式" width="42" />
|
|
|
- <el-table-column prop="muUsage" label="单亩用量" width="42">
|
|
|
- <template #default="scope">
|
|
|
- {{ scope.row.muUsage ? scope.row.muUsage + scope.row.unit : "---" }}
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="执行方式" width="40">
|
|
|
- <template #default="scope">
|
|
|
- <div class="table-l-title">
|
|
|
- {{ scope.row.executeStyle == 1 ? "人工" : "人工" }}
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="prescription-item">
|
|
|
<div class="sub-title">
|
|
|
- <div class="sub-line"></div>
|
|
|
- <div class="sub-name">执行农事区域</div>
|
|
|
- <div class="sub-line"></div>
|
|
|
- </div>
|
|
|
- <div class="prescription-chart prescription-map" v-if="infoItem?.executeBlueZones">
|
|
|
- <execute-blue-region :executeBlueRegion="prescriptioData?.executeBlueRegion" :executeBlueZones="infoItem.executeBlueZones"></execute-blue-region>
|
|
|
+ <div class="sub-name">药物处方</div>
|
|
|
+ <div class="sub-name"><span>施用方式:</span>根部施</div>
|
|
|
</div>
|
|
|
+ <custom-table type="0" :tableHeader="tableHeader" :tableData="tableData"></custom-table>
|
|
|
</div>
|
|
|
<div class="prescription-item" v-if="prescriptioData?.progress === 0">
|
|
|
<div class="sub-title">
|
|
@@ -380,12 +244,13 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
+import { ElMessage } from "element-plus";
|
|
|
import eventBus from "@/api/eventBus";
|
|
|
import chart from "./chart.vue";
|
|
|
import { onActivated, onMounted, reactive, ref } from "vue";
|
|
|
import { useStore } from "vuex";
|
|
|
-import ExecuteBlueRegion from "./executeBlueRegion";
|
|
|
import stepBox from "@/components/common/stepBox.vue";
|
|
|
+import customTable from "./table.vue";
|
|
|
|
|
|
const props = defineProps({
|
|
|
prescriptioData: {
|
|
@@ -393,6 +258,55 @@ const props = defineProps({
|
|
|
},
|
|
|
});
|
|
|
|
|
|
+const tableHeader = [
|
|
|
+ {
|
|
|
+ name: "使用功效",
|
|
|
+ props: "typeName",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "肥药名称",
|
|
|
+ props: "defaultName",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "执行方式",
|
|
|
+ props: "usageMode1",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "药肥配比",
|
|
|
+ props: "usageMode",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "单亩用量",
|
|
|
+ props: "muUsage",
|
|
|
+ },
|
|
|
+];
|
|
|
+
|
|
|
+const tableData = ref([
|
|
|
+ {
|
|
|
+ brand: "",
|
|
|
+ defaultDroneRatio: null,
|
|
|
+ defaultName: "灌水",
|
|
|
+ defaultRatio: null,
|
|
|
+ executeStyle: null,
|
|
|
+ id: "686142764512972800",
|
|
|
+ muPrice: null,
|
|
|
+ muUsage: 222,
|
|
|
+ muUsage2: null,
|
|
|
+ orderId: "686142764492001280",
|
|
|
+ pesticideFertilizerCode: "",
|
|
|
+ pesticideFertilizerId: "15",
|
|
|
+ pesticideFertilizerName: "灌水",
|
|
|
+ price: null,
|
|
|
+ ratio: 11,
|
|
|
+ ratio2: null,
|
|
|
+ remark: "",
|
|
|
+ typeName: "调节",
|
|
|
+ unit: "kg",
|
|
|
+ usageMode: "",
|
|
|
+ list: [],
|
|
|
+ },
|
|
|
+]);
|
|
|
+
|
|
|
const infoItem = ref({});
|
|
|
|
|
|
const store = useStore();
|
|
@@ -414,12 +328,13 @@ let pesticideFertilizersOptions = ref([
|
|
|
]);
|
|
|
VE_API.order.pesticideFertilizers().then(({ data }) => {
|
|
|
pesticideFertilizersOptions.value = data;
|
|
|
+ tableData.value[0].list = data;
|
|
|
});
|
|
|
|
|
|
onMounted(() => {
|
|
|
- console.log(" props.prescriptioData", props.prescriptioData);
|
|
|
dynamicValidateForm.domains = props.prescriptioData?.pesticideFertilizers.map((item) => ({ ...item }));
|
|
|
// submit()
|
|
|
+ console.log("dynamicValidateForm.domains", dynamicValidateForm.domains);
|
|
|
infoItem.value = props.prescriptioData;
|
|
|
});
|
|
|
|
|
@@ -448,13 +363,15 @@ const addDomain = () => {
|
|
|
ratio2: "",
|
|
|
remark: "",
|
|
|
});
|
|
|
+ console.log("121323.domains", dynamicValidateForm.domains);
|
|
|
};
|
|
|
|
|
|
-const removeDomain = (item) => {
|
|
|
- const index = dynamicValidateForm.domains.indexOf(item);
|
|
|
- if (index !== -1) {
|
|
|
+const removeDomain = (index) => {
|
|
|
+ // const index = dynamicValidateForm.domains.indexOf(item);
|
|
|
+ // if (index !== -1) {
|
|
|
+ if(dynamicValidateForm.domains.length===1) return ElMessage.warning('至少保留一个处方!')
|
|
|
dynamicValidateForm.domains.splice(index, 1);
|
|
|
- }
|
|
|
+ // }
|
|
|
};
|
|
|
|
|
|
const resetItemForm = (index) => {
|
|
@@ -543,21 +460,36 @@ const handleTableData = (item) => {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: space-between;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ padding-left: 10px;
|
|
|
+ position: relative;
|
|
|
+ &::before {
|
|
|
+ content: "";
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ top: 3px;
|
|
|
+ width: 3px;
|
|
|
+ height: 15px;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 11px;
|
|
|
+ }
|
|
|
.recipe-name {
|
|
|
- color: #000000;
|
|
|
- font-size: 14px;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 15px;
|
|
|
}
|
|
|
.recipe-btn {
|
|
|
- font-size: 12px;
|
|
|
- color: #2199f8;
|
|
|
+ color: #FFD489;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ cursor: pointer;
|
|
|
+ .icon{
|
|
|
+ margin-right: 3px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
.prescription-result {
|
|
|
position: relative;
|
|
|
- // border: 0.5px solid rgba(33, 153, 248, 0.5);
|
|
|
- // border-radius: 4px;
|
|
|
- // padding: 8px 10px 10px 10px;
|
|
|
&.has-wrap {
|
|
|
border: 0.5px solid rgba(33, 153, 248, 0.5);
|
|
|
border-radius: 4px;
|