handle.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import unit from "$utils/unit/unit";
  2. import popup from "$utils/tool/popup";
  3. import {PopupExportComponent} from "$popup/popup-export/const";
  4. import {mapState} from "vuex";
  5. export default <LibMixins>{
  6. data(){
  7. return {
  8. swiperOption:{
  9. slidesPerView:5,
  10. slidesPerGroup:5,
  11. spaceBetween:unit.unitPx(10),
  12. slidesPerColumn:2,
  13. slidesPerColumnFill:'row'
  14. },
  15. offsetTop: unit.unitPx(10),
  16. }
  17. },
  18. methods:{
  19. mouseover(event,item){
  20. if (event.target) {
  21. if (this.useOffsetWidth === undefined) {
  22. this.useOffsetWidth =event.target.parentNode.offsetWidth /2;
  23. }
  24. popup.$popup && popup.$popup.open(PopupExportComponent.giftBubble,{
  25. value:true,
  26. x: event.clientX - event.offsetX + this.useOffsetWidth,
  27. y: event.clientY - event.offsetY + this.offsetTop,
  28. item,
  29. number: this.numberObject[item.gid] || 1,
  30. updateNumber:(data)=> this.updateNumber(data),
  31. reward:(data)=> this.reward(data)
  32. });
  33. }
  34. },
  35. mouseout(event){
  36. // 设置关闭
  37. popup.$popup && popup.$popup.open(PopupExportComponent.giftBubble,{value:false});
  38. },
  39. updateNumber({item,number}){
  40. this.numberObject[item.gid] = number;
  41. },
  42. reward({item,value}){
  43. if (item.gid) {
  44. // 计算余额是否足够
  45. let integral = item.gift_price * value;
  46. if (this.$store.getters.integral >= integral) {
  47. popup.$confirm({
  48. title:'是否赠送'+value+'个'+(item.gift_name)+'?',
  49. confirm:()=>{
  50. this.$request({
  51. url:'gift/send_gift',
  52. token:true,
  53. data:{
  54. pack:2,
  55. num: value,
  56. gid:item.gid
  57. }
  58. })
  59. }
  60. });
  61. } else {
  62. return popup.$toast('余额不足');
  63. }
  64. }
  65. },
  66. },
  67. computed:mapState({
  68. // @ts-ignore
  69. giftData:(state)=> state.gift.giftData
  70. }),
  71. created() {
  72. this.numberObject = {};
  73. return this.$store.dispatch('initializationGiftPromise');
  74. }
  75. }