Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
E
energyai_vue
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
葛齐林
energyai_vue
Commits
15eaa0f7
Commit
15eaa0f7
authored
Jun 25, 2021
by
co_dengxiongwen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
点位维护页面调整
parent
90b3a6e0
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
209 additions
and
182 deletions
+209
-182
index.vue
src/pages/sys/points/index.vue
+33
-6
index.js
src/plugin/axios/index.js
+176
-176
No files found.
src/pages/sys/points/index.vue
View file @
15eaa0f7
...
...
@@ -23,6 +23,9 @@
el-button(type='primary' size='mini' icon='el-icon-plus',style='float:right;transform:translateY(6px);margin-right:20px;' v-if="isAuth('sys:points:save')" :disabled="flag" @click='addOrUpdateHandle()') 新增
div(slot='content')
table-list(:tableColums='tableHeader' :tableData='dataList' :opNum='2')
template(#type='data')
font(v-if='data.scope.type == 1') 查询点位
font(v-if='data.scope.type == 2') 控制点位
template(#functionCodeType='data')
font(v-if='data.scope.functionCodeType == 1') 读线圈
font(v-if='data.scope.functionCodeType == 2') 读离散量输入
...
...
@@ -52,14 +55,21 @@
el-form-item(label="资源点ID:" prop="resourceId" v-if='false')
el-input(v-model='ruleForm.resourceId' placeholder="" clearable v-if='false')
el-col(:span='24')
el-form-item(label="网关IP:" prop="addressIp")
el-input(v-model='ruleForm.addressIp' placeholder="请输入网关IP" clearable )
el-col(:span='12')
el-form-item(label="点位类型:" prop="type")
el-select.mywidth(v-model="ruleForm.type" placeholder="请选择点位类型" clearable)
el-option(v-for="(item,index) in typeList" :key="index" :label="item.name" :value="item.id" :code="item.id")
el-col(:span='12')
el-form-item(label="点位名称:" prop="name")
el-input(v-model='ruleForm.name' placeholder="请输入点位名称" clearable )
el-col(:span='12')
el-form-item(label="从机ID:" prop="slaveId")
el-input(v-model.number='ruleForm.slaveId' placeholder="请输从入机ID" clearable )
el-col(:span='12')
el-form-item(label="
地址
:" prop="registerAddress")
el-input(v-model.number='ruleForm.registerAddress' placeholder="请输入
地址
" clearable )
el-form-item(label="
位置
:" prop="registerAddress")
el-input(v-model.number='ruleForm.registerAddress' placeholder="请输入
位置
" clearable )
el-col(:span='12')
el-form-item(label="功能码:" prop="functionCodeType")
el-select.mywidth(v-model="ruleForm.functionCodeType" placeholder="请选择功能码" clearable)
...
...
@@ -83,7 +93,7 @@ import tablePagination from '@/pages/components/tablePagination'
export
default
{
data
()
{
let
validateNumber
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
<
=
0
)
{
if
(
value
<
0
)
{
callback
(
new
Error
(
'只能输入正整数'
))
}
else
if
(
value
>
99999999
)
{
callback
(
new
Error
(
'排序值超出范围'
))
...
...
@@ -101,6 +111,10 @@ export default {
label
:
'name'
,
level
:
'level'
},
typeList
:
[
{
id
:
1
,
name
:
'查询点位'
},
{
id
:
2
,
name
:
'控制点位'
}
],
functionCodeTypeList
:
[
{
id
:
1
,
name
:
'读线圈'
},
{
id
:
2
,
name
:
'读离散量输入'
},
...
...
@@ -128,6 +142,10 @@ export default {
},
rules
:
{
//添加规则
addressIp
:
[
{
required
:
true
,
message
:
'网关IP不能为空'
,
trigger
:
'blur'
},
{
min
:
1
,
max
:
30
,
message
:
'长度在 1 到 30 个字符'
,
trigger
:
'blur'
}
],
name
:
[
{
required
:
true
,
message
:
'点位名称不能为空'
,
trigger
:
'blur'
},
{
min
:
1
,
max
:
30
,
message
:
'长度在 1 到 30 个字符'
,
trigger
:
'blur'
}
...
...
@@ -138,10 +156,17 @@ export default {
{
validator
:
validateNumber
,
trigger
:
[
'blur'
,
'change'
]
}
],
registerAddress
:
[
{
required
:
true
,
message
:
'
地址
不能为空'
},
{
type
:
'number'
,
message
:
'
地址
必须为数字'
},
{
required
:
true
,
message
:
'
位置
不能为空'
},
{
type
:
'number'
,
message
:
'
位置
必须为数字'
},
{
validator
:
validateNumber
,
trigger
:
[
'blur'
,
'change'
]
}
],
type
:
[
{
required
:
true
,
message
:
'点位类型不能为空'
,
trigger
:
[
'blur'
,
'change'
]
}
],
functionCodeType
:
[
{
required
:
true
,
...
...
@@ -163,10 +188,12 @@ export default {
checkList
:
[],
//筛选数据
tableHeader
:
[
{
label
:
'点位名称'
,
prop
:
'name'
},
{
label
:
'点位类型'
,
prop
:
'type'
,
slot
:
true
},
{
label
:
'网关IP'
,
prop
:
'addressIp'
},
{
label
:
'从机ID'
,
prop
:
'slaveId'
},
{
label
:
'功能码'
,
prop
:
'functionCodeType'
,
slot
:
true
},
{
label
:
'数据类型'
,
prop
:
'dataType'
,
slot
:
true
},
{
label
:
'
寄存器地址
'
,
prop
:
'registerAddress'
}
{
label
:
'
位置
'
,
prop
:
'registerAddress'
}
],
tableOption
:
{
border
:
false
,
//是否边框
...
...
src/plugin/axios/index.js
View file @
15eaa0f7
...
...
@@ -9,59 +9,59 @@ import isPlainObject from 'lodash/isPlainObject'
// 创建一个错误
function
errorCreat
(
msg
)
{
const
err
=
new
Error
(
msg
)
errorLog
(
err
)
return
err
// throw err
const
err
=
new
Error
(
msg
)
errorLog
(
err
)
return
err
// throw err
}
function
requestFit
(
config
)
{
let
USERNAME
=
'suntray'
let
PASSWORD
=
'suntray
'
config
.
headers
.
Authorization
=
'Basic '
+
btoa
(
USERNAME
+
':'
+
PASSWORD
)
// 数据处理
let
defaults
=
{
't'
:
new
Date
().
getTime
()
// 'access_token': Vue.cookie.get('token')
}
if
(
config
.
method
===
'get'
)
{
config
.
params
=
isPlainObject
(
config
.
params
)
||
!
config
.
params
?
merge
(
defaults
,
config
.
params
)
:
config
.
params
}
else
if
(
config
.
method
===
'post'
)
{
config
.
data
=
isPlainObject
(
config
.
data
)
||
!
config
.
data
?
merge
(
defaults
,
config
.
data
)
:
config
.
data
config
.
data
=
/^application
\/
json/
.
test
(
config
.
headers
[
'Content-Type'
]
||
config
.
headers
.
post
[
'Content-Type'
])
?
JSON
.
stringify
(
config
.
data
)
:
qs
.
stringify
(
config
.
data
)
}
return
config
let
USERNAME
=
'suntray'
let
PASSWORD
=
'c3VudHJheQ==
'
config
.
headers
.
Authorization
=
'Basic '
+
btoa
(
USERNAME
+
':'
+
PASSWORD
)
// 数据处理
let
defaults
=
{
't'
:
new
Date
().
getTime
()
// 'access_token': Vue.cookie.get('token')
}
if
(
config
.
method
===
'get'
)
{
config
.
params
=
isPlainObject
(
config
.
params
)
||
!
config
.
params
?
merge
(
defaults
,
config
.
params
)
:
config
.
params
}
else
if
(
config
.
method
===
'post'
)
{
config
.
data
=
isPlainObject
(
config
.
data
)
||
!
config
.
data
?
merge
(
defaults
,
config
.
data
)
:
config
.
data
config
.
data
=
/^application
\/
json/
.
test
(
config
.
headers
[
'Content-Type'
]
||
config
.
headers
.
post
[
'Content-Type'
])
?
JSON
.
stringify
(
config
.
data
)
:
qs
.
stringify
(
config
.
data
)
}
return
config
}
// 记录和显示错误
function
errorLog
(
err
)
{
// 添加到日志
store
.
dispatch
(
'd2admin/log/add'
,
{
type
:
'error'
,
err
,
info
:
'数据请求异常'
})
// 打印到控制台
if
(
process
.
env
.
NODE_ENV
===
'development'
)
{
util
.
log
.
danger
(
'>>>>>> Error >>>>>>'
)
// console.log(err)
}
// 显示提示
if
(
document
.
getElementsByClassName
(
'el-message'
).
length
<
1
)
{
Message
({
showClose
:
true
,
message
:
err
.
message
,
type
:
'error'
,
duration
:
5
*
1000
})
}
// 添加到日志
store
.
dispatch
(
'd2admin/log/add'
,
{
type
:
'error'
,
err
,
info
:
'数据请求异常'
})
// 打印到控制台
if
(
process
.
env
.
NODE_ENV
===
'development'
)
{
util
.
log
.
danger
(
'>>>>>> Error >>>>>>'
)
// console.log(err)
}
// 显示提示
if
(
document
.
getElementsByClassName
(
'el-message'
).
length
<
1
)
{
Message
({
showClose
:
true
,
message
:
err
.
message
,
type
:
'error'
,
duration
:
5
*
1000
})
}
}
// 创建一个 axios 实例
const
service
=
axios
.
create
({
baseURL
:
process
.
env
.
VUE_APP_TEST
,
timeout
:
1000
*
300
,
withCredentials
:
false
baseURL
:
process
.
env
.
VUE_APP_TEST
,
timeout
:
1000
*
300
,
withCredentials
:
false
})
/**
...
...
@@ -69,38 +69,38 @@ const service = axios.create({
* @param {*} actionName action方法名称
*/
service
.
adornUrl
=
(
actionName
)
=>
{
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/admin'
+
actionName
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/admin'
+
actionName
}
service
.
rtAdornUrl
=
(
actionName
)
=>
{
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/admin/routes'
+
actionName
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/admin/routes'
+
actionName
}
service
.
adornUrlEq
=
(
actionName
)
=>
{
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/equipment'
+
actionName
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/equipment'
+
actionName
}
service
.
adornUrlAlarm
=
(
actionName
)
=>
{
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/alram'
+
actionName
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/alram'
+
actionName
}
service
.
rtAdornUrlAlarm
=
(
actionName
)
=>
{
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/alram/routes'
+
actionName
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/alram/routes'
+
actionName
}
/**
* 认证处理
* @param {*} actionName action方法名称
*/
service
.
authUrl
=
(
actionName
)
=>
{
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/authorization'
+
actionName
// 非生产环境 && 开启代理, 接口前缀统一使用[/proxyApi/]前缀做代理拦截!
// return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
return
window
.
CONFIG
.
requestPath
+
'/authorization'
+
actionName
}
/**
* get请求参数处理
...
...
@@ -108,10 +108,10 @@ service.authUrl = (actionName) => {
* @param {*} openDefultParams 是否开启默认参数?
*/
service
.
adornParams
=
(
params
=
{},
openDefultParams
=
true
)
=>
{
let
defaults
=
{
't'
:
new
Date
().
getTime
()
}
return
openDefultParams
?
merge
(
defaults
,
params
)
:
params
let
defaults
=
{
't'
:
new
Date
().
getTime
()
}
return
openDefultParams
?
merge
(
defaults
,
params
)
:
params
}
/**
...
...
@@ -123,129 +123,129 @@ service.adornParams = (params = {}, openDefultParams = true) => {
* form: 'application/x-www-form-urlencoded; charset=utf-8'
*/
service
.
adornData
=
(
data
=
{},
openDefultdata
=
true
,
contentType
=
'json'
)
=>
{
let
defaults
=
{
't'
:
new
Date
().
getTime
()
}
data
=
openDefultdata
?
merge
(
defaults
,
data
)
:
data
return
contentType
===
'json'
?
JSON
.
stringify
(
data
)
:
qs
.
stringify
(
data
)
let
defaults
=
{
't'
:
new
Date
().
getTime
()
}
data
=
openDefultdata
?
merge
(
defaults
,
data
)
:
data
return
contentType
===
'json'
?
JSON
.
stringify
(
data
)
:
qs
.
stringify
(
data
)
}
// 请求拦截器
service
.
interceptors
.
request
.
use
(
config
=>
{
//如果没有站点id跳转至登录页
const
localId
=
localStorage
.
getItem
(
'stationId'
)
if
(
!
localId
)
{
router
.
push
({
path
:
'/login'
})
}
// 在请求发送之前做一些处理
const
token
=
sessionStorage
.
getItem
(
'token'
)
const
authorization
=
util
.
cookies
.
get
(
'authorization'
)
config
.
headers
.
stationId
=
localStorage
.
getItem
(
'stationId'
)
if
(
token
&&
token
!==
'undefined'
)
{
config
.
headers
[
'token'
]
=
token
// 请求头带上token
config
.
headers
[
'Content-Type'
]
=
config
.
headers
[
'Content-Type'
]
?
config
.
headers
[
'Content-Type'
]
:
'application/json; charset=utf-8'
}
if
(
authorization
&&
authorization
!==
'undefined'
)
{
config
.
headers
.
Authorization
=
'Bearer '
+
authorization
}
if
(
config
.
url
.
indexOf
(
'authorization'
)
!==
-
1
)
{
config
=
requestFit
(
config
)
}
return
config
}
// ,
// error => {
// // 发送失败
// //console.log(error)
// //Promise.reject(error)
// }
config
=>
{
//如果没有站点id跳转至登录页
const
localId
=
localStorage
.
getItem
(
'stationId'
)
if
(
!
localId
)
{
router
.
push
({
path
:
'/login'
})
}
// 在请求发送之前做一些处理
const
token
=
sessionStorage
.
getItem
(
'token'
)
const
authorization
=
util
.
cookies
.
get
(
'authorization'
)
config
.
headers
.
stationId
=
localStorage
.
getItem
(
'stationId'
)
if
(
token
&&
token
!==
'undefined'
)
{
config
.
headers
[
'token'
]
=
token
// 请求头带上token
config
.
headers
[
'Content-Type'
]
=
config
.
headers
[
'Content-Type'
]
?
config
.
headers
[
'Content-Type'
]
:
'application/json; charset=utf-8'
}
if
(
authorization
&&
authorization
!==
'undefined'
)
{
config
.
headers
.
Authorization
=
'Bearer '
+
authorization
}
if
(
config
.
url
.
indexOf
(
'authorization'
)
!==
-
1
)
{
config
=
requestFit
(
config
)
}
return
config
}
// ,
// error => {
// // 发送失败
// //console.log(error)
// //Promise.reject(error)
// }
)
// 响应拦截器
service
.
interceptors
.
response
.
use
(
response
=>
{
// dataAxios 是 axios 返回数据中的 data
const
dataAxios
=
response
.
data
localStorage
.
setItem
(
'headers'
,
JSON
.
stringify
(
response
.
headers
))
// 这个状态码是和后端约定的
let
code
=
dataAxios
.
code
// 根据 code 进行判断
if
(
code
===
undefined
)
{
// 如果没有 code 代表这不是项目后端开发的接口 比如可能是 SuntrayAdmin 请求最新版本
return
dataAxios
}
else
{
// 有 code 代表这是一个后端接口 可以进行进一步的判断
switch
(
code
)
{
case
0
:
response
=>
{
// dataAxios 是 axios 返回数据中的 data
const
dataAxios
=
response
.
data
localStorage
.
setItem
(
'headers'
,
JSON
.
stringify
(
response
.
headers
))
// 这个状态码是和后端约定的
let
code
=
dataAxios
.
code
// 根据 code 进行判断
if
(
code
===
undefined
)
{
// 如果没有 code 代表这不是项目后端开发的接口 比如可能是 SuntrayAdmin 请求最新版本
return
dataAxios
}
else
{
// 有 code 代表这是一个后端接口 可以进行进一步的判断
switch
(
code
)
{
case
0
:
case
1
:
case
2
:
case
3
:
// [ 示例 ] code === 0 代表没有错误
return
dataAxios
case
401
:
// [ 示例 ] 其它和后台约定的 code
//errorCreat(`[ code: 401 ] ${dataAxios.msg}: ${response.config.url}`)
// 删除cookie
util
.
cookies
.
remove
(
'token'
)
util
.
cookies
.
remove
(
'uuid'
)
util
.
cookies
.
remove
(
'authorization'
)
// 跳转路由
router
.
push
({
name
:
'login'
})
break
default
:
// 不是正确的 code
errorCreat
(
`
${
dataAxios
.
msg
}
`
)
break
}
}
},
error
=>
{
if
(
error
&&
error
.
response
)
{
// if (error.response.status === 401) {
// // // 删除cookie
// util.cookies.remove('token')
// util.cookies.remove('uuid')
// util.cookies.remove('authorization')
// // 跳转路由
// router.push({ name: 'login' })
// return
// }
switch
(
error
.
response
.
status
)
{
case
401
:
error
.
message
=
'登录超时,请先登录'
// 删除cookie
util
.
cookies
.
remove
(
'token'
)
util
.
cookies
.
remove
(
'uuid'
)
util
.
cookies
.
remove
(
'authorization'
)
localStorage
.
removeItem
(
'sysSystem'
)
localStorage
.
removeItem
(
'stationId'
)
localStorage
.
removeItem
(
'headers'
)
localStorage
.
removeItem
(
'sysSign'
)
localStorage
.
removeItem
(
'userId'
)
sessionStorage
.
removeItem
(
'menuList'
)
sessionStorage
.
removeItem
(
'permissions'
)
sessionStorage
.
removeItem
(
'routerList'
)
sessionStorage
.
removeItem
(
'takeover'
)
sessionStorage
.
removeItem
(
'token'
)
sessionStorage
.
removeItem
(
'uuid'
)
if
(
this
)
{
// [ 示例 ] code === 0 代表没有错误
return
dataAxios
case
401
:
// [ 示例 ] 其它和后台约定的 code
//errorCreat(`[ code: 401 ] ${dataAxios.msg}: ${response.config.url}`)
// 删除cookie
util
.
cookies
.
remove
(
'token'
)
util
.
cookies
.
remove
(
'uuid'
)
util
.
cookies
.
remove
(
'authorization'
)
// 跳转路由
router
.
push
({
name
:
'login'
})
break
default
:
// 不是正确的 code
errorCreat
(
`
${
dataAxios
.
msg
}
`
)
break
}
}
},
error
=>
{
if
(
error
&&
error
.
response
)
{
// if (error.response.status === 401) {
// // // 删除cookie
// util.cookies.remove('token')
// util.cookies.remove('uuid')
// util.cookies.remove('authorization')
// // 跳转路由
// router.push({ name: 'login' })
// return
// }
switch
(
error
.
response
.
status
)
{
case
401
:
error
.
message
=
'登录超时,请先登录'
// 删除cookie
util
.
cookies
.
remove
(
'token'
)
util
.
cookies
.
remove
(
'uuid'
)
util
.
cookies
.
remove
(
'authorization'
)
localStorage
.
removeItem
(
'sysSystem'
)
localStorage
.
removeItem
(
'stationId'
)
localStorage
.
removeItem
(
'headers'
)
localStorage
.
removeItem
(
'sysSign'
)
localStorage
.
removeItem
(
'userId'
)
sessionStorage
.
removeItem
(
'menuList'
)
sessionStorage
.
removeItem
(
'permissions'
)
sessionStorage
.
removeItem
(
'routerList'
)
sessionStorage
.
removeItem
(
'takeover'
)
sessionStorage
.
removeItem
(
'token'
)
sessionStorage
.
removeItem
(
'uuid'
)
if
(
this
)
{
this
.
$parent
.
getDateList
()
//清空接管提示框
this
.
$store
.
dispatch
(
'd2admin/takeover/setTakeover'
,
null
)
}
// 跳转路由
router
.
push
({
name
:
'login'
})
break
default
:
//清空接管提示框
this
.
$store
.
dispatch
(
'd2admin/takeover/setTakeover'
,
null
)
}
// 跳转路由
router
.
push
({
name
:
'login'
})
break
default
:
error
.
message
=
'服务器网络故障,请联系运维人员'
break
}
}
errorLog
(
error
)
return
Promise
.
reject
(
error
)
break
}
}
errorLog
(
error
)
return
Promise
.
reject
(
error
)
}
)
...
...
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