index.html 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <!DOCTYPE HTML>
  2. <html lang="zh-CN">
  3. <head>
  4. <title>二维码生成工具</title>
  5. <meta charset="UTF-8">
  6. <link rel="shortcut icon" href="../static/img/favicon.ico">
  7. <link rel="stylesheet" href="index.css" />
  8. <script type="text/javascript" src="../static/vendor/evalCore.min.js"></script>
  9. <script type="text/javascript" src="../static/vendor/vue/vue.js"></script>
  10. </head>
  11. <body>
  12. <div class="wrapper" id="pageContainer">
  13. <div class="panel panel-default" style="margin-bottom: 0px;">
  14. <div class="panel-heading">
  15. <h3 class="panel-title">
  16. <span class="title-text-wrapper">
  17. <a href="https://fehelper.com" target="_blank" class="x-a-high">
  18. <img src="../static/img/fe-16.png" alt="fehelper"/> FeHelper</a><span class="title-text-wrapper-text">| {{codeType==='barcode'?'条形码':''}}{{codeType!=='barcode'?'二维码':''}}{{qrEncodeMode? '生成':'解码'}}器</span>
  19. </span>
  20. <span class="x-switch" ref="btnSwitch" @click="trans">切换为{{!qrEncodeMode? ' 二维码生成器 ' : ' 解码/扫码 '}}模式&gt;&gt;</span>
  21. <a class="x-other-tools" @click="openOptionsPage($event)"><i class="icon-plus-circle"></i> 探索更多实用工具 <span class="tool-market-badge">工具市场</span></a>
  22. <span class="x-donate-link" @click="openDonateModal($event)"><a href="#" id="donateLink"><i class="nav-icon">❤</i>&nbsp;打赏鼓励</a></span>
  23. </h3>
  24. </div>
  25. </div>
  26. <div class="panel-body mod-json">
  27. <div v-if="qrEncodeMode">
  28. <div class="qr-layout">
  29. <!-- 左侧:文本输入区域 -->
  30. <div class="qr-left">
  31. <div class="section-title">输入内容</div>
  32. <textarea class="form-control mod-textarea" id="codeSource" ref="codeSource" v-model="textContent" placeholder="在这里填写需要生成二维码的任意内容"></textarea>
  33. </div>
  34. <!-- 中间:操作区域 -->
  35. <div class="qr-center">
  36. <div class="section-title">参数设置</div>
  37. <div class="control-panel">
  38. <div class="control-item">
  39. <label>类型:</label>
  40. <select v-model="codeType" @change="convert()" class="x-select">
  41. <option value="qrcode">二维码</option>
  42. <option value="barcode">条形码</option>
  43. </select>
  44. </div>
  45. <div class="control-item" v-show="codeType==='barcode'">
  46. <label>格式:</label>
  47. <select v-model="barcodeFormat" @change="convert()" class="x-select">
  48. <option value="CODE128">Code 128</option>
  49. <option value="CODE39">Code 39</option>
  50. <option value="EAN13">EAN-13</option>
  51. <option value="EAN8">EAN-8</option>
  52. <option value="UPC">UPC</option>
  53. <option value="ITF14">ITF-14</option>
  54. </select>
  55. </div>
  56. <div class="control-item" v-show="codeType==='qrcode'">
  57. <label>尺寸:</label>
  58. <input name="opt_width" type="text" id="opt_width" v-model="qrSize" size="4" maxlength="4"/>
  59. </div>
  60. <div class="control-item" v-show="codeType==='qrcode'">
  61. <label>颜色:</label>
  62. <input type="text" id="opt_fc" v-model="qrColor" size="10" />
  63. </div>
  64. <div class="control-item" v-show="codeType==='qrcode'">
  65. <div class="radio ui-d-ib x-icons">
  66. 图标:<label><input id="remove_icon" name="qr_icon" type="radio" value="no" v-model="useIcon" @click="convert()">不要</label>
  67. <label><input id="default_icon" name="qr_icon" type="radio" value="default" v-model="useIcon" @click="convert()">默认</label>
  68. <label><input id="upload_icon" name="qr_icon" type="radio" value="custom" v-model="useIcon" @click="$refs.fileBox.click()">上传</label>
  69. </div>
  70. </div>
  71. <div class="control-item">
  72. <button id="confirm_button" class="btn btn-success" @click="convert()">{{codeType==='barcode' ? '生成条形码' : '生成二维码'}}</button>
  73. </div>
  74. </div>
  75. </div>
  76. <!-- 右侧:结果预览区域 -->
  77. <div class="qr-right">
  78. <div class="section-title">
  79. 生成结果
  80. <div class="action-buttons" v-if="showResult">
  81. <button class="btn-action" id="copy_button" @click="copyQR">复制</button>
  82. <button class="btn-action" id="download_button" @click="downloadQR">下载</button>
  83. </div>
  84. </div>
  85. <div id="preview"><svg id="barcodeSvg" style="display:none"></svg></div>
  86. </div>
  87. </div>
  88. </div>
  89. <!-- 二维码解码模式 -->
  90. <div class="qr-decoder-layout" v-if="!qrEncodeMode">
  91. <!-- 左侧:图片上传/预览 -->
  92. <div class="decoder-left">
  93. <div class="section-title">上传或粘贴图片</div>
  94. <div class="upload-panel" ref="panelBox">
  95. <img id="decodePreview" alt="" :src="previewSrc" v-show="!!previewSrc.length">
  96. <div class="upload-instructions" v-show="!previewSrc.length">
  97. <a id="upload" href="#" ref="uploadBox" @click="$refs.fileBox.click()">选择图片</a>
  98. <span class="drag-drop-text">或拖拽图片到这里</span>
  99. </div>
  100. </div>
  101. <div class="decoder-tips tips">
  102. 1、支持<i>屏幕截图</i>后直接在此处粘贴进行解码<br/>
  103. 2、支持<i>复制文件、复制图片</i>在线地址在此处直接粘贴进行解码
  104. </div>
  105. </div>
  106. <!-- 右侧:解码结果 -->
  107. <div class="decoder-right">
  108. <div class="section-title">解码结果</div>
  109. <textarea id="decodeResult" title="点击自动选择" placeholder="解码结果将显示在这里..." readonly ref="resultBox" @click="select()" v-model="resultContent" class="form-control mod-textarea"></textarea>
  110. </div>
  111. </div>
  112. </div>
  113. <div class="x-logo">
  114. <img src="../static/img/fe-48.png" alt="#" id="logo_default" ref="logoDefault"/>
  115. <img src="../static/img/fe-48.png" alt="#" id="logo" ref="logoCustom"/>
  116. <form action="#">
  117. <input type="file" id="file" ref="fileBox" accept=".jpg,.jpeg,.gif,.png,.bmp" @change="fileChanged($event)">
  118. </form>
  119. </div>
  120. </div>
  121. <script type="text/javascript" src="../static/vendor/jquery/jquery-3.3.1.min.js"></script>
  122. <script type="text/javascript" src="../static/vendor/jquery/jquery.colorpicker.js"></script>
  123. <script type="text/javascript" src="../static/vendor/jquery/jquery.qrcode.min.js"></script>
  124. <script type="text/javascript" src="../static/vendor/zxing/zxing.min.js"></script>
  125. <script type="text/javascript" src="../static/vendor/jsbarcode/JsBarcode.all.min.js"></script>
  126. <script type="text/javascript" src="index.js"></script>
  127. </body>
  128. </html>