deliveriedList.vue 23 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042
  1. <template>
  2. <view>
  3. <u-navbar>
  4. <view class="u-navbar ">
  5. <view class="title">
  6. 出库设备清单<text>({{recordsTotal}})</text>
  7. </view>
  8. </view>
  9. <view class="details" v-if="status==1" slot="bottom">
  10. <view class="list-details">
  11. <view class="list-head">
  12. <view class="title">
  13. 扫码出库
  14. </view>
  15. <view class="amount" @click="gotoscan('')">
  16. <u-icon name="scan" color="#0051ff" ></u-icon>扫码识别
  17. </view>
  18. </view>
  19. </view>
  20. </view>
  21. </u-navbar>
  22. <u-popup v-model="showpopup" class="scanpopo" mode="bottom"
  23. border-radius="14"
  24. :closeable="true" >
  25. <view class="scantitle">连续扫码</view>
  26. <view class="scanlist">
  27. <view class="scan-list-infos" :style="nowscan.healthStatus&&nowscan.healthStatus!=1?'background-color:#FFC107':''">
  28. <view class="scan-infos-head" @click="gotoInfo(nowscan.id)">
  29. <view class="name">
  30. {{nowscan.title?nowscan.title:'扫码后出当前结果'}}
  31. </view>
  32. <view class="name">
  33. 编号:{{showCode(nowscan)}}
  34. <span class="name" v-show="nowscan&&nowscan.id" style="color:blue;">
  35. 点击查看
  36. </span>
  37. </view>
  38. </view>
  39. <view class="scan-infos-head " style="margin-bottom: 12rpx;">
  40. <view class="name" v-html="descriptionKey(nowscan)">
  41. </view>
  42. </view>
  43. <view class="scan-infos">
  44. <!-- <view class="infos-2">
  45. <view class="infos-item">
  46. <view class="item-name">
  47. 规格:
  48. </view>
  49. <view class="item-value">
  50. {{nowscan.specifications}}
  51. </view>
  52. </view>
  53. <view class="infos-item">
  54. <view class="item-name">
  55. 型号:
  56. </view>
  57. <view class="item-value">
  58. {{nowscan.model}}
  59. </view>
  60. </view>
  61. </view> -->
  62. </view>
  63. </view>
  64. </view>
  65. <!-- #ifdef MP-WEIXIN -->
  66. <camera mode="scanCode" resolution='medium'
  67. @scancode="takeCode" v-if="showpopup"
  68. device-position="back" flash="off" @error="error"
  69. style="width: 100%; height: 300px;"></camera>
  70. <!-- #endif -->
  71. </u-popup>
  72. <view class="listHead " :class="status==1?'container':''" >
  73. <view class="list" v-for="(item,index) in list" :key="index">
  74. <!-- 清单信息 -->
  75. <view class="list-infos">
  76. <view class="infos-head">
  77. <view class="name">
  78. {{item.deviceName}}
  79. </view>
  80. </view>
  81. <view class="infos">
  82. <view class="infos-1">
  83. <view class="infos-item">
  84. <view class="item-name">
  85. {{recordItemStatus(item.status)}}:
  86. </view>
  87. <view class="item-value" :style="'color:'+recordStatusColor(0)">
  88. {{item.needCount}}
  89. </view>
  90. </view>
  91. <!--
  92. <view class="infos-item">
  93. <view class="item-name">
  94. 厂家:
  95. </view>
  96. <view class="item-value">
  97. {{item.deviceInfo.manufactor}}
  98. </view>
  99. </view> -->
  100. <view class="infos-item">
  101. <view class="item-name">
  102. 单位:
  103. </view>
  104. <view class="item-value">
  105. {{item.deviceInfo?item.deviceInfo.unit:''}}
  106. </view>
  107. </view>
  108. </view>
  109. <view class="infos-2">
  110. <view class="infos-item">
  111. <view class="item-name">
  112. 规格:
  113. </view>
  114. <view class="item-value">
  115. {{item.deviceInfo?item.deviceInfo.specifications:''}}
  116. </view>
  117. </view>
  118. <view class="infos-item">
  119. <view class="item-name">
  120. 型号:
  121. </view>
  122. <view class="item-value">
  123. {{item.deviceInfo?item.deviceInfo.model:''}}
  124. </view>
  125. </view>
  126. </view>
  127. </view>
  128. <view class="infos" v-if="false">
  129. <view class="infos-1">
  130. <view class="infos-item">
  131. <view class="item-name">
  132. {{recordItemStatus(item.status)}}:
  133. </view>
  134. <view class="item-value" :style="'color:'+recordStatusColor(0)">
  135. {{item.needCount}}
  136. </view>
  137. </view>
  138. </view>
  139. <view class="infos-2" v-if="false">
  140. <view class="infos-item">
  141. <view class="item-name">
  142. 库存:
  143. </view>
  144. <view class="item-value" :style="'color:'+recordStatusColor(1)">
  145. {{item.deviceInfo?item.deviceInfo.count:''}}
  146. </view>
  147. </view>
  148. </view>
  149. </view>
  150. <!-- 地址 -->
  151. <view class="address">
  152. <view class="name">
  153. 位置:
  154. </view>
  155. <view class="value">
  156. {{item.deviceInfo.addressId?item.deviceInfo.addressId:'未录入'}}
  157. </view>
  158. </view>
  159. <!-- 备注 -->
  160. <view class="remark" v-if="false">
  161. <view class="name">
  162. 备注:
  163. </view>
  164. <view class="value">
  165. 22
  166. </view>
  167. </view>
  168. <view class="prepare-out" v-if="item.realDeviceList&&item.realDeviceList.length">
  169. <view class="head">
  170. <view class="amount">
  171. <view class="title">
  172. 实际领用:
  173. </view>
  174. <view class="value">
  175. {{item.realDeviceList.length}}
  176. </view>
  177. </view>
  178. <view class="unfold" v-show="item.realDeviceList.length>2" @click="changeShow(item)">
  179. {{item.show?'收起':'展开'}}<u-icon name="arrow-down"></u-icon>
  180. <!-- <view class="option" v-if="show==true">
  181. </view> -->
  182. </view>
  183. </view>
  184. <!-- 编号 -->
  185. <view class="serial-number" v-for="(item2,j) in item.realDeviceList"
  186. v-show="j<2||item.show" :key="j">
  187. <view class="itemLine">
  188. <span class="text">
  189. 设备编号:
  190. </span>
  191. <span class="number" >
  192. {{item2.deviceCode}}
  193. </span>
  194. <span class="view" @click="ckInfo(item2)" >
  195. 查看设备
  196. </span>
  197. </view>
  198. </view>
  199. </view>
  200. <view class="prepare-out" v-else-if="!scanMap.get(item.deviceName+key+item.model+key+item.specifications)">
  201. <view class="head">
  202. <view class="amount">
  203. <view class="title">
  204. 扫码识别
  205. </view>
  206. <view class="value">
  207. </view>
  208. </view>
  209. </view>
  210. </view>
  211. <view class="prepare-out 2" v-else>
  212. <view class="head">
  213. <view class="amount">
  214. <view class="title">
  215. 实际领用:
  216. </view>
  217. <view class="value">
  218. {{scanMap.get(item.deviceName+key+item.model+key+item.specifications).length}}
  219. </view>
  220. </view>
  221. <view class="unfold" v-show="scanMap.get(item.deviceName+key+item.model+key+item.specifications).length>2" @click="changeShow(item)">
  222. {{item.show?'收起':'展开'}}<u-icon name="arrow-down"></u-icon>
  223. <!-- <view class="option" v-if="show==true">
  224. </view> -->
  225. </view>
  226. </view>
  227. <!-- 编号 -->
  228. <view class="serial-number" v-for="(item2,j) in scanMap.get(item.deviceName+key+item.model+key+item.specifications)"
  229. v-show="j<2||item.show" :key="j">
  230. <view class="item">
  231. <view class="text">
  232. 设备编号:
  233. </view>
  234. <view class="number" @click="delOutList(item2)">
  235. <span v-if="item2.healthStatus!=1"
  236. :style="' margin-right: 1px;color:'+recordStatusColor(item2.healthStatus)">[{{item2.healthStatusN}}]</span>
  237. <span v-if="item2.status!=1"
  238. :style="' margin-right: 1px;color:'+recordStatusColor(item2.status)">[{{item2.statusN}}]</span>
  239. {{showCode(item2)}}
  240. </view>
  241. </view>
  242. <view class="del" @click="delOutList(item2)">
  243. <u-icon name="trash-fill"></u-icon>
  244. <!-- <img src="@/assets/img/riLine-delete-bin-line Copy@1x.png" alt=""> -->
  245. </view>
  246. </view>
  247. </view>
  248. <textarea class="textarea"
  249. placeholder="备注" name="" id="" v-model="item.remark" cols="30" rows="1"></textarea>
  250. </view>
  251. </view>
  252. <view class="list" v-if="noScanList.length" >
  253. <view class="list-infos">
  254. <view class="infos-head">
  255. <view class="name">
  256. 扫码结果不符合清单
  257. </view>
  258. </view>
  259. <view class="infos">
  260. <view class="infos-1">
  261. <view class="infos-item">
  262. <view class="item-value">
  263. 以下设备不计入出库设备中
  264. </view>
  265. </view>
  266. </view>
  267. </view>
  268. <view class="prepare-out" >
  269. <view class="head">
  270. <view class="amount">
  271. <view class="title">
  272. 不符合清单:
  273. </view>
  274. </view>
  275. </view>
  276. <!-- 编号 -->
  277. <view class="serial-number" v-for="(item,index) in noScanList" :key="index">
  278. <view class="item">
  279. <view class="text">
  280. 设备编号:
  281. </view>
  282. <view class="number">
  283. {{showCode(item)}}
  284. </view>
  285. </view>
  286. <view class="item">
  287. <view class="text">
  288. 设备名称:
  289. </view>
  290. <view class="number">
  291. {{item.title}}
  292. </view>
  293. </view>
  294. </view>
  295. </view>
  296. </view>
  297. </view>
  298. <u-divider border-color="#CFD2D5">已经到底了</u-divider>
  299. </view>
  300. <!-- 确认出库 -->
  301. <view class="bottom" v-if="status==1">
  302. <u-button type="primary" @click="gotoOut()">确认出库</u-button>
  303. </view>
  304. </view>
  305. </template>
  306. <script>
  307. import * as API from '@/apis/pagejs/storeManagement.js'
  308. import {
  309. recordItemStatus,
  310. recordStatusColor
  311. } from '@/apis/status.js'
  312. export default {
  313. data() {
  314. return {
  315. nowscan:{
  316. "title": "",
  317. "specifications": "",
  318. "experimentLastTime":"",
  319. "manufactor": "",
  320. "unit": "",
  321. "model": "",
  322. "code": "",
  323. },
  324. status:"",
  325. deviceposition:"back",
  326. scanFunctionIsUseable:true,
  327. showpopup:false,
  328. show: false,
  329. list: [],
  330. scanList: [],
  331. id: "",
  332. key:"-#jp$-",
  333. recordsTotal: 0,
  334. listFrom: {
  335. pageIndex: 1,
  336. pageSize: 99999,
  337. }
  338. }
  339. },
  340. onReachBottom() {
  341. if (this.list.length < this.recordsTotal) {
  342. this.myLoadmore();
  343. }
  344. },
  345. onLoad(op) {
  346. this.id = op.id
  347. this.status = op.status
  348. this.getList()
  349. },
  350. onReady() {
  351. },
  352. computed: {
  353. noScanList() {
  354. var list= this.list.map(item=>{
  355. return item.deviceName+this.key+item.model+this.key+item.specifications
  356. })
  357. var map = new Map()
  358. var reList= this.scanList.filter(item=>{
  359. return list.indexOf(item.title+this.key+item.model+this.key+item.specifications)==-1
  360. })
  361. return reList
  362. },
  363. scanMap() {
  364. var map = new Map()
  365. this.scanList.forEach(item => {
  366. var title=item.title+this.key+item.model+this.key+item.specifications
  367. if (map.has(title)) {
  368. var list = map.get(title)
  369. list.unshift(item)
  370. map.set(title, list)
  371. } else {
  372. map.set(title, [item])
  373. }
  374. })
  375. console.log(map)
  376. return map
  377. },
  378. },
  379. methods: {
  380. recordItemStatus,
  381. recordStatusColor,
  382. ckInfo(item) {
  383. var url = "/pages/otherFunctions/equipmentRetrieval/equipmentInfo?id=" + item.deviceId;
  384. uni.navigateTo({
  385. url: url,
  386. })
  387. },
  388. gotoOutMethod(list) {
  389. var obj={
  390. "recordId":this.id,
  391. "deviceData":list,
  392. }
  393. uni.showLoading({
  394. title: "加载中",
  395. mask: true,
  396. })
  397. API.saveRecordOut({
  398. recordData: JSON.stringify(obj),
  399. }).then((res) => {
  400. this.status=3;
  401. const eventChannel = this.getOpenerEventChannel();
  402. eventChannel.emit('refreshData');
  403. uni.hideLoading()
  404. uni.showModal({
  405. title: '提示',
  406. content: '操作成功',
  407. showCancel:false,
  408. success: function (res) {
  409. if (res.confirm) {
  410. uni.navigateBack()
  411. } else if (res.cancel) {
  412. console.log('用户点击取消');
  413. }
  414. }
  415. });
  416. }).catch(error => {
  417. uni.showToast({
  418. title: error,
  419. icon: "none"
  420. })
  421. })
  422. },
  423. gotoOut() {
  424. //recordData
  425. var list=[];
  426. var bl=true;
  427. this.list.forEach(item=>{
  428. var maplistStr="";
  429. var maplist=this.scanMap.get(item.deviceName+this.key+item.model+this.key+item.specifications);
  430. if(!maplist||maplist.length==0){
  431. bl=false;
  432. // uni.showToast({
  433. // title: item.deviceName+"未出库设备",
  434. // icon: "none"
  435. // })
  436. }else{
  437. var maplistStr=maplist.map(item2=>{
  438. return item2.id
  439. }).join()
  440. }
  441. list.push({
  442. "remark":item.remark?item.remark:"",
  443. "deviceIds":maplistStr,
  444. "recordDeviceId":item.id
  445. })
  446. })
  447. if(!bl){
  448. //uni.hideLoading();
  449. var _this=this;
  450. uni.showModal({
  451. title: '提示',
  452. content:"存在未扫码的设备,确认是否出库?",
  453. //content: '这是一个模态弹窗',
  454. success: function(res) {
  455. if (res.confirm) {
  456. _this.gotoOutMethod(list)
  457. } else if (res.cancel) {
  458. console.log('用户点击取消');
  459. }
  460. }
  461. });
  462. return;
  463. }
  464. var _this=this;
  465. uni.showModal({
  466. title: '提示',
  467. content:"确认清单无误?",
  468. //content: '这是一个模态弹窗',
  469. success: function(res) {
  470. if (res.confirm) {
  471. _this.gotoOutMethod(list)
  472. } else if (res.cancel) {
  473. console.log('用户点击取消');
  474. }
  475. }
  476. });
  477. },
  478. error(e) {
  479. console.log(e);
  480. },
  481. gotoscan(val){
  482. // if(this.deviceposition=='back'){
  483. // this.deviceposition="front"
  484. // }else{
  485. // this.deviceposition="back"
  486. // }
  487. // #ifdef H5
  488. this.gotoscanH5(val)
  489. // #endif
  490. // #ifdef MP-WEIXIN
  491. this.gotoscanMP(val)
  492. // #endif
  493. },
  494. takeCode(e){
  495. console.log(e);
  496. if(this.scanFunctionIsUseable) {
  497. this.scanFunctionIsUseable = false;
  498. // 对扫码结果进行处理
  499. //this.getscan(e.detail.result)
  500. this.getscan(this.takeCodeJp(e.detail.result))
  501. // 扫码间隔两秒
  502. setTimeout(() => {
  503. this.scanFunctionIsUseable = true;
  504. }, 1000)
  505. }
  506. },
  507. gotoscanMP(val){
  508. this.showpopup=true;
  509. // const ctx = uni.createCameraContext();
  510. // ctx.takePhoto({
  511. // quality: 'high',
  512. // success: (res) => {
  513. // this.src = res.tempImagePath
  514. // }
  515. // });
  516. },
  517. gotoscanH5(val) {
  518. console.log('111')
  519. var _this = this;
  520. uni.showModal({
  521. title: '提示',
  522. editable: true,
  523. //content: '这是一个模态弹窗',
  524. success: function(res) {
  525. if (res.confirm) {
  526. _this.getscan(res.content)
  527. } else if (res.cancel) {
  528. console.log('用户点击取消');
  529. }
  530. }
  531. });
  532. },
  533. delOutListMethod(deviceInfo) {
  534. var c = this.scanList.findIndex(item => {
  535. return item.id == deviceInfo.id
  536. })
  537. if (c > -1) {
  538. this.scanList.splice(c, 1)
  539. uni.showToast({
  540. title: "删除成功",
  541. icon: "none"
  542. })
  543. }
  544. },
  545. delOutList(item) {
  546. var _this = this;
  547. uni.showModal({
  548. title: '提示',
  549. //editable:true,
  550. content: '确认是否删除',
  551. success: function(res) {
  552. if (res.confirm) {
  553. _this.delOutListMethod(item)
  554. } else if (res.cancel) {
  555. console.log('用户点击取消');
  556. }
  557. }
  558. });
  559. },
  560. getscan(val) {
  561. console.log(val);
  562. this.showpopup=true;
  563. var c = this.scanList.find(item => {
  564. return item.code == val
  565. })
  566. if (c) {
  567. return
  568. }
  569. uni.showLoading({
  570. title: "加载中",
  571. mask: true,
  572. })
  573. API.queryDeviceByCode({
  574. code: val,
  575. }).then((res) => {
  576. uni.hideLoading();
  577. if (res.data.deviceInfo) {
  578. console.log(res.data.deviceInfo)
  579. this.nowscan=res.data.deviceInfo;
  580. var c = this.scanList.find(item => {
  581. return item.id == res.data.deviceInfo.id
  582. })
  583. if (c) {
  584. uni.showToast({
  585. title: "已存在,添加失败",
  586. icon: "none"
  587. })
  588. } else {
  589. this.scanList.push(res.data.deviceInfo)
  590. uni.showToast({
  591. title: "添加成功",
  592. icon: "none"
  593. })
  594. }
  595. } else {
  596. uni.showToast({
  597. title: "二维码无效",
  598. icon: "none"
  599. })
  600. this.nowscan={}
  601. }
  602. }).catch(error => {
  603. uni.showToast({
  604. title: error,
  605. icon: "none"
  606. })
  607. })
  608. },
  609. getList() {
  610. uni.showLoading({
  611. title: "加载中",
  612. mask: true,
  613. })
  614. API.outRecordDeviceById({
  615. recordId: this.id,
  616. pageSize: this.listFrom.pageSize,
  617. pageIndex: this.listFrom.pageIndex,
  618. }).then((res) => {
  619. uni.hideLoading();
  620. if (this.listFrom.pageIndex == 1) {
  621. this.list = res.data.data;
  622. } else {
  623. this.list = [
  624. ...this.list,
  625. ...res.data.data
  626. ];
  627. }
  628. this.recordsTotal = res.data.recordsTotal;
  629. }).catch(error => {
  630. uni.showToast({
  631. title: error,
  632. icon: "none"
  633. })
  634. })
  635. },
  636. myLoadmore() {
  637. this.listFrom.pageIndex += 1;
  638. this.getList();
  639. },
  640. changeShow(item) {
  641. console.log(item.show)
  642. console.log(item)
  643. if (item.show) {
  644. item.show = false;
  645. } else {
  646. item.show = true;
  647. }
  648. this.$forceUpdate()
  649. }
  650. }
  651. }
  652. </script>
  653. <style scoped lang="scss">
  654. .bottom {
  655. background-color: #fff;
  656. margin-top: 44rpx;
  657. padding: 16rpx 32rpx;
  658. z-index: 999;
  659. position: fixed;
  660. left: 0;
  661. right: 0;
  662. bottom: 0;
  663. // uni-button{
  664. // border-radius: 8px;
  665. // background: linear-gradient(180deg, rgba(22,119,255,1) 0%,rgba(16,98,213,1) 100%);
  666. // color: rgba(255, 255, 255, 1);
  667. // font-size: 32rpx;
  668. // line-height: 88rpx;
  669. // }
  670. }
  671. page {
  672. padding-bottom: 100px;
  673. }
  674. .u-navbar {
  675. display: flex;flex-wrap: wrap;
  676. font-size: 36rpx;
  677. align-items: center;
  678. justify-content: center;
  679. flex: 1;
  680. position: absolute;
  681. left: 0;
  682. right: 0;
  683. height: 60rpx;
  684. text-align: center;
  685. flex-shrink: 0;
  686. left: 237rpx;
  687. right: 107rpx;
  688. width: 300rpx;
  689. .title {
  690. line-height: 60rpx;
  691. font-size: 36rpx;
  692. flex: 1;
  693. text {
  694. color: #2A8EFB
  695. }
  696. }
  697. }
  698. .details {
  699. background-color: #fff;
  700. margin-top: 24rpx;
  701. padding: 0 32rpx;
  702. .list-details {
  703. background-color: #fff;
  704. margin: 24rpx;
  705. padding: 22rpx 32rpx;
  706. .list-head {
  707. display: flex;flex-wrap: wrap;
  708. justify-content: space-between;
  709. align-items: center;
  710. .title {
  711. color: #333333;
  712. font-size: 32rpx
  713. }
  714. .amount {
  715. color: #777777;
  716. font-size: 24rpx;
  717. text {
  718. color: #3385FF;
  719. }
  720. /deep/.u-icon--right {
  721. margin-left: 8rpx;
  722. }
  723. }
  724. }
  725. // 清单信息
  726. .list-infos {
  727. border-radius: 8px;
  728. .infos-head {
  729. display: flex;flex-wrap: wrap;
  730. justify-content: space-between;
  731. align-items: center;
  732. margin-bottom: 24rpx;
  733. .name {
  734. color: rgba(51, 51, 51, 1);
  735. font-size: 32rpx;
  736. }
  737. .qr-code {
  738. border-radius: 4px;
  739. background: linear-gradient(180deg, rgba(22, 119, 255, 1) 0%, rgba(16, 98, 213, 1) 100%);
  740. color:red;
  741. font-size: 24rpx;
  742. width: 160rpx;
  743. text-align: center;
  744. line-height: 64rpx;
  745. text {
  746. img {
  747. vertical-align: middle;
  748. }
  749. }
  750. }
  751. }
  752. .infos {
  753. margin-top: 16rpx;
  754. display: flex;flex-wrap: wrap;
  755. color: #777777;
  756. font-size: 24rpx;
  757. .infos-1 {
  758. margin-right: 68rpx;
  759. }
  760. .infos-item {
  761. display: flex;flex-wrap: wrap;
  762. margin-bottom: 8rpx;
  763. .item-value{
  764. max-width: 200rpx;
  765. }
  766. }
  767. }
  768. .address,
  769. .remark {
  770. display: flex;flex-wrap: wrap;
  771. color: #777777;
  772. font-size: 24rpx;
  773. margin-bottom: 8rpx;
  774. }
  775. }
  776. }
  777. }
  778. .scantitle{
  779. text-align: center;
  780. font-size: 44rpx;
  781. padding-top: 20px;
  782. }
  783. .container{
  784. margin-top: 80px;
  785. }
  786. .listHead{
  787. padding-bottom: 60px;
  788. }
  789. .list {
  790. background-color: #fff;
  791. margin: 24rpx;
  792. padding: 22rpx 32rpx;
  793. // 清单信息
  794. .list-infos {
  795. border-radius: 8px;
  796. .infos-head {
  797. display: flex;flex-wrap: wrap;
  798. justify-content: space-between;
  799. align-items: center;
  800. margin-bottom: 24rpx;
  801. .name {
  802. color: rgba(51, 51, 51, 1);
  803. font-size: 32rpx;
  804. }
  805. .qr-code {
  806. border-radius: 4px;
  807. background: linear-gradient(180deg, rgba(22, 119, 255, 1) 0%, rgba(16, 98, 213, 1) 100%);
  808. color: rgba(255, 255, 255, 1);
  809. font-size: 24rpx;
  810. width: 160rpx;
  811. text-align: center;
  812. line-height: 64rpx;
  813. text {
  814. img {
  815. vertical-align: middle;
  816. }
  817. }
  818. }
  819. }
  820. .infos {
  821. margin-top: 16rpx;
  822. display: flex;flex-wrap: wrap;
  823. color: #777777;
  824. font-size: 24rpx;
  825. .infos-1 {
  826. margin-right: 68rpx;
  827. }
  828. .infos-item {
  829. display: flex;flex-wrap: wrap;
  830. margin-bottom: 8rpx;
  831. .item-value{
  832. max-width: 200rpx;
  833. }
  834. }
  835. }
  836. .address,
  837. .remark {
  838. display: flex;flex-wrap: wrap;
  839. color: #777777;
  840. font-size: 24rpx;
  841. margin-bottom: 8rpx;
  842. }
  843. }
  844. .prepare-out {
  845. padding: 24rpx;
  846. margin-top: 40rpx;
  847. border-radius: 8px;
  848. background-color: rgba(245, 246, 249, 1);
  849. .head {
  850. display: flex;flex-wrap: wrap;
  851. justify-content: space-between;
  852. align-items: center;
  853. margin-bottom: 24rpx;
  854. .amount {
  855. display: flex;flex-wrap: wrap;
  856. color: rgba(0, 81, 255, 1);
  857. font-size: 32rpx;
  858. }
  859. .unfold {
  860. color: rgba(146, 158, 165, 1);
  861. font-size: 24rpx;
  862. position: relative;
  863. .u-icon--right {
  864. margin-left: 8rpx;
  865. }
  866. }
  867. .option {
  868. width: 160rpx;
  869. height: 32rpx;
  870. background-color: #fff;
  871. position: absolute;
  872. top: 30rpx;
  873. right: 0;
  874. }
  875. }
  876. // 编号
  877. .serial-number {
  878. display: flex;flex-wrap: wrap;
  879. justify-content: space-between;
  880. align-items: center;
  881. margin-top: 16rpx;
  882. color: rgba(51, 51, 51, 1);
  883. font-weight: bold;
  884. .itemLine{
  885. width: 100%;
  886. .view {
  887. float: right;
  888. color: #0051ff;
  889. }
  890. }
  891. .item {
  892. display: flex;flex-wrap: wrap;
  893. }
  894. }
  895. }
  896. // 备注
  897. .textarea {
  898. width: 100%;
  899. height: 80rpx;
  900. line-height: 80rpx;
  901. text-indent: 24rpx;
  902. margin-top: 24rpx;
  903. background-color: rgba(241, 242, 245, 1);
  904. color: rgba(136, 136, 136, 1);
  905. border-radius: 8px;
  906. font-family: Microsoft Yahei;
  907. font-size: 28rpx;
  908. }
  909. }
  910. </style>