@@ -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) { | |||
return request({ | |||
@@ -1473,3 +1473,12 @@ export function jyxzyqkgkDetail(id) { | |||
method: 'get' | |||
}) | |||
} | |||
// 收支明细公开 | |||
export function webList(query) { | |||
return request({ | |||
url: '/open/typz/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} |
@@ -1,7 +1,7 @@ | |||
<template> | |||
<div> | |||
<!-- <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='land-btn-wrap'> | |||
<!--<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.drawingResetMap" type="button" class="ant-btn ant-btn-red" value="重置图层"/> | |||
</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 style="font-size: 13px; padding-top: 5px;">备注:绿色地块表示该地块,蓝色表示本账套已标记的其他地块</div> | |||
<div id="info" style="display: none"></div> | |||
@@ -21,6 +23,7 @@ | |||
import {getQueryLand} from "@/api/homesteadSurvey/zjdzd"; | |||
import $ from "jquery"; | |||
import { getConfigKey } from "@/api/system/config"; | |||
import {Toast} from "vant"; | |||
export default { | |||
components: { | |||
@@ -44,6 +47,20 @@ export default { | |||
// 获取村边界的图层名称 | |||
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: { | |||
// 获取geoserver的地址 | |||
getGeoServerUrl() { | |||
@@ -74,34 +91,72 @@ export default { | |||
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) { | |||
// 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. 再尝试浏览器 | |||
if (navigator.geolocation) { | |||
console.log('使用浏览器获取定位'); | |||
const loading = Toast.loading({ | |||
message: '定位中...', | |||
duration: 0, | |||
}); | |||
let timeout = this.getLocationTimeout(); | |||
navigator.geolocation.getCurrentPosition( | |||
(position) => { | |||
const { latitude, longitude } = position.coords; | |||
console.log('浏览器定位结果: 经纬度=' + longitude + ', ' + latitude); | |||
let res = { | |||
code: 200, | |||
data: { | |||
@@ -109,13 +164,15 @@ export default { | |||
lat: latitude, | |||
}, | |||
}; | |||
loading.clear(); | |||
callback(res); | |||
}, | |||
(error) => { | |||
loading.clear(); | |||
console.log('定位失败: ' + error.message); | |||
getQueryLand().then(callback); | |||
}, | |||
{ enableHighAccuracy: true, timeout: 5000 } | |||
{ enableHighAccuracy: true, timeout: timeout } | |||
); | |||
return; | |||
} | |||
@@ -633,4 +690,10 @@ export default { | |||
z-index: 2000; | |||
padding-top: 5%; | |||
} | |||
.location-mode-chooser-btn { | |||
position: absolute; | |||
right: 0; | |||
bottom: 0; | |||
z-index: 2000; | |||
} | |||
</style> |
@@ -1,6 +1,6 @@ | |||
<template> | |||
<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='land-btn-wrap' v-show="showBtn"> | |||
<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="this.drawResetMap" type="button" class="ant-btn ant-btn-red" value="重置标记"/> | |||
</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 style="font-size: 1.4vh; padding-top: 5px;">备注:黄色标记表示该资产,蓝色标记表示本账套已标记的其他资产</div> | |||
<div id="info" style="display: none"></div> | |||
@@ -19,6 +21,7 @@ | |||
import Cookies from "js-cookie"; | |||
import {getQueryLand} from "@/api/homesteadSurvey/zjdzd"; | |||
import { getConfigKey } from "@/api/system/config"; | |||
import {Toast} from "vant"; | |||
export default { | |||
data() { | |||
@@ -40,6 +43,20 @@ | |||
// 获取村边界的图层名称 | |||
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: { | |||
// 获取geoserver的地址 | |||
getGeoServerUrl() { | |||
@@ -70,34 +87,72 @@ | |||
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) { | |||
// 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. 再尝试浏览器 | |||
if (navigator.geolocation) { | |||
console.log('使用浏览器获取定位'); | |||
const loading = Toast.loading({ | |||
message: '定位中...', | |||
duration: 0, | |||
}); | |||
let timeout = this.getLocationTimeout(); | |||
navigator.geolocation.getCurrentPosition( | |||
(position) => { | |||
const { latitude, longitude } = position.coords; | |||
console.log('浏览器定位结果: 经纬度=' + longitude + ', ' + latitude); | |||
let res = { | |||
code: 200, | |||
data: { | |||
@@ -105,13 +160,15 @@ | |||
lat: latitude, | |||
}, | |||
}; | |||
loading.clear(); | |||
callback(res); | |||
}, | |||
(error) => { | |||
loading.clear(); | |||
console.log('定位失败: ' + error.message); | |||
getQueryLand().then(callback); | |||
}, | |||
{ enableHighAccuracy: true, timeout: 5000 } | |||
{ enableHighAccuracy: true, timeout: timeout } | |||
); | |||
return; | |||
} | |||
@@ -710,4 +767,10 @@ | |||
z-index: 2000; | |||
padding-top: 5%; | |||
} | |||
.location-mode-chooser-btn { | |||
position: absolute; | |||
right: 0; | |||
bottom: 0; | |||
z-index: 2000; | |||
} | |||
</style> |
@@ -39,6 +39,8 @@ const whiteList = [ | |||
'/policyPDF', | |||
'/attestationDetail', | |||
'/noticeDetail', | |||
'/stopDetail', | |||
'/abnormalDetail', | |||
'/homestead/login', | |||
'/applicationForm', | |||
'/applicationList', | |||
@@ -389,6 +389,24 @@ export const constantRoutes = [ | |||
}, | |||
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', | |||
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> | |||
<!-- <van-divider :style="{ borderColor: '#0CBEA6', padding: '0 16px' }"></van-divider>--> | |||
<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 class="block_box orbg"> | |||
@@ -38,9 +36,7 @@ | |||
<!-- <van-divider :style="{ borderColor: '#FD683F', padding: '0 16px' }">受让方信息</van-divider>--> | |||
<van-cell title="受让方" :value="attestationDetail.inName" /> | |||
<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> | |||
<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;"> | |||
<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;"> | |||
<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> | |||
@@ -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;"> | |||
<template #title> | |||
<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> | |||
</div> | |||
</template> | |||
@@ -49,6 +52,52 @@ | |||
</van-list> | |||
</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="招标公告"> | |||
<!-- <template #title><van-icon name="description" size="18" style="top: 4px"/>招标公告</template>--> | |||
<van-list | |||
@@ -106,7 +155,7 @@ | |||
</template> | |||
<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"; | |||
export default { | |||
name: "notice", | |||
@@ -129,6 +178,14 @@ export default { | |||
winTheBiddingLoading: false, | |||
//是否滚动到底部 | |||
winTheBiddingFinished: false, | |||
//是否显示加载 | |||
stopLoading: false, | |||
//是否滚动到底部 | |||
stopFinished: false, | |||
//是否显示加载 | |||
abnormalLoading: false, | |||
//是否滚动到底部 | |||
abnormalFinished: false, | |||
//成交公告集合 | |||
noticeList:[], | |||
//招标公告集合 | |||
@@ -137,6 +194,10 @@ export default { | |||
winTheBiddingList:[], | |||
//鉴证公告集合 | |||
attestationList:[], | |||
//终止公告集合 | |||
stopList:[], | |||
//异常公告集合 | |||
abnormalList:[], | |||
//成交公告查询参数 | |||
queryParams: { | |||
deptId:100, | |||
@@ -161,6 +222,18 @@ export default { | |||
pageNum:1, | |||
pageSize:10 | |||
}, | |||
//终止公告查询参数 | |||
stopQueryParams: { | |||
deptId:100, | |||
pageNum:1, | |||
pageSize:10 | |||
}, | |||
//异常公告查询参数 | |||
abnormalQueryParams: { | |||
deptId:100, | |||
pageNum:1, | |||
pageSize:10 | |||
}, | |||
}; | |||
}, | |||
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(){ | |||
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-col span="24"><span>延时说明:</span>自由竞价期结束后,进入{{detail.delayPeriod}}秒延时竞价期;延时竞价期内但凡有出价,则继续延时竞价,直至无人出价!</van-col> | |||
</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> | |||
</van-tab> | |||
<van-tab title="标的物介绍" title-style="font-size:12px;"> | |||
@@ -89,14 +97,14 @@ | |||
<van-col span="24"><span>住址</span>{{ detail.address }}</van-col> | |||
</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-col span="24"><span>统一社会信用代码</span>{{ detail.areaNum }}</van-col> | |||
</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-col span="12"><span>项目类型</span>{{ detail.projectNumber }}</van-col> | |||
@@ -275,6 +283,7 @@ import { | |||
import {getInfo} from "../../api/login"; | |||
import $ from "jquery"; | |||
import navBar from "@/components/common/nav_bar.vue"; | |||
import {ImagePreview} from "vant"; | |||
export default { | |||
name: "projectDetail", | |||
@@ -359,6 +368,12 @@ export default { | |||
this.reload(); | |||
}, | |||
methods: { | |||
previewImage(index, imgList) { | |||
ImagePreview({ | |||
startPosition: index, | |||
images: imgList.map(element => '/api' + element), | |||
}); | |||
}, | |||
goSignUp(){ | |||
getInfo().then(response => { | |||
getMember(response.user.userId).then(resresponse => { | |||
@@ -414,7 +429,9 @@ export default { | |||
reload(){ | |||
//console.log("结束进入") | |||
getOutProjectDetail(this.id).then(response =>{ | |||
this.detail=response.data | |||
this.detail = response.data; | |||
this.getDicts("rollout_type").then(res =>{ | |||
this.detail.rollout = this.selectDictLabel(res.data,response.data.rollout); | |||
if(this.detail.oneout==0){ | |||
@@ -39,7 +39,7 @@ | |||
<van-uploader :after-read="afterReadSFZ" :before-delete="deleteFileSFZ" v-model="fileListSFZ" multiple :max-count="1" /> | |||
</template> | |||
</van-field> | |||
<p style="color: red;padding: 2vw 3vw;">*身份证照片、本人和身份证的合影</p> | |||
<p style="color: red;padding: 2vw 3vw;">*身份证照片</p> | |||
</div> | |||
<!-- <van-divider>银行信息</van-divider>--> | |||
@@ -43,12 +43,12 @@ | |||
</div> | |||
</div> | |||
<div class="footer"> | |||
投诉电话:044-1234567 | |||
{{tsdh}} | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import {bookInfo, nologinMenus} from "@/api/sunVillage_info/fixedAssets"; | |||
import {bookInfo, webList} from "@/api/sunVillage_info/fixedAssets"; | |||
import Cookies from "js-cookie"; | |||
import {sysConfig} from "@/api/homesteadSurvey"; | |||
export default { | |||
@@ -82,6 +82,7 @@ | |||
deptId:"", | |||
book:"", | |||
userName:"", | |||
tsdh:"", | |||
}; | |||
}, | |||
created() { | |||
@@ -99,6 +100,16 @@ | |||
if(Cookies.get('user')){ | |||
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: { | |||
goCode(){ | |||
@@ -108,7 +119,7 @@ | |||
// Cookies.remove("memberName"); | |||
// Cookies.remove("idcard"); | |||
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> | |||
<div class="home_wrapper"> | |||
<div class="return_btn" @click="onClickLeft"></div> | |||
<!-- <div class="return_btn" @click="onClickLeft"></div>--> | |||
<div class="focus_head"> | |||
<div class="title"> | |||
<p>您好,</p> | |||
@@ -56,14 +56,14 @@ | |||
</div> | |||
</van-form> | |||
<p class="copy_name">技术支持:中农融信(北京)科技股份有限公司</p> | |||
<p class="copy_name">{{tsdh}}</p> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
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 Cookies from "js-cookie"; | |||
import { encrypt, decrypt } from "../../utils/jsencrypt"; | |||
@@ -87,6 +87,7 @@ | |||
}, | |||
loading: false, | |||
codeUrl: "", //验证码 | |||
tsdh: "中农融信(北京)科技股份有限公司", //验证码 | |||
isSmsLogin: false, //是否手机验证码 | |||
computeTime: 0, | |||
height:0, | |||
@@ -98,6 +99,16 @@ | |||
this.getCookie(); | |||
//this.formData.deptId = Cookies.get('deptId'); // 要关掉这个 | |||
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: { | |||
getCookie() { | |||