prescriptionBox.vue 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. <template>
  2. <!-- 专家处方 -->
  3. <div class="work-item" :class="{ dark: progress === 0 && ROLETYPE != '3' }">
  4. <div class="work-line">
  5. <div class="line-box">
  6. <div class="line-dotted">
  7. <div class="dotted-inset"></div>
  8. </div>
  9. </div>
  10. </div>
  11. <div class="work-info">
  12. <img v-if="progress === 0 && ROLETYPE == '3'" class="todo-img" src="@/assets/img/gallery/todo.png" />
  13. <img v-if="progress !== 0" class="done-img" src="@/assets/img/gallery/done.png" />
  14. <div class="card-item-title"><span class="dotted"></span>专家处方</div>
  15. <div class="prescription-box">
  16. <div class="step-box">
  17. <step-box :orderStatus="infoItem.orderStatus" v-if="infoItem.orderStatus || infoItem.orderStatus === 0"></step-box>
  18. </div>
  19. <!-- <div class="blur-bg">
  20. <div class="lock-btn">解锁智能处方</div>
  21. </div> -->
  22. <div class="work-info-conetnt">
  23. <div class="info-item">
  24. <div class="info-name">农事编号</div>
  25. <div class="info-value">{{ infoItem.orderId }}</div>
  26. </div>
  27. <div class="info-item">
  28. <div class="info-name">服务亩数</div>
  29. <div class="info-value">{{ infoItem.area }}亩</div>
  30. </div>
  31. <div class="info-item">
  32. <div class="info-name">服务区域</div>
  33. <div class="info-value">{{ infoItem.serviceRegion }}</div>
  34. </div>
  35. <div v-if="progress === 0 && ROLETYPE == '3'">
  36. <div class="info-item">
  37. <div class="info-name">触发条件</div>
  38. <div class="info-value">
  39. {{ infoItem.condition }}
  40. <div class="select-value">
  41. <el-select v-model="infoItem.condition" placeholder="请选择" style="width: 80px">
  42. <el-option v-for="num in 9" :key="num" :value="20 + (num - 1) * 5 + '%'">
  43. {{ 20 + (num - 1) * 5 }}%
  44. </el-option>
  45. </el-select>
  46. </div>
  47. </div>
  48. </div>
  49. <div class="info-item time-picker">
  50. <div class="info-name">执行时间</div>
  51. <div class="info-value">
  52. <el-date-picker
  53. style="width: 150px"
  54. value-format="YYYY-MM-DD"
  55. v-model="infoItem.executeDate"
  56. type="date"
  57. :clearable="false"
  58. class="date-info"
  59. placeholder="选择日期"
  60. />
  61. </div>
  62. </div>
  63. </div>
  64. <div v-else>
  65. <div class="info-item">
  66. <div class="info-name">触发条件</div>
  67. <div class="info-value">{{ infoItem.farmWorkLibName }}</div>
  68. </div>
  69. <div class="info-item">
  70. <div class="info-name">执行时间</div>
  71. <div class="info-value">{{ infoItem.executeDate }}</div>
  72. </div>
  73. </div>
  74. <!-- <div class="info-item">
  75. <li class="info-name">执行时间</li>
  76. <div class="info-value primary-color">2025.01.12</div>
  77. </div> -->
  78. </div>
  79. <div class="desc">
  80. {{ prescriptioData.expertPrescription || prescriptioData.weatherWarningMsg }}
  81. </div>
  82. <div class="prescription-item" v-if="progress === 0 && ROLETYPE == '3' && dynamicValidateForm.prescriptionList && dynamicValidateForm.prescriptionList.length && dynamicValidateForm.prescriptionList[0].pesticideFertilizerList.length">
  83. <div class="usageMode-wrap">
  84. <div class="box-item">
  85. <div class="form-l">施用方式</div>
  86. <div class="form-r">
  87. <el-select
  88. v-model="dynamicValidateForm.usageMode"
  89. placeholder="请选择"
  90. style="width: 152px"
  91. >
  92. <el-option
  93. v-for="(usage, uId) in allUsageModeList"
  94. :key="uId"
  95. :label="usage"
  96. :value="usage"
  97. />
  98. </el-select>
  99. </div>
  100. </div>
  101. </div>
  102. <el-form ref="formRef" style="max-width: 600px" :model="dynamicValidateForm" class="demo-dynamic">
  103. <div
  104. v-for="(prescriptionItem, prescriptionI) in dynamicValidateForm.prescriptionList"
  105. :key="prescriptionI"
  106. >
  107. <div class="recipe-box">
  108. <div class="recipe-title">
  109. <div class="recipe-name">{{ prescriptionItem.name }}处方</div>
  110. <div class="recipe-btn" @click="addDomain(prescriptionI)">
  111. <el-icon><Plus /></el-icon>新增药物
  112. </div>
  113. </div>
  114. <div class="recipe-item">
  115. <div class="recipe-form">
  116. <el-form-item
  117. v-for="(domain, index) in prescriptionItem.pesticideFertilizerList"
  118. :key="domain.key"
  119. :prop="'domains.' + index + '.value'"
  120. >
  121. <div class="form-box">
  122. <div class="form-index">{{ formatIndex(index) }}</div>
  123. <div class="box-item" v-if="domain.typeName">
  124. <div class="form-l">使用功效</div>
  125. <div class="form-r r-text">
  126. {{ domain.typeName }}
  127. <!-- <el-select
  128. v-model="domain.typeName"
  129. placeholder="请选择"
  130. style="width: 140px"
  131. >
  132. <el-option :label="domain.typeName" :value="domain.typeName" />
  133. </el-select> -->
  134. </div>
  135. </div>
  136. <div class="box-item">
  137. <div class="form-l">肥药名称</div>
  138. <div class="form-r">
  139. <el-select
  140. @change="
  141. handlePesticideFertilizerChange(prescriptionI, index)
  142. "
  143. v-model="domain.pesticideFertilizerId"
  144. placeholder="请选择"
  145. style="width: 140px"
  146. >
  147. <el-option
  148. v-for="item in pesticideFertilizersOptions"
  149. :key="item.id"
  150. :label="item.defaultName"
  151. :value="item.id"
  152. />
  153. </el-select>
  154. </div>
  155. </div>
  156. <div class="form-title">人工方式</div>
  157. <div class="box-item sub-item">
  158. <div class="form-l has-sub">
  159. <div class="main-name">肥药配比</div>
  160. <div class="sub-name">(药剂:兑水量)</div>
  161. </div>
  162. <div class="form-r input-box text-center">
  163. <el-input
  164. v-model="domain.ratio"
  165. style="width: 140px"
  166. placeholder="请输入"
  167. />
  168. <!-- <el-select
  169. v-model="domain.value3"
  170. placeholder="请选择"
  171. style="width: 140px"
  172. >
  173. <el-option label="1ml:5000ml" value="1" />
  174. <el-option label="1ml:10000ml" value="3" />
  175. </el-select> -->
  176. </div>
  177. </div>
  178. <div class="box-item sub-item">
  179. <div class="form-l has-sub">
  180. <div class="main-name">单亩用量</div>
  181. <div class="sub-name">(亩数:药剂)</div>
  182. </div>
  183. <div class="form-r input-box text-center">
  184. <el-input
  185. v-model="domain.muUsage"
  186. style="width: 140px"
  187. placeholder="请输入"
  188. />
  189. <!-- <el-select
  190. v-model="domain.value5"
  191. placeholder="请选择"
  192. style="width: 140px"
  193. >
  194. <el-option label="1:5000ml" value="1" />
  195. <el-option label="1:10000ml" value="3" />
  196. </el-select> -->
  197. </div>
  198. </div>
  199. <div v-if="dynamicValidateForm.usageMode === '叶面施'">
  200. <div class="form-title">无人机方式</div>
  201. <div class="box-item sub-item">
  202. <div class="form-l has-sub">
  203. <div class="main-name">肥药配比</div>
  204. <div class="sub-name">(药剂:兑水量)</div>
  205. </div>
  206. <div class="form-r input-box text-center">
  207. <el-input
  208. v-model="domain.muUsage2"
  209. style="width: 140px"
  210. placeholder="请输入"
  211. />
  212. <!-- <el-select
  213. v-model="domain.value6"
  214. placeholder="请选择"
  215. style="width: 140px"
  216. >
  217. <el-option label="1ml:5000ml" value="1" />
  218. <el-option label="1ml:10000ml" value="3" />
  219. </el-select> -->
  220. </div>
  221. </div>
  222. <div class="box-item sub-item">
  223. <div class="form-l has-sub">
  224. <div class="main-name">单亩用量</div>
  225. <div class="sub-name">(亩数:药剂)</div>
  226. </div>
  227. <div class="form-r input-box text-center">
  228. <el-input
  229. v-model="domain.ratio2"
  230. style="width: 140px"
  231. placeholder="请输入"
  232. />
  233. </div>
  234. </div>
  235. </div>
  236. <div class="input-box">
  237. <el-input
  238. v-model="domain.remark"
  239. style="width: 100%"
  240. placeholder="备注:用药注意事项"
  241. />
  242. </div>
  243. <div class="action-btn">
  244. <el-button
  245. class="btn delete-btn"
  246. @click.prevent="removeDomain(prescriptionI, domain)"
  247. >
  248. 删除
  249. </el-button>
  250. <el-button
  251. type="primary"
  252. class="btn"
  253. @click.prevent="resetItemForm(prescriptionI, index)"
  254. >
  255. 重置
  256. </el-button>
  257. </div>
  258. </div>
  259. </el-form-item>
  260. </div>
  261. </div>
  262. </div>
  263. </div>
  264. </el-form>
  265. </div>
  266. <div class="prescription-item" v-else v-show="prescriptioData.prescriptionList && prescriptioData.prescriptionList.length && prescriptioData.prescriptionList[0].pesticideFertilizerList.length">
  267. <div class="sub-title">
  268. <div class="sub-name">药物处方</div>
  269. </div>
  270. <div class="use-mode">施用方式:<span>{{ prescriptioData.usageMode }}</span></div>
  271. <div v-if="workType">
  272. <div class="new-wrap">
  273. <div class="new-title">
  274. <div class="title-1"><div class="table-name">使用功效</div></div>
  275. <div class="title-2"><div class="table-name">肥药名称</div></div>
  276. <div class="title-3"><div class="table-name">执行方式</div></div>
  277. <div class="title-4"><div class="table-name">药肥配比</div></div>
  278. <div class="title-5"><div class="table-name">单亩用量</div></div>
  279. </div>
  280. <div
  281. class="new-table-wrap"
  282. v-for="(prescriptionItem, prescriptionI) in prescriptioData.prescriptionList"
  283. :key="prescriptionI"
  284. >
  285. <div
  286. class="new-prescription"
  287. v-for="(subP, subI) in prescriptionItem.pesticideFertilizerList"
  288. :key="subI"
  289. >
  290. <div class="new-table">
  291. <div class="line-l">
  292. <div class="line-1 title-1">{{ subP.typeName }}</div>
  293. <div class="line-2">{{ subP.defaultName }}</div>
  294. </div>
  295. <div class="line-r" :class="{'has-border': prescriptioData.usageMode === '叶面施'}">
  296. <div class="line-3">
  297. <div class="sub-line title-3" :class="{'execute-line': prescriptioData.usageMode === '叶面施'}">人工</div>
  298. <div class="sub-line title-4">{{ subP.ratio }}</div>
  299. <div class="sub-line title-5">{{ subP.muUsage }}</div>
  300. </div>
  301. <div class="line-4" v-if="prescriptioData.usageMode === '叶面施'">
  302. <div class="sub-line title-3 execute-line">无人机</div>
  303. <div class="sub-line title-4">{{ subP.ratio2 ? subP.ratio2 : "---" }}</div>
  304. <div class="sub-line title-5">{{ subP.muUsage2 ? subP.muUsage2 : "---" }}</div>
  305. </div>
  306. </div>
  307. </div>
  308. <div class="note-text" v-if="subP.remark">{{ subP.remark }}</div>
  309. </div>
  310. <!-- <div class="prescription-result" :class="{ 'has-wrap': workType }">
  311. <div class="result-index">0{{ index + 1 }}</div>
  312. <div class="result-title">
  313. <div class="title-item">
  314. <div class="name">功效:</div>
  315. <div class="value">{{ item.typeName }}</div>
  316. </div>
  317. <div class="title-item">
  318. <div class="name">名称:</div>
  319. <div class="value">{{ item.defaultName }}</div>
  320. </div>
  321. </div>
  322. <div>
  323. <el-table
  324. :data="handleTableData(item)"
  325. style="width: 100%"
  326. :header-cell-style="{ background: '#F5F5F5' }"
  327. >
  328. <el-table-column label="" width="50">
  329. <template #default="scope">
  330. <div class="table-l-title">
  331. {{ scope.row.executeStyle == 1 ? "人工" : "无人机" }}
  332. </div>
  333. </template>
  334. </el-table-column>
  335. <el-table-column label="配比" width="56">
  336. <template #default="scope">
  337. {{ scope.row.ratio ? scope.row.ratio + scope.row.unit : "---" }}
  338. </template>
  339. </el-table-column>
  340. <el-table-column prop="muUsage" label="单亩用量">
  341. <template #default="scope">
  342. {{ scope.row.muUsage ? scope.row.muUsage + scope.row.unit : "---" }}
  343. </template>
  344. </el-table-column>
  345. </el-table>
  346. </div>
  347. <div class="remark-text">备注:{{ item.remark }}</div>
  348. </div> -->
  349. </div>
  350. </div>
  351. </div>
  352. <div v-else class="item-table has-sub-title no-wrap-table">
  353. <div class="prescription-result">
  354. <el-table
  355. :data="prescriptioData.pesticideFertilizers"
  356. style="width: 100%"
  357. :header-cell-style="{ background: '#F5F5F5' }"
  358. >
  359. <el-table-column prop="typeName" label="功效" width="42" />
  360. <el-table-column prop="defaultName" label="名称" />
  361. <el-table-column label="配比" width="52">
  362. <template #default="scope">
  363. {{ scope.row.ratio ? scope.row.ratio + scope.row.unit : "---" }}
  364. </template>
  365. </el-table-column>
  366. <el-table-column prop="muUsage" label="单亩用量" width="42">
  367. <template #default="scope">
  368. {{ scope.row.muUsage ? scope.row.muUsage + scope.row.unit : "---" }}
  369. </template>
  370. </el-table-column>
  371. <el-table-column label="执行方式" width="40">
  372. <template #default="scope">
  373. <div class="table-l-title">
  374. {{ scope.row.executeStyle == 1 ? "人工" : "人工" }}
  375. </div>
  376. </template>
  377. </el-table-column>
  378. </el-table>
  379. </div>
  380. </div>
  381. </div>
  382. <div class="prescription-item">
  383. <div class="sub-title">
  384. <div class="sub-line"></div>
  385. <div class="sub-name">执行农事区域</div>
  386. <div class="sub-line"></div>
  387. </div>
  388. <div class="prescription-chart prescription-map" v-if="infoItem?.executeBlueZones">
  389. <execute-blue-region
  390. :executeBlueZones="infoItem?.executeBlueZones"
  391. :farmId="infoItem.farmId"
  392. :regionId="infoItem.regionId"
  393. ></execute-blue-region>
  394. </div>
  395. </div>
  396. <div class="prescription-item" v-if="progress === 0">
  397. <div class="sub-title">
  398. <div class="sub-line"></div>
  399. <div class="sub-name">指标动态</div>
  400. <div class="sub-line"></div>
  401. </div>
  402. <div class="prescription-chart">
  403. <chart
  404. :key="1"
  405. type="feature"
  406. :indexName="infoItem.indexName"
  407. :chartJson="prescriptioData.indexJson"
  408. ></chart>
  409. </div>
  410. </div>
  411. <div class="prescription-item action-btn" v-if="progress === 0 && ROLETYPE == '3'">
  412. <el-button class="btn" type="danger" plain @click="remove()">删除</el-button>
  413. <el-button class="btn" type="primary" @click="submitForm(formRef)">确认下发</el-button>
  414. </div>
  415. </div>
  416. </div>
  417. </div>
  418. </template>
  419. <script setup>
  420. import eventBus from "@/api/eventBus";
  421. import chart from "./chart.vue";
  422. import { onActivated, onMounted, reactive, ref } from "vue";
  423. import { ElMessage, ElMessageBox } from "element-plus";
  424. import { useStore } from "vuex";
  425. import ExecuteBlueRegion from "./executeBlueRegion";
  426. import stepBox from "@/components/common/stepBox.vue";
  427. import { useRouter } from "vue-router";
  428. const router = useRouter();
  429. const props = defineProps({
  430. progress: {
  431. type: Number,
  432. required: true,
  433. },
  434. prescriptioData: {
  435. type: Object,
  436. },
  437. });
  438. const infoItem = ref({});
  439. const store = useStore();
  440. const ROLETYPE = store.state.app.curRole;
  441. // 农事类型--区分表格显示字段等
  442. const workType = ref(true);
  443. let pesticideFertilizersOptions = ref([
  444. {
  445. id: "null",
  446. name: "芸苔素内酯 15000倍",
  447. typeName: "30",
  448. defaultRatio: null,
  449. defaultDroneRatio: null,
  450. unit: 0,
  451. defaultName: "调节",
  452. },
  453. ]);
  454. VE_API.order.pesticideFertilizers().then(({ data }) => {
  455. pesticideFertilizersOptions.value = data;
  456. });
  457. onMounted(() => {
  458. dynamicValidateForm.usageMode = props.prescriptioData.usageMode;
  459. dynamicValidateForm.prescriptionList = props.prescriptioData.prescriptionList.map((item) => ({ ...item }));
  460. // submit()
  461. infoItem.value = props.prescriptioData;
  462. });
  463. // 表单
  464. const formRef = ref();
  465. const dynamicValidateForm = reactive({
  466. name: "",
  467. conditionRate: "",
  468. executeDate: "",
  469. usageMode: "",
  470. prescriptionList: [
  471. {
  472. name: "",
  473. pesticideFertilizerList: [
  474. {
  475. key: 1,
  476. typeName: "",
  477. muUsage: "",
  478. muUsage2: "",
  479. ratio: "",
  480. ratio2: "",
  481. remark: "",
  482. },
  483. ],
  484. },
  485. ],
  486. });
  487. const addDomain = (parentIndex) => {
  488. dynamicValidateForm.prescriptionList[parentIndex].pesticideFertilizerList.unshift({
  489. key: Date.now(),
  490. muUsage: "",
  491. muUsage2: "",
  492. ratio: "",
  493. ratio2: "",
  494. remark: "",
  495. });
  496. };
  497. const removeDomain = (parentIndex, item) => {
  498. const index = dynamicValidateForm.prescriptionList[parentIndex].pesticideFertilizerList.indexOf(item);
  499. if (index !== -1) {
  500. dynamicValidateForm.prescriptionList[parentIndex].pesticideFertilizerList.splice(index, 1);
  501. }
  502. };
  503. const resetItemForm = (parentIndex, index) => {
  504. dynamicValidateForm.prescriptionList[parentIndex].pesticideFertilizerList[index] = {
  505. typeName: "",
  506. muUsage: "",
  507. muUsage2: "",
  508. ratio: "",
  509. ratio2: "",
  510. remark: "",
  511. };
  512. };
  513. const allUsageMode = ref(null);
  514. const allUsageModeList = ["叶面施", "根部施"];
  515. /**
  516. * 选择药肥的时候修改订单中药肥pesticideFertilizerId 以外其他数据
  517. * @param index
  518. */
  519. const handlePesticideFertilizerChange = (parentIndex, index) => {
  520. let obj = pesticideFertilizersOptions.value.filter(
  521. (item) =>
  522. dynamicValidateForm.prescriptionList[parentIndex].pesticideFertilizerList[index].pesticideFertilizerId ===
  523. item.id
  524. )[0];
  525. dynamicValidateForm.prescriptionList[parentIndex].pesticideFertilizerList[index] = {
  526. ...dynamicValidateForm.prescriptionList[parentIndex].pesticideFertilizerList[index],
  527. typeName: obj.typeName,
  528. unit: obj.unit,
  529. defaultRatio: obj.defaultRatio,
  530. usageModeList: obj.usageModeList,
  531. ratio: obj.defaultRatio,
  532. defaultName: obj.defaultName,
  533. pesticideFertilizerName: obj.name,
  534. pesticideFertilizerCode: obj.pesticideFertilizerCode,
  535. };
  536. };
  537. const submitForm = (formEl) => {
  538. if (!formEl) return;
  539. formEl.validate((valid) => {
  540. if (valid) {
  541. submit();
  542. } else {
  543. console.log("error submit!");
  544. }
  545. });
  546. };
  547. const submit = () => {
  548. // const executeBlueZones = newFarmMap.getSelectedBlueRegion();
  549. // if (!executeBlueZones || !executeBlueZones.length) {
  550. // ElMessage({
  551. // message: "请选择执行区域",
  552. // type: "warning",
  553. // });
  554. // return false
  555. // }
  556. // 检查药物所有项是否都包含特定的字段
  557. const hasRequiredFields = dynamicValidateForm.prescriptionList.every((item) => {
  558. return item.pesticideFertilizerList.every((domain) => {
  559. const hasPesticideFertilizerCode = "pesticideFertilizerCode" in domain;
  560. const hasMuUsage = "muUsage" in domain;
  561. const hasRatio = "ratio" in domain;
  562. const isMuUsageValid = domain.muUsage !== "";
  563. const isRatioValid = domain.ratio ? true : false;
  564. return hasPesticideFertilizerCode && hasMuUsage && hasRatio && isMuUsageValid && isRatioValid;
  565. });
  566. });
  567. if (!hasRequiredFields) {
  568. ElMessage({
  569. message: "请完善药物信息",
  570. type: "warning",
  571. });
  572. return false;
  573. }
  574. const data = {
  575. ...infoItem.value,
  576. ...dynamicValidateForm,
  577. // prescription: flattenedDomains,
  578. orderStatus: 1,
  579. // weatherWarningMsg: warningMsg.value,
  580. // allUsageMode: allUsageMode.value,
  581. };
  582. VE_API.order.confirm(data).then(({ code }) => {
  583. if (code === 0) {
  584. ElMessage({
  585. message: "下发处方成功",
  586. type: "success",
  587. });
  588. setTimeout(() => {
  589. eventBus.emit("discover:submitForm");
  590. // window.location.reload();
  591. }, 500);
  592. }
  593. });
  594. };
  595. const formatIndex = (index) => {
  596. return String(index + 1).padStart(2, "0");
  597. };
  598. const handleTableData = (item) => {
  599. return [
  600. {
  601. typeName: item.typeName,
  602. defaultName: item.defaultName,
  603. executeStyle: 1,
  604. ratio: item.ratio || item.defaultRatio,
  605. usageMode: item.usageMode,
  606. muUsage: item.muUsage,
  607. unit: item.unit,
  608. },
  609. {
  610. typeName: item.typeName,
  611. defaultName: item.defaultName,
  612. executeStyle: 2,
  613. ratio: item.ratio2,
  614. usageMode: "---",
  615. muUsage: item.muUsage2,
  616. unit: item.unit,
  617. },
  618. ];
  619. };
  620. const remove = () => {
  621. ElMessageBox.confirm("是否要删除这个农事?", "警告", {
  622. confirmButtonText: "删除",
  623. cancelButtonText: "取消",
  624. type: "warning",
  625. }).then(() => {
  626. VE_API.farm.deleteFarmWork({ libId: infoItem.value.farmWorkLibId }).then(({ code }) => {
  627. if (code === 0) {
  628. ElMessage({
  629. type: "success",
  630. message: "删除成功!",
  631. });
  632. setTimeout(() => {
  633. // router.go(-1);
  634. router.replace("/expert_album?reload=true");
  635. }, 500);
  636. }
  637. });
  638. });
  639. };
  640. </script>
  641. <style lang="scss" scoped>
  642. @import "./boxClass.scss";
  643. .recipe-box {
  644. .recipe-title {
  645. display: flex;
  646. align-items: center;
  647. justify-content: space-between;
  648. .recipe-name {
  649. color: #000000;
  650. font-size: 14px;
  651. }
  652. .recipe-btn {
  653. font-size: 12px;
  654. color: #2199f8;
  655. }
  656. }
  657. }
  658. .prescription-result {
  659. position: relative;
  660. // border: 0.5px solid rgba(33, 153, 248, 0.5);
  661. // border-radius: 4px;
  662. // padding: 8px 10px 10px 10px;
  663. &.has-wrap {
  664. border: 0.5px solid rgba(33, 153, 248, 0.5);
  665. border-radius: 4px;
  666. padding: 8px 10px 10px 10px;
  667. }
  668. .result-index {
  669. position: absolute;
  670. left: -1px;
  671. top: -1px;
  672. padding: 0 8px;
  673. background: #2199f8;
  674. color: #fff;
  675. font-size: 12px;
  676. border-radius: 4px 0 4px 0;
  677. }
  678. .result-title {
  679. display: flex;
  680. justify-content: center;
  681. align-items: center;
  682. padding-bottom: 8px;
  683. .title-item {
  684. display: flex;
  685. align-items: center;
  686. .name {
  687. color: rgba(33, 153, 248, 0.85);
  688. }
  689. .value {
  690. color: rgba(0, 0, 0, 0.4);
  691. }
  692. }
  693. .title-item + .title-item {
  694. padding-left: 16px;
  695. }
  696. }
  697. }
  698. .use-mode {
  699. color: rgba(0, 0, 0, 0.4);
  700. padding: 2px 0 8px 0;
  701. span {
  702. color: #2199f8;
  703. }
  704. }
  705. .new-wrap {
  706. border-radius: 5px;
  707. text-align: center;
  708. border: 1px solid rgba(33, 153, 248, 0.5);
  709. .new-title {
  710. background: #e0f2ff;
  711. border-radius: 5px 5px 0 0;
  712. border-bottom: 1px solid rgba(33, 153, 248, 0.5);
  713. display: flex;
  714. color: rgba(33, 153, 248, 0.85);
  715. // justify-content: space-around;
  716. padding: 5px 6px;
  717. font-size: 12px;
  718. .table-name {
  719. width: 24px;
  720. font-size: 12px;
  721. margin: 0 auto;
  722. }
  723. }
  724. .title-1 {
  725. width: 46px;
  726. }
  727. .title-2 {
  728. flex: 1;
  729. }
  730. .title-3 {
  731. width: 52px;
  732. }
  733. .title-4 {
  734. width: 56px;
  735. }
  736. .title-5 {
  737. width: 52px;
  738. }
  739. .new-table-wrap {
  740. padding: 5px;
  741. .new-prescription {
  742. .new-table {
  743. display: flex;
  744. align-items: center;
  745. border: 1px solid rgba(33, 153, 248, 0.5);
  746. background: #fff;
  747. border-radius: 5px;
  748. color: rgba(0, 0, 0, 0.4);
  749. font-size: 11px;
  750. .line-l {
  751. display: flex;
  752. flex: 1;
  753. .line-2 {
  754. flex: 1;
  755. padding: 0 2px;
  756. }
  757. }
  758. .line-r {
  759. &.has-border {
  760. border-left: 1px solid rgba(33, 153, 248, 0.5);
  761. }
  762. .line-3 {
  763. display: flex;
  764. align-items: center;
  765. }
  766. .sub-line {
  767. padding: 10px 0;
  768. }
  769. .line-4 {
  770. display: flex;
  771. align-items: center;
  772. border-top: 1px solid rgba(33, 153, 248, 0.5);
  773. }
  774. .execute-line {
  775. border-right: 1px solid rgba(33, 153, 248, 0.5);
  776. }
  777. }
  778. }
  779. .note-text {
  780. margin: 8px 0 4px 0;
  781. color: rgba(0, 0, 0, 0.4);
  782. background: #fff;
  783. padding: 6px 8px;
  784. border-radius: 5px;
  785. text-align: left;
  786. font-size: 11px;
  787. }
  788. }
  789. .new-prescription + .new-prescription {
  790. padding-top: 8px;
  791. }
  792. }
  793. }
  794. </style>