|
|
- <template>
- <view class="page">
- <navbar title="电子合同"
- leftClick
- @leftClick="$utils.navigateBack"/>
-
-
- <view style="padding: 25rpx;">
- <canvas-drag ref="canvasRef"
- id="canvas-drag"
- :graph="graph"
- :width="width"
- :height="height"
- bgColor="#fff"
- enableUndo="true"></canvas-drag>
-
- <!-- <canvas
- canvas-id="mycanvas"
- class="mycanvas"
- v-if="!imagePath"
- :style="{height : height + 'rpx', width : width + 'rpx'}"
- disable-scroll="true"></canvas> -->
-
- <image :src="imagePath"
- v-if="imagePath"
- style="width: 700rpx;"
- mode="widthFix"></image>
- </view>
-
- <!-- <view class="uni-color-btn"
- @click.stop="onChangeBgImage">
- 导入合同
- </view> -->
-
- <view class="uni-color-btn"
- @click.stop="toSignature">
- 签名
- </view>
-
- <!-- <view class="uni-color-btn"
- @click.stop="onExportJSON">
- 保存合同
- </view> -->
-
- <view class="uni-color-btn"
- @click.stop="showPDF">
- 查看完整内容
- </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 {
- id : 0,
- detail : {},
- height: 750,
- width: 700,
- ctx : null,
- imagePath : 0,
- }
- },
- onLoad({id}) {
- this.id = id
- this.getDetail()
- },
- onShow() {
- this.initCanvas()
- this.syntheticSignature()
- },
- methods: {
- // 获取合同内容
- getDetail(){
- let data = {
- contractId: this.id
- }
- if (uni.getStorageSync('token')) {
- // data.token = uni.getStorageSync('token')
- }
- this.$api('queryContracById', data, res => {
- if (res.code == 200) {
- this.detail = res.result
- }
- })
- },
- showPDF(){
- uni.downloadFile({
- url : this.detail.contract,
- success : res => {
- uni.openDocument({
- filePath: res.tempFilePath,
- })
- }
- })
- },
-
- initCanvas() {
- this.ctx = uni.createCanvasContext("mycanvas")
- },
-
- // 去签名
- toSignature(){
- console.log('toSignature');
- uni.showModal({
- title: '签署前请熟知合同完整内容!',
- cancelText: '已知晓',
- confirmText: '查看完整内容',
- success : e => {
- if(e.confirm){
- this.showPDF()
- }else{
- uni.navigateTo({
- url: `/pages_order/contract/electronicSignature?id=${this.id}&signature=1`
- })
- }
- }
- })
- },
-
- // 导出合同
- onExportJSON() {
- uni.showLoading({
- title: '保存中...'
- })
- this.$refs.canvasRef.exportFun().then(image => {
- console.log(image);
- uni.hideLoading()
- // this.imagePath = image
- uni.previewImage({
- urls: [image],
- current: 0,
- })
- }).catch(e => {
- uni.hideLoading()
- console.error(e);
- });
- },
-
- /**
- * 导入合同
- */
- onChangeBgImage() {
- let self = this
- wx.chooseImage({
- success: res => {
- uni.getImageInfo({
- src: res.tempFilePaths[0],
- success: 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)
-
- // this.width = image.width
- // this.height = image.height
-
- self.$nextTick(() => {
- this.$refs.canvasRef.changeBgImage(image.path)
- // this.ctx.drawImage(image.path, 0, 0, this.ctx.width, this.ctx.height)
- // this.ctx.stroke();
- // this.ctx.draw(false, () => {
- // wx.canvasToTempFilePath({
- // canvasId: 'mycanvas',
- // success: res => {
- // // this.imagePath = res.tempFilePath
- // uni.previewImage({
- // urls: [res.tempFilePath],
- // current: 0,
- // })
- // },
- // fail: e => {
- // }
- // }, this);
- // });
-
- })
- }
- })
- }
- });
- },
-
- // 合成签名
- syntheticSignature(){
- let url = uni.getStorageSync('electronicSignature')
- if(!url) return
- uni.removeStorageSync('electronicSignature')
-
- let graph = {}
-
- if(this.role){
- graph = JSON.parse(this.form.bossPosition)
- this.detail.bossImage = url
- this.detail.bossStatus = 1
- }else{
- graph = JSON.parse(this.form.employeePosition)
- this.detail.employeeImage = url
- this.detail.employeeStatus = 1
- }
-
- for(let k in graph){
- graph[k] = this.$utils.screenSystemInfoInt(graph[k]) - 0
- }
-
- this.setData({
- graph: {
- w: graph.w,
- h: graph.h,
- x : graph.x,
- y : graph.y,
- type: 'image',
- url,
- permitSelected : true,
- }
- });
- this.$nextTick(() => {
- this.onExportJSON()
- })
- },
- }
- }
- </script>
-
- <style scoped lang="scss">
- .page{
- .mycanvas{
- background-color: #fff;
- }
- }
- </style>
|