| @@ -752,3 +752,56 @@ export function multipleLotsSecondSign(data, id) { | |||||
| data: data | data: data | ||||
| }) | }) | ||||
| } | } | ||||
| // 查询承包合同列表 | |||||
| export function listCbht(query) { | |||||
| return request({ | |||||
| url: '/service/cbht/list', | |||||
| method: 'get', | |||||
| params: query | |||||
| }) | |||||
| } | |||||
| // 承包合同甲方签名 | |||||
| export function cbhtFirstSign(data,id) { | |||||
| return request({ | |||||
| url: '/service/cbht/sign/first/' + id, | |||||
| method: 'post', | |||||
| data: data | |||||
| }) | |||||
| } | |||||
| // 查询承包合同详细 | |||||
| export function getCbht(query, id) { | |||||
| return request({ | |||||
| url: '/service/cbht/get/' + id, | |||||
| method: 'get', | |||||
| params: query | |||||
| }) | |||||
| } | |||||
| // 查询承包方信息 | |||||
| export function getCbf(idcard) { | |||||
| return request({ | |||||
| url: '/home/mobile/cbf/get/' + idcard, | |||||
| method: 'get' | |||||
| }) | |||||
| } | |||||
| // 查询承包合同信息 | |||||
| export function getCbhtList(query) { | |||||
| return request({ | |||||
| url: '/home/mobile/cbht/list', | |||||
| method: 'get', | |||||
| params: query | |||||
| }) | |||||
| } | |||||
| // 承包合同乙方签名 | |||||
| export function cbhtSecondSign(data,id) { | |||||
| return request({ | |||||
| url: '/service/cbht/sign/second/' + id, | |||||
| method: 'post', | |||||
| data: data | |||||
| }) | |||||
| } | |||||
| @@ -3875,6 +3875,33 @@ export const constantRoutes = [ | |||||
| }, | }, | ||||
| component: (resolve) => require(['@/views/sunVillage_info/list_multipleLotsNh_detail'], resolve) | component: (resolve) => require(['@/views/sunVillage_info/list_multipleLotsNh_detail'], resolve) | ||||
| }, | }, | ||||
| { ////阳光村务(新)-- 承包合同网签 | |||||
| path: '/sunVillage_info/list_cbht', | |||||
| name: 'sunVillageInfoListCbht', | |||||
| meta: { | |||||
| title: '承包合同网签', | |||||
| hidden: true, | |||||
| }, | |||||
| component: (resolve) => require(['@/views/sunVillage_info/list_cbht'], resolve) | |||||
| }, | |||||
| { ////阳光村务(新)-- 承包合同详情 | |||||
| path: '/sunVillage_info/list_cbht_detail', | |||||
| name: 'sunVillageInfoListCbhtDetail', | |||||
| meta: { | |||||
| title: '承包合同详情', | |||||
| hidden: true, | |||||
| }, | |||||
| component: (resolve) => require(['@/views/sunVillage_info/list_cbht_detail'], resolve) | |||||
| }, | |||||
| { ////阳光村务(新)-- 承包方网签 | |||||
| path: '/sunVillage_info/list_cbf', | |||||
| name: 'sunVillageInfoListCbf', | |||||
| meta: { | |||||
| title: '承包方网签', | |||||
| hidden: true, | |||||
| }, | |||||
| component: (resolve) => require(['@/views/sunVillage_info/list_cbf'], resolve) | |||||
| }, | |||||
| { ////阳光村务(新)-- 宅基地申请 | { ////阳光村务(新)-- 宅基地申请 | ||||
| path: '/sunVillage_info/homeApplication/applicationList', | path: '/sunVillage_info/homeApplication/applicationList', | ||||
| name: 'sunVillageInfoApplicationList', | name: 'sunVillageInfoApplicationList', | ||||
| @@ -0,0 +1,577 @@ | |||||
| <template> | |||||
| <div class="home_wrapper"> | |||||
| <div | |||||
| class="header_main" | |||||
| :style="`background-image:url(${require(showBtn?'@/assets/images/sunVillage_info/list_head.png':'@/assets/images/sunVillage_info/list_head_red.png')})`" | |||||
| > | |||||
| 承包合同 | |||||
| <div class="return_btn" @click="onClickLeft"></div> | |||||
| <!-- <div class="add_btn" @click="goAdd" v-show="showBtn"></div>--> | |||||
| </div> | |||||
| <div class="list_main"> | |||||
| <van-list | |||||
| v-model="loading" | |||||
| :finished="finished" | |||||
| finished-text="没有更多了" | |||||
| :immediate-check="false" | |||||
| @load="getList" | |||||
| > | |||||
| <!----1--> | |||||
| <van-swipe-cell v-for="item in applicationList" :key="item.id" > | |||||
| <div class="item" @click="goDetail(item.id)"> | |||||
| <div class="info"> | |||||
| <div class="title"> | |||||
| <i class="icon_box" v-if="item.secondSigning==null"></i> | |||||
| <i class="icon_box1" v-if="item.secondSigning!=null"></i> | |||||
| <p class="news_title" :style="{'color': item.secondSigning!=null?'#2bc30c':'#eb1616'}">{{item.cbhtbm}}</p> | |||||
| <p class="tips_mark" :style="{'color': item.secondSigning!=null?'#79bc29':'#f8a83d','background': item.secondSigning!=null?'#e8ffcd':'#ffedcd'}">{{item.signingMode}}</p> | |||||
| <p class="tips_mark2" v-if="item.signingMode === '线上'" :style="{'background': item.secondSigning!=null?'#2bc30c':'#eb1616'}">{{item.signingStatus}}</p> | |||||
| </div> | |||||
| <div class="time"> | |||||
| <p style="color:#eb1616;">{{item.cbfmc}}</p> | |||||
| <p style="color:#eb1616;font-weight: bold;">{{item.htzmjm.toFixed(2)}} 亩</p> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| <template #right> | |||||
| <div class="operation"> | |||||
| <div class="opera_btn" @click="openPopup(item.id)" v-if="item.signingMode == '线上' && item.secondIsSign === '否'"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35"> | |||||
| <p>签名</p> | |||||
| </div> | |||||
| <!-- <div class="opera_btn" v-if="item.signingMode == '线上' && item.attachement != null " @click="$router.push({path:'/sunVillage_info/list_signature_pdf',query: {id:item.id,type:$route.query.type}})"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35"> | |||||
| <p>预览</p> | |||||
| </div> --> | |||||
| <div class="opera_btn"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35"> | |||||
| <p>预览</p> | |||||
| </div> | |||||
| <div class="opera_btn" @click="openPopupFile(item.id)"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | |||||
| <p>附件</p> | |||||
| </div> | |||||
| </div> | |||||
| </template> | |||||
| </van-swipe-cell> | |||||
| </van-list> | |||||
| </div> | |||||
| <van-popup v-model="show" closeable position="right" :style="{ height: '100%' }" > | |||||
| <van-cell-group style="width: 100%;height:100%;overflow: hidden;padding-top: 10px;padding-bottom: 10px;"> | |||||
| <div class="signature-box" @mousedown="canvasTTdown" @touchstart="canvasTTdown"> | |||||
| <vue-esign | |||||
| ref="esign" | |||||
| class="mySign" | |||||
| :width="500" | |||||
| :height="height" | |||||
| :isCrop="signature.isCrop" | |||||
| :lineWidth="signature.lineWidth" | |||||
| :lineColor="signature.lineColor" | |||||
| :bgColor.sync="signature.bgColor" | |||||
| /> | |||||
| </div> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt=""> | |||||
| <div class="signature-footer"> | |||||
| <van-button @click="handleGenerate" type="info" size="small">保存签字</van-button> | |||||
| <van-button @click="handleReset" class="clearBtn" type="info" plain size="small">清空画板</van-button> | |||||
| </div> | |||||
| </van-cell-group> | |||||
| </van-popup> | |||||
| <!-- 附件弹出层 --> | |||||
| <van-popup v-model="showFile" round closeable position="bottom" :style="{ height: '30%' }" > | |||||
| <div style="padding: 0 3%;"> | |||||
| <van-divider>附件</van-divider> | |||||
| <van-uploader v-model="fileList" accept="" :after-read="afterRead" @delete="deleteFile" /> <!-- accept=".jpg, .gif, .png, .jpeg, .txt, .pdf, .doc, .docx, .xls, .xlsx" --> | |||||
| </div> | |||||
| </van-popup> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import { getCbf, getCbhtList, cbhtSecondSign } from "@/api/sunVillage_info/fixedAssets"; | |||||
| import {attachmentList, commonAttach, systemAttachment} from "@/api/sunVillage_info/fixedAssets"; | |||||
| import request from "@/utils/request"; | |||||
| import vueEsign from "vue-esign"; | |||||
| import signatureUploadSignature from "@/views/yinnong/signatureUploadSignature"; | |||||
| import $ from "jquery"; | |||||
| import Cookies from "js-cookie"; | |||||
| export default { | |||||
| name: "sunVillageInfoListCbf", | |||||
| components: {vueEsign, signatureUploadSignature}, | |||||
| data() { | |||||
| return { | |||||
| applicationList: [], | |||||
| loading: false, | |||||
| finished: false, | |||||
| show: false, | |||||
| showFile: false, | |||||
| fileList: [], | |||||
| listLength: '0', | |||||
| queryParams: { | |||||
| pageNum: 1, | |||||
| pageSize: 10, | |||||
| cbfbm: null, | |||||
| translate_dict: 1, | |||||
| }, | |||||
| showBtn: true, | |||||
| signatureImg: '', | |||||
| //电子签名 | |||||
| signature: { | |||||
| lineWidth: 6, // 画笔的线条粗细 | |||||
| lineColor: "#000000", // 画笔的颜色 | |||||
| bgColor: "", // 画布的背景颜色 | |||||
| resultImg: "", // 最终画布生成的base64图片 | |||||
| isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分 | |||||
| }, | |||||
| signaId: '', | |||||
| height: null | |||||
| }; | |||||
| }, | |||||
| created() { | |||||
| this.height = window.screen.height * 1.28 - 20; | |||||
| this.getCbfInfo(); | |||||
| // this.queryParams.cbfbm = JSON.parse(Cookies.get('user')).idcard; | |||||
| }, | |||||
| methods: { | |||||
| canvasTTdown() { | |||||
| $('#canvasTT').css('display', 'none'); | |||||
| }, | |||||
| getCbfInfo() { | |||||
| getCbf(JSON.parse(Cookies.get('user')).idcard).then(response => { | |||||
| this.queryParams.cbfbm = response.data.cbfbm; | |||||
| this.getList(); | |||||
| }); | |||||
| }, | |||||
| getList() { | |||||
| if (this.queryParams.cbfbm != null) { | |||||
| getCbhtList(this.queryParams).then(response => { | |||||
| response.rows.forEach(item => { | |||||
| this.applicationList.push(item); | |||||
| }); | |||||
| if (this.applicationList.length >= response.total) { | |||||
| this.finished = true; | |||||
| return; | |||||
| } else { | |||||
| this.loading = false; | |||||
| this.queryParams.pageNum += 1; | |||||
| } | |||||
| }); | |||||
| } else { | |||||
| this.finished = true; | |||||
| } | |||||
| }, | |||||
| goDetail(id) { | |||||
| this.$router.push({ | |||||
| path: '/sunVillage_info/list_cbht_detail', | |||||
| query: { id: id } | |||||
| }) | |||||
| }, | |||||
| openPopup(id, url) { | |||||
| this.show = true; | |||||
| this.signaId = id; | |||||
| this.$nextTick(() => { | |||||
| this.handleReset(); | |||||
| }); | |||||
| }, | |||||
| openPopupFile(id){ | |||||
| this.fileList = []; | |||||
| this.signaId = id; | |||||
| this.showFile = true; | |||||
| let queryParams = { | |||||
| tableId: id, | |||||
| tableName: 't_sys_cbht', | |||||
| }; | |||||
| attachmentList(queryParams).then(response => { | |||||
| response.rows.map(res => { | |||||
| // let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL | |||||
| this.fileList.push({ | |||||
| url: '/api'+res.fileUrl, | |||||
| file: new File([], res.fileName,{}), | |||||
| id: res.id | |||||
| }); | |||||
| }) | |||||
| }); | |||||
| }, | |||||
| afterRead(file) { | |||||
| // 此时可以自行将文件上传至服务器 | |||||
| let params = new FormData(); | |||||
| params.append("tableId", this.signaId); | |||||
| params.append("tableName", "t_sys_cbht"); | |||||
| params.append("bizPath", "service"); | |||||
| params.append("fileType", '0'); | |||||
| params.append("file", file.file); | |||||
| commonAttach(params).then(response => { | |||||
| this.$notify({ type: 'success', message: '上传成功' }); | |||||
| }); | |||||
| }, | |||||
| deleteFile(file){ | |||||
| systemAttachment(file.id).then(res => { | |||||
| this.$notify({ type: 'success', message: '删除成功' }); | |||||
| }); | |||||
| }, | |||||
| signaImgFun(url) { | |||||
| this.signatureImg = url; | |||||
| }, | |||||
| // 清空画板 | |||||
| handleReset() { | |||||
| this.$refs.esign.reset(); | |||||
| $('#canvasTT').css('display', 'block') | |||||
| }, | |||||
| // 生成签字图 | |||||
| handleGenerate() { | |||||
| this.$refs.esign | |||||
| .generate() // 使用生成器调用把签字的图片转换成为base64图片格式 | |||||
| .then((res) => { | |||||
| this.signature.resultImg = res; | |||||
| let wj = this.dataURLtoBlob(res); | |||||
| let param = new FormData() // 创建form对象 | |||||
| param.append('file', wj) // 通过append向form对象添加数据 | |||||
| param.append('date', this.format(new Date(), 'yyyy-MM-dd')) // 通过append向form对象添加数据 | |||||
| cbhtSecondSign(param, this.signaId).then(response => { | |||||
| this.$notify({type: 'success', message: '签字成功'}); | |||||
| this.show = false; | |||||
| // location.reload(); | |||||
| this.applicationList = []; | |||||
| this.getList(); | |||||
| }); | |||||
| }) | |||||
| .catch((err) => { | |||||
| // 画布没有签字时会执行这里提示一下 | |||||
| this.$toast.fail('请签名后再保存签字'); | |||||
| }); | |||||
| }, | |||||
| dataURLtoBlob(dataurl, filename = 'file') { | |||||
| let arr = dataurl.split(',') | |||||
| let mime = arr[0].match(/:(.*?);/)[1] | |||||
| let suffix = mime.split('/')[1] | |||||
| let bstr = atob(arr[1]) | |||||
| let n = bstr.length | |||||
| let u8arr = new Uint8Array(n) | |||||
| while (n--) { | |||||
| u8arr[n] = bstr.charCodeAt(n) | |||||
| } | |||||
| return new File([u8arr], `${filename}.${suffix}`, { | |||||
| type: mime | |||||
| }) | |||||
| }, | |||||
| }, | |||||
| } | |||||
| </script> | |||||
| <style scoped lang="scss"> | |||||
| .home_wrapper { | |||||
| background: #e9e9e9; | |||||
| min-height: 100vh; | |||||
| width: 100vw; | |||||
| .header_main { | |||||
| height: 116px; | |||||
| background: url('../../assets/images/sunVillage_info/list_head.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| position: fixed; | |||||
| top: 0; | |||||
| left: 0; | |||||
| width: 100%; | |||||
| font-size: 36px; | |||||
| line-height: 116px; | |||||
| text-align: center; | |||||
| color: #fff; | |||||
| position: relative; | |||||
| .return_btn { | |||||
| width: 24px; | |||||
| height: 43.2px; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat; | |||||
| background-size: 20px 36px; | |||||
| position: absolute; | |||||
| left: 38px; | |||||
| top: 36px; | |||||
| } | |||||
| .add_btn { | |||||
| width: 56.4px; | |||||
| height: 40.8px; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat; | |||||
| background-size: 47px 34px; | |||||
| position: absolute; | |||||
| right: 38px; | |||||
| top: 36px; | |||||
| } | |||||
| } | |||||
| .record_main { | |||||
| padding: 30px 22px; | |||||
| .record_det { | |||||
| height: 38px; | |||||
| line-height: 38px; | |||||
| display: flex; | |||||
| justify-content: space-between; | |||||
| .year_l { | |||||
| font-size: 30px; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| color: #858585; | |||||
| .unit { | |||||
| padding-left: 5px; | |||||
| } | |||||
| .icon { | |||||
| width: 23px; | |||||
| height: 12px; | |||||
| display: block; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_1.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| margin-bottom: 4px; | |||||
| margin-right: 8px; | |||||
| &.zk { | |||||
| transform: rotate(0deg) | |||||
| } | |||||
| &.ss { | |||||
| transform: rotate(180deg) | |||||
| } | |||||
| } | |||||
| } | |||||
| .total_r { | |||||
| font-size: 26px; | |||||
| letter-spacing: 2px; | |||||
| } | |||||
| } | |||||
| .record_list { | |||||
| display: flex; | |||||
| flex-flow: wrap; | |||||
| margin-top: 12PX; | |||||
| .flex_block { | |||||
| font-size: 30px; | |||||
| color: #878787; | |||||
| padding-right: 30px; | |||||
| &.current { | |||||
| color: #4199fe; | |||||
| font-weight: bold; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| .list_main { | |||||
| padding: 0 22px; | |||||
| margin-top: 15PX; | |||||
| .item { | |||||
| border-radius: 30px; | |||||
| background: #fff; | |||||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||||
| padding: 25px 32px; | |||||
| margin-bottom: 20px; | |||||
| .info { | |||||
| .title { | |||||
| display: flex; | |||||
| font-size: 32px; | |||||
| align-items: center; | |||||
| height: 58px; | |||||
| .icon_box { | |||||
| width: 34px; | |||||
| display: block; | |||||
| height: 30px; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_01.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| margin-right: 10px; | |||||
| flex-shrink: 0; | |||||
| } | |||||
| .icon_box1 { | |||||
| width: 34px; | |||||
| display: block; | |||||
| height: 30px; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_01g.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| margin-right: 10px; | |||||
| flex-shrink: 0; | |||||
| } | |||||
| .news_title { | |||||
| display: -webkit-box; | |||||
| -webkit-box-orient: vertical; | |||||
| -webkit-line-clamp: 1; | |||||
| word-break: break-all; | |||||
| overflow: hidden; | |||||
| } | |||||
| .tips_mark { | |||||
| background: #ffedcd; | |||||
| border-radius: 8px; | |||||
| font-size: 24px; | |||||
| color: #f8a83d; | |||||
| text-align: center; | |||||
| line-height: 34px; | |||||
| flex-shrink: 0; | |||||
| padding: 0 5Px; | |||||
| margin-left: auto; | |||||
| } | |||||
| .tips_mark2 { | |||||
| background: #eb1616; | |||||
| border-radius: 8px; | |||||
| font-size: 24px; | |||||
| color: #ffffff; | |||||
| text-align: center; | |||||
| line-height: 34px; | |||||
| flex-shrink: 0; | |||||
| padding: 0 5Px; | |||||
| margin-left: 10PX; | |||||
| } | |||||
| } | |||||
| .time { | |||||
| font-size: 16PX; | |||||
| color: #333333; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| margin-top: 5PX; | |||||
| justify-content: space-between; | |||||
| .icon_time { | |||||
| width: 25px; | |||||
| height: 25px; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_4.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| margin-right: 10px; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| .operation { | |||||
| display: flex; | |||||
| align-items: center; | |||||
| justify-content: right; | |||||
| text-align: center; | |||||
| border-radius: 30px; | |||||
| background: #fff; | |||||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||||
| height: 100%; | |||||
| padding: 0 15Px; | |||||
| margin-left: 10PX; | |||||
| .opera_btn { | |||||
| border-radius: 50%; | |||||
| padding: 0 10px; | |||||
| &.delete { | |||||
| background: #df0707; | |||||
| margin-left: 10PX; | |||||
| .icon { | |||||
| width: 22PX; | |||||
| height: 29PX; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_03.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| display: block; | |||||
| } | |||||
| } | |||||
| &.edit { | |||||
| background: #79cf13; | |||||
| margin-left: 10PX; | |||||
| .icon { | |||||
| width: 26PX; | |||||
| height: 25PX; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_02.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| display: block; | |||||
| } | |||||
| } | |||||
| &.view { | |||||
| background: #3494ff; | |||||
| margin-left: 10PX; | |||||
| .icon { | |||||
| width: 29PX; | |||||
| height: 21PX; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_04.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| display: block; | |||||
| } | |||||
| } | |||||
| &.list { | |||||
| background: #79cf13; | |||||
| margin-left: 10PX; | |||||
| .icon { | |||||
| width: 29px; | |||||
| height: 21px; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_10.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| display: block; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| .bottom_tips { | |||||
| font-size: 24px; | |||||
| color: #a7a6a6; | |||||
| text-align: center; | |||||
| margin-top: 32px; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_8.png') center center no-repeat; | |||||
| background-size: 260px 2px; | |||||
| .xs { | |||||
| padding: 0 8px; | |||||
| background: #e9e9e9; | |||||
| } | |||||
| } | |||||
| .signature-box { | |||||
| border: 1px dashed #666; | |||||
| margin: 2px 20px; | |||||
| height: 100%; | |||||
| /*canvas{*/ | |||||
| /* height: 100%!important;*/ | |||||
| /*}*/ | |||||
| } | |||||
| .signature-footer { | |||||
| transform: rotate(90deg); | |||||
| width: auto; | |||||
| position: absolute; | |||||
| top: 50%; | |||||
| left: 0PX; | |||||
| .clearBtn { | |||||
| margin-left: 15px; | |||||
| } | |||||
| } | |||||
| .esigh-result { | |||||
| margin: 15px 20px; | |||||
| // height: 110px; | |||||
| border: 1px solid #666; | |||||
| font-size: 0; | |||||
| .imgs { | |||||
| width: 100%; | |||||
| } | |||||
| } | |||||
| } | |||||
| </style> | |||||
| @@ -0,0 +1,567 @@ | |||||
| <template> | |||||
| <div class="home_wrapper"> | |||||
| <div | |||||
| class="header_main" | |||||
| :style="`background-image:url(${require(showBtn?'@/assets/images/sunVillage_info/list_head.png':'@/assets/images/sunVillage_info/list_head_red.png')})`" | |||||
| > | |||||
| 承包合同 | |||||
| <div class="return_btn" @click="onClickLeft"></div> | |||||
| <!-- <div class="add_btn" @click="goAdd" v-show="showBtn"></div>--> | |||||
| </div> | |||||
| <div class="list_main"> | |||||
| <van-list | |||||
| v-model="loading" | |||||
| :finished="finished" | |||||
| finished-text="没有更多了" | |||||
| @load="getList" | |||||
| > | |||||
| <van-swipe-cell v-for="item in applicationList" :key="item.id"> | |||||
| <div class="item" @click="goDetail(item.id)"> | |||||
| <div class="info"> | |||||
| <div class="title"> | |||||
| <i class="icon_box" v-if="item.firstSigning == null"></i> | |||||
| <i class="icon_box1" v-if="item.firstSigning != null"></i> | |||||
| <p class="news_title" :style="{'color': item.firstSigning != null ? '#2bc30c' : '#eb1616'}">{{item.cbhtbm}}</p> | |||||
| <p class="tips_mark" | |||||
| :style="{'color': item.firstSigning != null ? '#79bc29' : '#f8a83d','background': item.firstSigning != null ? '#e8ffcd' : '#ffedcd'}"> | |||||
| {{item.signingMode}}</p> | |||||
| <p class="tips_mark2" v-if="item.signingMode === '线上'" :style="{'background': item.firstSigning != null ? '#2bc30c' : '#eb1616'}">{{item.signingStatus}}</p> | |||||
| </div> | |||||
| <div class="time"> | |||||
| <p style="color:#eb1616;">{{item.cbfmc}}</p> | |||||
| <!-- <p>{{item.cbhtmc}}</p>--> | |||||
| <p style="color:#eb1616;font-weight: bold;">{{item.htzmjm.toFixed(2)}} 亩</p> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| <template #right> | |||||
| <div class="operation"> | |||||
| <div class="opera_btn" v-if="item.signingMode == '线上' && item.firstIsSign =='否'" | |||||
| @click="openPopup(item.id)"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35"> | |||||
| <p>签名</p> | |||||
| </div> | |||||
| <!-- <div class="opera_btn" v-if="item.signingMode == '线上' && item.attachement != null " @click="$router.push({path:'/sunVillage_info/list_signature_pdf',query: {id:item.id,type:$route.query.type}})"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35"> | |||||
| <p>预览</p> | |||||
| </div> --> | |||||
| <div class="opera_btn"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35"> | |||||
| <p>预览</p> | |||||
| </div> | |||||
| <div class="opera_btn" @click="openPopupFile(item.id)"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | |||||
| <p>附件</p> | |||||
| </div> | |||||
| </div> | |||||
| </template> | |||||
| </van-swipe-cell> | |||||
| </van-list> | |||||
| </div> | |||||
| <!-- 签字弹出层 --> | |||||
| <van-popup v-model="show" closeable position="right" :style="{ height: '100%' }"> | |||||
| <van-cell-group style="width: 100%;height:100%;overflow: hidden;padding-top: 10px;padding-bottom: 10px;"> | |||||
| <div class="signature-box" @mousedown="canvasTTdown" @touchstart="canvasTTdown"> | |||||
| <vue-esign | |||||
| ref="esign" | |||||
| class="mySign" | |||||
| :width="500" | |||||
| :height="height" | |||||
| :isCrop="signature.isCrop" | |||||
| :lineWidth="signature.lineWidth" | |||||
| :lineColor="signature.lineColor" | |||||
| :bgColor.sync="signature.bgColor" | |||||
| /> | |||||
| </div> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_10.png" id="canvasTT" | |||||
| style="position:absolute;top: 50%;left: 50%;transform: translate(-50%,-50%)" alt=""> | |||||
| <div class="signature-footer"> | |||||
| <van-button @click="handleGenerate" type="info" size="small">保存签字</van-button> | |||||
| <van-button @click="handleReset" class="clearBtn" type="info" plain size="small">清空画板</van-button> | |||||
| </div> | |||||
| </van-cell-group> | |||||
| </van-popup> | |||||
| <!-- 附件弹出层 --> | |||||
| <van-popup v-model="showFile" round closeable position="bottom" :style="{ height: '30%' }" > | |||||
| <div style="padding: 0 3%;"> | |||||
| <van-divider>附件</van-divider> | |||||
| <van-uploader v-model="fileList" accept="" :after-read="afterRead" @delete="deleteFile" /> <!-- accept=".jpg, .gif, .png, .jpeg, .txt, .pdf, .doc, .docx, .xls, .xlsx" --> | |||||
| </div> | |||||
| </van-popup> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import { listCbht, cbhtFirstSign } from "@/api/sunVillage_info/fixedAssets"; | |||||
| import {attachmentList, commonAttach, systemAttachment} from "@/api/sunVillage_info/fixedAssets"; | |||||
| import request from "@/utils/request"; | |||||
| import vueEsign from "vue-esign"; | |||||
| import signatureUploadSignature from "@/views/yinnong/signatureUploadSignature"; | |||||
| import $ from "jquery"; | |||||
| export default { | |||||
| name: "sunVillageInfoListCbht", | |||||
| components: {vueEsign, signatureUploadSignature}, | |||||
| data() { | |||||
| return { | |||||
| applicationList: [], | |||||
| loading: false, | |||||
| finished: false, | |||||
| show: false, | |||||
| showFile: false, | |||||
| fileList: [], | |||||
| listLength: '0', | |||||
| queryParams: { | |||||
| pageNum: 1, | |||||
| pageSize: 10, | |||||
| translate_dict: 1, | |||||
| }, | |||||
| showBtn: true, | |||||
| signatureImg: '', | |||||
| //电子签名 | |||||
| signature: { | |||||
| lineWidth: 6, // 画笔的线条粗细 | |||||
| lineColor: "#000000", // 画笔的颜色 | |||||
| bgColor: "", // 画布的背景颜色 | |||||
| resultImg: "", // 最终画布生成的base64图片 | |||||
| isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分 | |||||
| }, | |||||
| signaId: '', | |||||
| height: null | |||||
| }; | |||||
| }, | |||||
| created() { | |||||
| if (this.$route.query.type == 'code') { | |||||
| this.showBtn = false; | |||||
| } | |||||
| this.height = window.screen.height * 1.28 - 20; | |||||
| }, | |||||
| methods: { | |||||
| canvasTTdown() { | |||||
| $('#canvasTT').css('display', 'none'); | |||||
| }, | |||||
| getList() { | |||||
| listCbht(this.queryParams).then(response => { | |||||
| response.rows.forEach(item => { | |||||
| this.applicationList.push(item); | |||||
| }); | |||||
| if (this.applicationList.length >= response.total) { | |||||
| this.finished = true; | |||||
| return; | |||||
| } else { | |||||
| this.loading = false; | |||||
| this.queryParams.pageNum += 1; | |||||
| } | |||||
| }); | |||||
| }, | |||||
| goDetail(id) { | |||||
| this.$router.push({ | |||||
| path: '/sunVillage_info/list_cbht_detail', | |||||
| query: { id: id } | |||||
| }) | |||||
| }, | |||||
| openPopup(id, url) { | |||||
| this.show = true; | |||||
| this.signaId = id; | |||||
| }, | |||||
| openPopupFile(id){ | |||||
| this.fileList = []; | |||||
| this.signaId = id; | |||||
| this.showFile = true; | |||||
| let queryParams = { | |||||
| tableId: id, | |||||
| tableName: 't_sys_cbht', | |||||
| }; | |||||
| attachmentList(queryParams).then(response => { | |||||
| response.rows.map(res => { | |||||
| // let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL | |||||
| this.fileList.push({ | |||||
| url: '/api'+res.fileUrl, | |||||
| file: new File([], res.fileName,{}), | |||||
| id: res.id | |||||
| }); | |||||
| }) | |||||
| }); | |||||
| }, | |||||
| afterRead(file) { | |||||
| // 此时可以自行将文件上传至服务器 | |||||
| let params = new FormData(); | |||||
| params.append("tableId", this.signaId); | |||||
| params.append("tableName", "t_sys_cbht"); | |||||
| params.append("bizPath", "service"); | |||||
| params.append("fileType", '0'); | |||||
| params.append("file", file.file); | |||||
| commonAttach(params).then(response => { | |||||
| this.$notify({ type: 'success', message: '上传成功' }); | |||||
| }); | |||||
| }, | |||||
| deleteFile(file){ | |||||
| systemAttachment(file.id).then(res => { | |||||
| this.$notify({ type: 'success', message: '删除成功' }); | |||||
| }); | |||||
| }, | |||||
| signaImgFun(url) { | |||||
| this.signatureImg = url; | |||||
| }, | |||||
| // 清空画板 | |||||
| handleReset() { | |||||
| this.$refs.esign.reset(); | |||||
| $('#canvasTT').css('display', 'block') | |||||
| }, | |||||
| // 生成签字图 | |||||
| handleGenerate() { | |||||
| this.$refs.esign | |||||
| .generate() // 使用生成器调用把签字的图片转换成为base64图片格式 | |||||
| .then((res) => { | |||||
| this.signature.resultImg = res; | |||||
| let wj = this.dataURLtoBlob(res); | |||||
| let param = new FormData(); // 创建form对象 | |||||
| param.append('file', wj); // 通过append向form对象添加数据 | |||||
| param.append('date', this.format(new Date(), 'yyyy-MM-dd')); // 通过append向form对象添加数据 | |||||
| cbhtFirstSign(param, this.signaId).then(response => { | |||||
| this.$notify({type: 'success', message: '签字成功'}); | |||||
| this.show = false; | |||||
| location.reload(); | |||||
| }); | |||||
| }) | |||||
| .catch((err) => { | |||||
| // 画布没有签字时会执行这里提示一下 | |||||
| this.$toast.fail('请签名后再保存签字'); | |||||
| }); | |||||
| }, | |||||
| dataURLtoBlob(dataurl, filename = 'file') { | |||||
| let arr = dataurl.split(',') | |||||
| let mime = arr[0].match(/:(.*?);/)[1] | |||||
| let suffix = mime.split('/')[1] | |||||
| let bstr = atob(arr[1]) | |||||
| let n = bstr.length | |||||
| let u8arr = new Uint8Array(n) | |||||
| while (n--) { | |||||
| u8arr[n] = bstr.charCodeAt(n) | |||||
| } | |||||
| return new File([u8arr], `${filename}.${suffix}`, { | |||||
| type: mime | |||||
| }) | |||||
| }, | |||||
| }, | |||||
| } | |||||
| </script> | |||||
| <style scoped lang="scss"> | |||||
| .home_wrapper { | |||||
| background: #e9e9e9; | |||||
| min-height: 100vh; | |||||
| width: 100vw; | |||||
| .header_main { | |||||
| height: 116px; | |||||
| background: url('../../assets/images/sunVillage_info/list_head.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| position: fixed; | |||||
| top: 0; | |||||
| left: 0; | |||||
| width: 100%; | |||||
| font-size: 36px; | |||||
| line-height: 116px; | |||||
| text-align: center; | |||||
| color: #fff; | |||||
| position: relative; | |||||
| .return_btn { | |||||
| width: 24px; | |||||
| height: 43.2px; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat; | |||||
| background-size: 20px 36px; | |||||
| position: absolute; | |||||
| left: 38px; | |||||
| top: 36px; | |||||
| } | |||||
| .add_btn { | |||||
| width: 56.4px; | |||||
| height: 40.8px; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat; | |||||
| background-size: 47px 34px; | |||||
| position: absolute; | |||||
| right: 38px; | |||||
| top: 36px; | |||||
| } | |||||
| } | |||||
| .record_main { | |||||
| padding: 30px 22px; | |||||
| .record_det { | |||||
| height: 38px; | |||||
| line-height: 38px; | |||||
| display: flex; | |||||
| justify-content: space-between; | |||||
| .year_l { | |||||
| font-size: 30px; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| color: #858585; | |||||
| .unit { | |||||
| padding-left: 5px; | |||||
| } | |||||
| .icon { | |||||
| width: 23px; | |||||
| height: 12px; | |||||
| display: block; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_1.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| margin-bottom: 4px; | |||||
| margin-right: 8px; | |||||
| &.zk { | |||||
| transform: rotate(0deg) | |||||
| } | |||||
| &.ss { | |||||
| transform: rotate(180deg) | |||||
| } | |||||
| } | |||||
| } | |||||
| .total_r { | |||||
| font-size: 26px; | |||||
| letter-spacing: 2px; | |||||
| } | |||||
| } | |||||
| .record_list { | |||||
| display: flex; | |||||
| flex-flow: wrap; | |||||
| margin-top: 12PX; | |||||
| .flex_block { | |||||
| font-size: 30px; | |||||
| color: #878787; | |||||
| padding-right: 30px; | |||||
| &.current { | |||||
| color: #4199fe; | |||||
| font-weight: bold; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| .list_main { | |||||
| padding: 0 22px; | |||||
| margin-top: 15PX; | |||||
| .item { | |||||
| border-radius: 30px; | |||||
| background: #fff; | |||||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||||
| padding: 25px 32px; | |||||
| margin-bottom: 20px; | |||||
| .info { | |||||
| .title { | |||||
| display: flex; | |||||
| font-size: 32px; | |||||
| align-items: center; | |||||
| height: 58px; | |||||
| .icon_box { | |||||
| width: 34px; | |||||
| display: block; | |||||
| height: 30px; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_01.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| margin-right: 10px; | |||||
| flex-shrink: 0; | |||||
| } | |||||
| .icon_box1 { | |||||
| width: 34px; | |||||
| display: block; | |||||
| height: 30px; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_01g.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| margin-right: 10px; | |||||
| flex-shrink: 0; | |||||
| } | |||||
| .news_title { | |||||
| display: -webkit-box; | |||||
| -webkit-box-orient: vertical; | |||||
| -webkit-line-clamp: 1; | |||||
| word-break: break-all; | |||||
| overflow: hidden; | |||||
| } | |||||
| .tips_mark { | |||||
| background: #ffedcd; | |||||
| border-radius: 8px; | |||||
| font-size: 24px; | |||||
| color: #f8a83d; | |||||
| text-align: center; | |||||
| line-height: 34px; | |||||
| flex-shrink: 0; | |||||
| padding: 0 5Px; | |||||
| margin-left: auto; | |||||
| } | |||||
| .tips_mark2 { | |||||
| background: #eb1616; | |||||
| border-radius: 8px; | |||||
| font-size: 24px; | |||||
| color: #ffffff; | |||||
| text-align: center; | |||||
| line-height: 34px; | |||||
| flex-shrink: 0; | |||||
| padding: 0 5Px; | |||||
| margin-left: 10PX; | |||||
| } | |||||
| } | |||||
| .time { | |||||
| font-size: 16PX; | |||||
| color: #333333; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| margin-top: 5PX; | |||||
| justify-content: space-between; | |||||
| .icon_time { | |||||
| width: 25px; | |||||
| height: 25px; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_4.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| margin-right: 10px; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| .operation { | |||||
| display: flex; | |||||
| align-items: center; | |||||
| justify-content: right; | |||||
| text-align: center; | |||||
| border-radius: 30px; | |||||
| background: #fff; | |||||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||||
| height: 100%; | |||||
| padding: 0 15Px; | |||||
| margin-left: 10PX; | |||||
| .opera_btn { | |||||
| border-radius: 50%; | |||||
| padding: 0 10px; | |||||
| &.delete { | |||||
| background: #df0707; | |||||
| margin-left: 10PX; | |||||
| .icon { | |||||
| width: 22PX; | |||||
| height: 29PX; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_03.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| display: block; | |||||
| } | |||||
| } | |||||
| &.edit { | |||||
| background: #79cf13; | |||||
| margin-left: 10PX; | |||||
| .icon { | |||||
| width: 26PX; | |||||
| height: 25PX; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_02.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| display: block; | |||||
| } | |||||
| } | |||||
| &.view { | |||||
| background: #3494ff; | |||||
| margin-left: 10PX; | |||||
| .icon { | |||||
| width: 29PX; | |||||
| height: 21PX; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_04.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| display: block; | |||||
| } | |||||
| } | |||||
| &.list { | |||||
| background: #79cf13; | |||||
| margin-left: 10PX; | |||||
| .icon { | |||||
| width: 29px; | |||||
| height: 21px; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_10.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| display: block; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| .bottom_tips { | |||||
| font-size: 24px; | |||||
| color: #a7a6a6; | |||||
| text-align: center; | |||||
| margin-top: 32px; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_8.png') center center no-repeat; | |||||
| background-size: 260px 2px; | |||||
| .xs { | |||||
| padding: 0 8px; | |||||
| background: #e9e9e9; | |||||
| } | |||||
| } | |||||
| .signature-box { | |||||
| border: 1px dashed #666; | |||||
| margin: 2px 20px; | |||||
| height: 100%; | |||||
| /*canvas{*/ | |||||
| /* height: 100%!important;*/ | |||||
| /*}*/ | |||||
| } | |||||
| .signature-footer { | |||||
| transform: rotate(90deg); | |||||
| width: auto; | |||||
| position: absolute; | |||||
| top: 50%; | |||||
| left: 0PX; | |||||
| .clearBtn { | |||||
| margin-left: 15px; | |||||
| } | |||||
| } | |||||
| .esigh-result { | |||||
| margin: 15px 20px; | |||||
| // height: 110px; | |||||
| border: 1px solid #666; | |||||
| font-size: 0; | |||||
| .imgs { | |||||
| width: 100%; | |||||
| } | |||||
| } | |||||
| } | |||||
| </style> | |||||
| @@ -0,0 +1,206 @@ | |||||
| <template> | |||||
| <div class="home_wrapper"> | |||||
| <div class="header_main"> | |||||
| 承包合同详情 | |||||
| <div class="return_btn" @click="onClickLeft"></div> | |||||
| </div> | |||||
| <div class="list_main"> | |||||
| <van-divider>承包合同合同信息</van-divider> | |||||
| <van-field v-model="form.cbhtbm" label="承包合同编码" placeholder="承包合同编码" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.ycbhtbm" label="原承包合同编码" placeholder="原承包合同编码" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.cbhtmc" label="承包合同名称" placeholder="承包合同名称" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.cbflx" label="承包方类型" placeholder="承包方类型" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.cbfbm" label="承包方编码" placeholder="承包方编码" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.cbfmc" label="承包方名称" placeholder="承包方名称" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.cbfs" label="承包方式" placeholder="承包方式" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.cbdkzs" label="承包地块总数" placeholder="承包地块总数" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.cbqxq" label="承包期限起" placeholder="承包期限起" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.cbqxz" label="承包期限止" placeholder="承包期限止" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.htzmjm" label="合同总面积(亩)" placeholder="合同总面积(亩)" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.yhtzmjm" label="原合同总面积(亩)" placeholder="原合同总面积(亩)" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.qdsj" label="签订时间" placeholder="签订时间" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.cbhtzt" label="承包合同状态" placeholder="承包合同状态" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.signingMode" label="签订方式" placeholder="签订方式" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.signingStatus" label="签订状态" placeholder="签订状态" input-align="right" :border="false"/> | |||||
| <!-- <van-field v-model="form.contractRemark" label="合同备注" placeholder="合同备注" input-align="right" :border="false"/>--> | |||||
| <van-divider>甲方信息</van-divider> | |||||
| <van-field v-model="form.firstIsSign" label="甲方已签" placeholder="甲方已签" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.firstPartyAt" label="甲方签字日期" placeholder="甲方签字日期" input-align="right" :border="false"/> | |||||
| <van-field label="甲方签字" input-align="right" :border="false" /> | |||||
| <img :src="'/api'+form.firstSigning" width="100%" alt="" v-if="form.firstSigning" /> | |||||
| <van-field label="村级公章" input-align="right" :border="false" /> | |||||
| <img :src="'/api'+form.firstSeal" width="100%" alt="" v-if="form.firstSeal" /> | |||||
| <van-divider>乙方信息</van-divider> | |||||
| <van-field v-model="form.secondIsSign" label="乙方已签" placeholder="乙方已签" input-align="right" :border="false" /> | |||||
| <van-field v-model="form.secondPartyAt" label="乙方签字日期" placeholder="乙方签字日期" input-align="right" :border="false" /> | |||||
| <van-field label="乙方签字" input-align="right" :border="false" /> | |||||
| <img :src="'/api'+form.secondSigning" width="100%" alt="" v-if="form.secondSigning"> | |||||
| </div> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import {getCbht} from "@/api/sunVillage_info/fixedAssets"; | |||||
| export default { | |||||
| name: "sunVillageInfoListCbhtDetail", | |||||
| data() { | |||||
| return { | |||||
| form: {}, | |||||
| }; | |||||
| }, | |||||
| created() { | |||||
| this.getDetail(); | |||||
| }, | |||||
| methods: { | |||||
| getDetail() { | |||||
| let query = { | |||||
| translate_dict: 1 | |||||
| }; | |||||
| getCbht(query, this.$route.query.id).then((res) => { | |||||
| if (res.code === 200) { | |||||
| this.form = res.data; | |||||
| } | |||||
| }) | |||||
| }, | |||||
| }, | |||||
| } | |||||
| </script> | |||||
| <style scoped lang="scss"> | |||||
| /deep/ .van-button--primary { | |||||
| background: url("../../assets/images/sunVillage_info/btn_bg.png") no-repeat; | |||||
| background-size: 100% 100%; | |||||
| border: none; | |||||
| } | |||||
| .home_wrapper { | |||||
| background: #e9e9e9; | |||||
| min-height: 100vh; | |||||
| width: 100vw; | |||||
| .header_main { | |||||
| height: 116px; | |||||
| background: url('../../assets/images/sunVillage_info/list_head.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| position: fixed; | |||||
| top: 0; | |||||
| left: 0; | |||||
| width: 100%; | |||||
| font-size: 36px; | |||||
| line-height: 116px; | |||||
| text-align: center; | |||||
| color: #fff; | |||||
| position: relative; | |||||
| .return_btn { | |||||
| width: 24px; | |||||
| height: 43.2px; | |||||
| background: url('../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat; | |||||
| background-size: 20px 36px; | |||||
| position: absolute; | |||||
| left: 38px; | |||||
| top: 36px; | |||||
| } | |||||
| } | |||||
| .release_head { | |||||
| height: 90px; | |||||
| padding: 0 23px; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| font-size: 26px; | |||||
| color: #929292; | |||||
| .people { | |||||
| flex: 1; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| .icon { | |||||
| width: 24px; | |||||
| height: 21px; | |||||
| background: url('../../assets/images/sunVillage_info/details_icon_1.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| display: block; | |||||
| margin-right: 8px; | |||||
| } | |||||
| } | |||||
| .time { | |||||
| flex: 1; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| justify-content: flex-end; | |||||
| .icon { | |||||
| width: 25px; | |||||
| height: 25px; | |||||
| background: url('../../assets/images/sunVillage_info/details_icon_2.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| display: block; | |||||
| margin-right: 8px; | |||||
| } | |||||
| } | |||||
| } | |||||
| .release_conetnt { | |||||
| padding: 0 22px; | |||||
| font-size: 32px; | |||||
| color: #252525; | |||||
| line-height: 44px; | |||||
| img { | |||||
| max-width: 100%; | |||||
| margin-bottom: 16px; | |||||
| } | |||||
| p { | |||||
| margin-bottom: 16px; | |||||
| } | |||||
| } | |||||
| .list_main { | |||||
| padding: 25px; | |||||
| background: #ffffff; | |||||
| width: 94%; | |||||
| margin: 25px auto 0; | |||||
| border-radius: 15PX; | |||||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||||
| } | |||||
| .titBox { | |||||
| display: flex; | |||||
| align-items: center; | |||||
| } | |||||
| .tit { | |||||
| font-size: 36px; | |||||
| font-weight: bold; | |||||
| } | |||||
| /deep/ .van-cell { | |||||
| padding-left: 0 !important; | |||||
| padding-right: 0 !important; | |||||
| padding-bottom: 0 !important; | |||||
| } | |||||
| /deep/ .van-field__label { | |||||
| /*padding-left: 10PX;*/ | |||||
| width: auto; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| } | |||||
| /deep/ .van-cell--required::before { | |||||
| left: 85PX; | |||||
| } | |||||
| /deep/ .van-field__error-message { | |||||
| display: none; | |||||
| } | |||||
| } | |||||
| </style> | |||||
| @@ -4,7 +4,7 @@ | |||||
| class="header_main" | class="header_main" | ||||
| :style="`background-image:url(${require(showBtn?'@/assets/images/sunVillage_info/list_head.png':'@/assets/images/sunVillage_info/list_head_red.png')})`" | :style="`background-image:url(${require(showBtn?'@/assets/images/sunVillage_info/list_head.png':'@/assets/images/sunVillage_info/list_head_red.png')})`" | ||||
| > | > | ||||
| 标段合同网签 | |||||
| 标段合同 | |||||
| <div class="return_btn" @click="onClickLeft"></div> | <div class="return_btn" @click="onClickLeft"></div> | ||||
| <!-- <div class="add_btn" @click="goAdd" v-show="showBtn"></div>--> | <!-- <div class="add_btn" @click="goAdd" v-show="showBtn"></div>--> | ||||
| </div> | </div> | ||||
| @@ -16,7 +16,7 @@ | |||||
| finished-text="没有更多了" | finished-text="没有更多了" | ||||
| @load="getList" | @load="getList" | ||||
| > | > | ||||
| <van-swipe-cell v-for="item in applicationList" :key="item.id" :disabled="item.firstIsSign === '是'"> | |||||
| <van-swipe-cell v-for="item in applicationList" :key="item.id"> | |||||
| <div class="item" @click="goDetail(item.id)"> | <div class="item" @click="goDetail(item.id)"> | ||||
| <div class="info"> | <div class="info"> | ||||
| <div class="title"> | <div class="title"> | ||||
| @@ -26,7 +26,7 @@ | |||||
| <p class="tips_mark" | <p class="tips_mark" | ||||
| :style="{'color': item.firstSigning != null ? '#79bc29' : '#f8a83d','background': item.firstSigning != null ? '#e8ffcd' : '#ffedcd'}"> | :style="{'color': item.firstSigning != null ? '#79bc29' : '#f8a83d','background': item.firstSigning != null ? '#e8ffcd' : '#ffedcd'}"> | ||||
| {{item.signingMode}}</p> | {{item.signingMode}}</p> | ||||
| <p class="tips_mark2" :style="{'background': item.firstSigning != null ? '#2bc30c' : '#eb1616'}">{{item.signingStatus}}</p> | |||||
| <p class="tips_mark2" v-if="item.signingMode === '线上'" :style="{'background': item.firstSigning != null ? '#2bc30c' : '#eb1616'}">{{item.signingStatus}}</p> | |||||
| </div> | </div> | ||||
| <div class="time"> | <div class="time"> | ||||
| <p>{{item.contractName}}</p> | <p>{{item.contractName}}</p> | ||||
| @@ -41,10 +41,10 @@ | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35"> | <img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35"> | ||||
| <p>签名</p> | <p>签名</p> | ||||
| </div> | </div> | ||||
| <!-- <div class="opera_btn" v-if="item.signingMode == '线下' " @click="openPopupFile(item.attachement)"> | |||||
| <div class="opera_btn" @click="openPopupFile(item.id)"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | ||||
| <p>线下合同</p> | |||||
| </div> --> | |||||
| <p>附件</p> | |||||
| </div> | |||||
| </div> | </div> | ||||
| </template> | </template> | ||||
| </van-swipe-cell> | </van-swipe-cell> | ||||
| @@ -76,14 +76,19 @@ | |||||
| </van-popup> | </van-popup> | ||||
| <!-- 附件弹出层 --> | <!-- 附件弹出层 --> | ||||
| <van-popup v-model="showFile" round closeable position="bottom" :style="{ height: '30%' }"> | |||||
| <van-uploader v-model="fileList" multiple disabled :deletable="false" :show-upload="false"/> | |||||
| <van-popup v-model="showFile" round closeable position="bottom" :style="{ height: '30%' }" > | |||||
| <div style="padding: 0 3%;"> | |||||
| <van-divider>附件</van-divider> | |||||
| <van-uploader v-model="fileList" accept="" :after-read="afterRead" @delete="deleteFile" /> <!-- accept=".jpg, .gif, .png, .jpeg, .txt, .pdf, .doc, .docx, .xls, .xlsx" --> | |||||
| </div> | |||||
| </van-popup> | </van-popup> | ||||
| </div> | </div> | ||||
| </template> | </template> | ||||
| <script> | <script> | ||||
| import { listMultiplelots, multipleLotsFirstSign } from "@/api/sunVillage_info/fixedAssets"; | import { listMultiplelots, multipleLotsFirstSign } from "@/api/sunVillage_info/fixedAssets"; | ||||
| import {attachmentList, commonAttach, systemAttachment} from "@/api/sunVillage_info/fixedAssets"; | |||||
| import request from "@/utils/request"; | |||||
| import vueEsign from "vue-esign"; | import vueEsign from "vue-esign"; | ||||
| import signatureUploadSignature from "@/views/yinnong/signatureUploadSignature"; | import signatureUploadSignature from "@/views/yinnong/signatureUploadSignature"; | ||||
| import $ from "jquery"; | import $ from "jquery"; | ||||
| @@ -155,16 +160,41 @@ | |||||
| this.show = true; | this.show = true; | ||||
| this.signaId = id; | this.signaId = id; | ||||
| }, | }, | ||||
| openPopupFile(file) { | |||||
| openPopupFile(id){ | |||||
| this.fileList = []; | |||||
| this.signaId = id; | |||||
| this.showFile = true; | this.showFile = true; | ||||
| if (!file) return; | |||||
| let fileArray = file.split(','); | |||||
| fileArray.map(res => { | |||||
| this.fileList.push({ | |||||
| url: '/api' + res, | |||||
| isImage: true | |||||
| let queryParams = { | |||||
| tableId: id, | |||||
| tableName: 't_transaction_multiplelots', | |||||
| }; | |||||
| attachmentList(queryParams).then(response => { | |||||
| response.rows.map(res => { | |||||
| // let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL | |||||
| this.fileList.push({ | |||||
| url: '/api'+res.fileUrl, | |||||
| file: new File([], res.fileName,{}), | |||||
| id: res.id | |||||
| }); | |||||
| }) | }) | ||||
| }) | |||||
| }); | |||||
| }, | |||||
| afterRead(file) { | |||||
| // 此时可以自行将文件上传至服务器 | |||||
| let params = new FormData(); | |||||
| params.append("tableId", this.signaId); | |||||
| params.append("tableName", "t_transaction_multiplelots"); | |||||
| params.append("bizPath", "transaction"); | |||||
| params.append("fileType", '0'); | |||||
| params.append("file", file.file); | |||||
| commonAttach(params).then(response => { | |||||
| this.$notify({ type: 'success', message: '上传成功' }); | |||||
| }); | |||||
| }, | |||||
| deleteFile(file){ | |||||
| systemAttachment(file.id).then(res => { | |||||
| this.$notify({ type: 'success', message: '删除成功' }); | |||||
| }); | |||||
| }, | }, | ||||
| signaImgFun(url) { | signaImgFun(url) { | ||||
| this.signatureImg = url; | this.signatureImg = url; | ||||
| @@ -423,7 +453,7 @@ | |||||
| .opera_btn { | .opera_btn { | ||||
| border-radius: 50%; | border-radius: 50%; | ||||
| padding: 0 10px; | |||||
| &.delete { | &.delete { | ||||
| background: #df0707; | background: #df0707; | ||||
| margin-left: 10PX; | margin-left: 10PX; | ||||
| @@ -4,7 +4,7 @@ | |||||
| class="header_main" | class="header_main" | ||||
| :style="`background-image:url(${require(showBtn?'@/assets/images/sunVillage_info/list_head.png':'@/assets/images/sunVillage_info/list_head_red.png')})`" | :style="`background-image:url(${require(showBtn?'@/assets/images/sunVillage_info/list_head.png':'@/assets/images/sunVillage_info/list_head_red.png')})`" | ||||
| > | > | ||||
| 标段农户网签 | |||||
| 标段合同 | |||||
| <div class="return_btn" @click="onClickLeft"></div> | <div class="return_btn" @click="onClickLeft"></div> | ||||
| <!-- <div class="add_btn" @click="goAdd" v-show="showBtn"></div>--> | <!-- <div class="add_btn" @click="goAdd" v-show="showBtn"></div>--> | ||||
| </div> | </div> | ||||
| @@ -17,7 +17,7 @@ | |||||
| @load="getList" | @load="getList" | ||||
| > | > | ||||
| <!----1--> | <!----1--> | ||||
| <van-swipe-cell v-for="(item,index) in applicationList" :key="index" :disabled="item.secondIsSign === '是'" > | |||||
| <van-swipe-cell v-for="item in applicationList" :key="item.id" > | |||||
| <div class="item" @click="goDetail(item.id)"> | <div class="item" @click="goDetail(item.id)"> | ||||
| <div class="info"> | <div class="info"> | ||||
| <div class="title"> | <div class="title"> | ||||
| @@ -25,7 +25,7 @@ | |||||
| <i class="icon_box1" v-if="item.secondSigning!=null"></i> | <i class="icon_box1" v-if="item.secondSigning!=null"></i> | ||||
| <p class="news_title" :style="{'color': item.secondSigning!=null?'#2bc30c':'#eb1616'}">{{item.contractCode}}</p> | <p class="news_title" :style="{'color': item.secondSigning!=null?'#2bc30c':'#eb1616'}">{{item.contractCode}}</p> | ||||
| <p class="tips_mark" :style="{'color': item.secondSigning!=null?'#79bc29':'#f8a83d','background': item.secondSigning!=null?'#e8ffcd':'#ffedcd'}">{{item.signingMode}}</p> | <p class="tips_mark" :style="{'color': item.secondSigning!=null?'#79bc29':'#f8a83d','background': item.secondSigning!=null?'#e8ffcd':'#ffedcd'}">{{item.signingMode}}</p> | ||||
| <p class="tips_mark2" :style="{'background': item.secondSigning!=null?'#2bc30c':'#eb1616'}">{{item.signingStatus}}</p> | |||||
| <p class="tips_mark2" v-if="item.signingMode === '线上'" :style="{'background': item.secondSigning!=null?'#2bc30c':'#eb1616'}">{{item.secondIsSign === '是' ? '已签名' : '未签名'}}</p> | |||||
| </div> | </div> | ||||
| <div class="time"> | <div class="time"> | ||||
| <p>{{item.contractName}}</p> | <p>{{item.contractName}}</p> | ||||
| @@ -35,23 +35,14 @@ | |||||
| </div> | </div> | ||||
| <template #right> | <template #right> | ||||
| <div class="operation"> | <div class="operation"> | ||||
| <!-- delete 删除 edit编辑 view查看 list榜单 --> | |||||
| <div class="opera_btn" @click="openPopup(item.id)" v-if="item.secondIsSign === '否' "> | |||||
| <div class="opera_btn" @click="openPopup(item.id)" v-if="item.signingMode == '线上' && item.secondIsSign === '否'"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35"> | <img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35"> | ||||
| <p>签名</p> | <p>签名</p> | ||||
| </div> | </div> | ||||
| <!-- <div class="opera_btn" style="margin: 0 10px;" v-if="item.signingMode == '线上' && item.attachement != null "> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35"> | |||||
| <p>预览</p> | |||||
| </div> | |||||
| <div class="opera_btn" v-if="item.signingMode == '线上' && item.isArchive == '是' "> | |||||
| <div class="opera_btn" @click="openPopupFile(item.id)"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | ||||
| <p>电子合同</p> | |||||
| <p>附件</p> | |||||
| </div> | </div> | ||||
| <div class="opera_btn" v-if="item.signingMode == '线下' "> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | |||||
| <p>线下合同</p> | |||||
| </div> --> | |||||
| </div> | </div> | ||||
| </template> | </template> | ||||
| </van-swipe-cell> | </van-swipe-cell> | ||||
| @@ -78,11 +69,21 @@ | |||||
| </div> | </div> | ||||
| </van-cell-group> | </van-cell-group> | ||||
| </van-popup> | </van-popup> | ||||
| <!-- 附件弹出层 --> | |||||
| <van-popup v-model="showFile" round closeable position="bottom" :style="{ height: '30%' }" > | |||||
| <div style="padding: 0 3%;"> | |||||
| <van-divider>附件</van-divider> | |||||
| <van-uploader v-model="fileList" accept="" :after-read="afterRead" @delete="deleteFile" /> <!-- accept=".jpg, .gif, .png, .jpeg, .txt, .pdf, .doc, .docx, .xls, .xlsx" --> | |||||
| </div> | |||||
| </van-popup> | |||||
| </div> | </div> | ||||
| </template> | </template> | ||||
| <script> | <script> | ||||
| import { listMultipleLotsNh, multipleLotsSecondSign } from "@/api/sunVillage_info/fixedAssets"; | import { listMultipleLotsNh, multipleLotsSecondSign } from "@/api/sunVillage_info/fixedAssets"; | ||||
| import {attachmentList, commonAttach, systemAttachment} from "@/api/sunVillage_info/fixedAssets"; | |||||
| import request from "@/utils/request"; | |||||
| import vueEsign from "vue-esign"; | import vueEsign from "vue-esign"; | ||||
| import signatureUploadSignature from "@/views/yinnong/signatureUploadSignature"; | import signatureUploadSignature from "@/views/yinnong/signatureUploadSignature"; | ||||
| import $ from "jquery"; | import $ from "jquery"; | ||||
| @@ -153,16 +154,41 @@ | |||||
| this.show = true; | this.show = true; | ||||
| this.signaId = id; | this.signaId = id; | ||||
| }, | }, | ||||
| openPopupFile(file) { | |||||
| openPopupFile(id){ | |||||
| this.fileList = []; | |||||
| this.signaId = id; | |||||
| this.showFile = true; | this.showFile = true; | ||||
| if (!file) return; | |||||
| let fileArray = file.split(','); | |||||
| fileArray.map(res => { | |||||
| this.fileList.push({ | |||||
| url: '/api' + res, | |||||
| isImage: true | |||||
| let queryParams = { | |||||
| tableId: id, | |||||
| tableName: 't_transaction_multiplelotsnh', | |||||
| }; | |||||
| attachmentList(queryParams).then(response => { | |||||
| response.rows.map(res => { | |||||
| // let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL | |||||
| this.fileList.push({ | |||||
| url: '/api'+res.fileUrl, | |||||
| file: new File([], res.fileName,{}), | |||||
| id: res.id | |||||
| }); | |||||
| }) | }) | ||||
| }) | |||||
| }); | |||||
| }, | |||||
| afterRead(file) { | |||||
| // 此时可以自行将文件上传至服务器 | |||||
| let params = new FormData(); | |||||
| params.append("tableId", this.signaId); | |||||
| params.append("tableName", "t_transaction_multiplelotsnh"); | |||||
| params.append("bizPath", "transaction"); | |||||
| params.append("fileType", '0'); | |||||
| params.append("file", file.file); | |||||
| commonAttach(params).then(response => { | |||||
| this.$notify({ type: 'success', message: '上传成功' }); | |||||
| }); | |||||
| }, | |||||
| deleteFile(file){ | |||||
| systemAttachment(file.id).then(res => { | |||||
| this.$notify({ type: 'success', message: '删除成功' }); | |||||
| }); | |||||
| }, | }, | ||||
| signaImgFun(url) { | signaImgFun(url) { | ||||
| this.signatureImg = url; | this.signatureImg = url; | ||||
| @@ -421,7 +447,7 @@ | |||||
| .opera_btn { | .opera_btn { | ||||
| border-radius: 50%; | border-radius: 50%; | ||||
| padding: 0 10px; | |||||
| &.delete { | &.delete { | ||||
| background: #df0707; | background: #df0707; | ||||
| margin-left: 10PX; | margin-left: 10PX; | ||||
| @@ -8,6 +8,7 @@ | |||||
| <van-divider>标段农户信息</van-divider> | <van-divider>标段农户信息</van-divider> | ||||
| <van-field v-model="form.contractCode" label="合同编号" placeholder="合同编号" input-align="right" :border="false"/> | <van-field v-model="form.contractCode" label="合同编号" placeholder="合同编号" input-align="right" :border="false"/> | ||||
| <van-field v-model="form.contractName" label="合同名称" placeholder="合同名称" input-align="right" :border="false"/> | <van-field v-model="form.contractName" label="合同名称" placeholder="合同名称" input-align="right" :border="false"/> | ||||
| <van-field v-model="form.signingMode" label="签订方式" placeholder="签订方式" input-align="right" :border="false"/> | |||||
| <van-field v-model="form.farmerCode" label="农户编码" placeholder="农户编码" input-align="right" :border="false"/> | <van-field v-model="form.farmerCode" label="农户编码" placeholder="农户编码" input-align="right" :border="false"/> | ||||
| <van-field v-model="form.memberName" label="农户姓名" placeholder="农户姓名" input-align="right" :border="false"/> | <van-field v-model="form.memberName" label="农户姓名" placeholder="农户姓名" input-align="right" :border="false"/> | ||||
| <van-field v-model="form.idcard" label="身份证号" placeholder="身份证号" input-align="right" :border="false"/> | <van-field v-model="form.idcard" label="身份证号" placeholder="身份证号" input-align="right" :border="false"/> | ||||
| @@ -4,7 +4,7 @@ | |||||
| class="header_main" | class="header_main" | ||||
| :style="`background-image:url(${require(showBtn?'@/assets/images/sunVillage_info/list_head.png':'@/assets/images/sunVillage_info/list_head_red.png')})`" | :style="`background-image:url(${require(showBtn?'@/assets/images/sunVillage_info/list_head.png':'@/assets/images/sunVillage_info/list_head_red.png')})`" | ||||
| > | > | ||||
| 合同网签 | |||||
| 流转合同 | |||||
| <div class="return_btn" @click="onClickLeft"></div> | <div class="return_btn" @click="onClickLeft"></div> | ||||
| <!-- <div class="add_btn" @click="goAdd" v-show="showBtn"></div>--> | <!-- <div class="add_btn" @click="goAdd" v-show="showBtn"></div>--> | ||||
| </div> | </div> | ||||