<template>
|
|
<view class="page">
|
|
<navbar title="编辑模板" leftClick @leftClick="$utils.navigateBack" />
|
|
|
|
<view style="padding: 25rpx;background-color: #fff;">
|
|
<canvas-drag ref="canvasRef"
|
|
id="canvas-drag" :graph="graph"
|
|
:width="width" :height="height"
|
|
@onDrawArrChange="onDrawArrChange"
|
|
enableUndo="true"></canvas-drag>
|
|
</view>
|
|
|
|
|
|
<view class="btn-list">
|
|
<view class="uni-color-btn" @tap="onAddImage">新建签名</view>
|
|
<view class="uni-color-btn" @tap="onChangeBgImage">导入合同</view>
|
|
<view class="uni-color-btn" @tap="onUndo">后退</view>
|
|
<view class="uni-color-btn" @tap="onClearCanvas">清空</view>
|
|
<view class="uni-color-btn" @tap="submit">保存</view>
|
|
<!-- <view class="uni-color-btn" @tap="onExportJSON">导出模板</view> -->
|
|
<!-- <view class="uni-color-btn" @tap="onAddText">添加文字</view> -->
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import canvasDrag from "@/components/canvas-drag/index";
|
|
import setData from "@/components/canvas-drag/setData.js";
|
|
export default {
|
|
components: {
|
|
canvasDrag
|
|
},
|
|
mixins : [setData],
|
|
data() {
|
|
return {
|
|
height: 750,
|
|
width: 700,
|
|
drawArr : [],
|
|
}
|
|
},
|
|
onLoad() {
|
|
|
|
},
|
|
mounted() {},
|
|
methods: {
|
|
// 签名位置更新时
|
|
onDrawArrChange(arr){
|
|
this.drawArr = arr
|
|
},
|
|
/**
|
|
* 添加签名位置
|
|
*/
|
|
onAddImage() {
|
|
wx.chooseImage({
|
|
success: res => {
|
|
this.setData({
|
|
graph: {
|
|
w: 100,
|
|
h: 50,
|
|
type: 'image',
|
|
url: res.tempFilePaths[0]
|
|
}
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
/**
|
|
* 导入合同
|
|
*/
|
|
onChangeBgImage() {
|
|
let self = this
|
|
wx.chooseImage({
|
|
success: res => {
|
|
uni.getImageInfo({
|
|
src: res.tempFilePaths[0],
|
|
success: image => {
|
|
console.log(image);
|
|
|
|
let allwh = image.height + image.width
|
|
let imgw = (image.width / allwh).toFixed(2)
|
|
let imgh = (image.height / allwh).toFixed(2)
|
|
|
|
self.height = imgh * Math.ceil(this.width / imgw)
|
|
|
|
self.$nextTick(() => {
|
|
this.$refs.canvasRef.changeBgImage(image.path)
|
|
})
|
|
}
|
|
})
|
|
}
|
|
});
|
|
},
|
|
// 后退
|
|
onUndo(event) {
|
|
this.$refs.canvasRef.undo();
|
|
},
|
|
/**
|
|
* 导出当前画布为模板
|
|
*/
|
|
onExportJSON() {
|
|
this.$refs.canvasRef.exportFun().then(imgArr => {
|
|
console.log(imgArr);
|
|
uni.previewImage({
|
|
urls: [imgArr],
|
|
current: 0,
|
|
})
|
|
}).catch(e => {
|
|
console.error(e);
|
|
});
|
|
},
|
|
/**
|
|
* 添加文本
|
|
*/
|
|
onAddText() {
|
|
this.setData({
|
|
graph: {
|
|
type: 'text',
|
|
text: 'helloworld'
|
|
}
|
|
});
|
|
},
|
|
|
|
onClearCanvas(event) {
|
|
let _this = this;
|
|
_this.setData({
|
|
canvasBg: null
|
|
});
|
|
this.$refs.canvasRef.clearCanvas();
|
|
},
|
|
submit() {
|
|
uni.setStorageSync('drawArrJson', JSON.stringify(this.drawArr))
|
|
uni.navigateBack(-1)
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.page {
|
|
padding-bottom: 100rpx;
|
|
.btn-list {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
padding: 20rpx;
|
|
gap: 20rpx;
|
|
.uni-color-btn {
|
|
margin: 0;
|
|
border-radius: 10rpx;
|
|
}
|
|
}
|
|
}
|
|
</style>
|