params.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. import { dateFormatter } from '@/utils/globalFun'
  2. import { mul } from '@/utils/number'
  3. import { orderParamsRoute } from './params/index.js'
  4. export function orderParams(type) {
  5. return orderParamsRoute(type)
  6. }
  7. // 获取回款计划
  8. function getReturnPlant(pageForm, totalMoney) {
  9. let planList = []
  10. if (Array.isArray(pageForm.paybackTableData) && pageForm.paybackTableData.length > 0) {
  11. planList = pageForm.paybackTableData.map((p, index) => {
  12. return {
  13. code: index + 1,
  14. time: p.time ? dateFormatter(p.time, 'yyyy-MM-dd') : '-',
  15. money: mul(p.money, 100) || 0
  16. }
  17. })
  18. if (planList.length > 0) {
  19. planList.push({
  20. code: '合计',
  21. time: '-',
  22. money: mul(totalMoney, 100) || 0
  23. })
  24. }
  25. } else {
  26. planList.push({
  27. code: '合计',
  28. time: pageForm.expectedPaymentDeadlineTime,
  29. money: mul(totalMoney, 100) || 0
  30. })
  31. }
  32. return {
  33. day_num: pageForm.paymentDeadline - 0,
  34. expect_time: pageForm.expectedPaymentDeadlineTime,
  35. plant_list: planList,
  36. }
  37. }
  38. function getSaleMoney(pageForm, totalMoney) {
  39. let arr = []
  40. const salePerson = pageForm.salePerson
  41. const salePersonTableList = pageForm.salePersonTableList
  42. if (Array.isArray(salePerson)) {
  43. if (salePerson.length === 1) {
  44. arr = salePerson.map(s => {
  45. return {
  46. id: s,
  47. money: mul(totalMoney, 100),
  48. channel: pageForm.saleWay[1]
  49. }
  50. })
  51. } else if (salePerson.length > 1) {
  52. arr = salePersonTableList.filter(r => r.id).map(r => {
  53. return {
  54. id: r.id,
  55. money: mul(r.money, 100) || 0,
  56. channel: r.saleWay[1]
  57. }
  58. })
  59. }
  60. }
  61. return arr
  62. }
  63. /* 创建订单参数整理
  64. {
  65. "order_status": 0,
  66. "orderStatus": 0,
  67. "buySubject": 1,
  68. "companyName": "Example Corp",
  69. "paybackCompany": "Acme Inc",
  70. "personName": "John Doe",
  71. "personPhone": "1234567890",
  72. "userPhone": "1234567890",
  73. "emptyPhone": 0,
  74. "orderCode": "ORD12345",
  75. "productArr": [
  76. {
  77. "id": 123456789,
  78. "product_code": "VIP_PRO",
  79. "activity_code": "SUMMER2023",
  80. "order_code": "ORD12345",
  81. "phone": "1234567890",
  82. "amount": 99900,
  83. "original_price": 129900,
  84. "tactics": 3,
  85. "reqSubject": 2,
  86. "reqCompanyName": "Example Corp",
  87. "product_type": "subscription",
  88. "service_type": 1,
  89. "linked_orderId": 123456788,
  90. "paybackOpenServer": true,
  91. "filter": {
  92. "buyAccountCount": 5,
  93. "giftAccountCount": 2,
  94. "cutAccount": 1,
  95. "buy_cycle": 12,
  96. "buy_type": 2,
  97. "give_cycle": 3,
  98. "give_type": 2,
  99. "finalAccountCount": 6,
  100. "finalAreaCount": 3,
  101. "supplement": "Additional support package"
  102. }
  103. }
  104. ],
  105. "contractMoney": 10000,
  106. "order_money": 9500,
  107. "channelCommission": 500,
  108. "zeroOrderType": "none",
  109. "contract": {
  110. "contractId": "CT123",
  111. "signDate": "2023-01-01"
  112. },
  113. "returnPlant": {
  114. "planId": "RP123",
  115. "amount": 10000,
  116. "dueDate": "2023-06-01"
  117. },
  118. "saleMoney": [
  119. {
  120. "salesId": "S100",
  121. "amount": 5000,
  122. "date": "2023-01-15"
  123. }
  124. ],
  125. "actPrice": {
  126. "VIP_PRO": 89900
  127. },
  128. "payType": "credit",
  129. "orderChannel": "web",
  130. "paymentUser": "Jane Smith",
  131. "orderRemark": "Urgent order",
  132. "save": 2
  133. }
  134. */
  135. export function createOrderParams(payload = {}) {
  136. const { pageForm, productInfoList, pageTotalMoney, orderMoney0Type, salesMoneyTotal } = payload
  137. const returnPlant = getReturnPlant(pageForm, salesMoneyTotal)
  138. const saleMoney = getSaleMoney(pageForm, salesMoneyTotal)
  139. let productArr = []
  140. if (Array.isArray(productInfoList) && productInfoList.length > 0) {
  141. productArr = productInfoList.map(product => {
  142. const productCardInfo = product.productCardInfo
  143. const productType = productCardInfo.result?.productCode
  144. if (productType) {
  145. const params = orderParams(productType).getProductArrParams({
  146. type: productType,
  147. pageForm,
  148. productInfo: product,
  149. })
  150. // 编辑订单使用此商品明细表id对应商品,如无此id后端将做替换
  151. const id = productCardInfo.id
  152. if (id && params) {
  153. params.id = id
  154. }
  155. return params
  156. }
  157. })
  158. productArr = productArr.filter(r => !!r)
  159. }
  160. const contract = {
  161. contractId: '', // 归档协议编号,在创建订单期间不会上传。在订单详情处上传
  162. contractCode: pageForm.signCode, // 线下协议编号
  163. contractStatus: pageForm.agreeStatus - 0, // 协议状态
  164. e_contract_type: pageForm.e_contract_type, // 电子协议类型: 1有电子章 2无电子章
  165. e_contract_userA_type: pageForm.e_contract_userA_type, // 协议甲方类型: 1个人 2企业
  166. e_contract_userA_name: pageForm.e_contract_userA_name, // 协议甲方
  167. e_contract_userA_contacts_name: pageForm.e_contract_userA_contacts_name, // 协议甲方联系人
  168. e_contract_userA_contacts_tel: pageForm.e_contract_userA_contacts_tel, // 协议甲方联系方式
  169. e_contract_userA_contacts_address: pageForm.e_contract_userA_contacts_address, // 协议甲方联系地址
  170. e_contract_userB_contacts_name: pageForm.e_contract_userB_contacts_name, // 协议乙方联系人
  171. e_contract_remark: pageForm.e_contract_remark, // 协议备注
  172. // contract_archive_status: pageForm.contract_archive_status, // 协议归档状态 1 已归档 0 未归档
  173. contractTime: pageForm.signTime ? dateFormatter(pageForm.signTime, 'yyyy-MM-dd') : '', // 协议签订时间
  174. // contract_file_url: pageForm.contract_file_url, // 上传合同地址
  175. // contract_archive_time: pageForm.contract_archive_time, // 协议归档时间
  176. // contract_archive_num: pageForm.contract_archive_num - 0, // 协议归档份数
  177. }
  178. const p = {
  179. order_status: pageForm.orderStatus, // 订单状态 0 未完成 1 已完成(审核通过后可以修改为已完成)
  180. orderCode: pageForm.orderCode, // 订单编号
  181. buySubject: pageForm.buySubject,
  182. companyName: pageForm.companyName, // 公司名称
  183. paybackCompany: pageForm.signUnit, // 签约主体
  184. personName: pageForm.username, // 联系人
  185. personPhone: pageForm.userTel, // 联系人手机号
  186. userPhone: pageForm.accountTel, // 开通服务手机号
  187. contractMoney: mul(pageTotalMoney.contract, 100), // 合同金额总计(单位,分)
  188. order_money: mul(pageTotalMoney.standard, 100), // 标准售价总计(单位,分)
  189. channelCommission: pageForm.channelCommission ? mul(pageForm.channelCommission, 100) : pageForm.channelCommission - 0, // 佣金(单位,分)
  190. zeroOrderType: orderMoney0Type ? pageForm.orderMoney0Type : undefined, // 0元订单类型
  191. // emptyPhone: 0, // 无手机号
  192. orderRemark: pageForm.orderRemark, // 订单备注
  193. paymentUser: pageForm.paymentAccountName, // 付款户名
  194. orderChannel: pageForm.orderChannel, // 下单渠道
  195. payType: pageForm.reservationPayWay, // 支付方式
  196. returnPlant,
  197. productArr,
  198. saleMoney,
  199. contract,
  200. // actPrice: {
  201. // VIP_PRO: 89900,
  202. // },
  203. }
  204. console.log(p, pageForm, productInfoList)
  205. return p
  206. }