netcasign.ejs 8.2 KB

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