Conflicts: src/api/sunVillage_info/fixedAssets.jsrongxin_prod
| @@ -127,6 +127,15 @@ export function getByLyZjddm(data){ | |||
| }) | |||
| } | |||
| // 宅基地信息条件查询 | |||
| export function selectHomesteadObligeeMapList(query) { | |||
| return request({ | |||
| url: '/home/homesteadshyqr/selectHomesteadObligeeMapList', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| //宅基地使用权流转农户查询 | |||
| export function queryHouserBaseNh(query) { | |||
| return request({ | |||
| @@ -0,0 +1,54 @@ | |||
| import request from '@/utils/request' | |||
| // 查询有偿计费标准列表 | |||
| export function listYcsyjfbz(query) { | |||
| return request({ | |||
| url: '/home/ycsyjfbz/list', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 导出有偿计费标准 | |||
| export function exportYcsyjfbz(query) { | |||
| return request({ | |||
| url: '/home/ycsyjfbz/export', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询有偿计费标准详细 | |||
| export function getYcsyjfbz(id) { | |||
| return request({ | |||
| url: '/home/ycsyjfbz/get/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| // 新增有偿计费标准 | |||
| export function addYcsyjfbz(data) { | |||
| return request({ | |||
| url: '/home/ycsyjfbz/add', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 修改有偿计费标准 | |||
| export function updateYcsyjfbz(data) { | |||
| return request({ | |||
| url: '/home/ycsyjfbz/edit', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 删除有偿计费标准 | |||
| export function delYcsyjfbz(id) { | |||
| return request({ | |||
| url: '/home/ycsyjfbz/remove/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| @@ -0,0 +1,61 @@ | |||
| import request from '@/utils/request' | |||
| // 查询村庄规划列表 | |||
| export function listProgramme(query) { | |||
| return request({ | |||
| url: '/home/programme/list', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询村庄规划预警列表 | |||
| export function programmeWarninglist(query) { | |||
| return request({ | |||
| url: '/home/programme/programmeWarninglist', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询村庄规划详细 | |||
| export function getProgramme(id) { | |||
| return request({ | |||
| url: '/home/programme/get/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| // 新增村庄规划 | |||
| export function addProgramme(data) { | |||
| return request({ | |||
| url: '/home/programme/add', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 修改村庄规划 | |||
| export function updateProgramme(data) { | |||
| return request({ | |||
| url: '/home/programme/edit', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 删除村庄规划 | |||
| export function delProgramme(id) { | |||
| return request({ | |||
| url: '/home/programme/remove/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| // 导出村庄规划 | |||
| export function exportProgramme(query) { | |||
| return request({ | |||
| url: '/home/programme/export', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| @@ -698,3 +698,57 @@ export function previewContractFile(id) { | |||
| method: 'get', | |||
| }) | |||
| } | |||
| // 查询多标段合同列表 | |||
| export function listMultiplelots(query) { | |||
| return request({ | |||
| url: '/transaction/multiplelots/list', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询多标段合同详情 | |||
| export function getMultiplelots(query, id) { | |||
| return request({ | |||
| url: '/transaction/multiplelots/get/' + id, | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 标段合同甲方签字 | |||
| export function multipleLotsFirstSign(data, id) { | |||
| return request({ | |||
| url: '/transaction/multiplelots/firstSign/' + id, | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 查询标段农户信息 | |||
| export function listMultipleLotsNh(query) { | |||
| return request({ | |||
| url: '/home/mobile/multipleLotsNh/list', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询标段农户详情 | |||
| export function getMultiplelotsNh(query, id) { | |||
| return request({ | |||
| url: '/home/mobile/multipleLotsNh/get/' + id, | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 标段合同乙方签字 | |||
| export function multipleLotsSecondSign(data, id) { | |||
| return request({ | |||
| url: '/transaction/multiplelotsnh/secondSign/' + id, | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| @@ -3839,6 +3839,42 @@ export const constantRoutes = [ | |||
| }, | |||
| component: (resolve) => require(['@/views/sunVillage_info/list_official'], resolve) | |||
| }, | |||
| { ////阳光村务(新)-- 标段合同网签 | |||
| path: '/sunVillage_info/list_multipleLots', | |||
| name: 'sunVillageInfoListMultipleLots', | |||
| meta: { | |||
| title: '标段合同网签', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/sunVillage_info/list_multipleLots'], resolve) | |||
| }, | |||
| { ////阳光村务(新)-- 标段合同详情 | |||
| path: '/sunVillage_info/list_multipleLots_detail', | |||
| name: 'sunVillageInfoListMultipleLotsDetail', | |||
| meta: { | |||
| title: '标段合同详情', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/sunVillage_info/list_multipleLots_detail'], resolve) | |||
| }, | |||
| { ////阳光村务(新)-- 标段农户网签 | |||
| path: '/sunVillage_info/list_multipleLotsNh', | |||
| name: 'sunVillageInfoListMultipleLotsNh', | |||
| meta: { | |||
| title: '标段合同网签', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/sunVillage_info/list_multipleLotsNh'], resolve) | |||
| }, | |||
| { ////阳光村务(新)-- 标段农户详情 | |||
| path: '/sunVillage_info/list_multipleLotsNh_detail', | |||
| name: 'sunVillageInfoListMultipleLotsNhDetail', | |||
| meta: { | |||
| title: '标段合同详情', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/sunVillage_info/list_multipleLotsNh_detail'], resolve) | |||
| }, | |||
| { ////阳光村务(新)-- 宅基地申请 | |||
| path: '/sunVillage_info/homeApplication/applicationList', | |||
| name: 'sunVillageInfoApplicationList', | |||
| @@ -222,6 +222,7 @@ | |||
| justify-content: center; | |||
| padding-top: 40PX; | |||
| width: 25%; | |||
| margin-top: 10PX; | |||
| &:nth-child(3){ | |||
| margin-right: 0; | |||
| } | |||
| @@ -0,0 +1,528 @@ | |||
| <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" :disabled="item.firstIsSign === '是'"> | |||
| <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.contractCode}}</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" :style="{'background': item.firstSigning != null ? '#2bc30c' : '#eb1616'}">{{item.signingStatus}}</p> | |||
| </div> | |||
| <div class="time"> | |||
| <p>{{item.contractName}}</p> | |||
| <p style="color:#eb1616;font-weight: bold;"><span style="font-size: 12px;">¥</span>{{item.contractMoney.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 == '线下' " @click="openPopupFile(item.attachement)"> | |||
| <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%' }"> | |||
| <van-uploader v-model="fileList" multiple disabled :deletable="false" :show-upload="false"/> | |||
| </van-popup> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import { listMultiplelots, multipleLotsFirstSign } from "@/api/sunVillage_info/fixedAssets"; | |||
| import vueEsign from "vue-esign"; | |||
| import signatureUploadSignature from "@/views/yinnong/signatureUploadSignature"; | |||
| import $ from "jquery"; | |||
| export default { | |||
| name: "sunVillageInfoListMultipleLots", | |||
| 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() { | |||
| listMultiplelots(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_multipleLots_detail', | |||
| query: { id: id } | |||
| }) | |||
| }, | |||
| openPopup(id, url) { | |||
| this.show = true; | |||
| this.signaId = id; | |||
| }, | |||
| openPopupFile(file) { | |||
| this.showFile = true; | |||
| if (!file) return; | |||
| let fileArray = file.split(','); | |||
| fileArray.map(res => { | |||
| this.fileList.push({ | |||
| url: '/api' + res, | |||
| isImage: true | |||
| }) | |||
| }) | |||
| }, | |||
| 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对象添加数据 | |||
| multipleLotsFirstSign(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%; | |||
| &.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,526 @@ | |||
| <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" | |||
| > | |||
| <!----1--> | |||
| <van-swipe-cell v-for="(item,index) in applicationList" :key="index" :disabled="item.secondIsSign === '是'" > | |||
| <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.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_mark2" :style="{'background': item.secondSigning!=null?'#2bc30c':'#eb1616'}">{{item.signingStatus}}</p> | |||
| </div> | |||
| <div class="time"> | |||
| <p>{{item.contractName}}</p> | |||
| <p style="color:#eb1616;font-weight: bold;"><span style="font-size: 12px;">¥</span>{{item.logAmount.toFixed(2)}}</p> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <template #right> | |||
| <div class="operation"> | |||
| <!-- delete 删除 edit编辑 view查看 list榜单 --> | |||
| <div class="opera_btn" @click="openPopup(item.id)" v-if="item.secondIsSign === '否' "> | |||
| <img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35"> | |||
| <p>签名</p> | |||
| </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 == '是' "> | |||
| <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | |||
| <p>电子合同</p> | |||
| </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> | |||
| </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> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import { listMultipleLotsNh, multipleLotsSecondSign } from "@/api/sunVillage_info/fixedAssets"; | |||
| import vueEsign from "vue-esign"; | |||
| import signatureUploadSignature from "@/views/yinnong/signatureUploadSignature"; | |||
| import $ from "jquery"; | |||
| import Cookies from "js-cookie"; | |||
| export default { | |||
| name: "sunVillageInfoListMultipleLotsNh", | |||
| components: {vueEsign, signatureUploadSignature}, | |||
| data() { | |||
| return { | |||
| applicationList: [], | |||
| loading: false, | |||
| finished: false, | |||
| show: false, | |||
| showFile: false, | |||
| fileList: [], | |||
| listLength: '0', | |||
| queryParams: { | |||
| pageNum: 1, | |||
| pageSize: 10, | |||
| idcard: 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.queryParams.idcard = JSON.parse(Cookies.get('user')).idcard; | |||
| }, | |||
| methods: { | |||
| canvasTTdown() { | |||
| $('#canvasTT').css('display', 'none'); | |||
| }, | |||
| getList() { | |||
| listMultipleLotsNh(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_multipleLotsNh_detail', | |||
| query: { id: id } | |||
| }) | |||
| }, | |||
| openPopup(id, url) { | |||
| this.show = true; | |||
| this.signaId = id; | |||
| }, | |||
| openPopupFile(file) { | |||
| this.showFile = true; | |||
| if (!file) return; | |||
| let fileArray = file.split(','); | |||
| fileArray.map(res => { | |||
| this.fileList.push({ | |||
| url: '/api' + res, | |||
| isImage: true | |||
| }) | |||
| }) | |||
| }, | |||
| 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对象添加数据 | |||
| multipleLotsSecondSign(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%; | |||
| &.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,190 @@ | |||
| <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.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.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.idcard" label="身份证号" placeholder="身份证号" input-align="right" :border="false"/> | |||
| <van-field v-model="form.phone" label="联系电话" placeholder="联系电话" input-align="right" :border="false"/> | |||
| <van-field v-model="form.lotArea" label="标段数量" placeholder="标段数量" input-align="right" :border="false"/> | |||
| <van-field v-model="form.lotUnit" label="数量单位" placeholder="数量单位" input-align="right" :border="false"/> | |||
| <van-field v-model="form.logAmount" label="金额(元)" placeholder="金额(元)" input-align="right" :border="false"/> | |||
| <van-field v-model="form.remark" label="备注" placeholder="备注" input-align="right" :border="false"/> | |||
| <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 {getMultiplelotsNh} from "@/api/sunVillage_info/fixedAssets"; | |||
| export default { | |||
| name: "listMultipleLotsNhDetail", | |||
| data() { | |||
| return { | |||
| form: {}, | |||
| }; | |||
| }, | |||
| created() { | |||
| this.getDetail(); | |||
| }, | |||
| methods: { | |||
| getDetail() { | |||
| let query = { | |||
| translate_dict: 1 | |||
| }; | |||
| getMultiplelotsNh(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> | |||
| @@ -0,0 +1,194 @@ | |||
| <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.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.firstParty" label="甲方" placeholder="甲方" input-align="right" :border="false"/> | |||
| <van-field v-model="form.contractMoney" label="合同金额(元)" placeholder="合同金额(元)" input-align="right" :border="false"/> | |||
| <van-field v-model="form.startTime" label="开始日期" placeholder="开始日期" input-align="right" :border="false"/> | |||
| <van-field v-model="form.endTime" label="结束日期" placeholder="结束日期" input-align="right" :border="false"/> | |||
| <van-field v-model="form.contractDate" label="登记日期" placeholder="登记日期" input-align="right" :border="false"/> | |||
| <van-field v-model="form.contractionStatus" 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" /> | |||
| </div> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import {getMultiplelots} from "@/api/sunVillage_info/fixedAssets"; | |||
| export default { | |||
| name: "listMultipleLotsDetail", | |||
| data() { | |||
| return { | |||
| form: {}, | |||
| }; | |||
| }, | |||
| created() { | |||
| this.getDetail(); | |||
| }, | |||
| methods: { | |||
| getDetail() { | |||
| let query = { | |||
| translate_dict: 1 | |||
| }; | |||
| getMultiplelots(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> | |||
| @@ -146,11 +146,6 @@ | |||
| } | |||
| }, | |||
| handleLogin(values) { | |||
| console.log(this.formData.username) | |||
| console.log(this.formData.password) | |||
| console.log(this.formData.code) | |||
| if (this.formData.rememberMe) { | |||
| Cookies.set("username", this.formData.username, { expires: 30 }); | |||
| Cookies.set("password", encrypt(this.formData.password), { expires: 30 }); | |||
| @@ -120,7 +120,7 @@ | |||
| return false; | |||
| } | |||
| checkFarmer(this.formData).then(response => { | |||
| console.log(response.data) | |||
| // console.log(response.data) | |||
| if (response.code == 200){ | |||
| Cookies.set("user", response.data, { expires: 30 }); | |||
| this.$router.push({path:'/sunVillage_info/index_code_rights'}) | |||
| @@ -106,10 +106,17 @@ | |||
| @confirm="onConfirmYcsydqsj" | |||
| /> | |||
| </van-popup> | |||
| <van-field v-model="circulation.ycsymj" label="有偿使用面积(㎡)" placeholder="请输入有偿使用面积㎡" input-align="right" label-width="auto"/> | |||
| <van-field v-model="circulation.ycsymjdj" label="有偿使用面积单价(元)" placeholder="请输入有偿使用面积单价" input-align="right" label-width="auto"/> | |||
| <van-field v-model="circulation.ycsyfy" label="有偿使用费用(元)" placeholder="请输入有偿使用费用" input-align="right" label-width="auto"/> | |||
| <van-field v-model="circulation.ycsymj" label="有偿使用面积(㎡)" placeholder="请输入有偿使用面积㎡" input-align="right" label-width="auto"> | |||
| <template #button> | |||
| <van-button size="small" @click="computeMJ" type="primary">计算</van-button> | |||
| </template> | |||
| </van-field> | |||
| <van-field v-model="circulation.ycsymjdj" label="有偿使用面积单价(元)" placeholder="请输入有偿使用面积单价" @change="changeDJ" input-align="right" label-width="auto"/> | |||
| <van-field v-model="circulation.ycsyfy" label="有偿使用费用(元)" placeholder="请输入有偿使用费用" input-align="right" label-width="auto"> | |||
| <template #button> | |||
| <van-button size="small" @click="computeFY" type="primary">计算</van-button> | |||
| </template> | |||
| </van-field> | |||
| <van-field v-model="circulation.fkfs" label="付款方式" placeholder="请输入付款方式" input-align="right" label-width="auto"/> | |||
| <van-field v-model="circulation.bz" label="备注" placeholder="请输入内容" input-align="right" label-width="auto"/> | |||
| @@ -132,10 +139,12 @@ | |||
| </template> | |||
| <script> | |||
| import { zjdzd } from "@/api/onlineHome/homestead/circulation"; | |||
| import { zjdzd,selectHomesteadObligeeMapList} from "@/api/onlineHome/homestead/circulation"; | |||
| import { ycsyAdd } from "@/api/onlineHome/homestead/paidUtilize"; | |||
| import { getShyqrs,getByLyZjddm,listHomesteadnmfw} from "@/api/sunVillage_info/homestead/paidExit"; | |||
| import { getShyqrs,getByLyZjddm} from "@/api/sunVillage_info/homestead/paidExit"; | |||
| import { listYcsyjfbz} from "@/api/onlineHome/homestead/homeuseycsyjfbz"; | |||
| import MapGisObtainTc from "@/components/Map/MapGisObtainTc"; | |||
| import {listProgramme} from "@/api/onlineHome/homestead/programme"; | |||
| export default { | |||
| name: "paidUtilizeAdd", | |||
| components: {MapGisObtainTc}, | |||
| @@ -149,11 +158,16 @@ | |||
| zjdDictionaries:[],//宅基地代码 | |||
| shyqrdmDictionaries:[],//使用权人 | |||
| getObligeeOptions:[],//下拉框列表 | |||
| //计算有偿使用面积 | |||
| jsmjData:{ | |||
| zdmjSum:0.00, | |||
| hzdmj:0.00, | |||
| }, | |||
| landStatus:"1", | |||
| tcqllx:'', | |||
| tclx:'', | |||
| tcfs:'', | |||
| zjlx:'', | |||
| zjlx:'身份证', | |||
| bcfs:'', | |||
| zjddm:'', | |||
| sysFarmer:{deptId:this.$store.state.user.loginDeptId,memberName:""}, | |||
| @@ -168,7 +182,7 @@ | |||
| showycsydqsj: false, | |||
| showDropList: false,//是否显示下拉框 | |||
| mapShow: false, | |||
| circulation:{}, | |||
| circulation:{ ycsymj:0.00, ycsyfy:0.00, ycsymjdj:0.00,sfyhdz:"0"}, | |||
| minDate: new Date(), | |||
| maxDate: new Date(2025, 10, 1), | |||
| currentDate: new Date(), | |||
| @@ -236,9 +250,6 @@ | |||
| getByLyZjddm(data).then((response) => { | |||
| this.$set(this.circulation, "sfyhdz", response.data.isMore); | |||
| // const baseImgUrl = this.$store.getters.baseRoutingUrl; | |||
| if(response.data.zdt != null && response.data.zdt !== ""){ | |||
| this.$set(this.form, "xzzp", response.rows[0].zdt); | |||
| } | |||
| }); | |||
| }, | |||
| /** 模糊查询人员信息 */ | |||
| @@ -336,6 +347,53 @@ | |||
| this.$refs.zjdProductResh.drawingLyPaceCountryDarw(); | |||
| },1000); | |||
| }, | |||
| /** 有偿使用面积计算 */ | |||
| computeMJ(){ | |||
| if(this.circulation.shyqrdbxm == null || this.circulation.shyqrdbxm === ""){ | |||
| return this.$toast("请先选择使用权人"); | |||
| } | |||
| let _this = this; | |||
| _this.$set( _this.circulation, "ycsymj", 0.00); | |||
| _this.$set( _this.jsmjData, "hzdmj", 0.00); | |||
| _this.$set( _this.jsmjData, "zdmjSum", 0.00); | |||
| listProgramme({}).then((res) => { | |||
| if(res.rows.length > 0){ | |||
| _this.$set( _this.jsmjData, "hzdmj", res.rows[0].maxArea); | |||
| } | |||
| selectHomesteadObligeeMapList({shyqrdbxm:_this.circulation.shyqrdbxm,landStatus:_this.landStatus}).then((response) => { | |||
| if (response.code == 200) { | |||
| response.data.map(function(item){ | |||
| _this.$set( _this.jsmjData, "zdmjSum", _this.jsmjData.zdmjSum + item.zjdzdxx.zdmj); | |||
| if(_this.jsmjData.zdmjSum - _this.jsmjData.hzdmj > 0){ | |||
| _this.$set( _this.circulation, "ycsymj", (_this.jsmjData.zdmjSum - _this.jsmjData.hzdmj).toFixed(2)); | |||
| }else{ | |||
| _this.$set( _this.circulation, "ycsymj", 0.00); | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| }) | |||
| }, | |||
| /**使用费用计算 */ | |||
| computeFY(){ | |||
| let _this = this; | |||
| _this.$set( _this.circulation, "ycsymjdj", 0.00); | |||
| _this.$set( _this.circulation, "ycsyfy", 0.00); | |||
| listYcsyjfbz({}).then(response => { | |||
| response.rows.map(function(item){ | |||
| if(_this.circulation.ycsymj >= item.startArea && _this.circulation.ycsymj <= item.endArea){ | |||
| _this.$set( _this.circulation, "ycsyfy", (_this.circulation.ycsymj * item.feeAmount).toFixed(2)); | |||
| } | |||
| }); | |||
| }); | |||
| }, | |||
| changeDJ() { | |||
| if (this.circulation.ycsymj != null) { | |||
| this.circulation.ycsyfy = ((this.circulation.ycsymj * this.circulation.ycsymjdj)).toFixed(2); | |||
| } | |||
| }, | |||
| goSubmit(){ | |||
| ycsyAdd(this.circulation).then(response => { | |||
| if(response.code = 200){ | |||
| @@ -25,9 +25,11 @@ | |||
| <template #icon> | |||
| <van-icon name="../../../static/images/onlineHome/icon_zjd9.png" size="30" color="#539FFD" style="margin-right: 10px;" /> | |||
| </template> | |||
| <span>{{item.ycsyfy}}元</span> | |||
| <template #label> | |||
| <p><b style="color: #539FFD;">{{item.sqrzjhm}}</b><i style="margin-right: 0.5rem;"></i><i >{{item.ycsykssj}} ~ </i><i style="margin-right: 0.5rem;"></i>{{item.ycsydqsj}}</p> | |||
| <p><b style="color: #539FFD;">{{item.sqrzjhm}}</b><i style="margin-right: 0.5rem;"></i></p> | |||
| </template> | |||
| </van-cell> | |||
| <template #right> | |||
| <van-row> | |||
| @@ -106,10 +106,17 @@ | |||
| @confirm="onConfirmYcsydqsj" | |||
| /> | |||
| </van-popup> | |||
| <van-field v-model="circulation.ycsymj" label="有偿使用面积(㎡)" placeholder="请输入有偿使用面积㎡" input-align="right" label-width="auto"/> | |||
| <van-field v-model="circulation.ycsymjdj" label="有偿使用面积单价(元)" placeholder="请输入有偿使用面积单价" input-align="right" label-width="auto"/> | |||
| <van-field v-model="circulation.ycsyfy" label="有偿使用费用(元)" placeholder="请输入有偿使用费用" input-align="right" label-width="auto"/> | |||
| <van-field v-model="circulation.ycsymj" label="有偿使用面积(㎡)" placeholder="请输入有偿使用面积㎡" input-align="right" label-width="auto"> | |||
| <template #button> | |||
| <van-button size="small" @click="computeMJ" type="primary">计算</van-button> | |||
| </template> | |||
| </van-field> | |||
| <van-field v-model="circulation.ycsymjdj" label="有偿使用面积单价(元)" placeholder="请输入有偿使用面积单价" @change="changeDJ" input-align="right" label-width="auto"/> | |||
| <van-field v-model="circulation.ycsyfy" label="有偿使用费用(元)" placeholder="请输入有偿使用费用" input-align="right" label-width="auto"> | |||
| <template #button> | |||
| <van-button size="small" @click="computeFY" type="primary">计算</van-button> | |||
| </template> | |||
| </van-field> | |||
| <van-field v-model="circulation.fkfs" label="付款方式" placeholder="请输入付款方式" input-align="right" label-width="auto"/> | |||
| <van-field v-model="circulation.bz" label="备注" placeholder="请输入内容" input-align="right" label-width="auto"/> | |||
| @@ -132,10 +139,12 @@ | |||
| </template> | |||
| <script> | |||
| import { zjdzd } from "@/api/onlineHome/homestead/circulation"; | |||
| import { zjdzd,selectHomesteadObligeeMapList } from "@/api/onlineHome/homestead/circulation"; | |||
| import { ycsyEdit,getYcsy } from "@/api/onlineHome/homestead/paidUtilize"; | |||
| import { getShyqrs,getByLyZjddm,listHomesteadnmfw} from "@/api/sunVillage_info/homestead/paidExit"; | |||
| import { listYcsyjfbz} from "@/api/onlineHome/homestead/homeuseycsyjfbz"; | |||
| import MapGisObtainTc from "@/components/Map/MapGisObtainTc"; | |||
| import {listProgramme} from "@/api/onlineHome/homestead/programme"; | |||
| export default { | |||
| name: "paidUtilizeAdd", | |||
| components: {MapGisObtainTc}, | |||
| @@ -149,6 +158,11 @@ | |||
| zjdDictionaries:[],//宅基地代码 | |||
| shyqrdmDictionaries:[],//使用权人 | |||
| getObligeeOptions:[],//下拉框列表 | |||
| //计算有偿使用面积 | |||
| jsmjData:{ | |||
| zdmjSum:0.00, | |||
| hzdmj:0.00, | |||
| }, | |||
| landStatus:"1", | |||
| tcqllx:'', | |||
| tclx:'', | |||
| @@ -243,31 +257,51 @@ | |||
| }, | |||
| /** 查找地图中宅基地 */ | |||
| closeMoule: function (data) { | |||
| this.circulation.zjddm = data; | |||
| let _this = this; | |||
| let handlerTime = this.getDate(); | |||
| this.$set(this.circulation, "sqrq", handlerTime); | |||
| this.$set(this.circulation, "pzrq", handlerTime); | |||
| this.$set(this.circulation, "barq", handlerTime); | |||
| getByLyZjddm(data).then((response) => { | |||
| this.$set(this.circulation, "ntcmj", response.data.zdmj); | |||
| this.$set(this.circulation, "tcmj", response.data.zdmj); | |||
| this.$set(this.circulation, "zjdszd", response.data.zdszd); | |||
| this.$set(this.circulation, "zjdszn", response.data.zdszn); | |||
| this.$set(this.circulation, "zjdszx", response.data.zdszx); | |||
| this.$set(this.circulation, "zjdszb", response.data.zdszb); | |||
| this.$set(this.circulation, "theGeomJson", response.data.theGeomJson); | |||
| this.$set(this.circulation, "tcqszsh", response.data.zsh); | |||
| listHomesteadnmfw({zjddm: data}).then((res) => { | |||
| res.rows.map(function(item){ | |||
| _this.$set(_this.circulation, "jzmj", Number(_this.circulation.jzmj) + Number(item.jzmj)); | |||
| _this.$set(_this.circulation, "xjzmj", Number(_this.circulation.xjzmj) + Number(item.jzmj)); | |||
| }); | |||
| }); | |||
| this.$set(this.circulation, "sfyhdz", response.data.isMore); | |||
| // const baseImgUrl = this.$store.getters.baseRoutingUrl; | |||
| if(response.data.zdt != null && response.data.zdt !== ""){ | |||
| this.$set(this.form, "xzzp", response.rows[0].zdt); | |||
| }); | |||
| }, | |||
| /** 有偿使用面积计算 */ | |||
| computeMJ(){ | |||
| if(this.circulation.shyqrdbxm == null || this.circulation.shyqrdbxm === ""){ | |||
| return this.$toast("请先选择使用权人"); | |||
| } | |||
| let _this = this; | |||
| _this.$set( _this.circulation, "ycsymj", 0.00); | |||
| _this.$set( _this.jsmjData, "hzdmj", 0.00); | |||
| _this.$set( _this.jsmjData, "zdmjSum", 0.00); | |||
| listProgramme({}).then((res) => { | |||
| if(res.rows.length > 0){ | |||
| _this.$set( _this.jsmjData, "hzdmj", res.rows[0].maxArea); | |||
| } | |||
| selectHomesteadObligeeMapList({shyqrdbxm:_this.circulation.shyqrdbxm,landStatus:_this.landStatus}).then((response) => { | |||
| if (response.code == 200) { | |||
| response.data.map(function(item){ | |||
| _this.$set( _this.jsmjData, "zdmjSum", _this.jsmjData.zdmjSum + item.zjdzdxx.zdmj); | |||
| if(_this.jsmjData.zdmjSum - _this.jsmjData.hzdmj > 0){ | |||
| _this.$set( _this.circulation, "ycsymj", (_this.jsmjData.zdmjSum - _this.jsmjData.hzdmj).toFixed(2)); | |||
| }else{ | |||
| _this.$set( _this.circulation, "ycsymj", 0.00); | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| }) | |||
| }, | |||
| /**使用费用计算 */ | |||
| computeFY(){ | |||
| let _this = this; | |||
| _this.$set( _this.circulation, "ycsymjdj", 0.00); | |||
| _this.$set( _this.circulation, "ycsyfy", 0.00); | |||
| listYcsyjfbz({}).then(response => { | |||
| response.rows.map(function(item){ | |||
| if(_this.circulation.ycsymj >= item.startArea && _this.circulation.ycsymj <= item.endArea){ | |||
| _this.$set( _this.circulation, "ycsyfy", (_this.circulation.ycsymj * item.feeAmount).toFixed(2)); | |||
| } | |||
| }); | |||
| }); | |||
| }, | |||
| /** 模糊查询人员信息 */ | |||
| @@ -365,6 +399,11 @@ | |||
| this.$refs.zjdProductResh.drawingLyPaceCountryDarw(); | |||
| },1000); | |||
| }, | |||
| changeDJ() { | |||
| if (this.circulation.ycsymj != null) { | |||
| this.circulation.ycsyfy = ((this.circulation.ycsymj * this.circulation.ycsymjdj)).toFixed(2); | |||
| } | |||
| }, | |||
| goSubmit(){ | |||
| ycsyEdit(this.circulation).then(response => { | |||
| if(response.code = 200){ | |||