semiProductJobBom.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071
  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.extInfo.materielCode }}</view>
  105. <input
  106. class="uni-input"
  107. v-else
  108. v-model="it.extInfo.materielCode"
  109. />
  110. </view>
  111. </view>
  112. <view class="rx ww50">
  113. <view class="lable lable150 rx-cc">客户代号</view>
  114. <view class="content content_num">
  115. <view v-if="isDetails">{{ it.extInfo.clientCode }}</view>
  116. <input class="uni-input" v-else v-model="it.extInfo.clientCode" />
  117. </view>
  118. </view>
  119. </view>
  120. <view class="item rx-sc">
  121. <view class="rx ww50">
  122. <view class="lable lable150 rx-cc">刻码</view>
  123. <view class="content content_num">
  124. <view v-if="isDetails">{{ it.extInfo.engrave }}</view>
  125. <input class="uni-input" v-else v-model="it.extInfo.engrave" />
  126. </view>
  127. </view>
  128. <view class="rx ww50">
  129. <view class="lable lable150 rx-cc">序列号</view>
  130. <view class="content content_num">
  131. <view v-if="isDetails">{{ it.extInfo.productSequence }}</view>
  132. </view>
  133. </view>
  134. </view>
  135. <view class="item rx-sc">
  136. <view class="rx ww50">
  137. <view class="lable lable150 rx-cc">设备</view>
  138. <view class="content">
  139. <view>{{ it.deviceName || it.extInfo.deviceName }}</view>
  140. </view>
  141. </view>
  142. <view class="rx ww50">
  143. <view class="lable lable150 rx-cc">炉次号</view>
  144. <view class="content content_num">
  145. <view v-if="isDetails">{{ it.extInfo.heatNumber }}</view>
  146. <input class="uni-input" v-else v-model="it.extInfo.heatNumber" />
  147. </view>
  148. </view>
  149. </view>
  150. <view class="item rx-sc">
  151. <view class="rx ww50">
  152. <view class="lable lable150 rx-cc">位置</view>
  153. <view class="content content_num">
  154. <view v-if="isDetails">{{ it.extInfo.position }}</view>
  155. <input class="uni-input" v-else v-model="it.extInfo.position" />
  156. </view>
  157. </view>
  158. </view>
  159. <view class="item rx-sc">
  160. <view class="rx ww45">
  161. <view class="lable lable150 rx-cc">是否合格</view>
  162. <view class="content content_num">
  163. <zxz-uni-data-select
  164. :localdata="isQualifiedList"
  165. v-model="it.extInfo.isQualified"
  166. dataValue="code"
  167. format="{name}"
  168. dataKey="code"
  169. filterable
  170. :disabled="isDetails"
  171. :clear="false"
  172. @change="handleInput"
  173. ></zxz-uni-data-select>
  174. </view>
  175. </view>
  176. <!-- <view class="rx ww50" v-if="it.extInfo.isQualified && it.extInfo.isQualified == 2">
  177. <view class="lable lable150 rx-cc ">类型</view>
  178. <view class="content content_num">
  179. <zxz-uni-data-select :localdata="notTypeList" v-model="it.extInfo.notType" dataValue='code'
  180. format='{name}' dataKey="code" filterable :disabled="isDetails"
  181. :clear='false'></zxz-uni-data-select>
  182. </view>
  183. </view> -->
  184. </view>
  185. <!-- <view class="item rx-sc" v-if="it.extInfo.isQualified != 1 && it.extInfo.notType != 5 ">
  186. <view class="rx ">
  187. <view class="lable lable150 rx-cc ">原因</view>
  188. <view class="content content_num">
  189. <view v-if='isDetails'>{{it.extInfo.notReason }}</view>
  190. <input class="uni-input" v-else v-model="it.extInfo.notReason"></input>
  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. data() {
  428. return {
  429. taskTypeName: null,
  430. isFirstTask: null,
  431. stepsList: [],
  432. clientEnvironmentId:
  433. uni.getStorageSync("userInfo") &&
  434. uni.getStorageSync("userInfo").clientEnvironmentId, // *1 主环境-601环境 2 soll-索尔环境 3 tg-碳谷环境
  435. show: false,
  436. rowIt: [],
  437. paramList: [],
  438. paramObj: {},
  439. weight: 0,
  440. reportWeight: 0,
  441. resultObj: {},
  442. resultIdx: 0,
  443. deviceList: [],
  444. isQualifiedList: [
  445. {
  446. code: "1",
  447. name: "合格",
  448. },
  449. {
  450. code: "2",
  451. name: "不合格",
  452. },
  453. ],
  454. notTypeList: [
  455. {
  456. code: "1",
  457. name: "返工",
  458. },
  459. {
  460. code: "2",
  461. name: "返修",
  462. },
  463. {
  464. code: "3",
  465. name: "报废",
  466. },
  467. {
  468. code: "4",
  469. name: "降级使用",
  470. },
  471. {
  472. code: "5",
  473. name: "让步接收",
  474. },
  475. ],
  476. };
  477. },
  478. created() {
  479. this.taskTypeName = this.item.currentTaskDiagram.taskTypeName;
  480. this.isFirstTask = this.item.currentTaskDiagram.isFirstTask;
  481. this.getSteps();
  482. this.getCompute();
  483. setTimeout(() => {
  484. this.handleInput();
  485. }, 800);
  486. },
  487. methods: {
  488. getSteps() {
  489. getTaskInstanceList(this.item.workOrderId).then((res) => {
  490. res.pop();
  491. this.stepsList = res;
  492. });
  493. },
  494. getCompute() {
  495. getComputeParam(
  496. this.item.workOrderId,
  497. this.item.currentTaskDiagram.taskId
  498. ).then((res) => {
  499. this.paramList = [];
  500. this.paramList = (res && res.paramList) || [];
  501. this.paramObj = res || {};
  502. });
  503. },
  504. handAddParam() {
  505. // billet: null,
  506. // density: null,
  507. // result: null,
  508. // PIPDensity: null,
  509. // volume: null,
  510. // coefficient: null
  511. if (this.isFirstTask == 1) {
  512. this.paramList.push({
  513. taskId: null,
  514. taskName: null,
  515. });
  516. }
  517. },
  518. getDelete(idx) {
  519. this.paramList.splice(idx, 1);
  520. },
  521. changeInp(item, index) {
  522. if (Number(item.billet) && Number(item.density)) {
  523. this.paramList[index].CVIWeight = (
  524. (Number(this.weight) / item.billet) *
  525. item.density
  526. ).toFixed(2);
  527. }
  528. },
  529. paramSave() {
  530. if (this.isFirstTask == 1 && this.paramList.length > 0) {
  531. let bol;
  532. let _i;
  533. bol = this.paramList.every((e, i) => {
  534. _i = i + 1;
  535. return e.taskId && e.billet && e.density;
  536. });
  537. if (!bol) {
  538. uni.showToast({
  539. title: `请完善第${_i}计算数据`,
  540. icon: "none",
  541. });
  542. return false;
  543. }
  544. if (this.paramList.length < 1) {
  545. uni.showToast({
  546. title: `请输入二个以上计算数据`,
  547. icon: "none",
  548. });
  549. return false;
  550. }
  551. }
  552. let param = {};
  553. if (!Object.prototype.hasOwnProperty.call(this.paramObj, "id")) {
  554. param = {
  555. paramList: this.paramList,
  556. workOrderId: this.item.workOrderId,
  557. taskId: this.item.currentTaskDiagram.taskId,
  558. };
  559. } else {
  560. this.paramObj.paramList = this.paramList;
  561. param = this.paramObj;
  562. }
  563. saveParam(param).then((res) => {
  564. uni.showToast({
  565. icon: "none",
  566. title: "操作成功",
  567. });
  568. this.getCompute();
  569. });
  570. },
  571. openNumerate(row, idx) {
  572. if (!row.extInfo.reportWeight) {
  573. uni.showToast({
  574. icon: "none",
  575. title: "请先输入报工重量",
  576. });
  577. return false;
  578. }
  579. this.weight = row.extInfo.weight;
  580. this.reportWeight = row.extInfo.reportWeight;
  581. this.resultIdx = idx;
  582. this.show = true;
  583. },
  584. handleInput() {
  585. let arr = JSON.parse(JSON.stringify(this.list));
  586. this.sumweight(arr);
  587. // this.sunTj();
  588. console.log("arr11111112222", arr);
  589. // console.log('this.list33333',this.list)
  590. },
  591. sumweight(arr) {
  592. let formedWeight = 0;
  593. let notFormedWeight = 0;
  594. arr.map((s, i) => {
  595. if (s.extInfo.reportWeight) {
  596. if (s.extInfo.isQualified == 1) {
  597. formedWeight += s.extInfo.reportWeight * 1;
  598. } else {
  599. notFormedWeight += s.extInfo.reportWeight * 1;
  600. }
  601. } else {
  602. s.extInfo.reportWeight = null;
  603. }
  604. });
  605. console.log("chulaiuwanlo", formedWeight, notFormedWeight);
  606. this.$emit("weightEmit", formedWeight, notFormedWeight);
  607. },
  608. cancel() {
  609. this.show = false;
  610. this.reportWeight = 0;
  611. this.weight = 0;
  612. },
  613. taskChange(e) {
  614. console.log(e);
  615. },
  616. getDelete2(idx) {
  617. uni.showModal({
  618. title: "删除",
  619. content: "是否确实删除此物料!",
  620. confirmText: "确认", //这块是确定按钮的文字
  621. success: (rr) => {
  622. if (rr.confirm) {
  623. this.list.splice(idx, 1);
  624. }
  625. },
  626. });
  627. },
  628. save() {
  629. if (this.isFirstTask == 1) {
  630. this.resultObj = {};
  631. if (Number(this.reportWeight) < Number(this.paramList[0].CVIWeight)) {
  632. this.resultObj = this.paramList[0];
  633. this.setDataSave();
  634. return false;
  635. }
  636. if (
  637. Number(this.reportWeight) >=
  638. this.paramList[this.paramList.length - 1].CVIWeight
  639. ) {
  640. this.resultObj = this.paramList[this.paramList.length - 1];
  641. this.setDataSave();
  642. return false;
  643. }
  644. for (let i = 1; i < this.paramList.length; i++) {
  645. console.log(i);
  646. console.log(
  647. 11,
  648. Number(this.paramList[i - 1].CVIWeight),
  649. Number(this.reportWeight)
  650. );
  651. if (
  652. Number(this.paramList[i - 1].CVIWeight) <
  653. Number(this.reportWeight) &&
  654. Number(this.reportWeight) < Number(this.paramList[i].CVIWeight)
  655. ) {
  656. this.resultObj = this.paramList[i];
  657. break;
  658. }
  659. }
  660. this.setDataSave();
  661. }
  662. },
  663. setDataSave() {
  664. this.$set(
  665. this.list[this.resultIdx].extInfo,
  666. "taskId",
  667. this.resultObj.taskId
  668. );
  669. this.$set(
  670. this.list[this.resultIdx].extInfo,
  671. "density",
  672. this.resultObj.density
  673. );
  674. this.$set(
  675. this.list[this.resultIdx].extInfo,
  676. "billet",
  677. this.resultObj.billet
  678. );
  679. this.$set(
  680. this.list[this.resultIdx].extInfo,
  681. "taskName",
  682. this.resultObj.taskName
  683. );
  684. this.cancel();
  685. },
  686. changeHeatNumber() {
  687. console.log(this.deviceList);
  688. this.deviceList.forEach((f) => {
  689. this.list.forEach((o) => {
  690. if (
  691. o.deviceId &&
  692. f.instanceId == o.deviceId &&
  693. this.deviceList.length > 1
  694. ) {
  695. o.extInfo.heatNumber = f.extInfo.heatNumber;
  696. this.$forceUpdate();
  697. } else if (this.deviceList.length == 1) {
  698. o.extInfo.heatNumber = this.deviceList[0].extInfo.heatNumber;
  699. this.$forceUpdate();
  700. }
  701. });
  702. });
  703. },
  704. },
  705. };
  706. </script>
  707. <style lang="scss" scoped>
  708. .title_box {
  709. margin-top: 20rpx;
  710. .name {
  711. font-size: 28rpx;
  712. font-style: normal;
  713. font-weight: 400;
  714. color: $theme-color;
  715. padding-left: 20rpx;
  716. position: relative;
  717. &:before {
  718. position: absolute;
  719. content: "";
  720. left: 0rpx;
  721. top: 0rpx;
  722. bottom: 0rpx;
  723. width: 4rpx;
  724. height: 28rpx;
  725. background: $theme-color;
  726. margin: auto;
  727. }
  728. }
  729. .btn_box {
  730. .btn {
  731. padding: 0 18rpx;
  732. height: 50rpx;
  733. line-height: 50rpx;
  734. background: $theme-color;
  735. font-size: 26rpx;
  736. font-style: normal;
  737. font-weight: 400;
  738. font-size: 24rpx;
  739. color: #fff;
  740. border-radius: 4rpx;
  741. margin-left: 24rpx;
  742. }
  743. }
  744. }
  745. .material {
  746. margin-top: 16rpx;
  747. border: 1rpx solid transparent;
  748. .content_table {
  749. width: 100%;
  750. border: 2rpx solid $border-color;
  751. box-sizing: border-box;
  752. .item {
  753. display: flex;
  754. border-bottom: 2rpx solid $border-color;
  755. .lable {
  756. width: 132rpx;
  757. text-align: center;
  758. background-color: #f7f9fa;
  759. font-size: 26rpx;
  760. border-right: 2rpx solid $border-color;
  761. flex-shrink: 0;
  762. }
  763. .lable150 {
  764. width: 156rpx !important;
  765. font-size: 24rpx;
  766. }
  767. .lable190 {
  768. width: 200rpx !important;
  769. font-size: 24rpx;
  770. }
  771. .ww80 {
  772. width: 80rpx;
  773. }
  774. .content {
  775. width: 518rpx;
  776. min-height: 64rpx;
  777. font-size: 28rpx;
  778. line-height: 28rpx;
  779. font-style: normal;
  780. font-weight: 400;
  781. padding: 18rpx 8rpx;
  782. box-sizing: border-box;
  783. word-wrap: break-word;
  784. flex-grow: 1 !important;
  785. .unit {
  786. padding: 0 4rpx;
  787. font-size: 24rpx;
  788. color: #404446;
  789. }
  790. .penalize {
  791. width: 160rpx;
  792. line-height: 60rpx;
  793. background: $theme-color;
  794. font-size: 24rpx;
  795. text-align: center;
  796. color: #fff;
  797. }
  798. }
  799. .content_H {
  800. min-height: 92rpx;
  801. }
  802. .pd4 {
  803. padding: 4rpx 8rpx;
  804. }
  805. &:last-child {
  806. border-bottom: none;
  807. }
  808. }
  809. .ww55 {
  810. width: 55%;
  811. }
  812. .ww50 {
  813. width: 50%;
  814. }
  815. .ww45 {
  816. width: 45%;
  817. }
  818. .tag_box {
  819. padding: 2rpx 10rpx;
  820. margin-right: 12rpx;
  821. background: #e6a23c;
  822. font-size: 22rpx;
  823. color: #fff;
  824. border-radius: 4rpx;
  825. }
  826. }
  827. }
  828. .materialBor {
  829. border: 1rpx solid #157a2c;
  830. }
  831. .content_table2 {
  832. width: 100%;
  833. .row {
  834. width: 100%;
  835. .item {
  836. color: #404446;
  837. font-size: 28rpx;
  838. padding-left: 12rpx;
  839. }
  840. .color157 {
  841. color: $theme-color;
  842. }
  843. .ww30 {
  844. width: 30%;
  845. }
  846. .ww20 {
  847. width: 20%;
  848. }
  849. .ww15 {
  850. width: 15%;
  851. }
  852. .ww25 {
  853. width: 25%;
  854. }
  855. .ww50 {
  856. width: 50%;
  857. }
  858. .ww10 {
  859. width: 10%;
  860. }
  861. }
  862. .head {
  863. height: 64rpx;
  864. background: #f7f9fa;
  865. // border-top: 2rpx solid #E3E5E5;
  866. border-left: 2rpx solid #e3e5e5;
  867. box-sizing: border-box;
  868. .item {
  869. height: 64rpx;
  870. line-height: 64rpx;
  871. border-right: 2rpx solid #e3e5e5;
  872. box-sizing: border-box;
  873. font-size: 22rpx;
  874. }
  875. }
  876. .tr {
  877. border-top: 2rpx solid #e3e5e5;
  878. border-left: 2rpx solid #e3e5e5;
  879. .item {
  880. font-size: 24rpx;
  881. min-height: 74rpx;
  882. display: flex;
  883. align-items: center;
  884. border-right: 2rpx solid #e3e5e5;
  885. box-sizing: border-box;
  886. white-space: normal;
  887. word-break: break-all;
  888. }
  889. &:last-child {
  890. border-bottom: 2rpx solid #e3e5e5;
  891. }
  892. .numerate {
  893. font-size: 22rpx;
  894. color: $theme-color;
  895. }
  896. }
  897. }
  898. .content_num {
  899. display: flex;
  900. align-items: center;
  901. padding: 0 4rpx;
  902. /deep/ .uni-input-input {
  903. border: 2rpx solid #f0f8f2;
  904. background: #f0f8f2;
  905. color: $theme-color;
  906. }
  907. }
  908. .round {
  909. width: 32rpx;
  910. height: 32rpx;
  911. line-height: 30rpx;
  912. text-align: center;
  913. border-radius: 50%;
  914. background: $theme-color;
  915. font-size: 24rpx;
  916. font-style: normal;
  917. font-weight: 400;
  918. color: #fff;
  919. margin-right: 10rpx;
  920. }
  921. .popup_box {
  922. width: 94vw;
  923. padding: 16rpx 12rpx;
  924. box-sizing: border-box;
  925. }
  926. .operate_box {
  927. margin-top: 32rpx;
  928. padding: 10rpx 100rpx;
  929. /deep/ .u-button {
  930. width: 160rpx;
  931. }
  932. }
  933. .formula_box {
  934. font-size: 24rpx;
  935. font-style: normal;
  936. font-weight: 400;
  937. margin-top: 12rpx;
  938. }
  939. .reportWeight {
  940. font-size: 24rpx;
  941. font-style: normal;
  942. font-weight: 400;
  943. margin-top: 30rpx;
  944. text {
  945. color: $theme-color;
  946. }
  947. }
  948. </style>