Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
synergy-components
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
community
synergy-components
Commits
f6cd1205
Commit
f6cd1205
authored
Dec 25, 2025
by
Samir Sadyhov
🤔
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
добавлены либы генерации qr кода и подписания через egov
parent
15ed4996
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
790 additions
and
0 deletions
+790
-0
constructor/library/QRCode.js
constructor/library/QRCode.js
+614
-0
constructor/library/generateQRCodeEgov.js
constructor/library/generateQRCodeEgov.js
+176
-0
No files found.
constructor/library/QRCode.js
0 → 100644
View file @
f6cd1205
This diff is collapsed.
Click to expand it.
constructor/library/generateQRCodeEgov.js
0 → 100644
View file @
f6cd1205
//константы для работы подписания через egov mobile
const
SERVER_SIGN_EGOV
=
"
https://mobile-sign.arta.pro
"
;
const
ORG_ID
=
"
f9918571-508f-46cc-9cea-6ed1a1af30b4
"
;
const
getDataForSign
=
async
documentID
=>
{
return
new
Promise
(
async
resolve
=>
{
try
{
const
{
login
,
password
}
=
Cons
.
creds
;
const
url
=
`../Synergy/rest/api/data-for-sign?documentID=
${
documentID
}
`
;
const
headers
=
new
Headers
();
headers
.
append
(
"
Authorization
"
,
"
Basic
"
+
btoa
(
unescape
(
encodeURIComponent
(
`
${
login
}
:
${
password
}
`
))));
headers
.
append
(
"
Content-Type
"
,
"
application/json; charset=utf-8
"
);
const
response
=
await
fetch
(
url
,
{
method
:
'
POST
'
,
headers
});
resolve
(
response
.
json
());
}
catch
(
err
)
{
console
.
log
(
`ERROR [ getDataForSign ]:
${
err
.
message
}
`
);
resolve
({
errorCode
:
666
,
errorMessage
:
err
.
message
});
}
});
}
const
generateOrgToken
=
async
()
=>
{
return
new
Promise
(
async
resolve
=>
{
try
{
const
url
=
`
${
SERVER_SIGN_EGOV
}
/auth/generate-token`
;
const
headers
=
new
Headers
();
headers
.
append
(
"
Authorization
"
,
"
Basic
"
+
btoa
(
unescape
(
encodeURIComponent
(
`1:1`
))));
headers
.
append
(
"
Content-Type
"
,
"
application/json; charset=utf-8
"
);
const
body
=
JSON
.
stringify
({
"
organizationID
"
:
ORG_ID
});
const
response
=
await
fetch
(
url
,
{
method
:
'
POST
'
,
headers
,
body
});
resolve
(
response
.
json
());
}
catch
(
err
)
{
console
.
log
(
`ERROR [ generateOrgToken ]:
${
err
.
message
}
`
);
resolve
({
errorCode
:
666
,
errorMessage
:
err
.
message
});
}
});
}
const
documentUpload
=
async
(
formdata
,
orgToken
)
=>
{
return
new
Promise
(
async
resolve
=>
{
try
{
const
url
=
`
${
SERVER_SIGN_EGOV
}
/documents/upload`
;
const
headers
=
new
Headers
();
headers
.
append
(
"
Authorization
"
,
`Bearer
${
orgToken
}
`
);
const
response
=
await
fetch
(
url
,
{
method
:
'
POST
'
,
headers
,
body
:
formdata
});
resolve
(
response
.
json
());
}
catch
(
err
)
{
console
.
log
(
`ERROR [ documentUpload ]:
${
err
.
message
}
`
);
resolve
({
errorCode
:
666
,
errorMessage
:
err
.
message
});
}
});
}
const
getDocumentInfo
=
async
documentID
=>
{
return
new
Promise
(
async
resolve
=>
{
rest
.
synergyGet
(
`api/docflow/doc/document_info?documentID=
${
documentID
}
&locale=
${
AS
.
OPTIONS
.
locale
}
`
,
resolve
,
err
=>
{
console
.
log
(
`ERROR [ getDocumentInfo ]:
${
JSON
.
stringify
(
err
)}
`
);
resolve
(
null
);
});
});
}
const
getPrintFilePDF
=
async
dataUUID
=>
{
return
new
Promise
(
async
resolve
=>
{
try
{
const
{
login
,
password
}
=
Cons
.
creds
;
const
url
=
`../Synergy/rest/api/asforms/data/print`
;
const
headers
=
new
Headers
();
headers
.
append
(
"
Authorization
"
,
"
Basic
"
+
btoa
(
unescape
(
encodeURIComponent
(
`
${
login
}
:
${
password
}
`
))));
headers
.
append
(
"
Content-Type
"
,
"
application/json
"
);
headers
.
append
(
"
Content-disposition
"
,
"
attachment; filename=printFile.pdf
"
);
const
response
=
await
fetch
(
url
,
{
method
:
'
POST
'
,
headers
,
body
:
JSON
.
stringify
({
dataUUID
,
format
:
'
PDF
'
})
});
resolve
(
response
.
blob
());
}
catch
(
err
)
{
console
.
log
(
`ERROR [ getPrintFilePDF ]:
${
err
.
message
}
`
);
resolve
(
null
);
}
});
}
const
openQRCodeDialog
=
(
text
,
succesHandler
)
=>
{
const
contaienr
=
$
(
'
<div>
'
,
{
style
:
'
display: flex; justify-content: center; align-items: center;
'
});
const
qr
=
$
(
'
<div>
'
);
new
QRCode
(
qr
[
0
],
{
text
,
width
:
300
,
height
:
300
,
colorDark
:
"
#485156
"
,
colorLight
:
"
transparent
"
,
correctLevel
:
QRCode
.
CorrectLevel
.
H
});
contaienr
.
append
(
qr
);
const
dialog
=
UTILS
.
getSmallModalDialog
(
i18n
.
tr
(
'
QR-код для подписания
'
),
contaienr
);
UIkit
.
modal
(
dialog
).
show
();
dialog
.
on
(
'
hidden
'
,
()
=>
{
dialog
.
remove
();
if
(
succesHandler
&&
typeof
succesHandler
===
'
function
'
)
succesHandler
();
});
}
/*
@worktype – тип подписания:
sign – вызывает API /rest/api/docflow/sign
finish – вызывает API /rest/api/workflow/finish_process
*/
this
.
generateQRCodeEgov
=
async
(
param
,
succesHandler
)
=>
{
Cons
.
showLoader
();
try
{
const
{
documentID
,
worktype
,
procInstID
,
signal
,
comment
}
=
param
;
const
dataForSign
=
await
getDataForSign
(
documentID
);
if
(
dataForSign
.
hasOwnProperty
(
'
errorCode
'
)
&&
dataForSign
.
errorCode
!=
0
)
throw
new
Error
(
dataForSign
.
errorMessage
);
const
orgData
=
await
generateOrgToken
();
if
(
orgData
.
hasOwnProperty
(
'
errorCode
'
)
&&
orgData
.
errorCode
!=
0
)
throw
new
Error
(
orgData
.
errorMessage
);
const
{
asfDataID
,
hasPrintable
,
name
}
=
await
getDocumentInfo
(
documentID
);
const
formdata
=
new
FormData
();
formdata
.
append
(
"
name
"
,
name
);
formdata
.
append
(
"
description
"
,
name
);
formdata
.
append
(
"
base64
"
,
dataForSign
.
rawdata
);
formdata
.
append
(
"
organisationID
"
,
ORG_ID
);
formdata
.
append
(
"
synergyDocID
"
,
documentID
);
formdata
.
append
(
"
synergyAuthToken
"
,
dataForSign
.
token
);
formdata
.
append
(
"
synergyUserID
"
,
AS
.
OPTIONS
.
currentUser
.
userid
);
formdata
.
append
(
"
worktype
"
,
worktype
);
if
(
AS
.
OPTIONS
.
currentUser
.
hasOwnProperty
(
'
iin
'
)
&&
AS
.
OPTIONS
.
currentUser
.
iin
&&
AS
.
OPTIONS
.
currentUser
.
iin
!=
''
)
{
formdata
.
append
(
"
iin
"
,
AS
.
OPTIONS
.
currentUser
.
iin
);
}
if
(
procInstID
)
formdata
.
append
(
"
procInstID
"
,
procInstID
);
if
(
signal
)
formdata
.
append
(
"
signal
"
,
signal
);
if
(
comment
)
formdata
.
append
(
"
comment
"
,
comment
);
if
(
asfDataID
&&
hasPrintable
&&
hasPrintable
==
"
true
"
)
{
const
file
=
await
getPrintFilePDF
(
asfDataID
);
if
(
file
)
{
const
newFile
=
new
File
([
file
],
"
print.pdf
"
,
{
type
:
'
application/pdf
'
});
formdata
.
append
(
"
file
"
,
newFile
);
}
}
const
resultUpload
=
await
documentUpload
(
formdata
,
orgData
.
token
);
if
(
resultUpload
.
hasOwnProperty
(
'
errorCode
'
)
&&
resultUpload
.
errorCode
!=
0
)
throw
new
Error
(
resultUpload
.
errorMessage
);
const
qrCodeText
=
`mobileSign:
${
resultUpload
.
link
}
`
;
openQRCodeDialog
(
qrCodeText
,
succesHandler
);
Cons
.
hideLoader
();
}
catch
(
err
)
{
UIkit
.
notification
.
closeAll
();
Cons
.
hideLoader
();
showMessage
(
err
.
message
,
'
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