index.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
  1. var a = require("../../utils/public"),
  2. app = getApp();
  3. var util = require('../../utils/util.js');
  4. Component({
  5. properties: {
  6. visible: {
  7. type: Boolean,
  8. value: false,
  9. observer: function (t) {
  10. t && this.setData({
  11. value: 1,
  12. loading: false
  13. })
  14. let tdata = this.data;
  15. this.get_goods_details(tdata.goodsid,2)
  16. }
  17. },
  18. cur_sku_arr: {
  19. type: Object,
  20. value: {}
  21. },
  22. skuList: {
  23. type: Object,
  24. value: {}
  25. },
  26. sku_val: {
  27. type: Number,
  28. value: 1
  29. },
  30. sku: {
  31. type: Array,
  32. value: []
  33. },
  34. goodsid: {
  35. type: Number,
  36. value: 0
  37. },
  38. type: {
  39. type: Number,
  40. value: 0
  41. },
  42. buyType: {
  43. type: String,
  44. value: ''
  45. },
  46. soliId: {
  47. type: Number,
  48. value: 0
  49. },
  50. vipInfo: {
  51. type: Object,
  52. value: {
  53. is_open_vipcard_buy: 0,
  54. is_vip_card_member: 0,
  55. is_member_level_buy: 0
  56. }
  57. },
  58. skin: {
  59. type: Object,
  60. value: {
  61. color: '#ff5344',
  62. subColor: '#ed7b3a',
  63. lighter: '#fff9f4'
  64. }
  65. }
  66. },
  67. focusFlag: false,
  68. data: {
  69. value: 1,
  70. loading: false,
  71. showLimitTip: false,
  72. showLimitType: 0,
  73. eventIdx:0,
  74. reverseArr:[]
  75. },
  76. methods: {
  77. close: function () {
  78. this.setData({
  79. showLimitTip: false
  80. })
  81. this.triggerEvent("cancel");
  82. },
  83. selectSku: function (event) {
  84. var that = this;
  85. let str = event.currentTarget.dataset.type;
  86. let obj = str.split("_");
  87. this.setData({eventIdx:event.currentTarget.dataset.idx})
  88. var sku_car_num = this.data.skuList.sku_mu_list
  89.             let arr = Object.values(sku_car_num)
  90.             var reverseArr = arr.reverse()
  91. // console.log(reverseArr)
  92.             var number = reverseArr[event.currentTarget.dataset.idx].car_quantity
  93.             this.setData({sku_val:number == 0 ? 1 : number,reverseArr})
  94. let {
  95. sku,
  96. cur_sku_arr,
  97. skuList,
  98. sku_val
  99. } = this.data;
  100. let temp = {
  101. name: obj[3],
  102. id: obj[2],
  103. index: obj[0],
  104. idx: obj[1]
  105. };
  106. sku.splice(obj[0], 1, temp);
  107. var id = '';
  108. for (let i = 0; i < sku.length; i++) {
  109. if (i == sku.length - 1) {
  110. id = id + sku[i]['id'];
  111. } else {
  112. id = id + sku[i]['id'] + "_";
  113. }
  114. }
  115. // console.log(id)
  116. // cur_sku_arr = Object.assign(cur_sku_arr, skuList.sku_mu_list[id]);
  117. // console.log(reverseArr)
  118. for(var i=0;i<reverseArr.length;i++){
  119. if(reverseArr[i].option_item_ids == id){
  120. cur_sku_arr = reverseArr[i]
  121. }
  122. }
  123. // console.log(cur_sku_arr)
  124. if(Array.isArray(cur_sku_arr.levelprice)){
  125. var stringPrice = cur_sku_arr.levelprice.join('.')
  126. cur_sku_arr.levelprice = stringPrice
  127. }
  128. let h = {};
  129. h.noEougnStock = false;
  130. sku_val = sku_val || 1;
  131. console.log(sku_val)
  132. console.log(cur_sku_arr)
  133. let canBuyNum = cur_sku_arr.canBuyNum * 1;
  134. if (sku_val > canBuyNum) {
  135. h.sku_val = canBuyNum == 0 ? 1 : canBuyNum;
  136. (canBuyNum > 0) && wx.showToast({
  137. title: `最多只能购买${cur_sku_arr.canBuyNum}件`,
  138. icon: 'none'
  139. })
  140. }
  141. let {
  142. car_quantity,
  143. goods_start_count
  144. } = this.data.cur_sku_arr;
  145. if (car_quantity && car_quantity >= goods_start_count) goods_start_count = 1;
  146. // 库存小于起购数量 按钮变灰 数量变起购
  147. if (canBuyNum < goods_start_count) {
  148. // h.sku_val = goods_start_count;
  149. h.noEougnStock = true;
  150. } else {
  151. // h.sku_val = goods_start_count;
  152. }
  153. if (this.data.buyType == 'integral') {
  154. // h.sku_val = 1;
  155. }
  156. // console.log(cur_sku_arr)
  157. if(cur_sku_arr.car_quantity ==0 || cur_sku_arr.car_quantity == null){
  158. cur_sku_arr.car_quantity = 1
  159. }
  160. that.setData({
  161. cur_sku_arr,
  162. sku,
  163. showLimitTip: false,
  164. showLimitType: 0,
  165. ...h
  166. })
  167. },
  168. /**
  169. * 数量加减
  170. */
  171. setNum: function (event) {
  172. let types = event.currentTarget.dataset.type;
  173. var that = this;
  174. var num = 1;
  175. let sku_val = this.data.sku_val * 1;
  176. let showLimitTip = false;
  177. let showLimitType = 0;
  178. var sku_car_num = this.data.cur_sku_arr
  179.             
  180. if (types == 'add') {
  181. num = sku_val + 1;
  182. let {
  183. one_limit_count,
  184. total_limit_count,
  185. oneday_limit_count
  186. } = this.data.cur_sku_arr;
  187. if (one_limit_count > 0 && num > one_limit_count) {
  188. wx.showToast({
  189. title: `您本次只能购买${one_limit_count}份`,
  190. icon: 'none'
  191. })
  192. num = one_limit_count;
  193. showLimitTip = true;
  194. showLimitType = 1;
  195. } else if (oneday_limit_count > 0 && num > oneday_limit_count) {
  196. wx.showToast({
  197. title: `您今天只能购买${oneday_limit_count}份`,
  198. icon: 'none'
  199. })
  200. num = oneday_limit_count;
  201. showLimitTip = true;
  202. showLimitType = 2;
  203. } else if (total_limit_count > 0 && num > total_limit_count) {
  204. wx.showToast({
  205. title: `您最多只能购买${total_limit_count}份`,
  206. icon: 'none'
  207. })
  208. num = total_limit_count;
  209. showLimitTip = true;
  210. showLimitType = 3;
  211. }
  212. } else if (types == 'decrease') {
  213. let {
  214. car_quantity,
  215. goods_start_count
  216. } = this.data.cur_sku_arr;
  217. if (car_quantity && car_quantity >= goods_start_count) goods_start_count = 1;
  218. if (sku_val > 1) {
  219. num = sku_val - 1;
  220. if (num < goods_start_count) {
  221. num = goods_start_count;
  222. wx.showToast({
  223. title: `${goods_start_count}件起售`,
  224. icon: 'none'
  225. })
  226. }
  227. }
  228. }
  229. let arr = that.data.sku;
  230. var options = this.data.skuList;
  231. if (arr.length > 0) {
  232. var id = '';
  233. for (let i = 0; i < arr.length; i++) {
  234. if (i == arr.length - 1) {
  235. id = id + arr[i]['id'];
  236. } else {
  237. id = id + arr[i]['id'] + "_";
  238. }
  239. }
  240. }
  241. if (options.length > 0) {
  242. let cur_sku_arr = options.sku_mu_list[id];
  243. let max = cur_sku_arr['canBuyNum'];
  244. if (num > max) {
  245. num = num - 1;
  246. wx.showToast({
  247. title: `最多只能购买${max}件`,
  248. icon: 'none'
  249. })
  250. }
  251. } else {
  252. let cur_sku_arr = this.data.cur_sku_arr;
  253. if (num > cur_sku_arr['canBuyNum']) {
  254. num = num - 1;
  255. }
  256. }
  257. console.log(num)
  258. sku_car_num.car_quantity = num
  259. // reverseArr[this.data.eventIdx].car_quantity = num
  260. this.setData({
  261. sku_val: num,
  262. showLimitTip,
  263. showLimitType,
  264. cur_sku_arr:sku_car_num
  265. })
  266. },
  267. get_goods_details: function (id, currentCommunity_id){
  268. let that = this;
  269. let token = wx.getStorageSync('token');
  270. app.util.request({
  271. url: 'entry/wxapp/index',
  272. data: {
  273. controller: 'goods.get_goods_detail',
  274. token: token,
  275. id,
  276. community_id: currentCommunity_id
  277. },
  278. dataType: 'json',
  279. success: function (res) {
  280. console.log(res,'详情')
  281. that.setData({
  282. skuList:res.data.data.options,
  283. 'cur_sku_arr.levelprice':res.data.data.goods.levelprice,
  284. 'cur_sku_arr.actPrice':res.data.data.goods.actPrice,
  285. 'cur_sku_arr.marketPrice':res.data.data.goods.marketPrice
  286. })
  287. console.log(that.data.cur_sku_arr)
  288. }
  289. })
  290. },
  291. join() {
  292. //加入购物车
  293. this.gocarfrom(1)
  294. },
  295. buy() {
  296. //购买
  297. this.gocarfrom(0)
  298. },
  299. gocarfrom: function (code) {
  300. var that = this;
  301. wx.showLoading();
  302. // a.collectFormIds(e.detail.formId);
  303. that.goOrder(code);
  304. },
  305. goOrder: function (code) {
  306. var that = this;
  307. if (that.data.can_car) {
  308. that.data.can_car = false;
  309. }
  310. let tdata = that.data;
  311. console.log(code)
  312. console.log(this.data.cur_sku_arr)
  313. if (code == 0) {
  314. let man_orderbuy_money = this.data.man_orderbuy_money * 1;
  315. let sku_val = this.data.cur_sku_arr.car_quantity;
  316. let cur_sku_arr = this.data.cur_sku_arr;
  317. let actPrice = cur_sku_arr.actPrice[0] + '.' + cur_sku_arr.actPrice[1];
  318. console.log(actPrice * 1 * sku_val);
  319. if (actPrice * 1 * sku_val < man_orderbuy_money) {
  320. wx.showToast({
  321. title: '满' + man_orderbuy_money + '元可下单!',
  322. icon: 'none'
  323. })
  324. return false;
  325. }
  326. }
  327. let localtown_moneytype_fixed_freemoney = this.data.localtown_moneytype_fixed_freemoney * 1;
  328. let is_only_distribution = this.data.is_only_distribution;
  329. if (localtown_moneytype_fixed_freemoney >= 0 && is_only_distribution == 1 && code == 0) {
  330. let sku_val = this.data.cur_sku_arr.car_quantity;
  331. let cur_sku_arr = this.data.cur_sku_arr;
  332. let actPrice = cur_sku_arr.actPrice[0] + '.' + cur_sku_arr.actPrice[1];
  333. if (actPrice * 1 * sku_val < localtown_moneytype_fixed_freemoney) {
  334. wx.showToast({
  335. title: '同城配送商品满' + localtown_moneytype_fixed_freemoney + '元可下单!',
  336. icon: 'none'
  337. })
  338. return false;
  339. }
  340. }
  341. var community = wx.getStorageSync('community');
  342. var goods_id = tdata.goodsid;
  343. var community_id = community.communityId;
  344. var quantity = that.data.cur_sku_arr.car_quantity == 0 || !that.data.cur_sku_arr.car_quantity ? 1 : that.data.cur_sku_arr.car_quantity;
  345. var cur_sku_arr = that.data.cur_sku_arr;
  346. var sku_str = '';
  347. var is_just_addcar = code;
  348. if (cur_sku_arr && cur_sku_arr.option_item_ids) {
  349. sku_str = cur_sku_arr.option_item_ids;
  350. }
  351. //20200622
  352. // if (cur_sku_arr.car_quantity && cur_sku_arr.car_quantity > 0 && code == 1) {
  353. // quantity -= cur_sku_arr.car_quantity * 1;
  354. // }
  355. // quantity = quantity <= 0 ? 1 : quantity;
  356. console.log(quantity)
  357. let buy_type = this.data.buy_type ? this.data.buy_type : 'dan';
  358. let data = {
  359. goods_id: goods_id,
  360. community_id,
  361. quantity,
  362. sku_str,
  363. buy_type,
  364. pin_id: 0,
  365. is_just_addcar
  366. }
  367. util.addCart(data).then(res => {
  368. console.log(res)
  369. if (res.showVipModal == 1) {
  370. let {
  371. pop_vipmember_buyimage
  372. } = res.data;
  373. wx.hideLoading();
  374. that.setData({
  375. pop_vipmember_buyimage,
  376. showVipModal: true,
  377. visible: false
  378. })
  379. } else if (res.data.code == 3 || res.data.code == 7) {
  380. wx.showToast({
  381. title: res.data.msg,
  382. icon: 'none',
  383. duration: 2000
  384. })
  385. } else {
  386. if (buy_type == 'integral') {
  387. // 积分
  388. if (res.data.code == 6) {
  389. var msg = res.data.msg;
  390. wx.showToast({
  391. title: msg,
  392. icon: 'none',
  393. duration: 2000
  394. })
  395. } else {
  396. //跳转结算页面
  397. wx.navigateTo({
  398. url: `/lionfish_comshop/pages/order/placeOrder?type=integral`,
  399. })
  400. }
  401. } else {
  402. console.log(res.data.data)
  403. console.log(code)
  404. if (res.data.code == 4) {
  405. wx.hideLoading();
  406. that.setData({
  407. needAuth: true,
  408. showAuthModal: true,
  409. visible: false
  410. })
  411. } else if (res.data.code == 6) {
  412. var msg = res.data.msg;
  413. let max_quantity = res.data.max_quantity || '';
  414. (max_quantity > 0) && that.setData({
  415. sku_val: max_quantity
  416. })
  417. wx.showToast({
  418. title: msg,
  419. icon: 'none',
  420. duration: 2000
  421. })
  422. } else {
  423. console.log(code)
  424. if (code == 1) {
  425. // that.close();
  426. console.log(that.data.cur_sku_arr)
  427. console.log(that.data.reverseArr)
  428. console.log(that.data.skuList)
  429. var reverseArr = that.data.reverseArr;
  430. for(var i=0;i<reverseArr.length;i++){
  431. if(reverseArr[i].spec == that.data.cur_sku_arr.spec){
  432. reverseArr[i] = that.data.cur_sku_arr
  433. }
  434. }
  435. console.log(reverseArr)
  436. that.setData({
  437. 'skuList.sku_mu_list':reverseArr
  438. })
  439. wx.hideLoading();
  440. if (buy_type == 'soitaire') {
  441. let {
  442. goods_total_count,
  443. total
  444. } = res.data;
  445. that.triggerEvent("changeCartNum", {
  446. goods_total_count,
  447. total,
  448. goods_id
  449. });
  450. } else {
  451. res.data.total && that.triggerEvent("changeCartNum", res.data.total);
  452. }
  453. wx.showToast({
  454. title: "已加入购物车",
  455. image: "../../images/addShopCart.png"
  456. })
  457. } else {
  458. that.close();
  459. var is_limit = res.data.is_limit_distance_buy;
  460. var pages_all = getCurrentPages();
  461. if (pages_all.length > 3) {
  462. wx.redirectTo({
  463. url: '/lionfish_comshop/pages/order/placeOrder?type=' + buy_type + '&is_limit=' + is_limit
  464. })
  465. } else {
  466. wx.navigateTo({
  467. url: '/lionfish_comshop/pages/order/placeOrder?type=' + buy_type + '&is_limit=' + is_limit
  468. })
  469. }
  470. }
  471. }
  472. }
  473. }
  474. }).catch(res => {
  475. app.util.message(res || '请求失败', '', 'error');
  476. })
  477. },
  478. // 输入框获得焦点
  479. handleFocus: function () {
  480. this.focusFlag = true;
  481. },
  482. handleBlur: function (t) {
  483. let a = t.detail;
  484. let val = parseInt(a.value);
  485. if (val == '' || isNaN(val)) {
  486. let {
  487. car_quantity,
  488. goods_start_count
  489. } = this.data.cur_sku_arr;
  490. if (car_quantity && car_quantity >= goods_start_count) {
  491. goods_start_count = 1;
  492. } else {
  493. wx.showToast({
  494. title: `${goods_start_count}件起售`,
  495. icon: 'none'
  496. })
  497. }
  498. this.setData({
  499. sku_val: goods_start_count
  500. })
  501. }
  502. },
  503. // 监控输入框变化
  504. changeNumber: function (t) {
  505. let {
  506. cur_sku_arr,
  507. sku_val
  508. } = this.data;
  509. let max = cur_sku_arr.stock * 1;
  510. let a = t.detail;
  511. this.focusFlag = false;
  512. let showLimitTip = false;
  513. let showLimitType = 0;
  514. let {
  515. car_quantity,
  516. goods_start_count
  517. } = this.data.cur_sku_arr;
  518. if (car_quantity && car_quantity >= goods_start_count) goods_start_count = 1;
  519. if (a) {
  520. let val = parseInt(a.value);
  521. val = val < 1 ? 1 : val;
  522. // 限购
  523. let {
  524. one_limit_count,
  525. total_limit_count,
  526. oneday_limit_count
  527. } = cur_sku_arr;
  528. if (one_limit_count > 0 && val > one_limit_count) {
  529. wx.showToast({
  530. title: `您本次只能购买${one_limit_count}份`,
  531. icon: 'none'
  532. })
  533. sku_val = one_limit_count;
  534. showLimitTip = true;
  535. showLimitType = 1;
  536. } else if (oneday_limit_count > 0 && val > oneday_limit_count) {
  537. wx.showToast({
  538. title: `您今天只能购买${oneday_limit_count}份`,
  539. icon: 'none'
  540. })
  541. sku_val = oneday_limit_count;
  542. showLimitTip = true;
  543. showLimitType = 2;
  544. } else if (total_limit_count > 0 && val > total_limit_count) {
  545. wx.showToast({
  546. title: `您最多只能购买${total_limit_count}份`,
  547. icon: 'none'
  548. })
  549. sku_val = total_limit_count;
  550. showLimitTip = true;
  551. showLimitType = 3;
  552. } else if (val > max) {
  553. wx.showToast({
  554. title: `最多只能购买${max}件`,
  555. icon: 'none'
  556. })
  557. sku_val = max;
  558. } else {
  559. if (val < goods_start_count) {
  560. val = goods_start_count;
  561. wx.showToast({
  562. title: `${goods_start_count}件起售`,
  563. icon: 'none'
  564. })
  565. }
  566. sku_val = val;
  567. }
  568. }
  569. this.setData({
  570. sku_val,
  571. showLimitTip,
  572. showLimitType
  573. })
  574. }
  575. },
  576. attached(){
  577. console.log('执行了')
  578. }
  579. });