Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
holo-web
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
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
xinkong
holo-web
Commits
f53f62d0
Commit
f53f62d0
authored
Sep 22, 2023
by
ninglx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
引入封装axios
parent
029d0a19
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
467 additions
and
13 deletions
+467
-13
package-lock.json
wj-manage-web/package-lock.json
+41
-13
package.json
wj-manage-web/package.json
+2
-0
cache.js
wj-manage-web/src/utils/cache.js
+77
-0
request.js
wj-manage-web/src/utils/request.js
+107
-0
tools.js
wj-manage-web/src/utils/tools.js
+240
-0
No files found.
wj-manage-web/package-lock.json
View file @
f53f62d0
...
...
@@ -2580,8 +2580,7 @@
"asynckit"
:
{
"version"
:
"0.4.0"
,
"resolved"
:
"https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
,
"integrity"
:
"sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
,
"dev"
:
true
"integrity"
:
"sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"atob"
:
{
"version"
:
"2.1.2"
,
...
...
@@ -2640,6 +2639,28 @@
"integrity"
:
"sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
,
"dev"
:
true
},
"axios"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/axios/-/axios-1.5.0.tgz"
,
"integrity"
:
"sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ=="
,
"requires"
:
{
"follow-redirects"
:
"^1.15.0"
,
"form-data"
:
"^4.0.0"
,
"proxy-from-env"
:
"^1.1.0"
},
"dependencies"
:
{
"form-data"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz"
,
"integrity"
:
"sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww=="
,
"requires"
:
{
"asynckit"
:
"^0.4.0"
,
"combined-stream"
:
"^1.0.8"
,
"mime-types"
:
"^2.1.12"
}
}
}
},
"babel-helper-vue-jsx-merge-props"
:
{
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz"
,
...
...
@@ -3702,7 +3723,6 @@
"version"
:
"1.0.8"
,
"resolved"
:
"https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
,
"integrity"
:
"sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="
,
"dev"
:
true
,
"requires"
:
{
"delayed-stream"
:
"~1.0.0"
}
...
...
@@ -4829,8 +4849,7 @@
"delayed-stream"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
,
"integrity"
:
"sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
,
"dev"
:
true
"integrity"
:
"sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
},
"delegate"
:
{
"version"
:
"3.2.0"
,
...
...
@@ -5684,9 +5703,9 @@
}
},
"file-saver"
:
{
"version"
:
"
1.3.8
"
,
"resolved"
:
"https://registry.npmjs.org/file-saver/-/file-saver-
1.3.8
.tgz"
,
"integrity"
:
"sha512-
spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg
=="
"version"
:
"
2.0.5
"
,
"resolved"
:
"https://registry.npmjs.org/file-saver/-/file-saver-
2.0.5
.tgz"
,
"integrity"
:
"sha512-
P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA
=="
},
"filesize"
:
{
"version"
:
"3.6.1"
,
...
...
@@ -5781,8 +5800,7 @@
"follow-redirects"
:
{
"version"
:
"1.15.2"
,
"resolved"
:
"https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz"
,
"integrity"
:
"sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
,
"dev"
:
true
"integrity"
:
"sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
},
"for-each"
:
{
"version"
:
"0.3.3"
,
...
...
@@ -7227,6 +7245,13 @@
"file-saver"
:
"^1.3.3"
,
"script-loader"
:
"0.7.2"
,
"xlsx"
:
"0.16.3"
},
"dependencies"
:
{
"file-saver"
:
{
"version"
:
"1.3.8"
,
"resolved"
:
"https://registry.npmjs.org/file-saver/-/file-saver-1.3.8.tgz"
,
"integrity"
:
"sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg=="
}
}
},
"js-message"
:
{
...
...
@@ -7724,14 +7749,12 @@
"mime-db"
:
{
"version"
:
"1.52.0"
,
"resolved"
:
"https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
,
"integrity"
:
"sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
,
"dev"
:
true
"integrity"
:
"sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
},
"mime-types"
:
{
"version"
:
"2.1.35"
,
"resolved"
:
"https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
,
"integrity"
:
"sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="
,
"dev"
:
true
,
"requires"
:
{
"mime-db"
:
"1.52.0"
}
...
...
@@ -9833,6 +9856,11 @@
"ipaddr.js"
:
"1.9.1"
}
},
"proxy-from-env"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
,
"integrity"
:
"sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"prr"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/prr/-/prr-1.0.1.tgz"
,
...
...
wj-manage-web/package.json
View file @
f53f62d0
...
...
@@ -30,8 +30,10 @@
],
"dependencies"
:
{
"@riophae/vue-treeselect"
:
"^0.4.0"
,
"axios"
:
"^1.5.0"
,
"compression-webpack-plugin"
:
"^3.1.0"
,
"driver.js"
:
"^0.9.8"
,
"file-saver"
:
"^2.0.5"
,
"highcharts"
:
"^10.3.3"
,
"highcharts-vue"
:
"^1.4.0"
,
"js-cookie"
:
"^3.0.0"
,
...
...
wj-manage-web/src/utils/cache.js
0 → 100644
View file @
f53f62d0
const
sessionCache
=
{
set
(
key
,
value
)
{
if
(
!
sessionStorage
)
{
return
}
if
(
key
!=
null
&&
value
!=
null
)
{
sessionStorage
.
setItem
(
key
,
value
)
}
},
get
(
key
)
{
if
(
!
sessionStorage
)
{
return
null
}
if
(
key
==
null
)
{
return
null
}
return
sessionStorage
.
getItem
(
key
)
},
setJSON
(
key
,
jsonValue
)
{
if
(
jsonValue
!=
null
)
{
this
.
set
(
key
,
JSON
.
stringify
(
jsonValue
))
}
},
getJSON
(
key
)
{
const
value
=
this
.
get
(
key
)
if
(
value
!=
null
)
{
return
JSON
.
parse
(
value
)
}
},
remove
(
key
)
{
sessionStorage
.
removeItem
(
key
);
}
}
const
localCache
=
{
set
(
key
,
value
)
{
if
(
!
localStorage
)
{
return
}
if
(
key
!=
null
&&
value
!=
null
)
{
localStorage
.
setItem
(
key
,
value
)
}
},
get
(
key
)
{
if
(
!
localStorage
)
{
return
null
}
if
(
key
==
null
)
{
return
null
}
return
localStorage
.
getItem
(
key
)
},
setJSON
(
key
,
jsonValue
)
{
if
(
jsonValue
!=
null
)
{
this
.
set
(
key
,
JSON
.
stringify
(
jsonValue
))
}
},
getJSON
(
key
)
{
const
value
=
this
.
get
(
key
)
if
(
value
!=
null
)
{
return
JSON
.
parse
(
value
)
}
},
remove
(
key
)
{
localStorage
.
removeItem
(
key
);
}
}
export
default
{
/**
* 会话级缓存
*/
session
:
sessionCache
,
/**
* 本地缓存
*/
local
:
localCache
}
wj-manage-web/src/utils/request.js
0 → 100644
View file @
f53f62d0
import
axios
from
'
axios
'
import
{
tansParams
,
blobValidate
}
from
"
./tools
"
;
import
cache
from
'
./cache
'
import
{
saveAs
}
from
'
file-saver
'
let
downloadLoadingInstance
;
// 是否显示重新登录
export
let
isRelogin
=
{
show
:
false
};
axios
.
defaults
.
headers
[
'
Content-Type
'
]
=
'
application/json;charset=utf-8
'
// 创建axios实例
const
service
=
axios
.
create
({
// 超时
timeout
:
1000000
})
// request拦截器
service
.
interceptors
.
request
.
use
(
config
=>
{
// console.log('axios request...', config);
// 是否需要防止数据重复提交
const
isRepeatSubmit
=
(
config
.
headers
||
{}).
repeatSubmit
===
false
// get请求映射params参数
if
(
config
.
method
===
'
get
'
&&
config
.
params
)
{
let
url
=
config
.
url
+
'
?
'
+
tansParams
(
config
.
params
);
url
=
url
.
slice
(
0
,
-
1
);
config
.
params
=
{};
config
.
url
=
url
;
}
if
(
!
isRepeatSubmit
&&
(
config
.
method
===
'
post
'
||
config
.
method
===
'
put
'
))
{
const
requestObj
=
{
url
:
config
.
url
,
data
:
typeof
config
.
data
===
'
object
'
?
JSON
.
stringify
(
config
.
data
)
:
config
.
data
,
time
:
new
Date
().
getTime
(),
}
const
sessionObj
=
cache
.
session
.
getJSON
(
'
sessionObj
'
)
if
(
sessionObj
===
undefined
||
sessionObj
===
null
||
sessionObj
===
''
)
{
cache
.
session
.
setJSON
(
'
sessionObj
'
,
requestObj
)
}
else
{
const
s_url
=
sessionObj
.
url
;
// 请求地址
const
s_data
=
sessionObj
.
data
;
// 请求数据
const
s_time
=
sessionObj
.
time
;
// 请求时间
const
interval
=
1000
;
// 间隔时间(ms),小于此时间视为重复提交
if
(
s_data
===
requestObj
.
data
&&
requestObj
.
time
-
s_time
<
interval
&&
s_url
===
requestObj
.
url
)
{
const
message
=
'
数据正在处理,请勿重复提交
'
;
console
.
warn
(
`[
${
s_url
}
]: `
+
message
)
return
Promise
.
reject
(
new
Error
(
message
))
}
else
{
cache
.
session
.
setJSON
(
'
sessionObj
'
,
requestObj
)
}
}
}
return
config
},
error
=>
{
console
.
log
(
error
)
Promise
.
reject
(
error
)
})
// 响应拦截器
service
.
interceptors
.
response
.
use
(
res
=>
{
// console.log('axios response...', res);
// 未设置状态码则默认成功状态
const
code
=
res
.
data
.
code
||
200
;
// 二进制数据则直接返回
if
(
res
.
request
.
responseType
===
'
blob
'
||
res
.
request
.
responseType
===
'
arraybuffer
'
)
{
return
res
.
data
}
if
(
code
===
401
)
{
if
(
!
ELEMENT
.
$_overTime
)
{
ELEMENT
.
$_overTime
=
ELEMENT
.
Notification
.
error
({
title
:
"
失败
"
,
message
:
"
登录超时,3秒后退出登录
"
,
});
setTimeout
(()
=>
{
window
.
location
.
href
=
"
/
"
;
},
3000
);
}
return
Promise
.
reject
(
'
无效的会话,或者会话已过期,请重新登录。
'
)
}
if
(
res
.
config
.
showMsg
)
{
ELEMENT
.
Message
.
error
(
res
.
data
.
message
)
}
return
res
.
data
})
// 通用下载方法
export
function
download
(
url
,
params
,
filename
,
config
)
{
downloadLoadingInstance
=
this
.
$loading
({
text
:
"
正在下载数据,请稍候
"
,
spinner
:
"
el-icon-loading
"
,
background
:
"
rgba(0, 0, 0, 0.7)
"
,
})
return
service
.
post
(
url
,
params
,
{
transformRequest
:
[(
params
)
=>
{
return
tansParams
(
params
)
}],
headers
:
{
'
Content-Type
'
:
'
application/x-www-form-urlencoded
'
},
responseType
:
'
blob
'
,
...
config
}).
then
(
async
(
data
)
=>
{
const
isLogin
=
await
blobValidate
(
data
);
if
(
isLogin
)
{
const
blob
=
new
Blob
([
data
])
saveAs
(
blob
,
filename
)
}
else
{
}
downloadLoadingInstance
.
close
();
}).
catch
((
r
)
=>
{
console
.
error
(
r
)
downloadLoadingInstance
.
close
();
})
}
export
default
service
wj-manage-web/src/utils/tools.js
0 → 100644
View file @
f53f62d0
/**
* 通用js方法封装处理
* Copyright (c) 2019 ruoyi
*/
// 日期格式化
export
function
parseTime
(
time
,
pattern
)
{
if
(
arguments
.
length
===
0
||
!
time
)
{
return
null
}
const
format
=
pattern
||
'
{y}-{m}-{d} {h}:{i}:{s}
'
let
date
if
(
typeof
time
===
'
object
'
)
{
date
=
time
}
else
{
if
((
typeof
time
===
'
string
'
)
&&
(
/^
[
0-9
]
+$/
.
test
(
time
)))
{
time
=
parseInt
(
time
)
}
else
if
(
typeof
time
===
'
string
'
)
{
time
=
time
.
replace
(
new
RegExp
(
/-/gm
),
'
/
'
).
replace
(
'
T
'
,
'
'
).
replace
(
new
RegExp
(
/
\.[\d]{3}
/gm
),
''
);
}
if
((
typeof
time
===
'
number
'
)
&&
(
time
.
toString
().
length
===
10
))
{
time
=
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
]
// Note: getDay() returns 0 on Sunday
if
(
key
===
'
a
'
)
{
return
[
'
日
'
,
'
一
'
,
'
二
'
,
'
三
'
,
'
四
'
,
'
五
'
,
'
六
'
][
value
]
}
if
(
result
.
length
>
0
&&
value
<
10
)
{
value
=
'
0
'
+
value
}
return
value
||
0
})
return
time_str
}
// 表单重置
export
function
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
}
// 添加日期范围
export
function
addDateRange
(
params
,
dateRange
,
propName
)
{
let
search
=
params
;
search
.
params
=
typeof
(
search
.
params
)
===
'
object
'
&&
search
.
params
!==
null
&&
!
Array
.
isArray
(
search
.
params
)
?
search
.
params
:
{};
dateRange
=
Array
.
isArray
(
dateRange
)
?
dateRange
:
[];
if
(
typeof
(
propName
)
===
'
undefined
'
)
{
search
.
params
[
'
beginTime
'
]
=
dateRange
[
0
];
search
.
params
[
'
endTime
'
]
=
dateRange
[
1
];
}
else
{
search
.
params
[
'
begin
'
+
propName
]
=
dateRange
[
0
];
search
.
params
[
'
end
'
+
propName
]
=
dateRange
[
1
];
}
return
search
;
}
// 回显数据字典
export
function
selectDictLabel
(
datas
,
value
)
{
if
(
value
===
undefined
)
{
return
""
;
}
var
actions
=
[];
Object
.
keys
(
datas
).
some
((
key
)
=>
{
if
(
datas
[
key
].
value
==
(
''
+
value
))
{
actions
.
push
(
datas
[
key
].
label
);
return
true
;
}
})
if
(
actions
.
length
===
0
)
{
actions
.
push
(
value
);
}
return
actions
.
join
(
''
);
}
// 回显数据字典(字符串、数组)
export
function
selectDictLabels
(
datas
,
value
,
separator
)
{
if
(
value
===
undefined
||
value
.
length
===
0
)
{
return
""
;
}
if
(
Array
.
isArray
(
value
))
{
value
=
value
.
join
(
"
,
"
);
}
var
actions
=
[];
var
currentSeparator
=
undefined
===
separator
?
"
,
"
:
separator
;
var
temp
=
value
.
split
(
currentSeparator
);
Object
.
keys
(
value
.
split
(
currentSeparator
)).
some
((
val
)
=>
{
var
match
=
false
;
Object
.
keys
(
datas
).
some
((
key
)
=>
{
if
(
datas
[
key
].
value
==
(
''
+
temp
[
val
]))
{
actions
.
push
(
datas
[
key
].
label
+
currentSeparator
);
match
=
true
;
}
})
if
(
!
match
)
{
actions
.
push
(
temp
[
val
]
+
currentSeparator
);
}
})
return
actions
.
join
(
''
).
substring
(
0
,
actions
.
join
(
''
).
length
-
1
);
}
// 字符串格式化(%s )
export
function
sprintf
(
str
)
{
var
args
=
arguments
,
flag
=
true
,
i
=
1
;
str
=
str
.
replace
(
/%s/g
,
function
()
{
var
arg
=
args
[
i
++
];
if
(
typeof
arg
===
'
undefined
'
)
{
flag
=
false
;
return
''
;
}
return
arg
;
});
return
flag
?
str
:
''
;
}
// 转换字符串,undefined,null等转化为""
export
function
parseStrEmpty
(
str
)
{
if
(
!
str
||
str
==
"
undefined
"
||
str
==
"
null
"
)
{
return
""
;
}
return
str
;
}
// 数据合并
export
function
mergeRecursive
(
source
,
target
)
{
for
(
var
p
in
target
)
{
try
{
if
(
target
[
p
].
constructor
==
Object
)
{
source
[
p
]
=
mergeRecursive
(
source
[
p
],
target
[
p
]);
}
else
{
source
[
p
]
=
target
[
p
];
}
}
catch
(
e
)
{
source
[
p
]
=
target
[
p
];
}
}
return
source
;
};
/**
* 构造树型结构数据
* @param {*} data 数据源
* @param {*} id id字段 默认 'id'
* @param {*} parentId 父节点字段 默认 'parentId'
* @param {*} children 孩子节点字段 默认 'children'
*/
export
function
handleTree
(
data
,
id
,
parentId
,
children
)
{
let
config
=
{
id
:
id
||
'
id
'
,
parentId
:
parentId
||
'
parentId
'
,
childrenList
:
children
||
'
children
'
};
var
childrenListMap
=
{};
var
nodeIds
=
{};
var
tree
=
[];
for
(
let
d
of
data
)
{
let
parentId
=
d
[
config
.
parentId
];
if
(
childrenListMap
[
parentId
]
==
null
)
{
childrenListMap
[
parentId
]
=
[];
}
nodeIds
[
d
[
config
.
id
]]
=
d
;
childrenListMap
[
parentId
].
push
(
d
);
}
for
(
let
d
of
data
)
{
let
parentId
=
d
[
config
.
parentId
];
if
(
nodeIds
[
parentId
]
==
null
)
{
tree
.
push
(
d
);
}
}
for
(
let
t
of
tree
)
{
adaptToChildrenList
(
t
);
}
function
adaptToChildrenList
(
o
)
{
if
(
childrenListMap
[
o
[
config
.
id
]]
!==
null
)
{
o
[
config
.
childrenList
]
=
childrenListMap
[
o
[
config
.
id
]];
}
if
(
o
[
config
.
childrenList
])
{
for
(
let
c
of
o
[
config
.
childrenList
])
{
adaptToChildrenList
(
c
);
}
}
}
return
tree
;
}
/**
* 参数处理
* @param {*} params 参数
*/
export
function
tansParams
(
params
)
{
let
result
=
''
for
(
const
propName
of
Object
.
keys
(
params
))
{
const
value
=
params
[
propName
];
var
part
=
encodeURIComponent
(
propName
)
+
"
=
"
;
if
(
value
!==
null
&&
value
!==
""
&&
typeof
(
value
)
!==
"
undefined
"
)
{
if
(
typeof
value
===
'
object
'
)
{
for
(
const
key
of
Object
.
keys
(
value
))
{
if
(
value
[
key
]
!==
null
&&
value
[
key
]
!==
""
&&
typeof
(
value
[
key
])
!==
'
undefined
'
)
{
let
params
=
propName
+
'
[
'
+
key
+
'
]
'
;
var
subPart
=
encodeURIComponent
(
params
)
+
"
=
"
;
result
+=
subPart
+
encodeURIComponent
(
value
[
key
])
+
"
&
"
;
}
}
}
else
{
result
+=
part
+
encodeURIComponent
(
value
)
+
"
&
"
;
}
}
}
return
result
}
// 验证是否为blob格式
export
async
function
blobValidate
(
data
)
{
try
{
const
text
=
await
data
.
text
();
JSON
.
parse
(
text
);
return
false
;
}
catch
(
error
)
{
return
true
;
}
}
\ No newline at end of file
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