Blame view

src/views/workflow/components/dialog/zsyl.vue 9.36 KB
1
<!--
yuanbo committed
2
 * @Description:
3
 * @Autor: renchao
4
 * @LastEditTime: 2023-07-14 16:05:30
5
-->
liangyifan committed
6
<template>
7
  <div class="from-clues loadingtext" v-Loading="loading" element-loading-text="拼命加载中..." style="height:720px;text-align: center;">
任超 committed
8
    <!-- 表单部分 -->
9
    <el-tabs v-model="activeName" @tab-click="handleClick" v-if="headTabBdcqz.length >1">
10 11 12
      <el-tab-pane :label="item.qlr + (item.bdcqzh !== null ? '(' + item.bdcqzh + ')' : '')" :name="item.bsmBdcqz"
        v-for="(item, index) in headTabBdcqz" :key="index">
      </el-tab-pane>
任超 committed
13
    </el-tabs>
14
    <el-empty description="暂无数据" v-if="headTabBdcqz.length == 0 && noData"></el-empty>
15 16
    <canvas ref="zs" width="1000" v-show="headTabBdcqz[0]&&headTabBdcqz[0].bdcqzlx==1" height="700"></canvas>
    <canvas ref="zm" width="1180" v-show="headTabBdcqz[0]&&headTabBdcqz[0].bdcqzlx!=1" height="780"></canvas>
任超 committed
17
  </div>
liangyifan committed
18 19 20
</template>

<script>
21
  import { datas } from "../../javascript/zsyl.js";
22
  import { getSlsqBdcqzList } from "@/api/bdcqz.js"
23 24 25 26 27 28 29
  export default {
    name: "zsyl",
    props: {
      formData: {
        type: Object,
        default: {}
      }
蔡俊立 committed
30
    },
31 32
    data () {
      return {
33
        noData: false,
34
        imgSrc: require('@/image/bdcqz/bdcqzs2.jpg'),
35
        bdczmSrc: require('@/image/bdcqz/bdczm.jpg'),
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
        loading: false,
        //印刷序列号集合
        ysxlh: [],
        //列名称对象
        columns: [],
        //选择的不动产权证文件
        bdcqz: '',
        //证书打开类型 是否需要展示打印按钮
        isToPrint: false,
        //tab切换栏数组
        headTabBdcqz: [],
        //tab选择绑定值
        activeName: '',
        //证书图片预览
        previewImage: '',
        ruleForm: {
          bsmBdcqz: '',
          szmc: '不动产权证书',
54
          bsmBdcqz: '',
55 56 57 58
          szzh: '',
          ysxlh: '',
        },
      }
59
    },
60 61 62 63 64 65 66 67 68
    mounted () {
      this.columns = datas.columns();
      if (this.formData.bdcqz) {
        //从缮证进入
        this.bdcqz = this.formData.bdcqz
      } else {
        //从按钮进入
        this.getHeadTabBdcqz();
      }
69
    },
70 71
    methods: {
      //获取证书内容
yuanbo committed
72 73 74 75 76
      /**
       * @description: 获取证书内容
       * @param {*} code
       * @author: renchao
       */
77 78 79 80 81
      getRowValue (code) {
        var value = this.bdcqz[code];
        return value;
      },
      //获取受理申请下全部不动产权证
yuanbo committed
82 83 84 85
      /**
       * @description: 获取受理申请下全部不动产权证
       * @author: renchao
       */
86 87 88 89
      getHeadTabBdcqz () {
        this.loading = true
        getSlsqBdcqzList({ bsmSlsq: this.formData.bsmSlsq }).then(res => {
          if (res.code == 200) {
90
            this.noData = true
91
            if (res.result && res.result.length > 0) {
92
              this.activeName = res.result[0].bsmBdcqz
93 94
              this.bdcqz = res.result[0]
              this.headTabBdcqz = res.result
95
              if (res.result[0].bdcqzlx == 1) {
96 97 98 99
                this.drawTextOnImage()
              } else {
                this.drawTextzmImage()
              }
100 101
            }
          }
102
          this.loading = false
103 104 105
        })
      },
      //tab表头切换方法
yuanbo committed
106 107 108 109 110
      /**
       * @description: tab表头切换方法
       * @param {*} e
       * @author: renchao
       */
111 112
      handleClick (e) {
        this.bdcqz = this.headTabBdcqz[e.index - 0]
113
        this.activeName = this.headTabBdcqz.bsmBdcqz
114
        if (this.bdcqz.bdcqzlx == 1) {
115 116 117 118
          this.drawTextOnImage()
        } else {
          this.drawTextzmImage()
        }
119
      },
120
      // 不动产证书
yuanbo committed
121 122 123 124
      /**
       * @description: 不动产证书
       * @author: renchao
       */
125
      drawTextOnImage () {
126
        const canvas = this.$refs.zs;
127 128 129 130
        const context = canvas.getContext('2d');
        const image = new Image();
        image.onload = () => {
          context.drawImage(image, 0, 0);
131
          context.font = '18px 楷体';
132 133 134 135 136 137 138 139 140 141 142 143 144 145
          context.fillStyle = '#000000';
          context.fillText(this.bdcqz.sjjc ? this.bdcqz.sjjc : '', 60, 56);
          context.fillText(this.bdcqz.djnd ? this.bdcqz.djnd : '', 113, 56);
          context.fillText(this.bdcqz.sxqc ? this.bdcqz.sxqc : '', 180, 56);
          context.fillText(this.bdcqz.sxh ? this.bdcqz.sxh : '', 370, 56);
          context.fillText(this.bdcqz.qlr ? this.bdcqz.qlr : '', 138, 97);
          context.fillText(this.bdcqz.gyqk ? this.bdcqz.gyqk : '', 138, 138);
          context.fillText(this.bdcqz.zl ? this.bdcqz.zl : '', 138, 180);
          context.fillText(this.bdcqz.bdcdyh ? this.bdcqz.bdcdyh : '', 138, 223);
          context.fillText(this.bdcqz.qllx ? this.bdcqz.qllx : '', 138, 263);
          context.fillText(this.bdcqz.qlxz ? this.bdcqz.qlxz : '', 138, 303);
          context.fillText(this.bdcqz.yt ? this.bdcqz.yt : '', 138, 346);
          context.fillText(this.bdcqz.mj ? this.bdcqz.mj : '', 138, 386);
          context.fillText(this.bdcqz.syqx ? this.bdcqz.syqx : '', 138, 429);
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
          // qlqtzk
          const maxWidth = 280; // 最大宽度限制
          let lines = this.bdcqz.qlqtzk ? this.bdcqz.qlqtzk.split('\n') : [];
          lines.forEach((line, index) => {
            const y = 469 + (index * 37); // 每行文本的垂直位置
            let currentLine = '';
            let arr = [];
            for (let word of line) {
              const testLine = currentLine + word;
              const lineWidth = context.measureText(testLine).width;
              if (lineWidth <= maxWidth) {
                currentLine = testLine;
              } else {
                arr.push(currentLine);
                currentLine = word;
              }
            }
            arr.push(currentLine);
            arr.forEach((line, index) => {
              context.fillText(line, 138, y + (index * 20)); // 调整行高
            })
          })
168 169
          context.fillText(this.bdcqz.fj ? this.bdcqz.fj : '', 580, 100);
        }
170 171 172
        image.src = this.imgSrc
      },
      // 不动产证明
yuanbo committed
173 174 175 176
      /**
       * @description: 不动产证明
       * @author: renchao
       */
177 178 179 180 181 182 183 184
      drawTextzmImage () {
        const canvas = this.$refs.zm;
        const context = canvas.getContext('2d');
        const image = new Image();
        image.onload = () => {
          context.drawImage(image, 0, 0);
          context.font = '18px 楷体';
          context.fillStyle = '#000000';
185 186 187
          // ysxlh
          context.fillText(this.bdcqz.ysxlh ? this.bdcqz.ysxlh : '', 280, 712);
          // djsj
188 189 190 191 192 193
          if (this.bdcqz.djsj) {
            let djsjList = this.bdcqz.djsj.split(' ')[0].split('/')
            context.fillText(djsjList[0] ? djsjList[0] : '', 327, 580);
            context.fillText(djsjList[1] ? djsjList[1] : '', 393, 580);
            context.fillText(djsjList[2] ? djsjList[2] : '', 443, 580);
          }
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
          context.fillText(this.bdcqz.sjjc ? this.bdcqz.sjjc : '', 620, 125);
          context.fillText(this.bdcqz.djnd ? this.bdcqz.djnd : '', 665, 125);
          context.fillText(this.bdcqz.sxqc ? this.bdcqz.sxqc : '', 750, 125);
          context.fillText(this.bdcqz.sxh ? this.bdcqz.sxh : '', 960, 123);
          context.fillText(this.bdcqz.zmqlhsx ? this.bdcqz.zmqlhsx : '', 775, 180);
          context.fillText(this.bdcqz.qlr ? this.bdcqz.qlr : '', 775, 228);
          // 义务人
          context.fillText(this.bdcqz.ywr ? this.bdcqz.ywr : '', 775, 275);
          context.fillText(this.bdcqz.zl ? this.bdcqz.zl : '', 775, 325);
          // bdcdyh
          context.fillText(this.bdcqz.bdcdyh ? this.bdcqz.bdcdyh : '', 775, 373);
          // qlqtzk
          const maxWidth = 280; // 最大宽度限制
          let lines = this.bdcqz.qlqtzk ? this.bdcqz.qlqtzk.split('\n') : [];
          lines.forEach((line, index) => {
            const y = 415 + (index * 37); // 每行文本的垂直位置
            let currentLine = '';
            let arr = [];
            for (let word of line) {
              const testLine = currentLine + word;
              const lineWidth = context.measureText(testLine).width;
              if (lineWidth <= maxWidth) {
                currentLine = testLine;
              } else {
                arr.push(currentLine);
                currentLine = word;
              }
            }
            arr.push(currentLine);
            arr.forEach((line, index) => {
              context.fillText(line, 775, y + (index * 20)); // 调整行高
            });
          });
renchao@pashanhoo.com committed
227
          // fj
228
          context.fillText(this.bdcqz.fj ? this.bdcqz.fj : '', 775, 600);
229
        };
renchao@pashanhoo.com committed
230

231
        image.src = this.bdczmSrc;
232
      }
233
    }
liangyifan committed
234 235 236
  }
</script>
<style scoped lang="scss">
237
  @import "~@/styles/mixin.scss";
任超 committed
238

239 240 241 242 243
  .imgClass {
    display: inline-block;
    height: auto;
    max-width: 100%;
  }
任超 committed
244

245 246 247
  .middle_padding {
    padding-bottom: 10px;
  }
任超 committed
248

249 250 251
  .zsyl-button {
    text-align: center;
    margin-top: 20px;
任超 committed
252

253 254 255 256
    .operation_button {
      width: 100px;
      border: 1px solid rgb(0, 121, 254);
    }
任超 committed
257

258 259 260 261
    .dy-button {
      color: white;
      background-color: rgb(0, 121, 254);
    }
蔡俊立 committed
262
  }
任超 committed
263

264 265 266
  .table-column {
    border-spacing: 1px;
    width: 100%;
任超 committed
267

268 269 270 271 272 273 274 275
    tr td {
      border: 1px solid #ccc;
      text-align: center;
      height: 40px;
      padding: 4px;
      font-size: 13px;
      background: rgb(251, 249, 229);
    }
任超 committed
276 277
  }

278 279 280 281 282 283
  .zsyl-title {
    background: #fafbe5;
    text-align: center;
    padding: 5px 0px;
    font-size: 20px;
  }
蔡俊立 committed
284

285 286 287 288 289 290
  .no-data {
    font-size: 18px;
    display: flex;
    text-align: center;
    justify-content: center;
  }
liangyifan committed
291
</style>