lint:format code style

pull/285/head
Pan 7 years ago
parent 3666148ddc
commit 98d5f9a247

@ -52,7 +52,7 @@ module.exports = {
'no-class-assign': 2, 'no-class-assign': 2,
'no-cond-assign': 2, 'no-cond-assign': 2,
'no-const-assign': 2, 'no-const-assign': 2,
'no-control-regex': 2, 'no-control-regex': 0,
'no-delete-var': 2, 'no-delete-var': 2,
'no-dupe-args': 2, 'no-dupe-args': 2,
'no-dupe-class-members': 2, 'no-dupe-class-members': 2,

@ -7,7 +7,7 @@
<script> <script>
import Dropzone from 'dropzone' import Dropzone from 'dropzone'
import 'dropzone/dist/dropzone.css' import 'dropzone/dist/dropzone.css'
// import { getToken } from 'api/qiniu'; // import { getToken } from 'api/qiniu';
Dropzone.autoDiscover = false Dropzone.autoDiscover = false
@ -59,18 +59,18 @@ export default {
}, },
accept: (file, done) => { accept: (file, done) => {
/* 七牛*/ /* 七牛*/
// const token = this.$store.getters.token; // const token = this.$store.getters.token;
// getToken(token).then(response => { // getToken(token).then(response => {
// file.token = response.data.qiniu_token; // file.token = response.data.qiniu_token;
// file.key = response.data.qiniu_key; // file.key = response.data.qiniu_key;
// file.url = response.data.qiniu_url; // file.url = response.data.qiniu_url;
// done(); // done();
// }) // })
done() done()
}, },
sending: (file, xhr, formData) => { sending: (file, xhr, formData) => {
// formData.append('token', file.token); // formData.append('token', file.token);
// formData.append('key', file.key); // formData.append('key', file.key);
vm.initOnce = false vm.initOnce = false
} }
}) })

@ -91,39 +91,39 @@ export default {
this.$emit('input', editor.getContent({ format: 'raw' })) this.$emit('input', editor.getContent({ format: 'raw' }))
}) })
} }
// //
// images_dataimg_filter(img) { // images_dataimg_filter(img) {
// setTimeout(() => { // setTimeout(() => {
// const $image = $(img); // const $image = $(img);
// $image.removeAttr('width'); // $image.removeAttr('width');
// $image.removeAttr('height'); // $image.removeAttr('height');
// if ($image[0].height && $image[0].width) { // if ($image[0].height && $image[0].width) {
// $image.attr('data-wscntype', 'image'); // $image.attr('data-wscntype', 'image');
// $image.attr('data-wscnh', $image[0].height); // $image.attr('data-wscnh', $image[0].height);
// $image.attr('data-wscnw', $image[0].width); // $image.attr('data-wscnw', $image[0].width);
// $image.addClass('wscnph'); // $image.addClass('wscnph');
// } // }
// }, 0); // }, 0);
// return img // return img
// }, // },
// images_upload_handler(blobInfo, success, failure, progress) { // images_upload_handler(blobInfo, success, failure, progress) {
// progress(0); // progress(0);
// const token = _this.$store.getters.token; // const token = _this.$store.getters.token;
// getToken(token).then(response => { // getToken(token).then(response => {
// const url = response.data.qiniu_url; // const url = response.data.qiniu_url;
// const formData = new FormData(); // const formData = new FormData();
// formData.append('token', response.data.qiniu_token); // formData.append('token', response.data.qiniu_token);
// formData.append('key', response.data.qiniu_key); // formData.append('key', response.data.qiniu_key);
// formData.append('file', blobInfo.blob(), url); // formData.append('file', blobInfo.blob(), url);
// upload(formData).then(() => { // upload(formData).then(() => {
// success(url); // success(url);
// progress(100); // progress(100);
// }) // })
// }).catch(err => { // }).catch(err => {
// failure('') // failure('')
// console.log(err); // console.log(err);
// }); // });
// }, // },
}) })
}, },
destroyTinymce() { destroyTinymce() {

@ -77,12 +77,12 @@ export function formatTime(time, option) {
/* 数字 格式化*/ /* 数字 格式化*/
export function nFormatter(num, digits) { export function nFormatter(num, digits) {
const si = [ const si = [
{ value: 1E18, symbol: 'E' }, { value: 1E18, symbol: 'E' },
{ value: 1E15, symbol: 'P' }, { value: 1E15, symbol: 'P' },
{ value: 1E12, symbol: 'T' }, { value: 1E12, symbol: 'T' },
{ value: 1E9, symbol: 'G' }, { value: 1E9, symbol: 'G' },
{ value: 1E6, symbol: 'M' }, { value: 1E6, symbol: 'M' },
{ value: 1E3, symbol: 'k' } { value: 1E3, symbol: 'k' }
] ]
for (let i = 0; i < si.length; i++) { for (let i = 0; i < si.length; i++) {
if (num >= si[i].value) { if (num >= si[i].value) {

@ -8,7 +8,7 @@ import * as filters from './filters' // 全局filter
import './icons' // icon import './icons' // icon
import './errorLog'// error log import './errorLog'// error log
import './permission' // 权限 import './permission' // 权限
import './mock' // 该项目所有请求使用mockjs模拟 import './mock' // 该项目所有请求使用mockjs模拟
Vue.use(ElementUI) Vue.use(ElementUI)

@ -1 +1 @@
module.exports = file => require('@/views/' + file + '.vue').default // vue-loader at least v13.0.0+ module.exports = file => require('@/views/' + file + '.vue').default // vue-loader at least v13.0.0+

@ -6,7 +6,7 @@ import { getToken } from '@/utils/auth'
// 创建axios实例 // 创建axios实例
const service = axios.create({ const service = axios.create({
baseURL: process.env.BASE_API, // api的base_url baseURL: process.env.BASE_API, // api的base_url
timeout: 5000 // 请求超时时间 timeout: 5000 // 请求超时时间
}) })
// request拦截器 // request拦截器
@ -29,29 +29,29 @@ service.interceptors.response.use(
* 下面的注释为通过response自定义code来标示请求状态当code返回如下情况为权限有问题登出并返回到登录页 * 下面的注释为通过response自定义code来标示请求状态当code返回如下情况为权限有问题登出并返回到登录页
* 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中 * 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中
*/ */
// const res = response.data; // const res = response.data;
// if (res.code !== 20000) { // if (res.code !== 20000) {
// Message({ // Message({
// message: res.message, // message: res.message,
// type: 'error', // type: 'error',
// duration: 5 * 1000 // duration: 5 * 1000
// }); // });
// // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了; // // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了;
// if (res.code === 50008 || res.code === 50012 || res.code === 50014) { // if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
// MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录', '确定登出', { // MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录', '确定登出', {
// confirmButtonText: '重新登录', // confirmButtonText: '重新登录',
// cancelButtonText: '取消', // cancelButtonText: '取消',
// type: 'warning' // type: 'warning'
// }).then(() => { // }).then(() => {
// store.dispatch('FedLogOut').then(() => { // store.dispatch('FedLogOut').then(() => {
// location.reload();// 为了重新实例化vue-router对象 避免bug // location.reload();// 为了重新实例化vue-router对象 避免bug
// }); // });
// }) // })
// } // }
// return Promise.reject('error'); // return Promise.reject('error');
// } else { // } else {
// return response.data; // return response.data;
// } // }
error => { error => {
console.log('err' + error)// for debug console.log('err' + error)// for debug
Message({ Message({
@ -60,7 +60,6 @@ service.interceptors.response.use(
duration: 5 * 1000 duration: 5 * 1000
}) })
return Promise.reject(error) return Promise.reject(error)
} })
)
export default service export default service

@ -2,266 +2,266 @@
* Created by jiachenpan on 16/11/18. * Created by jiachenpan on 16/11/18.
*/ */
export function parseTime(time, cFormat) { export function parseTime(time, cFormat) {
if (arguments.length === 0) { if (arguments.length === 0) {
return null return null
} }
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}' const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
let date let date
if (typeof time === 'object') { if (typeof time === 'object') {
date = time date = time
} else { } else {
if (('' + time).length === 10) time = parseInt(time) * 1000 if (('' + time).length === 10) time = parseInt(time) * 1000
date = new Date(time) date = new Date(time)
} }
const formatObj = { const formatObj = {
y: date.getFullYear(), y: date.getFullYear(),
m: date.getMonth() + 1, m: date.getMonth() + 1,
d: date.getDate(), d: date.getDate(),
h: date.getHours(), h: date.getHours(),
i: date.getMinutes(), i: date.getMinutes(),
s: date.getSeconds(), s: date.getSeconds(),
a: date.getDay() a: date.getDay()
} }
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key] let value = formatObj[key]
if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1] if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]
if (result.length > 0 && value < 10) { if (result.length > 0 && value < 10) {
value = '0' + value value = '0' + value
} }
return value || 0 return value || 0
}) })
return time_str return time_str
} }
export function formatTime(time, option) { export function formatTime(time, option) {
time = +time * 1000 time = +time * 1000
const d = new Date(time) const d = new Date(time)
const now = Date.now() const now = Date.now()
const diff = (now - d) / 1000 const diff = (now - d) / 1000
if (diff < 30) { if (diff < 30) {
return '刚刚' return '刚刚'
} else if (diff < 3600) { // less 1 hour } else if (diff < 3600) { // less 1 hour
return Math.ceil(diff / 60) + '分钟前' return Math.ceil(diff / 60) + '分钟前'
} else if (diff < 3600 * 24) { } else if (diff < 3600 * 24) {
return Math.ceil(diff / 3600) + '小时前' return Math.ceil(diff / 3600) + '小时前'
} else if (diff < 3600 * 24 * 2) { } else if (diff < 3600 * 24 * 2) {
return '1天前' return '1天前'
} }
if (option) { if (option) {
return parseTime(time, option) return parseTime(time, option)
} else { } else {
return d.getMonth() + 1 + '月' + d.getDate() + '日' + d.getHours() + '时' + d.getMinutes() + '分' return d.getMonth() + 1 + '月' + d.getDate() + '日' + d.getHours() + '时' + d.getMinutes() + '分'
} }
} }
// 格式化时间 // 格式化时间
export function getQueryObject(url) { export function getQueryObject(url) {
url = url == null ? window.location.href : url url = url == null ? window.location.href : url
const search = url.substring(url.lastIndexOf('?') + 1) const search = url.substring(url.lastIndexOf('?') + 1)
const obj = {} const obj = {}
const reg = /([^?&=]+)=([^?&=]*)/g const reg = /([^?&=]+)=([^?&=]*)/g
search.replace(reg, (rs, $1, $2) => { search.replace(reg, (rs, $1, $2) => {
const name = decodeURIComponent($1) const name = decodeURIComponent($1)
let val = decodeURIComponent($2) let val = decodeURIComponent($2)
val = String(val) val = String(val)
obj[name] = val obj[name] = val
return rs return rs
}) })
return obj return obj
} }
/** /**
*get getByteLen *get getByteLen
* @param {Sting} val input value * @param {Sting} val input value
* @returns {number} output value * @returns {number} output value
*/ */
export function getByteLen(val) { export function getByteLen(val) {
let len = 0 let len = 0
for (let i = 0; i < val.length; i++) { for (let i = 0; i < val.length; i++) {
if (val[i].match(/[^\x00-\xff]/ig) != null) { if (val[i].match(/[^\x00-\xff]/ig) != null) {
len += 1 len += 1
} else { len += 0.5 } } else { len += 0.5 }
} }
return Math.floor(len) return Math.floor(len)
} }
export function cleanArray(actual) { export function cleanArray(actual) {
const newArray = [] const newArray = []
for (let i = 0; i < actual.length; i++) { for (let i = 0; i < actual.length; i++) {
if (actual[i]) { if (actual[i]) {
newArray.push(actual[i]) newArray.push(actual[i])
} }
} }
return newArray return newArray
} }
export function param(json) { export function param(json) {
if (!json) return '' if (!json) return ''
return cleanArray(Object.keys(json).map(key => { return cleanArray(Object.keys(json).map(key => {
if (json[key] === undefined) return '' if (json[key] === undefined) return ''
return encodeURIComponent(key) + '=' + return encodeURIComponent(key) + '=' +
encodeURIComponent(json[key]) encodeURIComponent(json[key])
})).join('&') })).join('&')
} }
export function param2Obj(url) { export function param2Obj(url) {
const search = url.split('?')[1] const search = url.split('?')[1]
if (!search) { if (!search) {
return {} return {}
} }
return JSON.parse('{"' + decodeURIComponent(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}') return JSON.parse('{"' + decodeURIComponent(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}')
} }
export function html2Text(val) { export function html2Text(val) {
const div = document.createElement('div') const div = document.createElement('div')
div.innerHTML = val div.innerHTML = val
return div.textContent || div.innerText return div.textContent || div.innerText
} }
export function objectMerge(target, source) { export function objectMerge(target, source) {
/* Merges two objects, /* Merges two objects,
giving the last one precedence */ giving the last one precedence */
if (typeof target !== 'object') { if (typeof target !== 'object') {
target = {} target = {}
} }
if (Array.isArray(source)) { if (Array.isArray(source)) {
return source.slice() return source.slice()
} }
for (const property in source) { for (const property in source) {
if (source.hasOwnProperty(property)) { if (source.hasOwnProperty(property)) {
const sourceProperty = source[property] const sourceProperty = source[property]
if (typeof sourceProperty === 'object') { if (typeof sourceProperty === 'object') {
target[property] = objectMerge(target[property], sourceProperty) target[property] = objectMerge(target[property], sourceProperty)
continue continue
} }
target[property] = sourceProperty target[property] = sourceProperty
} }
} }
return target return target
} }
export function scrollTo(element, to, duration) { export function scrollTo(element, to, duration) {
if (duration <= 0) return if (duration <= 0) return
const difference = to - element.scrollTop const difference = to - element.scrollTop
const perTick = difference / duration * 10 const perTick = difference / duration * 10
setTimeout(() => { setTimeout(() => {
console.log(new Date()) console.log(new Date())
element.scrollTop = element.scrollTop + perTick element.scrollTop = element.scrollTop + perTick
if (element.scrollTop === to) return if (element.scrollTop === to) return
scrollTo(element, to, duration - 10) scrollTo(element, to, duration - 10)
}, 10) }, 10)
} }
export function toggleClass(element, className) { export function toggleClass(element, className) {
if (!element || !className) { if (!element || !className) {
return return
} }
let classString = element.className let classString = element.className
const nameIndex = classString.indexOf(className) const nameIndex = classString.indexOf(className)
if (nameIndex === -1) { if (nameIndex === -1) {
classString += '' + className classString += '' + className
} else { } else {
classString = classString.substr(0, nameIndex) + classString.substr(nameIndex + className.length) classString = classString.substr(0, nameIndex) + classString.substr(nameIndex + className.length)
} }
element.className = classString element.className = classString
} }
export const pickerOptions = [ export const pickerOptions = [
{ {
text: '今天', text: '今天',
onClick(picker) { onClick(picker) {
const end = new Date() const end = new Date()
const start = new Date(new Date().toDateString()) const start = new Date(new Date().toDateString())
end.setTime(start.getTime()) end.setTime(start.getTime())
picker.$emit('pick', [start, end]) picker.$emit('pick', [start, end])
} }
}, { }, {
text: '最近一周', text: '最近一周',
onClick(picker) { onClick(picker) {
const end = new Date(new Date().toDateString()) const end = new Date(new Date().toDateString())
const start = new Date() const start = new Date()
start.setTime(end.getTime() - 3600 * 1000 * 24 * 7) start.setTime(end.getTime() - 3600 * 1000 * 24 * 7)
picker.$emit('pick', [start, end]) picker.$emit('pick', [start, end])
} }
}, { }, {
text: '最近一个月', text: '最近一个月',
onClick(picker) { onClick(picker) {
const end = new Date(new Date().toDateString()) const end = new Date(new Date().toDateString())
const start = new Date() const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30) start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
picker.$emit('pick', [start, end]) picker.$emit('pick', [start, end])
} }
}, { }, {
text: '最近三个月', text: '最近三个月',
onClick(picker) { onClick(picker) {
const end = new Date(new Date().toDateString()) const end = new Date(new Date().toDateString())
const start = new Date() const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90) start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
picker.$emit('pick', [start, end]) picker.$emit('pick', [start, end])
} }
}] }]
export function getTime(type) { export function getTime(type) {
if (type === 'start') { if (type === 'start') {
return new Date().getTime() - 3600 * 1000 * 24 * 90 return new Date().getTime() - 3600 * 1000 * 24 * 90
} else { } else {
return new Date(new Date().toDateString()) return new Date(new Date().toDateString())
} }
} }
export function debounce(func, wait, immediate) { export function debounce(func, wait, immediate) {
let timeout, args, context, timestamp, result let timeout, args, context, timestamp, result
const later = function() { const later = function() {
// 据上一次触发时间间隔 // 据上一次触发时间间隔
const last = +new Date() - timestamp const last = +new Date() - timestamp
// 上次被包装函数被调用时间间隔last小于设定时间间隔wait // 上次被包装函数被调用时间间隔last小于设定时间间隔wait
if (last < wait && last > 0) { if (last < wait && last > 0) {
timeout = setTimeout(later, wait - last) timeout = setTimeout(later, wait - last)
} else { } else {
timeout = null timeout = null
// 如果设定为immediate===true因为开始边界已经调用过了此处无需调用 // 如果设定为immediate===true因为开始边界已经调用过了此处无需调用
if (!immediate) { if (!immediate) {
result = func.apply(context, args) result = func.apply(context, args)
if (!timeout) context = args = null if (!timeout) context = args = null
} }
} }
} }
return function(...args) { return function(...args) {
context = this context = this
timestamp = +new Date() timestamp = +new Date()
const callNow = immediate && !timeout const callNow = immediate && !timeout
// 如果延时不存在,重新设定延时 // 如果延时不存在,重新设定延时
if (!timeout) timeout = setTimeout(later, wait) if (!timeout) timeout = setTimeout(later, wait)
if (callNow) { if (callNow) {
result = func.apply(context, args) result = func.apply(context, args)
context = args = null context = args = null
} }
return result return result
} }
} }
export function deepClone(source) { export function deepClone(source) {
if (!source && typeof source !== 'object') { if (!source && typeof source !== 'object') {
throw new Error('error arguments', 'shallowClone') throw new Error('error arguments', 'shallowClone')
} }
const targetObj = source.constructor === Array ? [] : {} const targetObj = source.constructor === Array ? [] : {}
for (const keys in source) { for (const keys in source) {
if (source.hasOwnProperty(keys)) { if (source.hasOwnProperty(keys)) {
if (source[keys] && typeof source[keys] === 'object') { if (source[keys] && typeof source[keys] === 'object') {
targetObj[keys] = source[keys].constructor === Array ? [] : {} targetObj[keys] = source[keys].constructor === Array ? [] : {}
targetObj[keys] = deepClone(source[keys]) targetObj[keys] = deepClone(source[keys])
} else { } else {
targetObj[keys] = source[keys] targetObj[keys] = source[keys]
} }
} }
} }
return targetObj return targetObj
} }

@ -7,7 +7,7 @@
*/ */
export default function openWindow(url, title, w, h) { export default function openWindow(url, title, w, h) {
// Fixes dual-screen position Most browsers Firefox // Fixes dual-screen position Most browsers Firefox
const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left
const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top

@ -15,7 +15,7 @@
<script> <script>
import clip from '@/utils/clipboard' // use clipboard directly import clip from '@/utils/clipboard' // use clipboard directly
import clipboard from '@/directive/clipboard/index.js' // use clipboard by v-directive import clipboard from '@/directive/clipboard/index.js' // use clipboard by v-directive
export default { export default {
name: 'clipboardDemo', name: 'clipboardDemo',

@ -104,9 +104,9 @@ export default {
url: '', url: '',
platforms: ['a-platform'], platforms: ['a-platform'],
platformsOptions: [ platformsOptions: [
{ key: 'a-platform', name: '平台A' }, { key: 'a-platform', name: '平台A' },
{ key: 'b-platform', name: '平台B' }, { key: 'b-platform', name: '平台B' },
{ key: 'c-platform', name: '平台C' } { key: 'c-platform', name: '平台C' }
], ],
pickerOptions: { pickerOptions: {
disabledDate(time) { disabledDate(time) {

@ -61,12 +61,12 @@ export default {
type: 'pie', type: 'pie',
roseType: 'radius', roseType: 'radius',
data: [ data: [
{ value: 320, name: 'industries' }, { value: 320, name: 'industries' },
{ value: 240, name: 'technology' }, { value: 240, name: 'technology' },
{ value: 149, name: 'forex' }, { value: 149, name: 'forex' },
{ value: 100, name: 'gold' }, { value: 100, name: 'gold' },
{ value: 59, name: 'forecasts' }, { value: 59, name: 'forecasts' },
{ value: 49, name: 'markets' } { value: 49, name: 'markets' }
], ],
animationEasing: 'cubicInOut', animationEasing: 'cubicInOut',
animationDuration: 2600 animationDuration: 2600

@ -155,10 +155,10 @@ import waves from '@/directive/waves/index.js' // 水波纹指令
import { parseTime } from '@/utils' import { parseTime } from '@/utils'
const calendarTypeOptions = [ const calendarTypeOptions = [
{ key: 'CN', display_name: '中国' }, { key: 'CN', display_name: '中国' },
{ key: 'US', display_name: '美国' }, { key: 'US', display_name: '美国' },
{ key: 'JP', display_name: '日本' }, { key: 'JP', display_name: '日本' },
{ key: 'EU', display_name: '欧元区' } { key: 'EU', display_name: '欧元区' }
] ]
// arr to obj // arr to obj

@ -87,7 +87,7 @@ export default {
this.$store.dispatch('LoginByUsername', this.loginForm).then(() => { this.$store.dispatch('LoginByUsername', this.loginForm).then(() => {
this.loading = false this.loading = false
this.$router.push({ path: '/' }) this.$router.push({ path: '/' })
// this.showDialog = true // this.showDialog = true
}).catch(() => { }).catch(() => {
this.loading = false this.loading = false
}) })
@ -98,29 +98,29 @@ export default {
}) })
}, },
afterQRScan() { afterQRScan() {
// const hash = window.location.hash.slice(1) // const hash = window.location.hash.slice(1)
// const hashObj = getQueryObject(hash) // const hashObj = getQueryObject(hash)
// const originUrl = window.location.origin // const originUrl = window.location.origin
// history.replaceState({}, '', originUrl) // history.replaceState({}, '', originUrl)
// const codeMap = { // const codeMap = {
// wechat: 'code', // wechat: 'code',
// tencent: 'code' // tencent: 'code'
// } // }
// const codeName = hashObj[codeMap[this.auth_type]] // const codeName = hashObj[codeMap[this.auth_type]]
// if (!codeName) { // if (!codeName) {
// alert('') // alert('')
// } else { // } else {
// this.$store.dispatch('LoginByThirdparty', codeName).then(() => { // this.$store.dispatch('LoginByThirdparty', codeName).then(() => {
// this.$router.push({ path: '/' }) // this.$router.push({ path: '/' })
// }) // })
// } // }
} }
}, },
created() { created() {
// window.addEventListener('hashchange', this.afterQRScan) // window.addEventListener('hashchange', this.afterQRScan)
}, },
destroyed() { destroyed() {
// window.removeEventListener('hashchange', this.afterQRScan) // window.removeEventListener('hashchange', this.afterQRScan)
} }
} }
</script> </script>

Loading…
Cancel
Save