Blame view

src/mixins/link.js 2.13 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
          handleClick (new_window = false) {
5465ae45   梁灏   close #5378
46
47
48
49
50
51
52
53
54
55
              const router = this.$router;
  
              if (new_window) {
                  let to = this.to;
                  if (router) {
                      const current = this.$route;
                      const route = router.resolve(this.to, current, this.append);
                      to = route ? route.href : this.to;
                  }
                  window.open(to);
e77474de   梁灏   update
56
              } else {
5465ae45   梁灏   close #5378
57
                  if (router) {
f9a6a467   梁灏   update Button
58
59
60
61
                      this.replace ? this.$router.replace(this.to) : this.$router.push(this.to);
                  } else {
                      window.location.href = this.to;
                  }
e77474de   梁灏   update
62
              }
7d0b7384   梁灏   fixed #3484
63
          },
f9a6a467   梁灏   update Button
64
          handleCheckClick (event, new_window = false) {
7ff2f71a   zhigang.li   fix
65
              if (this.to) {
7d0b7384   梁灏   fixed #3484
66
67
68
69
                  if (this.target === '_blank') {
                      return false;
                  } else {
                      event.preventDefault();
f9a6a467   梁灏   update Button
70
                      this.handleClick(new_window);
7d0b7384   梁灏   fixed #3484
71
72
                  }
              }
e77474de   梁灏   update
73
74
          }
      }
576329cc   zhigang.li   use link.js for a...
75
  };