| @@ -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() { | |||