scan.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <template>
  2. <view class="page" :style="{'min-height':h+'px', 'padding-top':mt+'px'}">
  3. <cus-header title='扫码入库'></cus-header>
  4. <div class="boxs" v-if="list.length">
  5. <div class="box" v-for="(item,index) in list" :key="item.id">
  6. <div class="name">{{item.item.itemName}}</div>
  7. <div class="info">规格信息:<span>{{item.itemSku.skuName||''}} / {{item.itemSku.unit||''}}</span></div>
  8. <div class="cz">
  9. <div class="pre">
  10. <div class="text">入库</div>
  11. <div class="num">
  12. <u-number-box v-model="item.quantity" button-size="48" :integer="true" inputWidth="82rpx"
  13. @change="e=>changeNum(e,index)" bgColor="#F5F8FA"></u-number-box>
  14. </div>
  15. </div>
  16. <div class="pre">
  17. <div class="text">金额</div>
  18. <div class="num">
  19. <u-number-box v-model="item.amount" :integer="false" :canSmall="true" button-size="48" inputWidth="82rpx"
  20. @change="e=>changeMoney(e,index)" bgColor="#F5F8FA"></u-number-box>
  21. <span>元</span>
  22. </div>
  23. </div>
  24. </div>
  25. </div>
  26. </div>
  27. <template v-else>
  28. <page-empty :height="'calc(100vh - 180px)'"></page-empty>
  29. </template>
  30. <div class="btns">
  31. <div class="btn" @tap="scan">扫码添加</div>
  32. <div class="btn" @tap="save">保存</div>
  33. </div>
  34. </view>
  35. </template>
  36. <script>
  37. import pageEmpty from '../components/pageEmpty/index.vue'
  38. export default {
  39. components:{ pageEmpty },
  40. data(){
  41. return {
  42. list:[]
  43. }
  44. },
  45. methods:{
  46. scan(){
  47. uni.scanCode({
  48. success: (res) => {
  49. let d = JSON.parse(res.result);
  50. if(!d.hasOwnProperty('skuId')) return
  51. let fi = this.list.findIndex(l=>l.skuId==d.skuId);
  52. if(fi>=0){
  53. this.$set(this.list[fi],'quantity',++this.list[fi].quantity);
  54. }else{
  55. d.quantity = 1;
  56. d.amount = 0;
  57. this.list = [...this.list,d]
  58. }
  59. }
  60. })
  61. },
  62. changeNum(e,index){
  63. this.$set(this.list[index],'quantity',e.value);
  64. },
  65. changeMoney(e,index){
  66. this.$set(this.list[index],'amount',e.value);
  67. },
  68. save(){
  69. this.getOpenerEventChannel().emit('addGoods', this.list);
  70. uni.navigateBack();
  71. }
  72. }
  73. }
  74. </script>
  75. <style scoped lang="less">
  76. ::v-deep .u-number-box__minus{
  77. width: 25px !important;
  78. }
  79. .page{
  80. background: #F5F8FA;
  81. padding-bottom: 168rpx;
  82. box-sizing: border-box;
  83. .boxs{
  84. padding: 0 24rpx;
  85. box-sizing: border-box;
  86. .box{
  87. background: #FFFFFF;
  88. border-radius: 16rpx;
  89. padding: 32rpx 24rpx 36rpx;
  90. margin-top: 20rpx;
  91. .name{
  92. font-family: PingFang-SC, PingFang-SC;
  93. font-weight: bold;
  94. font-size: 30rpx;
  95. color: #1D2129;
  96. text-align: left;
  97. }
  98. .info{
  99. font-family: PingFangSC, PingFang SC;
  100. font-weight: 400;
  101. font-size: 24rpx;
  102. color: #86909C;
  103. text-align: left;
  104. margin-top: 24rpx;
  105. span{
  106. color: #4E5969;
  107. }
  108. }
  109. .cz{
  110. margin-top: 46rpx;
  111. display: flex;
  112. justify-content: space-between;
  113. .pre{
  114. width: calc(50% - 30rpx);
  115. display: flex;
  116. align-items: center;
  117. justify-content: space-between;
  118. .text{
  119. font-family: PingFangSC, PingFang SC;
  120. font-weight: 400;
  121. font-size: 24rpx;
  122. color: #86909C;
  123. line-height: 26rpx;
  124. text-align: left;
  125. }
  126. .num{
  127. display: flex;
  128. align-items: center;
  129. span{
  130. font-family: PingFangSC, PingFang SC;
  131. font-weight: 400;
  132. font-size: 24rpx;
  133. color: #1D2129;
  134. text-align: left;
  135. padding-left: 8rpx;
  136. }
  137. }
  138. }
  139. }
  140. }
  141. }
  142. .btns{
  143. width: 100%;
  144. height: 148rpx;
  145. background: #FFFFFF;
  146. padding: 20rpx 24rpx 0;
  147. box-sizing: border-box;
  148. display: flex;
  149. justify-content: space-between;
  150. position: fixed;
  151. left: 0;
  152. bottom: 0;
  153. .btn{
  154. width: calc(50% - 11rpx);
  155. height: 88rpx;
  156. background: #198CFF;
  157. border-radius: 16rpx;
  158. font-family: PingFang-SC, PingFang-SC;
  159. font-weight: bold;
  160. font-size: 32rpx;
  161. color: #FFFFFF;
  162. line-height: 88rpx;
  163. text-align: center;
  164. letter-spacing: 2rpx;
  165. }
  166. }
  167. }
  168. </style>