index.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <template>
  2. <view>
  3. <view class="deliver">
  4. <view v-for="(item, index) in deliverExtends" :key="index">
  5. <view class="extends">
  6. <view class="exTop ddflex">
  7. <view class="fahuo">发货单{{ index + 1 }}<text class="state">{{ item.state == 1 ? '待发货' : item.state == 2 ? '已发货' : '' }}</text></view>
  8. <view v-if="item.state == 1">
  9. <switch :checked="item.isSplit" class="switch" @change="splitDeliver($event,index)"></switch>
  10. 拆单
  11. </view>
  12. </view>
  13. <view class="cont" v-for="(it, idx) in item.extendDTOList" :key="idx">
  14. <view class="ddflex">
  15. <img :src="it.pic" class="eimg" />
  16. <view class="zhinfo fflex">
  17. <view class="zhtit" v-text="it.productName"></view>
  18. <view class="guige">
  19. <!-- <span>规格:</span> -->
  20. <span v-if="JSON.parse(it.history).productNumber != '' || JSON.parse(it.history).productNumber != null">编码:{{ JSON.parse(it.history).productNumber }}</span>
  21. </view>
  22. </view>
  23. <view class="num">×{{ it.deliverQuantity }}</view>
  24. </view>
  25. <view class="bc-ship ddflex" v-if="it.isSplit">
  26. <view class="">本次拆单</view>
  27. <input v-model="it.currentQuantity" class="ship-ipt"/>
  28. </view>
  29. </view>
  30. <view class="deliverId ddflex">
  31. <span class="deliveri">发货号:{{ item.id }}</span>
  32. <!-- <span class="supplierName">{{ item.supplierName }}</span> -->
  33. </view>
  34. <view v-if="item.state == 1" class="btns ddflex">
  35. <view class="btn" v-if="item.isSplit" @click="deliverSplit(item,index)">拆单</view>
  36. <view class="btn" v-else @click="deliverGoods(item)">确认发货</view>
  37. </view>
  38. </view>
  39. </view>
  40. </view>
  41. </view>
  42. </template>
  43. <script>
  44. const req = require('../../utils/request');
  45. const api = require('../../utils/api');
  46. export default {
  47. data() {
  48. return {
  49. deliverExtends: '',
  50. id: '',
  51. merchantId: ''
  52. };
  53. },
  54. onLoad(opt) {
  55. this.id = opt.id;
  56. this.merchantId = opt.merchantId;
  57. },
  58. onShow() {
  59. this.deliverExtend();
  60. },
  61. methods: {
  62. deliverGoods(item) {
  63. console.log('发货')
  64. this.jumpUrl('/merchant/express?id=' + item.orderId + '&merchantId=' + this.merchantId+'&deliverId='+item.id);
  65. },
  66. // 获取发货单号
  67. deliverExtend() {
  68. req.getRequest(
  69. '/api/v3/order/deliver/page',
  70. {
  71. orderId: this.id
  72. },
  73. data => {
  74. this.deliverExtends = data.list;
  75. console.log(data);
  76. }
  77. );
  78. },
  79. jumpUrl(url) {
  80. uni.navigateTo({
  81. url: url
  82. });
  83. },
  84. splitDeliver(e,index){
  85. console.log('拆单',e);
  86. if(e.detail.value){
  87. this.deliverExtends.map((item,idx)=>{
  88. if(idx==index){
  89. item.extendDTOList.map(it=>{
  90. it.isSplit = true;
  91. it.currentQuantity = it.deliverQuantity;
  92. })
  93. item.isSplit = true;
  94. }
  95. return item;
  96. })
  97. }else{
  98. this.deliverExtends.map((item,idx)=>{
  99. if(idx==index){
  100. item.extendDTOList.map(it=>{
  101. it.isSplit = false;
  102. it.currentQuantity = 0;
  103. })
  104. item.isSplit = false;
  105. }
  106. return item;
  107. })
  108. }
  109. this.$forceUpdate();
  110. },
  111. judgeDeliver(index){
  112. let formItemList = this.deliverExtends[index].extendDTOList;
  113. let count = 0;
  114. let total = 0
  115. formItemList.map(it=>{
  116. count += it.currentQuantity;
  117. total += it.deliverQuantity;
  118. })
  119. if(count == 0){
  120. req.msg('请输入要拆分的数量');
  121. return false;
  122. }
  123. for(var i = 0; i < formItemList.length; i++){
  124. if(formItemList[i].currentQuantity > formItemList[i].deliverQuantity){
  125. req.msg('拆出数量不能超过可拆单数');
  126. return false;
  127. }
  128. }
  129. if(total == count) {
  130. req.msg('拆单数量与当前发货表数量一致');
  131. return false;
  132. }
  133. return true;
  134. },
  135. deliverSplit(item,index){
  136. if(!this.judgeDeliver(index)) return false;
  137. let params = this.deliverExtends[index]
  138. // req.postRequest(api.order_deliver_split,params,data=>{
  139. // this.deliverExtend();
  140. // })
  141. }
  142. }
  143. };
  144. </script>
  145. <style>
  146. @import "./index.css";
  147. </style>