import { schemaKeyMap, productKeyMap } from '@/views/create-order/data' import { mul } from '@/utils/number' import { SvipParamsGroup } from './params/svip' import { BigMemberParamsGroup } from './params/bigmember' import { dateFormatter } from '@/utils/globalFun' // import { SalePersonTableRow, PayBackTableRow } from '@/views/create-order/data/interface' // 查询价格接口参数 // 接口查询的金额或者传参的金额全部都是以<分>为单位 export function orderParams (type) { if (type === productKeyMap.cjdy) { return new SvipParamsGroup(type) } else if (type === productKeyMap.dhy) { return new BigMemberParamsGroup(type) } } // 获取回款计划 function getReturnPlant(pageForm, contractMoney) { let planList = undefined if (Array.isArray(pageForm.paybackTableData) && pageForm.paybackTableData.length > 0) { planList = pageForm.paybackTableData.map((p, index) => { return { code: index + 1, time: p.time ? dateFormatter(p.time, 'yyyy-MM-dd') : '-', money: mul(p.money, 100) || 0 } }) if (planList) { planList.push({ code: '合计', time: '-', money: contractMoney }) } } return { day_num: pageForm.paymentDeadline - 0, expect_time: pageForm.expectedPaymentDeadlineTime, plant_list: planList, } } function getSaleMoney(pageForm, contractMoney) { let arr = [] const salePerson = pageForm.salePerson const salePersonTableList = pageForm.salePersonTableList if (Array.isArray(salePerson)) { if (salePerson.length === 1) { arr = salePerson.map(s => { return { id: s, money: mul(contractMoney, 100), channel: pageForm.saleWay[1] } }) } else if (salePerson.length > 1) { arr = salePersonTableList.filter(r => r.id).map(r => { return { id: r.id, money: r.money - 0, channel: r.saleWay[1] } }) } } return arr } /* 创建订单参数整理 { "order_status": 0, "orderStatus": 0, "buySubject": 1, "companyName": "Example Corp", "paybackCompany": "Acme Inc", "personName": "John Doe", "personPhone": "1234567890", "userPhone": "1234567890", "emptyPhone": 0, "orderCode": "ORD12345", "productArr": [ { "id": 123456789, "product_code": "VIP_PRO", "activity_code": "SUMMER2023", "order_code": "ORD12345", "phone": "1234567890", "amount": 99900, "original_price": 129900, "tactics": 3, "reqSubject": 2, "reqCompanyName": "Example Corp", "product_type": "subscription", "service_type": 1, "linked_orderId": 123456788, "paybackOpenServer": true, "filter": { "buyAccountCount": 5, "giftAccountCount": 2, "cutAccount": 1, "buy_cycle": 12, "buy_type": 2, "give_cycle": 3, "give_type": 2, "finalAccountCount": 6, "finalAreaCount": 3, "supplement": "Additional support package" } } ], "contractMoney": 10000, "order_money": 9500, "channelCommission": 500, "zeroOrderType": "none", "contract": { "contractId": "CT123", "signDate": "2023-01-01" }, "returnPlant": { "planId": "RP123", "amount": 10000, "dueDate": "2023-06-01" }, "saleMoney": [ { "salesId": "S100", "amount": 5000, "date": "2023-01-15" } ], "actPrice": { "VIP_PRO": 89900 }, "payType": "credit", "orderChannel": "web", "paymentUser": "Jane Smith", "orderRemark": "Urgent order", "save": 2 } */ export function createOrderParams(payload = {}) { const { pageForm, productInfoList, pageTotalMoney, orderMoney0Type } = payload const returnPlant = getReturnPlant(pageForm, pageTotalMoney.contract) const saleMoney = getSaleMoney(pageForm, pageTotalMoney.contract) let productArr = [] if (Array.isArray(productInfoList) && productInfoList.length > 0) { productArr = productInfoList.map(product => { const productType = product.productCardInfo.result?.productCode if (productType) { const params = orderParams(productType).getProductArrParams({ type: productType, pageForm, productInfo: product, }) return params } }) productArr = productArr.filter(r => !!r) } const contract = { contractId: '', // 归档协议编号,在创建订单期间不会上传。在订单详情处上传 contractCode: pageForm.signCode, // 线下协议编号 contractStatus: pageForm.agreeStatus - 0, // 协议状态 e_contract_type: pageForm.e_contract_type, // 电子协议类型: 1有电子章 2无电子章 e_contract_userA_type: pageForm.e_contract_userA_type, // 协议甲方类型: 1个人 2企业 e_contract_userA_name: pageForm.e_contract_userA_name, // 协议甲方 e_contract_userA_contacts_name: pageForm.e_contract_userA_contacts_name, // 协议甲方联系人 e_contract_userA_contacts_tel: pageForm.e_contract_userA_contacts_tel, // 协议甲方联系方式 e_contract_userA_contacts_address: pageForm.e_contract_userA_contacts_address, // 协议甲方联系地址 e_contract_userB_contacts_name: pageForm.e_contract_userB_contacts_name, // 协议乙方联系人 e_contract_remark: pageForm.e_contract_remark, // 协议备注 contract_archive_status: pageForm.contract_archive_status, // 协议归档状态 1 已归档 0 未归档 contractTime: pageForm.signTime ? dateFormatter(pageForm.signTime, 'yyyy-MM-dd') : '', // 协议签订时间 contract_file_url: pageForm.contract_file_url, // 上传合同地址 contract_archive_time: pageForm.contract_archive_time, // 协议归档时间 contract_archive_num: pageForm.contract_archive_num - 0, // 协议归档份数 } const p = { order_status: pageForm.orderStatus, // 订单状态 0 未完成 1 已完成(审核通过后可以修改为已完成) orderCode: pageForm.orderCode, // 订单编号 buySubject: pageForm.buySubject, companyName: pageForm.companyName, // 公司名称 paybackCompany: pageForm.signUnit, // 签约主体 personName: pageForm.userTel, // 联系人手机号 personPhone: pageForm.userTel, // 联系人手机号 userPhone: pageForm.accountTel, // 开通服务手机号 contractMoney: mul(pageTotalMoney.contract, 100), // 合同金额总计(单位,分) order_money: mul(pageTotalMoney.standard, 100), // 标准售价总计(单位,分) channelCommission: pageForm.channelCommission ? mul(pageForm.channelCommission, 100) : pageForm.channelCommission - 0, // 佣金(单位,分) zeroOrderType: orderMoney0Type ? pageForm.orderMoney0Type : 'none', // 0元订单类型 // emptyPhone: 0, // 无手机号 orderRemark: pageForm.orderRemark, // 订单备注 paymentUser: pageForm.paymentAccountName, // 付款户名 orderChannel: pageForm.orderChannel, // 下单渠道 payType: pageForm.reservationPayWay, // 支付方式 returnPlant, productArr, saleMoney, contract, // actPrice: { // VIP_PRO: 89900, // }, } console.log(p, pageForm, productInfoList) return p }