select-source-purchase-order.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  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. buttonSaveList: [{ code: 'add', title: mixins.$t('confirm'), width: '120rpx', }],
  17. contentSaveList: [{ code: 'need', title: '退货总额', type: 'str' }, { code: 'amount', content: 0, type: 'number' }],
  18. },
  19. /**
  20. * @desc : 加载数据源
  21. * @date : 2024/2/1 15:49
  22. * @author : 于继渤
  23. */
  24. getData(params) {
  25. return this.excute(this.data.service, this.data.service.selectInboundAndItem, params);
  26. },
  27. /**
  28. * @desc : 加载数据源
  29. * @date : 2024/2/1 15:49
  30. * @author : 于继渤
  31. */
  32. handleSearchData(tableData) {
  33. console.log('handleSearchData', tableData)
  34. if (tableData && tableData.length > 0) {
  35. tableData.forEach(res => {
  36. if (res.inboundItemList && res.inboundItemList.length > 0) {
  37. res.inboundItemList.forEach(item => {
  38. //处理图片
  39. if (item.skuImages) {
  40. item['imagesUrl'] = item.skuImages.length > 0 ? item.skuImages[0].url : null
  41. }
  42. })
  43. }
  44. })
  45. }
  46. this.setData({
  47. tableData:tableData,
  48. contentSaveList: [{ code: 'need', title: '退货总额', type: 'str' }, { code: 'amount', content: 0, type: 'number' }]
  49. })
  50. },
  51. /**
  52. * @desc : 设置查询参数
  53. * @date : 2024/2/1 15:49
  54. * @author : 于继渤
  55. */
  56. setSearchParams(params) {
  57. params.intoType = Constants.intoType.pur
  58. params.intoStatus = Constants.intoStatus.inBounded
  59. params.fromId = this.data.id
  60. return params
  61. },
  62. /**
  63. * @desc : 父级商品信息选择
  64. * @date : 2024/2/1 15:49
  65. * @author : 于继渤
  66. */
  67. onListItemChange(e) {
  68. let tableData = this.data.tableData
  69. let index = e.currentTarget.dataset.index
  70. tableData.forEach(item => {
  71. item.checked = false
  72. item.inboundItemList.forEach(it => {
  73. it.checked = false
  74. })
  75. })
  76. tableData[index].checked = e.detail
  77. let inboundItemList = tableData[index].inboundItemList
  78. if (inboundItemList && inboundItemList.length > 0) {
  79. inboundItemList.forEach(res => {
  80. res.checked = tableData[index].checked
  81. })
  82. }
  83. //商品不能跨入库单选择
  84. this.setData({
  85. tableData: tableData
  86. })
  87. this.calculateTotal()
  88. },
  89. /**
  90. * @desc : 子级商品信息选择
  91. * @date : 2024/2/1 15:49
  92. * @author : 于继渤
  93. */
  94. onChangeItemCheckbox(e) {
  95. let tableData = this.data.tableData
  96. let index = e.currentTarget.dataset.index
  97. let index_ = e.currentTarget.dataset.index_
  98. // tableData.forEach(item => {
  99. // item.checked = false
  100. // item.inboundItemList.forEach(it => {
  101. // it.checked = false
  102. // })
  103. // })
  104. tableData[index].inboundItemList[index_].checked = e.detail
  105. this.setData({
  106. tableData: tableData
  107. })
  108. this.calculateTotal()
  109. },
  110. /**
  111. * @desc : 全退
  112. * @date : 2024/2/1 15:49
  113. * @author : 于继渤
  114. */
  115. onCheckboxChange(e) {
  116. let checked = e.detail.checked
  117. let tableData = this.data.tableData
  118. tableData.forEach(res => {
  119. res.checked = checked
  120. if (res.inboundItemList && res.inboundItemList.length > 0) {
  121. res.inboundItemList.forEach(item => {
  122. item.checked = checked
  123. })
  124. }
  125. })
  126. this.setData({
  127. tableData: tableData
  128. })
  129. this.calculateTotal()
  130. },
  131. /**
  132. * @desc : 计算金额/过滤出已选数据
  133. * @date : 2024/2/1 15:49
  134. * @author : 于继渤
  135. */
  136. calculateTotal() {
  137. let tableData = this.data.tableData
  138. let contentSaveList = this.data.contentSaveList
  139. let choooseInboundItemList = []
  140. let returnTotalAmount = Number(0)
  141. //过滤出已选数据
  142. tableData.forEach(res => {
  143. if (res.inboundItemList && res.inboundItemList.length > 0) {
  144. res.inboundItemList.forEach(item => {
  145. if (item.checked) {
  146. // item.itemQty = Number(item.canReturnQty )
  147. // item.itemQtyMin = Number(item.canReturnQty)
  148. // item.itemQtyMax = Number(-1)
  149. // item.itemAmt = Number(item.canReturnQty * item.priceInto)
  150. choooseInboundItemList.push(item)
  151. }
  152. })
  153. }
  154. })
  155. if (choooseInboundItemList && choooseInboundItemList.length > 0) {
  156. choooseInboundItemList.forEach(res => {
  157. returnTotalAmount += Number(res.intoingQty * res.priceInto)
  158. })
  159. }
  160. contentSaveList[1]['content'] = returnTotalAmount.toFixed(2)
  161. this.setData({
  162. returnTotalAmount: returnTotalAmount,
  163. choooseInboundItemList: choooseInboundItemList,
  164. contentSaveList: contentSaveList,
  165. })
  166. },
  167. /**
  168. * @desc : 跳转退货页
  169. * @date : 2024/2/1 15:49
  170. * @author : 于继渤
  171. */
  172. toAdd() {
  173. let choooseInboundItemList = this.data.choooseInboundItemList
  174. let fromNo = []
  175. choooseInboundItemList.forEach(res => {
  176. if (fromNo.indexOf(res.intoNo) == -1) {
  177. fromNo.push(res.intoNo)
  178. }
  179. res.sPurId = res.fromId
  180. res.sPurItemId = res.fromItemId
  181. res.fromId = res.intoId
  182. res.fromItemId = res.intoItemId
  183. res.sIntoId = res.intoId
  184. res.sIntoItemId = res.intoItemId
  185. res.intoingQty = res.decimalPlaces ? res.intoingQty.toFixed(res.decimalPlaces) : res.intoingQty
  186. res.returnQty = null
  187. res.returnAmt = null
  188. delete res['itemId']
  189. })
  190. let that = this
  191. let formData = that.data.formData
  192. let item = that.data.item
  193. item.choooseInboundItemList = choooseInboundItemList
  194. item.fromNo = fromNo
  195. item.fromId = choooseInboundItemList[0].intoId
  196. item.sPurId = item.purId
  197. if (this.data.id) {
  198. wx.navigateTo({
  199. url: this.data.route.addReturn.url,
  200. success: function (res) {
  201. // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的,实际中,需要从route中读取
  202. res.eventChannel.emit('params', {
  203. formMode: 'add',
  204. item: JSON.stringify(item)
  205. })
  206. }
  207. })
  208. } else {
  209. const eventChannel = this.getOpenerEventChannel();
  210. eventChannel.emit('bindData', {
  211. data: {
  212. itemList: choooseInboundItemList,
  213. beforeSumAmount: that.data.returnTotalAmount * -1
  214. }
  215. })
  216. wx.navigateBack({
  217. data: 1
  218. })
  219. }
  220. },
  221. /**
  222. * 生命周期函数--监听页面加载
  223. */
  224. loadInit() {
  225. this.setData({
  226. searchText: this.data.item.purNo
  227. })
  228. },
  229. })