@@ -682,3 +682,19 @@ export function contractGet(query,id) { | |||
params:query | |||
}) | |||
} | |||
//线下合同附件列表 | |||
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', | |||
}) | |||
} |
@@ -254,6 +254,15 @@ export const constantRoutes = [ | |||
}, | |||
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', | |||
name: 'accountSetting', | |||
@@ -3812,6 +3821,15 @@ export const constantRoutes = [ | |||
}, | |||
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', | |||
name: 'sunVillageInfoListOfficial', | |||
@@ -36,22 +36,21 @@ | |||
<template #right> | |||
<div class="operation"> | |||
<!-- delete 删除 edit编辑 view查看 list榜单 --> | |||
<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" 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"> | |||
<p>预览</p> | |||
</div> | |||
<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"> | |||
<p>电子合同</p> | |||
</a> | |||
</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"> | |||
<p>线下合同</p> | |||
</div> | |||
@@ -85,14 +84,15 @@ | |||
</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> | |||
</div> | |||
</template> | |||
<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 signatureUploadSignature from "@/views/yinnong/signatureUploadSignature"; | |||
import $ from "jquery"; | |||
@@ -125,7 +125,7 @@ | |||
isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分 | |||
}, | |||
signaId:'', | |||
height:null | |||
height:null, | |||
}; | |||
}, | |||
created() { | |||
@@ -159,17 +159,17 @@ | |||
this.show = true; | |||
this.signaId = id; | |||
}, | |||
openPopupFile(file){ | |||
openPopupFile(id){ | |||
this.fileList = []; | |||
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){ | |||
this.signatureImg = url; | |||
@@ -407,6 +407,8 @@ | |||
margin-left: 10PX; | |||
.opera_btn{ | |||
border-radius: 50%; | |||
margin-left: 10PX; | |||
&:first-child{margin: 0;} | |||
&.delete{ | |||
background:#df0707; | |||
margin-left: 10PX; | |||
@@ -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:{ | |||
}, | |||
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> |
@@ -39,15 +39,17 @@ | |||
<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 "> | |||
<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"> | |||
<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> | |||
<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 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"> | |||
<p>线下合同</p> | |||
</div> | |||
@@ -77,11 +79,17 @@ | |||
</div> | |||
</van-cell-group> | |||
</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> | |||
</template> | |||
<script> | |||
import { contractSecondList , signSecond } from "@/api/sunVillage_info/fixedAssets"; | |||
import {contractFileList, contractSecondList, signSecond} from "@/api/sunVillage_info/fixedAssets"; | |||
import vueEsign from "vue-esign"; | |||
import signatureUploadSignature from "@/views/yinnong/signatureUploadSignature"; | |||
import $ from 'jquery' | |||
@@ -94,6 +102,7 @@ | |||
loading: false, | |||
finished: false, | |||
show: false, | |||
showFile: false, | |||
fileList:[], | |||
listLength:'0', | |||
queryParams:{ | |||
@@ -147,6 +156,18 @@ | |||
this.show = true; | |||
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){ | |||
this.signatureImg = url; | |||
// console.log(url) | |||
@@ -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:{ | |||
}, | |||
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> |