netcasign.ejs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <% include ./sub_menu.ejs %>
  2. <div class="panel-content">
  3. <div class="panel-title">
  4. <div class="title-main">
  5. <h2>签字管理</h2>
  6. </div>
  7. </div>
  8. <div class="content-wrap">
  9. <div class="c-body">
  10. <div class="sjs-height-0">
  11. <% if (ctx.session.sessionProject.page_show.openNetCaSign) { %>
  12. <nav class="nav nav-tabs m-3" role="tablist">
  13. <a class="nav-item nav-link active" href="/profile/sign/netca">Ukey认证签名</a>
  14. <a class="nav-item nav-link" href="/profile/sign">签字设置</a>
  15. </nav>
  16. <% } %>
  17. <div class="row m-0">
  18. <div class="col-9 my-3">
  19. <% if (!signData) { %>
  20. <div id="set_ukey" class="form-group">
  21. <label>网证通UKey</label>
  22. <div>
  23. <button class="btn btn-sm btn-outline-primary" id="getCert">获取证书信息</button>
  24. <small class="form-text text-danger">请先插入网证通UKey获取证书信息再绑定</small>
  25. <textarea id="DeviceOutputId" readonly class="form-control mt-1 mb-1" rows="3"></textarea>
  26. <input type="hidden" id="name" />
  27. <input type="hidden" id="keyId" />
  28. <button class="btn btn-sm btn-outline-primary" id="bind_btn">绑定</button>
  29. </div>
  30. </div>
  31. <% } %>
  32. <div id="had_ukey" <% if (!signData) { %>style="display: none"<% } %>>
  33. <div class="form-group">
  34. <label>网证通UKey</label>
  35. <div>
  36. <small class="form-text text-secondary">已绑证书信息</small>
  37. <textarea class="form-control mt-1 mb-1" id="had_textarea" readonly rows="3">证书主题:<%- signData ? signData.name : '' %>,keyId:<%- signData ? signData.keyId : '' %></textarea>
  38. <button class="btn btn-sm btn-outline-danger" data-toggle="modal" data-target="#remove-netcasign">解除绑定</button>
  39. </div>
  40. </div>
  41. <!--账号资料-->
  42. <form>
  43. <div class="form-group">
  44. <div class="form-check form-check-inline">
  45. <input class="form-check-input sign-type" type="radio" name="sign" id="sign-type-1" value="1" checked>
  46. <label class="form-check-label" for="sign-type-1">在线手写签名图</label>
  47. </div>
  48. <div class="form-check form-check-inline">
  49. <input class="form-check-input sign-type" type="radio" name="sign" id="sign-type-2" value="2">
  50. <label class="form-check-label" for="sign-type-2">上传签名图</label>
  51. </div>
  52. </div>
  53. <div class="form-group show-upload" style="display: none">
  54. <label>上传签名图</label>
  55. <input type="file" class="form-control-file" id="netcasign-upload">
  56. <small class="form-text text-danger">图片大小为600x300,格式PNG透明背景。</small>
  57. </div>
  58. <div class="form-group show-qrcode">
  59. <label>在线手写签名</label>
  60. <div><img src="/profile/qrCode?from=netcasign" width="150"></div>
  61. <small class="form-text text-danger">微信扫码使用在线手写程序</small>
  62. </div>
  63. <button id="remove-netcasign-sign-btn" type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#remove-netcasign-sign" <% if (!signData || !signData.sign_base64) { %>style="display: none" <% } %>>移除签名</button>
  64. <div class="form-group">
  65. <label>签名图预览</label>
  66. <div>
  67. <div class="position-relative">
  68. <img src="/public/images/baobiao3.png">
  69. <div class="position-absolute fixed-top" id="netcasign-show" style="left:290px;top:320px">
  70. <% if (signData && signData.sign_base64) { %>
  71. <img src="data:image/png;base64,<%- signData.sign_base64 %>" width="90">
  72. <% } %>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. </form>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. <script type="text/javascript">
  86. const csrf = '<%= ctx.csrf %>';
  87. </script>
  88. <script type="text/javascript" src="/public/js/profile.js"></script>
  89. <script src="/public/netcasign/js/base64.min.js"></script>
  90. <script src="/public/netcasign/js/netcawebsocket.js"></script>
  91. <script src="/public/netcasign/js/appPackage.js"></script>
  92. <script>
  93. $(function () {
  94. $('#getCert').click(function () {
  95. getCertList();
  96. });
  97. $('#bind_btn').click(function () {
  98. if($('#DeviceOutputId').val() == '') {
  99. toastr.error('请获取证书信息再绑定');
  100. return;
  101. }
  102. postData('/profile/sign/save', {type: 'bind', updateData: {name: $('#name').val(), keyId: $('#keyId').val()}}, function (result) {
  103. toastr.success('绑定成功');
  104. $('#set_ukey').hide();
  105. $('#had_ukey').show();
  106. $('#had_textarea').val('证书主题:'+ result.name +',keyId:' + result.keyId);
  107. })
  108. });
  109. $('#unbind_btn').click(function () {
  110. postData('/profile/sign/save', {type: 'unbind'}, function (result) {
  111. toastr.success('解绑成功');
  112. window.location.href = '/profile/sign/netca';
  113. })
  114. });
  115. $('#delsign_btn').click(function () {
  116. postData('/profile/sign/save', {type: 'delsign'}, function (result) {
  117. toastr.success('签名图已删除成功');
  118. $('#remove-netcasign-sign-btn').hide();
  119. $('#netcasign-show').html('');
  120. })
  121. });
  122. // 上传签名
  123. $('#netcasign-upload').change(function () {
  124. const file = this.files[0];
  125. const ext = file.name.toLowerCase().split('.').splice(-1)[0];
  126. const imgStr = /(png|PNG)$/;
  127. if (!imgStr.test(ext)) {
  128. toast('请上传正确的图片格式文件','error');
  129. return
  130. }
  131. if ($(this).val()) {
  132. const reader = new FileReader();
  133. reader.onload = function (evt) {
  134. postData('/profile/sign/save', {type: 'savesign', sign_base64: evt.target.result.split(',')[1]}, function (result) {
  135. toastr.success('签名图设置成功');
  136. const html = '<img src="'+ evt.target.result +'" width="90">';
  137. $('#netcasign-show').html(html);
  138. $('#netcasign-upload').val('');
  139. $('#remove-netcasign-sign-btn').show();
  140. })
  141. };
  142. reader.readAsDataURL(file);
  143. }
  144. })
  145. })
  146. </script>