select-source-purchase-order.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. const Constants = require('@/utils/Constants.js');
  2. const util = require('@/utils/util.js')
  3. const mixins = require('@/mixins/index.js')
  4. Page({
  5. mixins: [mixins],
  6. /**
  7. * 页面的初始数据
  8. */
  9. data: {
  10. returnTotalAmount: 0,
  11. allChecked: false,
  12. // 路由
  13. routeObjName: 'inbound',
  14. tableData: [],
  15. choooseInboundItemList: [],
  16. },
  17. /**
  18. * @desc : 加载数据源
  19. * @date : 2024/2/1 15:49
  20. * @author : 于继渤
  21. */
  22. getData(params) {
  23. return this.excute(this.data.service, this.data.service.selectInboundAndItem, params);
  24. },
  25. /**
  26. * @desc : 父级商品信息选择
  27. * @date : 2024/2/1 15:49
  28. * @author : 于继渤
  29. */
  30. onListItemChange(e) {
  31. let tableData = this.data.tableData
  32. let index = e.currentTarget.dataset.index
  33. tableData[index].checked = !tableData[index].checked
  34. let inboundItemList = tableData[index].inboundItemList
  35. if (inboundItemList && inboundItemList.length > 0) {
  36. inboundItemList.forEach(res => {
  37. res.checked = tableData[index].checked
  38. })
  39. }
  40. this.setData({
  41. tableData: tableData
  42. })
  43. this.calculateTotal()
  44. },
  45. /**
  46. * @desc : 子级商品信息选择
  47. * @date : 2024/2/1 15:49
  48. * @author : 于继渤
  49. */
  50. onChangeItemCheckbox(e) {
  51. let tableData = this.data.tableData
  52. let index = e.currentTarget.dataset.index
  53. let index_ = e.currentTarget.dataset.index_
  54. console.log(index, index_)
  55. tableData[index].inboundItemList[index_].checked = !tableData[index].inboundItemList[index_].checked
  56. this.setData({
  57. tableData: tableData
  58. })
  59. this.calculateTotal()
  60. },
  61. /**
  62. * @desc : 全退
  63. * @date : 2024/2/1 15:49
  64. * @author : 于继渤
  65. */
  66. onCheckboxChange(e) {
  67. console.log(e.detail.checked)
  68. let checked = e.detail.checked
  69. let tableData = this.data.tableData
  70. tableData.forEach(res => {
  71. res.checked = checked
  72. if (res.inboundItemList && res.inboundItemList.length > 0) {
  73. res.inboundItemList.forEach(item => {
  74. item.checked = checked
  75. })
  76. }
  77. })
  78. this.setData({
  79. tableData: tableData
  80. })
  81. this.calculateTotal()
  82. },
  83. /**
  84. * @desc : 计算金额/过滤出已选数据
  85. * @date : 2024/2/1 15:49
  86. * @author : 于继渤
  87. */
  88. calculateTotal() {
  89. let tableData = this.data.tableData
  90. let choooseInboundItemList = []
  91. //过滤出已选数据
  92. tableData.forEach(res => {
  93. if (res.inboundItemList && res.inboundItemList.length > 0) {
  94. res.inboundItemList.forEach(item => {
  95. if (item.checked) {
  96. item.itemQty = Number(item.rejectQty * -1)
  97. item.itemQtyMax = Number(item.rejectQty * -1)
  98. item.priceReturn = Number(item.priceInto * -1)
  99. item.itemAmt = Number(item.rejectQty * item.priceInto * -1)
  100. choooseInboundItemList.push(item)
  101. }
  102. })
  103. }
  104. })
  105. let returnTotalAmount = Number(0)
  106. //计算已选合计金额
  107. choooseInboundItemList.forEach(res => {
  108. returnTotalAmount += Number(res.rejectQty * res.priceInto)
  109. })
  110. this.setData({
  111. choooseInboundItemList: choooseInboundItemList,
  112. returnTotalAmount: returnTotalAmount
  113. })
  114. },
  115. /**
  116. * @desc : 跳转退货页
  117. * @date : 2024/2/1 15:49
  118. * @author : 于继渤
  119. */
  120. toAdd() {
  121. let choooseInboundItemList = this.data.choooseInboundItemList
  122. wx.navigateTo({
  123. url: this.data.route.addReturn.url,
  124. success: function (res) {
  125. // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的,实际中,需要从route中读取
  126. res.eventChannel.emit('params', {choooseInboundItemList:choooseInboundItemList})
  127. }
  128. })
  129. },
  130. /**
  131. * 生命周期函数--监听页面加载
  132. */
  133. onLoad(options) {
  134. },
  135. })