params.js 7.1 KB

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