mixins.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import Vue from 'vue'
  2. Vue.mixin({
  3. data: function () {
  4. return {
  5. appVersion: window.appVersion
  6. }
  7. },
  8. methods: {
  9. async appLogout(evt) {
  10. if (this.$root.appConfig.proxyAuth) {
  11. if (this.$root.appConfig.proxyLogoutUrl) {
  12. location.assign(this.$root.appConfig.proxyLogoutUrl)
  13. }
  14. else return false
  15. }
  16. else {
  17. await this.axios.get('/user/logout')
  18. this.$storage.clear()
  19. this.$router.push({ name: 'login', params: { forceRefresh: true } })
  20. }
  21. },
  22. exitSettings: function (event) {
  23. if (event) {
  24. this.$notify({ clean: true })
  25. this.$router.push({ name: 'accounts' })
  26. }
  27. },
  28. isUrl: function (url) {
  29. var strRegex = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/
  30. var re = new RegExp(strRegex)
  31. return re.test(url)
  32. },
  33. openInBrowser(uri) {
  34. const a = document.createElement('a')
  35. a.setAttribute('href', uri)
  36. a.dispatchEvent(new MouseEvent("click", { 'view': window, 'bubbles': true, 'cancelable': true }))
  37. },
  38. /**
  39. *
  40. */
  41. inputId(fieldType, fieldName) {
  42. let prefix
  43. fieldName = fieldName.toString()
  44. switch (fieldType) {
  45. case 'button':
  46. prefix = 'txt'
  47. break
  48. case 'button':
  49. prefix = 'btn'
  50. break
  51. case 'email':
  52. prefix = 'eml'
  53. break
  54. case 'password':
  55. prefix = 'pwd'
  56. break
  57. case 'radio':
  58. prefix = 'rdo'
  59. break
  60. case 'label':
  61. prefix = 'lbl'
  62. break
  63. default:
  64. prefix = 'txt'
  65. break
  66. }
  67. return prefix + fieldName[0].toUpperCase() + fieldName.toLowerCase().slice(1);
  68. // button
  69. // checkbox
  70. // color
  71. // date
  72. // datetime-local
  73. // file
  74. // hidden
  75. // image
  76. // month
  77. // number
  78. // radio
  79. // range
  80. // reset
  81. // search
  82. // submit
  83. // tel
  84. // text
  85. // time
  86. // url
  87. // week
  88. },
  89. setTheme(theme) {
  90. document.documentElement.dataset.theme = theme;
  91. }
  92. }
  93. })