show.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578
  1. <template>
  2. <div class="bgColor" @click="close" v-if="modelValue">
  3. <div class="body" @click.stop>
  4. <div class="header">
  5. <div class="text">详情查看</div>
  6. <div class="delete">
  7. <el-button
  8. style="margin-right: 10px"
  9. type="primary"
  10. size="small"
  11. class="btn"
  12. v-print="'#print'"
  13. >打印</el-button
  14. >
  15. <span style="padding: 20px; cursor: pointer" @click="close">X</span>
  16. </div>
  17. </div>
  18. <div class="box">
  19. <el-scrollbar>
  20. <div id="print">
  21. <div class="tableInfo">
  22. <div class="title" style="text-align: center">
  23. 不合格品(质量问题)分析评审处置表
  24. </div>
  25. <div class="info">
  26. <div class="text">表号:JLB-14-1</div>
  27. </div>
  28. <table>
  29. <thead></thead>
  30. <tbody>
  31. <tr>
  32. <td class="titlesmall">产品名称以及型号</td>
  33. <td class="titleVal">
  34. {{ tableData.materialName }}&nbsp;{{
  35. tableData.materialModel
  36. }}
  37. </td>
  38. <td class="titlesmall">工单号</td>
  39. <td class="titleVal">{{ tableData.workOrderCode }}</td>
  40. <td class="titlesmall">数量</td>
  41. <td class="titleVal">
  42. {{ tableData.num ? tableData.num : "/" }}
  43. </td>
  44. </tr>
  45. <tr>
  46. <td class="titlesmall">管号</td>
  47. <td colspan="5">
  48. {{ tableData.seqs ? tableData.seqs : "/" }}
  49. </td>
  50. </tr>
  51. <tr>
  52. <td class="titlesmall">发生单位或地点</td>
  53. <td class="titleVal">
  54. {{ tableData.address ? tableData.address : "/" }}
  55. </td>
  56. <td class="titlesmall">发生阶段</td>
  57. <td class="titleVal">
  58. {{ tableData.stage ? tableData.stage : "/" }}
  59. </td>
  60. <td class="titlesmall">发生时间</td>
  61. <td class="titleVal">
  62. {{
  63. tableData.remark1.time ? tableData.remark1.time : "/"
  64. }}
  65. </td>
  66. </tr>
  67. <tr>
  68. <td class="titlesmall">审理级别</td>
  69. <td colspan="5">
  70. <form id="checkboxForm1">
  71. <label>
  72. <input
  73. type="checkbox"
  74. disabled
  75. value="1"
  76. name="options1"
  77. />
  78. 一级 </label
  79. ><br />
  80. <label>
  81. <input
  82. type="checkbox"
  83. disabled
  84. value="2"
  85. name="options1"
  86. />
  87. 二级 </label
  88. ><br />
  89. </form>
  90. </td>
  91. </tr>
  92. <tr>
  93. <td colspan="6">
  94. <div class="sale-box">
  95. <div class="sale-title">
  96. 不合格现象(质量问题)描述:
  97. </div>
  98. <div class="sale-content">
  99. {{
  100. tableData.remark2.content
  101. ? tableData.remark2.content
  102. : "/"
  103. }}
  104. </div>
  105. <div class="sale-bottom">
  106. <div class="desc">
  107. 填表人:
  108. {{
  109. tableData.remark1.user1
  110. ? tableData.remark1.user1
  111. : "/"
  112. }}
  113. </div>
  114. <div class="desc">
  115. 日期:
  116. {{
  117. tableData.remark1.time
  118. ? tableData.remark1.time
  119. : "/"
  120. }}
  121. </div>
  122. <div class="desc">
  123. 检验人员:
  124. {{
  125. tableData.remark2.user2
  126. ? tableData.remark2.user2
  127. : "/"
  128. }}
  129. </div>
  130. <div class="desc">
  131. 日期:
  132. {{
  133. tableData.remark2.time
  134. ? tableData.remark2.time
  135. : "/"
  136. }}
  137. </div>
  138. </div>
  139. </div>
  140. </td>
  141. </tr>
  142. <tr>
  143. <td colspan="6">
  144. <div class="sale-box">
  145. <div class="sale-title">原因分析:</div>
  146. <div class="sale-content">
  147. {{
  148. tableData.remark3.content
  149. ? tableData.remark3.content
  150. : "/"
  151. }}
  152. <div
  153. class="noPrint"
  154. v-if="
  155. undefined != tableData.remark3.srcList &&
  156. null != tableData.remark3.srcList &&
  157. tableData.remark3.srcList.length > 0
  158. "
  159. >
  160. <div>附件:</div>
  161. <div
  162. v-for="(item, index) in tableData.remark3
  163. .fileNameList"
  164. :key="index"
  165. >
  166. {{ item }}
  167. <a :href="tableData.remark3.srcList[index]"
  168. ><el-button type="primary" round size="small"
  169. >下载</el-button
  170. >
  171. </a>
  172. </div>
  173. </div>
  174. </div>
  175. <div class="sale-bottom">
  176. <div class="desc">
  177. 分析人:
  178. {{
  179. tableData.remark3.user3
  180. ? tableData.remark3.user3
  181. : "/"
  182. }}
  183. </div>
  184. <div class="desc">
  185. 日期:
  186. {{
  187. tableData.remark3.time
  188. ? tableData.remark3.time
  189. : "/"
  190. }}
  191. </div>
  192. </div>
  193. </div>
  194. </td>
  195. </tr>
  196. <tr>
  197. <td colspan="6">
  198. <div class="sale-box">
  199. <div class="sale-title">是否有纠正措施:</div>
  200. <div class="sale-title">
  201. <div style="display: flex; align-items: center">
  202. <div>
  203. <form id="checkboxForm2">
  204. <label>
  205. <input
  206. type="checkbox"
  207. value="0"
  208. disabled
  209. name="options2"
  210. />
  211. 否 </label
  212. ><br />
  213. <label>
  214. <input
  215. type="checkbox"
  216. disabled
  217. value="1"
  218. name="options2"
  219. />
  220. 是 </label
  221. ><br />
  222. </form>
  223. </div>
  224. <div style="margin-left: 20px">
  225. 纠正措施通知单号:
  226. </div>
  227. <span
  228. style="
  229. width: 200px;
  230. height: 100%;
  231. border-bottom: 1px solid black;
  232. text-align: center;
  233. "
  234. >
  235. {{
  236. tableData.remark4.resNum
  237. ? tableData.remark4.resNum
  238. : "/"
  239. }}</span
  240. >
  241. </div>
  242. </div>
  243. <div class="sale-content">
  244. {{
  245. tableData.remark4.content
  246. ? tableData.remark4.content
  247. : "/"
  248. }}
  249. <div
  250. class="noPrint"
  251. v-if="
  252. undefined != tableData.remark4.srcList &&
  253. null != tableData.remark4.srcList &&
  254. tableData.remark4.srcList.length > 0
  255. "
  256. >
  257. <div>附件:</div>
  258. <div
  259. v-for="(item, index) in tableData.remark4
  260. .fileNameList"
  261. :key="index"
  262. >
  263. {{ item }}
  264. <a :href="tableData.remark4.srcList[index]"
  265. ><el-button type="primary" round size="small"
  266. >下载</el-button
  267. >
  268. </a>
  269. </div>
  270. </div>
  271. </div>
  272. <div class="sale-bottom">
  273. <div class="desc">
  274. 分析人:
  275. {{
  276. tableData.remark4.user4
  277. ? tableData.remark4.user4
  278. : "/"
  279. }}
  280. </div>
  281. <div class="desc">
  282. 日期:
  283. {{
  284. tableData.remark4.time
  285. ? tableData.remark4.time
  286. : "/"
  287. }}
  288. </div>
  289. </div>
  290. </div>
  291. </td>
  292. </tr>
  293. <tr>
  294. <td colspan="6">
  295. <div class="sale-box">
  296. <div class="sale-title">采取的措施:</div>
  297. <div class="sale-content">
  298. {{
  299. tableData.remark5.content
  300. ? tableData.remark5.content
  301. : "/"
  302. }}
  303. <div
  304. class="noPrint"
  305. v-if="
  306. undefined != tableData.remark5.srcList &&
  307. null != tableData.remark5.srcList &&
  308. tableData.remark5.srcList.length > 0
  309. "
  310. >
  311. <div>附件:</div>
  312. <div
  313. v-for="(item, index) in tableData.remark5
  314. .fileNameList"
  315. :key="index"
  316. >
  317. {{ item }}
  318. <a :href="tableData.remark5.srcList[index]"
  319. ><el-button type="primary" round size="small"
  320. >下载</el-button
  321. >
  322. </a>
  323. </div>
  324. </div>
  325. </div>
  326. <div class="sale-bottom">
  327. <div class="desc">
  328. 责任部门负责人:
  329. {{
  330. tableData.remark5.user5
  331. ? tableData.remark5.user5
  332. : "/"
  333. }}
  334. </div>
  335. <div class="desc">
  336. 日期:
  337. {{
  338. tableData.remark5.time
  339. ? tableData.remark5.time
  340. : "/"
  341. }}
  342. </div>
  343. </div>
  344. </div>
  345. </td>
  346. </tr>
  347. <tr>
  348. <td colspan="6">
  349. <div class="sale-box">
  350. <div class="sale-title">
  351. 不合格品评审(审理)处置意见:
  352. </div>
  353. <div class="sale-content">
  354. {{
  355. tableData.remark6.content
  356. ? tableData.remark6.content
  357. : "/"
  358. }}
  359. </div>
  360. <div class="sale-bottom">
  361. <div class="desc">
  362. 签字:{{
  363. tableData.remark6.user6
  364. ? tableData.remark6.user6
  365. : "/"
  366. }}
  367. </div>
  368. <div class="desc">
  369. 日期:
  370. {{
  371. tableData.remark6.time
  372. ? tableData.remark6.time
  373. : "/"
  374. }}
  375. </div>
  376. </div>
  377. </div>
  378. </td>
  379. </tr>
  380. <tr>
  381. <td colspan="6">
  382. <div class="sale-box">
  383. <div class="sale-title">组长(或分管领导)审批意见</div>
  384. <div class="sale-content">
  385. {{
  386. tableData.remark7.content
  387. ? tableData.remark7.content
  388. : "/"
  389. }}
  390. </div>
  391. <div class="sale-bottom">
  392. <div class="desc">
  393. 签字:{{
  394. tableData.remark7.user7
  395. ? tableData.remark7.user7
  396. : "/"
  397. }}
  398. </div>
  399. <div class="desc">
  400. 日期:
  401. {{
  402. tableData.remark7.time
  403. ? tableData.remark7.time
  404. : "/"
  405. }}
  406. </div>
  407. </div>
  408. </div>
  409. </td>
  410. </tr>
  411. </tbody>
  412. </table>
  413. </div>
  414. </div>
  415. </el-scrollbar>
  416. </div>
  417. </div>
  418. </div>
  419. </template>
  420. <script setup>
  421. const props = defineProps({
  422. modelValue: {
  423. type: [Boolean],
  424. },
  425. tableData: {
  426. type: [Object],
  427. },
  428. });
  429. const emits = defineEmits(["update:modelValue"]);
  430. const close = () => {
  431. emits("update:modelValue", false);
  432. };
  433. const setBoxValue = () => {
  434. const checkboxes1 = document.getElementsByName("options1");
  435. const checkboxes2 = document.getElementsByName("options2");
  436. if (props.tableData.remark1.lv == "1") {
  437. checkboxes1[0].checked = true;
  438. } else if (props.tableData.remark1?.lv == "2") {
  439. checkboxes1[1].checked = true;
  440. }
  441. if (props.tableData.remark4.res == "0") {
  442. checkboxes2[0].checked = true;
  443. } else if (props.tableData.remark4?.res == "1") {
  444. checkboxes2[1].checked = true;
  445. }
  446. if (
  447. undefined != props.tableData.seqs &&
  448. null != props.tableData.seqs &&
  449. "" != props.tableData.seqs
  450. ) {
  451. props.tableData.num = props.tableData.seqs.split(",").length;
  452. } else {
  453. props.tableData.num = 0;
  454. }
  455. };
  456. import dictDataUtil from "@/common/configs/dictDataUtil";
  457. watch(
  458. () => props.tableData,
  459. () => {
  460. nextTick(() => {
  461. setBoxValue();
  462. });
  463. }
  464. );
  465. </script>
  466. <style lang="scss" scoped>
  467. #checkboxForm1 {
  468. display: flex;
  469. justify-content: space-between;
  470. padding: 0 40px;
  471. }
  472. #checkboxForm2 {
  473. display: flex;
  474. label {
  475. margin-right: 20px;
  476. }
  477. }
  478. .titlesmall {
  479. width: 100px;
  480. text-align: center;
  481. }
  482. .titleVal {
  483. text-align: center;
  484. }
  485. @media print {
  486. #print {
  487. position: absolute; /* 或 absolute, fixed, 根据需要调整 */
  488. top: 20px; /* 调整顶部位置 */
  489. margin: 0; /* 重置边距 */
  490. width: 700px;
  491. }
  492. .noPrint {
  493. display: none;
  494. }
  495. }
  496. table {
  497. width: 100%;
  498. border-collapse: collapse; /* 合并表格边框 */
  499. }
  500. th,
  501. td {
  502. border: 1px solid rgba(0, 0, 0, 0.3); /* 设置所有单元格的边框 */
  503. padding: 8px;
  504. text-align: left;
  505. }
  506. th {
  507. background-color: #f2f2f2; /* 设置表头的背景颜色 */
  508. }
  509. .sale-box {
  510. .sale-title {
  511. font-size: 16px;
  512. margin-bottom: 5px;
  513. text-align: start;
  514. }
  515. .sale-content {
  516. font-size: 16px;
  517. margin-bottom: 10px;
  518. text-align: start;
  519. padding: 0 8px;
  520. }
  521. .sale-bottom {
  522. display: flex;
  523. justify-content: flex-end;
  524. margin-top: 10px;
  525. }
  526. .desc {
  527. margin-right: 20px;
  528. }
  529. }
  530. .bgColor {
  531. position: fixed;
  532. width: 100vw;
  533. height: 100vh;
  534. z-index: 99999;
  535. background-color: rgba(0, 0, 0, 0.3);
  536. top: 0;
  537. display: flex;
  538. align-items: center;
  539. justify-content: center;
  540. left: 0;
  541. .body {
  542. width: 800px;
  543. height: 85vh;
  544. background-color: white;
  545. display: flex;
  546. flex-direction: column;
  547. padding: 20px;
  548. .header {
  549. width: 100%;
  550. height: 40px;
  551. display: flex;
  552. padding-bottom: 10px;
  553. justify-content: space-between;
  554. border-bottom: 1px solid rgba(0, 0, 0, 0.3);
  555. }
  556. .box {
  557. height: calc(100% - 40px);
  558. }
  559. }
  560. }
  561. .tableInfo {
  562. width: 100%;
  563. height: 60px;
  564. .title {
  565. margin: 10px 0;
  566. font-size: 20px;
  567. font-weight: 600;
  568. }
  569. .info {
  570. display: flex;
  571. justify-content: space-between;
  572. }
  573. }
  574. </style>