semiProductJobBom.vue 27 KB

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