@@ -27,6 +27,40 @@ export function Attestation(query) { | |||||
}) | }) | ||||
} | } | ||||
//终止公告 | |||||
export function outProjectTerminate(query) { | |||||
return request({ | |||||
url: '/transaction/website/outproject/terminate', | |||||
method: 'get', | |||||
params: query | |||||
}) | |||||
} | |||||
//终止公告 | |||||
export function outProjectDetail(id) { | |||||
return request({ | |||||
url: '/transaction/website/outproject/terminate/id/'+id, | |||||
method: 'get' | |||||
}) | |||||
} | |||||
//终止公告 | |||||
export function outProjectException(query) { | |||||
return request({ | |||||
url: '/transaction/website/outproject/exception', | |||||
method: 'get', | |||||
params: query | |||||
}) | |||||
} | |||||
//终止公告 | |||||
export function outProjectExceptionDetail(id) { | |||||
return request({ | |||||
url: '/transaction/website/outproject/exception/id/'+id, | |||||
method: 'get' | |||||
}) | |||||
} | |||||
//成交公告 | //成交公告 | ||||
export function noticeDetails(id) { | export function noticeDetails(id) { | ||||
return request({ | return request({ | ||||
@@ -1473,3 +1473,12 @@ export function jyxzyqkgkDetail(id) { | |||||
method: 'get' | method: 'get' | ||||
}) | }) | ||||
} | } | ||||
// 收支明细公开 | |||||
export function webList(query) { | |||||
return request({ | |||||
url: '/open/typz/list', | |||||
method: 'get', | |||||
params: query | |||||
}) | |||||
} |
@@ -1,7 +1,7 @@ | |||||
<template> | <template> | ||||
<div> | <div> | ||||
<!-- <p class="fuTitle">地块位置绘制</p>--> | <!-- <p class="fuTitle">地块位置绘制</p>--> | ||||
<div id="full-screen-acceptance" style="width: 100%;height:71vh;"> | |||||
<div id="full-screen-acceptance" style="width: 100%;height:71vh; position: relative;"> | |||||
<div :id=this.uuidMap style="width: 100%;height: 100%"></div> | <div :id=this.uuidMap style="width: 100%;height: 100%"></div> | ||||
<div id='land-btn-wrap'> | <div id='land-btn-wrap'> | ||||
<!--<el-button :id=this.drawingPolygonMap style="background-color:#D0EEFF;color:#1E88C7" @click="" type="primary">画图</el-button>--> | <!--<el-button :id=this.drawingPolygonMap style="background-color:#D0EEFF;color:#1E88C7" @click="" type="primary">画图</el-button>--> | ||||
@@ -11,6 +11,8 @@ | |||||
<input :id="this.drawingPolygonMap" class="ant-btn ant-btn-red" type="button" value="画图"/> | <input :id="this.drawingPolygonMap" class="ant-btn ant-btn-red" type="button" value="画图"/> | ||||
<input :id="this.drawingResetMap" type="button" class="ant-btn ant-btn-red" value="重置图层"/> | <input :id="this.drawingResetMap" type="button" class="ant-btn ant-btn-red" value="重置图层"/> | ||||
</div> | </div> | ||||
<div v-if="hasSelectLocationMode" class="location-mode-chooser-btn"><input type="button" class="ant-btn ant-btn-red" value="选择定位方式" @click="selectLocationMode"/></div> | |||||
</div> | </div> | ||||
<div style="font-size: 13px; padding-top: 5px;">备注:绿色地块表示该地块,蓝色表示本账套已标记的其他地块</div> | <div style="font-size: 13px; padding-top: 5px;">备注:绿色地块表示该地块,蓝色表示本账套已标记的其他地块</div> | ||||
<div id="info" style="display: none"></div> | <div id="info" style="display: none"></div> | ||||
@@ -21,6 +23,7 @@ | |||||
import {getQueryLand} from "@/api/homesteadSurvey/zjdzd"; | import {getQueryLand} from "@/api/homesteadSurvey/zjdzd"; | ||||
import $ from "jquery"; | import $ from "jquery"; | ||||
import { getConfigKey } from "@/api/system/config"; | import { getConfigKey } from "@/api/system/config"; | ||||
import {Toast} from "vant"; | |||||
export default { | export default { | ||||
components: { | components: { | ||||
@@ -44,6 +47,20 @@ export default { | |||||
// 获取村边界的图层名称 | // 获取村边界的图层名称 | ||||
this.getVillageBorderLayerName(); | this.getVillageBorderLayerName(); | ||||
}, | }, | ||||
computed: { | |||||
isAndroid() { | |||||
return !!window._Native_object; | |||||
}, | |||||
hasSelectLocationMode() { | |||||
return this.isAndroid && typeof(window._Native_object.SelectLocationMode) === 'function'; | |||||
}, | |||||
hasGetLocationTimeout() { | |||||
return this.isAndroid && typeof(window._Native_object.GetLocationTimeout) === 'function'; | |||||
}, | |||||
hasGetLocationMode() { | |||||
return this.isAndroid && typeof(window._Native_object.GetLocationMode) === 'function'; | |||||
}, | |||||
}, | |||||
methods: { | methods: { | ||||
// 获取geoserver的地址 | // 获取geoserver的地址 | ||||
getGeoServerUrl() { | getGeoServerUrl() { | ||||
@@ -74,34 +91,72 @@ export default { | |||||
return v.toString(16); | return v.toString(16); | ||||
}); | }); | ||||
}, | }, | ||||
selectLocationMode() { | |||||
if(this.hasSelectLocationMode) | |||||
{ | |||||
let res = window._Native_object.SelectLocationMode(); | |||||
console.log('当前选择定位模式: ' + res); | |||||
} | |||||
}, | |||||
getLocationMode() { | |||||
let mode = ''; | |||||
if(this.hasGetLocationMode) | |||||
{ | |||||
mode = window._Native_object.GetLocationMode(); | |||||
} | |||||
console.log('当前选择定位模式: ' + mode); | |||||
return mode; | |||||
}, | |||||
getLocationTimeout() { | |||||
let timeout = 30000; | |||||
if(this.isAndroid) | |||||
{ | |||||
let to = window._Native_object.GetLocationTimeout(); | |||||
if(to <= 0) | |||||
to = 30000; | |||||
timeout = to; | |||||
} | |||||
console.log('当前选择定位超时: ' + timeout); | |||||
return timeout; | |||||
}, | |||||
getCurrentLocation(callback) { | getCurrentLocation(callback) { | ||||
// 1. 首先尝试Android宿主端 | // 1. 首先尝试Android宿主端 | ||||
if(window._Native_object) // Android层注入全局对象 | |||||
if(this.isAndroid) // Android层注入全局对象 | |||||
{ | { | ||||
console.log('使用Native获取定位'); | |||||
let coord = window._Native_object.GetLocation(null); | |||||
console.log('Native坐标: ' + coord); | |||||
if(coord) | |||||
let mode = this.getLocationMode(); | |||||
if(mode !== 'h5') | |||||
{ | { | ||||
let arr = coord.split(','); | |||||
let res = { | |||||
code: 200, | |||||
data: { | |||||
lng: arr[0], | |||||
lat: arr[1], | |||||
}, | |||||
}; | |||||
callback(res); | |||||
return; | |||||
console.log('使用Native获取定位'); | |||||
let coord = window._Native_object.GetLocation(null); | |||||
console.log('Native坐标: ' + coord); | |||||
if(coord) | |||||
{ | |||||
let arr = coord.split(','); | |||||
let res = { | |||||
code: 200, | |||||
data: { | |||||
lng: arr[0], | |||||
lat: arr[1], | |||||
}, | |||||
}; | |||||
callback(res); | |||||
return; | |||||
} | |||||
} | } | ||||
} | } | ||||
// 2. 再尝试浏览器 | // 2. 再尝试浏览器 | ||||
if (navigator.geolocation) { | if (navigator.geolocation) { | ||||
console.log('使用浏览器获取定位'); | console.log('使用浏览器获取定位'); | ||||
const loading = Toast.loading({ | |||||
message: '定位中...', | |||||
duration: 0, | |||||
}); | |||||
let timeout = this.getLocationTimeout(); | |||||
navigator.geolocation.getCurrentPosition( | navigator.geolocation.getCurrentPosition( | ||||
(position) => { | (position) => { | ||||
const { latitude, longitude } = position.coords; | const { latitude, longitude } = position.coords; | ||||
console.log('浏览器定位结果: 经纬度=' + longitude + ', ' + latitude); | |||||
let res = { | let res = { | ||||
code: 200, | code: 200, | ||||
data: { | data: { | ||||
@@ -109,13 +164,15 @@ export default { | |||||
lat: latitude, | lat: latitude, | ||||
}, | }, | ||||
}; | }; | ||||
loading.clear(); | |||||
callback(res); | callback(res); | ||||
}, | }, | ||||
(error) => { | (error) => { | ||||
loading.clear(); | |||||
console.log('定位失败: ' + error.message); | console.log('定位失败: ' + error.message); | ||||
getQueryLand().then(callback); | getQueryLand().then(callback); | ||||
}, | }, | ||||
{ enableHighAccuracy: true, timeout: 5000 } | |||||
{ enableHighAccuracy: true, timeout: timeout } | |||||
); | ); | ||||
return; | return; | ||||
} | } | ||||
@@ -633,4 +690,10 @@ export default { | |||||
z-index: 2000; | z-index: 2000; | ||||
padding-top: 5%; | padding-top: 5%; | ||||
} | } | ||||
.location-mode-chooser-btn { | |||||
position: absolute; | |||||
right: 0; | |||||
bottom: 0; | |||||
z-index: 2000; | |||||
} | |||||
</style> | </style> |
@@ -1,6 +1,6 @@ | |||||
<template> | <template> | ||||
<div> | <div> | ||||
<div id="full-screen-acceptance" style="width: 100%;height:71vh;"> | |||||
<div id="full-screen-acceptance" style="width: 100%;height:71vh; position: relative;"> | |||||
<div :id=this.uuidMap style="width: 100%;height: 100%"></div> | <div :id=this.uuidMap style="width: 100%;height: 100%"></div> | ||||
<div id='land-btn-wrap' v-show="showBtn"> | <div id='land-btn-wrap' v-show="showBtn"> | ||||
<input :id="locationMap" type="button" class="ant-btn ant-btn-red" value="定位"/> | <input :id="locationMap" type="button" class="ant-btn ant-btn-red" value="定位"/> | ||||
@@ -8,6 +8,8 @@ | |||||
<!--<input id="drawRemove" type="button" class="ant-btn ant-btn-red" value="取消"/> --> | <!--<input id="drawRemove" type="button" class="ant-btn ant-btn-red" value="取消"/> --> | ||||
<input :id="this.drawResetMap" type="button" class="ant-btn ant-btn-red" value="重置标记"/> | <input :id="this.drawResetMap" type="button" class="ant-btn ant-btn-red" value="重置标记"/> | ||||
</div> | </div> | ||||
<div v-if="hasSelectLocationMode" class="location-mode-chooser-btn"><input type="button" class="ant-btn ant-btn-red" value="选择定位方式" @click="selectLocationMode"/></div> | |||||
</div> | </div> | ||||
<div style="font-size: 1.4vh; padding-top: 5px;">备注:黄色标记表示该资产,蓝色标记表示本账套已标记的其他资产</div> | <div style="font-size: 1.4vh; padding-top: 5px;">备注:黄色标记表示该资产,蓝色标记表示本账套已标记的其他资产</div> | ||||
<div id="info" style="display: none"></div> | <div id="info" style="display: none"></div> | ||||
@@ -19,6 +21,7 @@ | |||||
import Cookies from "js-cookie"; | import Cookies from "js-cookie"; | ||||
import {getQueryLand} from "@/api/homesteadSurvey/zjdzd"; | import {getQueryLand} from "@/api/homesteadSurvey/zjdzd"; | ||||
import { getConfigKey } from "@/api/system/config"; | import { getConfigKey } from "@/api/system/config"; | ||||
import {Toast} from "vant"; | |||||
export default { | export default { | ||||
data() { | data() { | ||||
@@ -40,6 +43,20 @@ | |||||
// 获取村边界的图层名称 | // 获取村边界的图层名称 | ||||
this.getVillageBorderLayerName(); | this.getVillageBorderLayerName(); | ||||
}, | }, | ||||
computed: { | |||||
isAndroid() { | |||||
return !!window._Native_object; | |||||
}, | |||||
hasSelectLocationMode() { | |||||
return this.isAndroid && typeof(window._Native_object.SelectLocationMode) === 'function'; | |||||
}, | |||||
hasGetLocationTimeout() { | |||||
return this.isAndroid && typeof(window._Native_object.GetLocationTimeout) === 'function'; | |||||
}, | |||||
hasGetLocationMode() { | |||||
return this.isAndroid && typeof(window._Native_object.GetLocationMode) === 'function'; | |||||
}, | |||||
}, | |||||
methods: { | methods: { | ||||
// 获取geoserver的地址 | // 获取geoserver的地址 | ||||
getGeoServerUrl() { | getGeoServerUrl() { | ||||
@@ -70,34 +87,72 @@ | |||||
return v.toString(16); | return v.toString(16); | ||||
}); | }); | ||||
}, | }, | ||||
selectLocationMode() { | |||||
if(this.hasSelectLocationMode) | |||||
{ | |||||
let res = window._Native_object.SelectLocationMode(); | |||||
console.log('当前选择定位模式: ' + res); | |||||
} | |||||
}, | |||||
getLocationMode() { | |||||
let mode = ''; | |||||
if(this.hasGetLocationMode) | |||||
{ | |||||
mode = window._Native_object.GetLocationMode(); | |||||
} | |||||
console.log('当前选择定位模式: ' + mode); | |||||
return mode; | |||||
}, | |||||
getLocationTimeout() { | |||||
let timeout = 10000; | |||||
if(this.hasGetLocationMode) | |||||
{ | |||||
let to = window._Native_object.GetLocationTimeout(); | |||||
if(to <= 0) | |||||
to = 30000; | |||||
timeout = to; | |||||
} | |||||
console.log('当前选择定位超时: ' + timeout); | |||||
return timeout; | |||||
}, | |||||
getCurrentLocation(callback) { | getCurrentLocation(callback) { | ||||
// 1. 首先尝试Android宿主端 | // 1. 首先尝试Android宿主端 | ||||
if(window._Native_object) // Android层注入全局对象 | |||||
if(this.isAndroid) // Android层注入全局对象 | |||||
{ | { | ||||
console.log('使用Native获取定位'); | |||||
let coord = window._Native_object.GetLocation(null); | |||||
console.log('Native坐标: ' + coord); | |||||
if(coord) | |||||
let mode = this.getLocationMode(); | |||||
if(mode !== 'h5') | |||||
{ | { | ||||
let arr = coord.split(','); | |||||
let res = { | |||||
code: 200, | |||||
data: { | |||||
lng: arr[0], | |||||
lat: arr[1], | |||||
}, | |||||
}; | |||||
callback(res); | |||||
return; | |||||
console.log('使用Native获取定位'); | |||||
let coord = window._Native_object.GetLocation(null); | |||||
console.log('Native坐标: ' + coord); | |||||
if(coord) | |||||
{ | |||||
let arr = coord.split(','); | |||||
let res = { | |||||
code: 200, | |||||
data: { | |||||
lng: arr[0], | |||||
lat: arr[1], | |||||
}, | |||||
}; | |||||
callback(res); | |||||
return; | |||||
} | |||||
} | } | ||||
} | } | ||||
// 2. 再尝试浏览器 | // 2. 再尝试浏览器 | ||||
if (navigator.geolocation) { | if (navigator.geolocation) { | ||||
console.log('使用浏览器获取定位'); | console.log('使用浏览器获取定位'); | ||||
const loading = Toast.loading({ | |||||
message: '定位中...', | |||||
duration: 0, | |||||
}); | |||||
let timeout = this.getLocationTimeout(); | |||||
navigator.geolocation.getCurrentPosition( | navigator.geolocation.getCurrentPosition( | ||||
(position) => { | (position) => { | ||||
const { latitude, longitude } = position.coords; | const { latitude, longitude } = position.coords; | ||||
console.log('浏览器定位结果: 经纬度=' + longitude + ', ' + latitude); | |||||
let res = { | let res = { | ||||
code: 200, | code: 200, | ||||
data: { | data: { | ||||
@@ -105,13 +160,15 @@ | |||||
lat: latitude, | lat: latitude, | ||||
}, | }, | ||||
}; | }; | ||||
loading.clear(); | |||||
callback(res); | callback(res); | ||||
}, | }, | ||||
(error) => { | (error) => { | ||||
loading.clear(); | |||||
console.log('定位失败: ' + error.message); | console.log('定位失败: ' + error.message); | ||||
getQueryLand().then(callback); | getQueryLand().then(callback); | ||||
}, | }, | ||||
{ enableHighAccuracy: true, timeout: 5000 } | |||||
{ enableHighAccuracy: true, timeout: timeout } | |||||
); | ); | ||||
return; | return; | ||||
} | } | ||||
@@ -710,4 +767,10 @@ | |||||
z-index: 2000; | z-index: 2000; | ||||
padding-top: 5%; | padding-top: 5%; | ||||
} | } | ||||
.location-mode-chooser-btn { | |||||
position: absolute; | |||||
right: 0; | |||||
bottom: 0; | |||||
z-index: 2000; | |||||
} | |||||
</style> | </style> |
@@ -39,6 +39,8 @@ const whiteList = [ | |||||
'/policyPDF', | '/policyPDF', | ||||
'/attestationDetail', | '/attestationDetail', | ||||
'/noticeDetail', | '/noticeDetail', | ||||
'/stopDetail', | |||||
'/abnormalDetail', | |||||
'/homestead/login', | '/homestead/login', | ||||
'/applicationForm', | '/applicationForm', | ||||
'/applicationList', | '/applicationList', | ||||
@@ -389,6 +389,24 @@ export const constantRoutes = [ | |||||
}, | }, | ||||
component: (resolve) => require(['@/views/notice/noticeDetail'], resolve) | component: (resolve) => require(['@/views/notice/noticeDetail'], resolve) | ||||
}, | }, | ||||
{ | |||||
path: '/stopDetail', | |||||
name: 'stopDetail', | |||||
meta: { | |||||
title: '公告详情', | |||||
hidden: true, | |||||
}, | |||||
component: (resolve) => require(['@/views/notice/stopDetail'], resolve) | |||||
}, | |||||
{ | |||||
path: '/abnormalDetail', | |||||
name: 'abnormalDetail', | |||||
meta: { | |||||
title: '公告详情', | |||||
hidden: true, | |||||
}, | |||||
component: (resolve) => require(['@/views/notice/abnormalDetail'], resolve) | |||||
}, | |||||
{ | { | ||||
path: '/attestationDetail', | path: '/attestationDetail', | ||||
name: 'attestationDetailCJ', | name: 'attestationDetailCJ', | ||||
@@ -0,0 +1,120 @@ | |||||
<template> | |||||
<div class="app-container"> | |||||
<navBar title="异常公告" background="0" positionType="fixed"></navBar> | |||||
<div class="block_box"> | |||||
<div class="block_tt"><i></i>项目信息</div> | |||||
<van-cell title="项目编号" :value="noticeDetail.projectCode" /> | |||||
<van-cell title="项目名称" :value="noticeDetail.projectName" /> | |||||
<van-cell title="公告日期" :value="noticeDetail.terminateAt" /> | |||||
<van-cell title="公告说明" type="textarea" :value="noticeDetail.terminateRemark" /> | |||||
<van-cell title="交易中心公告" :border="false"/> | |||||
<van-uploader | |||||
v-model="noticeDetail.jyzxImgArray" | |||||
style="padding: 0 15px;" | |||||
:show-upload="false" | |||||
:deletable="false" | |||||
/> | |||||
<van-cell title="技术单位公告" :border="false" /> | |||||
<van-uploader | |||||
v-model="noticeDetail.jsdwImgArray" | |||||
style="padding: 0 15px;" | |||||
:show-upload="false" | |||||
:deletable="false" | |||||
/> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script> | |||||
import {attachmentQuery, outProjectExceptionDetail} from "@/api/notice/index"; | |||||
import navBar from "@/components/common/nav_bar.vue"; | |||||
export default { | |||||
name: "noticeDetail", | |||||
components: { navBar }, | |||||
data() { | |||||
return { | |||||
noticeDetail:'', | |||||
attachmentQueryList:[] | |||||
}; | |||||
}, | |||||
created() { | |||||
this.getDetail(); | |||||
}, | |||||
methods: { | |||||
//成交公告集合 | |||||
getDetail(){ | |||||
console.log(this.$route.query.id) | |||||
outProjectExceptionDetail(this.$route.query.id).then(response => { | |||||
console.log(response) | |||||
response.data.jyzxImgArray = []; | |||||
response.data.jsdwImgArray = []; | |||||
if (response.data.jyzxImg){ | |||||
response.data.jyzxImg.split(',').map(res=>{ | |||||
response.data.jyzxImgArray.push({ | |||||
url:'/api'+res, | |||||
}) | |||||
}) | |||||
} | |||||
if (response.data.jsdwImg){ | |||||
response.data.jsdwImg.split(',').map(res=>{ | |||||
response.data.jsdwImgArray.push({ | |||||
url:'/api'+res, | |||||
}) | |||||
}) | |||||
} | |||||
this.noticeDetail = response.data; | |||||
}); | |||||
}, | |||||
}, | |||||
}; | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.app-container { | |||||
padding: 0 0 0.5rem; | |||||
background-color: #F4F8FB; | |||||
height: calc(100vh - 50px); | |||||
} | |||||
.block_box{ | |||||
width: 94%; | |||||
margin: 3vw auto; | |||||
background: #ffffff; | |||||
padding: 3vw 0; | |||||
border-radius: 15Px; | |||||
overflow: hidden; | |||||
.block_tt{ | |||||
font-size: 20Px; | |||||
display: flex; | |||||
align-items: center; | |||||
padding: 1.6vh 3vw; | |||||
line-height: 1; | |||||
font-weight: bold; | |||||
i{ | |||||
display: block; | |||||
width: 4Px; | |||||
height: 16Px; | |||||
background: #0CBEA6; | |||||
margin-right: 5PX; | |||||
border-radius: 5PX; | |||||
} | |||||
/*border-left: 3Px solid #0CBEA6;*/ | |||||
} | |||||
} | |||||
.title{ | |||||
font-size: 0.5rem; | |||||
margin-bottom: 0.5rem; | |||||
} | |||||
.van-row{ | |||||
margin-bottom: 0.4rem; | |||||
} | |||||
.van-col{ | |||||
font-size: 0.4rem; | |||||
color: #666666; | |||||
} | |||||
</style> |
@@ -28,9 +28,7 @@ | |||||
<div class="block_tt"><i></i>转出方信息</div> | <div class="block_tt"><i></i>转出方信息</div> | ||||
<!-- <van-divider :style="{ borderColor: '#0CBEA6', padding: '0 16px' }"></van-divider>--> | <!-- <van-divider :style="{ borderColor: '#0CBEA6', padding: '0 16px' }"></van-divider>--> | ||||
<van-cell title="转出方" :value="attestationDetail.outName" /> | <van-cell title="转出方" :value="attestationDetail.outName" /> | ||||
<van-cell title="转出行为批准机构名称" :value="attestationDetail.pzjg" /> | |||||
<van-cell title="法定代表人(转出方)" :value="attestationDetail.legalPerson" /> | |||||
<van-cell title="注册号(身份证)" :value="attestationDetail.idCardNum" /> | |||||
<van-cell title="法定代表人" :value="attestationDetail.legalPerson" /> | |||||
</div> | </div> | ||||
<div class="block_box orbg"> | <div class="block_box orbg"> | ||||
@@ -38,9 +36,7 @@ | |||||
<!-- <van-divider :style="{ borderColor: '#FD683F', padding: '0 16px' }">受让方信息</van-divider>--> | <!-- <van-divider :style="{ borderColor: '#FD683F', padding: '0 16px' }">受让方信息</van-divider>--> | ||||
<van-cell title="受让方" :value="attestationDetail.inName" /> | <van-cell title="受让方" :value="attestationDetail.inName" /> | ||||
<van-cell title="单位性质" :value="attestationDetail.companyNature" /> | <van-cell title="单位性质" :value="attestationDetail.companyNature" /> | ||||
<van-cell title="法定代表人(受让方)" :value="attestationDetail.realname" /> | |||||
<van-cell title="注册资本" :value="attestationDetail.companyCapital" /> | |||||
<van-cell title="注册号(身份证)" :value="attestationDetail.companyLicense" /> | |||||
<van-cell title="法定代表人" :value="attestationDetail.realname" /> | |||||
</div> | </div> | ||||
<p class="btm_p">农村产权交易鉴证书</p> | <p class="btm_p">农村产权交易鉴证书</p> | ||||
@@ -13,7 +13,10 @@ | |||||
> | > | ||||
<van-cell v-for="(item,index) in noticeList" :key="index" :to="{name:'noticeDetailCJ', query: {id:item.id}}" style="margin-bottom: 1vh;"> | <van-cell v-for="(item,index) in noticeList" :key="index" :to="{name:'noticeDetailCJ', query: {id:item.id}}" style="margin-bottom: 1vh;"> | ||||
<template #title> | <template #title> | ||||
<div v-if="item.projectStatus == '2'" style="color: #c12e2a;">项目终止</div> | |||||
<div v-if="item.projectStatus == '2'" style="display: flex;align-items: center;justify-content: space-between;"> | |||||
<div style="color: #c12e2a;">项目终止</div> | |||||
<p style="color: #AAB1B5;font-size: 14px;"><img src="../../../static/images/icon/news_icon_clock.png" alt="" style="margin-right: 5px;" />{{item.dealTime.substr(0,10)}}</p> | |||||
</div> | |||||
<div v-else style="display: flex;align-items: center;justify-content: space-between;"> | <div v-else style="display: flex;align-items: center;justify-content: space-between;"> | ||||
<p style="display: flex;align-items: center;color: #0DBCAA;"><img src="../../../static/images/transaction_new/notic/notic_icon_01.png" alt="" style="margin-right: 5px;"/>{{item.projectCode}}</p> | <p style="display: flex;align-items: center;color: #0DBCAA;"><img src="../../../static/images/transaction_new/notic/notic_icon_01.png" alt="" style="margin-right: 5px;"/>{{item.projectCode}}</p> | ||||
<p style="color: #AAB1B5;font-size: 14px;"><img src="../../../static/images/icon/news_icon_clock.png" alt="" style="margin-right: 5px;" />{{item.dealTime.substr(0,10)}}</p> | <p style="color: #AAB1B5;font-size: 14px;"><img src="../../../static/images/icon/news_icon_clock.png" alt="" style="margin-right: 5px;" />{{item.dealTime.substr(0,10)}}</p> | ||||
@@ -38,7 +41,7 @@ | |||||
<van-cell v-for="(item,index) in attestationList" :key="index" :to="{name:'attestationDetailCJ', query: {id:item.id}}" style="margin-bottom: 1vh;"> | <van-cell v-for="(item,index) in attestationList" :key="index" :to="{name:'attestationDetailCJ', query: {id:item.id}}" style="margin-bottom: 1vh;"> | ||||
<template #title> | <template #title> | ||||
<div style="display: flex;align-items: center;justify-content: space-between;"> | <div style="display: flex;align-items: center;justify-content: space-between;"> | ||||
<p style="display: flex;align-items: center;color: #7368E4;"><img src="../../../static/images/transaction_new/notic/notic_icon_02.png" alt="" style="margin-right: 5px;"/>{{item.jzsNumOne}} - {{item.jzsNumTwo}}</p> | |||||
<p style="display: flex;align-items: center;color: #7368E4;"><img src="../../../static/images/transaction_new/notic/notic_icon_02.png" alt="" style="margin-right: 5px;"/>{{item.projectCode}}</p> | |||||
<p style="color: #AAB1B5;font-size: 14px;"><img src="../../../static/images/icon/news_icon_clock.png" alt="" style="margin-right: 5px;" />{{item.jzsSignDate}}</p> | <p style="color: #AAB1B5;font-size: 14px;"><img src="../../../static/images/icon/news_icon_clock.png" alt="" style="margin-right: 5px;" />{{item.jzsSignDate}}</p> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
@@ -49,6 +52,52 @@ | |||||
</van-list> | </van-list> | ||||
</van-tab> | </van-tab> | ||||
<van-tab title="终止公告"> | |||||
<!-- <template #title><van-icon name="records" size="18" style="top: 4px"/>鉴证公告</template>--> | |||||
<van-list | |||||
v-model="stopLoading" | |||||
:finished="stopFinished" | |||||
finished-text="没有更多了" | |||||
style="margin-top: 10px;" | |||||
@load="getStopList" | |||||
> | |||||
<van-cell v-for="(item,index) in stopList" :key="index" :to="{name:'stopDetail', query: {id:item.id}}" style="margin-bottom: 1vh;"> | |||||
<template #title> | |||||
<div style="display: flex;align-items: center;justify-content: space-between;"> | |||||
<p style="display: flex;align-items: center;color: #E6AA0B;"><img src="../../../static/images/transaction_new/notic/notic_icon_07.png" alt="" style="margin-right: 5px;"/>{{item.projectCode}}</p> | |||||
<p style="color: #AAB1B5;font-size: 14px;"><img src="../../../static/images/icon/news_icon_clock.png" alt="" style="margin-right: 5px;" />{{item.dealTime.substr(0,10)}}</p> | |||||
</div> | |||||
</template> | |||||
<template #label> | |||||
<p style="color: #333333;">{{item.projectName}}</p> | |||||
</template> | |||||
</van-cell> | |||||
</van-list> | |||||
</van-tab> | |||||
<van-tab title="异常公告"> | |||||
<!-- <template #title><van-icon name="records" size="18" style="top: 4px"/>鉴证公告</template>--> | |||||
<van-list | |||||
v-model="abnormalLoading" | |||||
:finished="abnormalFinished" | |||||
finished-text="没有更多了" | |||||
style="margin-top: 10px;" | |||||
@load="getAbnormalList" | |||||
> | |||||
<van-cell v-for="(item,index) in abnormalList" :key="index" :to="{name:'abnormalDetail', query: {id:item.id}}" style="margin-bottom: 1vh;"> | |||||
<template #title> | |||||
<div style="display: flex;align-items: center;justify-content: space-between;"> | |||||
<p style="display: flex;align-items: center;color: #FF2D2D;"><img src="../../../static/images/transaction_new/notic/notic_icon_08.png" alt="" style="margin-right: 5px;"/>{{item.projectCode}}</p> | |||||
<p style="color: #AAB1B5;font-size: 14px;"><img src="../../../static/images/icon/news_icon_clock.png" alt="" style="margin-right: 5px;" />{{item.terminateAt}}</p> | |||||
</div> | |||||
</template> | |||||
<template #label> | |||||
<p style="color: #333333;">{{item.projectName}}</p> | |||||
</template> | |||||
</van-cell> | |||||
</van-list> | |||||
</van-tab> | |||||
<van-tab title="招标公告"> | <van-tab title="招标公告"> | ||||
<!-- <template #title><van-icon name="description" size="18" style="top: 4px"/>招标公告</template>--> | <!-- <template #title><van-icon name="description" size="18" style="top: 4px"/>招标公告</template>--> | ||||
<van-list | <van-list | ||||
@@ -106,7 +155,7 @@ | |||||
</template> | </template> | ||||
<script> | <script> | ||||
import { noticeList , Attestation , tenderList , winList } from "@/api/notice/index"; | |||||
import { noticeList , Attestation , tenderList , winList, outProjectTerminate, outProjectException } from "@/api/notice/index"; | |||||
import navBar from "@/components/common/nav_bar.vue"; | import navBar from "@/components/common/nav_bar.vue"; | ||||
export default { | export default { | ||||
name: "notice", | name: "notice", | ||||
@@ -129,6 +178,14 @@ export default { | |||||
winTheBiddingLoading: false, | winTheBiddingLoading: false, | ||||
//是否滚动到底部 | //是否滚动到底部 | ||||
winTheBiddingFinished: false, | winTheBiddingFinished: false, | ||||
//是否显示加载 | |||||
stopLoading: false, | |||||
//是否滚动到底部 | |||||
stopFinished: false, | |||||
//是否显示加载 | |||||
abnormalLoading: false, | |||||
//是否滚动到底部 | |||||
abnormalFinished: false, | |||||
//成交公告集合 | //成交公告集合 | ||||
noticeList:[], | noticeList:[], | ||||
//招标公告集合 | //招标公告集合 | ||||
@@ -137,6 +194,10 @@ export default { | |||||
winTheBiddingList:[], | winTheBiddingList:[], | ||||
//鉴证公告集合 | //鉴证公告集合 | ||||
attestationList:[], | attestationList:[], | ||||
//终止公告集合 | |||||
stopList:[], | |||||
//异常公告集合 | |||||
abnormalList:[], | |||||
//成交公告查询参数 | //成交公告查询参数 | ||||
queryParams: { | queryParams: { | ||||
deptId:100, | deptId:100, | ||||
@@ -161,6 +222,18 @@ export default { | |||||
pageNum:1, | pageNum:1, | ||||
pageSize:10 | pageSize:10 | ||||
}, | }, | ||||
//终止公告查询参数 | |||||
stopQueryParams: { | |||||
deptId:100, | |||||
pageNum:1, | |||||
pageSize:10 | |||||
}, | |||||
//异常公告查询参数 | |||||
abnormalQueryParams: { | |||||
deptId:100, | |||||
pageNum:1, | |||||
pageSize:10 | |||||
}, | |||||
}; | }; | ||||
}, | }, | ||||
created() { | created() { | ||||
@@ -208,6 +281,38 @@ export default { | |||||
} | } | ||||
}); | }); | ||||
}, | }, | ||||
//终止公告集合 | |||||
getStopList(){ | |||||
this.stopLoading = true; | |||||
outProjectTerminate(this.stopQueryParams).then(response => { | |||||
response.rows.forEach(res=>{ | |||||
this.stopList.push(res); | |||||
}) | |||||
if(this.stopList.length >= response.total){ | |||||
this.stopFinished = true; | |||||
return; | |||||
}else{ | |||||
this.stopLoading = false; | |||||
this.stopQueryParams.pageNum += 1 ; | |||||
} | |||||
}); | |||||
}, | |||||
//异常公告集合 | |||||
getAbnormalList(){ | |||||
this.abnormalLoading = true; | |||||
outProjectException(this.abnormalQueryParams).then(response => { | |||||
response.rows.forEach(res=>{ | |||||
this.abnormalList.push(res); | |||||
}) | |||||
if(this.abnormalList.length >= response.total){ | |||||
this.abnormalFinished = true; | |||||
return; | |||||
}else{ | |||||
this.abnormalLoading = false; | |||||
this.abnormalQueryParams.pageNum += 1 ; | |||||
} | |||||
}); | |||||
}, | |||||
//招标公告集合 | //招标公告集合 | ||||
getinviteTendersList(){ | getinviteTendersList(){ | ||||
this.inviteTendersLoading = true; | this.inviteTendersLoading = true; | ||||
@@ -0,0 +1,94 @@ | |||||
<template> | |||||
<div class="app-container"> | |||||
<navBar title="终止公告" background="0" positionType="fixed"></navBar> | |||||
<div class="block_box"> | |||||
<div class="block_tt"><i></i>项目信息</div> | |||||
<van-cell title="项目编号" :value="noticeDetail.projectCode" /> | |||||
<van-cell title="项目名称" :value="noticeDetail.projectName" /> | |||||
<van-cell title="终止原因" type="textarea" :value="noticeDetail.terminateReason" /> | |||||
<van-cell title="终止日期" :value="noticeDetail.dealTime.substr(0,10)" /> | |||||
<van-divider>附件</van-divider> | |||||
<van-cell :title="item.fileName" :url="'/api'+item.fileUrl" is-link v-for="(item,index) in noticeDetail.attachmentList"> | |||||
<!-- 使用 right-icon 插槽来自定义右侧图标 --> | |||||
<template #icon> | |||||
<img src="../../assets/images/file_icon.png" style="display: block;width: 24px;margin-right: 5px;" alt=""> | |||||
</template> | |||||
</van-cell> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script> | |||||
import {attachmentQuery, outProjectDetail} from "@/api/notice/index"; | |||||
import navBar from "@/components/common/nav_bar.vue"; | |||||
export default { | |||||
name: "noticeDetail", | |||||
components: { navBar }, | |||||
data() { | |||||
return { | |||||
noticeDetail:'', | |||||
attachmentQueryList:[] | |||||
}; | |||||
}, | |||||
created() { | |||||
this.getDetail(); | |||||
}, | |||||
methods: { | |||||
//成交公告集合 | |||||
getDetail(){ | |||||
console.log(this.$route.query.id) | |||||
outProjectDetail(this.$route.query.id).then(response => { | |||||
console.log(response) | |||||
this.noticeDetail = response.data; | |||||
}); | |||||
}, | |||||
}, | |||||
}; | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.app-container { | |||||
padding: 0 0 0.5rem; | |||||
background-color: #F4F8FB; | |||||
height: calc(100vh - 50px); | |||||
} | |||||
.block_box{ | |||||
width: 94%; | |||||
margin: 3vw auto; | |||||
background: #ffffff; | |||||
padding: 3vw 0; | |||||
border-radius: 15Px; | |||||
overflow: hidden; | |||||
.block_tt{ | |||||
font-size: 20Px; | |||||
display: flex; | |||||
align-items: center; | |||||
padding: 1.6vh 3vw; | |||||
line-height: 1; | |||||
font-weight: bold; | |||||
i{ | |||||
display: block; | |||||
width: 4Px; | |||||
height: 16Px; | |||||
background: #0CBEA6; | |||||
margin-right: 5PX; | |||||
border-radius: 5PX; | |||||
} | |||||
/*border-left: 3Px solid #0CBEA6;*/ | |||||
} | |||||
} | |||||
.title{ | |||||
font-size: 0.5rem; | |||||
margin-bottom: 0.5rem; | |||||
} | |||||
.van-row{ | |||||
margin-bottom: 0.4rem; | |||||
} | |||||
.van-col{ | |||||
font-size: 0.4rem; | |||||
color: #666666; | |||||
} | |||||
</style> |
@@ -74,6 +74,14 @@ | |||||
<van-row v-if="detail.delayPeriod!=0"> | <van-row v-if="detail.delayPeriod!=0"> | ||||
<van-col span="24"><span>延时说明:</span>自由竞价期结束后,进入{{detail.delayPeriod}}秒延时竞价期;延时竞价期内但凡有出价,则继续延时竞价,直至无人出价!</van-col> | <van-col span="24"><span>延时说明:</span>自由竞价期结束后,进入{{detail.delayPeriod}}秒延时竞价期;延时竞价期内但凡有出价,则继续延时竞价,直至无人出价!</van-col> | ||||
</van-row> | </van-row> | ||||
<van-row v-if="detail.changeImg.length > 0"> | |||||
<van-col span="24"><span>变更说明:</span></van-col> | |||||
</van-row> | |||||
<van-row v-if="detail.changeImg.length > 0"> | |||||
<van-col span="24"> | |||||
<img v-for="(item,index) in detail.changeImg" @click="previewImage(index,detail.changeImg)" :key="index" :src="'/api' + item" style="width: 100%;" /> | |||||
</van-col> | |||||
</van-row> | |||||
</div> | </div> | ||||
</van-tab> | </van-tab> | ||||
<van-tab title="标的物介绍" title-style="font-size:12px;"> | <van-tab title="标的物介绍" title-style="font-size:12px;"> | ||||
@@ -89,14 +97,14 @@ | |||||
<van-col span="24"><span>住址</span>{{ detail.address }}</van-col> | <van-col span="24"><span>住址</span>{{ detail.address }}</van-col> | ||||
</van-row> | </van-row> | ||||
<van-row> | <van-row> | ||||
<van-col span="24"><span>经济类型</span>{{ detail.economicType }}</van-col> | |||||
<van-col span="24"><span>转出方类型</span>{{ detail.economicType }}</van-col> | |||||
</van-row> | </van-row> | ||||
<van-row> | <van-row> | ||||
<van-col span="24"><span>统一社会信用代码</span>{{ detail.areaNum }}</van-col> | <van-col span="24"><span>统一社会信用代码</span>{{ detail.areaNum }}</van-col> | ||||
</van-row> | </van-row> | ||||
<van-row> | <van-row> | ||||
<van-col span="12"><span>法人/负责人</span>{{ detail.legalPerson }}</van-col> | |||||
<van-col span="12"><span>联系电话</span>{{ detail.phone }}</van-col> | |||||
<van-col span="12"><span>项目联系人</span>{{ detail.linkPerson }}</van-col> | |||||
<van-col span="12"><span>联系电话</span>{{ detail.linkPhone }}</van-col> | |||||
</van-row> | </van-row> | ||||
<van-row> | <van-row> | ||||
<van-col span="12"><span>项目类型</span>{{ detail.projectNumber }}</van-col> | <van-col span="12"><span>项目类型</span>{{ detail.projectNumber }}</van-col> | ||||
@@ -275,6 +283,7 @@ import { | |||||
import {getInfo} from "../../api/login"; | import {getInfo} from "../../api/login"; | ||||
import $ from "jquery"; | import $ from "jquery"; | ||||
import navBar from "@/components/common/nav_bar.vue"; | import navBar from "@/components/common/nav_bar.vue"; | ||||
import {ImagePreview} from "vant"; | |||||
export default { | export default { | ||||
name: "projectDetail", | name: "projectDetail", | ||||
@@ -359,6 +368,12 @@ export default { | |||||
this.reload(); | this.reload(); | ||||
}, | }, | ||||
methods: { | methods: { | ||||
previewImage(index, imgList) { | |||||
ImagePreview({ | |||||
startPosition: index, | |||||
images: imgList.map(element => '/api' + element), | |||||
}); | |||||
}, | |||||
goSignUp(){ | goSignUp(){ | ||||
getInfo().then(response => { | getInfo().then(response => { | ||||
getMember(response.user.userId).then(resresponse => { | getMember(response.user.userId).then(resresponse => { | ||||
@@ -414,7 +429,9 @@ export default { | |||||
reload(){ | reload(){ | ||||
//console.log("结束进入") | //console.log("结束进入") | ||||
getOutProjectDetail(this.id).then(response =>{ | getOutProjectDetail(this.id).then(response =>{ | ||||
this.detail=response.data | |||||
this.detail = response.data; | |||||
this.getDicts("rollout_type").then(res =>{ | this.getDicts("rollout_type").then(res =>{ | ||||
this.detail.rollout = this.selectDictLabel(res.data,response.data.rollout); | this.detail.rollout = this.selectDictLabel(res.data,response.data.rollout); | ||||
if(this.detail.oneout==0){ | if(this.detail.oneout==0){ | ||||
@@ -39,7 +39,7 @@ | |||||
<van-uploader :after-read="afterReadSFZ" :before-delete="deleteFileSFZ" v-model="fileListSFZ" multiple :max-count="1" /> | <van-uploader :after-read="afterReadSFZ" :before-delete="deleteFileSFZ" v-model="fileListSFZ" multiple :max-count="1" /> | ||||
</template> | </template> | ||||
</van-field> | </van-field> | ||||
<p style="color: red;padding: 2vw 3vw;">*身份证照片、本人和身份证的合影</p> | |||||
<p style="color: red;padding: 2vw 3vw;">*身份证照片</p> | |||||
</div> | </div> | ||||
<!-- <van-divider>银行信息</van-divider>--> | <!-- <van-divider>银行信息</van-divider>--> | ||||
@@ -43,12 +43,12 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="footer"> | <div class="footer"> | ||||
投诉电话:044-1234567 | |||||
{{tsdh}} | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
<script> | <script> | ||||
import {bookInfo, nologinMenus} from "@/api/sunVillage_info/fixedAssets"; | |||||
import {bookInfo, webList} from "@/api/sunVillage_info/fixedAssets"; | |||||
import Cookies from "js-cookie"; | import Cookies from "js-cookie"; | ||||
import {sysConfig} from "@/api/homesteadSurvey"; | import {sysConfig} from "@/api/homesteadSurvey"; | ||||
export default { | export default { | ||||
@@ -82,6 +82,7 @@ | |||||
deptId:"", | deptId:"", | ||||
book:"", | book:"", | ||||
userName:"", | userName:"", | ||||
tsdh:"", | |||||
}; | }; | ||||
}, | }, | ||||
created() { | created() { | ||||
@@ -99,6 +100,16 @@ | |||||
if(Cookies.get('user')){ | if(Cookies.get('user')){ | ||||
this.userName = JSON.parse(Cookies.get('user')).memberName | this.userName = JSON.parse(Cookies.get('user')).memberName | ||||
} | } | ||||
webList().then((res) => { | |||||
if (res.code == 200) { | |||||
var content = res.rows; | |||||
content.map(rr=>{ | |||||
if (rr.configKey == 'web.open.phone'){ | |||||
this.tsdh = rr.configValue; | |||||
} | |||||
}) | |||||
} | |||||
}); | |||||
}, | }, | ||||
methods: { | methods: { | ||||
goCode(){ | goCode(){ | ||||
@@ -108,7 +119,7 @@ | |||||
// Cookies.remove("memberName"); | // Cookies.remove("memberName"); | ||||
// Cookies.remove("idcard"); | // Cookies.remove("idcard"); | ||||
Cookies.remove("user"); | Cookies.remove("user"); | ||||
this.$router.push({name:'sunVillageInfoIndexCode',query:{deptId:this.deptId,bookId:this.bookId}}) | |||||
this.$router.push({name:'sunVillageInfoCodeLoginNew',query:{deptId:this.deptId,bookId:this.bookId}}) | |||||
} | } | ||||
}, | }, | ||||
} | } | ||||
@@ -1,6 +1,6 @@ | |||||
<template> | <template> | ||||
<div class="home_wrapper"> | <div class="home_wrapper"> | ||||
<div class="return_btn" @click="onClickLeft"></div> | |||||
<!-- <div class="return_btn" @click="onClickLeft"></div>--> | |||||
<div class="focus_head"> | <div class="focus_head"> | ||||
<div class="title"> | <div class="title"> | ||||
<p>您好,</p> | <p>您好,</p> | ||||
@@ -56,14 +56,14 @@ | |||||
</div> | </div> | ||||
</van-form> | </van-form> | ||||
<p class="copy_name">技术支持:中农融信(北京)科技股份有限公司</p> | |||||
<p class="copy_name">{{tsdh}}</p> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
<script> | <script> | ||||
import { getCodeImg, getSmsCode } from "@/api/login"; | import { getCodeImg, getSmsCode } from "@/api/login"; | ||||
import { checkFarmer, allowFaceVerify } from "@/api/sunVillage_info/fixedAssets"; | |||||
import {checkFarmer, allowFaceVerify, webList} from "@/api/sunVillage_info/fixedAssets"; | |||||
import { getFamilyMemberList } from "@/api/sunVillage_info/homestead/familyMember"; | import { getFamilyMemberList } from "@/api/sunVillage_info/homestead/familyMember"; | ||||
import Cookies from "js-cookie"; | import Cookies from "js-cookie"; | ||||
import { encrypt, decrypt } from "../../utils/jsencrypt"; | import { encrypt, decrypt } from "../../utils/jsencrypt"; | ||||
@@ -87,6 +87,7 @@ | |||||
}, | }, | ||||
loading: false, | loading: false, | ||||
codeUrl: "", //验证码 | codeUrl: "", //验证码 | ||||
tsdh: "中农融信(北京)科技股份有限公司", //验证码 | |||||
isSmsLogin: false, //是否手机验证码 | isSmsLogin: false, //是否手机验证码 | ||||
computeTime: 0, | computeTime: 0, | ||||
height:0, | height:0, | ||||
@@ -98,6 +99,16 @@ | |||||
this.getCookie(); | this.getCookie(); | ||||
//this.formData.deptId = Cookies.get('deptId'); // 要关掉这个 | //this.formData.deptId = Cookies.get('deptId'); // 要关掉这个 | ||||
this.allowIdentityVerified(); | this.allowIdentityVerified(); | ||||
webList().then((res) => { | |||||
if (res.code == 200) { | |||||
var content = res.rows; | |||||
content.map(rr=>{ | |||||
if (rr.configKey == 'web.open.technique'){ | |||||
this.tsdh = rr.configValue; | |||||
} | |||||
}) | |||||
} | |||||
}); | |||||
}, | }, | ||||
methods: { | methods: { | ||||
getCookie() { | getCookie() { | ||||