infoPage.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468
  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">
  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. </div>
  107. <div class="table-list-box-one">
  108. <p>{{infoData.outDetail.stockSuttle}}</p>
  109. <p>{{infoData.outDetail.lossAmount}}</p>
  110. <p>{{infoData.outDetail.collectSuttle}}</p>
  111. <p>{{infoData.outDetail.outUsers}}</p>
  112. <p>{{infoData.outDetail.outType==1?'称重':(infoData.outDetail.outType==2?'录入':'')}}</p>
  113. </div>
  114. </div>
  115. <div class="infoPage-right-data-box" v-if="infoData.returnDetail">
  116. <div class="title-button-max-box">
  117. <p></p>
  118. <p>归还</p>
  119. <p>{{infoData.returnTime}}</p>
  120. <p v-if="infoData.returnDetail.returnVideo"
  121. class="inquire-button-one" @click="lockVideo(2)">操作视频</p>
  122. <p v-if="infoData.returnDetail.returnLockVideo"
  123. class="inquire-button-one" @click="lockVideo(4)">开关锁视频</p>
  124. </div>
  125. <div class="table-title-box-two">
  126. <p>本次使用量</p>
  127. <p>剩余库存净重</p>
  128. <p>双人验证</p>
  129. <p>称重方式</p>
  130. </div>
  131. <div class="table-list-box-two">
  132. <p>{{infoData.returnDetail.useStockNum}}</p>
  133. <p>{{infoData.returnDetail.returnSuttle}}</p>
  134. <p>{{infoData.returnDetail.backUsers}}</p>
  135. <p>{{infoData.returnDetail.returnType==1?'称重':(infoData.returnDetail.returnType==2?'录入':'')}}</p>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. <el-dialog :title="videoTitle" :visible.sync="videoType" v-if="videoType"
  141. width="840px" append-to-body id="operationRecord-dialog-box">
  142. <video style="width:800px;height:450px;" controls="" autoplay="" name="media" :poster="videoCover">
  143. <source :src="videoData.url" type="video/mp4">
  144. </video>
  145. </el-dialog>
  146. </div>
  147. </template>
  148. <script>
  149. export default {
  150. name: "infoPage",
  151. props:{
  152. infoData:{},
  153. },
  154. data(){
  155. return {
  156. videoCover:window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/admin/" + localStorage.getItem('videoCover'),
  157. videoType:false,
  158. videoData:{},
  159. videoTitle:"",
  160. }
  161. },
  162. created() {
  163. },
  164. mounted(){
  165. },
  166. methods: {
  167. //视频按钮
  168. lockVideo(type){
  169. let obj = {};
  170. if (type == 1){
  171. //领用操作视频
  172. if(!this.infoData.outDetail.outVideo){
  173. this.msgError('操作视频异常无法观看');
  174. return
  175. }
  176. this.$set(this,'videoTitle','操作视频');
  177. obj.url = window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/admin/" + this.infoData.outDetail.outVideo;
  178. } else if(type == 2){
  179. //归还操作视频
  180. if(!this.infoData.returnDetail.returnVideo){
  181. this.msgError('操作视频异常无法观看');
  182. return
  183. }
  184. this.$set(this,'videoTitle','操作视频');
  185. obj.url = window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/admin/" + this.infoData.returnDetail.returnVideo;
  186. } else if(type == 3){
  187. //领用开关锁视频
  188. if(!this.infoData.outDetail.outLockVideo){
  189. this.msgError('开关锁视频异常无法观看');
  190. return
  191. }
  192. this.$set(this,'videoTitle','开关锁视频');
  193. obj.url = window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/admin/" + this.infoData.outDetail.outLockVideo;
  194. } else if(type == 4){
  195. //归还开关锁视频
  196. if(!this.infoData.returnDetail.returnLockVideo){
  197. this.msgError('开关锁视频异常无法观看');
  198. return
  199. }
  200. this.$set(this,'videoTitle','开关锁视频');
  201. obj.url = window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/admin/" + this.infoData.returnDetail.returnLockVideo;
  202. }
  203. this.$set(this,'videoData',obj);
  204. this.videoType = true;
  205. },
  206. backPage(){
  207. this.$parent.goPageInfo(1);
  208. },
  209. }
  210. }
  211. </script>
  212. <style scoped lang="scss">
  213. .infoPage{
  214. flex:1;
  215. display: flex;
  216. flex-direction: column;
  217. overflow: hidden!important;
  218. p{
  219. margin:0;
  220. }
  221. .title-box{
  222. display: flex;
  223. height:90px;
  224. border-bottom: 1px solid #D8D8D8;
  225. p:nth-child(1){
  226. flex:1;
  227. font-size:16px;
  228. line-height:90px;
  229. margin-left:18px;
  230. color:#0045AF;
  231. }
  232. p:nth-child(2){
  233. margin:25px 25px 0 0;
  234. }
  235. }
  236. .infoPage-max-box{
  237. flex:1;
  238. display: flex;
  239. overflow: hidden;
  240. font-weight: 500;
  241. .infoPage-left-box{
  242. flex:1;
  243. margin:44px 22px 37px 80px;
  244. padding:13px 0;
  245. box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.1);
  246. border-radius:10px;
  247. .infoPage-left-text-box-one{
  248. display: flex;
  249. div:nth-child(1){
  250. flex:1;
  251. }
  252. div{
  253. display: flex;
  254. p{
  255. font-size:14px;
  256. line-height:56px;
  257. }
  258. p:nth-child(1){
  259. color:#333;
  260. text-align: right;
  261. width:116px;
  262. }
  263. p:nth-child(2){
  264. color:#666;
  265. flex:1;
  266. }
  267. }
  268. div:nth-child(2){
  269. width:260px;
  270. }
  271. }
  272. .infoPage-left-text-box-two{
  273. display: flex;
  274. p{
  275. font-size:14px;
  276. line-height:56px;
  277. }
  278. p:nth-child(1){
  279. color:#333;
  280. text-align: right;
  281. width:116px;
  282. }
  283. p:nth-child(2){
  284. color:#666;
  285. flex:1;
  286. }
  287. }
  288. }
  289. .infoPage-right-box{
  290. width:839px;
  291. margin:44px 80px 37px 0;
  292. box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.1);
  293. border-radius:10px;
  294. .infoPage-right-title{
  295. line-height:60px;
  296. margin:0 24px;
  297. font-size:16px;
  298. }
  299. .infoPage-right-data-box{
  300. width:792px;
  301. margin:0 auto;
  302. box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.1);
  303. padding-bottom:22px;
  304. border-radius:10px;
  305. margin-bottom:21px;
  306. .title-button-max-box{
  307. width:755px;
  308. margin:0 auto;
  309. height:80px;
  310. display: flex;
  311. font-size:16px;
  312. p:nth-child(1){
  313. background: #0045AF;
  314. width:3px;
  315. height:14px;
  316. margin:33px 0;
  317. margin-right:12px;
  318. margin-left:7px;
  319. }
  320. p:nth-child(2){
  321. line-height:80px;
  322. margin-right:27px;
  323. }
  324. p:nth-child(3){
  325. line-height:80px;
  326. flex:1;
  327. }
  328. p:nth-child(4){
  329. width:100px;
  330. line-height:40px;
  331. margin:20px 10px 0 0;
  332. }
  333. p:nth-child(5){
  334. width:100px;
  335. line-height:40px;
  336. margin:20px 10px 0 0;
  337. }
  338. }
  339. .table-title-box-one{
  340. width:755px;
  341. height:60px;
  342. background: #f5f5f5;
  343. margin:0 auto;
  344. display: flex;
  345. p{
  346. color:#333;
  347. font-size:16px;
  348. line-height:60px;
  349. }
  350. p:nth-child(1){
  351. text-align: center;
  352. width:130px;
  353. }
  354. p:nth-child(2){
  355. text-align: center;
  356. width:108px;
  357. }
  358. p:nth-child(3){
  359. text-align: center;
  360. width:118px;
  361. }
  362. p:nth-child(4){
  363. text-align: center;
  364. flex: 1;
  365. }
  366. p:nth-child(5){
  367. text-align: center;
  368. width:136px;
  369. }
  370. }
  371. .table-list-box-one{
  372. width:755px;
  373. height:70px;
  374. border:1px solid #e0e0e0;
  375. margin:0 auto;
  376. display: flex;
  377. p{
  378. color:#333;
  379. font-size:16px;
  380. line-height:70px;
  381. }
  382. p:nth-child(1){
  383. text-align: center;
  384. width:130px;
  385. }
  386. p:nth-child(2){
  387. text-align: center;
  388. width:108px;
  389. }
  390. p:nth-child(3){
  391. text-align: center;
  392. width:118px;
  393. }
  394. p:nth-child(4){
  395. text-align: center;
  396. flex: 1;
  397. }
  398. p:nth-child(5){
  399. text-align: center;
  400. width:136px;
  401. }
  402. }
  403. .table-title-box-two{
  404. width:755px;
  405. height:60px;
  406. background: #f5f5f5;
  407. margin:0 auto;
  408. display: flex;
  409. p{
  410. color:#333;
  411. font-size:16px;
  412. line-height:60px;
  413. }
  414. p:nth-child(1){
  415. text-align: center;
  416. width:170px;
  417. }
  418. p:nth-child(2){
  419. text-align: center;
  420. width:148px;
  421. }
  422. p:nth-child(3){
  423. text-align: center;
  424. flex: 1;
  425. }
  426. p:nth-child(4){
  427. text-align: center;
  428. width:172px;
  429. }
  430. }
  431. .table-list-box-two{
  432. width:755px;
  433. height:70px;
  434. border:1px solid #e0e0e0;
  435. margin:0 auto;
  436. display: flex;
  437. p{
  438. color:#333;
  439. font-size:16px;
  440. line-height:70px;
  441. }
  442. p:nth-child(1){
  443. text-align: center;
  444. width:170px;
  445. }
  446. p:nth-child(2){
  447. text-align: center;
  448. width:148px;
  449. }
  450. p:nth-child(3){
  451. text-align: center;
  452. flex: 1;
  453. }
  454. p:nth-child(4){
  455. text-align: center;
  456. width:172px;
  457. }
  458. }
  459. }
  460. }
  461. }
  462. }
  463. </style>