manualConfirmation.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696
  1. <!-- 样品接收确认 -->
  2. <template>
  3. <div class="sample-scan">
  4. <!-- 扫码接收的输入框-->
  5. <el-input
  6. v-model="facilityId"
  7. ref="redarInput"
  8. @change="facilityData(facilityId)"
  9. style="z-index: -999;"
  10. ></el-input>
  11. <!-- <el-button type="primary" @click="openRedar" >
  12. 測試</el-button> -->
  13. <!-- 扫码操作组件-->
  14. <div class="popContainer" v-if="redar" @click="remRedar">
  15. <dv-decoration-12 style="width:150px;height:100px;margin:0 auto;top: 35%;">
  16. <span style=" color: #66D9EF;">开启扫描设备连接-样品接收确认</span>
  17. </dv-decoration-12>
  18. </div>
  19. <el-dialog
  20. width="90%"
  21. top="5vh"
  22. :modal-append-to-body='false'
  23. title=" 样品手动接收确认操作 - 确认样品数量及相关信息 "
  24. @close="closeDialog"
  25. :before-close = "handleClose"
  26. :visible.sync="visible"
  27. > <!-- 表单是否显示 -->
  28. <div style="height: 600px;overflow: auto;" @click.self="handleChange">
  29. <el-form label-position="top" size="mini" :model="listData" label-width="100px">
  30. <div v-for="(item,index) in listData">
  31. <el-row>
  32. <div class="dynamic-form-table">
  33. <div class="dynamic-form-table__block panel panel-info">
  34. <div class="panel-heading ibps-clearfix">
  35. <!--块模式:工具栏-->
  36. <div class="ibps-fl dynamic-form-table__label">
  37. 样品{{ index+1 }}
  38. </div>
  39. </div>
  40. </div>
  41. </div>
  42. </el-row>
  43. <div style="padding: 10px 20px;">
  44. <el-row>
  45. <el-col :span="6">
  46. <el-form-item label="样品编号">
  47. <el-input v-model="item.yang_pin_bian_hao" readonly="true"></el-input>
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="6">
  51. <el-form-item label="样品名称">
  52. <el-input v-model="item.yang_pin_ming_che" readonly="true"></el-input>
  53. </el-form-item>
  54. </el-col>
  55. <el-col :span="6">
  56. <el-form-item label="样品总数">
  57. <el-input v-model="item.yang_pin_zong_shu" readonly="true"></el-input>
  58. </el-form-item>
  59. </el-col>
  60. <el-col :span="6">
  61. <el-form-item label="本次确认数量" required>
  62. <el-input v-model="item.jie_yang_shu_lian"></el-input>
  63. </el-form-item>
  64. </el-col>
  65. </el-row>
  66. <el-row>
  67. <el-col :span="6">
  68. <el-form-item label="样品类型(一)">
  69. <el-input v-model="item.yang_pin_lei_xing " ></el-input>
  70. </el-form-item>
  71. </el-col>
  72. <el-col :span="6">
  73. <el-form-item label="样品运输条件(一)">
  74. <el-input v-model="item.yang_ben_yun_shu_" ></el-input>
  75. </el-form-item>
  76. </el-col>
  77. <el-col :span="6">
  78. <el-form-item label="样品数量(一)">
  79. <el-input v-model="item.shu_liang_"></el-input>
  80. </el-form-item>
  81. </el-col>
  82. <el-col :span="6">
  83. <el-form-item label="样品规格(一)">
  84. <el-input v-model="item.yang_pin_gui_ge_"></el-input>
  85. </el-form-item>
  86. </el-col>
  87. </el-row>
  88. <!--每种类型对应的留样数量和留样存放位置-->
  89. <el-row >
  90. <el-col :span="6">
  91. <el-form-item label="样品存放位置(一)" required >
  92. <template slot-scope="scope">
  93. <weizhiData v-model="item.shou_yang_wei_zhi_yi"/>
  94. </template>
  95. </el-form-item>
  96. </el-col>
  97. <el-col :span="6">
  98. <el-form-item label="留样数量(一)" required class="zzj">
  99. <template slot-scope="scope">
  100. <el-input v-model="item.liu_yang_shu_lian_yi"></el-input>
  101. </template>
  102. </el-form-item>
  103. </el-col>
  104. <el-col :span="6">
  105. <el-form-item label="留样存放位置(一)" required>
  106. <template slot-scope="scope">
  107. <liuyangData v-model="item.liu_yang_wei_zhi_yi"/>
  108. </template>
  109. </el-form-item>
  110. </el-col>
  111. </el-row>
  112. <el-row v-if="item.flag2">
  113. <el-col :span="6">
  114. <el-form-item label="样品类型(二)" >
  115. <el-input v-model="item.yang_pin_lei_er_" ></el-input>
  116. </el-form-item>
  117. </el-col>
  118. <el-col :span="6">
  119. <el-form-item label="样品运输条件(二)">
  120. <el-input v-model="item.yang_pin_yun_shu_" ></el-input>
  121. </el-form-item>
  122. </el-col>
  123. <el-col :span="6">
  124. <el-form-item label="样品数量(二)" >
  125. <el-input v-model="item.shu_liang_er_" ></el-input>
  126. </el-form-item>
  127. </el-col>
  128. <el-col :span="6">
  129. <el-form-item label="样品规格(二)">
  130. <el-input v-model="item.yang_pin_gui_ge_e" ></el-input>
  131. </el-form-item>
  132. </el-col>
  133. </el-row>
  134. <!--每种类型对应的留样数量和留样存放位置-->
  135. <el-row v-if="item.flag2">
  136. <el-col :span="6">
  137. <el-form-item label="样品存放位置(二)" required>
  138. <template slot-scope="scope">
  139. <weizhiData v-model="item.shou_yang_wei_zhi_er"/>
  140. </template>
  141. </el-form-item>
  142. </el-col>
  143. <el-col :span="6">
  144. <el-form-item label="留样数量(二)" required class="zzj">
  145. <template slot-scope="scope">
  146. <el-input v-model="item.liu_yang_shu_lian_er"></el-input>
  147. </template>
  148. </el-form-item>
  149. </el-col>
  150. <el-col :span="6">
  151. <el-form-item label="留样存放位置(二)" required>
  152. <template slot-scope="scope">
  153. <liuyangData v-model="item.liu_yang_wei_zhi_er"/>
  154. </template>
  155. </el-form-item>
  156. </el-col>
  157. </el-row>
  158. <el-row v-if="item.flag3">
  159. <el-col :span="6">
  160. <el-form-item label="样品类型(三)" >
  161. <el-input v-model="item.yang_pin_lei_san_" ></el-input>
  162. </el-form-item>
  163. </el-col>
  164. <el-col :span="6">
  165. <el-form-item label="样品运输条件(三)">
  166. <el-input v-model="item.yang_pin_yun_san" ></el-input>
  167. </el-form-item>
  168. </el-col>
  169. <el-col :span="6">
  170. <el-form-item label="样品数量(三)">
  171. <el-input v-model="item.shu_liang_san_" ></el-input>
  172. </el-form-item>
  173. </el-col>
  174. <el-col :span="6">
  175. <el-form-item label="样品规格(三)">
  176. <el-input v-model="item.yang_pin_gui_ge_s" ></el-input>
  177. </el-form-item>
  178. </el-col>
  179. </el-row>
  180. <!--每种类型对应的留样数量和留样存放位置-->
  181. <el-row v-if="item.flag3">
  182. <el-col :span="6">
  183. <el-form-item label="样品存放位置(三)" required>
  184. <template slot-scope="scope">
  185. <weizhiData v-model="item.shou_yang_wei_zhi_san"/>
  186. </template>
  187. </el-form-item>
  188. </el-col>
  189. <el-col :span="6">
  190. <el-form-item label="留样数量(三)" required class="zzj">
  191. <template slot-scope="scope">
  192. <el-input v-model="item.liu_yang_shu_lian_san"></el-input>
  193. </template>
  194. </el-form-item>
  195. </el-col>
  196. <el-col :span="6">
  197. <el-form-item label="留样存放位置(三)" required>
  198. <template slot-scope="scope">
  199. <liuyangData v-model="item.liu_yang_wei_zhi_san"/>
  200. </template>
  201. </el-form-item>
  202. </el-col>
  203. </el-row>
  204. <el-row v-if="item.flag4">
  205. <el-col :span="6">
  206. <el-form-item label="样品类型(四)">
  207. <el-input v-model="item.yang_pin_lei_si_" ></el-input>
  208. </el-form-item>
  209. </el-col>
  210. <el-col :span="6">
  211. <el-form-item label="样品运输条件(四)">
  212. <el-input v-model="item.yang_pin_yun_si_" ></el-input>
  213. </el-form-item>
  214. </el-col>
  215. <el-col :span="6">
  216. <el-form-item label="样品数量(四)">
  217. <el-input v-model="item.shu_liang_si_" ></el-input>
  218. </el-form-item>
  219. </el-col>
  220. <el-col :span="6">
  221. <el-form-item label="样品规格(四)">
  222. <el-input v-model="item.yang_pin_gui_si_" ></el-input>
  223. </el-form-item>
  224. </el-col>
  225. </el-row>
  226. <!--每种类型对应的留样数量和留样存放位置-->
  227. <el-row v-if="item.flag4">
  228. <el-col :span="6">
  229. <el-form-item label="样品存放位置(四)" required>
  230. <template slot-scope="scope">
  231. <weizhiData v-model="item.shou_yang_wei_zhi_si"/>
  232. </template>
  233. </el-form-item>
  234. </el-col>
  235. <el-col :span="6">
  236. <el-form-item label="留样数量(四)" required class="zzj">
  237. <template slot-scope="scope">
  238. <el-input v-model="item.liu_yang_shu_lian_si"></el-input>
  239. </template>
  240. </el-form-item>
  241. </el-col>
  242. <el-col :span="6">
  243. <el-form-item label="留样存放位置(四)" required>
  244. <template slot-scope="scope">
  245. <liuyangData v-model="item.liu_yang_wei_zhi_si"/>
  246. </template>
  247. </el-form-item>
  248. </el-col>
  249. </el-row>
  250. <el-row>
  251. <!-- <el-col :span="6">
  252. <el-form-item label="样品存放位置" required>
  253. <template slot-scope="scope">
  254. <weizhiData v-model="item.shou_yang_wei_zhi"/>
  255. </template>
  256. </el-form-item>
  257. </el-col> -->
  258. <!-- <el-col :span="6">
  259. <el-form-item label="留样存放位置" required>
  260. <template slot-scope="scope">
  261. <liuyangData v-model="item.liu_yang_wei_zhi_"/>
  262. </template>
  263. </el-form-item>
  264. </el-col> -->
  265. </el-row>
  266. <el-row>
  267. <el-col :span="6">
  268. <el-form-item label="是否留样">
  269. <template slot-scope="scope">
  270. <el-select v-model="item.shi_fou_liu_yang_" placeholder="请选择">
  271. <el-option
  272. v-for="item in ifLY"
  273. :key="item.value"
  274. :label="item.label"
  275. :value="item.value">
  276. </el-option>
  277. </el-select>
  278. </template>
  279. </el-form-item>
  280. </el-col>
  281. <el-col :span="6">
  282. <el-form-item label="留样日期">
  283. <template slot-scope="scope">
  284. <el-date-picker
  285. v-model="item.liu_yang_ri_qi_"
  286. type="date"
  287. value-format="yyyy-MM-dd"
  288. format="yyyy-MM-dd"
  289. placeholder="请选择"
  290. :readonly="false"
  291. :clearable="true"
  292. @change="liuyanChange(item,index)"
  293. />
  294. </template>
  295. </el-form-item>
  296. </el-col>
  297. <!-- <el-col :span="6">
  298. <el-form-item label="留样数量" required>
  299. <template slot-scope="scope">
  300. <el-input
  301. v-model="item.liu_yang_shu_lian"
  302. >
  303. </el-input>
  304. </template>
  305. </el-form-item>
  306. </el-col> -->
  307. <el-col :span="6">
  308. <el-form-item label="留样期限至">
  309. <template slot-scope="scope">
  310. <el-date-picker
  311. v-model="item.liu_yang_qi_xian"
  312. type="date"
  313. value-format="yyyy-MM-dd"
  314. format="yyyy-MM-dd"
  315. placeholder="请选择"
  316. :readonly="false"
  317. :clearable="true"
  318. />
  319. </template>
  320. </el-form-item>
  321. </el-col>
  322. <el-col :span="6">
  323. <el-form-item v-if="flag" label="销毁日期" >
  324. <template slot-scope="scope">
  325. <el-date-picker
  326. v-model="item.xiao_hui_ri_qi_"
  327. type="date"
  328. value-format="yyyy-MM-dd"
  329. format="yyyy-MM-dd"
  330. placeholder="请选择"
  331. :readonly="true"
  332. :clearable="true"
  333. />
  334. </template>
  335. </el-form-item>
  336. </el-col>
  337. </el-row>
  338. <el-row>
  339. <el-col :span="6">
  340. <el-form-item label="返样日期">
  341. <template slot-scope="scope">
  342. <el-date-picker
  343. v-model="item.fan_yang_ri_qi_"
  344. type="date"
  345. value-format="yyyy-MM-dd"
  346. format="yyyy-MM-dd"
  347. placeholder="请选择"
  348. :readonly="false"
  349. :clearable="true"
  350. />
  351. </template>
  352. </el-form-item>
  353. </el-col>
  354. <el-col :span="6">
  355. <el-form-item label="返样接样人">
  356. <template slot-scope="scope">
  357. <el-input
  358. v-model="item.fan_yang_jyr"
  359. placeholder="请输入"
  360. type="text"
  361. :readonly="false"
  362. clearable
  363. />
  364. </template>
  365. </el-form-item>
  366. </el-col>
  367. <el-col :span="6">
  368. <el-form-item label="是否加急" >
  369. <el-input v-model="item.chu_ju_bao_gao_ya" readonly="true" class="jiaji"></el-input>
  370. </el-form-item>
  371. </el-col>
  372. <el-col :span="6">
  373. <el-form-item label="验收结果">
  374. <template slot-scope="scope">
  375. <el-select v-model="item.yan_shou_jie_guo_" placeholder="请选择">
  376. <el-option
  377. v-for="item in checkOptions"
  378. :key="item.value"
  379. :label="item.label"
  380. :value="item.value">
  381. </el-option>
  382. </el-select>
  383. </template>
  384. </el-form-item>
  385. </el-col>
  386. <!-- <el-col :span="6">
  387. <el-form-item label="分装留样数量">
  388. <template slot-scope="scope">
  389. <el-input
  390. v-model="item.fen_zhuang_liu_ya"
  391. placeholder="请输入"
  392. type="text"
  393. :readonly="false"
  394. clearable
  395. />
  396. </template>
  397. </el-form-item>
  398. </el-col> -->
  399. </el-row>
  400. <el-row>
  401. <el-col :span="6">
  402. <el-form-item label="姓名">
  403. <template slot-scope="scope">
  404. <el-input
  405. v-model="item.xing_ming_"
  406. placeholder="请输入"
  407. type="text"
  408. :readonly="false"
  409. clearable
  410. />
  411. </template>
  412. </el-form-item>
  413. </el-col>
  414. <el-col :span="6">
  415. <el-form-item label="性别">
  416. <template slot-scope="scope">
  417. <el-select v-model="item.xing_bie_" placeholder="请选择">
  418. <el-option
  419. v-for="item in sex"
  420. :key="item.value"
  421. :label="item.label"
  422. :value="item.value">
  423. </el-option>
  424. </el-select>
  425. </template>
  426. </el-form-item>
  427. </el-col>
  428. <el-col :span="6">
  429. <el-form-item label="年龄">
  430. <template slot-scope="scope">
  431. <el-input
  432. v-model="item.nian_ling_"
  433. placeholder="请输入"
  434. type="text"
  435. :readonly="false"
  436. clearable
  437. />
  438. </template>
  439. </el-form-item>
  440. </el-col>
  441. </el-row>
  442. <el-row>
  443. <el-col :span="6">
  444. <el-form-item label="备注">
  445. <template slot-scope="scope">
  446. <el-input
  447. v-model="item.bei_zhu_"
  448. placeholder="请输入"
  449. type="text"
  450. :readonly="false"
  451. clearable
  452. />
  453. </template>
  454. </el-form-item>
  455. </el-col>
  456. <el-col :span="6">
  457. <el-form-item label="送样要求">
  458. <template slot-scope="scope">
  459. <el-input
  460. v-model="item.song_yang_yao_qiu"
  461. placeholder="请输入"
  462. type="text"
  463. :readonly="false"
  464. clearable
  465. />
  466. </template>
  467. </el-form-item>
  468. </el-col>
  469. <el-col :span="6">
  470. <el-form-item label="接样确认状态">
  471. <template slot-scope="scope">
  472. <el-select v-model="item.jie_yang_zhuang_t" placeholder="请选择">
  473. <el-option
  474. v-for="item in options"
  475. :key="item.value"
  476. :label="item.label"
  477. :value="item.value">
  478. </el-option>
  479. </el-select>
  480. </template>
  481. </el-form-item>
  482. </el-col>
  483. <el-col :span="6">
  484. <el-form-item label="功能">
  485. <template slot-scope="scope">
  486. <el-button
  487. size="small"
  488. type="danger"
  489. icon="el-icon-delete"
  490. @click="deleteData(item.id_)"
  491. >删除</el-button>
  492. </template>
  493. </el-form-item>
  494. </el-col>
  495. </el-row>
  496. <el-row>
  497. </el-row>
  498. </div>
  499. </div>
  500. </el-form>
  501. </div>
  502. <span slot="footer" class="dialog-footer">
  503. <el-button @click="visible = false">取 消</el-button>
  504. <el-button @click="submitData('确认')" type="primary" >样品确认</el-button>
  505. </span>
  506. </el-dialog>
  507. </div>
  508. </template>
  509. <script>
  510. import manualConfirmationJS from '../js/manualConfirmationJS.js'
  511. import IbpsLinkData from '@/business/platform/data/templaterender/link-data'
  512. import weizhiData from "./weizhiData.vue"
  513. import liuyangData from "./liuyangData.vue"
  514. import * as dayjs from 'dayjs'
  515. // import IbpsUserSelector from '@/business/platform/org/selector'
  516. export default {
  517. components:{
  518. IbpsLinkData,
  519. weizhiData,
  520. liuyangData,
  521. // IbpsUserSelector
  522. },
  523. mixins:[manualConfirmationJS],
  524. props:{scanVisible:Boolean},
  525. watch:{
  526. listData: {
  527. handler(val, oldName) {
  528. if(val.length>0){
  529. this.visible = true
  530. this.redar = false // 扫描后就让扫描组件隐藏
  531. }
  532. },
  533. deep: true,
  534. immediate: true
  535. },
  536. scanVisible:{
  537. handler(val, oldName) {
  538. if(val){
  539. this.redar = false // 扫码的组件 一开始先展示
  540. this.visible = true // 结果列表 一开始没扫描就不展示
  541. this.$nextTick(() => {
  542. this.$refs.redarInput.focus(); //聚焦input
  543. })
  544. this.listData = [] //清空列表
  545. }else{
  546. this.remRedar()
  547. }
  548. },
  549. deep: true,
  550. immediate: true
  551. }
  552. },
  553. created() {
  554. this.facilityData(1)
  555. },
  556. data () {
  557. return {
  558. updateNum:1,
  559. visible:false,
  560. redar:false,
  561. facilityId:'',
  562. listData:[],
  563. currentPage:1,
  564. options: [{
  565. value: '已确认',
  566. label: '已确认'
  567. }, {
  568. value: '未确认',
  569. label: '未确认'
  570. }],
  571. checkOptions:[{
  572. value:'完好',
  573. label:'完好'
  574. },{
  575. value:'残缺',
  576. label:'残缺'
  577. }],
  578. ifLY:[{
  579. value:'是',
  580. label:'是'
  581. },{
  582. value:'否',
  583. label:'否'
  584. }],
  585. sex:[{
  586. value:'男',
  587. label:'男'
  588. },{
  589. value:'女',
  590. label:'女'
  591. }],
  592. // OriginalPosition:[],
  593. // mjwtsqbAllResult:[],
  594. pageCount:1,
  595. item:'',
  596. flag: true,
  597. }
  598. },
  599. methods:{
  600. current_change(currentPage){
  601. this.currentPage = currentPage
  602. this.facilityData(currentPage)
  603. },
  604. liuyanChange(item,index){
  605. // console.log(item,index)
  606. this.flag = false
  607. let itemData = dayjs(this.listData[index].liu_yang_ri_qi_).add(7,'day').format("YYYY-MM-DD")
  608. let val = dayjs(this.listData[index].liu_yang_ri_qi_).add(3,'month').format("YYYY-MM-DD")
  609. this.listData[index].xiao_hui_ri_qi_ = itemData
  610. this.listData[index].liu_yang_qi_xian = val
  611. this.flag = true
  612. }
  613. }
  614. }
  615. </script>
  616. <style lang="less" scoped>
  617. /deep/ .el-form-item__label,/deep/ .el-input__inner{
  618. color: none;
  619. }
  620. .sample-scan .popContainer{
  621. position: fixed;
  622. top: 0;
  623. left: 0;
  624. right: 0;
  625. bottom: 0;
  626. z-index: 9999999;
  627. background: rgba(0,0,0,0.7);
  628. }
  629. // .dynamic-form-table__label:before {
  630. // content: '*';
  631. // color: #F56C6C;
  632. // }
  633. .dynamic-form-table__label{
  634. color: #F56C6C;
  635. font-size: 18px;
  636. line-height: 40px;
  637. font-weight: bold;
  638. }
  639. /**必须设置.el-form-item__label为none */
  640. /deep/.zzj .el-form-item__content .el-input__inner{
  641. color: #e60c14;
  642. }
  643. /deep/.el-form-item__content{
  644. display: inline-block;
  645. }
  646. /deep/.el-form-item__label{
  647. padding: 0;
  648. margin-right: 5px;
  649. width: 120px;
  650. }
  651. /deep/.el-input__inner{
  652. border-top: none !important;
  653. border-left: none !important;
  654. border-right: none !important;
  655. border-radius: 0;
  656. }
  657. /deep/.jiaji{
  658. // color: #F56C6C;
  659. // font-size: 18px;
  660. // line-height: 40px;
  661. // font-weight: bold;
  662. }
  663. </style>