Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
李宁
/
Activity
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 9786a22a
authored
Sep 16, 2025
by
李宁
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1
1 parent
a64a420e
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
132 additions
and
73 deletions
huaian/demo.html
huaian/js/aliyun-oss-sdk-6.20.0.min.js
huaian/js/demo.js
huaian/demo.html
View file @
9786a22
...
@@ -259,33 +259,18 @@
...
@@ -259,33 +259,18 @@
</div>
</div>
</div>
</div>
<div
class=
"outAlert"
id=
"jdhSnSb
ErrorAlert"
>
<div
class=
"outAlert"
id=
"sn
ErrorAlert"
>
<div
class=
"mpCon"
>
<div
class=
"mpCon"
>
<img
class=
"topBg"
src=
"https://xpo.oss-cn-beijing.aliyuncs.com/huaian/bBg.png"
alt=
""
>
<img
class=
"topBg"
src=
"https://xpo.oss-cn-beijing.aliyuncs.com/huaian/bBg.png"
alt=
""
>
<div
style=
"display: flex;"
>
<div
style=
"display: flex;"
>
<div
class=
"til"
>
串号无法识别? 请进行以下尝试
</div>
<div
class=
"til"
>
串号无法识别? 请进行以下尝试
</div>
</div>
</div>
<div
class=
"bts small"
>
1、请将摄像头近距离正面聚焦在 STBID/SN 码上,确保整串字符完整清晰。
</div>
<div
class=
"bts small"
id=
"snErrorText"
>
1、请将摄像头近距离正面聚焦在 STBID/SN 码上,确保整串字符完整清晰。
</div>
<img
class=
"twoImg pImg"
src=
"https://xpo.oss-cn-beijing.aliyuncs.com/huaian/jdhSnSbError.png"
alt=
""
>
<img
class=
"twoImg pImg"
id=
"snErrorImg"
src=
"https://xpo.oss-cn-beijing.aliyuncs.com/huaian/jdhSnSbError.png"
alt=
""
>
<div
class=
"bts small"
>
2、使用页面右上方镜头包功能尝试切换摄像头再进行识别。
</div>
<div
class=
"bts small"
>
2、使用页面右上方镜头包功能尝试切换摄像头再进行识别。
</div>
<img
class=
"twoImg pImg"
src=
"https://xpo.oss-cn-beijing.aliyuncs.com/huaian/cameraSwitchGuide.png"
alt=
""
>
<img
class=
"twoImg pImg"
src=
"https://xpo.oss-cn-beijing.aliyuncs.com/huaian/cameraSwitchGuide.png"
alt=
""
>
<div
class=
"butt"
id=
"hideJdhSnSbErrorAlert"
>
我知道了
</div>
<div
class=
"butt"
id=
"hideSnErrorAlert"
>
我知道了
</div>
</div>
</div>
<div
class=
"outAlert"
id=
"cgmSnSbErrorAlert"
>
<div
class=
"mpCon"
>
<img
class=
"topBg"
src=
"https://xpo.oss-cn-beijing.aliyuncs.com/huaian/bBg.png"
alt=
""
>
<div
style=
"display: flex;"
>
<div
class=
"til"
>
温馨提示
</div>
</div>
<div
class=
"bts small"
>
1、请将摄像头近距离正面聚焦在 CMEI码上,确保整串字符完整清晰。
</div>
<img
class=
"twoImg pImg"
src=
"https://xpo.oss-cn-beijing.aliyuncs.com/huaian/cgmSnSbError.png"
alt=
""
>
<div
class=
"bts small"
>
2、使用页面右上方镜头包功能尝试切换摄像头再进行识别。
</div>
<img
class=
"twoImg pImg"
src=
"https://xpo.oss-cn-beijing.aliyuncs.com/huaian/cameraSwitchGuide.png"
alt=
""
>
<div
class=
"butt"
id=
"hideCgmSnSbErrorAlert"
>
我知道了
</div>
</div>
</div>
</div>
</div>
...
@@ -350,14 +335,14 @@
...
@@ -350,14 +335,14 @@
var vConsole = new VConsole();
var vConsole = new VConsole();
console.log('vConsole 初始化')
console.log('vConsole 初始化')
</script> -->
</script> -->
<script
src=
"js/aliyun-oss-sdk-6.20.0.min.js"
></script>
<script
src=
"js/jquery-3.4.1.min.js"
></script>
<script
src=
"js/jquery-3.4.1.min.js"
></script>
<script
src=
"js/axios.min.js"
></script>
<script
src=
"js/axios.min.js"
></script>
<script
src=
"js/AgoraRTC_N.js"
></script>
<script
src=
"js/AgoraRTC_N.js"
></script>
<script
src=
"js/util.js?1212"
></script>
<script
src=
"js/util.js?1212"
></script>
<script
src=
"js/vue.min.js"
></script>
<script
src=
"js/vue.min.js"
></script>
<script
src=
"js/vant.min.js"
></script>
<script
src=
"js/vant.min.js"
></script>
<script
src=
"js/demo.js?
063347090
"
></script>
<script
src=
"js/demo.js?
87555
"
></script>
</body>
</body>
</html>
</html>
\ No newline at end of file
\ No newline at end of file
huaian/js/aliyun-oss-sdk-6.20.0.min.js
0 → 100644
View file @
9786a22
This diff could not be displayed because it is too large.
huaian/js/demo.js
View file @
9786a22
...
@@ -130,15 +130,13 @@ var tryNum = ''
...
@@ -130,15 +130,13 @@ var tryNum = ''
var
ifListener
=
false
var
ifListener
=
false
var
ifClickHide
=
false
var
ifClickHide
=
false
var
snConfirmFlag
=
false
var
snConfirmFlag
=
false
var
jdhAndCgm
ClickHide
=
false
var
snErrorAlert
ClickHide
=
false
var
noShootClick
=
false
var
noShootClick
=
false
var
jdhEaxmpleShow
=
false
var
cgmExampleShow
=
false
var
zgmExampleShow
=
false
var
dartTsShow
=
false
var
dartTsShow
=
false
var
snInputNum
var
snInputNum
var
noShootNum
var
noShootNum
var
voiceUrl
=
''
var
voiceUrl
=
''
var
aliyunQueryFlag
=
false
function
getProcess
(){
function
getProcess
(){
if
(
!
window
.
location
.
href
.
includes
(
'demo.html'
)){
if
(
!
window
.
location
.
href
.
includes
(
'demo.html'
)){
...
@@ -174,6 +172,14 @@ function getProcess(){
...
@@ -174,6 +172,14 @@ function getProcess(){
$
(
'#waitting'
).
hide
()
$
(
'#waitting'
).
hide
()
}
}
if
(
res
.
voiceCode
&&
(
res
.
voiceCode
.
includes
(
'SN'
)
||
res
.
voiceCode
.
startsWith
(
'account_'
))
&&
!
aliyunQueryFlag
){
aliyunQueryFlag
=
true
queryAliyunToken
(
res
.
voiceCode
)
setTimeout
(()
=>
{
queryAliyunToken
()
},
600000
)
}
if
(
!
res
.
voiceCode
||
((
res
.
voiceCode
+
''
+
res
.
tryNum
)
==
(
stepId
+
''
+
tryNum
))){
if
(
!
res
.
voiceCode
||
((
res
.
voiceCode
+
''
+
res
.
tryNum
)
==
(
stepId
+
''
+
tryNum
))){
//确认sn串号弹窗
//确认sn串号弹窗
...
@@ -279,28 +285,22 @@ function getProcess(){
...
@@ -279,28 +285,22 @@ function getProcess(){
return
return
}
}
}
else
{
}
else
{
//机顶盒和从光猫sn识别错误提示弹窗
//串号环节的错误示例弹窗
if
(
stepId
.
startsWith
(
'jdh'
)
&&
tryNum
>=
1
&&
!
jdhAndCgmClickHide
){
let
param
=
getSnErrorInfo
(
stepId
)
$
(
"#jdhSnSbErrorAlert"
).
show
()
}
if
(
param
.
pageText
&&
tryNum
>=
1
&&
!
snErrorAlertClickHide
){
if
(
stepId
.
startsWith
(
'cgm'
)
&&
tryNum
>=
1
&&
!
jdhAndCgmClickHide
){
$
(
"#snErrorText"
).
html
(
param
.
pageText
)
$
(
"#cgmSnSbErrorAlert"
).
show
()
$
(
"#snErrorImg"
).
attr
(
'src'
,
param
.
imgUrl
)
$
(
"#snErrorAlert"
).
show
()
}
}
}
}
}
}
//示例弹窗
//示例弹窗
if
(
stepId
.
includes
(
'SN'
)
||
stepId
.
startsWith
(
'complain'
)){
if
(
stepId
.
startsWith
(
'complain'
)){
let
param
=
getSnInfo
(
stepId
)
let
param
=
getSnInfo
(
stepId
)
let
lsFlag
=
false
if
(
!
sessionStorage
.
getItem
(
param
.
cacheId
)){
if
((
stepId
.
startsWith
(
'jdh'
)
&&!
jdhEaxmpleShow
)
||
(
stepId
.
startsWith
(
'cgm'
)
&&!
cgmExampleShow
)){
lsFlag
=
res
.
tryNum
<
1
?
true
:
false
}
else
if
(
!
sessionStorage
.
getItem
(
param
.
cacheId
)
||
(
stepId
.
startsWith
(
'zgm'
)
&&
tryNum
<
snInputNum
&&!
zgmExampleShow
)){
lsFlag
=
true
}
if
(
lsFlag
){
$
(
"#snExampleText"
).
html
(
param
.
pageText
)
$
(
"#snExampleText"
).
html
(
param
.
pageText
)
$
(
"#snExampleImg"
).
attr
(
'src'
,
param
.
imgUrl
)
$
(
"#snExampleImg"
).
attr
(
'src'
,
param
.
imgUrl
)
...
@@ -374,20 +374,38 @@ function getSnErrorInfo(code){
...
@@ -374,20 +374,38 @@ function getSnErrorInfo(code){
let
pageText
=
''
let
pageText
=
''
let
id
=
''
let
id
=
''
if
(
key
.
startsWith
(
'cgm'
)){
if
(
key
.
startsWith
(
'gm'
)){
pageText
=
'1、请将摄像头近距离正面聚焦在 CMEI码上,确保整串字符完整清晰。'
pageText
=
'请拍摄光猫铭牌,将镜头对准要识别的号码,如图所示:'
id
=
'gm'
}
else
if
(
key
.
startsWith
(
'zgm'
)){
pageText
=
'请拍摄FTTR主光猫铭牌,将镜头对准要识别的号码,如图所示:'
id
=
'zgm'
}
else
if
(
key
.
startsWith
(
'cgm'
)){
pageText
=
'请拍摄FTTR从光猫铭牌,将镜头对准要识别的号码,如图所示:'
id
=
'cgm'
id
=
'cgm'
}
else
if
(
key
.
startsWith
(
'jdh'
)){
}
else
if
(
key
.
startsWith
(
'jdh'
)){
pageText
=
'
1、请将摄像头近距离正面聚焦在 STBID/SN 码上,确保整串字符完整清晰。
'
pageText
=
'
请将机顶盒翻转至背面,将镜头对准要识别的号码,如图所示:
'
id
=
'jdh'
id
=
'jdh'
}
else
if
(
key
.
startsWith
(
'lyq'
)){
pageText
=
'请将路由器翻转至背面,将镜头对准要识别的号码,如图所示:'
id
=
'lyq'
}
else
if
(
key
.
startsWith
(
'iptv'
)){
pageText
=
'将摄像头对准电视软终端要识别的号码,如图所示:'
id
=
'iptv'
}
else
if
(
key
.
startsWith
(
'cloudPc'
)){
pageText
=
'请将终端盒翻转至背面,将镜头对准要识别的号码,如图所示:'
id
=
'cloudPc'
}
else
if
(
key
.
startsWith
(
'insf'
)){
pageText
=
'请查看摄像头底座的铭牌,将镜头对准要识别的号码,如图所示:'
id
=
'insf'
}
else
if
(
key
.
startsWith
(
'poeSwitch'
)){
}
else
if
(
key
.
startsWith
(
'poeSwitch'
)){
pageText
=
'
1、请将摄像头近距离正面聚焦在 CMEI 码上,确保整串字符完整清晰。
'
pageText
=
'
请拍摄POE交换机铭牌,将镜头对准要识别的号码,如图所示:
'
id
=
'poeSwitch'
id
=
'poeSwitch'
}
}
return
{
return
{
pageText
,
pageText
,
imgUrl
:
(
'https://xpo.oss-cn-beijing.aliyuncs.com/huaian/
'
+
id
+
'SnSbError.png'
),
imgUrl
:
(
'https://xpo.oss-cn-beijing.aliyuncs.com/huaian/
snError/'
+
id
+
'.png'
)
}
}
}
}
...
@@ -654,7 +672,7 @@ $('.snAgain').click((e)=>{
...
@@ -654,7 +672,7 @@ $('.snAgain').click((e)=>{
}
}
snConfirmFlag
=
false
snConfirmFlag
=
false
jdhAndCgm
ClickHide
=
true
snErrorAlert
ClickHide
=
true
ifSnSubmitPicture
=
false
ifSnSubmitPicture
=
false
ifClickHide
=
true
ifClickHide
=
true
...
@@ -755,19 +773,27 @@ $('#noShootClose').click(()=>{
...
@@ -755,19 +773,27 @@ $('#noShootClose').click(()=>{
})
})
var
ifSnSubmitPicture
=
false
var
ifSnSubmitPicture
=
false
$
(
'#submitPicture'
).
click
(()
=>
{
$
(
'#submitPicture'
).
click
(
async
()
=>
{
$
(
'#loadingText'
).
text
(
'上传中,请稍候...'
)
$
(
'#loadingText'
).
text
(
'上传中,请稍候...'
)
$
(
'#loading'
).
show
()
$
(
'#loading'
).
show
()
let
fileFormData
=
new
FormData
()
let
fileFormData
=
new
FormData
()
fileFormData
.
append
(
'imageFile'
,
fileBlob
,
'img.png'
)
//
fileFormData.append('imageFile', fileBlob, 'img.png')
fileFormData
.
append
(
'applyId'
,
applyId
)
fileFormData
.
append
(
'applyId'
,
applyId
)
fileFormData
.
append
(
'callId'
,
callId
)
fileFormData
.
append
(
'callId'
,
callId
)
fileFormData
.
append
(
'voiceCode'
,
stepId
)
fileFormData
.
append
(
'voiceCode'
,
stepId
)
fileFormData
.
append
(
'button_name'
,
'yiwancheng'
)
fileFormData
.
append
(
'button_name'
,
'yiwancheng'
)
let
url
=
await
queryImgUrl
()
if
(
!
url
){
$
(
'#loading'
).
hide
()
util
.
toast
(
'网络慢,请切换网络后重试'
)
return
}
fileFormData
.
append
(
'picUrl'
,
url
)
util
.
httpRequest
({
util
.
httpRequest
({
url
:
'/takePhoto '
,
url
:
'/takePhoto
Url
'
,
time
:
20000
,
time
:
20000
,
data
:
fileFormData
data
:
fileFormData
}).
then
(
res
=>
{
}).
then
(
res
=>
{
...
@@ -789,8 +815,7 @@ function submitPictureSucc(){
...
@@ -789,8 +815,7 @@ function submitPictureSucc(){
ifSnSubmitPicture
=
true
ifSnSubmitPicture
=
true
setTimeout
(()
=>
{
setTimeout
(()
=>
{
jdhAndCgmClickHide
=
false
snErrorAlertClickHide
=
false
zgmExampleShow
=
false
},
1000
);
},
1000
);
}
}
...
@@ -860,7 +885,7 @@ function snInputSubmit(){
...
@@ -860,7 +885,7 @@ function snInputSubmit(){
$
(
'#snErrorTs'
).
addClass
(
'tsRed'
)
$
(
'#snErrorTs'
).
addClass
(
'tsRed'
)
$
(
"#snValue"
).
addClass
(
'red'
)
$
(
"#snValue"
).
addClass
(
'red'
)
}
else
{
}
else
{
util
.
toast
(
'
网络异常,请重新提交
'
)
util
.
toast
(
'
系统处理中,请稍后
'
)
}
}
})
})
}
}
...
@@ -1019,25 +1044,13 @@ $("#hideGongfuAlert").click(()=>{
...
@@ -1019,25 +1044,13 @@ $("#hideGongfuAlert").click(()=>{
})
})
$
(
"#hidesnExampleAlert"
).
click
(()
=>
{
$
(
"#hidesnExampleAlert"
).
click
(()
=>
{
sessionStorage
.
setItem
(
getSnInfo
().
cacheId
,
'true'
)
sessionStorage
.
setItem
(
getSnInfo
().
cacheId
,
'true'
)
if
(
stepId
.
startsWith
(
'jdh'
)){
jdhEaxmpleShow
=
true
}
if
(
stepId
.
startsWith
(
'cgm'
)){
cgmExampleShow
=
true
}
if
(
stepId
.
startsWith
(
'zgm'
)){
zgmExampleShow
=
true
}
$
(
"#snExampleAlert"
).
hide
()
$
(
"#snExampleAlert"
).
hide
()
})
})
$
(
"#hideJdhSnSbErrorAlert"
).
click
(()
=>
{
$
(
"#hideSnErrorAlert"
).
click
(()
=>
{
$
(
"#jdhSnSbErrorAlert"
).
hide
()
$
(
"#snErrorAlert"
).
hide
()
jdhAndCgmClickHide
=
true
snErrorAlertClickHide
=
true
})
$
(
"#hideCgmSnSbErrorAlert"
).
click
(()
=>
{
$
(
"#cgmSnSbErrorAlert"
).
hide
()
jdhAndCgmClickHide
=
true
})
})
$
(
"#hideNoShootAlert"
).
click
(()
=>
{
$
(
"#hideNoShootAlert"
).
click
(()
=>
{
$
(
"#noShootShowAlert"
).
hide
()
$
(
"#noShootShowAlert"
).
hide
()
...
@@ -1204,11 +1217,6 @@ function ifDark(){
...
@@ -1204,11 +1217,6 @@ function ifDark(){
let
avg
=
sum
/
(
data
.
length
/
4
);
let
avg
=
sum
/
(
data
.
length
/
4
);
return
avg
<
60
return
avg
<
60
if
(
avg
<
60
)
return
avg
+
'-dark'
;
if
(
avg
>
195
)
return
avg
+
'-bright'
;
return
avg
+
'-normal'
;
}
}
var
linghtStream
var
linghtStream
...
@@ -1270,3 +1278,69 @@ function closeLight(){
...
@@ -1270,3 +1278,69 @@ function closeLight(){
const
script
=
document
.
createElement
(
'script'
);
const
script
=
document
.
createElement
(
'script'
);
script
.
src
=
'js/lang.js?'
+
Date
.
now
();
script
.
src
=
'js/lang.js?'
+
Date
.
now
();
document
.
head
.
appendChild
(
script
);
document
.
head
.
appendChild
(
script
);
var
clientOss
function
queryAliyunToken
(
code
){
util
.
httpRequest
({
url
:
'/getAliyunToken'
,
data
:
{
callId
:
callId
,
applyId
:
applyId
,
voiceCode
:
code
||
stepId
}
}).
then
(
res
=>
{
if
(
res
.
code
==
200
){
accessKeyId
=
res
.
data
.
accessKeyId
accessKeySecret
=
res
.
data
.
accessKeySecret
securityToken
=
res
.
data
.
securityToken
clientOss
=
new
OSS
({
// yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region
:
'oss-cn-shanghai'
,
// 开启V4版本签名。
authorizationV4
:
true
,
// 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
accessKeyId
:
res
.
data
.
accessKeyId
,
accessKeySecret
:
res
.
data
.
accessKeySecret
,
// 从STS服务获取的安全令牌(SecurityToken)。
stsToken
:
res
.
data
.
securityToken
,
// 刷新临时访问凭证的时间间隔,单位为毫秒。
refreshSTSTokenInterval
:
300000
,
// 填写Bucket名称。
bucket
:
'jszj'
});
}
})
}
async
function
queryImgUrl
()
{
try
{
let
fn
=
function
(){
// 获取当前日期和时间
let
now
=
new
Date
();
// 格式化年月日 (YYYYMMDD)
let
year
=
now
.
getFullYear
();
let
month
=
String
(
now
.
getMonth
()
+
1
).
padStart
(
2
,
'0'
);
let
day
=
String
(
now
.
getDate
()).
padStart
(
2
,
'0'
);
let
dateStr
=
`
${
year
}
/
${
month
}
/
${
day
}
`
;
// 获取当前时间毫秒数
let
milliseconds
=
now
.
getTime
();
// 生成8位随机数
let
random8Digit
=
Math
.
floor
(
Math
.
random
()
*
100000000
).
toString
().
padStart
(
8
,
'0'
);
// 组合成最终字符串
return
`
${
dateStr
}
/
${
milliseconds
}
-
${
random8Digit
}
.png`
;
}
let
r1
=
await
clientOss
.
put
(
fn
(),
fileBlob
);
console
.
log
(
'oss图片地址:'
,
r1
.
url
);
return
r1
.
url
}
catch
(
e
)
{
console
.
error
(
'error: %j'
,
e
);
return
''
}
}
Write
Preview
Markdown
is supported
Attach a file
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 post a comment