car.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import request from '../../utils/request/index';
  2. import store from '../../store/index';
  3. export default {
  4. // 当前是否处于发起请求
  5. status: false,
  6. // 本次请求的 唯一标示
  7. requestUnique: 0,
  8. // 购物数量 当前统计
  9. number: 0,
  10. numberFormat: '',
  11. getCartNumber:function (must) {
  12. if (!this.status || must) {
  13. let requestUnique = this.getUnique();
  14. this.requestUnique = requestUnique;
  15. return new Promise( (resolve, reject)=> {
  16. request({
  17. url:'product/getCartNum',
  18. token:true,
  19. login:false,
  20. next:(status)=>{
  21. this.status = status;
  22. }
  23. }).then((data)=>{
  24. if (requestUnique === this.requestUnique) {
  25. if ( data.isSuccess) {
  26. this.setCartNumber(data.data);
  27. return resolve(this.number);
  28. } else {
  29. return reject({
  30. data: data,
  31. status: data.status,
  32. msg:data.msg
  33. });
  34. }
  35. } else {
  36. return reject({
  37. data: data,
  38. status: 0,
  39. msg:'invalid request'
  40. });
  41. }
  42. }).catch((fail)=>{
  43. return reject({
  44. status: 4,
  45. msg: fail
  46. })
  47. });
  48. });
  49. }
  50. },
  51. setCartNumber:function(number){
  52. if (number !== this.number) {
  53. this.number = number;
  54. if (number <= 0) {
  55. this.numberFormat = '';
  56. } else {
  57. this.numberFormat = number >99?'99+': String(number);
  58. }
  59. // 更新
  60. store.commit('setNumberFormat',this.number);
  61. // wx.tab
  62. return this.saveTabBarBadge();
  63. }
  64. },
  65. checkSet:function(){
  66. if (this.setFail) {
  67. return this.saveTabBarBadge();
  68. }
  69. },
  70. saveTabBarBadge:function(){
  71. if (this.number > 0) {
  72. return uni.setTabBarBadge({
  73. index: 2,
  74. text: this.numberFormat,
  75. fail:()=>{
  76. this.setFail = true;
  77. }
  78. })
  79. } else {
  80. return wx.removeTabBarBadge({
  81. index: 2,
  82. fail:(res) =>{
  83. this.setFail = true;
  84. }
  85. });
  86. }
  87. },
  88. getUnique:function () {
  89. return new Date().getTime();
  90. }
  91. }