prescriptionBox.vue 38 KB

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