jhzh
2025-04-27 c6c703c80be3ee1f1f2d28f820c4d3b730e17040
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<template>
  <navigator
    :url="url"
    :openType="currentOpenType"
    :animationDuration="animationDuration"
    :hoverClass="hoverClass"
    :hoverStopPropagation="hoverStopPropagation"
    :hoverStartTime="hoverStartTime"
    :hoverStayTime="hoverStayTime"
    :target="target"
    @click="toNext"
  >
    <slot></slot>
  </navigator>
</template>
<script>
import qs from "qs";
export default {
  name: "vLink",
  props: {
    to: {
      default() {
        return "";
      },
      require: true,
      type: String | Object,
    },
    replace: {
      defalut: false,
      requires: false,
      type: Boolean,
    },
    openType: {
      default: "navigate",
      require: false,
      type: String,
    },
    animationDuration: {
      default: 300,
      require: false,
      type: Number,
    },
    hoverClass: {
      default: "navigator-hover",
      reuqire: false,
      type: String,
    },
    hoverStopPropagation: {
      default: false,
      reuqire: false,
      type: Boolean,
    },
    hoverStartTime: {
      default: 50,
      require: false,
      type: Number,
    },
    hoverStayTime: {
      default: 600,
      require: false,
      type: Number,
    },
    target: {
      default: "self",
      require: false,
      type: String,
    },
  },
  computed: {
    currentOpenType() {
      if (this.replace) {
        return "redirect";
      } else {
        return this.openType;
      }
    },
    url() {
      var url = "",
        query;
      if (typeof this.to == "string") {
        url = this.to;
      } else {
        url = this.to.path;
        query = qs.stringify(this.to.query);
      }
      return  `${url}${url.includes('?') ? '&' : '?'}${query||''}`
    },
  },
  methods: {
    toNext(){
      this.$navFontColor()
    }
  },
};
</script>