Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
InJoyU
vue-element-admin
提交
98d5f9a2
V
vue-element-admin
项目概览
InJoyU
/
vue-element-admin
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vue-element-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
98d5f9a2
编写于
10月 31, 2017
作者:
P
Pan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
lint:format code style
上级
3666148d
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
341 addition
and
342 deletion
+341
-342
.eslintrc.js
.eslintrc.js
+1
-1
src/components/Dropzone/index.vue
src/components/Dropzone/index.vue
+10
-10
src/components/Tinymce/index.vue
src/components/Tinymce/index.vue
+33
-33
src/filters/index.js
src/filters/index.js
+6
-6
src/main.js
src/main.js
+1
-1
src/router/_import_development.js
src/router/_import_development.js
+1
-1
src/utils/fetch.js
src/utils/fetch.js
+25
-26
src/utils/index.js
src/utils/index.js
+230
-230
src/utils/openWindow.js
src/utils/openWindow.js
+1
-1
src/views/clipboard/index.vue
src/views/clipboard/index.vue
+1
-1
src/views/components/sticky.vue
src/views/components/sticky.vue
+3
-3
src/views/dashboard/admin/pieChart.vue
src/views/dashboard/admin/pieChart.vue
+6
-6
src/views/example/table/complexTable.vue
src/views/example/table/complexTable.vue
+4
-4
src/views/login/index.vue
src/views/login/index.vue
+19
-19
未找到文件。
.eslintrc.js
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录