Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
VueElementTemplate
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄瑜
VueElementTemplate
Commits
98d5f9a2
Commit
98d5f9a2
authored
Oct 31, 2017
by
Pan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lint:format code style
parent
3666148d
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
341 additions
and
342 deletions
+341
-342
.eslintrc.js
.eslintrc.js
+1
-1
index.vue
src/components/Dropzone/index.vue
+10
-10
index.vue
src/components/Tinymce/index.vue
+33
-33
index.js
src/filters/index.js
+6
-6
main.js
src/main.js
+1
-1
_import_development.js
src/router/_import_development.js
+1
-1
fetch.js
src/utils/fetch.js
+25
-26
index.js
src/utils/index.js
+230
-230
openWindow.js
src/utils/openWindow.js
+1
-1
index.vue
src/views/clipboard/index.vue
+1
-1
sticky.vue
src/views/components/sticky.vue
+3
-3
pieChart.vue
src/views/dashboard/admin/pieChart.vue
+6
-6
complexTable.vue
src/views/example/table/complexTable.vue
+4
-4
index.vue
src/views/login/index.vue
+19
-19
No files found.
.eslintrc.js
View file @
98d5f9a2
...
...
@@ -52,7 +52,7 @@ module.exports = {
'no-class-assign'
:
2
,
'no-cond-assign'
:
2
,
'no-const-assign'
:
2
,
'no-control-regex'
:
2
,
'no-control-regex'
:
0
,
'no-delete-var'
:
2
,
'no-dupe-args'
:
2
,
'no-dupe-class-members'
:
2
,
...
...
src/components/Dropzone/index.vue
View file @
98d5f9a2
...
...
@@ -7,7 +7,7 @@
<
script
>
import
Dropzone
from
'dropzone'
import
'dropzone/dist/dropzone.css'
// import { getToken } from 'api/qiniu';
// import { getToken } from 'api/qiniu';
Dropzone
.
autoDiscover
=
false
...
...
@@ -59,18 +59,18 @@ export default {
},
accept
:
(
file
,
done
)
=>
{
/* 七牛*/
// const token = this.$store.getters.token;
// getToken(token).then(response => {
// file.token = response.data.qiniu_token;
// file.key = response.data.qiniu_key;
// file.url = response.data.qiniu_url;
// done();
// })
// const token = this.$store.getters.token;
// getToken(token).then(response => {
// file.token = response.data.qiniu_token;
// file.key = response.data.qiniu_key;
// file.url = response.data.qiniu_url;
// done();
// })
done
()
},
sending
:
(
file
,
xhr
,
formData
)
=>
{
// formData.append('token', file.token);
// formData.append('key', file.key);
// formData.append('token', file.token);
// formData.append('key', file.key);
vm
.
initOnce
=
false
}
})
...
...
src/components/Tinymce/index.vue
View file @
98d5f9a2
...
...
@@ -91,39 +91,39 @@ export default {
this
.
$emit
(
'input'
,
editor
.
getContent
({
format
:
'raw'
}))
})
}
// 整合七牛上传
// images_dataimg_filter(img) {
// setTimeout(() => {
// const $image = $(img);
// $image.removeAttr('width');
// $image.removeAttr('height');
// if ($image[0].height && $image[0].width) {
// $image.attr('data-wscntype', 'image');
// $image.attr('data-wscnh', $image[0].height);
// $image.attr('data-wscnw', $image[0].width);
// $image.addClass('wscnph');
// }
// }, 0);
// return img
// },
// images_upload_handler(blobInfo, success, failure, progress) {
// progress(0);
// const token = _this.$store.getters.token;
// getToken(token).then(response => {
// const url = response.data.qiniu_url;
// const formData = new FormData();
// formData.append('token', response.data.qiniu_token);
// formData.append('key', response.data.qiniu_key);
// formData.append('file', blobInfo.blob(), url);
// upload(formData).then(() => {
// success(url);
// progress(100);
// })
// }).catch(err => {
// failure('出现未知问题,刷新页面,或者联系程序员')
// console.log(err);
// });
// },
// 整合七牛上传
// images_dataimg_filter(img) {
// setTimeout(() => {
// const $image = $(img);
// $image.removeAttr('width');
// $image.removeAttr('height');
// if ($image[0].height && $image[0].width) {
// $image.attr('data-wscntype', 'image');
// $image.attr('data-wscnh', $image[0].height);
// $image.attr('data-wscnw', $image[0].width);
// $image.addClass('wscnph');
// }
// }, 0);
// return img
// },
// images_upload_handler(blobInfo, success, failure, progress) {
// progress(0);
// const token = _this.$store.getters.token;
// getToken(token).then(response => {
// const url = response.data.qiniu_url;
// const formData = new FormData();
// formData.append('token', response.data.qiniu_token);
// formData.append('key', response.data.qiniu_key);
// formData.append('file', blobInfo.blob(), url);
// upload(formData).then(() => {
// success(url);
// progress(100);
// })
// }).catch(err => {
// failure('出现未知问题,刷新页面,或者联系程序员')
// console.log(err);
// });
// },
})
},
destroyTinymce
()
{
...
...
src/filters/index.js
View file @
98d5f9a2
...
...
@@ -77,12 +77,12 @@ export function formatTime(time, option) {
/* 数字 格式化*/
export
function
nFormatter
(
num
,
digits
)
{
const
si
=
[
{
value
:
1
E18
,
symbol
:
'E'
},
{
value
:
1
E15
,
symbol
:
'P'
},
{
value
:
1
E12
,
symbol
:
'T'
},
{
value
:
1
E9
,
symbol
:
'G'
},
{
value
:
1
E6
,
symbol
:
'M'
},
{
value
:
1
E3
,
symbol
:
'k'
}
{
value
:
1
E18
,
symbol
:
'E'
},
{
value
:
1
E15
,
symbol
:
'P'
},
{
value
:
1
E12
,
symbol
:
'T'
},
{
value
:
1
E9
,
symbol
:
'G'
},
{
value
:
1
E6
,
symbol
:
'M'
},
{
value
:
1
E3
,
symbol
:
'k'
}
]
for
(
let
i
=
0
;
i
<
si
.
length
;
i
++
)
{
if
(
num
>=
si
[
i
].
value
)
{
...
...
src/main.js
View file @
98d5f9a2
...
...
@@ -8,7 +8,7 @@ import * as filters from './filters' // 全局filter
import
'./icons'
// icon
import
'./errorLog'
// error log
import
'./permission'
// 权限
import
'./mock'
// 该项目所有请求使用mockjs模拟
import
'./mock'
// 该项目所有请求使用mockjs模拟
Vue
.
use
(
ElementUI
)
...
...
src/router/_import_development.js
View file @
98d5f9a2
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+
src/utils/fetch.js
View file @
98d5f9a2
...
...
@@ -6,7 +6,7 @@ import { getToken } from '@/utils/auth'
// 创建axios实例
const
service
=
axios
.
create
({
baseURL
:
process
.
env
.
BASE_API
,
// api的base_url
timeout
:
5000
// 请求超时时间
timeout
:
5000
// 请求超时时间
})
// request拦截器
...
...
@@ -29,29 +29,29 @@ service.interceptors.response.use(
* 下面的注释为通过response自定义code来标示请求状态,当code返回如下情况为权限有问题,登出并返回到登录页
* 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中
*/
// const res = response.data;
// if (res.code !== 20000) {
// Message({
// message: res.message,
// type: 'error',
// duration: 5 * 1000
// });
// // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了;
// if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
// MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录', '确定登出', {
// confirmButtonText: '重新登录',
// cancelButtonText: '取消',
// type: 'warning'
// }).then(() => {
// store.dispatch('FedLogOut').then(() => {
// location.reload();// 为了重新实例化vue-router对象 避免bug
// });
// })
// }
// return Promise.reject('error');
// } else {
// return response.data;
// }
// const res = response.data;
// if (res.code !== 20000) {
// Message({
// message: res.message,
// type: 'error',
// duration: 5 * 1000
// });
// // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了;
// if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
// MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录', '确定登出', {
// confirmButtonText: '重新登录',
// cancelButtonText: '取消',
// type: 'warning'
// }).then(() => {
// store.dispatch('FedLogOut').then(() => {
// location.reload();// 为了重新实例化vue-router对象 避免bug
// });
// })
// }
// return Promise.reject('error');
// } else {
// return response.data;
// }
error
=>
{
console
.
log
(
'err'
+
error
)
// for debug
Message
({
...
...
@@ -60,7 +60,6 @@ service.interceptors.response.use(
duration
:
5
*
1000
})
return
Promise
.
reject
(
error
)
}
)
})
export
default
service
src/utils/index.js
View file @
98d5f9a2
...
...
@@ -2,266 +2,266 @@
* Created by jiachenpan on 16/11/18.
*/
export
function
parseTime
(
time
,
cFormat
)
{
if
(
arguments
.
length
===
0
)
{
return
null
}
const
format
=
cFormat
||
'{y}-{m}-{d} {h}:{i}:{s}'
let
date
if
(
typeof
time
===
'object'
)
{
date
=
time
}
else
{
if
((
''
+
time
).
length
===
10
)
time
=
parseInt
(
time
)
*
1000
date
=
new
Date
(
time
)
}
const
formatObj
=
{
y
:
date
.
getFullYear
(),
m
:
date
.
getMonth
()
+
1
,
d
:
date
.
getDate
(),
h
:
date
.
getHours
(),
i
:
date
.
getMinutes
(),
s
:
date
.
getSeconds
(),
a
:
date
.
getDay
()
}
const
time_str
=
format
.
replace
(
/{
(
y|m|d|h|i|s|a
)
+}/g
,
(
result
,
key
)
=>
{
let
value
=
formatObj
[
key
]
if
(
key
===
'a'
)
return
[
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
,
'日'
][
value
-
1
]
if
(
result
.
length
>
0
&&
value
<
10
)
{
value
=
'0'
+
value
}
return
value
||
0
})
return
time_str
}
export
function
parseTime
(
time
,
cFormat
)
{
if
(
arguments
.
length
===
0
)
{
return
null
}
const
format
=
cFormat
||
'{y}-{m}-{d} {h}:{i}:{s}'
let
date
if
(
typeof
time
===
'object'
)
{
date
=
time
}
else
{
if
((
''
+
time
).
length
===
10
)
time
=
parseInt
(
time
)
*
1000
date
=
new
Date
(
time
)
}
const
formatObj
=
{
y
:
date
.
getFullYear
(),
m
:
date
.
getMonth
()
+
1
,
d
:
date
.
getDate
(),
h
:
date
.
getHours
(),
i
:
date
.
getMinutes
(),
s
:
date
.
getSeconds
(),
a
:
date
.
getDay
()
}
const
time_str
=
format
.
replace
(
/{
(
y|m|d|h|i|s|a
)
+}/g
,
(
result
,
key
)
=>
{
let
value
=
formatObj
[
key
]
if
(
key
===
'a'
)
return
[
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
,
'日'
][
value
-
1
]
if
(
result
.
length
>
0
&&
value
<
10
)
{
value
=
'0'
+
value
}
return
value
||
0
})
return
time_str
}
export
function
formatTime
(
time
,
option
)
{
time
=
+
time
*
1000
const
d
=
new
Date
(
time
)
const
now
=
Date
.
now
()
export
function
formatTime
(
time
,
option
)
{
time
=
+
time
*
1000
const
d
=
new
Date
(
time
)
const
now
=
Date
.
now
()
const
diff
=
(
now
-
d
)
/
1000
const
diff
=
(
now
-
d
)
/
1000
if
(
diff
<
30
)
{
return
'刚刚'
}
else
if
(
diff
<
3600
)
{
// less 1 hour
return
Math
.
ceil
(
diff
/
60
)
+
'分钟前'
}
else
if
(
diff
<
3600
*
24
)
{
return
Math
.
ceil
(
diff
/
3600
)
+
'小时前'
}
else
if
(
diff
<
3600
*
24
*
2
)
{
return
'1天前'
}
if
(
option
)
{
return
parseTime
(
time
,
option
)
}
else
{
return
d
.
getMonth
()
+
1
+
'月'
+
d
.
getDate
()
+
'日'
+
d
.
getHours
()
+
'时'
+
d
.
getMinutes
()
+
'分'
}
}
if
(
diff
<
30
)
{
return
'刚刚'
}
else
if
(
diff
<
3600
)
{
// less 1 hour
return
Math
.
ceil
(
diff
/
60
)
+
'分钟前'
}
else
if
(
diff
<
3600
*
24
)
{
return
Math
.
ceil
(
diff
/
3600
)
+
'小时前'
}
else
if
(
diff
<
3600
*
24
*
2
)
{
return
'1天前'
}
if
(
option
)
{
return
parseTime
(
time
,
option
)
}
else
{
return
d
.
getMonth
()
+
1
+
'月'
+
d
.
getDate
()
+
'日'
+
d
.
getHours
()
+
'时'
+
d
.
getMinutes
()
+
'分'
}
}
// 格式化时间
export
function
getQueryObject
(
url
)
{
url
=
url
==
null
?
window
.
location
.
href
:
url
const
search
=
url
.
substring
(
url
.
lastIndexOf
(
'?'
)
+
1
)
const
obj
=
{}
const
reg
=
/
([^
?&=
]
+
)
=
([^
?&=
]
*
)
/g
search
.
replace
(
reg
,
(
rs
,
$1
,
$2
)
=>
{
const
name
=
decodeURIComponent
(
$1
)
let
val
=
decodeURIComponent
(
$2
)
val
=
String
(
val
)
obj
[
name
]
=
val
return
rs
})
return
obj
}
export
function
getQueryObject
(
url
)
{
url
=
url
==
null
?
window
.
location
.
href
:
url
const
search
=
url
.
substring
(
url
.
lastIndexOf
(
'?'
)
+
1
)
const
obj
=
{}
const
reg
=
/
([^
?&=
]
+
)
=
([^
?&=
]
*
)
/g
search
.
replace
(
reg
,
(
rs
,
$1
,
$2
)
=>
{
const
name
=
decodeURIComponent
(
$1
)
let
val
=
decodeURIComponent
(
$2
)
val
=
String
(
val
)
obj
[
name
]
=
val
return
rs
})
return
obj
}
/**
*get getByteLen
* @param {Sting} val input value
* @returns {number} output value
*/
export
function
getByteLen
(
val
)
{
let
len
=
0
for
(
let
i
=
0
;
i
<
val
.
length
;
i
++
)
{
if
(
val
[
i
].
match
(
/
[^\x
00-
\x
ff
]
/ig
)
!=
null
)
{
len
+=
1
}
else
{
len
+=
0.5
}
}
return
Math
.
floor
(
len
)
}
export
function
getByteLen
(
val
)
{
let
len
=
0
for
(
let
i
=
0
;
i
<
val
.
length
;
i
++
)
{
if
(
val
[
i
].
match
(
/
[^\x
00-
\x
ff
]
/ig
)
!=
null
)
{
len
+=
1
}
else
{
len
+=
0.5
}
}
return
Math
.
floor
(
len
)
}
export
function
cleanArray
(
actual
)
{
const
newArray
=
[]
for
(
let
i
=
0
;
i
<
actual
.
length
;
i
++
)
{
if
(
actual
[
i
])
{
newArray
.
push
(
actual
[
i
])
}
}
return
newArray
}
export
function
cleanArray
(
actual
)
{
const
newArray
=
[]
for
(
let
i
=
0
;
i
<
actual
.
length
;
i
++
)
{
if
(
actual
[
i
])
{
newArray
.
push
(
actual
[
i
])
}
}
return
newArray
}
export
function
param
(
json
)
{
if
(
!
json
)
return
''
return
cleanArray
(
Object
.
keys
(
json
).
map
(
key
=>
{
if
(
json
[
key
]
===
undefined
)
return
''
return
encodeURIComponent
(
key
)
+
'='
+
export
function
param
(
json
)
{
if
(
!
json
)
return
''
return
cleanArray
(
Object
.
keys
(
json
).
map
(
key
=>
{
if
(
json
[
key
]
===
undefined
)
return
''
return
encodeURIComponent
(
key
)
+
'='
+
encodeURIComponent
(
json
[
key
])
})).
join
(
'&'
)
}
})).
join
(
'&'
)
}
export
function
param2Obj
(
url
)
{
const
search
=
url
.
split
(
'?'
)[
1
]
if
(
!
search
)
{
return
{}
}
return
JSON
.
parse
(
'{"'
+
decodeURIComponent
(
search
).
replace
(
/"/g
,
'
\\
"'
).
replace
(
/&/g
,
'","'
).
replace
(
/=/g
,
'":"'
)
+
'"}'
)
}
export
function
param2Obj
(
url
)
{
const
search
=
url
.
split
(
'?'
)[
1
]
if
(
!
search
)
{
return
{}
}
return
JSON
.
parse
(
'{"'
+
decodeURIComponent
(
search
).
replace
(
/"/g
,
'
\\
"'
).
replace
(
/&/g
,
'","'
).
replace
(
/=/g
,
'":"'
)
+
'"}'
)
}
export
function
html2Text
(
val
)
{
const
div
=
document
.
createElement
(
'div'
)
div
.
innerHTML
=
val
return
div
.
textContent
||
div
.
innerText
}
export
function
html2Text
(
val
)
{
const
div
=
document
.
createElement
(
'div'
)
div
.
innerHTML
=
val
return
div
.
textContent
||
div
.
innerText
}
export
function
objectMerge
(
target
,
source
)
{
/* Merges two objects,
export
function
objectMerge
(
target
,
source
)
{
/* Merges two objects,
giving the last one precedence */
if
(
typeof
target
!==
'object'
)
{
target
=
{}
}
if
(
Array
.
isArray
(
source
))
{
return
source
.
slice
()
}
for
(
const
property
in
source
)
{
if
(
source
.
hasOwnProperty
(
property
))
{
const
sourceProperty
=
source
[
property
]
if
(
typeof
sourceProperty
===
'object'
)
{
target
[
property
]
=
objectMerge
(
target
[
property
],
sourceProperty
)
continue
}
target
[
property
]
=
sourceProperty
}
}
return
target
}
if
(
typeof
target
!==
'object'
)
{
target
=
{}
}
if
(
Array
.
isArray
(
source
))
{
return
source
.
slice
()
}
for
(
const
property
in
source
)
{
if
(
source
.
hasOwnProperty
(
property
))
{
const
sourceProperty
=
source
[
property
]
if
(
typeof
sourceProperty
===
'object'
)
{
target
[
property
]
=
objectMerge
(
target
[
property
],
sourceProperty
)
continue
}
target
[
property
]
=
sourceProperty
}
}
return
target
}
export
function
scrollTo
(
element
,
to
,
duration
)
{
if
(
duration
<=
0
)
return
const
difference
=
to
-
element
.
scrollTop
const
perTick
=
difference
/
duration
*
10
setTimeout
(()
=>
{
console
.
log
(
new
Date
())
element
.
scrollTop
=
element
.
scrollTop
+
perTick
if
(
element
.
scrollTop
===
to
)
return
scrollTo
(
element
,
to
,
duration
-
10
)
},
10
)
}
export
function
scrollTo
(
element
,
to
,
duration
)
{
if
(
duration
<=
0
)
return
const
difference
=
to
-
element
.
scrollTop
const
perTick
=
difference
/
duration
*
10
setTimeout
(()
=>
{
console
.
log
(
new
Date
())
element
.
scrollTop
=
element
.
scrollTop
+
perTick
if
(
element
.
scrollTop
===
to
)
return
scrollTo
(
element
,
to
,
duration
-
10
)
},
10
)
}
export
function
toggleClass
(
element
,
className
)
{
if
(
!
element
||
!
className
)
{
return
}
let
classString
=
element
.
className
const
nameIndex
=
classString
.
indexOf
(
className
)
if
(
nameIndex
===
-
1
)
{
classString
+=
''
+
className
}
else
{
classString
=
classString
.
substr
(
0
,
nameIndex
)
+
classString
.
substr
(
nameIndex
+
className
.
length
)
}
element
.
className
=
classString
}
export
function
toggleClass
(
element
,
className
)
{
if
(
!
element
||
!
className
)
{
return
}
let
classString
=
element
.
className
const
nameIndex
=
classString
.
indexOf
(
className
)
if
(
nameIndex
===
-
1
)
{
classString
+=
''
+
className
}
else
{
classString
=
classString
.
substr
(
0
,
nameIndex
)
+
classString
.
substr
(
nameIndex
+
className
.
length
)
}
element
.
className
=
classString
}
export
const
pickerOptions
=
[
{
text
:
'今天'
,
onClick
(
picker
)
{
const
end
=
new
Date
()
const
start
=
new
Date
(
new
Date
().
toDateString
())
end
.
setTime
(
start
.
getTime
())
picker
.
$emit
(
'pick'
,
[
start
,
end
])
}
},
{
text
:
'最近一周'
,
onClick
(
picker
)
{
const
end
=
new
Date
(
new
Date
().
toDateString
())
const
start
=
new
Date
()
start
.
setTime
(
end
.
getTime
()
-
3600
*
1000
*
24
*
7
)
picker
.
$emit
(
'pick'
,
[
start
,
end
])
}
},
{
text
:
'最近一个月'
,
onClick
(
picker
)
{
const
end
=
new
Date
(
new
Date
().
toDateString
())
const
start
=
new
Date
()
start
.
setTime
(
start
.
getTime
()
-
3600
*
1000
*
24
*
30
)
picker
.
$emit
(
'pick'
,
[
start
,
end
])
}
},
{
text
:
'最近三个月'
,
onClick
(
picker
)
{
const
end
=
new
Date
(
new
Date
().
toDateString
())
const
start
=
new
Date
()
start
.
setTime
(
start
.
getTime
()
-
3600
*
1000
*
24
*
90
)
picker
.
$emit
(
'pick'
,
[
start
,
end
])
}
}]
export
const
pickerOptions
=
[
{
text
:
'今天'
,
onClick
(
picker
)
{
const
end
=
new
Date
()
const
start
=
new
Date
(
new
Date
().
toDateString
())
end
.
setTime
(
start
.
getTime
())
picker
.
$emit
(
'pick'
,
[
start
,
end
])
}
},
{
text
:
'最近一周'
,
onClick
(
picker
)
{
const
end
=
new
Date
(
new
Date
().
toDateString
())
const
start
=
new
Date
()
start
.
setTime
(
end
.
getTime
()
-
3600
*
1000
*
24
*
7
)
picker
.
$emit
(
'pick'
,
[
start
,
end
])
}
},
{
text
:
'最近一个月'
,
onClick
(
picker
)
{
const
end
=
new
Date
(
new
Date
().
toDateString
())
const
start
=
new
Date
()
start
.
setTime
(
start
.
getTime
()
-
3600
*
1000
*
24
*
30
)
picker
.
$emit
(
'pick'
,
[
start
,
end
])
}
},
{
text
:
'最近三个月'
,
onClick
(
picker
)
{
const
end
=
new
Date
(
new
Date
().
toDateString
())
const
start
=
new
Date
()
start
.
setTime
(
start
.
getTime
()
-
3600
*
1000
*
24
*
90
)
picker
.
$emit
(
'pick'
,
[
start
,
end
])
}
}]
export
function
getTime
(
type
)
{
if
(
type
===
'start'
)
{
return
new
Date
().
getTime
()
-
3600
*
1000
*
24
*
90
}
else
{
return
new
Date
(
new
Date
().
toDateString
())
}
}
export
function
getTime
(
type
)
{
if
(
type
===
'start'
)
{
return
new
Date
().
getTime
()
-
3600
*
1000
*
24
*
90
}
else
{
return
new
Date
(
new
Date
().
toDateString
())
}
}
export
function
debounce
(
func
,
wait
,
immediate
)
{
let
timeout
,
args
,
context
,
timestamp
,
result
export
function
debounce
(
func
,
wait
,
immediate
)
{
let
timeout
,
args
,
context
,
timestamp
,
result
const
later
=
function
()
{
const
later
=
function
()
{
// 据上一次触发时间间隔
const
last
=
+
new
Date
()
-
timestamp
const
last
=
+
new
Date
()
-
timestamp
// 上次被包装函数被调用时间间隔last小于设定时间间隔wait
if
(
last
<
wait
&&
last
>
0
)
{
timeout
=
setTimeout
(
later
,
wait
-
last
)
}
else
{
timeout
=
null
if
(
last
<
wait
&&
last
>
0
)
{
timeout
=
setTimeout
(
later
,
wait
-
last
)
}
else
{
timeout
=
null
// 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
if
(
!
immediate
)
{
result
=
func
.
apply
(
context
,
args
)
if
(
!
timeout
)
context
=
args
=
null
}
}
}
if
(
!
immediate
)
{
result
=
func
.
apply
(
context
,
args
)
if
(
!
timeout
)
context
=
args
=
null
}
}
}
return
function
(...
args
)
{
context
=
this
timestamp
=
+
new
Date
()
const
callNow
=
immediate
&&
!
timeout
return
function
(...
args
)
{
context
=
this
timestamp
=
+
new
Date
()
const
callNow
=
immediate
&&
!
timeout
// 如果延时不存在,重新设定延时
if
(
!
timeout
)
timeout
=
setTimeout
(
later
,
wait
)
if
(
callNow
)
{
result
=
func
.
apply
(
context
,
args
)
context
=
args
=
null
}
if
(
!
timeout
)
timeout
=
setTimeout
(
later
,
wait
)
if
(
callNow
)
{
result
=
func
.
apply
(
context
,
args
)
context
=
args
=
null
}
return
result
}
}
return
result
}
}
export
function
deepClone
(
source
)
{
if
(
!
source
&&
typeof
source
!==
'object'
)
{
throw
new
Error
(
'error arguments'
,
'shallowClone'
)
}
const
targetObj
=
source
.
constructor
===
Array
?
[]
:
{}
for
(
const
keys
in
source
)
{
if
(
source
.
hasOwnProperty
(
keys
))
{
if
(
source
[
keys
]
&&
typeof
source
[
keys
]
===
'object'
)
{
targetObj
[
keys
]
=
source
[
keys
].
constructor
===
Array
?
[]
:
{}
targetObj
[
keys
]
=
deepClone
(
source
[
keys
])
}
else
{
targetObj
[
keys
]
=
source
[
keys
]
}
}
}
return
targetObj
}
export
function
deepClone
(
source
)
{
if
(
!
source
&&
typeof
source
!==
'object'
)
{
throw
new
Error
(
'error arguments'
,
'shallowClone'
)
}
const
targetObj
=
source
.
constructor
===
Array
?
[]
:
{}
for
(
const
keys
in
source
)
{
if
(
source
.
hasOwnProperty
(
keys
))
{
if
(
source
[
keys
]
&&
typeof
source
[
keys
]
===
'object'
)
{
targetObj
[
keys
]
=
source
[
keys
].
constructor
===
Array
?
[]
:
{}
targetObj
[
keys
]
=
deepClone
(
source
[
keys
])
}
else
{
targetObj
[
keys
]
=
source
[
keys
]
}
}
}
return
targetObj
}
src/utils/openWindow.js
View file @
98d5f9a2
...
...
@@ -7,7 +7,7 @@
*/
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
dualScreenTop
=
window
.
screenTop
!==
undefined
?
window
.
screenTop
:
screen
.
top
...
...
src/views/clipboard/index.vue
View file @
98d5f9a2
...
...
@@ -15,7 +15,7 @@
<
script
>
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
{
name
:
'clipboardDemo'
,
...
...
src/views/components/sticky.vue
View file @
98d5f9a2
...
...
@@ -104,9 +104,9 @@ export default {
url
:
''
,
platforms
:
[
'a-platform'
],
platformsOptions
:
[
{
key
:
'a-platform'
,
name
:
'平台A'
},
{
key
:
'b-platform'
,
name
:
'平台B'
},
{
key
:
'c-platform'
,
name
:
'平台C'
}
{
key
:
'a-platform'
,
name
:
'平台A'
},
{
key
:
'b-platform'
,
name
:
'平台B'
},
{
key
:
'c-platform'
,
name
:
'平台C'
}
],
pickerOptions
:
{
disabledDate
(
time
)
{
...
...
src/views/dashboard/admin/pieChart.vue
View file @
98d5f9a2
...
...
@@ -61,12 +61,12 @@ export default {
type
:
'pie'
,
roseType
:
'radius'
,
data
:
[
{
value
:
320
,
name
:
'industries'
},
{
value
:
240
,
name
:
'technology'
},
{
value
:
149
,
name
:
'forex'
},
{
value
:
100
,
name
:
'gold'
},
{
value
:
59
,
name
:
'forecasts'
},
{
value
:
49
,
name
:
'markets'
}
{
value
:
320
,
name
:
'industries'
},
{
value
:
240
,
name
:
'technology'
},
{
value
:
149
,
name
:
'forex'
},
{
value
:
100
,
name
:
'gold'
},
{
value
:
59
,
name
:
'forecasts'
},
{
value
:
49
,
name
:
'markets'
}
],
animationEasing
:
'cubicInOut'
,
animationDuration
:
2600
...
...
src/views/example/table/complexTable.vue
View file @
98d5f9a2
...
...
@@ -155,10 +155,10 @@ import waves from '@/directive/waves/index.js' // 水波纹指令
import
{
parseTime
}
from
'@/utils'
const
calendarTypeOptions
=
[
{
key
:
'CN'
,
display_name
:
'中国'
}
,
{
key
:
'US'
,
display_name
:
'美国'
}
,
{
key
:
'JP'
,
display_name
:
'日本'
}
,
{
key
:
'EU'
,
display_name
:
'欧元区'
}
{
key
:
'CN'
,
display_name
:
'中国'
}
,
{
key
:
'US'
,
display_name
:
'美国'
}
,
{
key
:
'JP'
,
display_name
:
'日本'
}
,
{
key
:
'EU'
,
display_name
:
'欧元区'
}
]
// arr to obj
...
...
src/views/login/index.vue
View file @
98d5f9a2
...
...
@@ -87,7 +87,7 @@ export default {
this
.
$store
.
dispatch
(
'LoginByUsername'
,
this
.
loginForm
).
then
(()
=>
{
this
.
loading
=
false
this
.
$router
.
push
({
path
:
'/'
})
// this.showDialog = true
// this.showDialog = true
}).
catch
(()
=>
{
this
.
loading
=
false
})
...
...
@@ -98,29 +98,29 @@ export default {
})
},
afterQRScan
()
{
// const hash = window.location.hash.slice(1)
// const hashObj = getQueryObject(hash)
// const originUrl = window.location.origin
// history.replaceState({}, '', originUrl)
// const codeMap = {
// wechat: 'code',
// tencent: 'code'
// }
// const codeName = hashObj[codeMap[this.auth_type]]
// if (!codeName) {
// alert('第三方登录失败')
// } else {
// this.$store.dispatch('LoginByThirdparty', codeName).then(() => {
// this.$router.push({ path: '/' })
// })
// }
// const hash = window.location.hash.slice(1)
// const hashObj = getQueryObject(hash)
// const originUrl = window.location.origin
// history.replaceState({}, '', originUrl)
// const codeMap = {
// wechat: 'code',
// tencent: 'code'
// }
// const codeName = hashObj[codeMap[this.auth_type]]
// if (!codeName) {
// alert('第三方登录失败')
// } else {
// this.$store.dispatch('LoginByThirdparty', codeName).then(() => {
// this.$router.push({ path: '/' })
// })
// }
}
},
created
()
{
// window.addEventListener('hashchange', this.afterQRScan)
// window.addEventListener('hashchange', this.afterQRScan)
},
destroyed
()
{
// window.removeEventListener('hashchange', this.afterQRScan)
// window.removeEventListener('hashchange', this.afterQRScan)
}
}
</
script
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment