| @@ -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({ | |||
| @@ -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> | |||
| @@ -49,6 +49,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 +152,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 +175,14 @@ export default { | |||
| winTheBiddingLoading: false, | |||
| //是否滚动到底部 | |||
| winTheBiddingFinished: false, | |||
| //是否显示加载 | |||
| stopLoading: false, | |||
| //是否滚动到底部 | |||
| stopFinished: false, | |||
| //是否显示加载 | |||
| abnormalLoading: false, | |||
| //是否滚动到底部 | |||
| abnormalFinished: false, | |||
| //成交公告集合 | |||
| noticeList:[], | |||
| //招标公告集合 | |||
| @@ -137,6 +191,10 @@ export default { | |||
| winTheBiddingList:[], | |||
| //鉴证公告集合 | |||
| attestationList:[], | |||
| //终止公告集合 | |||
| stopList:[], | |||
| //异常公告集合 | |||
| abnormalList:[], | |||
| //成交公告查询参数 | |||
| queryParams: { | |||
| deptId:100, | |||
| @@ -161,6 +219,18 @@ export default { | |||
| pageNum:1, | |||
| pageSize:10 | |||
| }, | |||
| //终止公告查询参数 | |||
| stopQueryParams: { | |||
| deptId:100, | |||
| pageNum:1, | |||
| pageSize:10 | |||
| }, | |||
| //异常公告查询参数 | |||
| abnormalQueryParams: { | |||
| deptId:100, | |||
| pageNum:1, | |||
| pageSize:10 | |||
| }, | |||
| }; | |||
| }, | |||
| created() { | |||
| @@ -208,6 +278,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> | |||