batchProductJobBom.vue 26 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099
  1. <template>
  2. <view>
  3. <view class="title_box rx-bc">
  4. <view class="name"> 报工信息: ({{ list.length || 0 }})个</view>
  5. </view>
  6. <view
  7. :class="[
  8. 'material',
  9. it.extInfo.reportWeight && it.extInfo.reportWeight && 'materialBor',
  10. ]"
  11. v-for="(it, idx) in list"
  12. :key="idx"
  13. >
  14. <view class="content_table">
  15. <view class="item rx-sc">
  16. <view class="rx">
  17. <view class="lable lable190 rx-cc" v-if="isDetails">
  18. <view class="round">{{ idx + 1 }}</view>
  19. <uni-icons
  20. custom-prefix="iconfont"
  21. type="icon-shanchu"
  22. size="16"
  23. color="#fa3534"
  24. ></uni-icons>
  25. 物料编码
  26. </view>
  27. <view class="lable lable190 rx-cc" @click="getDelete2(idx)" v-else>
  28. <view class="round">{{ idx + 1 }}</view>
  29. <uni-icons
  30. custom-prefix="iconfont"
  31. type="icon-shanchu"
  32. size="16"
  33. color="#fa3534"
  34. ></uni-icons>
  35. 物料编码
  36. </view>
  37. <view class="content rx-bc">
  38. <view>{{ it.code }} </view>
  39. <view
  40. class="tag_box"
  41. v-if="
  42. Object.prototype.hasOwnProperty.call(it, 'extInfo') &&
  43. Object.prototype.hasOwnProperty.call(
  44. it.extInfo,
  45. 'productionTimes'
  46. ) &&
  47. Object.prototype.hasOwnProperty.call(
  48. it.extInfo.productionTimes,
  49. item.currentTaskDiagram.taskId
  50. )
  51. "
  52. >
  53. {{ it.extInfo.productionTimes[item.currentTaskDiagram.taskId] }}
  54. </view>
  55. </view>
  56. </view>
  57. </view>
  58. <view class="item rx-sc">
  59. <view class="rx">
  60. <view class="lable lable150 rx-cc">名称</view>
  61. <view class="content rx-bc">
  62. <view
  63. >{{ it.name }}
  64. <text
  65. v-if="[2, 23, 9, 28].includes(Number(it.rootCategoryLevelId))"
  66. >
  67. ({{
  68. it.rootCategoryLevelId == 2
  69. ? "在制品"
  70. : it.rootCategoryLevelId == 23
  71. ? "半成品"
  72. : it.rootCategoryLevelId == 9
  73. ? "产品"
  74. : it.rootCategoryLevelId == 28
  75. ? "废品"
  76. : ""
  77. }})
  78. </text>
  79. </view>
  80. <view class="rx-ec">
  81. <view
  82. class="tag_box"
  83. v-if="it.isCache"
  84. style="margin-right: -36rpx; margin-right: 4rpx"
  85. >缓</view
  86. >
  87. <view
  88. class="tag_box"
  89. v-if="
  90. Object.prototype.hasOwnProperty.call(
  91. it.extInfo,
  92. 'isOutsource'
  93. ) && it.extInfo.isOutsource == 1
  94. "
  95. style="margin-right: -36rpx"
  96. >委外</view
  97. >
  98. </view>
  99. </view>
  100. </view>
  101. </view>
  102. <view class="item rx-sc">
  103. <view class="rx">
  104. <view class="lable lable150 rx-cc">型号</view>
  105. <view class="content rx-sc">
  106. <view>{{ it.modelType }}</view>
  107. </view>
  108. </view>
  109. </view>
  110. <view class="item rx-sc">
  111. <view class="rx ww50">
  112. <view class="lable lable150 rx-cc">包装编码</view>
  113. <view class="content content_num">
  114. <view>{{ it.packingCode }}</view>
  115. </view>
  116. </view>
  117. <view class="rx ww50">
  118. <view class="lable lable150 rx-cc">批次号</view>
  119. <view class="content content_num">
  120. <view v-if="isDetails">{{ it.batchNo }}</view>
  121. <view>{{ it.batchNo }}</view>
  122. </view>
  123. </view>
  124. </view>
  125. <view class="item rx-sc">
  126. <view class="rx ww50">
  127. <view class="lable lable150 rx-cc">物料代号</view>
  128. <view class="content content_num">
  129. <view v-if="isDetails">{{ it.extInfo.materielCode }}</view>
  130. <input
  131. class="uni-input"
  132. v-else
  133. v-model="it.extInfo.materielCode"
  134. />
  135. </view>
  136. </view>
  137. <view class="rx ww50">
  138. <view class="lable lable150 rx-cc">客户代号</view>
  139. <view class="content content_num">
  140. <view v-if="isDetails">{{ it.extInfo.clientCode }}</view>
  141. <input class="uni-input" v-else v-model="it.extInfo.clientCode" />
  142. </view>
  143. </view>
  144. </view>
  145. <view class="item rx-sc">
  146. <view class="rx ww50">
  147. <view class="lable lable150 rx-cc">刻码</view>
  148. <view class="content content_num">
  149. <view v-if="isDetails">{{ it.extInfo.engrave }}</view>
  150. <input class="uni-input" v-else v-model="it.extInfo.engrave" />
  151. </view>
  152. </view>
  153. <view class="rx ww50">
  154. <view class="lable lable150 rx-cc">序列号</view>
  155. <view class="content content_num">
  156. <view v-if="isDetails">{{ it.extInfo.productSequence }}</view>
  157. </view>
  158. </view>
  159. </view>
  160. <view class="item rx-sc">
  161. <view class="rx ww50">
  162. <view class="lable lable150 rx-cc">位置</view>
  163. <view class="content content_num">
  164. <view v-if="isDetails">{{ it.extInfo.position }}</view>
  165. <input class="uni-input" v-else v-model="it.extInfo.position" />
  166. </view>
  167. </view>
  168. <view class="rx ww50">
  169. <view class="lable lable150 rx-cc">数量</view>
  170. <view class="content content_num">
  171. <view v-if="isDetails">{{ it.feedQuantity }}</view>
  172. <view>{{ it.feedQuantity }}</view>
  173. </view>
  174. </view>
  175. </view>
  176. <view class="item rx-sc">
  177. <view class="rx ww45">
  178. <view class="lable lable150 rx-cc">是否合格</view>
  179. <view class="content content_num">
  180. <zxz-uni-data-select
  181. :localdata="isQualifiedList"
  182. v-model="it.extInfo.isQualified"
  183. dataValue="code"
  184. format="{name}"
  185. dataKey="code"
  186. filterable
  187. :disabled="isDetails"
  188. :clear="false"
  189. @change="handleInput"
  190. ></zxz-uni-data-select>
  191. </view>
  192. </view>
  193. </view>
  194. </view>
  195. <view
  196. class="content_table2"
  197. v-if="
  198. ![1, 2, 3, 4].includes(Number(it.extInfo.notType)) &&
  199. clientEnvironmentId == 3
  200. "
  201. >
  202. <view class="head row rx-sc">
  203. <view class="item ww25" style="font-size: 20rpx"
  204. >{{ it.extInfo.newWeight ? "上道工序重量" : "物料重量" }}
  205. {{ it.extInfo.weightUnit }}
  206. </view>
  207. <view class="item ww25">报工重量{{ it.extInfo.weightUnit }}</view>
  208. <view class="item ww25" v-if="isFirstTask == 1">质检结果 </view>
  209. <view class="item ww25" :class="[isFirstTask == 1 ? 'ww25' : 'ww50']"
  210. >处置
  211. </view>
  212. </view>
  213. <view class="table">
  214. <view class="tr row rx-sc">
  215. <view
  216. class="item ww25"
  217. v-if="
  218. Object.prototype.hasOwnProperty.call(it.extInfo, 'newWeight') &&
  219. it.extInfo.newWeight
  220. "
  221. >
  222. {{ it.extInfo.newWeight }}
  223. </view>
  224. <view
  225. class="item ww25 content_num"
  226. v-if="
  227. !Object.prototype.hasOwnProperty.call(
  228. it.extInfo,
  229. 'newWeight'
  230. ) ||
  231. it.extInfo.newWeight == null ||
  232. it.extInfo.newWeight == 0
  233. "
  234. >
  235. <input
  236. class="uni-input"
  237. v-model="it.extInfo.weight"
  238. type="digit"
  239. />
  240. </view>
  241. <view class="item ww25 content_num">
  242. <view v-if="isDetails">{{ it.extInfo.reportWeight }}</view>
  243. <input
  244. class="uni-input"
  245. v-else
  246. v-model="it.extInfo.reportWeight"
  247. type="digit"
  248. @input="handleInput"
  249. />
  250. </view>
  251. <view
  252. class="item ww25"
  253. @click="openNumerate(it, idx)"
  254. v-if="isFirstTask == 1"
  255. >
  256. <view class="numerate">点击计算</view>
  257. </view>
  258. <view
  259. class="item"
  260. v-if="isDetails"
  261. :class="[isFirstTask == 1 ? 'ww25' : 'ww50']"
  262. >
  263. {{ it.extInfo.taskName }}
  264. </view>
  265. <!-- <view
  266. class="item"
  267. v-else
  268. :class="[isFirstTask == 1 ? 'ww25' : 'ww50']"
  269. >
  270. <zxz-uni-data-select
  271. :localdata="stepsList"
  272. v-model="it.extInfo.taskId"
  273. dataValue="taskId"
  274. format="{taskTypeName}"
  275. dataKey="taskId"
  276. filterable
  277. @change="(e) => (it.extInfo.taskName = e.taskTypeName)"
  278. :clear="false"
  279. ></zxz-uni-data-select>
  280. </view> -->
  281. </view>
  282. </view>
  283. </view>
  284. </view>
  285. <u-popup
  286. :show="show"
  287. mode="center"
  288. v-if="show"
  289. :closeOnClickOverlay="false"
  290. >
  291. <view class="popup_box">
  292. <view class="title_box rx-bc">
  293. <view class="name">工序计算列表</view>
  294. <view class="btn_box rx-ec">
  295. <view class="btn" @click="handAddParam">新增</view>
  296. </view>
  297. </view>
  298. <view class="content_table2">
  299. <view class="head row rx-sc">
  300. <view class="item ww30">工序名称</view>
  301. <view class="item ww20">坯体密度</view>
  302. <view class="item ww20">密度系数</view>
  303. <view class="item ww20">重量</view>
  304. <view class="item ww10">操作</view>
  305. </view>
  306. <!-- <view class="table">
  307. <view
  308. class="tr row rx-sc"
  309. v-for="(it, idx) in paramList"
  310. :key="idx"
  311. >
  312. <view class="item rx-bc ww30">
  313. <zxz-uni-data-select
  314. :localdata="stepsList"
  315. v-model="it.taskId"
  316. dataValue="taskId"
  317. format="{taskTypeName}"
  318. dataKey="taskId"
  319. filterable
  320. @change="(e) => (it.taskName = e.taskTypeName)"
  321. :clear="false"
  322. ></zxz-uni-data-select>
  323. </view>
  324. <view class="item ww20 content_num">
  325. <input
  326. class="uni-input"
  327. v-model="it.billet"
  328. type="digit"
  329. @input="changeInp(it, idx)"
  330. />
  331. </view>
  332. <view class="item ww20 content_num">
  333. <input
  334. class="uni-input"
  335. v-model="it.density"
  336. type="digit"
  337. @input="changeInp(it, idx)"
  338. />
  339. </view>
  340. <view
  341. class="item ww20"
  342. v-if="idx == 0 || idx != paramList.length - 1"
  343. >
  344. < {{ it.CVIWeight }}
  345. </view>
  346. <view
  347. class="item ww20"
  348. v-if="paramList.length > 1 && idx == paramList.length - 1"
  349. >
  350. ≥ {{ it.CVIWeight }}
  351. </view>
  352. <view class="item ww10 rx-cc" @click="getDelete(idx)">
  353. <uni-icons
  354. custom-prefix="iconfont"
  355. type="icon-shanchu"
  356. size="20"
  357. color="#fa3534"
  358. ></uni-icons>
  359. </view>
  360. </view>
  361. </view> -->
  362. <view class="formula_box"
  363. >计算公式: 物料重量/坯体密度*密度系数
  364. </view>
  365. <view class="rx-cc">
  366. <u-button
  367. size="small"
  368. class="u-reset-button"
  369. style="width: 300rpx; margin: 20rpx"
  370. type="success"
  371. @click="paramSave"
  372. >工序列表保存</u-button
  373. >
  374. </view>
  375. <view class="reportWeight rx-sc">
  376. 物料重量: {{ weight }} ; 报工重量: {{ reportWeight }}
  377. </view>
  378. </view>
  379. <view class="operate_box rx-sc">
  380. <u-button size="small" class="u-reset-button" @click="cancel"
  381. >取消</u-button
  382. >
  383. <u-button
  384. size="small"
  385. class="u-reset-button"
  386. type="success"
  387. @click="save"
  388. >确定</u-button
  389. >
  390. </view>
  391. </view>
  392. </u-popup>
  393. </view>
  394. </template>
  395. <script>
  396. import { getTaskInstanceList } from "@/api/pda/workOrder.js";
  397. import { saveParam, getComputeParam } from "@/api/pda/tangu.js";
  398. export default {
  399. props: {
  400. item: {
  401. type: Object,
  402. default: () => {},
  403. },
  404. list: {
  405. type: Array,
  406. default: () => [],
  407. },
  408. isDetails: {
  409. type: Boolean,
  410. default: false,
  411. },
  412. equipmentList: {
  413. type: Array,
  414. default: () => [],
  415. },
  416. },
  417. watch: {
  418. equipmentList: {
  419. immediate: true,
  420. deep: true,
  421. handler(newVal) {
  422. this.deviceList = newVal;
  423. this.changeHeatNumber();
  424. },
  425. },
  426. },
  427. mounted() {
  428. if (this.deviceList.length > 0) {
  429. this.list.forEach((item) => {
  430. item.deviceId = this.deviceList[0].id
  431. ? this.deviceList[0].id
  432. : this.deviceList[0].instanceId;
  433. });
  434. }
  435. },
  436. data() {
  437. return {
  438. taskTypeName: null,
  439. isFirstTask: null,
  440. stepsList: [],
  441. clientEnvironmentId:
  442. uni.getStorageSync("userInfo") &&
  443. uni.getStorageSync("userInfo").clientEnvironmentId, // *1 主环境-601环境 2 soll-索尔环境 3 tg-碳谷环境
  444. show: false,
  445. rowIt: [],
  446. paramList: [],
  447. paramObj: {},
  448. weight: 0,
  449. reportWeight: 0,
  450. resultObj: {},
  451. resultIdx: 0,
  452. deviceList: [],
  453. isQualifiedList: [
  454. {
  455. code: "1",
  456. name: "合格",
  457. },
  458. {
  459. code: "2",
  460. name: "不合格",
  461. },
  462. ],
  463. notTypeList: [
  464. {
  465. code: "1",
  466. name: "返工",
  467. },
  468. {
  469. code: "2",
  470. name: "返修",
  471. },
  472. {
  473. code: "3",
  474. name: "报废",
  475. },
  476. {
  477. code: "4",
  478. name: "降级使用",
  479. },
  480. {
  481. code: "5",
  482. name: "让步接收",
  483. },
  484. ],
  485. };
  486. },
  487. created() {
  488. // this.taskTypeName = this.item.currentTaskDiagram.taskTypeName;
  489. if (
  490. this.item.currentTaskDiagram &&
  491. this.item.currentTaskDiagram.isFirstTask
  492. ) {
  493. this.isFirstTask = this.item.currentTaskDiagram.isFirstTask;
  494. }
  495. console.log(this.item, "this.list");
  496. // this.getSteps();
  497. // this.getCompute();
  498. setTimeout(() => {
  499. this.handleInput();
  500. }, 800);
  501. },
  502. methods: {
  503. getSteps() {
  504. getTaskInstanceList(this.item.workOrderId).then((res) => {
  505. res.pop();
  506. this.stepsList = res;
  507. });
  508. },
  509. getCompute() {
  510. getComputeParam(
  511. this.item.workOrderId,
  512. this.item.currentTaskDiagram.taskId
  513. ).then((res) => {
  514. this.paramList = [];
  515. this.paramList = (res && res.paramList) || [];
  516. this.paramObj = res || {};
  517. });
  518. },
  519. handAddParam() {
  520. // billet: null,
  521. // density: null,
  522. // result: null,
  523. // PIPDensity: null,
  524. // volume: null,
  525. // coefficient: null
  526. if (this.isFirstTask == 1) {
  527. this.paramList.push({
  528. taskId: null,
  529. taskName: null,
  530. });
  531. }
  532. },
  533. getDelete(idx) {
  534. this.paramList.splice(idx, 1);
  535. },
  536. changeInp(item, index) {
  537. if (Number(item.billet) && Number(item.density)) {
  538. this.paramList[index].CVIWeight = (
  539. (Number(this.weight) / item.billet) *
  540. item.density
  541. ).toFixed(2);
  542. }
  543. },
  544. paramSave() {
  545. if (this.isFirstTask == 1 && this.paramList.length > 0) {
  546. let bol;
  547. let _i;
  548. bol = this.paramList.every((e, i) => {
  549. _i = i + 1;
  550. return e.taskId && e.billet && e.density;
  551. });
  552. if (!bol) {
  553. uni.showToast({
  554. title: `请完善第${_i}计算数据`,
  555. icon: "none",
  556. });
  557. return false;
  558. }
  559. if (this.paramList.length < 1) {
  560. uni.showToast({
  561. title: `请输入二个以上计算数据`,
  562. icon: "none",
  563. });
  564. return false;
  565. }
  566. }
  567. let param = {};
  568. if (!Object.prototype.hasOwnProperty.call(this.paramObj, "id")) {
  569. param = {
  570. paramList: this.paramList,
  571. workOrderId: this.item.workOrderId,
  572. taskId: this.item.currentTaskDiagram.taskId,
  573. };
  574. } else {
  575. this.paramObj.paramList = this.paramList;
  576. param = this.paramObj;
  577. }
  578. saveParam(param).then((res) => {
  579. uni.showToast({
  580. icon: "none",
  581. title: "操作成功",
  582. });
  583. this.getCompute();
  584. });
  585. },
  586. openNumerate(row, idx) {
  587. if (!row.extInfo.reportWeight) {
  588. uni.showToast({
  589. icon: "none",
  590. title: "请先输入报工重量",
  591. });
  592. return false;
  593. }
  594. this.weight = row.extInfo.weight;
  595. this.reportWeight = row.extInfo.reportWeight;
  596. this.resultIdx = idx;
  597. this.show = true;
  598. },
  599. handleInput() {
  600. let arr = JSON.parse(JSON.stringify(this.list));
  601. this.sumweight(arr);
  602. // this.sunTj();
  603. console.log("arr11111112222", arr);
  604. // console.log('this.list33333',this.list)
  605. },
  606. sumweight(arr) {
  607. let formedWeight = 0;
  608. let notFormedWeight = 0;
  609. arr.map((s, i) => {
  610. if (s.extInfo.reportWeight) {
  611. if (s.extInfo.isQualified == 1) {
  612. formedWeight += s.extInfo.reportWeight * 1;
  613. } else {
  614. notFormedWeight += s.extInfo.reportWeight * 1;
  615. }
  616. } else {
  617. s.extInfo.reportWeight = null;
  618. }
  619. });
  620. console.log("chulaiuwanlo", formedWeight, notFormedWeight);
  621. this.$emit("weightEmit", formedWeight, notFormedWeight);
  622. },
  623. cancel() {
  624. this.show = false;
  625. this.reportWeight = 0;
  626. this.weight = 0;
  627. },
  628. taskChange(e) {
  629. console.log(e);
  630. },
  631. getDelete2(idx) {
  632. uni.showModal({
  633. title: "删除",
  634. content: "是否确实删除此物料!",
  635. confirmText: "确认", //这块是确定按钮的文字
  636. success: (rr) => {
  637. if (rr.confirm) {
  638. this.list.splice(idx, 1);
  639. }
  640. },
  641. });
  642. },
  643. save() {
  644. if (this.isFirstTask == 1) {
  645. this.resultObj = {};
  646. if (Number(this.reportWeight) < Number(this.paramList[0].CVIWeight)) {
  647. this.resultObj = this.paramList[0];
  648. this.setDataSave();
  649. return false;
  650. }
  651. if (
  652. Number(this.reportWeight) >=
  653. this.paramList[this.paramList.length - 1].CVIWeight
  654. ) {
  655. this.resultObj = this.paramList[this.paramList.length - 1];
  656. this.setDataSave();
  657. return false;
  658. }
  659. for (let i = 1; i < this.paramList.length; i++) {
  660. console.log(i);
  661. console.log(
  662. 11,
  663. Number(this.paramList[i - 1].CVIWeight),
  664. Number(this.reportWeight)
  665. );
  666. if (
  667. Number(this.paramList[i - 1].CVIWeight) <
  668. Number(this.reportWeight) &&
  669. Number(this.reportWeight) < Number(this.paramList[i].CVIWeight)
  670. ) {
  671. this.resultObj = this.paramList[i];
  672. break;
  673. }
  674. }
  675. this.setDataSave();
  676. }
  677. },
  678. setDataSave() {
  679. this.$set(
  680. this.list[this.resultIdx].extInfo,
  681. "taskId",
  682. this.resultObj.taskId
  683. );
  684. this.$set(
  685. this.list[this.resultIdx].extInfo,
  686. "density",
  687. this.resultObj.density
  688. );
  689. this.$set(
  690. this.list[this.resultIdx].extInfo,
  691. "billet",
  692. this.resultObj.billet
  693. );
  694. this.$set(
  695. this.list[this.resultIdx].extInfo,
  696. "taskName",
  697. this.resultObj.taskName
  698. );
  699. this.cancel();
  700. },
  701. changeHeatNumber() {
  702. if (this.deviceList.length != 0) {
  703. this.deviceList.forEach((f) => {
  704. this.list.forEach((o) => {
  705. if (
  706. o.deviceId &&
  707. f.instanceId == o.deviceId &&
  708. this.deviceList.length > 1
  709. ) {
  710. o.extInfo.heatNumber = f.extInfo.heatNumber;
  711. o.deviceId = f.instanceId;
  712. this.$forceUpdate();
  713. } else if (this.deviceList.length == 1) {
  714. o.extInfo.heatNumber = this.deviceList[0].extInfo.heatNumber;
  715. o.deviceId = this.deviceList[0].instanceId;
  716. this.$forceUpdate();
  717. } else if (this.deviceList.length > 1) {
  718. o.extInfo.heatNumber = f.extInfo.heatNumber;
  719. o.deviceId = f.instanceId;
  720. this.$forceUpdate();
  721. }
  722. });
  723. });
  724. }
  725. },
  726. },
  727. };
  728. </script>
  729. <style lang="scss" scoped>
  730. .title_box {
  731. margin-top: 20rpx;
  732. .name {
  733. font-size: 28rpx;
  734. font-style: normal;
  735. font-weight: 400;
  736. color: $theme-color;
  737. padding-left: 20rpx;
  738. position: relative;
  739. &:before {
  740. position: absolute;
  741. content: "";
  742. left: 0rpx;
  743. top: 0rpx;
  744. bottom: 0rpx;
  745. width: 4rpx;
  746. height: 28rpx;
  747. background: $theme-color;
  748. margin: auto;
  749. }
  750. }
  751. .btn_box {
  752. .btn {
  753. padding: 0 18rpx;
  754. height: 50rpx;
  755. line-height: 50rpx;
  756. background: $theme-color;
  757. font-size: 26rpx;
  758. font-style: normal;
  759. font-weight: 400;
  760. font-size: 24rpx;
  761. color: #fff;
  762. border-radius: 4rpx;
  763. margin-left: 24rpx;
  764. }
  765. }
  766. }
  767. .material {
  768. margin-top: 16rpx;
  769. border: 1rpx solid transparent;
  770. .content_table {
  771. width: 100%;
  772. border: 2rpx solid $border-color;
  773. box-sizing: border-box;
  774. .item {
  775. display: flex;
  776. border-bottom: 2rpx solid $border-color;
  777. .lable {
  778. width: 132rpx;
  779. text-align: center;
  780. background-color: #f7f9fa;
  781. font-size: 26rpx;
  782. border-right: 2rpx solid $border-color;
  783. flex-shrink: 0;
  784. }
  785. .lable150 {
  786. width: 156rpx !important;
  787. font-size: 24rpx;
  788. }
  789. .lable190 {
  790. width: 200rpx !important;
  791. font-size: 24rpx;
  792. }
  793. .ww80 {
  794. width: 80rpx;
  795. }
  796. .content {
  797. width: 518rpx;
  798. min-height: 64rpx;
  799. font-size: 28rpx;
  800. line-height: 28rpx;
  801. font-style: normal;
  802. font-weight: 400;
  803. padding: 18rpx 8rpx;
  804. box-sizing: border-box;
  805. word-wrap: break-word;
  806. flex-grow: 1 !important;
  807. .unit {
  808. padding: 0 4rpx;
  809. font-size: 24rpx;
  810. color: #404446;
  811. }
  812. .penalize {
  813. width: 160rpx;
  814. line-height: 60rpx;
  815. background: $theme-color;
  816. font-size: 24rpx;
  817. text-align: center;
  818. color: #fff;
  819. }
  820. }
  821. .content_H {
  822. min-height: 92rpx;
  823. }
  824. .pd4 {
  825. padding: 4rpx 8rpx;
  826. }
  827. &:last-child {
  828. border-bottom: none;
  829. }
  830. }
  831. .ww55 {
  832. width: 55%;
  833. }
  834. .ww50 {
  835. width: 50%;
  836. }
  837. .ww45 {
  838. width: 45%;
  839. }
  840. .tag_box {
  841. padding: 2rpx 10rpx;
  842. margin-right: 12rpx;
  843. background: #e6a23c;
  844. font-size: 22rpx;
  845. color: #fff;
  846. border-radius: 4rpx;
  847. }
  848. }
  849. }
  850. .materialBor {
  851. border: 1rpx solid #157a2c;
  852. }
  853. .content_table2 {
  854. width: 100%;
  855. .row {
  856. width: 100%;
  857. .item {
  858. color: #404446;
  859. font-size: 28rpx;
  860. padding-left: 12rpx;
  861. }
  862. .color157 {
  863. color: $theme-color;
  864. }
  865. .ww30 {
  866. width: 30%;
  867. }
  868. .ww20 {
  869. width: 20%;
  870. }
  871. .ww15 {
  872. width: 15%;
  873. }
  874. .ww25 {
  875. width: 25%;
  876. }
  877. .ww50 {
  878. width: 50%;
  879. }
  880. .ww10 {
  881. width: 10%;
  882. }
  883. }
  884. .head {
  885. height: 64rpx;
  886. background: #f7f9fa;
  887. // border-top: 2rpx solid #E3E5E5;
  888. border-left: 2rpx solid #e3e5e5;
  889. box-sizing: border-box;
  890. .item {
  891. height: 64rpx;
  892. line-height: 64rpx;
  893. border-right: 2rpx solid #e3e5e5;
  894. box-sizing: border-box;
  895. font-size: 22rpx;
  896. }
  897. }
  898. .tr {
  899. border-top: 2rpx solid #e3e5e5;
  900. border-left: 2rpx solid #e3e5e5;
  901. .item {
  902. font-size: 24rpx;
  903. min-height: 74rpx;
  904. display: flex;
  905. align-items: center;
  906. border-right: 2rpx solid #e3e5e5;
  907. box-sizing: border-box;
  908. white-space: normal;
  909. word-break: break-all;
  910. }
  911. &:last-child {
  912. border-bottom: 2rpx solid #e3e5e5;
  913. }
  914. .numerate {
  915. font-size: 22rpx;
  916. color: $theme-color;
  917. }
  918. }
  919. }
  920. .content_num {
  921. display: flex;
  922. align-items: center;
  923. padding: 0 4rpx;
  924. font-size: 12px !important;
  925. /deep/ .uni-input-input {
  926. border: 2rpx solid #f0f8f2;
  927. background: #f0f8f2;
  928. color: $theme-color;
  929. }
  930. }
  931. .round {
  932. width: 32rpx;
  933. height: 32rpx;
  934. line-height: 30rpx;
  935. text-align: center;
  936. border-radius: 50%;
  937. background: $theme-color;
  938. font-size: 24rpx;
  939. font-style: normal;
  940. font-weight: 400;
  941. color: #fff;
  942. margin-right: 10rpx;
  943. }
  944. .popup_box {
  945. width: 94vw;
  946. padding: 16rpx 12rpx;
  947. box-sizing: border-box;
  948. }
  949. .operate_box {
  950. margin-top: 32rpx;
  951. padding: 10rpx 100rpx;
  952. /deep/ .u-button {
  953. width: 160rpx;
  954. }
  955. }
  956. .formula_box {
  957. font-size: 24rpx;
  958. font-style: normal;
  959. font-weight: 400;
  960. margin-top: 12rpx;
  961. }
  962. .reportWeight {
  963. font-size: 24rpx;
  964. font-style: normal;
  965. font-weight: 400;
  966. margin-top: 30rpx;
  967. text {
  968. color: $theme-color;
  969. }
  970. }
  971. </style>