瀏覽代碼

Merge remote-tracking branch 'origin/master'

rongxin_prod
Xyq123* 2 年之前
父節點
當前提交
d185cbe53e
共有 39 個文件被更改,包括 3201 次插入65 次删除
  1. +17
    -0
      src/api/plotPremisesMobile/index.js
  2. +96
    -0
      src/api/sunVillage_info/fixedAssets.js
  3. 二進制
      src/assets/images/location/blue.png
  4. 二進制
      src/assets/images/location/green.png
  5. 二進制
      src/assets/images/location/map_icon_1.png
  6. 二進制
      src/assets/images/location/map_icon_2.png
  7. 二進制
      src/assets/images/location/map_icon_3.png
  8. 二進制
      src/assets/images/location/map_icon_4.png
  9. 二進制
      src/assets/images/location/map_icon_5.png
  10. 二進制
      src/assets/images/location/map_icon_6.png
  11. 二進制
      src/assets/images/location/map_icon_7.png
  12. 二進制
      src/assets/images/location/red.png
  13. 二進制
      src/assets/images/location/yellow.png
  14. 二進制
      src/assets/images/sunVillage_info/index_icon_12.png
  15. 二進制
      src/assets/images/sunVillage_info/index_icon_13.png
  16. +2
    -0
      src/permission.js
  17. +77
    -4
      src/router/index.js
  18. +372
    -0
      src/views/plotPremisesMobile/index.vue
  19. +1
    -0
      src/views/sunVillage_info/index_code_rights.vue
  20. +577
    -0
      src/views/sunVillage_info/list_cbf.vue
  21. +567
    -0
      src/views/sunVillage_info/list_cbht.vue
  22. +206
    -0
      src/views/sunVillage_info/list_cbht_detail.vue
  23. +51
    -19
      src/views/sunVillage_info/list_multipleLots.vue
  24. +552
    -0
      src/views/sunVillage_info/list_multipleLotsNh.vue
  25. +191
    -0
      src/views/sunVillage_info/list_multipleLotsNh_detail.vue
  26. +3
    -11
      src/views/sunVillage_info/list_multipleLots_detail.vue
  27. +20
    -18
      src/views/sunVillage_info/list_signature.vue
  28. +223
    -0
      src/views/sunVillage_info/list_signature_pdf.vue
  29. +0
    -5
      src/views/sunVillage_info/login.vue
  30. +1
    -1
      src/views/sunVillage_info/login_code.vue
  31. +26
    -5
      src/views/user/signature/signatureList.vue
  32. +218
    -0
      src/views/user/signature/signaturePdf.vue
  33. +1
    -2
      src/views/yinnongLogin.vue
  34. 二進制
      static/images/plotPremises/map_bg.png
  35. 二進制
      static/images/plotPremises/plotPremises_icon_01.png
  36. 二進制
      static/images/plotPremises/plotPremises_icon_02.png
  37. 二進制
      static/images/plotPremises/plotPremises_icon_03.png
  38. 二進制
      static/images/plotPremises/plotPremises_img.png
  39. 二進制
      static/images/plotPremises/positioning.png

+ 17
- 0
src/api/plotPremisesMobile/index.js 查看文件

@@ -0,0 +1,17 @@
import request from '@/utils/request'

//获根据用户获取其所在的行政单位(对象)信息
export function getUserGeo() {
return request({
url: '/bigData/common/getUserGeo',
method: 'get',
})
}

//获取村级下拉
export function getUserGeoList(query) {
return request({
url: '/bigData/common/getUserGeoList/'+query,
method: 'get'
})
}

+ 96
- 0
src/api/sunVillage_info/fixedAssets.js 查看文件

@@ -683,6 +683,22 @@ export function contractGet(query,id) {
}) })
} }


//线下合同附件列表
export function contractFileList(id) {
return request({
url: '/transaction/website/contractFileList/id/'+id,
method: 'get',
})
}

//线上合同预览
export function previewContractFile(id) {
return request({
url: '/transaction/website/previewContractFile/id/'+id,
method: 'get',
})
}

// 查询多标段合同列表 // 查询多标段合同列表
export function listMultiplelots(query) { export function listMultiplelots(query) {
return request({ return request({
@@ -709,3 +725,83 @@ export function multipleLotsFirstSign(data, id) {
data: data 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
})
}

// 查询承包合同列表
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
})
}

二進制
src/assets/images/location/blue.png 查看文件

Before After
Width: 19  |  Height: 31  |  Size: 1.3 KiB

二進制
src/assets/images/location/green.png 查看文件

Before After
Width: 19  |  Height: 31  |  Size: 1.3 KiB

二進制
src/assets/images/location/map_icon_1.png 查看文件

Before After
Width: 50  |  Height: 56  |  Size: 4.1 KiB

二進制
src/assets/images/location/map_icon_2.png 查看文件

Before After
Width: 50  |  Height: 56  |  Size: 3.9 KiB

二進制
src/assets/images/location/map_icon_3.png 查看文件

Before After
Width: 50  |  Height: 56  |  Size: 4.2 KiB

二進制
src/assets/images/location/map_icon_4.png 查看文件

Before After
Width: 50  |  Height: 56  |  Size: 4.1 KiB

二進制
src/assets/images/location/map_icon_5.png 查看文件

Before After
Width: 50  |  Height: 56  |  Size: 3.9 KiB

二進制
src/assets/images/location/map_icon_6.png 查看文件

Before After
Width: 50  |  Height: 56  |  Size: 3.9 KiB

二進制
src/assets/images/location/map_icon_7.png 查看文件

Before After
Width: 50  |  Height: 56  |  Size: 3.8 KiB

二進制
src/assets/images/location/red.png 查看文件

Before After
Width: 19  |  Height: 31  |  Size: 1.3 KiB

二進制
src/assets/images/location/yellow.png 查看文件

Before After
Width: 19  |  Height: 31  |  Size: 1.7 KiB

二進制
src/assets/images/sunVillage_info/index_icon_12.png 查看文件

Before After
Width: 65  |  Height: 58  |  Size: 3.2 KiB

二進制
src/assets/images/sunVillage_info/index_icon_13.png 查看文件

Before After
Width: 65  |  Height: 58  |  Size: 3.1 KiB

+ 2
- 0
src/permission.js 查看文件

@@ -200,6 +200,8 @@ const whiteList = [
// '/agriculturalTrusteeship/billDetail4',//买家选购-订单详情 // '/agriculturalTrusteeship/billDetail4',//买家选购-订单详情
// '/agriculturalTrusteeship/evaluate',//买家选购-服务评价 // '/agriculturalTrusteeship/evaluate',//买家选购-服务评价


'/plotPremisesMobile/index',//两清三化

] ]


router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {


+ 77
- 4
src/router/index.js 查看文件

@@ -254,6 +254,15 @@ export const constantRoutes = [
}, },
component: (resolve) => require(['@/views/user/signature/signatureDetail'], resolve) component: (resolve) => require(['@/views/user/signature/signatureDetail'], resolve)
}, },
{
path: '/user/signature/signaturePdf',
name: 'userSignaturePdf',
meta: {
title: '合同预览',
hidden: true,
},
component: (resolve) => require(['@/views/user/signature/signaturePdf'], resolve)
},
{ {
path: '/accountSetting', path: '/accountSetting',
name: 'accountSetting', name: 'accountSetting',
@@ -3822,6 +3831,15 @@ export const constantRoutes = [
}, },
component: (resolve) => require(['@/views/sunVillage_info/list_signature_add'], resolve) component: (resolve) => require(['@/views/sunVillage_info/list_signature_add'], resolve)
}, },
{ ////阳光村务(新)-- 合同网签
path: '/sunVillage_info/list_signature_pdf',
name: 'sunVillageInfoListSignaturePdf',
meta: {
title: '合同预览',
hidden: true,
},
component: (resolve) => require(['@/views/sunVillage_info/list_signature_pdf'], resolve)
},
{ ////阳光村务(新)-- 村级公章 { ////阳光村务(新)-- 村级公章
path: '/sunVillage_info/list_official', path: '/sunVillage_info/list_official',
name: 'sunVillageInfoListOfficial', name: 'sunVillageInfoListOfficial',
@@ -3840,14 +3858,59 @@ export const constantRoutes = [
}, },
component: (resolve) => require(['@/views/sunVillage_info/list_multipleLots'], resolve) component: (resolve) => require(['@/views/sunVillage_info/list_multipleLots'], resolve)
}, },
{ ////阳光村务(新)-- 标段合同网签
path: '/sunVillage_info/list_multipleLots_add',
name: 'sunVillageInfoListMultipleLotsAdd',
{ ////阳光村务(新)-- 标段合同详情
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: { meta: {
title: '标段合同网签', title: '标段合同网签',
hidden: true, hidden: true,
}, },
component: (resolve) => require(['@/views/sunVillage_info/list_multipleLots_add'], resolve)
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/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',
@@ -5420,6 +5483,16 @@ export const constantRoutes = [
}, },
component: (resolve) => require(['@/views/agriculturalTrusteeship/buyer/evaluate'], resolve) component: (resolve) => require(['@/views/agriculturalTrusteeship/buyer/evaluate'], resolve)
}, },
//<--------------------------------------两清三化-------------------------------------->
{
path: '/plotPremisesMobile/index',
name: 'plotPremisesMobile',
meta: {
title: '两清三化',
hidden: true,
},
component: (resolve) => require(['@/views/plotPremisesMobile/index'], resolve)
},
]; ];






+ 372
- 0
src/views/plotPremisesMobile/index.vue 查看文件

@@ -0,0 +1,372 @@
<template>
<div class="home_wrapper">
<div class="map_main" id="mapWrap"></div>

<div class="top_address" @click="showAddress=true">
<i class="address_icon"></i>
<p>羊亭</p>
<p>/北上夼</p>
</div>

<van-popup v-model="show" position="bottom" :overlay="false" round>
<div class="pop_main">

<div class="pop_title">
<i class="address_icon"></i>
<p>羊亭镇-北上夼村</p>
</div>

<div class="pop_content">
<div class="pop_content_left">
<img src="../../../static/images/plotPremises/plotPremises_icon_01.png" alt="">
<div class="pop_content_left_box">
<div>
<p>农房 <span>(栋)</span></p>
<p class="num">352</p>
</div>
<span class="border"></span>
<div>
<p>可租 <span>(栋)</span></p>
<p class="num" @click="showList = true,activeName='nf'">71</p>
</div>
</div>
</div>
<div class="pop_content_left">
<img src="../../../static/images/plotPremises/plotPremises_icon_02.png" alt="">
<div class="pop_content_left_box">
<div>
<p>农地 <span>(亩)</span></p>
<p class="num">352</p>
</div>
<span class="border"></span>
<div>
<p>可租 <span>(亩)</span></p>
<p class="num" @click="showList = true,activeName='nd'">71</p>
</div>
</div>
</div>
</div>

</div>
</van-popup>

<van-popup v-model="showZD" closeable position="bottom" :closed="show=true" :overlay="false" round>
<div class="pop_main">

<div class="pop_title">
<i class="address_icon"></i>
<p>羊亭镇-北上夼村-107</p>
</div>

<div class="pop_content_zd">
<img src="../../../static/images/plotPremises/plotPremises_img.png" alt="">

<div class="pop_content_zd_right">
<van-row type="flex" justify="space-between">
<van-col>租地位置:</van-col>
<van-col>北上夼村</van-col>
</van-row>
<van-row type="flex" justify="space-between">
<van-col>租地编号:</van-col>
<van-col class="num">310</van-col>
</van-row>
<van-row type="flex" justify="space-between">
<van-col>租地面积:</van-col>
<van-col class="num">12亩</van-col>
</van-row>
<van-row type="flex" justify="space-between">
<van-col>咨询代表:</van-col>
<van-col>张村委</van-col>
</van-row>
<van-row type="flex" justify="space-between">
<van-col>咨询电话:</van-col>
<van-col class="num">13306310631</van-col>
</van-row>
</div>

</div>

</div>
</van-popup>

<van-popup v-model="showZF" closeable position="bottom" :closed="show=true" :overlay="false" round>
<div class="pop_main">

<div class="pop_title">
<i class="address_icon"></i>
<p>羊亭镇-北上夼村-107</p>
</div>

<div class="pop_content_zd">
<img src="../../../static/images/plotPremises/plotPremises_img.png" alt="">

<div class="pop_content_zd_right">
<van-row type="flex" justify="space-between">
<van-col>租房位置:</van-col>
<van-col>北上夼村</van-col>
</van-row>
<van-row type="flex" justify="space-between">
<van-col>租房编号:</van-col>
<van-col class="num">310</van-col>
</van-row>
<van-row type="flex" justify="space-between">
<van-col>租房面积:</van-col>
<van-col class="num">12亩</van-col>
</van-row>
<van-row type="flex" justify="space-between">
<van-col>咨询代表:</van-col>
<van-col>张村委</van-col>
</van-row>
<van-row type="flex" justify="space-between">
<van-col>咨询电话:</van-col>
<van-col class="num">13306310631</van-col>
</van-row>
</div>

</div>

</div>
</van-popup>

<van-popup v-model="showList" close-icon="../../../static/images/plotPremises/plotPremises_icon_03.png" closeable position="right" :closed="show=true" :overlay="false" round :style="{ width: '45%' , height: '60%' , background:'#ffffff' }">
<div class="pop_main_right">

<p class="pop_title" :style="{color:activeName=='nf'?'#1B65F8':'#FF7321'}">{{activeName=='nf'?'待租农房':'待租农地'}}</p>

<div class="pop_content_right">
<van-row>
<van-col span="8" offset="4">编号</van-col>
<van-col span="9" offset="3">面积</van-col>
</van-row>
<van-row v-for="(item,index) in 20"
:key="index"
@click="listChange(index)"
:class="{ active: selectChooseOrder == index }"
>
<van-col span="8" offset="4" class="num">101</van-col>
<van-col span="9" offset="3" class="num">3亩</van-col>
</van-row>
</div>

<div class="pop_btn_right">
<p :style="{background:activeName=='nf'?'#1B65F8':'',color:activeName=='nf'?'#ffffff':''}" @click="tabChange('nf')">农房</p>
<p :style="{background:activeName=='nd'?'#FF7321':'',color:activeName=='nd'?'#ffffff':''}" @click="tabChange('nd')">农地</p>
</div>


</div>
</van-popup>

<van-popup v-model="showAddress" position="bottom" round>
<van-picker show-toolbar title="村镇选择" :columns="columns" />
</van-popup>

</div>
</template>

<script>
import $ from "jquery";

export default {
data() {
return {
show:true,
showZD:false,
showZF:false,
showList:false,
showAddress:false,
activeName:'nf',
selectChooseOrder:-1,
columns: [
{
text: '浙江',
children: [
{
text: '杭州',
children: [{ text: '西湖区' }, { text: '余杭区' }],
},
{
text: '温州',
children: [{ text: '鹿城区' }, { text: '瓯海区' }],
},
],
},
{
text: '福建',
children: [
{
text: '福州',
children: [{ text: '鼓楼区' }, { text: '台江区' }],
},
{
text: '厦门',
children: [{ text: '思明区' }, { text: '海沧区' }],
},
],
},
],
};
},
created() {

},
methods: {
tabChange(name){
this.activeName = name;
},
listChange(id){
this.selectChooseOrder = id;
this.show = false;
this.showZF = false;
this.showZD = true;
}
},
};
</script>

<style scoped lang="scss">
.home_wrapper {
background: #e9e9e9;
min-height: 100vh;
width: 100vw;
}
.num{
font-family: Arial;
}
.map_main{
width: 100%;
height: 100vh;
background: url("../../../static/images/plotPremises/map_bg.png") no-repeat center;
background-size: 100%;
}
/deep/ .van-popup{
background: #F1F0F5;
}
/deep/ .van-popup--right{
top: 35%;
.van-icon__image{
width: .7em;
height: .7em;
display: block;
}
}
.top_address{
display: flex;
align-items: center;
position: absolute;
top: 5vh;
left: 3vw;
padding: 1vh 2vh;
background: #ffffff;
border-radius: 5vh;
p{font-size: 1.5vh}
}
.address_icon {
width: 13PX;
height: 17PX;
background: url("../../../static/images/plotPremises/positioning.png") no-repeat;
background-size: 100% 100%;
margin-right: 1vw;
}
.pop_main{
padding: 2vh 3vw;
.pop_title{
display: flex;
align-items: center;
font-size: 2.2vh;
line-height: 1;
}
.pop_content{
display: flex;
justify-content: space-between;
margin-top: 2vh;
.pop_content_left{
background: #ffffff;
width: 48%;
padding: 1.5vh 3vw;
border-radius: 15PX;
.pop_content_left_box{
display: flex;
justify-content: space-between;
margin-top: .5vh;
.border{
border-left: 2PX dashed #DFDFDF;
}
div{
p{
&:first-child{
font-size: 2vh;
color: #797979;
span{
font-size: 1.5vh;
}
}
&:last-child{
font-size: 3vh;
color: #333333;
}
}
&:last-child{
p:last-child{
color: #1B65F8;
}
}
}
}
}
}
.pop_content_zd{
background: #ffffff;
border-radius: 15PX;
display: flex;
justify-content: space-between;
margin-top: 2vh;
overflow: hidden;
img{width: 40%;}
.pop_content_zd_right{
width: 60%;
padding:1.5vh 2.5vh;
font-size: 1.8vh;
display: flex;
flex-direction: column;
justify-content: space-between;
}
}
}
.pop_main_right{

.pop_title{
font-size: 2.2vh;
color: #1B65F8;
padding: 1.5vh;
}

.pop_content_right{
font-size: 1.8vh;
height: 48vh;
overflow-y: scroll;
.active{
box-shadow:0px 0px 5px #999999;
}
.van-row{
padding: 1vh 0;
}
}

.pop_btn_right{
display: flex;
width: 100%;
position: absolute;
bottom: 0;
p{
padding: 1.5vh 0;
text-align: center;
font-size: 2vh;
flex: 1;
background: #E1E0E4;
color: #9F9F9F;
}
}

}
</style>

+ 1
- 0
src/views/sunVillage_info/index_code_rights.vue 查看文件

@@ -222,6 +222,7 @@
justify-content: center; justify-content: center;
padding-top: 40PX; padding-top: 40PX;
width: 25%; width: 25%;
margin-top: 10PX;
&:nth-child(3){ &:nth-child(3){
margin-right: 0; margin-right: 0;
} }


+ 577
- 0
src/views/sunVillage_info/list_cbf.vue 查看文件

@@ -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>

+ 567
- 0
src/views/sunVillage_info/list_cbht.vue 查看文件

@@ -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>

+ 206
- 0
src/views/sunVillage_info/list_cbht_detail.vue 查看文件

@@ -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>

+ 51
- 19
src/views/sunVillage_info/list_multipleLots.vue 查看文件

@@ -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";
@@ -132,7 +137,9 @@
}, },
getList() { getList() {
listMultiplelots(this.queryParams).then(response => { listMultiplelots(this.queryParams).then(response => {
this.applicationList = response.rows;
response.rows.forEach(item => {
this.applicationList.push(item);
});


if (this.applicationList.length >= response.total) { if (this.applicationList.length >= response.total) {
this.finished = true; this.finished = true;
@@ -145,7 +152,7 @@
}, },
goDetail(id) { goDetail(id) {
this.$router.push({ this.$router.push({
path: '/sunVillage_info/list_multipleLots_add',
path: '/sunVillage_info/list_multipleLots_detail',
query: { id: id } query: { id: id }
}) })
}, },
@@ -153,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;
@@ -421,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;


+ 552
- 0
src/views/sunVillage_info/list_multipleLotsNh.vue 查看文件

@@ -0,0 +1,552 @@
<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 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.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" v-if="item.signingMode === '线上'" :style="{'background': item.secondSigning!=null?'#2bc30c':'#eb1616'}">{{item.secondIsSign === '是' ? '已签名' : '未签名'}}</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">
<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" @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 { 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 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(id){
this.fileList = [];
this.signaId = id;
this.showFile = 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) {
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%;
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>

+ 191
- 0
src/views/sunVillage_info/list_multipleLotsNh_detail.vue 查看文件

@@ -0,0 +1,191 @@
<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.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.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>

src/views/sunVillage_info/list_multipleLots_add.vue → src/views/sunVillage_info/list_multipleLots_detail.vue 查看文件

@@ -22,32 +22,24 @@
<van-field v-model="form.firstIsSign" label="甲方已签" placeholder="甲方已签" input-align="right" :border="false"/> <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 v-model="form.firstPartyAt" label="甲方签字日期" placeholder="甲方签字日期" input-align="right" :border="false"/>
<van-field label="甲方签字" 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">
<img :src="'/api'+form.firstSigning" width="100%" alt="" v-if="form.firstSigning" />
<van-field label="村级公章" input-align="right" :border="false" /> <van-field label="村级公章" input-align="right" :border="false" />
<img :src="'/api'+form.firstSeal" width="100%" alt="" v-if="form.firstSeal">

<img :src="'/api'+form.firstSeal" width="100%" alt="" v-if="form.firstSeal" />
</div> </div>
</div> </div>
</template> </template>


<script> <script>
import {getMultiplelots} from "@/api/sunVillage_info/fixedAssets"; import {getMultiplelots} from "@/api/sunVillage_info/fixedAssets";
import Cookies from "js-cookie";


export default { export default {
name: "certificateList",
name: "listMultipleLotsDetail",
data() { data() {
return { return {
form: {}, form: {},
queryParams: {
bookId: '',
deptId: ''
},
}; };
}, },
created() { created() {
this.queryParams.bookId = Cookies.get('bookId');
this.queryParams.deptId = Cookies.get('deptId');
this.getDetail(); this.getDetail();
}, },
methods: { methods: {

+ 20
- 18
src/views/sunVillage_info/list_signature.vue 查看文件

@@ -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>
@@ -36,22 +36,21 @@
<template #right> <template #right>
<div class="operation"> <div class="operation">
<!-- delete 删除 edit编辑 view查看 list榜单 --> <!-- delete 删除 edit编辑 view查看 list榜单 -->

<div class="opera_btn" v-if="item.signingMode == '线上' && item.firstIsSign =='否' " @click="openPopup(item.id)"> <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"> <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 ">
<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"> <img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35">
<p>预览</p> <p>预览</p>
</div> </div>
<div class="opera_btn" v-if="item.signingMode == '线上' && item.isArchive == '是' "> <div class="opera_btn" v-if="item.signingMode == '线上' && item.isArchive == '是' ">
<a :href="'/api'+item.contractPdf" style="color: #333333">
<a :href="'/api/profile/download'+item.contractPdf" style="color: #333333">
<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>
</a> </a>
</div> </div>
<div class="opera_btn" v-if="item.signingMode == '线下' " @click="openPopupFile(item.attachement)">
<div class="opera_btn" v-if="item.signingMode == '线下' " @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>
@@ -85,14 +84,15 @@
</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: '40%' , padding: '5vh 2vh' }" >
<van-uploader v-if="fileList.length>0" v-model="fileList" multiple :deletable="false" :show-upload="false" />
<van-empty v-else description="暂无附件" />
</van-popup> </van-popup>
</div> </div>
</template> </template>


<script> <script>
import { contractFirstList , signFirst } from "@/api/sunVillage_info/fixedAssets";
import { contractFirstList , signFirst , contractFileList , previewContractFile } from "@/api/sunVillage_info/fixedAssets";
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";
@@ -125,7 +125,7 @@
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分 isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
}, },
signaId:'', signaId:'',
height:null
height:null,
}; };
}, },
created() { created() {
@@ -159,17 +159,17 @@
this.show = true; this.show = true;
this.signaId = id; this.signaId = id;
}, },
openPopupFile(file){
openPopupFile(id){
this.fileList = [];
this.showFile = true; this.showFile = true;
console.log(file)
if (!file) return;
let fileArray = file.split(',');
fileArray.map(res=>{
this.fileList.push({
url: '/api'+res,
isImage: true
contractFileList(id).then(response => {
response.data.map(res=>{
this.fileList.push({
url: '/api'+res.fileUrl,
isImage: true
})
}) })
})
});
}, },
signaImgFun(url){ signaImgFun(url){
this.signatureImg = url; this.signatureImg = url;
@@ -407,6 +407,8 @@
margin-left: 10PX; margin-left: 10PX;
.opera_btn{ .opera_btn{
border-radius: 50%; border-radius: 50%;
margin-left: 10PX;
&:first-child{margin: 0;}
&.delete{ &.delete{
background:#df0707; background:#df0707;
margin-left: 10PX; margin-left: 10PX;


+ 223
- 0
src/views/sunVillage_info/list_signature_pdf.vue 查看文件

@@ -0,0 +1,223 @@
<template>
<div class="app-container">
<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>
<pdf v-for="item in numPages" :key="item" :src="url" :page="item" ref="pdf"></pdf>
</div>
</template>

<script>
import { } from "@/api/lawEnforcement/index";
import pdf from 'vue-pdf'
import {previewContractFile} from "@/api/sunVillage_info/fixedAssets";
export default {
components:{
pdf
},
name: "programmeDetail",
data() {
return {
url:'',
numPages: null, // pdf 总页数
showBtn:true,
};
},
created() {
if (this.$route.query.type == 'code'){
this.showBtn = false;
}
const id = this.$route.query.id;
const baseURL = process.env.VUE_APP_BASE_API;
previewContractFile(id).then(response => {
this.url = baseURL + response.msg;
let loadingTask = pdf.createLoadingTask(this.url)
loadingTask.promise.then(pdf => {
this.numPages = pdf.numPages
})
});
},
methods: {
goBack(){
window.history.go(-1)
}
},
}
</script>

<style scoped lang="scss">
.app-container {
}
/deep/ .van-collapse-item__content{
padding: 0;
}
.cf{
padding: 0 3%;
margin-top: 20PX;
margin-bottom: 20PX;
.van-row{
background: #F0F3F5;
display: flex;
align-items: center;
.van-col{
padding: 5PX 0;
font-size: 12PX!important;
text-align: center;
p{
color: #1D6FE9;
text-align: left;
font-size: .4rem;
}
}
&:first-child{
background: transparent;
}
}
}
.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;
}
}
/deep/ .van-radio--horizontal{
margin-left: 0.32rem;
margin-right: 0;
}
.peopleList{
padding: 0 3%;
text-align: left;
.van-row{
border-bottom: 1px solid #dddddd;
display: flex;
align-items: center;
&:last-child{
border: none;
}
.van-col--17{
display: flex;
align-items: center;
p{
margin-left: 10PX;
}
}
.van-col--7{
display: flex;
justify-content: space-between;
p{
color: #1D6FE9;
border: 1px solid #1D6FE9;
text-align: center;
border-radius: 15PX;
display: inline-block;
padding: 5px 15px;
}
}
.van-col{
text-align: left;
font-size: 14PX;
color: #333333;
padding: 15PX 0;
img{
display: block;
}
}
}
}
.main_title{
font-size: 0.4rem;
color: #1D6FE9;
margin: 0.2rem 6%;
margin-top: 0;
position: relative;
}
.main_box{
width: 96%;
margin: 0 auto;
border-radius: 10PX;
box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
overflow: hidden;
background-color: #FFF;
.van-icon{
vertical-align: middle;
}
.custom-title{
font-size: 17PX;
color: #333333;
vertical-align: middle;
line-height: 1;
position: relative;
}
.tap{
color: #1D6FE9;
}
.bgBlue{
display: block;
position: absolute;
width: 17PX;
height: 17PX;
border-radius: 50%;
background-color: rgba(29,111,233,0.26);
top: -2PX;
right: -8PX;
}
}
.submitButton{
width: 40%;
margin: 0 auto;
background-image: linear-gradient(to right, #77A6EF , #2E79E9);
text-align: center;
color: #ffffff;
height: 70px;
line-height: 70px;
border-radius: 8PX;
margin-top: 25PX;
&:first-child{
background-image: linear-gradient(to right, #21CAC3 , #17A8A2);
}
}
.submit_box{
display: flex;
align-items: center;
justify-content: space-around;
}

.addFamily{
position: absolute;
top: -2px;
right: 0;
border-radius: 50%;
}

</style>

+ 0
- 5
src/views/sunVillage_info/login.vue 查看文件

@@ -146,11 +146,6 @@
} }
}, },
handleLogin(values) { handleLogin(values) {
console.log(this.formData.username)
console.log(this.formData.password)
console.log(this.formData.code)


if (this.formData.rememberMe) { if (this.formData.rememberMe) {
Cookies.set("username", this.formData.username, { expires: 30 }); Cookies.set("username", this.formData.username, { expires: 30 });
Cookies.set("password", encrypt(this.formData.password), { expires: 30 }); Cookies.set("password", encrypt(this.formData.password), { expires: 30 });


+ 1
- 1
src/views/sunVillage_info/login_code.vue 查看文件

@@ -120,7 +120,7 @@
return false; return false;
} }
checkFarmer(this.formData).then(response => { checkFarmer(this.formData).then(response => {
console.log(response.data)
// console.log(response.data)
if (response.code == 200){ if (response.code == 200){
Cookies.set("user", response.data, { expires: 30 }); Cookies.set("user", response.data, { expires: 30 });
this.$router.push({path:'/sunVillage_info/index_code_rights'}) this.$router.push({path:'/sunVillage_info/index_code_rights'})


+ 26
- 5
src/views/user/signature/signatureList.vue 查看文件

@@ -39,15 +39,17 @@
<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 ">
<div class="opera_btn" style="margin: 0 10px;" v-if="item.signingMode == '线上' && item.attachement != null " @click="$router.push({path:'/user/signature/signaturePdf',query: {id:item.id}})">
<img src="../../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35"> <img src="../../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35">
<p>预览</p> <p>预览</p>
</div> </div>
<div class="opera_btn" v-if="item.signingMode == '线上' && item.isArchive == '是' "> <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>
<a :href="'/api/profile/download'+item.contractPdf" style="color: #333333">
<img src="../../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35">
<p>电子合同</p>
</a>
</div> </div>
<div class="opera_btn" v-if="item.signingMode == '线下' ">
<div class="opera_btn" v-if="item.signingMode == '线下' " @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>
@@ -77,11 +79,17 @@
</div> </div>
</van-cell-group> </van-cell-group>
</van-popup> </van-popup>

<!-- 附件弹出层 -->
<van-popup v-model="showFile" round closeable position="bottom" :style="{ height: '40%' , padding: '5vh 2vh' }" >
<van-uploader v-if="fileList.length>0" v-model="fileList" multiple :deletable="false" :show-upload="false" />
<van-empty v-else description="暂无附件" />
</van-popup>
</div> </div>
</template> </template>


<script> <script>
import { contractSecondList , signSecond } from "@/api/sunVillage_info/fixedAssets";
import {contractFileList, contractSecondList, signSecond} from "@/api/sunVillage_info/fixedAssets";
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'
@@ -94,6 +102,7 @@
loading: false, loading: false,
finished: false, finished: false,
show: false, show: false,
showFile: false,
fileList:[], fileList:[],
listLength:'0', listLength:'0',
queryParams:{ queryParams:{
@@ -147,6 +156,18 @@
this.show = true; this.show = true;
this.signaId = id; this.signaId = id;
}, },
openPopupFile(id){
this.fileList = [];
this.showFile = true;
contractFileList(id).then(response => {
response.data.map(res=>{
this.fileList.push({
url: '/api'+res.fileUrl,
isImage: true
})
})
});
},
signaImgFun(url){ signaImgFun(url){
this.signatureImg = url; this.signatureImg = url;
// console.log(url) // console.log(url)


+ 218
- 0
src/views/user/signature/signaturePdf.vue 查看文件

@@ -0,0 +1,218 @@
<template>
<div class="app-container">
<van-nav-bar
title="合同预览"
left-arrow
fixed
placeholder
@click-left="onClickLeft"
/>
<pdf v-for="item in numPages" :key="item" :src="url" :page="item" ref="pdf"></pdf>
</div>
</template>

<script>
import { createAssistPDF,createSurveyPDF,createPutrecordPDF,createOnrecordPDF,createSamplingPDF,createTreatPDF,createDecisionPDF,createEvidencePDF,createExecutePDF,createEndingPDF,createBreakPDF,createResumePDF } from "@/api/lawEnforcement/index";
import pdf from 'vue-pdf'
import {previewContractFile} from "@/api/sunVillage_info/fixedAssets";
export default {
components:{
pdf
},
name: "programmeDetail",
data() {
return {
url:'',
numPages: null, // pdf 总页数
};
},
created() {
const id = this.$route.query.id;
const baseURL = process.env.VUE_APP_BASE_API;
previewContractFile(id).then(response => {
this.url = baseURL + response.msg;
let loadingTask = pdf.createLoadingTask(this.url)
loadingTask.promise.then(pdf => {
this.numPages = pdf.numPages
})
});
},
methods: {
goBack(){
window.history.go(-1)
}
},
}
</script>

<style scoped lang="scss">
.app-container {
}
/deep/ .van-collapse-item__content{
padding: 0;
}
.cf{
padding: 0 3%;
margin-top: 20PX;
margin-bottom: 20PX;
.van-row{
background: #F0F3F5;
display: flex;
align-items: center;
.van-col{
padding: 5PX 0;
font-size: 12PX!important;
text-align: center;
p{
color: #1D6FE9;
text-align: left;
font-size: .4rem;
}
}
&:first-child{
background: transparent;
}
}
}
.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;
}
}
/deep/ .van-radio--horizontal{
margin-left: 0.32rem;
margin-right: 0;
}
.peopleList{
padding: 0 3%;
text-align: left;
.van-row{
border-bottom: 1px solid #dddddd;
display: flex;
align-items: center;
&:last-child{
border: none;
}
.van-col--17{
display: flex;
align-items: center;
p{
margin-left: 10PX;
}
}
.van-col--7{
display: flex;
justify-content: space-between;
p{
color: #1D6FE9;
border: 1px solid #1D6FE9;
text-align: center;
border-radius: 15PX;
display: inline-block;
padding: 5px 15px;
}
}
.van-col{
text-align: left;
font-size: 14PX;
color: #333333;
padding: 15PX 0;
img{
display: block;
}
}
}
}
.main_title{
font-size: 0.4rem;
color: #1D6FE9;
margin: 0.2rem 6%;
margin-top: 0;
position: relative;
}
.main_box{
width: 96%;
margin: 0 auto;
border-radius: 10PX;
box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
overflow: hidden;
background-color: #FFF;
.van-icon{
vertical-align: middle;
}
.custom-title{
font-size: 17PX;
color: #333333;
vertical-align: middle;
line-height: 1;
position: relative;
}
.tap{
color: #1D6FE9;
}
.bgBlue{
display: block;
position: absolute;
width: 17PX;
height: 17PX;
border-radius: 50%;
background-color: rgba(29,111,233,0.26);
top: -2PX;
right: -8PX;
}
}
.submitButton{
width: 40%;
margin: 0 auto;
background-image: linear-gradient(to right, #77A6EF , #2E79E9);
text-align: center;
color: #ffffff;
height: 70px;
line-height: 70px;
border-radius: 8PX;
margin-top: 25PX;
&:first-child{
background-image: linear-gradient(to right, #21CAC3 , #17A8A2);
}
}
.submit_box{
display: flex;
align-items: center;
justify-content: space-around;
}

.addFamily{
position: absolute;
top: -2px;
right: 0;
border-radius: 50%;
}

</style>

+ 1
- 2
src/views/yinnongLogin.vue 查看文件

@@ -1,8 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="title"> <div class="title">
<img style="display: block;
margin: 0 auto;" src="../../static/images/onlineHome/yinnongLogo1.png" alt="">
<img style="display: block;width: 100%;margin: 0 auto;" src="../../static/images/onlineHome/yinnongLogo1.png" alt="">
</div> </div>
<van-tabs v-model="active" color="#1D6FE9 " :swipeable="true" style="margin-top:0.5rem;padding:0 10px;"> <van-tabs v-model="active" color="#1D6FE9 " :swipeable="true" style="margin-top:0.5rem;padding:0 10px;">
<van-tab title="密码登录" name="1"> <van-tab title="密码登录" name="1">


二進制
static/images/plotPremises/map_bg.png 查看文件

Before After
Width: 375  |  Height: 812  |  Size: 611 KiB

二進制
static/images/plotPremises/plotPremises_icon_01.png 查看文件

Before After
Width: 30  |  Height: 30  |  Size: 783 B

二進制
static/images/plotPremises/plotPremises_icon_02.png 查看文件

Before After
Width: 30  |  Height: 30  |  Size: 898 B

二進制
static/images/plotPremises/plotPremises_icon_03.png 查看文件

Before After
Width: 14  |  Height: 14  |  Size: 200 B

二進制
static/images/plotPremises/plotPremises_img.png 查看文件

Before After
Width: 130  |  Height: 155  |  Size: 38 KiB

二進制
static/images/plotPremises/positioning.png 查看文件

Before After
Width: 26  |  Height: 34  |  Size: 620 B

Loading…
取消
儲存