detail.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <template>
  2. <div class='replenishment-stock-up-detail fs-14'>
  3. <div class="list bgc-fff ">
  4. <van-sticky :offset-top="offsetTop">
  5. <div class="row kitbox bgc-fff" >
  6. <div class="box-flex-1 pl10">商品名称</div>
  7. <div class="tc">现料数</div>
  8. <div class="tc">缺料数</div>
  9. <div class="tc">操作</div>
  10. </div>
  11. </van-sticky>
  12. <div v-for="(item, i) in list" :key="i" class="row kitbox">
  13. <div class="box-flex-1 pl10 ellipsis">{{item.drugName}}</div>
  14. <div class="tc">{{item.qty}}</div>
  15. <div class="tc">{{item.upInventory}}</div>
  16. <div class="tc c-red"><span @click="del(item, i)">删除</span></div>
  17. </div>
  18. </div>
  19. <div class="btns">
  20. <div class="pl15 pr8">
  21. <van-button plain @click="toAdd" block round type="info">新增商品</van-button>
  22. </div>
  23. <div class="pl8 pr15">
  24. <van-button block @click="submit" round type="info">生成备货单</van-button>
  25. </div>
  26. </div>
  27. <!-- <BotFloatButton :fix="true">下一步,生成备货单</BotFloatButton> -->
  28. </div>
  29. </template>
  30. <script>
  31. import medicineAbinetApi from '@/api/api-medicineAbinet'
  32. export default{
  33. name: 'replenishmentStockUpDetail',
  34. data(){
  35. return {
  36. deviceId: this.$route.query.deviceId,
  37. list: [],
  38. oriData: []
  39. }
  40. },
  41. created() {
  42. this.$EventBus.$on('drug-sel', (item)=>{
  43. item.qty = 0
  44. item.upInventory = 5
  45. this.list.push(item)
  46. console.log('unusedAisles', this.oriData[0].unusedAisles)
  47. })
  48. this.getDetialOutOfStock()
  49. },
  50. methods:{
  51. getDetialOutOfStock(){
  52. this.$loading('加载中..')
  53. let p = {
  54. ids: this.deviceId
  55. }
  56. console.log('params', p)
  57. medicineAbinetApi
  58. .getDetialOutOfStock(p)
  59. .then(res=>{
  60. console.log('getDetialOutOfStock', res)
  61. this.$toast.clear()
  62. var data = res.detailModelList[0]
  63. data.canPickCount = (data.unusedAisles) + (data.children&&data.children.length||0)
  64. this.oriData = res.detailModelList
  65. this.list = res.detailModelList&&res.detailModelList[0].children
  66. })
  67. .catch(err=>{
  68. console.error(err)
  69. })
  70. },
  71. submit(){
  72. if(!this.oriData[0].children.length){
  73. this.$toast('请选择药品')
  74. return
  75. }
  76. this.$loading('保存中..')
  77. var list = _.map(this.oriData, v=>{
  78. return {
  79. deviceId: v.id,
  80. drugs: _.map(v.children, d=>{
  81. return {
  82. drugId: d.id,
  83. qty: d.upInventory
  84. }
  85. })
  86. }
  87. })
  88. var p = {
  89. list
  90. }
  91. console.log('params', p)
  92. medicineAbinetApi
  93. .baseUpCreateUp({
  94. userId: this.user.id,
  95. jsonData: JSON.stringify(p),
  96. })
  97. .then(res => {
  98. if(res.status == 200){
  99. // this.setBackRefresh()
  100. this.$emitRefreshPage('replenishmentStockUpDeviceList')
  101. this.$toast('生成成功')
  102. history.back()
  103. }
  104. })
  105. .catch(err=>{
  106. console.error(err)
  107. })
  108. },
  109. del(item, k){
  110. this.list.splice(k, 1)
  111. console.log('unusedAisles', this.oriData[0].unusedAisles)
  112. },
  113. toAdd(){
  114. var device = this.oriData[0]
  115. if(device.canPickCount <= this.list.length){
  116. this.$toast(`已达到药柜容量,无法在添加`)
  117. return
  118. }
  119. this.gotoUrl('/drugList', {deviceId: device.id})
  120. }
  121. },
  122. }
  123. </script>
  124. <style lang='scss' scoped>
  125. .replenishment-stock-up-detail{
  126. padding-bottom: 100px;
  127. .list{
  128. .row{
  129. padding: 10px 0;
  130. border-bottom: 1px solid #e1e1e1;
  131. >div:nth-child(2), >div:nth-child(3), >div:nth-child(4){
  132. width: 80px;
  133. }
  134. &:last-child{
  135. border-bottom: 0;
  136. }
  137. }
  138. }
  139. .btns{
  140. position: fixed;
  141. width: 100%;
  142. left: 0;
  143. bottom: 20px;
  144. display: -webkit-box;
  145. >div{
  146. width: 50%;
  147. }
  148. }
  149. }
  150. </style>