123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <template>
- <div>
- <!-- 电子签名 -->
- <el-card class="qianming-container" body-style="padding:0px">
- <vue-esign ref="esign" :isCrop="isCrop" :width="600" :height="300" :lineWidth="lineWidth" :lineColor="lineColor" :bgColor.sync="bgColor" ></vue-esign>
- <div class="contro-container">
- <el-button type="danger" @click="handleReset">清空画板</el-button>
- <el-button type="primary" @click="handleGenerate">生成图片</el-button>
- </div>
- </el-card>
- </div>
- </template>
- <script>
- // import client from 'common/js/ossClient.js'
- export default {
- name:'Qianming',
- data(){
- return {
- lineWidth: 6,
- lineColor: '#000000',
- bgColor: '',
- resultImg: '',
- isCrop: false
- }
- },
- methods:{
- //清空画板..
- handleReset () {
- this.$refs.esign.reset();
- this.resultImg =''
- },
- //生成签名图片..
- handleGenerate () {
- this.$refs.esign.generate().then(res => {
- let randnum = Math.random() * 10000000000000
- randnum = Math.floor(randnum)
- let fileName = "dianziqianming/" + randnum + '.png'
- let file = this.dataURLtoFile(res,fileName)
- client.put(fileName, file).then(res=>{
- if(res.url){
- this.resultImg = res.url
- }else{
- this.$message.error('文件上传失败')
- }
- }).catch(err=>{})
- }).catch(err => {
- this.$message.error('请签名之后提交!')
- })
- },
- //将base64转换为文件..
- dataURLtoFile(dataurl, filename) {
- var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
- bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
- while(n--){
- u8arr[n] = bstr.charCodeAt(n);
- }
- return new File([u8arr], filename, {type:mime});
- }
- }
- }
- </script>
- <style scoped>
- button{
- height:40px;
- }
- .show-img{
- width:400px;
- height:200px;
- border:1px solid #123456;
- }
- .show-info{
- width:400px;
- height:200px;
- font-size:24px;
- display:flex;
- align-items:center;
- justify-content:center;
- }
- .contro-container{
- width:600px;
- height:50px;
- display:flex;
- flex-direction:row;
- align-items:center;
- justify-content:space-around;
- background-color:#D3D3D3;
- position:absolute;
- bottom:0px;
- }
- .qianming-container{
- width:600px;
- height:350px;
- margin:20px auto;
- position:relative;
- }
- .text {
- font-size: 14px;
- }
- .item {
- margin-bottom: 18px;
- }
- .clearfix:before,
- .clearfix:after {
- display: table;
- content: "";
- }
- .clearfix:after {
- clear: both
- }
- .box-card {
- width: 95%;
- margin-left:2.5%;
- margin-top:20px;
- }
- </style>
|