Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
D
doublescreen-front
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
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
pengguangpu
doublescreen-front
Commits
eb04515b
Commit
eb04515b
authored
Feb 05, 2020
by
jiangjiantao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
扫商品页面交互
parent
116e8c72
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
145 additions
and
403 deletions
+145
-403
.gitignore
.gitignore
+4
-0
mini-program.json
.tea/configuration/mini-program.json
+0
-1
config$.js
.tea/entryFiles-development/config$.js
+0
-7
index$.web.js
.tea/entryFiles-development/index$.web.js
+0
-8
index$.worker.js
.tea/entryFiles-development/index$.worker.js
+0
-39
layout.json
.tea/layout.json
+1
-1
app.js
app.js
+3
-1
app.json
app.json
+1
-1
login.js
pages/login/login.js
+7
-4
scan.acss
pages/scan/scan.acss
+1
-1
scan.axml
pages/scan/scan.axml
+5
-5
scan.js
pages/scan/scan.js
+110
-324
api.js
utils/api.js
+13
-11
No files found.
.gitignore
View file @
eb04515b
...
@@ -2,3 +2,7 @@
...
@@ -2,3 +2,7 @@
.DS_Store
.DS_Store
/.tea
/.tea
.tea/layout.json
.tea/layout.json
.tea/layout.json
.tea/entryFiles-development/index$.worker.js
.tea/entryFiles-development/index$.web.js
.tea/entryFiles-development/config$.js
.tea/configuration/mini-program.json
deleted
100644 → 0
View file @
116e8c72
{
"tinyType"
:
"alipayiot"
,
"tinyCnName"
:
"支付宝 IoT"
,
"tinyProjectType"
:
"xpaas-mini"
,
"alipayiot:xpaas-mini:tinyIcon"
:
"https://gw.alipayobjects.com/mdn/rms_c763d8/afts/img/A*vNMFT7X_u3sAAAAAAAAAAABkARQnAQ"
,
"alipayiot:xpaas-mini:auditLink"
:
null
,
"alipayiot:xpaas-mini:whiteListLink"
:
null
,
"alipayiot:xpaas-mini:createLink"
:
null
,
"alipayiot:xpaas-mini:component2"
:
false
,
"alipayiot:xpaas-mini:_enableAutoPush"
:
false
,
"alipayiot:xpaas-mini:_appIdList"
:[],
"alipayiot:xpaas-mini:uploadTime"
:
""
,
"alipayiot:xpaas-mini:packageSize"
:
0
,
"alipayiot:xpaas-mini:lastDeviceName"
:
"蜻蜓F4"
,
"isSimulatorOpen"
:
true
,
"isNotFirstToggleSimulator"
:
true
,
"alipayiot:xpaas-mini:MockStore"
:{
"localLoginInfo"
:{
"name"
:
"ywxadmin"
,
"password"
:
"1234567a"
,
"sn"
:
""
},
"localAccountInfo"
:{
"accountId"
:
126
,
"actType"
:
1
,
"agreement"
:
1
,
"isShopCart"
:
0
,
"merchantId"
:
"2088222276054714"
,
"merchantName"
:
"一网鲜(杭州)信息科技有限公司"
,
"realName"
:
"力拔山兮气盖世时不利兮骓不逝"
,
"storeList"
:[{
"address"
:
"杭州市江干区科技园路2号"
,
"hasStoreManager"
:
1
,
"storeId"
:
"001"
,
"storeName"
:
"一网鲜"
}],
"token"
:
"431398226761175040"
,
"userName"
:
"ywxadmin"
,
"userPhone"
:
"13858057743"
}},
"storageVersion"
:
"1.5.7"
}
.tea/entryFiles-development/config$.js
deleted
100644 → 0
View file @
116e8c72
const
g
=
typeof
global
!==
'undefined'
?
global
:
self
;
g
.
appXAppJson
=
{
"app"
:
{
"$homepage"
:
"pages/paysuccess/paysuccess"
}
};
.tea/entryFiles-development/index$.web.js
deleted
100644 → 0
View file @
116e8c72
require
(
'@alipay/appx-compiler/lib/sjsEnvInit'
);
require
(
'./config$'
);
require
(
'../../custom_widgets/spin/spin?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43'
);
require
(
'../../node_modules/mini-antui/es/input-item/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43'
);
require
(
'../../pages/paysuccess/paysuccess?hash=8a39df616008c86a406618844f053cdc5567752b'
);
require
(
'../../pages/login/login?hash=4ebd76d5932655db30c27bd67ebeb700d746609f'
);
require
(
'../../pages/index/index?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68'
);
.tea/entryFiles-development/index$.worker.js
deleted
100644 → 0
View file @
116e8c72
if
(
!
self
.
__appxInited
)
{
self
.
__appxInited
=
1
;
require
(
'./config$'
);
var
AFAppX
=
self
.
AFAppX
.
getAppContext
?
self
.
AFAppX
.
getAppContext
().
AFAppX
:
self
.
AFAppX
;
self
.
getCurrentPages
=
AFAppX
.
getCurrentPages
;
self
.
getApp
=
AFAppX
.
getApp
;
self
.
Page
=
AFAppX
.
Page
;
self
.
App
=
AFAppX
.
App
;
self
.
my
=
AFAppX
.
bridge
||
AFAppX
.
abridge
;
self
.
abridge
=
self
.
my
;
self
.
Component
=
AFAppX
.
WorkerComponent
||
function
(){};
self
.
$global
=
AFAppX
.
$global
;
self
.
requirePlugin
=
AFAppX
.
requirePlugin
;
if
(
AFAppX
.
registerApp
)
{
AFAppX
.
registerApp
({
appJSON
:
appXAppJson
,
});
}
function
success
()
{
require
(
'../../app'
);
require
(
'../../custom_widgets/spin/spin?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43'
);
require
(
'../../node_modules/mini-antui/es/input-item/index?hash=05d2a9730dd6009bf9446182f9c985f40f8c0f43'
);
require
(
'../../pages/paysuccess/paysuccess?hash=8a39df616008c86a406618844f053cdc5567752b'
);
require
(
'../../pages/login/login?hash=4ebd76d5932655db30c27bd67ebeb700d746609f'
);
require
(
'../../pages/index/index?hash=32d7d2807ed4e666ef03b4b3fe8c38ecf2e34e68'
);
}
self
.
bootstrapApp
?
self
.
bootstrapApp
({
success
})
:
success
();
}
\ No newline at end of file
.tea/layout.json
View file @
eb04515b
{
"layout"
:{
"left"
:{
"currentId"
:
"scm_container"
,
"size"
:
310
},
"right"
:{
"currentId"
:
""
},
"bottom"
:{
"currentId"
:
"devtools"
,
"size"
:
164
}},
"storageVersion"
:
"1.5.5"
}
{
"layout"
:{
"left"
:{
"currentId"
:
"scm_container"
,
"size"
:
371
},
"right"
:{
"currentId"
:
""
},
"bottom"
:{
"currentId"
:
"devtools"
,
"size"
:
215
}},
"storageVersion"
:
"1.5.5"
}
\ No newline at end of file
\ No newline at end of file
app.js
View file @
eb04515b
...
@@ -10,7 +10,9 @@ App({
...
@@ -10,7 +10,9 @@ App({
BASE_URL
:
null
,
BASE_URL
:
null
,
appId
:
"1542075029346"
,
appId
:
"1542075029346"
,
//小程序容器版本
//小程序容器版本
containerVersionCode
:
null
containerVersionCode
:
null
,
localAccountInfo
:
null
,
sn
:
""
},
},
onLaunch
(
options
)
{
onLaunch
(
options
)
{
...
...
app.json
View file @
eb04515b
{
{
"pages"
:
[
"pages"
:
[
"pages/login/login"
,
"pages/scan/scan"
,
"pages/scan/scan"
,
"pages/paysuccess/paysuccess"
,
"pages/paysuccess/paysuccess"
,
"pages/login/login"
,
"pages/index/index"
"pages/index/index"
],
],
"window"
:
{
"window"
:
{
...
...
pages/login/login.js
View file @
eb04515b
...
@@ -23,6 +23,8 @@ Page({
...
@@ -23,6 +23,8 @@ Page({
this
.
setData
({
this
.
setData
({
sn
:
serialno
.
value
sn
:
serialno
.
value
});
});
//设置到全局变量
getApp
().
globalData
.
sn
=
serialno
.
value
;
}
}
//获取下本地登录数据
//获取下本地登录数据
...
@@ -111,15 +113,14 @@ Page({
...
@@ -111,15 +113,14 @@ Page({
sn
:
this
.
data
.
sn
sn
:
this
.
data
.
sn
}
}
});
});
//请求网络
//请求网络
var
api
=
require
(
"../../utils/api.js"
);
var
api
=
require
(
"../../utils/api.js"
);
var
loginCallbackTemp
=
this
.
loginCallback
.
bind
(
this
);
var
loginCallbackTemp
=
this
.
loginCallback
.
bind
(
this
);
api
.
login
({
api
.
login
({
baseUrl
:
getApp
().
globalData
.
BASE_URL
,
baseUrl
:
getApp
().
globalData
.
BASE_URL
,
appId
:
getApp
().
globalData
.
appId
,
name
:
this
.
data
.
name
,
name
:
this
.
data
.
name
,
password
:
this
.
data
.
password
,
password
:
this
.
data
.
password
,
sn
:
this
.
data
.
sn
+
"xx"
,
callback
:
loginCallbackTemp
callback
:
loginCallbackTemp
});
});
},
},
...
@@ -132,9 +133,11 @@ Page({
...
@@ -132,9 +133,11 @@ Page({
key
:
'localAccountInfo'
,
// 缓存数据的key
key
:
'localAccountInfo'
,
// 缓存数据的key
data
:
res
.
data
,
// 要缓存的数据
data
:
res
.
data
,
// 要缓存的数据
});
});
//跳转广告页
//登陆信息设置到全局变量
getApp
().
globalData
.
localAccountInfo
=
res
.
data
;
//todo 临时跳转到扫商品页面 跳转广告页
my
.
reLaunch
({
my
.
reLaunch
({
url
:
"/pages/
paysuccess/paysuccess
"
url
:
"/pages/
scan/scan
"
});
});
my
.
showToast
({
my
.
showToast
({
type
:
'success'
,
type
:
'success'
,
...
...
pages/scan/scan.acss
View file @
eb04515b
...
@@ -43,7 +43,7 @@
...
@@ -43,7 +43,7 @@
display: flex;
display: flex;
flex-direction: row;
flex-direction: row;
width: 100%;
width: 100%;
height:
87.
5rpx;
height:
17
5rpx;
align-items:center;
align-items:center;
}
}
/* 商品价格 */
/* 商品价格 */
...
...
pages/scan/scan.axml
View file @
eb04515b
...
@@ -28,19 +28,19 @@
...
@@ -28,19 +28,19 @@
总额
总额
</view>
</view>
<view class="scan-price-total">
<view class="scan-price-total">
¥
688.00
¥
{{totalPrice}}
</view>
</view>
<view class="scan-price-quantity-propmt">
<view class="scan-price-quantity-propmt">
(共
3
件)
(共
{{totalQuantity}}
件)
</view>
</view>
</view>
</view>
<view class="scan-bottom-item">
<
!-- <
view class="scan-bottom-item">
<view class="scan-price-total-propmt">
<view class="scan-price-total-propmt">
已优惠
已优惠
</view>
</view>
<view class="scan-disc-total">
<view class="scan-disc-total">
¥
68.00
¥
{{totalDisc}}
</view>
</view>
</view>
</view>
-->
</view>
</view>
</view>
</view>
\ No newline at end of file
pages/scan/scan.js
View file @
eb04515b
var
api
=
require
(
"../../utils/api.js"
);
import
{
Page
}
from
'../../utils/scan'
;
Page
({
Page
({
data
:
{
data
:
{
goods
:
[
goods
:
[],
{
totalPrice
:
0.00
,
/**
totalQuantity
:
0
* 活动id
},
*/
activityId
:
""
,
/**
* 活动类型
*/
activityType
:
""
,
/**
* 活动名字
*/
activityName
:
""
,
/**
* 折扣金额
*/
discnt
:
0
,
/**
* 活动开始时间
*/
startTime
:
0
,
/**
* 活动结束时间
*/
endTime
:
0
,
/**
* 商品图片
*/
pic
:
""
,
/**
* 商品名字
*/
name
:
"杜蕾斯"
,
/**
* 商品价格,单位:分,后端定义的int,fck
*/
price
:
20.88
,
/**
* 售卖价格(单位分)
*/
salePrice
:
0
,
/**
* 商品数量:用于本地计算,默认为1
*/
quantity
:
1
,
/**
//外接扫码枪事件
* 商品条码
onKeyPress
(
r
)
{
*/
console
.
log
(
"scan onKeyPress==>"
+
r
);
barcode
:
""
,
this
.
getGoodInfoByBarcode
(
r
);
/**
},
* 是否咱家优惠
*/
hasDiscount
:
false
,
},
{
/**
* 活动id
*/
activityId
:
""
,
/**
* 活动类型
*/
activityType
:
""
,
/**
* 活动名字
*/
activityName
:
""
,
/**
* 折扣金额
*/
discnt
:
0
,
/**
* 活动开始时间
*/
startTime
:
0
,
/**
* 活动结束时间
*/
endTime
:
0
,
/**
* 商品图片
*/
pic
:
""
,
/**
* 商品名字
*/
name
:
"杜蕾斯"
,
/**
* 商品价格,单位:分,后端定义的int,fck
*/
price
:
20.88
,
/**
* 售卖价格(单位分)
*/
salePrice
:
0
,
/**
* 商品数量:用于本地计算,默认为1
*/
quantity
:
1
,
/**
//获取商品信息
* 商品条码
getGoodInfoByBarcode
(
barcode
)
{
*/
////根据条形码查询商品接口
barcode
:
""
,
var
API_SCAN
=
"market/barcodeQuery"
;
/**
my
.
showLoading
({});
* 是否咱家优惠
var
scanGoodRequest
=
api
.
createCommonRequest
();
*/
scanGoodRequest
.
goodsId
=
barcode
;
hasDiscount
:
false
,
console
.
log
(
"扫商品的请求 ==>"
+
JSON
.
stringify
(
scanGoodRequest
));
my
.
request
({
url
:
getApp
().
globalData
.
BASE_URL
+
API_SCAN
,
method
:
'POST'
,
dataType
:
'json'
,
timeout
:
30000
,
data
:
scanGoodRequest
,
success
:
(
res
)
=>
{
my
.
hideLoading
();
console
.
log
(
"扫描商品成功 ==>"
+
JSON
.
stringify
(
res
));
if
(
res
.
data
.
success
!=
true
)
{
my
.
showToast
({
type
:
'fail'
,
content
:
res
.
data
.
message
,
duration
:
2000
});
}
else
{
var
arr
=
Object
.
keys
(
res
.
data
.
data
);
if
(
arr
.
length
==
0
)
{
my
.
showToast
({
type
:
'fail'
,
content
:
"该商品没有对应的活动"
,
duration
:
2000
});
}
else
{
//识别商品成功
this
.
parseGoodInfo
(
res
.
data
.
data
);
console
.
log
(
"识别商品信息成功"
);
}
}
},
},
{
fail
:
(
res
)
=>
{
/**
my
.
hideLoading
();
* 活动id
console
.
log
(
"扫商品的请求 ==>"
+
JSON
.
stringify
(
res
));
*/
my
.
showToast
({
activityId
:
""
,
type
:
'exception'
,
/**
content
:
api
.
decodeErrorMessage
(
res
.
error
),
* 活动类型
duration
:
2000
*/
});
activityType
:
""
,
}
/**
});
* 活动名字
},
*/
activityName
:
""
,
/**
* 折扣金额
*/
discnt
:
0
,
/**
* 活动开始时间
*/
startTime
:
0
,
/**
* 活动结束时间
*/
endTime
:
0
,
/**
* 商品图片
*/
pic
:
""
,
/**
* 商品名字
*/
name
:
"杜蕾斯"
,
/**
* 商品价格,单位:分,后端定义的int,fck
*/
price
:
20.88
,
/**
* 售卖价格(单位分)
*/
salePrice
:
0
,
/**
* 商品数量:用于本地计算,默认为1
*/
quantity
:
1
,
/**
* 商品条码
*/
barcode
:
""
,
/**
* 是否咱家优惠
*/
hasDiscount
:
false
,
},
{
/**
* 活动id
*/
activityId
:
""
,
/**
* 活动类型
*/
activityType
:
""
,
/**
* 活动名字
*/
activityName
:
""
,
/**
* 折扣金额
*/
discnt
:
0
,
/**
* 活动开始时间
*/
startTime
:
0
,
/**
* 活动结束时间
*/
endTime
:
0
,
/**
* 商品图片
*/
pic
:
""
,
/**
* 商品名字
*/
name
:
"杜蕾斯"
,
/**
* 商品价格,单位:分,后端定义的int,fck
*/
price
:
20.88
,
/**
* 售卖价格(单位分)
*/
salePrice
:
0
,
/**
* 商品数量:用于本地计算,默认为1
*/
quantity
:
1
,
/**
//转化商品信息
* 商品条码
parseGoodInfo
(
goodinfo
)
{
*/
barcode
:
""
,
//价格 分转元
/**
goodinfo
.
quantity
=
1
;
* 是否咱家优惠
goodinfo
.
price
=
goodinfo
.
price
/
100
*/
goodinfo
.
salePrice
=
goodinfo
.
salePrice
/
100
hasDiscount
:
false
,
goodinfo
.
discnt
=
goodinfo
.
discnt
/
100
},
{
/**
* 活动id
*/
activityId
:
""
,
/**
* 活动类型
*/
activityType
:
""
,
/**
* 活动名字
*/
activityName
:
""
,
/**
* 折扣金额
*/
discnt
:
0
,
/**
* 活动开始时间
*/
startTime
:
0
,
/**
* 活动结束时间
*/
endTime
:
0
,
/**
* 商品图片
*/
pic
:
""
,
/**
* 商品名字
*/
name
:
"杜蕾斯"
,
/**
* 商品价格,单位:分,后端定义的int,fck
*/
price
:
20.88
,
/**
* 售卖价格(单位分)
*/
salePrice
:
0
,
/**
* 商品数量:用于本地计算,默认为1
*/
quantity
:
1
,
/**
//总数量
* 商品条码
let
totalQuantityTemp
=
0
*/
//总价格
barcode
:
""
,
let
totalPriceTemp
=
0.00
/**
* 是否咱家优惠
*/
hasDiscount
:
false
,
},
{
/**
* 活动id
*/
activityId
:
""
,
/**
* 活动类型
*/
activityType
:
""
,
/**
* 活动名字
*/
activityName
:
""
,
/**
* 折扣金额
*/
discnt
:
0
,
/**
* 活动开始时间
*/
startTime
:
0
,
/**
* 活动结束时间
*/
endTime
:
0
,
/**
* 商品图片
*/
pic
:
""
,
/**
* 商品名字
*/
name
:
"杜蕾斯"
,
/**
* 商品价格,单位:分,后端定义的int,fck
*/
price
:
20.88
,
/**
* 售卖价格(单位分)
*/
salePrice
:
0
,
/**
* 商品数量:用于本地计算,默认为1
*/
quantity
:
1
,
/**
//数量+1
* 商品条码
let
isHasSame
=
false
;
*/
let
lastgoods
=
this
.
data
.
goods
;
barcode
:
""
,
let
goodstemp
=
[]
/**
let
goodtemp
* 是否咱家优惠
lastgoods
.
forEach
(
function
(
item
,
index
,
array
)
{
*/
if
(
item
.
barcode
==
goodinfo
.
barcode
){
hasDiscount
:
false
,
let
quantitytemp
=
item
.
quantity
item
.
quantity
=
quantitytemp
+
1
isHasSame
=
true
goodtemp
=
item
}
else
{
totalQuantityTemp
=
totalQuantityTemp
+
item
.
quantity
totalPriceTemp
=
totalPriceTemp
+
item
.
price
*
item
.
quantity
goodstemp
.
push
(
item
)
}
}
],
})
if
(
isHasSame
){
totalQuantityTemp
=
totalQuantityTemp
+
goodtemp
.
quantity
totalPriceTemp
=
totalPriceTemp
+
goodtemp
.
price
*
goodtemp
.
quantity
let
nowgoods
=
[]
nowgoods
.
push
(
goodtemp
);
var
newgoods
=
nowgoods
.
concat
(
goodstemp
)
this
.
setData
({
goods
:
newgoods
})
}
else
{
totalQuantityTemp
=
totalQuantityTemp
+
1
totalPriceTemp
=
totalPriceTemp
+
goodinfo
.
price
let
nowgoods
=
[]
nowgoods
.
push
(
goodinfo
);
var
newgoods
=
nowgoods
.
concat
(
lastgoods
)
this
.
setData
({
goods
:
newgoods
})
}
},
//汇总
this
.
setData
({
totalQuantity
:
totalQuantityTemp
,
totalPrice
:
totalPriceTemp
,
})
//管理员需要额外传一个storeid
}
});
});
\ No newline at end of file
utils/api.js
View file @
eb04515b
//login
//login
var
API_LOGIN
=
"store/cashier/login"
;
var
API_LOGIN
=
"store/cashier/login"
;
const
app
=
getApp
()
//返回的数据都为code、data的形式
//返回的数据都为code、data的形式
function
login
({
baseUrl
,
appId
,
name
,
password
,
sn
,
callback
})
{
function
login
({
baseUrl
,
name
,
password
,
callback
})
{
var
loginRequest
=
createCommonRequest
(
appId
,
null
,
sn
);
var
loginRequest
=
createCommonRequest
();
loginRequest
.
username
=
name
;
loginRequest
.
username
=
name
;
loginRequest
.
password
=
password
;
loginRequest
.
password
=
password
;
loginRequest
.
loginType
=
"1"
;
loginRequest
.
loginType
=
"1"
;
console
.
log
(
"login request==>"
+
JSON
.
stringify
(
loginRequest
));
console
.
log
(
"login request==>"
+
JSON
.
stringify
(
loginRequest
));
var
loginResponse
=
{
code
:
{},
data
:
{}
};
var
loginResponse
=
{
code
:
{},
data
:
{}
};
my
.
request
({
my
.
request
({
...
@@ -47,13 +45,15 @@ function login({ baseUrl, appId, name, password, sn, callback }) {
...
@@ -47,13 +45,15 @@ function login({ baseUrl, appId, name, password, sn, callback }) {
}
}
function
createCommonRequest
(
appId
,
token
,
deviceNo
)
{
function
createCommonRequest
()
{
var
commonRequest
=
{
var
commonRequest
=
{
};
};
commonRequest
.
appId
=
appId
;
commonRequest
.
appId
=
app
.
globalData
.
appId
;
commonRequest
.
token
=
token
;
//token 设置到公共请求体
commonRequest
.
deviceNo
=
deviceNo
;
if
(
app
.
globalData
.
localAccountInfo
!=
null
){
commonRequest
.
token
=
app
.
globalData
.
localAccountInfo
.
token
;
}
commonRequest
.
deviceNo
=
app
.
globalData
.
sn
;
commonRequest
.
batchNo
=
""
;
commonRequest
.
batchNo
=
""
;
commonRequest
.
timestamp
=
timestampToTime
();
commonRequest
.
timestamp
=
timestampToTime
();
commonRequest
.
format
=
"JSON"
;
commonRequest
.
format
=
"JSON"
;
...
@@ -92,4 +92,6 @@ function decodeErrorMessage(error) {
...
@@ -92,4 +92,6 @@ function decodeErrorMessage(error) {
return
"请求失败"
;
return
"请求失败"
;
}
}
module
.
exports
.
login
=
login
;
module
.
exports
.
login
=
login
;
\ No newline at end of file
module
.
exports
.
createCommonRequest
=
createCommonRequest
;
module
.
exports
.
decodeErrorMessage
=
decodeErrorMessage
;
\ 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