confirm.js 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843
  1. const defaultProductParam = {
  2. productCount:0, // 商品数量
  3. productId:0, // 商品Id
  4. source:1, // 来源:1WWW 2小程序
  5. userId:0 // 用户Id
  6. };
  7. const defaultCartParam = {
  8. productIds:0, // 商品Id(逗号隔开)
  9. source:1, // 来源:1WWW 2小程序
  10. userId:0 // 用户Id
  11. };
  12. const defaultPostageParam = {
  13. productIds:0, // 商品Id(逗号隔开)
  14. userId:0, // 用户Id
  15. townId:0 // 地区Id
  16. };
  17. const defaultConfirmParam = {
  18. cartType:1, // 购买类型:(1自主下单, 3协销下单)
  19. orderSource:1, // 订单来源 1WWW 6小程序[采美,星范]
  20. addressId:0, // 收货地址Id
  21. clubCouponId:0, // 关联优惠券Id
  22. clubId:0, // 机构Id
  23. orderInfo:[], // 订单商品数据 // 订单发票信息
  24. orderInvoice:{ type: 0 }, // 订单发票信息
  25. payInfo:{ // 订单金额数据
  26. orderShouldPayFee: 0, // 订单最终支付金额
  27. balancePayFlag: 0, // 勾选余额的状态(1使用,0不使用)
  28. clauseId:0, // 条款Id
  29. postage: 0, // 运费金额
  30. postageFlag: 0, // 运费类型
  31. userBeans: 0, // 抵扣采美豆数量
  32. rebateFlag:0 // 是否返佣订单
  33. }
  34. };
  35. var shoppingConfirm = new Vue({
  36. el: "#shoppingConfirm",
  37. data: {
  38. userId: 0,
  39. userIdentity: '',
  40. userToken: '',
  41. type: '',
  42. productIds: '',
  43. listData: [],
  44. kindCount: 0,
  45. totalCount: 0,
  46. totalPrice: 0,
  47. reducedPrice: 0, // 满减金额
  48. couponAmount:0, // 优惠券金额
  49. totalDiscountAmount:0, // 共减金额
  50. cartParam: Object.assign({}, defaultCartParam), // 购物车立即结算确认订单参数
  51. productParam: Object.assign({}, defaultProductParam), // 商品立即购买确认订单参数
  52. postageParam: Object.assign({}, defaultPostageParam), // 邮费计算参数
  53. confirmParam: Object.assign({}, defaultConfirmParam), // 提交订单参数
  54. supportParm:{// 组合商品立即购买确认订单参数
  55. productInfo:'',
  56. source:2, // 来源:1WWW 2小程序
  57. userId:0 // 用户Id
  58. },
  59. address: {
  60. id: '',
  61. townId: '',
  62. cityId: '',
  63. provinceId: '',
  64. name: '',
  65. mobile: '',
  66. desc: '',
  67. town: '',
  68. city: '',
  69. province: '',
  70. default: '',
  71. selectedId: ''
  72. },
  73. orderInvoice:{ // 订单发票信息
  74. id:0,
  75. type: 0,
  76. invoiceTitleType: 0, // 发票抬头类型 1企业 0个人
  77. invoiceTitle: '', // 单位名称
  78. corporationTaxNum:'', // 纳税人识别号
  79. registeredAddress: '',// 单位地址
  80. registeredPhone:'', // 注册电话
  81. openBank:'', // 开户银行
  82. bankAccountNo: '', // 银行账号
  83. },
  84. addressList: [],
  85. isShowAddressList: false,
  86. isShowAddressForm: false,
  87. addressForm: {
  88. id: '',
  89. name: '',
  90. mobile: '',
  91. townId: '',
  92. cityId: '',
  93. provinceId: '',
  94. desc: '',
  95. default: ''
  96. },
  97. provinceOptions:[],
  98. cityOptions:[],
  99. townOptions:[],
  100. saveLoading: false,
  101. rule:{
  102. name: '^[a-zA-Z\\u4e00-\\u9fa5]{2,}$',
  103. mobile: '^\\d{6,12}$'
  104. },
  105. balance: {
  106. isFreight:false, //使用采美豆抵扣运费
  107. flag: false, //使用余额抵扣
  108. originUserMoney: 0, //初始化后不能改变,用于还原余额抵扣
  109. userMoney: 0, //显示可使用余额
  110. deductMoney: 0, //显示已使用的余额
  111. surplusMoney: 0 //显示勾选后的剩余抵扣
  112. },
  113. isBeansShow:false,
  114. userBeans:0,
  115. hanldPostage:0,
  116. hanldPostageFlag:0,
  117. hanldShouldPayFee:0,
  118. freightBeansMoney:0,
  119. freightMoney:0,
  120. deductionBeans:0,
  121. submitLoading: false,
  122. checkedIndex:null,
  123. couponList:[], // 可用优惠券列表
  124. isCouponShow:false,
  125. svipReducedPrice: 0, //超级会员优惠金额
  126. isModelAlert:false, // 订单不足提示弹窗
  127. isModelAlertText:'',
  128. isShowConfirm:true
  129. },
  130. computed: {
  131. },
  132. filters: {
  133. NumFormat:function(num) {
  134. var temp = String(num).split('.');
  135. if (temp.length === 1 || temp[1].length < 2) {
  136. return Number(num).toFixed(2);
  137. }else{
  138. return Number(num);
  139. }
  140. },
  141. TypeFormat:function(value) {
  142. switch (value) {
  143. case 0:
  144. return '活动券';
  145. break;
  146. case 1:
  147. return '品类券';
  148. break;
  149. case 2:
  150. return '用户专享券';
  151. break;
  152. case 3:
  153. return '店铺券';
  154. break;
  155. case 4:
  156. return '新用户券';
  157. break;
  158. }
  159. }
  160. },
  161. methods: {
  162. blurHandle: function(event) {
  163. var el = event.currentTarget;
  164. verifyHandle(el);
  165. },
  166. getProductCreateOrderInfo:function(){// 商品立即购买确认订单初始化
  167. var _self = this;
  168. if(_self.userId ===0){return;}
  169. OrderApi.ProductCreateOrderInfo(_self.productParam,function(response){
  170. if (response.code === 0 ) {
  171. _self.setCreatDataInfo(response.data)
  172. }else{
  173. CAIMEI.Alert(r.msg, '确定', false);
  174. }
  175. });
  176. },
  177. OrderClubProductSupporting:function(){// 组合商品确认订单初始化
  178. var _self = this;
  179. if(_self.userId ===0){return;}
  180. OrderApi.OrderClubProductSupporting(_self.supportParm,function(response){
  181. if (response.code === 0 ) {
  182. _self.setCreatDataInfo(response.data)
  183. }else{
  184. CAIMEI.Alert(r.msg, '确定', false);
  185. }
  186. });
  187. },
  188. getCartCreateOrderInfo: function () {// 购物车去结算确认订单初始化
  189. var _self = this;
  190. if(_self.userId ===0){return;}
  191. OrderApi.GetOrderConfirmInfo(_self.cartParam,function(response){
  192. if (response.code === 0 ) {
  193. _self.setCreatDataInfo(response.data)
  194. }else{
  195. CAIMEI.Alert(r.msg, '确定', false);
  196. }
  197. });
  198. },
  199. setCreatDataInfo(data){
  200. var _self = this;
  201. _self.listData = data.list;
  202. _self.totalPrice = data.totalPrice;
  203. _self.reducedPrice = data.reducedPrice;
  204. _self.totalCount = data.totalCount;
  205. _self.kindCount = data.kindCount;
  206. _self.balance.userMoney = data.userMoney;
  207. _self.balance.originUserMoney = data.userMoney;
  208. _self.hanldShouldPayFee = data.totalPrice;
  209. _self.svipReducedPrice = data.svipReducedPrice;
  210. _self.postageParam.productIds = _self.getProductIds(data.list); // 获取订单商品id列表 以 , 隔开
  211. _self.getAddressList(_self.userId,20);
  212. console.log('邮费接口数据', _self.postageParam)
  213. if( data.couponList && data.couponList.length>0){
  214. _self.isCouponShow = true;
  215. _self.couponAmount = data.couponList[0].couponAmount;
  216. _self.confirmParam.clubCouponId = data.couponList[0].clubCouponId;
  217. data.couponList.forEach((el) => {
  218. _self.couponList.push(Object.assign(el,{ischecked:false}))
  219. })
  220. _self.couponList[0].ischecked = true;
  221. _self.hanldShouldPayFee = data.totalPrice - _self.couponAmount;
  222. }
  223. _self.totalDiscountAmount = _self.reducedPrice + _self.couponAmount;
  224. if(data.invoice){
  225. data.invoice.type = 0;
  226. _self.orderInvoice = data.invoice;
  227. }
  228. },
  229. getFreight: function(){// 获取邮费
  230. var _self = this;
  231. console.log(_self.postageParam, '邮费接口调用')
  232. OrderApi.GetOrderPostage(_self.postageParam,function (r) {
  233. if(r.code === 0 && r.data){
  234. _self.confirmParam.payInfo.postageFlag = _self.hanldPostageFlag = r.data.postageFlag;
  235. _self.userBeans = r.data.userBeans;
  236. _self.confirmParam.payInfo.postage = _self.hanldPostage = (r.data.postageFlag=== 1 ? r.data.postage : 0);
  237. _self.hanldShouldPayFee = _self.totalPrice + _self.confirmParam.payInfo.postage - _self.couponAmount;
  238. switch ( _self.confirmParam.payInfo.postageFlag) {
  239. case 1:
  240. if( _self.userBeans > 0 ){
  241. _self.freightBeansMoney = r.data.postage;
  242. _self.freightMoney = r.data.postage;
  243. _self.isBeansShow = true;
  244. }else{
  245. _self.freightBeansMoney = 0;
  246. _self.balance.isFreight = false;
  247. _self.isBeansShow = false;
  248. }
  249. if(r.data.userBeans >= _self.freightBeansMoney*100){
  250. _self.deductionBeans = _self.freightBeansMoney*100
  251. }else{
  252. _self.deductionBeans = _self.userBeans
  253. }
  254. _self.changeDeductibleFreight();
  255. break;
  256. case -1:
  257. if( _self.userBeans > 0 ){
  258. _self.freightMoney = '到付';
  259. _self.freightBeansMoney = 30;
  260. _self.isBeansShow = true;
  261. }else{
  262. _self.freightBeansMoney = 0;
  263. _self.balance.isFreight = false;
  264. _self.isBeansShow = false;
  265. }
  266. if(r.data.userBeans >= _self.freightBeansMoney*100){
  267. _self.deductionBeans = _self.freightBeansMoney*100
  268. }else{
  269. _self.deductionBeans = _self.userBeans
  270. }
  271. _self.changeDeductibleFreight();
  272. break;
  273. }
  274. }else{
  275. CAIMEI.Alert(r.msg, '确定', false);
  276. }
  277. })
  278. },
  279. getAddressList: function(userId,pageSize){ // 获取收货地址
  280. var _self = this;
  281. OrderApi.GetAddressList({
  282. userId:userId,
  283. pageNum:1,
  284. pageSize:pageSize
  285. },function (res) {
  286. if(res.code === 0 && res.data){
  287. if(res.data.list){
  288. _self.addressList = res.data.list;
  289. _self.address.id = res.data.list[0].addressId;
  290. _self.confirmParam.addressId = res.data.list[0].addressId;
  291. _self.address.townId = res.data.list[0].townId;
  292. _self.postageParam.townId = res.data.list[0].townId;
  293. _self.address.cityId = res.data.list[0].cityId;
  294. _self.address.provinceId = res.data.list[0].provinceId;
  295. _self.address.name = res.data.list[0].receiver;
  296. _self.address.mobile = res.data.list[0].mobile;
  297. _self.address.desc = res.data.list[0].address;
  298. _self.address.town = res.data.list[0].town;
  299. _self.address.city = res.data.list[0].city;
  300. _self.address.province = res.data.list[0].province;
  301. _self.address.default = true;
  302. _self.address.selectedId = res.data.list[0].addressId;
  303. _self.getFreight(_self.address.townId);
  304. }else{
  305. _self.createAddress();
  306. }
  307. _self.getProvinceOptions();
  308. }else {
  309. CAIMEI.Alert(res.msg, '确定', false);
  310. _self.createAddress();
  311. }
  312. })
  313. },
  314. getProvinceOptions: function(){ // 获取全部省份
  315. var _self = this;
  316. OrderApi.GetAddressSelect({},function(res){
  317. if(res.code === 0 && res.data){
  318. _self.provinceOptions =res.data;
  319. }else{
  320. CAIMEI.Alert(res.msg,'确定',false);
  321. }
  322. });
  323. },
  324. getCityOptions: function(parentId,callback){// 获取地区
  325. var _self = this;
  326. if(parentId && parentId>0){
  327. _self.cityOptions = [];
  328. _self.townOptions = [];
  329. _self.addressForm.cityId = '';
  330. _self.addressForm.townId = '';
  331. OrderApi.GetAddressSelect({ parentId: parentId,type:1 },function(res){
  332. if(res.code === 0 && res.data){
  333. _self.cityOptions = res.data;
  334. if(callback){callback();}
  335. }else{
  336. CAIMEI.Alert(res.msg,'确定',false);
  337. }
  338. });
  339. }
  340. },
  341. getTownOptions: function(parentId, callback){
  342. var _self = this;
  343. if(parentId && parentId>0){
  344. _self.townOptions = [];
  345. _self.addressForm.townId = '';
  346. OrderApi.GetAddressSelect({parentId: parentId,type:2},function(res){
  347. if(res.code === 0 && res.data){
  348. _self.townOptions = res.data;
  349. if(callback){callback();}
  350. }else{
  351. CAIMEI.Alert(res.msg,'确定',false);
  352. }
  353. })
  354. }
  355. },
  356. showAddressBox: function(){// 显示地址弹窗
  357. this.isShowAddressList = true;
  358. if(!isPC){fixedBody();}
  359. },
  360. closeAddressBox: function(){// 关闭地址弹窗
  361. this.isShowAddressList = false;
  362. if(!isPC){looseBody();}
  363. },
  364. hideAddressForm: function(){// 隐藏地址表单
  365. this.isShowAddressForm = false;
  366. if(!isPC){looseBody();}
  367. },
  368. createAddress: function(){// 新建地址
  369. this.isShowAddressForm = true;
  370. this.addressForm.name= '';
  371. this.addressForm.mobile= '';
  372. this.addressForm.addressId= '';
  373. this.addressForm.townId= '';
  374. this.addressForm.cityId= '';
  375. this.addressForm.provinceId= '';
  376. this.addressForm.desc= '';
  377. this.addressForm.default= '';
  378. this.addressForm.id = '';
  379. this.getProvinceOptions();
  380. if(!isPC){fixedBody();}
  381. },
  382. updateAddress: function(){// 更新选择地址
  383. var _self = this;
  384. _self.isShowAddressForm = true;
  385. _self.addressForm.id = _self.address.id;
  386. _self.addressForm.name = _self.address.name;
  387. _self.addressForm.mobile = _self.address.mobile;
  388. _self.addressForm.default = _self.address.default;
  389. _self.addressForm.desc = _self.address.desc;
  390. _self.addressForm.provinceId = _self.address.provinceId;
  391. _self.getCityOptions(_self.address.provinceId, function(){
  392. _self.addressForm.cityId = _self.address.cityId;
  393. _self.getTownOptions(_self.address.cityId,function(){
  394. _self.addressForm.townId = _self.address.townId;
  395. });
  396. });
  397. if(!isPC){fixedBody();}
  398. },
  399. saveAddressForm: function(){// 更新保存地址
  400. var _self = this;
  401. var pass = verifyForm();
  402. if (_self.saveLoading) { return false; }
  403. this.$nextTick(function() {
  404. if (!pass) {return false;}
  405. if(!_self.addressForm.townId){
  406. CAIMEI.dialog('请选择所在地区');
  407. return false;
  408. };
  409. _self.saveLoading = true;
  410. var params = {
  411. userId:_self.userId, // 用户id ,只在新增收货地址时传
  412. receiver:_self.addressForm.name, // 收货人
  413. mobile:_self.addressForm.mobile, // 手机
  414. townId:_self.addressForm.townId, // 区ID
  415. address:_self.addressForm.desc, // 地址
  416. defaultFlag:_self.addressForm.default ? 1 : 0 //是否默认收货地址(0 不是默认,1 默认)
  417. };
  418. if(_self.addressForm.id){// 编辑
  419. params.addressId = _self.addressForm.id;//编辑保存地址ID
  420. }
  421. _self.saveAddress(params);
  422. });
  423. },
  424. saveAddress: function(params){// 更新保存地址
  425. var _self = this;
  426. OrderApi.AddSaveAddress(params,function(r){
  427. if(r.code === 0){
  428. CAIMEI.dialog('保存成功');
  429. _self.saveLoading = false;
  430. _self.isShowAddressForm = false;
  431. // 重新获取地址列表
  432. _self.getAddressList(_self.userId,20);
  433. }else{
  434. CAIMEI.Alert(r.msg,'确定',false);
  435. }
  436. });
  437. },
  438. setDefaultAddress: function(addressId){// 列表直接设为默认地址
  439. var _self = this;
  440. OrderApi.DefaultAddress({addressId:addressId,userId:_self.userId},function (r) {
  441. if(r.code === 0 ){
  442. // 重新获取地址列表
  443. _self.getAddressList(_self.userId,20);
  444. }else{
  445. CAIMEI.Alert(r.msg,'确定',false);
  446. }
  447. });
  448. },
  449. deleteAddress: function(addressId){// 列表删除单个地址
  450. var _self = this;
  451. CAIMEI.Modal('确定要删除该地址?','取消','确定',function () {
  452. OrderApi.DeleteAddress({addressId:addressId,userId:_self.userId},function (r) {
  453. if(r.code === 0 ){
  454. CAIMEI.dialog('删除成功');
  455. // 重新获取地址列表
  456. _self.getAddressList(_self.userId,20);
  457. }else{
  458. CAIMEI.Alert(r.msg,'确定',false);
  459. }
  460. })
  461. });
  462. },
  463. chooseAddress: function(selectedId){
  464. this.address.selectedId = selectedId;
  465. },
  466. confirmAddress: function(){// 确认地址并查询邮费
  467. var _self = this;
  468. _self.addressList.forEach(function(item){
  469. if (_self.address.selectedId==item.addressId){
  470. _self.address.id = item.addressId;
  471. _self.confirmParam.addressId = item.addressId;
  472. _self.address.townId = item.townId;
  473. _self.postageParam.townId = item.townId;
  474. _self.address.cityId = item.cityId;
  475. _self.address.provinceId = item.provinceId;
  476. _self.address.name = item.receiver;
  477. _self.address.mobile = item.mobile;
  478. _self.address.desc = item.address;
  479. _self.address.town = item.town;
  480. _self.address.city = item.city;
  481. _self.address.province = item.province;
  482. _self.address.default = (item.defaultFlag > 0);
  483. _self.getFreight();
  484. }
  485. });
  486. this.closeAddressBox();
  487. },
  488. checkedCoupon:function(idx){// 选择优惠券
  489. var _self = this;
  490. var coupon = { couponAmount:0,clubCouponId:0 };
  491. _self.checkedIndex = idx;
  492. _self.couponList.forEach((el,index) => {
  493. if(_self.checkedIndex == index){
  494. el.ischecked = !el.ischecked;
  495. }else{
  496. el.ischecked = false;
  497. }
  498. if(el.ischecked){
  499. coupon.couponAmount = el.couponAmount;
  500. coupon.clubCouponId = el.clubCouponId;
  501. }
  502. })
  503. _self.couponAmount = coupon.couponAmount;
  504. _self.totalDiscountAmount = _self.reducedPrice + _self.couponAmount;
  505. _self.confirmParam.clubCouponId = coupon.clubCouponId;
  506. _self.changeDeductibleFreight();
  507. _self.useUserMoney();
  508. },
  509. toggleThisLadder: function(event){
  510. var el = event.currentTarget;
  511. if($(el).hasClass("on")){
  512. $(el).removeClass("on").siblings('.mFixed').hide();
  513. if(!isPC){looseBody();}
  514. }else{
  515. $(el).addClass("on").siblings('.mFixed').show();
  516. if(!isPC){fixedBody();}
  517. }
  518. },
  519. hideThisLadder: function(event){
  520. var el = event.currentTarget;
  521. $(el).parents('.priceTag').find('.tag').removeClass("on").siblings('.mFixed').hide();
  522. if(!isPC){looseBody();}
  523. },
  524. useUserMoney: function(){//勾选余额抵扣
  525. var _self = this;
  526. if(this.balance.userMoney>0){
  527. this.$nextTick(function() {
  528. var total = _self.totalPrice +_self.confirmParam.payInfo.postage - _self.couponAmount; // 订单总金额 + 邮费金额
  529. if(_self.balance.flag){
  530. _self.confirmParam.payInfo.balancePayFlag = 1;
  531. if(_self.balance.userMoney >= total){ // 全部抵扣
  532. _self.hanldShouldPayFee = 0;
  533. if(_self.balance.isFreight){// 勾选了采美豆丢运费
  534. _self.balance.deductMoney = _self.totalPrice - _self.couponAmount; // 抵扣使用金额 = 订单总金额
  535. _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.totalPrice); // 抵扣后剩余余额 = 余额总额 - (订单总金额+邮费金额)
  536. console.log('余额全部抵扣勾选了采美豆运费',_self.balance.surplusMoney)
  537. }else{
  538. _self.balance.deductMoney = total; // 抵扣使用金额 = 订单总金额 + 邮费金额 - 优惠券金额
  539. _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
  540. console.log('余额全部抵扣未勾选了采美豆运费',_self.balance.surplusMoney)
  541. }
  542. }else{ // 部分抵扣
  543. if(_self.balance.isFreight){// 勾选了采美豆丢运费
  544. _self.hanldShouldPayFee = _self.repiceNumSub(_self.totalPrice,_self.balance.userMoney) - _self.couponAmount; // 最终订单总价 = 订单总金额 - 余额总额
  545. _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = 余额总额
  546. _self.balance.surplusMoney = 0; // 抵扣后剩余余额 = 0
  547. console.log('部分抵扣勾选了采美豆运费',_self.hanldShouldPayFee)
  548. }else{
  549. _self.hanldShouldPayFee = _self.repiceNumSub(total,_self.balance.userMoney); // 最终订单总价 = 订单总金额 - 余额总额
  550. _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = 余额总额
  551. _self.balance.surplusMoney = 0; // 抵扣后剩余余额 = 0
  552. console.log('部分抵扣没有勾选了采美豆运费',_self.hanldShouldPayFee)
  553. }
  554. }
  555. }else{// 取消抵扣
  556. _self.confirmParam.payInfo.balancePayFlag = 0;
  557. _self.balance.userMoney = _self.balance.originUserMoney;
  558. _self.balance.deductMoney = 0;
  559. _self.balance.surplusMoney = _self.balance.originUserMoney;
  560. if(_self.balance.isFreight){//判断是否有采美豆抵扣运费
  561. _self.hanldShouldPayFee = _self.totalPrice - _self.couponAmount; // 最终订单总价 = 订单总金额
  562. }else{
  563. _self.hanldShouldPayFee = total; // 最终订单总价 = 订单总金额 + 邮费金额
  564. }
  565. console.log('取消余额抵扣',_self.hanldShouldPayFee)
  566. }
  567. });
  568. }
  569. },
  570. changeDeductibleFreight: function(){//选择采美豆抵扣邮费
  571. var _self = this;
  572. var total = _self.totalPrice +_self.confirmParam.payInfo.postage - _self.couponAmount;
  573. if(_self.balance.isFreight){//判断是否勾选运费
  574. if(_self.confirmParam.payInfo.postageFlag == 1){//有邮费
  575. _self.confirmParam.payInfo.userBeans = _self.freightBeansMoney*100;
  576. if( _self.userBeans > 0 ){// 判断采美豆大于0
  577. if(_self.balance.flag) {// 勾选了余额抵扣
  578. console.log('订单总额',total)
  579. if(_self.balance.userMoney>=total){ // 全部抵扣
  580. _self.hanldShouldPayFee = 0;
  581. _self.balance.deductMoney = _self.totalPrice - _self.couponAmount; // 抵扣使用金额 = 订单总金额
  582. _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
  583. console.log('有勾选余额抵扣全抵',_self.hanldShouldPayFee)
  584. }else{ // 部分抵扣
  585. _self.hanldShouldPayFee = _self.repiceNumSub(_self.totalPrice,_self.balance.userMoney) - _self.couponAmount;
  586. _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = 余额总额
  587. _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
  588. console.log('有勾选余额抵扣部分抵',_self.hanldShouldPayFee)
  589. }
  590. }else{
  591. _self.hanldShouldPayFee = ((_self.totalPrice*100 +_self.confirmParam.payInfo.postage*100 - _self.freightBeansMoney*100)/100) - _self.couponAmount;
  592. console.log('无余额抵扣',_self.hanldShouldPayFee)
  593. }
  594. }
  595. }else if(_self.confirmParam.payInfo.postageFlag == -1){// 到付
  596. _self.confirmParam.payInfo.userBeans = _self.freightBeansMoney*100;
  597. if(_self.balance.flag) {// 勾选了余额抵扣
  598. if(_self.balance.userMoney >= total){ // 全部抵扣
  599. _self.hanldShouldPayFee = 0;
  600. _self.balance.deductMoney = _self.totalPrice - _self.couponAmount; // 抵扣使用金额 = 订单总金额
  601. _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
  602. console.log('到付有勾选余额抵扣全抵',_self.hanldShouldPayFee)
  603. }else{ // 部分抵扣
  604. _self.hanldShouldPayFee =_self.hanldShouldPayFee = _self.repiceNumSub(_self.totalPrice,_self.balance.userMoney) - _self.couponAmount;
  605. _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = 余额总额
  606. _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
  607. console.log('到付有勾选余额抵扣部分抵',_self.hanldShouldPayFee)
  608. }
  609. }else{
  610. _self.hanldShouldPayFee = _self.totalPrice - _self.couponAmount ;
  611. console.log('到付未勾选余额抵扣',_self.hanldShouldPayFee)
  612. }
  613. }else{
  614. _self.confirmParam.payInfo.userBeans = 0;
  615. _self.hanldShouldPayFee = _self.totalPrice - _self.couponAmount ;
  616. console.log('其他',_self.hanldShouldPayFee)
  617. }
  618. }else{
  619. console.log('未勾选采美豆抵扣')
  620. _self.confirmParam.payInfo.userBeans = 0;
  621. if(_self.balance.flag) {//如果勾选了余额抵扣
  622. if(_self.balance.userMoney>=total) { // 全部抵扣
  623. console.log('勾选采美豆抵扣=========》',total)
  624. _self.hanldShouldPayFee = 0 ;
  625. _self.balance.deductMoney = total; // 抵扣使用金额 = (订单总金额+邮费金额-优惠券价格)
  626. _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
  627. console.log('余额全抵抵未勾选采美豆抵扣',_self.hanldShouldPayFee)
  628. }else{
  629. console.log('未勾选采美豆抵扣=========》',total)
  630. _self.hanldShouldPayFee = _self.repiceNumSub(total,_self.balance.userMoney);
  631. _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = (订单总金额+邮费金额)
  632. _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
  633. console.log('余额部分抵未勾选采美豆抵扣',_self.hanldShouldPayFee)
  634. }
  635. }else{
  636. _self.hanldShouldPayFee = (_self.totalPrice +_self.confirmParam.payInfo.postage) - _self.couponAmount;
  637. }
  638. }
  639. },
  640. repiceNumSub: function(arg1, arg2) {//减法精确,arg2:被减数,arg1:减数
  641. var r1,r2,m,n;
  642. try{
  643. r1=arg1.toString().split(".")[1].length
  644. }catch(e){
  645. r1=0
  646. }
  647. try{
  648. r2=arg2.toString().split(".")[1].length
  649. }catch(e){
  650. r2=0
  651. }
  652. m=Math.pow(10,Math.max(r1,r2));
  653. // last modify by deeka
  654. // 动态控制精度长度
  655. n=(r1>=r2)?r1:r2;
  656. return ((arg1*m-arg2*m)/m).toFixed(n);
  657. },
  658. submitOrder: function(){// 提交按钮点击
  659. var _self = this;
  660. if( _self.hanldShouldPayFee<1000){
  661. _self.isModelAlert = true;
  662. _self.isModelAlertText = '采购金额过小,将扣除500采美豆。建议您使用微信扫描 以下二维码,进入采美旗下“呵呵商城”小程序购买小额 商品。';
  663. }else{
  664. _self.handleClickOrderSubmitMit()
  665. }
  666. },
  667. handleClickOrderSubmitMit:function () {// 提交订单
  668. var _self = this;
  669. _self.isModelAlert = false;
  670. if(_self.submitLoading){return false;}
  671. if(!_self.confirmParam.addressId){
  672. CAIMEI.dialog('请先添加收货地址~');
  673. return false;
  674. }
  675. if(_self.orderInvoice.type*1 === 1){
  676. // 普通发票
  677. if(!_self.orderInvoice.invoiceTitle){
  678. CAIMEI.dialog('请输入个人抬头');return false;
  679. }
  680. if(_self.orderInvoice.invoiceTitleType===1 && !_self.orderInvoice.corporationTaxNum){
  681. CAIMEI.dialog('请输入纳税人识别号');return false;
  682. }
  683. }else if(_self.orderInvoice.type*1 === 2){
  684. // 增值税发票
  685. if(!_self.orderInvoice.invoiceTitle){
  686. CAIMEI.dialog('请输入个人抬头');return false;
  687. }
  688. if(!_self.orderInvoice.corporationTaxNum){
  689. CAIMEI.dialog('请输入纳税人识别号');return false;
  690. }
  691. if(!_self.orderInvoice.registeredAddress){
  692. CAIMEI.dialog('请输入单位地址');return false;
  693. }
  694. if(!_self.orderInvoice.registeredPhone){
  695. CAIMEI.dialog('请输入注册电话');return false;
  696. }
  697. if(!_self.orderInvoice.openBank){
  698. CAIMEI.dialog('请输入开户银行');return false;
  699. }
  700. if(!_self.orderInvoice.bankAccountNo){
  701. CAIMEI.dialog('请输入银行账号');return false;
  702. }
  703. }
  704. // 禁用按钮
  705. _self.submitLoading = true;
  706. // 发票信息
  707. if(_self.confirmParam.orderInvoice.type*1 === 0){
  708. _self.confirmParam.orderInvoice = Object.assign(_self.confirmParam.orderInvoice,'',{type:0});
  709. }else if(_self.confirmParam.orderInvoice.type*1 === 1){
  710. _self.confirmParam.orderInvoice = Object.assign(_self.confirmParam.orderInvoice,'',{type:1, invoiceContent: '商品明细'});
  711. }else if(_self.confirmParam.orderInvoice.type*1 === 2){
  712. _self.confirmParam.orderInvoice = Object.assign(_self.confirmParam.orderInvoice,'',{type:2});
  713. }
  714. //商品信息
  715. _self.confirmParam.orderInfo = _self.listData.map(el => {
  716. var productInfo = [];
  717. el.cartList.forEach(item => {
  718. productInfo.push({
  719. productId:item.productId,
  720. productNum:item.number,
  721. presentNum:0,
  722. productType:item.productType
  723. })
  724. })
  725. return {shopId:el.shopId,note:el.note?el.note:'',productInfo:productInfo}
  726. });
  727. if(_self.orderInvoice.type!=0){
  728. _self.orderInvoice.type = parseInt(_self.orderInvoice.type)
  729. _self.confirmParam.orderInvoice = _self.orderInvoice;
  730. }
  731. var hanldPostageFlag =
  732. _self.confirmParam.payInfo.postage = parseInt(_self.hanldPostage).toFixed(2);
  733. _self.confirmParam.payInfo.postageFlag = parseInt(_self.hanldPostageFlag);
  734. _self.confirmParam.payInfo.orderShouldPayFee = parseFloat(_self.hanldShouldPayFee).toFixed(2);
  735. _self.confirmParam.payInfo = JSON.stringify(_self.confirmParam.payInfo);
  736. _self.confirmParam.orderInfo = JSON.stringify(_self.confirmParam.orderInfo);
  737. _self.confirmParam.orderInvoice = JSON.stringify(_self.confirmParam.orderInvoice);
  738. console.log('confirmParam',_self.confirmParam);
  739. OrderApi.ConfirmOrder(_self.confirmParam,function (res) {
  740. if(res.code === 0){
  741. var data = res.data;
  742. if(data.code === 1){//余额抵扣全部订单金额
  743. var Amount = { payableAmount: _self.deductMoney };
  744. CAIMEI.Storage.removeItem('confirmOrderInfo');
  745. CAIMEI.Storage.setItem('confirmOrderInfo',JSON.stringify({data:Amount}));
  746. window.location.href = '/pay/success.html?pageType=www&type=success&payAmount='+data.payTotalFee;
  747. }else{//余额抵扣部分订单金额或者未支付的
  748. var order = {
  749. orderId:data.orderId,
  750. orderNo:data.orderNo,
  751. orderMark:data.orderMark,
  752. payableAmount:data.payableAmount
  753. };
  754. CAIMEI.Storage.removeItem('confirmOrderInfo');
  755. CAIMEI.Storage.setItem('confirmOrderInfo',JSON.stringify({data:order}));
  756. window.location.href = '/pay/caimei-paycash.html?type=confirm&orderId='+data.orderId;
  757. }
  758. }else if(res.code === -3){
  759. _self.isModelAlert = true;
  760. _self.isShowConfirm = false;
  761. _self.submitLoading = false;
  762. _self.isModelAlertText = '您已有2个采购金额过小的订单,本次不能再进行采购。您可使用微信扫描以下二维码,进入采美旗下“呵呵商城”小程序购买小额商品。';
  763. _self.formatConfirmParam();
  764. }else if(res.code === -4){
  765. _self.isModelAlert = true;
  766. _self.isShowConfirm = false;
  767. _self.submitLoading = false;
  768. _self.isModelAlertText = '采美豆不足,不能提交订单。您可使用微信扫描以下二维码,进入采美旗下“呵呵商城”小程序购买小额商品。';
  769. _self.formatConfirmParam();
  770. }else{
  771. CAIMEI.Alert(res.msg,'确定',true, function(){
  772. setTimeout(function(){
  773. _self.submitLoading = false;
  774. _self.formatConfirmParam();
  775. },500);
  776. });
  777. }
  778. });
  779. },
  780. formatConfirmParam:function(){// 还原提交订单参数格式
  781. var _self = this;
  782. _self.confirmParam.payInfo = JSON.parse(_self.confirmParam.payInfo);
  783. _self.confirmParam.orderInfo = JSON.parse(_self.confirmParam.orderInfo);
  784. _self.confirmParam.orderInvoice = JSON.parse(_self.confirmParam.orderInvoice);
  785. },
  786. handleCloseModel:function () {
  787. this.isModelAlert = false;
  788. this.isShowConfirm= true;
  789. },
  790. getProductIds: function(list){// 获取订单商品id列表
  791. var productIds = [];
  792. list.forEach(function(supplier){
  793. supplier.cartList.forEach(function(product){
  794. productIds.push(product.productId)
  795. });
  796. })
  797. // console.log(list);
  798. return productIds.join(',');
  799. }
  800. },
  801. created: function () {
  802. var _self = this;
  803. var urlType = getUrlParam("type") ? getUrlParam("type")*1 : "";
  804. if(globalUserData){
  805. _self.userId = _self.productParam.userId = _self.cartParam.userId = _self.postageParam.userId = _self.supportParm.userId = globalUserData.userId;
  806. _self.confirmParam.clubId = globalUserData.clubId
  807. _self.userIdentity = globalUserData.identity;
  808. _self.userToken = globalUserData.token;
  809. // type:(1购物车提交[对应表cm_cart],2直接购买提交, 3协销下单)
  810. if(urlType === 1) {//购物车提交
  811. _self.confirmParam.cartType = 1;
  812. _self.cartParam.productIds = _self.productIds = window.localStorage.getItem("shoppingProductIds");
  813. // 获取列表数据
  814. _self.getCartCreateOrderInfo();
  815. }else if(urlType === 2){//立即购买
  816. _self.confirmParam.cartType = 2;
  817. _self.productParam.productId = _self.productIds = getUrlParam("productId");
  818. _self.productParam.productCount = getUrlParam("count");
  819. if(_self.productParam.productId && _self.productParam.productCount) {
  820. _self.getProductCreateOrderInfo();
  821. }
  822. }else if(urlType === 3){// 组合商品立即购买
  823. _self.supportParm.productInfo = CAIMEI.Storage.getItem("KEY_SUPPORE");
  824. _self.OrderClubProductSupporting()
  825. }
  826. }
  827. },
  828. mounted: function () {
  829. var _self = this;
  830. var minAwayBtm = $("footer").height();
  831. //处理滚动条控制底部提交fixed
  832. $(window).scroll(function() {
  833. var awayBtm = $(document).height() - $(window).scrollTop() - $(window).height();
  834. if(minAwayBtm <= awayBtm){
  835. $(".summaryWrap").addClass('fixed');
  836. }else{
  837. $(".summaryWrap").removeClass("fixed");
  838. }
  839. });
  840. }
  841. });