infoPage.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500
  1. <template>
  2. <div class="infoPage">
  3. <div class="title-box">
  4. <p>使用详情</p>
  5. <p class="reset-button-one" @click="backPage"><i class="el-icon-arrow-left"></i>返回</p>
  6. </div>
  7. <div class="infoPage-max-box scrollbar-box">
  8. <div class="infoPage-left-box scrollbar-box">
  9. <div class="infoPage-left-text-box-one">
  10. <div>
  11. <p>化学品名称:</p>
  12. <p>{{infoData.chemicalName}}</p>
  13. </div>
  14. <div>
  15. <p>化学品编号:</p>
  16. <p>{{infoData.joinNum}}</p>
  17. </div>
  18. </div>
  19. <div class="infoPage-left-text-box-one">
  20. <div>
  21. <p>CAS:</p>
  22. <p>{{infoData.casNum}}</p>
  23. </div>
  24. <div>
  25. <p>别名:</p>
  26. <p>{{infoData.anotherName}}</p>
  27. </div>
  28. </div>
  29. <div class="infoPage-left-text-box-one">
  30. <div>
  31. <p>化学品分类:</p>
  32. <p>{{infoData.classifyName}}</p>
  33. </div>
  34. <div>
  35. <p>纯度:</p>
  36. <p>{{infoData.purity}}</p>
  37. </div>
  38. </div>
  39. <div class="infoPage-left-text-box-two">
  40. <p>形态:</p>
  41. <p>{{infoData.chemicalShapeName}}</p>
  42. </div>
  43. <div class="infoPage-left-text-box-two">
  44. <p>属性:</p>
  45. <p>{{infoData.classifyAttribute}}</p>
  46. </div>
  47. <div class="infoPage-left-text-box-one">
  48. <div>
  49. <p>标签类型:</p>
  50. <p>{{infoData.labelType == 1?'RFID':(infoData.labelType == 2?'二维码':'')}}</p>
  51. </div>
  52. <div>
  53. <p>标签编号:</p>
  54. <p>{{infoData.tagCode}}</p>
  55. </div>
  56. </div>
  57. <div class="infoPage-left-text-box-one">
  58. <div>
  59. <p>容量规格:</p>
  60. <p>{{infoData.chemicalAmountUnit}}</p>
  61. </div>
  62. <div>
  63. <p>容器规格:</p>
  64. <p>{{infoData.tareUnit}}</p>
  65. </div>
  66. </div>
  67. <div class="infoPage-left-text-box-one">
  68. <div>
  69. <p>过期时间:</p>
  70. <p>{{infoData.expirationTime}} 丨 30天前提醒</p>
  71. </div>
  72. <div>
  73. <p>领用时效:</p>
  74. <p>{{infoData.collectHour&&infoData.collectMinute?infoData.collectHour+'小时'+infoData.collectMinute+'分钟':(
  75. !infoData.collectHour&&infoData.collectMinute?infoData.collectMinute+'分钟':(
  76. infoData.collectHour&&!infoData.collectMinute?infoData.collectHour+'小时':''))}}</p>
  77. </div>
  78. </div>
  79. <div class="infoPage-left-text-box-two">
  80. <p>化学品柜:</p>
  81. <p>{{infoData.cabinetName}}</p>
  82. </div>
  83. <div class="infoPage-left-text-box-two">
  84. <p>所在位置:</p>
  85. <p>{{infoData.posi}}</p>
  86. </div>
  87. </div>
  88. <div class="infoPage-right-box scrollbar-box">
  89. <p class="infoPage-right-title">当前使用状态:{{infoData.useStatus}}</p>
  90. <div class="infoPage-right-data-box" v-if="infoData.outDetail">
  91. <div class="title-button-max-box">
  92. <p></p>
  93. <p>领用</p>
  94. <p>{{infoData.collectTime}}</p>
  95. <p v-if="infoData.outDetail.outVideo"
  96. class="inquire-button-one" @click="lockVideo(1)">操作视频</p>
  97. <p v-if="infoData.outDetail.outLockVideo"
  98. class="inquire-button-one" @click="lockVideo(3)">开关锁视频</p>
  99. </div>
  100. <div class="table-title-box-one">
  101. <p>领用时库存净重</p>
  102. <p>损耗量</p>
  103. <p>领用净重</p>
  104. <p>操作人</p>
  105. <p>双人验证</p>
  106. <p>称重方式</p>
  107. </div>
  108. <div class="table-list-box-one">
  109. <p>{{infoData.outDetail.stockSuttle}}</p>
  110. <p>{{infoData.outDetail.lossAmount}}</p>
  111. <p>{{infoData.outDetail.collectSuttle}}</p>
  112. <p>{{infoData.operator}}</p>
  113. <el-tooltip class="item" effect="dark" :content="infoData.outDetail.outUsers" placement="top">
  114. <p>{{infoData.outDetail.outUsers}}</p>
  115. </el-tooltip>
  116. <p>{{infoData.outDetail.outType==1?'称重':(infoData.outDetail.outType==2?'录入':'')}}</p>
  117. </div>
  118. </div>
  119. <div class="infoPage-right-data-box" v-if="infoData.returnDetail">
  120. <div class="title-button-max-box">
  121. <p></p>
  122. <p>归还</p>
  123. <p>{{infoData.returnTime}}</p>
  124. <p v-if="infoData.returnDetail.returnVideo"
  125. class="inquire-button-one" @click="lockVideo(2)">操作视频</p>
  126. <p v-if="infoData.returnDetail.returnLockVideo"
  127. class="inquire-button-one" @click="lockVideo(4)">开关锁视频</p>
  128. </div>
  129. <div class="table-title-box-two">
  130. <p>本次使用量</p>
  131. <p>剩余库存净重</p>
  132. <p>操作人</p>
  133. <p>双人验证</p>
  134. <p>称重方式</p>
  135. </div>
  136. <div class="table-list-box-two">
  137. <p>{{infoData.returnDetail.useStockNum}}</p>
  138. <p>{{infoData.returnDetail.returnSuttle}}</p>
  139. <p>{{infoData.operator}}</p>
  140. <p>{{infoData.returnDetail.backUsers}}</p>
  141. <p>{{infoData.returnDetail.returnType==1?'称重':(infoData.returnDetail.returnType==2?'录入':'')}}</p>
  142. </div>
  143. </div>
  144. </div>
  145. </div>
  146. <el-dialog :title="videoTitle" :visible.sync="videoType" v-if="videoType"
  147. width="840px" append-to-body id="operationRecord-dialog-box">
  148. <video style="width:800px;height:450px;" controls="" autoplay="" name="media" :poster="videoCover">
  149. <source :src="videoData.url" type="video/mp4">
  150. </video>
  151. </el-dialog>
  152. </div>
  153. </template>
  154. <script>
  155. export default {
  156. name: "infoPage",
  157. props:{
  158. infoData:{},
  159. },
  160. data(){
  161. return {
  162. videoCover:window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/admin/" + localStorage.getItem('videoCover'),
  163. videoType:false,
  164. videoData:{},
  165. videoTitle:"",
  166. }
  167. },
  168. created() {
  169. },
  170. mounted(){
  171. },
  172. methods: {
  173. //视频按钮
  174. lockVideo(type){
  175. let obj = {};
  176. if (type == 1){
  177. //领用操作视频
  178. if(!this.infoData.outDetail.outVideo){
  179. this.msgError('操作视频异常无法观看');
  180. return
  181. }
  182. this.$set(this,'videoTitle','操作视频');
  183. obj.url = window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/admin/" + this.infoData.outDetail.outVideo;
  184. } else if(type == 2){
  185. //归还操作视频
  186. if(!this.infoData.returnDetail.returnVideo){
  187. this.msgError('操作视频异常无法观看');
  188. return
  189. }
  190. this.$set(this,'videoTitle','操作视频');
  191. obj.url = window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/admin/" + this.infoData.returnDetail.returnVideo;
  192. } else if(type == 3){
  193. //领用开关锁视频
  194. if(!this.infoData.outDetail.outLockVideo){
  195. this.msgError('开关锁视频异常无法观看');
  196. return
  197. }
  198. this.$set(this,'videoTitle','开关锁视频');
  199. obj.url = window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/admin/" + this.infoData.outDetail.outLockVideo;
  200. } else if(type == 4){
  201. //归还开关锁视频
  202. if(!this.infoData.returnDetail.returnLockVideo){
  203. this.msgError('开关锁视频异常无法观看');
  204. return
  205. }
  206. this.$set(this,'videoTitle','开关锁视频');
  207. obj.url = window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/admin/" + this.infoData.returnDetail.returnLockVideo;
  208. }
  209. this.$set(this,'videoData',obj);
  210. this.videoType = true;
  211. },
  212. backPage(){
  213. this.$parent.goPageInfo(1);
  214. },
  215. }
  216. }
  217. </script>
  218. <style scoped lang="scss">
  219. .infoPage{
  220. flex:1;
  221. display: flex;
  222. flex-direction: column;
  223. overflow: hidden!important;
  224. p{
  225. margin:0;
  226. }
  227. .title-box{
  228. display: flex;
  229. height:90px;
  230. border-bottom: 1px solid #D8D8D8;
  231. p:nth-child(1){
  232. flex:1;
  233. font-size:16px;
  234. line-height:90px;
  235. margin-left:18px;
  236. color:#0045AF;
  237. }
  238. p:nth-child(2){
  239. margin:25px 25px 0 0;
  240. }
  241. }
  242. .infoPage-max-box{
  243. flex:1;
  244. font-weight: 500;
  245. padding:44px 0 44px 80px;
  246. height:586px;
  247. .infoPage-left-box{
  248. display: inline-block;
  249. margin-right:22px;
  250. overflow: hidden;
  251. /*margin:44px 22px 37px 80px;*/
  252. padding:13px 0;
  253. box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.1);
  254. border-radius:10px;
  255. .infoPage-left-text-box-one{
  256. display: flex;
  257. div:nth-child(1){
  258. flex:1;
  259. }
  260. div{
  261. display: flex;
  262. p{
  263. font-size:14px;
  264. line-height:56px;
  265. }
  266. p:nth-child(1){
  267. color:#333;
  268. text-align: right;
  269. width:116px;
  270. }
  271. p:nth-child(2){
  272. color:#666;
  273. flex:1;
  274. }
  275. }
  276. div:nth-child(2){
  277. width:260px;
  278. }
  279. }
  280. .infoPage-left-text-box-two{
  281. display: flex;
  282. p{
  283. font-size:14px;
  284. line-height:56px;
  285. }
  286. p:nth-child(1){
  287. color:#333;
  288. text-align: right;
  289. width:116px;
  290. }
  291. p:nth-child(2){
  292. color:#666;
  293. flex:1;
  294. }
  295. }
  296. }
  297. .infoPage-right-box{
  298. display: inline-block;
  299. width:839px;
  300. overflow: hidden;
  301. height:586px;
  302. /*margin:44px 0 37px 0;*/
  303. box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.1);
  304. border-radius:10px;
  305. .infoPage-right-title{
  306. line-height:60px;
  307. margin:0 24px;
  308. font-size:16px;
  309. }
  310. .infoPage-right-data-box{
  311. width:792px;
  312. margin:0 auto;
  313. box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.1);
  314. padding-bottom:22px;
  315. border-radius:10px;
  316. margin-bottom:21px;
  317. .title-button-max-box{
  318. width:755px;
  319. margin:0 auto;
  320. height:80px;
  321. display: flex;
  322. font-size:16px;
  323. p:nth-child(1){
  324. background: #0045AF;
  325. width:3px;
  326. height:14px;
  327. margin:33px 0;
  328. margin-right:12px;
  329. margin-left:7px;
  330. }
  331. p:nth-child(2){
  332. line-height:80px;
  333. margin-right:27px;
  334. }
  335. p:nth-child(3){
  336. line-height:80px;
  337. flex:1;
  338. }
  339. p:nth-child(4){
  340. width:100px;
  341. line-height:40px;
  342. margin:20px 10px 0 0;
  343. }
  344. p:nth-child(5){
  345. width:100px;
  346. line-height:40px;
  347. margin:20px 10px 0 0;
  348. }
  349. }
  350. .table-title-box-one{
  351. width:755px;
  352. height:60px;
  353. background: #f5f5f5;
  354. margin:0 auto;
  355. display: flex;
  356. p{
  357. color:#333;
  358. font-size:16px;
  359. line-height:60px;
  360. }
  361. p:nth-child(1){
  362. text-align: center;
  363. width:130px;
  364. }
  365. p:nth-child(2){
  366. text-align: center;
  367. width:108px;
  368. }
  369. p:nth-child(3){
  370. text-align: center;
  371. width:118px;
  372. }
  373. p:nth-child(4){
  374. text-align: center;
  375. flex: 1;
  376. }
  377. p:nth-child(5){
  378. text-align: center;
  379. width:136px;
  380. }
  381. p:nth-child(6){
  382. text-align: center;
  383. width:130px;
  384. }
  385. }
  386. .table-list-box-one{
  387. width:755px;
  388. height:70px;
  389. border:1px solid #e0e0e0;
  390. margin:0 auto;
  391. display: flex;
  392. p{
  393. color:#333;
  394. font-size:16px;
  395. line-height:70px;
  396. }
  397. p:nth-child(1){
  398. text-align: center;
  399. width:130px;
  400. }
  401. p:nth-child(2){
  402. text-align: center;
  403. width:108px;
  404. }
  405. p:nth-child(3){
  406. text-align: center;
  407. width:118px;
  408. }
  409. p:nth-child(4){
  410. text-align: center;
  411. flex: 1;
  412. }
  413. p:nth-child(5){
  414. text-align: center;
  415. width:136px;
  416. display:block;
  417. overflow:hidden;
  418. text-overflow:ellipsis;
  419. white-space:nowrap;
  420. }
  421. p:nth-child(6){
  422. text-align: center;
  423. width:130px;
  424. }
  425. }
  426. .table-title-box-two{
  427. width:755px;
  428. height:60px;
  429. background: #f5f5f5;
  430. margin:0 auto;
  431. display: flex;
  432. p{
  433. color:#333;
  434. font-size:16px;
  435. line-height:60px;
  436. }
  437. p:nth-child(1){
  438. text-align: center;
  439. width:130px;
  440. }
  441. p:nth-child(2){
  442. text-align: center;
  443. width:118px;
  444. }
  445. p:nth-child(3){
  446. text-align: center;
  447. width:132px;
  448. }
  449. p:nth-child(4){
  450. text-align: center;
  451. flex: 1;
  452. }
  453. p:nth-child(5){
  454. text-align: center;
  455. width:130px;
  456. }
  457. }
  458. .table-list-box-two{
  459. width:755px;
  460. height:70px;
  461. border:1px solid #e0e0e0;
  462. margin:0 auto;
  463. display: flex;
  464. p{
  465. color:#333;
  466. font-size:16px;
  467. line-height:70px;
  468. }
  469. p:nth-child(1){
  470. text-align: center;
  471. width:130px;
  472. }
  473. p:nth-child(2){
  474. text-align: center;
  475. width:118px;
  476. }
  477. p:nth-child(3){
  478. text-align: center;
  479. width:132px;
  480. }
  481. p:nth-child(4){
  482. text-align: center;
  483. flex: 1;
  484. }
  485. p:nth-child(5){
  486. text-align: center;
  487. width:130px;
  488. }
  489. }
  490. }
  491. }
  492. }
  493. }
  494. </style>