details.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  1. <template>
  2. <div class="ele-body">
  3. <el-card shadow="never" class="tabs_box">
  4. <el-tabs v-model="activeName" type="card">
  5. <el-tab-pane label="基本信息" name="1">
  6. <el-form ref="form1" :model="form" label-width="94px">
  7. <el-row>
  8. <el-col :span="6">
  9. <el-form-item label="编码">
  10. <el-input :value="form.code" disabled />
  11. </el-form-item>
  12. </el-col>
  13. <el-col :span="6">
  14. <el-form-item label="产品名称">
  15. <el-input :value="form.productName" disabled />
  16. </el-form-item>
  17. </el-col>
  18. <el-col :span="6">
  19. <el-form-item label="产品编码">
  20. <el-input :value="form.productCode" disabled />
  21. </el-form-item>
  22. </el-col>
  23. <el-col :span="6">
  24. <el-form-item label="批次号">
  25. <el-input :value="form.batchNo" disabled />
  26. </el-form-item>
  27. </el-col>
  28. </el-row>
  29. <el-row>
  30. <el-col :span="6">
  31. <el-form-item label="型号">
  32. <el-input :value="form.modelType" disabled />
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="6">
  36. <el-form-item label="牌号">
  37. <el-input :value="form.brandNo" disabled />
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="6">
  41. <el-form-item label="计量类型">
  42. <el-input :value="form.inspectionStandardsName" disabled />
  43. </el-form-item>
  44. </el-col>
  45. <el-col
  46. :span="6"
  47. v-if="$store.state.user.info.clientEnvironmentId == '10'"
  48. >
  49. <el-form-item label="客户" prop="contactName">
  50. <el-input v-model="form.contactName" disabled></el-input>
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="6" v-if="form.assignType != 1">
  54. <el-form-item label="接收人部门">
  55. <el-input :value="form.groupName" disabled />
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="6" v-if="form.assignType != 1">
  59. <el-form-item label="接收人">
  60. <el-input :value="qualityName" disabled />
  61. </el-form-item>
  62. </el-col>
  63. <el-col :span="6">
  64. <el-form-item
  65. label="执行部门"
  66. prop="executeDeptName"
  67. v-if="form.qualityType != 2 && form.assignType != 1"
  68. >
  69. <el-input :value="form.executeDeptName" disabled />
  70. </el-form-item>
  71. </el-col>
  72. <el-col
  73. :span="6"
  74. v-if="form.qualityType == 2 || form.assignType == 1"
  75. >
  76. <el-form-item
  77. label="执行班组"
  78. prop="executeJobName"
  79. v-if="$route.query.name != '计划'"
  80. >
  81. <el-input :value="form.executeJobName" disabled />
  82. </el-form-item>
  83. <el-form-item
  84. label="执行班组"
  85. prop="teamName"
  86. v-if="$route.query.name == '计划'"
  87. >
  88. <el-input :value="form.teamName" disabled />
  89. </el-form-item>
  90. </el-col>
  91. <el-col :span="6">
  92. <el-form-item label="执行人" prop="executeUserName">
  93. <el-input :value="form.executeUserName" disabled />
  94. </el-form-item>
  95. </el-col>
  96. <el-col :span="6" v-if="form.assignType == 1">
  97. <el-form-item label="场站" prop="productLineId">
  98. <el-input v-model="form.productLineName" disabled></el-input>
  99. </el-form-item>
  100. </el-col>
  101. <el-col :span="6">
  102. <el-form-item label="检测时间">
  103. <el-input :value="qualityTime" disabled />
  104. </el-form-item>
  105. </el-col>
  106. <el-col :span="6">
  107. <el-form-item label="工时(h)">
  108. <el-input :value="form.hours" disabled />
  109. </el-form-item>
  110. </el-col>
  111. <el-col :span="6">
  112. <el-form-item label="合格率">
  113. <el-input :value="form.qualificationRate" disabled />
  114. </el-form-item>
  115. </el-col>
  116. <!-- </el-row> -->
  117. <!-- <el-row> -->
  118. <el-col :span="6">
  119. <el-form-item label="不合格率">
  120. <el-input :value="form.noQualificationRate" disabled />
  121. </el-form-item>
  122. </el-col>
  123. <el-col :span="6">
  124. <el-form-item label="检验方式">
  125. <el-input :value="form.qualityModeName" disabled />
  126. </el-form-item>
  127. </el-col>
  128. <el-col :span="6">
  129. <el-form-item label="检测结果">
  130. <el-input :value="form.qualityResultsName" disabled />
  131. </el-form-item>
  132. </el-col>
  133. <el-col :span="6">
  134. <el-form-item label="总重量">
  135. <el-input :value="form.totalWeight" disabled />
  136. </el-form-item>
  137. </el-col>
  138. <!-- </el-row> -->
  139. <!-- <el-row> -->
  140. <el-col :span="6">
  141. <el-form-item label="总数量">
  142. <el-input :value="form.total" disabled />
  143. </el-form-item>
  144. </el-col>
  145. <el-col :span="6">
  146. <el-form-item label="样品数">
  147. <el-input :value="form.sampleQuantity" disabled />
  148. </el-form-item>
  149. </el-col>
  150. <el-col :span="6">
  151. <el-form-item label="合格数">
  152. <el-input :value="form.qualifiedNumber" disabled />
  153. </el-form-item>
  154. </el-col>
  155. <el-col :span="6">
  156. <el-form-item label="不合格数">
  157. <el-input :value="form.noQualifiedNumber" disabled />
  158. </el-form-item>
  159. </el-col>
  160. <!-- </el-row> -->
  161. <!-- <el-row> -->
  162. <el-col :span="6">
  163. <el-form-item label="规格">
  164. <el-input :value="form.specification" disabled />
  165. </el-form-item>
  166. </el-col>
  167. <el-col :span="6" v-for="el in disposeTypeList" :key="el.id">
  168. <el-form-item :label="disposalName(el.disposeType)">
  169. <el-input :value="el.measureQuantity" disabled />
  170. </el-form-item>
  171. </el-col>
  172. <el-col :span="12">
  173. <el-form-item label="备注">
  174. <el-input :value="form.remark" disabled />
  175. </el-form-item>
  176. </el-col>
  177. <el-col :span="12">
  178. <el-form-item label="附件信息">
  179. <!-- <el-link @click="openFileModal" type="primary"
  180. >查看附件信息<i class="el-icon-view el-icon--right"></i>
  181. </el-link> -->
  182. <fileMain ref="fileMainRef" type="view" v-model="accessory" />
  183. </el-form-item>
  184. </el-col>
  185. <el-col :span="18" v-if="$route.query.name == '计划'">
  186. <el-form-item label="周期">
  187. <rule-cycle
  188. ref="cycleMultipleRef"
  189. :formData="form"
  190. :pageType="'detail'"
  191. :isBindPlan="true"
  192. />
  193. </el-form-item>
  194. </el-col>
  195. </el-row>
  196. </el-form>
  197. </el-tab-pane>
  198. <el-tab-pane label="样品信息" name="2">
  199. <el-form label-width="130px">
  200. <el-row>
  201. <el-col
  202. :span="6"
  203. v-if="
  204. showArrange == '1' ||
  205. (showArrange == '2' && form.qualityModeName != '抽检')
  206. "
  207. >
  208. <el-form-item label="样品合格数:">
  209. <el-input disabled v-model="form.sampleQualifiedNumber"
  210. ><template slot="append">{{
  211. sourceData2[0]?.measureUnit
  212. }}</template></el-input
  213. >
  214. </el-form-item>
  215. </el-col>
  216. <el-col
  217. :span="6"
  218. v-if="
  219. showArrange == '1' ||
  220. (showArrange == '2' && form.qualityModeName != '抽检')
  221. "
  222. >
  223. <el-form-item label="样品不合格数:">
  224. <el-input disabled v-model="form.sampleNoQualifiedNumber"
  225. ><template slot="append">{{
  226. sourceData2[0]?.measureUnit
  227. }}</template></el-input
  228. >
  229. </el-form-item>
  230. </el-col>
  231. <el-col :span="6">
  232. <el-form-item label="样品合格率:">
  233. <el-input v-model="form.sampleQualificationRate" disabled
  234. ><template slot="append">%</template></el-input
  235. >
  236. </el-form-item>
  237. </el-col>
  238. <el-col :span="6">
  239. <el-form-item label="样品不合格率:">
  240. <el-input v-model="form.sampleNoQualificationRate" disabled
  241. ><template slot="append">%</template></el-input
  242. >
  243. </el-form-item>
  244. </el-col>
  245. </el-row>
  246. <el-row>
  247. <el-col :span="6">
  248. <el-form-item label="样品类型:">
  249. <el-input
  250. disabled
  251. :value="sampletypeVal(form.conditionType)"
  252. />
  253. </el-form-item>
  254. </el-col>
  255. <el-col :span="6">
  256. <el-form-item label="样品数量:">
  257. <el-input disabled v-model="form.sampleQuantity"
  258. ><template slot="append">{{
  259. sourceData2[0]?.measureUnit
  260. }}</template></el-input
  261. >
  262. </el-form-item>
  263. </el-col>
  264. <el-col :span="6">
  265. <el-form-item label="样品重量:">
  266. <el-input disabled v-model="form.sampleWeight" />
  267. </el-form-item>
  268. </el-col>
  269. <el-col :span="6">
  270. <el-form-item label="记录方法:" prop="recordingMethod">
  271. <el-input
  272. disabled
  273. :value="
  274. recordingMethodList.find(
  275. (item) => item.value == form.recordingMethod
  276. )?.label
  277. "
  278. />
  279. </el-form-item>
  280. </el-col>
  281. </el-row>
  282. <el-row>
  283. <el-col :span="6">
  284. <el-form-item
  285. label="留样数(合格品):"
  286. prop="retainedSampleQuantity"
  287. >
  288. <el-input disabled :value="form.retainedSampleQuantity"
  289. ><template slot="append">{{
  290. sourceData2[0]?.measureUnit
  291. }}</template></el-input
  292. >
  293. </el-form-item>
  294. </el-col>
  295. <el-col :span="6">
  296. <el-form-item
  297. label="留样数(不合格品):"
  298. prop="retainedSampleUnqualified"
  299. >
  300. <el-input disabled :value="form.retainedSampleUnqualified"
  301. ><template slot="append">{{
  302. sourceData2[0]?.measureUnit
  303. }}</template></el-input
  304. >
  305. </el-form-item>
  306. </el-col>
  307. <el-col :span="6">
  308. <el-form-item label="损耗数(合格品):" prop="lossNumber">
  309. <el-input disabled :value="form.lossNumber"
  310. ><template slot="append">{{
  311. sourceData2[0]?.measureUnit
  312. }}</template></el-input
  313. >
  314. </el-form-item>
  315. </el-col>
  316. <el-col :span="6">
  317. <el-form-item
  318. label="损耗数(不合格品):"
  319. prop="lossNumberUnqualified"
  320. >
  321. <el-input disabled :value="form.lossNumberUnqualified"
  322. ><template slot="append">{{
  323. sourceData2[0]?.measureUnit
  324. }}</template></el-input
  325. >
  326. </el-form-item>
  327. </el-col>
  328. </el-row>
  329. </el-form>
  330. </el-tab-pane>
  331. <el-tab-pane label="检测内容" name="3">
  332. <el-tabs v-model="inspectionName">
  333. <el-tab-pane label="来源清单" name="1">
  334. <ele-pro-table
  335. :columns="tableColumns1"
  336. :datasource="sourceData1"
  337. :initLoad="false"
  338. :needPage="false"
  339. :toolkit="[]"
  340. height="calc(100vh - 330px)"
  341. >
  342. </ele-pro-table>
  343. </el-tab-pane>
  344. <el-tab-pane label="样品清单" name="2">
  345. <ele-pro-table
  346. :columns="tableColumns2"
  347. :datasource="sourceData2"
  348. :initLoad="false"
  349. :needPage="false"
  350. :toolkit="[]"
  351. height="calc(100vh - 330px)"
  352. >
  353. <template v-slot:categoryCode="{ row, $index }">
  354. <el-link
  355. type="primary"
  356. :underline="false"
  357. @click="handleDetail($index, row, 'detail')"
  358. >
  359. {{ row.categoryCode }}
  360. </el-link>
  361. </template>
  362. <template v-slot:attachmentUrl="{ row, $index }">
  363. <fileMain type="view" v-model="row.attachmentUrl"> </fileMain>
  364. </template> </ele-pro-table
  365. ></el-tab-pane>
  366. <el-tab-pane label="检测方案" name="3">
  367. <ele-pro-table
  368. :columns="tableColumns3"
  369. :datasource="sourceData3"
  370. :initLoad="false"
  371. :needPage="false"
  372. :toolkit="[]"
  373. height="calc(100vh - 330px)"
  374. >
  375. <template v-slot:experimentCode="scope">
  376. <el-link
  377. type="primary"
  378. :underline="false"
  379. @click="experimentReport(scope.row)"
  380. >{{ scope.row.experimentCode }}
  381. </el-link>
  382. </template>
  383. <template v-slot:useTools="{ row }">
  384. <toolButtom
  385. v-model="row.useTools"
  386. :type="'detail'"
  387. :sList="row.toolList"
  388. />
  389. </template>
  390. <template v-slot:defaultValue="{ row }">
  391. <div style="display: flex; justify-content: center">
  392. <span v-if="row.textType != 8">{{ row.symbol }}</span>
  393. <span v-if="row.textType == 3">
  394. {{ row.minValue }}-{{ row.maxValue }}
  395. </span>
  396. <span v-else-if="row.textType == 8">
  397. 标准值:{{ row.defaultValue
  398. }}{{ row.unitName || '' }} 下限:{{ row.minValue || 0
  399. }}{{ row.unitName || '' }} 上限:{{ row.maxValue || 0
  400. }}{{ row.unitName || '' }}
  401. </span>
  402. <span v-else>
  403. <span>{{ row.defaultValue }}</span>
  404. </span>
  405. <span v-if="row.textType != 8">
  406. {{ row.unitName }}
  407. </span>
  408. </div>
  409. </template>
  410. </ele-pro-table></el-tab-pane
  411. >
  412. <el-tab-pane label="检测任务单" name="4">
  413. <ele-pro-table
  414. ref="table"
  415. :columns="taskColumns"
  416. :datasource="taskMonadList"
  417. :needPage="false"
  418. >
  419. <template v-slot:code="{ row }">
  420. <el-link
  421. type="primary"
  422. :underline="false"
  423. @click="report(row, 'inspectionProjectTask')"
  424. >{{ row.code }}</el-link
  425. >
  426. </template>
  427. </ele-pro-table>
  428. </el-tab-pane>
  429. <el-tab-pane label="检测请托单" name="5">
  430. <ele-pro-table
  431. ref="table"
  432. :columns="entrustColumns"
  433. :datasource="requestEntrustList"
  434. :needPage="false"
  435. >
  436. <template v-slot:code="{ row }">
  437. <el-link
  438. type="primary"
  439. :underline="false"
  440. @click="report(row, 'inspectionProjectRequest')"
  441. >{{ row.code }}</el-link
  442. >
  443. </template>
  444. </ele-pro-table>
  445. </el-tab-pane>
  446. </el-tabs>
  447. </el-tab-pane>
  448. <el-tab-pane
  449. label="样品处置"
  450. name="4"
  451. v-show="form.status == 1 && activeName == '4'"
  452. >
  453. <ele-pro-table
  454. :columns="tableColumns4"
  455. :datasource="sourceData4"
  456. :initLoad="false"
  457. :needPage="false"
  458. :toolkit="[]"
  459. height="calc(100vh - 260px)"
  460. >
  461. </ele-pro-table>
  462. </el-tab-pane>
  463. <el-tab-pane label="不良品处置" name="5">
  464. <ele-pro-table
  465. :columns="tableColumns5"
  466. :datasource="sourceData5"
  467. :initLoad="false"
  468. :needPage="false"
  469. :toolkit="[]"
  470. height="calc(100vh - 260px)"
  471. >
  472. </ele-pro-table>
  473. </el-tab-pane>
  474. <el-tab-pane label="报工详情" name="6">
  475. <inspectionProjectReportView
  476. v-if="form.recordingMethod == 1"
  477. ref="inspectionProjectReportViewRef"
  478. ></inspectionProjectReportView>
  479. <sampleListView v-else ref="sampleListViewRef"></sampleListView>
  480. </el-tab-pane>
  481. </el-tabs>
  482. <el-button class="go_back" @click="goBack">返回</el-button>
  483. </el-card>
  484. <sampleListDialog ref="detailRef"></sampleListDialog>
  485. <experimentReport ref="experimentReport"></experimentReport>
  486. <sampleReport ref="sampleReportRef" @reload="reload"></sampleReport>
  487. <!-- 编辑弹窗 -->
  488. <inspectionProjectReport
  489. ref="inspectionProjectReportRef"
  490. @reload="reload"
  491. />
  492. </div>
  493. </template>
  494. <script>
  495. import { getDetailById } from '@/api/inspectionWork/index';
  496. import { planDetails } from '@/api/inspectionPlan/index';
  497. import { getByCode } from '@/api/system/dictionary-data';
  498. import detailMixins from './mixins/detailMixins';
  499. import { parameterGetByCode } from '@/api/main/index';
  500. import { getUserPage } from '@/api/system/organization';
  501. import { recordingMethodList } from '@/utils/util.js';
  502. import sampleListDialog from './components/sampleListDialog.vue';
  503. import sampleListView from './components/sampleListView.vue';
  504. import experimentReport from './components/experimentReport.vue';
  505. import inspectionProjectReportView from './components/inspectionProjectReportView.vue';
  506. import inspectionProjectReport from '@/views/inspectionWork/components/inspectionProjectReport.vue';
  507. import sampleReport from '@/views/inspectionWork/components/sampleReport.vue';
  508. import { getById as getByIdProjectTask } from '@/api/inspectionProjectTask';
  509. import { getById as getByIdProjectRequest } from '@/api/inspectionProjectRequest';
  510. import RuleCycle from '@/components/rule-cycle.vue';
  511. import toolButtom from './components/toolButtom.vue';
  512. export default {
  513. mixins: [detailMixins],
  514. components: {
  515. sampleListDialog,
  516. experimentReport,
  517. inspectionProjectReport,
  518. inspectionProjectReportView,
  519. sampleReport,
  520. sampleListView,
  521. RuleCycle,
  522. toolButtom
  523. },
  524. data() {
  525. return {
  526. activeName: '1',
  527. inspectionName: '1',
  528. recordingMethodList,
  529. sourceData1: [],
  530. sourceData2: [],
  531. sourceData3: [],
  532. sourceData4: [],
  533. sourceData5: [],
  534. taskMonadList: [],
  535. requestEntrustList: [],
  536. disposeTypeList: [],
  537. form: {},
  538. showArrange: '0',
  539. executorList: [],
  540. // 文件
  541. accessory: []
  542. };
  543. },
  544. computed: {
  545. sampletypeVal() {
  546. return (row) => {
  547. if (row == 1) return '整样';
  548. if (row == 2) return '小样';
  549. return '';
  550. };
  551. },
  552. disposalName() {
  553. return (type) => {
  554. return this.disposeTypeMap[type] || '';
  555. };
  556. },
  557. qualityName() {
  558. const list = this.form.qualityWorkOrderDetailVO;
  559. return this.$route.query.name === '计划'
  560. ? list?.qualityName || ''
  561. : this.form.qualityName;
  562. },
  563. qualityTime() {
  564. const list = this.form.qualityWorkOrderDetailVO;
  565. return this.$route.query.name === '计划'
  566. ? list?.qualityTime || ''
  567. : this.form.qualityTime;
  568. }
  569. },
  570. created() {
  571. this.getData();
  572. // 是否展示合格不合格
  573. this.getCode();
  574. },
  575. methods: {
  576. getCode() {
  577. parameterGetByCode({
  578. code: 'qms_show_arrange'
  579. }).then((res) => {
  580. if (res) {
  581. this.showArrange = res.value || '1';
  582. // this.time_calc_code = res.value || '0';
  583. }
  584. });
  585. },
  586. /* 报工 */
  587. async report(row, type) {
  588. let api =
  589. type == 'inspectionProjectTask'
  590. ? getByIdProjectTask
  591. : getByIdProjectRequest;
  592. const res = await api(row.id);
  593. if (row.recordingMethod == 1) {
  594. this.$refs.inspectionProjectReportRef.open(
  595. {
  596. workData: {
  597. ...res.data,
  598. measureUnit: row.measureUnit,
  599. workSampleCount: res.sampleTotal
  600. },
  601. list: res.data.templateList
  602. },
  603. 'detail',
  604. type
  605. );
  606. } else {
  607. this.$refs.sampleReportRef.open(res.data, 'detail', type);
  608. }
  609. },
  610. async getUserList(params) {
  611. if (!params.groupId) return;
  612. try {
  613. let data = { pageNum: 1, size: -1 };
  614. // 如果传了参数就是获取巡点检人员数据
  615. if (params) {
  616. data = Object.assign(data, params);
  617. }
  618. const res = await getUserPage(data);
  619. console.log(res, 'resres');
  620. this.executorList = res.list;
  621. } catch (error) {}
  622. },
  623. handleDetail(index, row, type) {
  624. // if (!this.sampleList[index] || !this.schemeList) {
  625. // return;
  626. // }
  627. // const selectedData = [];
  628. // selectedData.push(this.sampleList[index]);
  629. // if (this.schemeList.length != 0) {
  630. // this.sampleList.forEach((item) => {
  631. // if (item.qualitySampleTemplateList.length == 0) {
  632. // item.qualitySampleTemplateList.push(...this.schemeList);
  633. // }
  634. // });
  635. // }
  636. // console.log(selectedData, 'selectedData');
  637. this.$refs.detailRef.openDia(
  638. index,
  639. row,
  640. type,
  641. this.sourceData2,
  642. null,
  643. this.sourceData2.useTools
  644. );
  645. },
  646. async getData() {
  647. let id = this.$route.query.id;
  648. let name = this.$route.query.name;
  649. try {
  650. const api = name == '计划' ? planDetails : getDetailById;
  651. const result = await api(id);
  652. console.log(result, 'result');
  653. await this.getUserList({ groupId: result.data.groupId });
  654. const res = result.data;
  655. console.log('res~~~~', res.qualityWorkOrderDetailVO);
  656. const qualityName = [];
  657. if (res.qualityId && this.executorList.length != 0) {
  658. res.qualityId.split(',').forEach((item) => {
  659. this.executorList.forEach((el) => {
  660. if (el.id == item) {
  661. qualityName.push(el.name);
  662. }
  663. });
  664. });
  665. }
  666. if (qualityName.length != 0) {
  667. res.qualityName = qualityName.join(',');
  668. }
  669. let obj = {};
  670. this.infoList.map((item) => {
  671. obj[item.prop] = res[item.prop];
  672. });
  673. this.form = res;
  674. this.form.status = res.status;
  675. this.form.qualityWorkOrderDetailVO = res.qualityWorkOrderDetailVO;
  676. this.accessory = res.accessory;
  677. console.log(this.form, 'result');
  678. if (name == '计划') {
  679. this.form.total = result.data.productNumber || 0;
  680. this.$nextTick(() => {
  681. this.$refs.cycleMultipleRef?.setRecordRulesCycleList(
  682. this.form.cycleList
  683. );
  684. });
  685. }
  686. this.$nextTick(() => {
  687. if (this.form.recordingMethod == 1) {
  688. this.$refs.inspectionProjectReportViewRef.init({
  689. workData: this.form,
  690. list: this.form.templateList
  691. });
  692. } else {
  693. this.$refs.sampleListViewRef.init(this.form.qualitySampleList);
  694. }
  695. });
  696. this.fieldAssign(res, obj);
  697. this.sampleInfo(res);
  698. console.log('this.form~~~~', this.form);
  699. } catch (err) {
  700. console.log(err, 'err');
  701. }
  702. },
  703. sampleInfo(res) {
  704. this.$set(
  705. this.form,
  706. 'sampleQualifiedNumber',
  707. res.sampleQualifiedNumber
  708. );
  709. this.$set(
  710. this.form,
  711. 'sampleNoQualifiedNumber',
  712. res.sampleNoQualifiedNumber
  713. );
  714. this.$set(
  715. this.form,
  716. 'sampleQualificationRate',
  717. res.sampleQualificationRate
  718. );
  719. this.$set(
  720. this.form,
  721. 'sampleNoQualificationRate',
  722. res.sampleNoQualificationRate
  723. );
  724. this.$set(this.form, 'conditionType', res.conditionType);
  725. this.$set(this.form, 'sampleQuantity', res.sampleQuantity);
  726. this.$set(this.form, 'sampleWeight', res.sampleWeight);
  727. this.$set(this.form, 'qualifiedNumber', res.qualifiedNumber);
  728. this.$set(this.form, 'noQualifiedNumber', res.sampleNoQualifiedNumber);
  729. this.$set(this.form, 'remark', res.remark);
  730. this.sourceData3 = res.templateList || [];
  731. this.sourceData1 = res.qualityInventoryList || [];
  732. this.taskMonadList = res.taskMonadList || [];
  733. this.requestEntrustList = res.requestEntrustList || [];
  734. let name = this.$route.query.name;
  735. // const result = name == '计划' ? res.qualityWorkOrderDetailVO : res;
  736. let result = {};
  737. if (name == '计划') {
  738. this.sourceData4 = res.sampleList || [];
  739. this.sourceData2 = res.sampleList || [];
  740. result = res.qualityWorkOrderDetailVO
  741. ? res.qualityWorkOrderDetailVO
  742. : {};
  743. } else {
  744. result = res;
  745. this.sourceData4 = res.qualitySampleList || [];
  746. this.sourceData2 = res.qualitySampleList || [];
  747. }
  748. this.sourceData5 = result.unqualifiedDetail || [];
  749. this.disposeTypeList = result.disposeTypeList || [];
  750. },
  751. async fieldAssign(res, obj) {
  752. if (res.qualityMode == 1) {
  753. obj.qualityModeName = '全检';
  754. } else if (res.qualityMode == 2) {
  755. obj.qualityModeName = '抽检';
  756. } else {
  757. obj.qualityModeName = '';
  758. }
  759. if (res.qualityResults == 1) {
  760. obj.qualityResultsName = '合格';
  761. } else if (res.qualityResults == 2) {
  762. obj.qualityResultsName = '不合格';
  763. } else {
  764. obj.qualityResultsName = '';
  765. }
  766. let val = res.inspectionStandards;
  767. obj.inspectionStandardsName = await this.getDictListIqoCode(val);
  768. },
  769. async getDictListIqoCode(value) {
  770. let { data: res } = await getByCode('measurement_type');
  771. if (value > 0) {
  772. return res[value - 1][value];
  773. }
  774. return '';
  775. },
  776. experimentReport(row) {
  777. this.$refs.experimentReport.open(
  778. {
  779. ...row,
  780. batchNo: this.form.batchNo,
  781. qualityWorkOrderId: this.form.id
  782. },
  783. 'detail'
  784. );
  785. },
  786. goBack() {
  787. let path = this.$route.query.path || '';
  788. console.log(path, 'path');
  789. if (path) {
  790. this.$router.push({ path: path });
  791. } else {
  792. this.$router.go(-1);
  793. }
  794. },
  795. openFileModal() {
  796. this.$refs.fileMainRef.open(this.accessory, 'view');
  797. }
  798. }
  799. };
  800. </script>
  801. <style lang="scss" scoped>
  802. .ele-body {
  803. width: 100%;
  804. height: calc(100% - 32px);
  805. box-sizing: border-box;
  806. .el-card {
  807. width: 100%;
  808. height: 100%;
  809. }
  810. }
  811. ::v-deep .el-tabs__content {
  812. margin-top: 16px;
  813. }
  814. .tabs_box {
  815. position: relative;
  816. .go_back {
  817. position: absolute;
  818. right: 25px;
  819. top: 19px;
  820. z-index: 99;
  821. }
  822. }
  823. </style>