Commit 2ed280d8 by 严立

LL - 新增日历查看功能

parent d4fb1cf2
...@@ -5,7 +5,7 @@ let output = { ...@@ -5,7 +5,7 @@ let output = {
resources: 'http://bid-web.meiqicloud.com', resources: 'http://bid-web.meiqicloud.com',
agentSignIn: 'http://bid-vue.meiqicloud.com/' agentSignIn: 'http://bid-vue.meiqicloud.com/'
// 正式环境 // -正式环境
// base: '/Api/', // base: '/Api/',
// resources: 'https://www.fjbidding.com', // resources: 'https://www.fjbidding.com',
// agentSignIn: 'https://www.fjbidding.com/admin/' // agentSignIn: 'https://www.fjbidding.com/admin/'
......
...@@ -31,6 +31,7 @@ export default new Router({ ...@@ -31,6 +31,7 @@ export default new Router({
children: [ children: [
{ path: '/', name: 'bidList', mapText: '招标公告', component: () => import('@/view/public/bid-list.vue') }, { path: '/', name: 'bidList', mapText: '招标公告', component: () => import('@/view/public/bid-list.vue') },
{ path: 'notice', name: 'bidNotice', mapText: '公告详情', component: () => import('@/view/public/bid-notice.vue') }, { path: 'notice', name: 'bidNotice', mapText: '公告详情', component: () => import('@/view/public/bid-notice.vue') },
{ path: 'history', name: 'bidHistoricalNotice', mapText: '公告详情', component: () => import('@/view/public/bid-history.vue') },
{ path: 'buy', name: 'buy', mapText: '订单确认', component: () => import('@/view/public/bid-buy.vue') }, { path: 'buy', name: 'buy', mapText: '订单确认', component: () => import('@/view/public/bid-buy.vue') },
{ path: 'buyresult', name: 'buyResult', mapText: '完成报名', component: () => import('@/view/public/bid-buy-result.vue') }, { path: 'buyresult', name: 'buyResult', mapText: '完成报名', component: () => import('@/view/public/bid-buy-result.vue') },
] ]
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
<div class="home col align-c"> <div class="home col align-c">
<componentHeader></componentHeader> <componentHeader></componentHeader>
<componentNavigation></componentNavigation> <componentNavigation></componentNavigation>
<div class="home-banner"> <div class="home-banner">
<el-carousel v-if="listBanner.length > 0" class="home-carousel" trigger="click" height="400px" :autoplay="true"> <el-carousel v-if="listBanner.length > 0" class="home-carousel" trigger="click" height="400px" :autoplay="true">
<el-carousel-item v-for="(item, index) in listBanner" :key="index"> <el-carousel-item v-for="(item, index) in listBanner" :key="index">
...@@ -17,115 +18,30 @@ ...@@ -17,115 +18,30 @@
<!-- 今日开标 --> <!-- 今日开标 -->
<div class="new-bid row con-c"> <div class="new-bid row con-c">
<div class="global-maxwidth row con-b"> <div class="global-maxwidth row con-b">
<!--
下次更新内容,暂时隐藏。
<div class="calendar"> <div class="calendar">
<span class="calendar-title">开标日历</span> <span class="calendar-title">开标日历</span>
<calendar :markDate="calendarMarkDate"></calendar> <calendar :markDate="calendarMarkDate" v-on:choseDay="onCalendarDayChange" v-on:changeMonth="onCalendarDateChange"></calendar>
</div> </div>
<div> <div class="new-bid-list">
<div class="row align-e"> <div class="row align-e">
<span class="title">今日开标</span> <span class="title">开标项目</span>
<span class="title-extra global-color-red">{{timeDate + '开标项目'}}</span> <span class="title-extra global-color-red">{{timeDate}}</span>
</div> </div>
<div v-if="listBid.length" class="list col"> <div v-if="listBid.length" class="list col">
<div class="global-hover row con-b align-e" v-for="(item, index) in listBid" :key="index" @click="onDetail(item)"> <el-carousel>
<span class="global-cursor global-overflow-ellipsis ">{{item.noticeTitle}}</span> <el-carousel-item v-for="(item, index) in listBid" :key="index">
<span>{{item.timeRelease}}</span> <div class="global-hover row con-b align-e" v-for="(itemNotice, indexNotice) in item" :key="indexNotice" @click="onDetail(itemNotice)">
</div> <span class="global-cursor global-overflow-ellipsis ">{{itemNotice.noticeTitle}}</span>
<span>{{itemNotice.timeRelease}}</span>
</div>
</el-carousel-item>
</el-carousel>
</div> </div>
<div v-if="!listBid.length" class="nothing col con-c align-c"> <div v-if="!listBid.length" class="nothing col con-c align-c">
<img src="../assets/nothing.png" alt=""> <img src="../assets/nothing.png" alt="">
<span>今日暂无开标项目</span> <span>今日暂无开标项目</span>
</div> </div>
</div> </div>
-->
<div>
<div class="row align-e">
<span class="title">今日开标</span>
<span class="title-extra global-color-red">{{timeDate + '开标项目'}}</span>
</div>
<div v-if="listBid.length" class="list col">
<div class="global-hover row con-b align-e" v-for="(item, index) in listBid" :key="index" @click="onDetail(item)">
<span class="global-cursor global-overflow-ellipsis ">{{item.noticeTitle}}</span>
<span>{{item.timeRelease}}</span>
</div>
</div>
<div v-if="!listBid.length" class="nothing col con-c align-c">
<img src="../assets/nothing.png" alt="">
<span>今日暂无开标项目</span>
</div>
</div>
<!-- 未登录状态展示 -->
<div v-if="!isSignIn" class="home-signin col">
<div class="home-signin-entry row">
<div class="row con-c align-c" @click="signInEntry = 'signIn'">
<span class="global-cursor" :class="signInEntry === 'signIn' ? 'home-signin-entry-active' : 'home-signin-entry-inactive'">登录</span>
</div>
<div class="row con-c align-c" @click="signInEntry = 'register'">
<span class="global-cursor" :class="signInEntry === 'register' ? 'home-signin-entry-active' : 'home-signin-entry-inactive'">注册</span>
</div>
</div>
<div class="home-signin-identity col con-c">
<div class="home-signin-item row align-c global-cursor" @click="onSignIn('supplier')">
<img src="../assets/status-supplier.png" alt="">
<span>供应商</span>
</div>
<div v-if="signInEntry === 'signIn'" class="home-signin-item row align-c global-cursor" @click="onSignInRedirect()">
<img src="../assets/status-agency.png" alt="">
<span>代理机构</span>
</div>
<div class="home-signin-item row align-c global-cursor" @click="onSignIn('specialist')">
<img src="../assets/status-specialist.png" alt="">
<span>专家</span>
</div>
</div>
</div>
<!-- 登录状态展示 - 专家 -->
<div v-if="isSignIn && info.identity === 1" class="home-signin col">
<div class="home-signin-identity-img row con-c">
<img src="../assets/home-specialist.png" alt="">
</div>
<div class="home-signin-name col">
<span>您好,</span>
<span>{{info.name}}</span>
</div>
<div class="home-signin-notify row con-c align-c">
<el-badge :is-dot="isNewNotice" class="row align-c">
<img class="global-cursor" src="../assets/notice-tip.png">
</el-badge>
<span class="global-cursor" @click="$router.push('/specialist/notify')">我的消息</span>
</div>
<div class="home-signin-state row con-c align-c">
<span v-if="info.register !== 1">注册信息暂未通过审核</span>
<span v-if="info.register === 1" class="global-cursor" @click="$router.push('/specialist')">我的评标</span>
</div>
</div>
<!-- 登录状态展示 - 商家 -->
<div v-if="isSignIn && info.identity === 2" class="home-signin col">
<div class="home-signin-identity-img row con-c">
<img src="../assets/home-supplier.png" alt="">
</div>
<div class="home-signin-name row con-c">
<span>{{info.name}}</span>
</div>
<div class="home-signin-notify row con-c align-c">
<el-badge :is-dot="isNewNotice" class="row align-c">
<img class="global-cursor" src="../assets/notice-tip.png">
</el-badge>
<span class="global-cursor" @click="$router.push('/supplier/notify')">我的消息</span>
</div>
<div v-if="info.register !== 1" class="home-signin-state row con-c align-c">
<span >注册信息暂未通过审核</span>
</div>
<div v-if="info.register === 1" class="home-signin-state row con-b align-c">
<span class="global-cursor" @click="$router.push('/supplier/bidding')">我的投标</span>
<span class="global-cursor">|</span>
<span class="global-cursor" @click="$router.push('/supplier/auction')">我的竞价</span>
</div>
</div>
</div> </div>
</div> </div>
...@@ -233,6 +149,77 @@ ...@@ -233,6 +149,77 @@
</div> </div>
</div> </div>
<componentFooter></componentFooter> <componentFooter></componentFooter>
<!-- 未登录状态展示 -->
<div v-if="!isSignIn" class="home-signin col" :style="cssLoginMenuContainer">
<div class="home-signin-entry row">
<div class="row con-c align-c" @click="signInEntry = 'signIn'">
<span class="global-cursor" :class="signInEntry === 'signIn' ? 'home-signin-entry-active' : 'home-signin-entry-inactive'">登录</span>
</div>
<div class="row con-c align-c" @click="signInEntry = 'register'">
<span class="global-cursor" :class="signInEntry === 'register' ? 'home-signin-entry-active' : 'home-signin-entry-inactive'">注册</span>
</div>
</div>
<div class="home-signin-identity col con-c">
<div class="home-signin-item row align-c global-cursor" @click="onSignIn('supplier')">
<img src="../assets/status-supplier.png" alt="">
<span>供应商</span>
</div>
<div v-if="signInEntry === 'signIn'" class="home-signin-item row align-c global-cursor" @click="onSignInRedirect()">
<img src="../assets/status-agency.png" alt="">
<span>代理机构</span>
</div>
<div class="home-signin-item row align-c global-cursor" @click="onSignIn('specialist')">
<img src="../assets/status-specialist.png" alt="">
<span>专家</span>
</div>
</div>
</div>
<!-- 登录状态展示 - 专家 -->
<div v-if="isSignIn && info.identity === 1" class="home-signin col">
<div class="home-signin-identity-img row con-c">
<img src="../assets/home-specialist.png" alt="">
</div>
<div class="home-signin-name col">
<span>您好,</span>
<span>{{info.name}}</span>
</div>
<div class="home-signin-notify row con-c align-c">
<el-badge :is-dot="isNewNotice" class="row align-c">
<img class="global-cursor" src="../assets/notice-tip.png">
</el-badge>
<span class="global-cursor" @click="$router.push('/specialist/notify')">我的消息</span>
</div>
<div class="home-signin-state row con-c align-c">
<span v-if="info.register !== 1">注册信息暂未通过审核</span>
<span v-if="info.register === 1" class="global-cursor" @click="$router.push('/specialist')">我的评标</span>
</div>
</div>
<!-- 登录状态展示 - 商家 -->
<div v-if="isSignIn && info.identity === 2" class="home-signin col">
<div class="home-signin-identity-img row con-c">
<img src="../assets/home-supplier.png" alt="">
</div>
<div class="home-signin-name row con-c">
<span>{{info.name}}</span>
</div>
<div class="home-signin-notify row con-c align-c">
<el-badge :is-dot="isNewNotice" class="row align-c">
<img class="global-cursor" src="../assets/notice-tip.png">
</el-badge>
<span class="global-cursor" @click="$router.push('/supplier/notify')">我的消息</span>
</div>
<div v-if="info.register !== 1" class="home-signin-state row con-c align-c">
<span >注册信息暂未通过审核</span>
</div>
<div v-if="info.register === 1" class="home-signin-state row con-b align-c">
<span class="global-cursor" @click="$router.push('/supplier/bidding')">我的投标</span>
<span class="global-cursor">|</span>
<span class="global-cursor" @click="$router.push('/supplier/auction')">我的竞价</span>
</div>
</div>
</div> </div>
</template> </template>
...@@ -285,7 +272,9 @@ ...@@ -285,7 +272,9 @@
dealActive: 0, // 最新交易选中 dealActive: 0, // 最新交易选中
dealMax: 0, // 最新交易数据条目 dealMax: 0, // 最新交易数据条目
calendarMarkDayOpenNotice: [],
calendarMarkDate: [], calendarMarkDate: [],
cssLoginMenuContainer: '',
} }
}, },
computed: { computed: {
...@@ -314,12 +303,16 @@ ...@@ -314,12 +303,16 @@
}, },
}, },
created: function () { created: function () {
this.timeDate = iMiment(iTime()).format('MM月DD日') this.timeDate = iMiment(iTime()).format('YYYY年MM月DD日')
this.queryBanner() this.queryBanner()
this.queryNotice(2, 0) this.queryNotice(2, 0)
this.onQueryAuction(0) this.onQueryAuction(0)
this.queryData() this.queryData()
this.queryBidMark() this.queryBidMark(iMiment().format('YYYY-MM-') + '01', iMiment().format('YYYY-MM-') + iMiment().daysInMonth())
},
mounted: function () {
window.addEventListener('scroll', this.eventScroll, true)
}, },
methods: { methods: {
...@@ -379,40 +372,52 @@ ...@@ -379,40 +372,52 @@
console.log(funcError) console.log(funcError)
}) })
}, },
queryBidMark: function () {
let funcResponse = [{
date: '2020-10-13',
quantity: 8,
}, {
date: '2020-10-15',
quantity: 9,
}, {
date: '2020-10-18',
quantity: 12,
}, {
date: '2020-10-21',
quantity: 14,
}]
let funcMarkDate = [] queryBidMark: function (funcDateBegin, funcDateEnd) {
let funcMarkQuantity = [] let funcParams = {
'startDate': funcDateBegin,
'endDate': funcDateEnd
}
iRequest.request(iHost.base + 'bid/zTenderNotice/openNoticeCalendar', funcParams, 'json', 'post')
.then((funcResponse) => {
let funcData = funcResponse
let funcMarkDate = []
let funcMarkNotice = []
let funcMarkQuantity = []
let funcMarkQuantityCss = '' funcData.sort((a, b) => {
for (let i = 0, l = funcResponse.length; i < l; i++) { return a.date - b.date
funcMarkDate.push(iMiment(funcResponse[i].date).format('YYYY/MM/DD')) })
funcMarkQuantity.push(funcResponse[i].quantity)
} for (let i = 0, l = funcData.length; i < l; i++) {
funcMarkDate.push(iMiment(funcData[i].date).format('YYYY/MM/DD'))
funcMarkQuantity.push(funcData[i].count)
this.calendarMarkDate = funcMarkDate let funcNoticeList = []
for (let ii = 0, ll = funcData[i].list.length; ii < ll; ii++) {
let funcItem = {
'noticeId': funcData[i].list[ii].noticeId,
'noticeType': iDictionary.noticeType.mapping[iDictionary.noticeType.raw.indexOf(Number(funcData[i].list[ii].noticeType))],
'noticeTitle': funcData[i].list[ii].title,
'projectId': funcData[i].list[ii].tenderProjectId,
}
funcNoticeList.push(funcItem)
}
funcMarkNotice.push({
'date': iMiment(funcData[i].date).format('YYYY/MM/DD'),
'list': funcNoticeList
})
}
this.calendarMarkDate = funcMarkDate
this.calendarMarkDayOpenNotice = funcMarkNotice
this.$nextTick(function () { this.$nextTick(function () {
let funcMark = document.getElementsByClassName('wh_isMark') let funcMark = document.getElementsByClassName('wh_isMark')
console.log(funcMark) for (let i = 0, l = funcMark.length; i < l; i++) {
for (let i = 0, l = funcMark.length; i < l; i++) { funcMark[i].setAttribute( 'data-content' , funcMarkQuantity[i] )
funcMark[i].setAttribute( 'data-content' , funcMarkQuantity[i] ) }
} })
}) })
}, },
setHome: function () { setHome: function () {
...@@ -420,8 +425,10 @@ ...@@ -420,8 +425,10 @@
this.setNew() this.setNew()
this.setDeal() this.setDeal()
}, },
setBid: function () { setBid: function () {
let funcList = [] let funcList = []
let funcListGroup = []
let funcRawData = this.rawBid let funcRawData = this.rawBid
for (let i = 0, len = funcRawData.length; i < len; i++) { for (let i = 0, len = funcRawData.length; i < len; i++) {
let funcItem = { let funcItem = {
...@@ -430,10 +437,16 @@ ...@@ -430,10 +437,16 @@
'noticeTitle': funcRawData[i].title, 'noticeTitle': funcRawData[i].title,
'timeRelease': iMiment(funcRawData[i].releaseTime).format('YYYY-MM-DD'), 'timeRelease': iMiment(funcRawData[i].releaseTime).format('YYYY-MM-DD'),
} }
funcList.push(funcItem) funcListGroup.push(funcItem)
if (funcListGroup.length === 5) {
funcList.push(funcListGroup)
funcListGroup = []
}
} }
if (funcListGroup.length > 0) funcList.push(funcListGroup)
this.listBid = funcList this.listBid = funcList
}, },
setNew: function () { setNew: function () {
this.infoNew = { this.infoNew = {
'id': this.rawNew.id, 'id': this.rawNew.id,
...@@ -490,6 +503,7 @@ ...@@ -490,6 +503,7 @@
'noticeTitle': funcRawData[i].title, 'noticeTitle': funcRawData[i].title,
'buyWay': funcRawData[i].procurementTypeDesc, 'buyWay': funcRawData[i].procurementTypeDesc,
'timeRelease': iMiment(funcRawData[i].releaseTime).format('YYYY-MM-DD'), 'timeRelease': iMiment(funcRawData[i].releaseTime).format('YYYY-MM-DD'),
'isHistoricalData': Boolean(Number(funcResponse.list[i].history))
} }
funcList.push(funcItem) funcList.push(funcItem)
} }
...@@ -499,6 +513,32 @@ ...@@ -499,6 +513,32 @@
this.$message.error(funcError.message) this.$message.error(funcError.message)
}) })
}, },
onCalendarDateChange: function (funcEvent) {
let funcDateBegin = iMiment(funcEvent).format('YYYY-MM-') + '01'
let funcDateEnd = iMiment(funcEvent).format('YYYY-MM-') + iMiment(funcEvent).daysInMonth()
this.queryBidMark(funcDateBegin, funcDateEnd)
},
onCalendarDayChange: function (funcEvent) {
console.log(funcEvent)
this.listBid = []
this.timeDate = iMiment(funcEvent).format('YYYY年MM月DD日')
for (let i = 0, l = this.calendarMarkDayOpenNotice.length; i < l; i++) {
if (this.calendarMarkDayOpenNotice[i].date === iMiment(funcEvent).format('YYYY/MM/DD')) {
let funcListGroup = []
for (let ii = 0, ll = this.calendarMarkDayOpenNotice[i].list.length; ii < ll; ii++) {
funcListGroup.push(this.calendarMarkDayOpenNotice[i].list[ii])
if (funcListGroup.length === 5) {
this.listBid.push(funcListGroup)
funcListGroup = []
}
}
if (funcListGroup.length > 0) this.listBid.push(funcListGroup)
}
}
},
onQueryAuction: function (funcType) { onQueryAuction: function (funcType) {
this.auctionActive = funcType this.auctionActive = funcType
this.auctionActive = funcType this.auctionActive = funcType
...@@ -524,6 +564,7 @@ ...@@ -524,6 +564,7 @@
'noticeTitle': funcRawData[i].title, 'noticeTitle': funcRawData[i].title,
'timeRelease': iMiment(funcRawData[i].releaseTime).format('YYYY-MM-DD'), 'timeRelease': iMiment(funcRawData[i].releaseTime).format('YYYY-MM-DD'),
'timeClose': funcRawData[i].biddingEndTime ? iMiment(funcRawData[i].biddingEndTime).format('YYYY-MM-DD hh:mm') : false, 'timeClose': funcRawData[i].biddingEndTime ? iMiment(funcRawData[i].biddingEndTime).format('YYYY-MM-DD hh:mm') : false,
'isHistoricalData': Boolean(Number(funcResponse.list[i].history))
} }
funcList.push(funcItem) funcList.push(funcItem)
} }
...@@ -568,8 +609,14 @@ ...@@ -568,8 +609,14 @@
* @returns * @returns
*/ */
onDetail: function (funcItem) { onDetail: function (funcItem) {
let funcNoticeUrl = this.$router.resolve({ path: '/bid/notice', query: { type: funcItem.noticeType, id: funcItem.noticeId }}) if (funcItem.isHistoricalData) {
window.open(funcNoticeUrl .href, '_blank') let funcNoticeUrl = this.$router.resolve({ path: '/bid/history', query: { id: funcItem.noticeId }})
window.open(funcNoticeUrl .href, '_blank')
} else {
let funcNoticeUrl = this.$router.resolve({ path: '/bid/notice', query: { type: funcItem.noticeType, id: funcItem.noticeId }})
window.open(funcNoticeUrl .href, '_blank')
}
}, },
/** /**
* 竞标更多 * 竞标更多
...@@ -638,6 +685,11 @@ ...@@ -638,6 +685,11 @@
this.listDeal[1] = this.listDealBuffer[this.dealIndex + 1] this.listDeal[1] = this.listDealBuffer[this.dealIndex + 1]
} }
}, },
eventScroll: function (event) {
let funcScrollTop = event.target.documentElement.scrollTop
if (300 < (600 - funcScrollTop) ) this.cssLoginMenuContainer = 'top: ' + (600 - funcScrollTop) + 'px;'
},
} }
} }
</script> </script>
...@@ -647,6 +699,100 @@ ...@@ -647,6 +699,100 @@
width: 100%; width: 100%;
background-image: url(@backgroundImageUrl); background-image: url(@backgroundImageUrl);
background-repeat: no-repeat; background-repeat: no-repeat;
.home-signin {
z-index: 0;
position: fixed;
top: 600px;
right: 0;
width: 206px;
height: 300px;
padding: 24px 0;
background-image: url('../assets/bg-02.png');
background-repeat: no-repeat;
background-size: 206px 300px;
box-shadow: 0px 0px 30px 0px rgba(41, 41, 41, 0.1);
border-radius: 16px;
// 未登录状态样式
.home-signin-entry {
height: 34px;
margin-bottom: 26px;
div {
width: 50%;
}
.home-signin-entry-active {
padding-bottom: 8px;
border-bottom: 4px #D02F1E solid;
text-align: center;
font-size: @fontSize04;
font-weight: 800;
}
.home-signin-entry-inactive {
padding-bottom: 8px;
border-bottom: 2px#FFFFFF solid;
font-size: @fontSize02;
}
}
.home-signin-identity {
height: 190px;
}
.home-signin-item {
width: 100%;
height: 64px;
padding: 0 36px;
span {
font-size: @fontSize03;
}
img {
width: 40px;
margin-right: 14px;
}
}
.home-signin-item:hover {
background: #ffffff;
box-shadow: 0px 0px 30px 0px rgba(42, 42, 42, 0.15);
}
// 登录相关样式
.home-signin-identity-img {
width: 100%;
img {
width: 44px;
height: 44px;
}
}
.home-signin-name {
width: 100%;
min-height: 40px;
margin-top: 26px;
> span {
text-align: center;
}
}
.home-signin-notify {
width: 166px;
height: 54px;
margin: 26px 20px;
border-top: 1px #cccccc dashed;
border-bottom: 1px #cccccc dashed;
.el-badge {
height: 20px;
}
span {
height: 24px;
margin-left: 10px;
}
}
.home-signin-state {
width: 100%;
padding: 0 20px;
> span {
font-size: @fontSize01;
}
}
}
.more { .more {
flex-grow: 1; flex-grow: 1;
padding-bottom: 4px; padding-bottom: 4px;
...@@ -695,7 +841,6 @@ ...@@ -695,7 +841,6 @@
.calendar { .calendar {
position: relative; position: relative;
width: 410px; width: 410px;
height: 386px;
margin-right: 40px; margin-right: 40px;
box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.1); box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.1);
border-radius: 25px; border-radius: 25px;
...@@ -776,22 +921,25 @@ ...@@ -776,22 +921,25 @@
right: 0; right: 0;
bottom: 0; bottom: 0;
content: attr(data-content); content: attr(data-content);
width: 20px; min-width: 16px;
height: 16px; height: 16px;
background: #D02F1E; padding: 0 2px;
background: #2575FA;
font-size: 12px; font-size: 12px;
line-height: 20px; line-height: 16px;
color: #FFFFFF;
} }
.wh_isToday { .wh_isToday {
width: 50px; width: 50px;
height: 50px; height: 50px;
border-radius: 0; border-radius: 0;
background: #2575fa; background: #e8e8e8;
}
color: #FFFFFF; .wh_isToday::after {
background:#c31a18;
} }
} }
...@@ -804,6 +952,11 @@ ...@@ -804,6 +952,11 @@
} }
} }
} }
.new-bid-list {
max-height: 460px;
}
.title { .title {
> span:nth-child(1) { > span:nth-child(1) {
margin-right: 16px; margin-right: 16px;
...@@ -818,8 +971,7 @@ ...@@ -818,8 +971,7 @@
padding-bottom: 4px; padding-bottom: 4px;
} }
.list { .list {
width: 940px; width: 750px;
// width: 750px;
span:nth-child(1) { span:nth-child(1) {
max-width: 830px; max-width: 830px;
margin-top: 32px; margin-top: 32px;
...@@ -831,104 +983,13 @@ ...@@ -831,104 +983,13 @@
} }
} }
.nothing { .nothing {
width: 940px; width: 750px;
// width: 750px;
height: 200px; height: 200px;
img { img {
height: 100px; height: 100px;
margin-bottom: 20px; margin-bottom: 20px;
} }
} }
.home-signin {
// position: absolute;
// top: 60px;
// right: 0;
width: 206px;
height: 300px;
padding: 24px 0;
background-image: url('../assets/bg-02.png');
background-repeat: no-repeat;
background-size: 206px 300px;
box-shadow: 0px 0px 30px 0px rgba(41, 41, 41, 0.1);
border-radius: 16px;
// 未登录状态样式
.home-signin-entry {
height: 34px;
margin-bottom: 26px;
div {
width: 50%;
}
.home-signin-entry-active {
padding-bottom: 8px;
border-bottom: 4px #D02F1E solid;
text-align: center;
font-size: @fontSize04;
font-weight: 800;
}
.home-signin-entry-inactive {
padding-bottom: 8px;
border-bottom: 2px#FFFFFF solid;
font-size: @fontSize02;
}
}
.home-signin-identity {
height: 190px;
}
.home-signin-item {
width: 100%;
height: 64px;
padding: 0 36px;
span {
font-size: @fontSize03;
}
img {
width: 40px;
margin-right: 14px;
}
}
.home-signin-item:hover {
background: #ffffff;
box-shadow: 0px 0px 30px 0px rgba(42, 42, 42, 0.15);
}
// 登录相关样式
.home-signin-identity-img {
width: 100%;
img {
width: 44px;
height: 44px;
}
}
.home-signin-name {
width: 100%;
min-height: 40px;
margin-top: 26px;
> span {
text-align: center;
}
}
.home-signin-notify {
width: 166px;
height: 54px;
margin: 26px 20px;
border-top: 1px #cccccc dashed;
border-bottom: 1px #cccccc dashed;
.el-badge {
height: 20px;
}
span {
height: 24px;
margin-left: 10px;
}
}
.home-signin-state {
width: 100%;
padding: 0 20px;
> span {
font-size: @fontSize01;
}
}
}
} }
.notice { .notice {
width: 100%; width: 100%;
......
import iMiment from 'miment'
import iHost from '@/common/js/host.js'
import iRequest from '@/common/js/request/request.js'
let output = function (thisVue, id, type, isPreview) {
let funcRequestDetail
let funcRequestOther
let funcMap = []
let funcProject = {} // 项目数据
// 竞价报价公告
funcMap = [ { text: '招标公告', redirect: '/bid' }, { text: '历史公告', redirect: null }]
let funcParam = {
'id': id
}
// 预览公告独有字段
if (isPreview) funcParam.preview = 1
iRequest.request(iHost.base + 'bid/zTenderNotice/getHistoryNotice', funcParam, 'json', 'post')
.then((funcResponse) => {
console.log(funcResponse)
funcProject = {
'noticeId': id,
'noticeType': type,
'noticeTitle': funcResponse.title,
'contentHtml': funcResponse.content,
'timeRelease': funcResponse.releasetime,
}
console.log(funcProject)
thisVue.$store.commit('componentProject', funcProject)
thisVue.noticeData(funcMap, funcProject)
})
.catch((funcError) => {})
}
export default output
\ No newline at end of file
<template>
<div class="public-bid-details">
<div class="main">
<!-- 页面地图 -->
<div>
<currencyMap :customPath="componentMap"></currencyMap>
</div>
<div class="info-title col">
<span>{{componentProject.noticeTitle}}</span>
<span><i class="el-icon-time"></i>{{'发布时间:' + componentProject.timeRelease}}</span>
</div>
<!-- 具体内容 -->
<div class="info-item">
<div class="title title-decorate row align-c">
<span>公告内容</span>
</div>
<div class="content" v-html="componentProject.contentHtml"></div>
</div>
</div>
</div>
</template>
<script>
// npm
import iMiment from 'miment'
// 工具
import iHost from '@/common/js/host.js'
import iRequest from '@/common/js/request/request.js'
import iRuleAtom from '@/common/js/rule/atom.js'
// 组件
import iCurrencyMap from '@/components/currency-map.vue'
import iNotice from './bid-history.js'
export default {
components: {
currencyMap: iCurrencyMap,
},
data: function () {
return {
projectId: '', // 项目标识
noticeId: 0, // 项目标识
componentMap: [], // 地图路径
componentProject: {}, // 项目数据
isPreview: false,
}
},
watch:{
$route: function () {
this.initKey()
iNotice(this, this.noticeId, '')
}
},
created: function () {
clearInterval(this.quoteTimer)
this.initKey()
iNotice(this, this.noticeId, '', this.isPreview)
},
methods: {
initKey: function () {
this.noticeId = this.$route.query.id
this.isPreview = this.$route.query.preview ? true : false
},
noticeData: function (funcMap, funcProject) {
this.componentMap = funcMap
this.componentProject = funcProject
},
}
}
</script>
<style lang="less">
.public-bid-details {
width: 1200px;
min-height: 490px;
margin: 36px 0;
padding: 32px 32px 0 32px;
background: @colorWhite;
box-shadow:0px 0px 20px 0px rgba(41,41,41,0.05);
.title {
width: 100%;
height: 50px;
margin-bottom: 24px;
border-bottom: 1px #F2F2F2 solid;
span {
font-size: @fontSize04;
}
}
.title-decorate:before{
content: '';
display: inline-block;
width: 4px;
height: 20px;
margin-right: 10px;
overflow: hidden;
background-image: linear-gradient(#CF2F1E 20%, #00468C 20%, #00468C 100%);
}
.info-title {
width: 1140px;
margin-top: 20px;
border-bottom: 1px #F2F2F2 solid;
> span:nth-child(1) {
word-wrap: break-word;
font-weight: 800;
font-size: @fontSize06;
}
> span:nth-child(2) {
margin: 20px 0;
color: @colorGrey40;
font-size: @fontSize01;
}
}
.info-item {
width: 1140px;
margin-bottom: 54px;
// 公告富文本相关默认样式
.content {
overflow: hidden;
line-height: 1.5;
// 对应后台富文本编辑边框样式
table {
border-top: 1px solid #ccc;
border-left: 1px solid #ccc;
th {
border-bottom: 1px solid #ccc;
border-right: 1px solid #ccc;
text-align: center;
}
td {
border-bottom: 1px solid #ccc;
border-right: 1px solid #ccc;
padding: 3px 5px;
}
}
p {
line-height: 2;
}
}
}
}
</style>
\ No newline at end of file
...@@ -214,6 +214,7 @@ ...@@ -214,6 +214,7 @@
'time': iMiment(funcResponse.list[i].releaseTime).format('YYYY-MM-DD'), 'time': iMiment(funcResponse.list[i].releaseTime).format('YYYY-MM-DD'),
'title': funcResponse.list[i].title, 'title': funcResponse.list[i].title,
'typeId': iDictionary.noticeType.mapping[iDictionary.noticeType.raw.indexOf(Number(funcResponse.list[i].noticeType))], 'typeId': iDictionary.noticeType.mapping[iDictionary.noticeType.raw.indexOf(Number(funcResponse.list[i].noticeType))],
'isHistoricalData': Boolean(Number(funcResponse.list[i].history))
} }
if (funcItem.type === '-') { if (funcItem.type === '-') {
...@@ -334,7 +335,12 @@ ...@@ -334,7 +335,12 @@
}, },
onBidDetails: function (funcItem) { onBidDetails: function (funcItem) {
this.$router.push('/bid/notice?type=' + funcItem.typeId + '&id=' + funcItem.id) console.log(funcItem)
if (funcItem.isHistoricalData) {
this.$router.push('/bid/history?id=' + funcItem.id)
} else {
this.$router.push('/bid/notice?type=' + funcItem.typeId + '&id=' + funcItem.id)
}
}, },
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment