Blame view

src/mixins/link.js 1.88 KB
9932b935   梁灏   update
1
2
  import { oneOf } from '../utils/assist';
  
e77474de   梁灏   update
3
  export default {
9932b935   梁灏   update
4
5
6
7
8
9
10
11
12
13
14
15
16
17
      props: {
          to: {
              type: [Object, String]
          },
          replace: {
              type: Boolean,
              default: false
          },
          target: {
              type: String,
              validator (value) {
                  return oneOf(value, ['_blank', '_self', '_parent', '_top']);
              },
              default: '_self'
61745887   Rijul Gupta   Update link mixin...
18
19
20
21
22
23
          },
          append: {
              type: Boolean,
              required: false,
              default: false,
          },
9932b935   梁灏   update
24
      },
e77474de   梁灏   update
25
26
      computed: {
          linkUrl () {
32a17436   梁灏   Breadcrumb update...
27
              const type = typeof this.to;
61745887   Rijul Gupta   Update link mixin...
28
29
30
31
32
33
34
35
36
37
38
              if (type !== 'string') {
                  return null;
              }
              if (this.to.includes('//')) {
                  /* Absolute URL, we do not need to route this */
                  return this.to;
              }
              const router = this.$router;
              if (router) {
                  const current = this.$route;
                  const route = router.resolve(this.to, current, this.append);
ad93e7a6   Rijul Gupta   Updated null to r...
39
                  return route ? route.href : this.to;
61745887   Rijul Gupta   Update link mixin...
40
41
              }
              return this.to;
e77474de   梁灏   update
42
43
44
          }
      },
      methods: {
f9a6a467   梁灏   update Button
45
46
47
          handleClick (new_window = false) {
              if (new_window){
                  window.open(this.to);
e77474de   梁灏   update
48
              } else {
f9a6a467   梁灏   update Button
49
50
51
52
53
54
                  const isRoute = this.$router;
                  if (isRoute) {
                      this.replace ? this.$router.replace(this.to) : this.$router.push(this.to);
                  } else {
                      window.location.href = this.to;
                  }
e77474de   梁灏   update
55
              }
7d0b7384   梁灏   fixed #3484
56
          },
f9a6a467   梁灏   update Button
57
          handleCheckClick (event, new_window = false) {
7ff2f71a   zhigang.li   fix
58
              if (this.to) {
7d0b7384   梁灏   fixed #3484
59
60
61
62
                  if (this.target === '_blank') {
                      return false;
                  } else {
                      event.preventDefault();
f9a6a467   梁灏   update Button
63
                      this.handleClick(new_window);
7d0b7384   梁灏   fixed #3484
64
65
                  }
              }
e77474de   梁灏   update
66
67
          }
      }
576329cc   zhigang.li   use link.js for a...
68
  };