76 changed files with 168 additions and 9337 deletions
@ -1,32 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: song |
|
||||
email: 15235360226@163.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<a-breadcrumb> |
|
||||
<a-breadcrumb-item>绿谷生物</a-breadcrumb-item> |
|
||||
<a-breadcrumb-item :key="index" v-for="(item,index) in arr"> |
|
||||
<router-link :to="item.url">{{ item.name }}</router-link> |
|
||||
</a-breadcrumb-item> |
|
||||
</a-breadcrumb> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations, mapActions } from 'vuex'; |
|
||||
export default { |
|
||||
name: 'RichText', |
|
||||
props: { |
|
||||
arr: { |
|
||||
type: Array, |
|
||||
default: () => [], |
|
||||
}, |
|
||||
}, |
|
||||
data() { |
|
||||
return {}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped></style> |
|
@ -1,65 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: song |
|
||||
email: 15235360226@163.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<div> |
|
||||
<div class="words-content"> |
|
||||
<span class="font-16 white line-height-36" v-dompurify-html="content"></span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations, mapActions } from 'vuex'; |
|
||||
import { getPageDetail } from 'config/api'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'RichText', |
|
||||
props: { |
|
||||
title: { |
|
||||
type: String, |
|
||||
default: '', |
|
||||
}, |
|
||||
}, |
|
||||
|
|
||||
data() { |
|
||||
return { content: '' }; |
|
||||
}, |
|
||||
|
|
||||
// computed: mapState('home', ['titleCode']), |
|
||||
|
|
||||
async created() { |
|
||||
// this.setContent(''); |
|
||||
await this.getPageDetail(this.title); |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
// ...mapMutations('home', ['setContent']), |
|
||||
// ...mapActions('home', ['getPageDetail']), |
|
||||
|
|
||||
async getPageDetail(titleCode) { |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { titleCode }, |
|
||||
}; |
|
||||
const res = await getPageDetail(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
if (data && data.length > 0 && data[0] && data[0].length > 0 && data[0][0].detail) { |
|
||||
this.content = data[0][0].detail.content; |
|
||||
} |
|
||||
} else { |
|
||||
message.error(msg || '查询失败'); |
|
||||
throw msg; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
// throw new Error(`SignIn.vue method getCode: ${error}`); |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
@ -1,28 +0,0 @@ |
|||||
<template> |
|
||||
<div class="friend"> |
|
||||
<div class="inner"> |
|
||||
{{ str }} |
|
||||
<span :key="index" class="mx-2" v-for="(list,index) in lists">{{ list }}</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
data() { |
|
||||
return { |
|
||||
str: '友情链接:', |
|
||||
lists: ['科技部', '发改委', '工信部', '太原市综改区', '山西省科技厅', '山西省工信厅', '山西省发改委', '太原市科技厅', '太原市发改委'], |
|
||||
}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.friend { |
|
||||
line-height: 64px; |
|
||||
background: #fff; |
|
||||
font-size: 12px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
} |
|
||||
</style> |
|
@ -1,148 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: song |
|
||||
email: 15235360226@163.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<div class="index-wrap"> |
|
||||
<div class="d-flex flex-nowrap align-center baseColor" v-if="i === 0"> |
|
||||
<span class="font-bold-24">行业资讯</span> |
|
||||
<img class="bullhorn ml-4" src="@/assets/bullhorn.png" /> |
|
||||
<div class="flex-1"></div> |
|
||||
<a-button |
|
||||
@click="$router.push('/ItInformation')" |
|
||||
class="d-flex align-end font-16 baseColor pa-0" |
|
||||
style="display: inline-block;" |
|
||||
type="link" |
|
||||
> |
|
||||
more |
|
||||
<a-icon style="font-size:12px" type="right" /> |
|
||||
</a-button> |
|
||||
</div> |
|
||||
<div class="d-flex flex-nowrap align-center baseColor" v-else> |
|
||||
<span class="font-bold-24">活动公告</span> |
|
||||
<img class="bullhorn ml-4" src="@/assets/bullhorn.png" /> |
|
||||
<div class="flex-1"></div> |
|
||||
<a-button |
|
||||
@click="$router.push('/Activity')" |
|
||||
class="d-flex align-end font-16 baseColor pa-0" |
|
||||
style="display: inline-block;" |
|
||||
type="link" |
|
||||
> |
|
||||
more |
|
||||
<a-icon style="font-size:12px" type="right" /> |
|
||||
</a-button> |
|
||||
</div> |
|
||||
<div class="policy-box" v-if="lists && lists[i].news && lists[i].news.length>0"> |
|
||||
<div :key="index" class="div-box" v-for="(item, index) in lists[i].news"> |
|
||||
<div @click="jumpDetails(item)" class="d-flex flex-nowrap" style="cursor: pointer"> |
|
||||
<div class="time d-flex flex-column align-center mr-5" v-if="item.releaseTime"> |
|
||||
<span class="font-20">{{ monthEnglish[item.releaseTime.split('-')[1] - 1] }}.</span> |
|
||||
<span class="font-bold-32 day">{{ item.releaseTime.split(' ')[0].split('-')[2] }}</span> |
|
||||
</div> |
|
||||
<div class="d-flex flex-1 flex-column"> |
|
||||
<div class="item-title">{{ item.title }}</div> |
|
||||
<div class="original"></div> |
|
||||
<div class="item-content">{{ item.content }}</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations } from 'vuex'; |
|
||||
import { front } from 'config/api'; |
|
||||
export default { |
|
||||
name: 'IndexNewList', |
|
||||
props: { |
|
||||
i: { |
|
||||
type: Number, |
|
||||
default: 0, |
|
||||
}, |
|
||||
lists: { |
|
||||
type: Array, |
|
||||
default: () => [], |
|
||||
}, |
|
||||
}, |
|
||||
data() { |
|
||||
return { monthEnglish: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Spt', 'Oct', 'Nov', 'Dec'] }; |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
...mapMutations('home', ['setActDetail']), |
|
||||
|
|
||||
// 跳转到详情界面 |
|
||||
jumpDetails(item) { |
|
||||
this.setActDetail(item); |
|
||||
this.$router.push('/ActDetails'); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style scoped lang="stylus"> |
|
||||
.index-wrap { |
|
||||
width: 90%; |
|
||||
height: 400px; |
|
||||
margin: 15px auto 15px auto; |
|
||||
overflow: hidden; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.bullhorn { |
|
||||
width: 25px; |
|
||||
height: 25px; |
|
||||
} |
|
||||
|
|
||||
.policy-box { |
|
||||
.div-box { |
|
||||
position: relative; |
|
||||
background: #fff; |
|
||||
padding-top: 24px; |
|
||||
height: 114px; |
|
||||
|
|
||||
.time { |
|
||||
color: rgba(0, 0, 0, 0.25); |
|
||||
|
|
||||
.day { |
|
||||
position: relative; |
|
||||
top: -15px; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.item-title { |
|
||||
overflow: hidden; |
|
||||
display: -webkit-box; |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
font-family: Microsoft YaHei; |
|
||||
-webkit-line-clamp: 1; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
|
|
||||
.original { |
|
||||
position: relative; |
|
||||
top: 1px; |
|
||||
left: 0; |
|
||||
width: 30px; |
|
||||
height: 2px; |
|
||||
background: #13ACC4; |
|
||||
} |
|
||||
|
|
||||
.item-content { |
|
||||
overflow: hidden; |
|
||||
display: -webkit-box; |
|
||||
margin-top: 8px; |
|
||||
line-height: 28px; |
|
||||
font-size: 14px; |
|
||||
color: rgba(0, 0, 0, 0.45); |
|
||||
font-family: Microsoft YaHei; |
|
||||
-webkit-line-clamp: 2; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
</style> |
|
@ -1,140 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<a-button type="primary" @click="showModal" class="shopping"> |
|
||||
{{ str }} |
|
||||
</a-button> |
|
||||
<a-icon id="ddd" type="shopping-cart" /> |
|
||||
<a-modal width="50%" :title="title" :visible="visible" :confirm-loading="confirmLoading" @ok="handleOk" @cancel="handleCancel"> |
|
||||
<a-form :form="form"> |
|
||||
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="项目信息简述"> |
|
||||
<a-textarea v-model.trim="describe" style="height: 120px" placeholder="请输入项目信息简述..." /> |
|
||||
</a-form-item> |
|
||||
</a-form> |
|
||||
</a-modal> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapActions } from 'vuex'; |
|
||||
import { addCar } from 'config/api'; |
|
||||
const formItemLayout = { |
|
||||
labelCol: { span: 5 }, |
|
||||
wrapperCol: { span: 18 }, |
|
||||
}; |
|
||||
const formTailLayout = { |
|
||||
labelCol: { span: 6 }, |
|
||||
wrapperCol: { span: 18, offset: 6 }, |
|
||||
}; |
|
||||
export default { |
|
||||
name: 'NewModel', |
|
||||
props: { |
|
||||
typeData: { |
|
||||
type: Object, |
|
||||
default: null, |
|
||||
}, |
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
form: this.$form.createForm(this, { name: 'submit' }), |
|
||||
title: '加入购物车', |
|
||||
str: '加入购物车', |
|
||||
visible: false, |
|
||||
formItemLayout, |
|
||||
formTailLayout, |
|
||||
confirmLoading: false, |
|
||||
pageX: 0, |
|
||||
pageY: 0, |
|
||||
WinWidth: 0, |
|
||||
WinHeight: 0, |
|
||||
describe: '', // 项目描述 |
|
||||
}; |
|
||||
}, |
|
||||
methods: { |
|
||||
// 显示表单输入框 |
|
||||
showModal(event) { |
|
||||
this.pageX = event.clientX; |
|
||||
this.pageY = event.clientY; |
|
||||
|
|
||||
this.visible = true; |
|
||||
}, |
|
||||
// 取消显示 |
|
||||
handleCancel(e) { |
|
||||
this.visible = false; |
|
||||
}, |
|
||||
// 点击确定 |
|
||||
async handleOk() { |
|
||||
this.confirmLoading = true; |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
description: this.describe, |
|
||||
serviceId: this.typeData.Id, |
|
||||
type: this.typeData.type, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await addCar(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.$message.success('加入购物车成功'); |
|
||||
this.visible = false; |
|
||||
this.confirmLoading = false; |
|
||||
this.describe = ''; |
|
||||
this.anma(); |
|
||||
} else { |
|
||||
this.$message.error(msg); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
this.$message.error(error); |
|
||||
} |
|
||||
}, |
|
||||
// 加入购物车动画 |
|
||||
anma() { |
|
||||
this.WinWidth = window.innerWidth; |
|
||||
this.WinHeight = window.innerHeight; |
|
||||
var d = document.getElementById('ddd'); |
|
||||
d.style.top = this.pageY - d.offsetHeight * 0.5 + 'px'; |
|
||||
console.log(d.offsetWidth); |
|
||||
d.style.right = this.WinWidth - this.pageX - d.offsetWidth * 0.5 + 'px'; |
|
||||
d.style.display = 'block'; |
|
||||
setTimeout(() => { |
|
||||
d.style.display = 'none'; |
|
||||
}, 900); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.must-color { |
|
||||
color: red; |
|
||||
} |
|
||||
|
|
||||
.code_img { |
|
||||
height: 32px; |
|
||||
width: 120px; |
|
||||
} |
|
||||
|
|
||||
#ddd { |
|
||||
color: #13acc4; |
|
||||
font-size: 50px; |
|
||||
display: none; |
|
||||
z-index: 1000; |
|
||||
animation: animations 1s cubic-bezier(0.5, 0.5, 0.5, 0.5); |
|
||||
position: fixed; |
|
||||
} |
|
||||
|
|
||||
@keyframes animations { |
|
||||
0% { |
|
||||
} |
|
||||
|
|
||||
99% { |
|
||||
top: 0; |
|
||||
right: -50px; |
|
||||
font-size: 20px; |
|
||||
} |
|
||||
|
|
||||
100% { |
|
||||
transform: none; |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,38 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<a-modal |
|
||||
:footer="null" |
|
||||
:title="profile.title" |
|
||||
:visible="showProfile" |
|
||||
@cancel="handleCancel" |
|
||||
@ok="handleCancel" |
|
||||
> |
|
||||
<p>{{ profile.description }}</p> |
|
||||
</a-modal> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations, mapActions } from 'vuex'; |
|
||||
|
|
||||
export default { |
|
||||
props: { |
|
||||
showProfile: { |
|
||||
type: Boolean, |
|
||||
default: false, |
|
||||
}, |
|
||||
}, |
|
||||
|
|
||||
data() { |
|
||||
return { ModalText: 'Content of the modal', }; |
|
||||
}, |
|
||||
|
|
||||
computed: mapState('home', ['profile']), |
|
||||
|
|
||||
methods: { |
|
||||
handleCancel(e) { |
|
||||
this.$emit('closeProfile'); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
@ -1,132 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: song |
|
||||
email: 15235360226@163.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<div class="enterprise-bg" v-if="newPartners && newPartners.length > 0"> |
|
||||
<div class="d-flex flex-wrap inner py-10"> |
|
||||
<div |
|
||||
:class="(index+1)%3===0? 'enterprise-box1' : ''" |
|
||||
:key="index" |
|
||||
@click="openProfile(item.name,item.description)" |
|
||||
class="enterprise-box d-flex flex-column align-center justify-center white mb-8" |
|
||||
v-for="(item,index) in newPartners" |
|
||||
> |
|
||||
<img :src="item.logoUrl" class="enterprise-pic my-2" v-if="list.logoUrl" /> |
|
||||
<div class="font-bold-24 title-color my-2">{{ item.name }}</div> |
|
||||
<div |
|
||||
class="font-16 textColor d-flex flex-wrap align-start fill-width enterprise-txt" |
|
||||
>{{ item.description }}</div> |
|
||||
<div class="d-flex flex-nowrap fill-width py-5 enterprise-more"> |
|
||||
<div class="flex-1"></div> |
|
||||
<span class="font-16 baseColor"> |
|
||||
了解更多 |
|
||||
<a-icon type="arrow-right" /> |
|
||||
</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
<company-profile :show-profile="showProfile" @closeProfile="closeProfile" v-if="showProfile" /> |
|
||||
</div> |
|
||||
<div class="inner d-flex flex-row-reverse pb-10 enterprise-page"> |
|
||||
<a-pagination |
|
||||
:default-page-size="6" |
|
||||
:total="newPartners.length" |
|
||||
@change="onChange" |
|
||||
show-less-items |
|
||||
v-model="current" |
|
||||
v-show="newPartners.length > 6" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations, mapActions } from 'vuex'; |
|
||||
import CompanyProfile from './CompanyProfile.vue'; |
|
||||
export default { |
|
||||
name: 'DeriveEnterprise', |
|
||||
components: { CompanyProfile }, |
|
||||
props: { |
|
||||
title: { |
|
||||
type: String, |
|
||||
default: '', |
|
||||
}, |
|
||||
typeOfPlatform: { |
|
||||
type: String, |
|
||||
default: '', |
|
||||
}, |
|
||||
}, |
|
||||
|
|
||||
data() { |
|
||||
return { |
|
||||
current: 1, |
|
||||
showProfile: false, // 显示公司介绍 |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
computed: { |
|
||||
...mapState('home', ['partners', 'profile']), |
|
||||
|
|
||||
newPartners() { |
|
||||
let { partners } = this; |
|
||||
let arr = []; |
|
||||
if (partners && partners.length > 0) { |
|
||||
for (let i = 0; i < partners.length; i++) { |
|
||||
const element = partners[i]; |
|
||||
for (let j = 0; j < element.backendSearchList.length; j++) { |
|
||||
const item = element.backendSearchList[j]; |
|
||||
arr.push(item); |
|
||||
} |
|
||||
} |
|
||||
return arr; |
|
||||
} |
|
||||
return arr; |
|
||||
}, |
|
||||
}, |
|
||||
|
|
||||
async created() { |
|
||||
this.setPartners([]); |
|
||||
const { title, typeOfPlatform } = this; |
|
||||
const params = { |
|
||||
param: { |
|
||||
pageNum: this.current, |
|
||||
pageSize: 6, |
|
||||
type: title === '合作伙伴' ? 1 : 2, |
|
||||
typeOfPlatform: typeOfPlatform === '关于我们' ? 2 : 1, |
|
||||
}, |
|
||||
}; |
|
||||
await this.getFrontSearchCompany(params); |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
...mapMutations('home', ['setPartners', 'setProfile']), |
|
||||
...mapActions('home', ['getFrontSearchCompany']), |
|
||||
|
|
||||
// 切换页数 |
|
||||
onChange(current) { |
|
||||
this.current = current; |
|
||||
}, |
|
||||
|
|
||||
// 介绍 |
|
||||
openProfile(title, description) { |
|
||||
this.setProfile(null); |
|
||||
const profile = { |
|
||||
title, |
|
||||
description, |
|
||||
}; |
|
||||
this.setProfile(profile); |
|
||||
this.showProfile = true; |
|
||||
}, |
|
||||
|
|
||||
closeProfile() { |
|
||||
this.showProfile = false; |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
@import './PartnerShip.styl'; |
|
||||
</style> |
|
@ -1,308 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<a-button @click="showModal">{{ typeData.type === 1 ? '意向填报' : '直接购买' }}</a-button> |
|
||||
<a-modal |
|
||||
:confirm-loading="confirmLoading" |
|
||||
:title="typeData.type === 1 ? '意向填报' : '产品购买'" |
|
||||
:visible="visible" |
|
||||
@cancel="handleCancel" |
|
||||
@ok="handleOk" |
|
||||
width="50%" |
|
||||
> |
|
||||
<a-form :form="form"> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="公司名称" |
|
||||
> |
|
||||
<a-input placeholder="请输入公司名称..." v-model.trim="platform.companyName" /> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="联系人" |
|
||||
required |
|
||||
> |
|
||||
<a-input placeholder="请输入联系人..." v-model.trim="platform.manName" /> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="联系电话" |
|
||||
required |
|
||||
> |
|
||||
<a-input |
|
||||
@change="changePhone" |
|
||||
placeholder="请输入联系电话.." |
|
||||
type="tel" |
|
||||
v-decorator="['tel', { rules: phoneRules }]" |
|
||||
/> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="图片验证码" |
|
||||
required |
|
||||
> |
|
||||
<div class="d-flex flex-nowrap"> |
|
||||
<a-input placeholder="图片验证码" type="number" v-model="codeNum" /> |
|
||||
<img |
|
||||
:src="picCode.imageBase64" |
|
||||
@click="changePicCode" |
|
||||
class="code_img ml-2" |
|
||||
v-if="picCode && picCode.imageBase64" |
|
||||
/> |
|
||||
<a-button @click="changePicCode" class="code_img ml-2" size="small" v-else>获取验证码</a-button> |
|
||||
<!-- <a-input v-decorator="['account', { rules: rules.account }]" /> --> |
|
||||
</div> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="短信验证码" |
|
||||
required |
|
||||
> |
|
||||
<div class="d-flex flex-nowrap"> |
|
||||
<a-input placeholder="请输入验证码" type="number" v-model="platform.code" /> |
|
||||
<a-button |
|
||||
class="code_img ml-2" |
|
||||
disabled |
|
||||
type="primary" |
|
||||
v-if="showInterval" |
|
||||
>重新发送 {{ interval }}</a-button> |
|
||||
<a-button |
|
||||
:disabled="platform.isTel === false" |
|
||||
@click="getCode" |
|
||||
class="code_img ml-2" |
|
||||
type="primary" |
|
||||
v-else |
|
||||
>获取验证码</a-button> |
|
||||
</div> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="项目信息简述" |
|
||||
required |
|
||||
> |
|
||||
<a-textarea |
|
||||
placeholder="请输入项目信息简述..." |
|
||||
style="height: 120px" |
|
||||
v-model.trim="platform.describe" |
|
||||
/> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="上传附件" |
|
||||
v-show="typeData.type === 0" |
|
||||
> |
|
||||
<a-upload |
|
||||
:action="action" |
|
||||
:default-file-list="fileList" |
|
||||
@change="fileChange" |
|
||||
list-type="picture" |
|
||||
name="files" |
|
||||
> |
|
||||
<a-button> |
|
||||
<a-icon type="upload" />点击上传附件 |
|
||||
</a-button> |
|
||||
</a-upload> |
|
||||
</a-form-item> |
|
||||
</a-form> |
|
||||
</a-modal> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapActions } from 'vuex'; |
|
||||
import { serviceApply, upload } from 'config/api'; |
|
||||
const formItemLayout = { |
|
||||
labelCol: { span: 5 }, |
|
||||
wrapperCol: { span: 18 }, |
|
||||
}; |
|
||||
const formTailLayout = { |
|
||||
labelCol: { span: 6 }, |
|
||||
wrapperCol: { span: 18, offset: 6 }, |
|
||||
}; |
|
||||
export default { |
|
||||
name: 'NewModel', |
|
||||
props: { |
|
||||
typeData: { |
|
||||
type: Object, |
|
||||
default: null, |
|
||||
}, |
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
form: this.$form.createForm(this, { name: 'submit' }), |
|
||||
action: upload, |
|
||||
fileList: [], |
|
||||
visible: false, |
|
||||
formItemLayout, |
|
||||
formTailLayout, |
|
||||
confirmLoading: false, |
|
||||
platform: { |
|
||||
companyName: '', // 公司名称 |
|
||||
manName: '', // 联系人 |
|
||||
tel: '', // 联系电话 |
|
||||
describe: '', // 项目描述 |
|
||||
code: '', // 验证码 |
|
||||
files: [], // 附件Id |
|
||||
isTel: false, |
|
||||
}, |
|
||||
codeRules: [ |
|
||||
{ required: true, message: '请输入验证码' }, |
|
||||
{ min: 4, max: 4, message: '请输入4位短信验证码' }, |
|
||||
], |
|
||||
codeNum: '', |
|
||||
showInterval: false, |
|
||||
codeTimer: null, |
|
||||
interval: 120, // 验证码有效时间倒计时 |
|
||||
phoneRules: [ |
|
||||
{ required: true, pattern: new RegExp(/^[1][3,4,5,6,7,8,9][0-9]{9}$/), whitespace: true, message: '请输入正确的手机号' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('user', ['picCode']), |
|
||||
async created() { |
|
||||
this.sendPicCode(); |
|
||||
await this.getUserSer(); |
|
||||
if (this.userSer) { |
|
||||
if (this.userSer.name) { |
|
||||
this.platform.manName = this.userSer.name; |
|
||||
} |
|
||||
if (this.userSer.phone) { |
|
||||
this.platform.tel = this.userSer.phone; |
|
||||
} |
|
||||
if (this.userSer.companyName) { |
|
||||
this.platform.companyName = this.userSer.companyName; |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapActions('user', ['sendCode', 'sendPicCode']), |
|
||||
...mapActions('home', ['getUserSer']), |
|
||||
// 显示表单输入框 |
|
||||
showModal() { |
|
||||
this.visible = true; |
|
||||
}, |
|
||||
// 取消显示 |
|
||||
handleCancel(e) { |
|
||||
this.visible = false; |
|
||||
}, |
|
||||
// 验证电话 |
|
||||
changePhone(e) { |
|
||||
this.platform.tel = e.target.value; |
|
||||
this.platform.isTel = /^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(this.platform.tel); |
|
||||
}, |
|
||||
// 点击确定 |
|
||||
handleOk() { |
|
||||
if (!this.platform.manName) { |
|
||||
this.$message.error('请输入联系人'); |
|
||||
} else if (!this.platform.tel) { |
|
||||
this.$message.error('请输入联系电话'); |
|
||||
} else if (!this.platform.code) { |
|
||||
this.$message.error('请输入验证码'); |
|
||||
} else if (!this.platform.describe) { |
|
||||
this.$message.error('请输入项目信息简述'); |
|
||||
} else { |
|
||||
if (this.platform.isTel) { |
|
||||
for (var i = 0; i < this.fileList.length; i++) { |
|
||||
this.platform.files = this.platform.files.concat(this.fileList[i].response.data[0].id); |
|
||||
} |
|
||||
this.subMitAdd(); |
|
||||
// console.log(this.platform.files); |
|
||||
} else { |
|
||||
this.$message.error('请输入正确的联系电话'); |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
// 加入接口 |
|
||||
async subMitAdd() { |
|
||||
this.confirmLoading = true; |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
code: this.platform.code, |
|
||||
companyName: this.platform.companyName, |
|
||||
contactName: this.platform.manName, |
|
||||
contactPhone: this.platform.tel, |
|
||||
description: this.platform.describe, |
|
||||
filesId: this.platform.files, |
|
||||
serviceId: this.typeData.Id, |
|
||||
type: this.typeData.type, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await serviceApply(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.$message.success('申请成功'); |
|
||||
this.visible = false; |
|
||||
this.confirmLoading = false; |
|
||||
for (let key in this.platform) { |
|
||||
this.platform[key] = ''; |
|
||||
} |
|
||||
this.platform.isTel = false; |
|
||||
} else { |
|
||||
throw msg; |
|
||||
this.confirmLoading = false; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
this.$message.error(error); |
|
||||
this.confirmLoading = false; |
|
||||
} |
|
||||
}, |
|
||||
// 获取验证码 |
|
||||
async getCode() { |
|
||||
console.log(111); |
|
||||
try { |
|
||||
const params = { |
|
||||
phone: this.platform.tel, |
|
||||
verificationCodeId: this.picCode.verificationCodeId, |
|
||||
verificationCodeValue: this.codeNum, |
|
||||
}; |
|
||||
await this.sendCode(params); |
|
||||
this.getCodeInterval(); |
|
||||
} catch (error) { |
|
||||
// throw new Error(`SignIn.vue method getCode: ${error}`); |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
// 验证码倒计时 |
|
||||
getCodeInterval() { |
|
||||
this.showInterval = true; |
|
||||
this.codeTimer = setInterval(() => { |
|
||||
if (this.interval === 0) { |
|
||||
clearInterval(this.codeTimer); |
|
||||
this.codeTimer = null; |
|
||||
this.showInterval = false; |
|
||||
this.interval = 120; |
|
||||
return; |
|
||||
} |
|
||||
this.interval = this.interval - 1; |
|
||||
}, 1000); |
|
||||
}, |
|
||||
|
|
||||
// 刷新验证码 |
|
||||
changePicCode() { |
|
||||
this.sendPicCode(); |
|
||||
}, |
|
||||
fileChange(info) { |
|
||||
this.fileList = info.fileList; |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.must-color { |
|
||||
color: red; |
|
||||
} |
|
||||
|
|
||||
.code_img { |
|
||||
height: 32px; |
|
||||
width: 120px; |
|
||||
} |
|
||||
</style> |
|
@ -1,81 +0,0 @@ |
|||||
// 合作伙伴 |
|
||||
.logo-box{ |
|
||||
width: 22%; |
|
||||
margin-right: 4%; |
|
||||
border-radius: 4px; |
|
||||
margin-bottom: 50px; |
|
||||
|
|
||||
.logo-pic-box{ |
|
||||
height: 90px; |
|
||||
width: 90px; |
|
||||
border-radius: 50%; |
|
||||
background: #fff; |
|
||||
line-height: 90px; |
|
||||
text-align: center; |
|
||||
box-shadow: 6px 6px 6px #eee; |
|
||||
|
|
||||
.logo-pic{ |
|
||||
height: 70px |
|
||||
} |
|
||||
|
|
||||
.logo-text{ |
|
||||
height: 100%; |
|
||||
font-size: 12px; |
|
||||
line-height: 20px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
.logo-box1{ |
|
||||
margin-right: 0!important; |
|
||||
} |
|
||||
|
|
||||
// 衍生企业 |
|
||||
.enterprise-bg{ |
|
||||
width: 100%; |
|
||||
background: url('../../assets/enterprise-banner.png') right no-repeat; |
|
||||
background-size: 100% 100%; |
|
||||
} |
|
||||
|
|
||||
.enterprise-box{ |
|
||||
width: 26%; |
|
||||
height: 382px; |
|
||||
margin-right: 11%; |
|
||||
position: relative; |
|
||||
padding: 0 16px; |
|
||||
|
|
||||
.enterprise-pic{ |
|
||||
height: 166px |
|
||||
} |
|
||||
|
|
||||
.enterprise-txt{ |
|
||||
display: -webkit-box; |
|
||||
overflow: hidden; |
|
||||
white-space: normal !important; |
|
||||
text-overflow: ellipsis; |
|
||||
word-wrap: break-word; |
|
||||
-webkit-line-clamp: 3; |
|
||||
-webkit-box-orient: vertical; |
|
||||
text-align: justify; |
|
||||
line-height: 28px; |
|
||||
} |
|
||||
|
|
||||
.enterprise-more{ |
|
||||
position: absolute; |
|
||||
bottom: 0; |
|
||||
right: 12px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.enterprise-box1{ |
|
||||
margin-right: 0!important; |
|
||||
} |
|
||||
|
|
||||
.enterprise-page >>> .ant-pagination-item-active{ |
|
||||
background: #13ACC4; |
|
||||
} |
|
||||
|
|
||||
.enterprise-page >>> .ant-pagination-item-active a{ |
|
||||
color: #fff; |
|
||||
} |
|
@ -1,97 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: song |
|
||||
email: 15235360226@163.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<div v-if="partners && partners.length > 0"> |
|
||||
<div :key="index" class="mb-4" v-for="(item,index) in partners"> |
|
||||
<p |
|
||||
class="font-bold-24 title-color" |
|
||||
>{{ item.typeOfTech===0 ? '高校' : item.typeOfTech===1 ? '院所' : '企业' }}</p> |
|
||||
<div |
|
||||
class="d-flex flex-wrap pointer" |
|
||||
v-if="item.backendSearchList && item.backendSearchList.length > 0" |
|
||||
> |
|
||||
<div |
|
||||
:class="(i+1)%4===0? 'logo-box1' : ''" |
|
||||
:key="i" |
|
||||
@click="openProfile(list.name,list.description)" |
|
||||
class="logo-box d-flex flex-column align-center justify-center" |
|
||||
v-for="(list,i) in item.backendSearchList" |
|
||||
> |
|
||||
<div class="logo-pic-box"> |
|
||||
<img :src="list.logoUrl" class="logo-pic pa-2" v-if="list.logoUrl" /> |
|
||||
<div class="d-flex flex-column justify-center logo-text" v-else>{{ list.name }}</div> |
|
||||
</div> |
|
||||
<div class="font-16 title-color mt-3">{{ list.name }}</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<company-profile :show-profile="showProfile" @closeProfile="closeProfile" v-if="showProfile" /> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations, mapActions } from 'vuex'; |
|
||||
import CompanyProfile from './CompanyProfile.vue'; |
|
||||
export default { |
|
||||
name: 'PartnerShip', |
|
||||
components: { CompanyProfile }, |
|
||||
props: { |
|
||||
title: { |
|
||||
type: String, |
|
||||
default: '', |
|
||||
}, |
|
||||
typeOfPlatform: { |
|
||||
type: String, |
|
||||
default: '', |
|
||||
}, |
|
||||
}, |
|
||||
|
|
||||
data() { |
|
||||
return { showProfile: false }; |
|
||||
}, |
|
||||
|
|
||||
computed: mapState('home', ['partners', 'profile']), |
|
||||
|
|
||||
async created() { |
|
||||
this.setPartners([]); |
|
||||
const { title, typeOfPlatform } = this; |
|
||||
const params = { |
|
||||
param: { |
|
||||
pageNum: 1, |
|
||||
// pageSize: -1, |
|
||||
type: title === '合作伙伴' ? 1 : 2, |
|
||||
typeOfPlatform: typeOfPlatform === '关于我们' ? 2 : 1, |
|
||||
}, |
|
||||
}; |
|
||||
await this.getFrontSearchCompany(params); |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
...mapMutations('home', ['setPartners', 'setProfile']), |
|
||||
...mapActions('home', ['getFrontSearchCompany']), |
|
||||
|
|
||||
// 介绍 |
|
||||
openProfile(title, description) { |
|
||||
this.setProfile(null); |
|
||||
const profile = { |
|
||||
title, |
|
||||
description, |
|
||||
}; |
|
||||
this.setProfile(profile); |
|
||||
this.showProfile = true; |
|
||||
}, |
|
||||
|
|
||||
closeProfile() { |
|
||||
this.showProfile = false; |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
@import './PartnerShip.styl'; |
|
||||
</style> |
|
@ -1,132 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<div class="inner d-flex flex-wrap"> |
|
||||
<div :class="(index + 1) % 4 === 0 ? 'margin-0' : ''" :key="index" class="item-box" v-for="(item, index) in list"> |
|
||||
<p @click="detail(item.id)" class="font-24 my-3" style="cursor: pointer">{{ item.name }}</p> |
|
||||
<p @click="detail(item.id)" class="font-16" style="color: rgba(0, 0, 0, 0.45); cursor: pointer">编号:{{ item.identifier }}</p> |
|
||||
<p class="font-16 baseColor item-more"> |
|
||||
<!-- <a-button type="primary" style="cursor: pointer">转化意向填报</a-button> --> |
|
||||
<intention-model style="cursor: pointer" :type-data="getId(item.id)" /> |
|
||||
</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="inner"> |
|
||||
<a-pagination |
|
||||
:current="achCurrent" |
|
||||
:page-size="pageSize" |
|
||||
:total="total" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="total > 12" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapMutations, mapState } from 'vuex'; |
|
||||
import { selRes } from 'config/api'; |
|
||||
import IntentionModel from '../Introduce/IntentionModel.vue'; |
|
||||
export default { |
|
||||
name: 'PlatformList', |
|
||||
components: { IntentionModel }, |
|
||||
data() { |
|
||||
return { |
|
||||
list: [], |
|
||||
pageSize: 12, |
|
||||
total: 0, |
|
||||
typeData: { |
|
||||
type: 2, |
|
||||
Id: '', |
|
||||
}, |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('home', ['achList', 'achIpt', 'achCurrent']), |
|
||||
watch: { |
|
||||
achList(val) { |
|
||||
this.getData(); |
|
||||
}, |
|
||||
achIpt(val) { |
|
||||
if (val.isBtn === 1) { |
|
||||
this.getData(); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
created() { |
|
||||
this.getData(); |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapMutations('home', ['setAchCurrent', 'setAchId']), |
|
||||
// 改变单当前页数 |
|
||||
onShowSizeChange(current, size) { |
|
||||
this.setAchCurrent(current); |
|
||||
this.getData(); |
|
||||
}, |
|
||||
// 获取成果列表 |
|
||||
async getData() { |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
content: this.achIpt.content, |
|
||||
modelIds: this.achList, |
|
||||
pageNum: this.achCurrent, |
|
||||
pageSize: 12, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await selRes(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.list = data.list; |
|
||||
this.total = parseInt(data.total); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
// 点击查看详情 |
|
||||
detail(id) { |
|
||||
this.setAchId(id); |
|
||||
this.$router.push('/NewPlatform/AchDet'); |
|
||||
}, |
|
||||
getId(Id) { |
|
||||
return (this.typeData = { |
|
||||
type: 2, |
|
||||
Id, |
|
||||
}); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.pagination { |
|
||||
margin: 40px 0; |
|
||||
text-align: right; |
|
||||
} |
|
||||
|
|
||||
.item-box { |
|
||||
position: relative; |
|
||||
width: 20.5%; |
|
||||
background: #fff; |
|
||||
margin-right: 6%; |
|
||||
border-radius: 4px; |
|
||||
margin-bottom: 40px; |
|
||||
padding: 10px; |
|
||||
padding-bottom: 60px; |
|
||||
} |
|
||||
|
|
||||
.margin-0 { |
|
||||
margin-right: 0% !important; |
|
||||
} |
|
||||
|
|
||||
.item-more { |
|
||||
position: absolute; |
|
||||
bottom: 10px; |
|
||||
right: 10px; |
|
||||
text-align: right; |
|
||||
margin-bottom: 0 !important; |
|
||||
margin-top: 40px; |
|
||||
} |
|
||||
</style> |
|
@ -1,238 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<div class="inner d-flex flex-wrap"> |
|
||||
<div |
|
||||
:class="(index + 1) % 4 === 0 ? 'margin-0' : ''" |
|
||||
:key="index" |
|
||||
class="item-box mb-8" |
|
||||
v-for="(item, index) in list" |
|
||||
> |
|
||||
<img :src="item.picUrl" style="height: 220px; width: 100%" v-if="item.picUrl" /> |
|
||||
<img :src="item.visitLocation" style="height: 220px; width: 100%" v-else /> |
|
||||
<p class="font-24 my-4 title">{{ item.name }}</p> |
|
||||
<p |
|
||||
@click="jump(item.id)" |
|
||||
class="font-16 baseColor" |
|
||||
style="text-align: right; cursor: pointer" |
|
||||
>了解更多→</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="inner"> |
|
||||
<a-pagination |
|
||||
:current="current" |
|
||||
:page-size="pageSize" |
|
||||
:total="total" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="total > 8" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapMutations, mapState } from 'vuex'; |
|
||||
import { selInstrument, searchFront, selProduct } from 'config/api'; |
|
||||
export default { |
|
||||
name: 'PlatformList', |
|
||||
data() { |
|
||||
return { |
|
||||
list: [], |
|
||||
pageSize: 8, |
|
||||
total: 20, |
|
||||
current: 1, |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('home', ['listState', 'labList', 'LabIpt', 'insList', 'InsIpt', 'shareCurrent', 'productList', 'productIpt']), |
|
||||
watch: { |
|
||||
shareCurrent(val) { |
|
||||
console.log(val); |
|
||||
this.monitor(this.listState); |
|
||||
}, |
|
||||
labList(val) { |
|
||||
if (this.shareCurrent === 1) { |
|
||||
this.monitor(this.listState); |
|
||||
} |
|
||||
this.current = 1; |
|
||||
this.setShareCurrent(1); |
|
||||
}, |
|
||||
LabIpt(val) { |
|
||||
if (this.LabIpt.isBtn === 1) { |
|
||||
if (this.shareCurrent === 1) { |
|
||||
this.monitor(this.listState); |
|
||||
} |
|
||||
this.current = 1; |
|
||||
this.setShareCurrent(1); |
|
||||
} |
|
||||
}, |
|
||||
insList(val) { |
|
||||
if (this.shareCurrent === 1) { |
|
||||
this.monitor(this.listState); |
|
||||
} |
|
||||
this.current = 1; |
|
||||
this.setShareCurrent(1); |
|
||||
}, |
|
||||
InsIpt(val) { |
|
||||
if (this.InsIpt.isBtn === 1) { |
|
||||
if (this.shareCurrent === 1) { |
|
||||
this.monitor(this.listState); |
|
||||
} |
|
||||
this.current = 1; |
|
||||
this.setShareCurrent(1); |
|
||||
} |
|
||||
}, |
|
||||
productList(val) { |
|
||||
if (this.shareCurrent === 1) { |
|
||||
this.monitor(this.listState); |
|
||||
} |
|
||||
this.current = 1; |
|
||||
this.setShareCurrent(1); |
|
||||
}, |
|
||||
productIpt(val) { |
|
||||
if (this.productIpt.isBtn === 1) { |
|
||||
if (this.shareCurrent === 1) { |
|
||||
this.monitor(this.listState); |
|
||||
} |
|
||||
this.current = 1; |
|
||||
this.setShareCurrent(1); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
created() { |
|
||||
this.current = this.shareCurrent; |
|
||||
if (this.listState === 0) { |
|
||||
this.getSear(); |
|
||||
} else if (this.listState === 1) { |
|
||||
this.getSelI(); |
|
||||
} else { |
|
||||
this.getProductLists(); |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapMutations('home', ['setShareCurrent']), |
|
||||
// 查询仪器列表 |
|
||||
async getSelI() { |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
content: this.InsIpt.content, // 搜索框内容 |
|
||||
modelIds: this.insList, // 分类ID数组 |
|
||||
pageNum: this.shareCurrent, |
|
||||
pageSize: this.pageSize, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await selInstrument(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.list = data.list; |
|
||||
this.total = parseInt(data.total); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
// 查询实验室(研究院)列表 |
|
||||
async getSear() { |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
name: this.LabIpt.content, // 搜索框内容 |
|
||||
moldIds: this.labList, // 分类ID数组 |
|
||||
pageNum: this.shareCurrent, |
|
||||
pageSize: this.pageSize, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await searchFront(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.list = data.list; |
|
||||
this.total = parseInt(data.total); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
// 查询孵化平台产品列表 |
|
||||
async getProductLists() { |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
content: this.productIpt.content, // 搜索框内容 |
|
||||
modelIds: this.productList, // 分类ID数组 |
|
||||
pageNum: this.shareCurrent, |
|
||||
pageSize: this.pageSize, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await selProduct(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.list = data.list; |
|
||||
this.total = parseInt(data.total); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
// 改变单当前页数 |
|
||||
onShowSizeChange(current, size) { |
|
||||
this.current = current; |
|
||||
this.setShareCurrent(this.current); |
|
||||
}, |
|
||||
// 监听触发搜索事件 |
|
||||
monitor(val) { |
|
||||
if (val === 0) { |
|
||||
this.getSear(); |
|
||||
} else if (val === 1) { |
|
||||
this.getSelI(); |
|
||||
} else { |
|
||||
this.getProductLists(); |
|
||||
} |
|
||||
}, |
|
||||
// 查看 研究院/仪器 详情 |
|
||||
jump(id) { |
|
||||
if (this.listState === 0) { |
|
||||
this.$router.push({ |
|
||||
path: '/NewPlatform/Share/Institute', |
|
||||
name: 'Institute', |
|
||||
params: { id }, |
|
||||
}); |
|
||||
} else if (this.listState === 1) { |
|
||||
this.$router.push({ |
|
||||
path: '/NewPlatform/Share/InsDet', |
|
||||
name: 'InsDet', |
|
||||
params: { id }, |
|
||||
}); |
|
||||
} else if (this.listState === 3) { |
|
||||
this.$router.push({ |
|
||||
path: '/NewPlatform/Share/InsDet', |
|
||||
name: 'InsDet', |
|
||||
params: { id }, |
|
||||
}); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.pagination { |
|
||||
margin: 40px 0; |
|
||||
text-align: right; |
|
||||
} |
|
||||
|
|
||||
.item-box { |
|
||||
width: 20.5%; |
|
||||
margin-right: 6%; |
|
||||
border-radius: 4px; |
|
||||
|
|
||||
.title { |
|
||||
text-align: center; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.margin-0 { |
|
||||
margin-right: 0 !important; |
|
||||
} |
|
||||
</style> |
|
@ -1,16 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<router-view></router-view> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'About', |
|
||||
data() { |
|
||||
return {}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped></style> |
|
@ -1,53 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
<div class="white pa-5 my-5"> |
|
||||
<rich-text :title="title" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import RichText from 'components/Introduce/RichText.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Introduce', |
|
||||
components: { Banner, HNav, BreadCrumb, RichText }, |
|
||||
|
|
||||
// mounted() { |
|
||||
// window.addEventListener('scroll', this.handleScroll); |
|
||||
// setTimeout(() => { |
|
||||
// document.querySelector('#nav').scrollIntoView({ |
|
||||
// behavior: 'smooth', // 平滑过渡 |
|
||||
// block: 'start', // 上边框与视窗顶部平齐 |
|
||||
// }); |
|
||||
// }, 2000); |
|
||||
// }, |
|
||||
|
|
||||
data() { |
|
||||
return { |
|
||||
title: '关于我们-公司介绍', |
|
||||
showPage: 11, |
|
||||
arr: [ |
|
||||
{ name: '关于我们', url: '/About/Introduce' }, |
|
||||
{ name: '公司介绍', url: '' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
methods: {}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
</style> |
|
@ -1,42 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
<div class="white pa-5 my-5"> |
|
||||
<rich-text :title="title" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import RichText from 'components/Introduce/RichText.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Introduce', |
|
||||
components: { Banner, HNav, BreadCrumb, RichText }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '关于我们-组织机构', |
|
||||
showPage: 12, |
|
||||
arr: [ |
|
||||
{ name: '关于我们', url: '/About/Introduce' }, |
|
||||
{ name: '组织机构', url: '' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
methods: {}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
</style> |
|
@ -1,39 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
<div class="py-5 my-5"> |
|
||||
<partner-ship :title="title" :type-of-platform="typeOfPlatform" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations, mapActions } from 'vuex'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import PartnerShip from 'components/Introduce/PartnerShip.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Partner', |
|
||||
components: { HNav, BreadCrumb, PartnerShip }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '合作伙伴', |
|
||||
typeOfPlatform: '关于我们', |
|
||||
arr: [ |
|
||||
{ name: '关于我们', url: '/About/Introduce' }, |
|
||||
{ name: '合作伙伴', url: '' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
</style> |
|
@ -1,39 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div> |
|
||||
<derive-enterprise :title="title" :type-of-platform="typeOfPlatform" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations, mapActions } from 'vuex'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import DeriveEnterprise from 'components/Introduce/DeriveEnterprise.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Partner', |
|
||||
components: { HNav, BreadCrumb, DeriveEnterprise }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '衍生企业', |
|
||||
typeOfPlatform: '关于我们', |
|
||||
arr: [ |
|
||||
{ name: '关于我们', url: '/About/Introduce' }, |
|
||||
{ name: '衍生企业', url: '' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
</style> |
|
@ -1,62 +0,0 @@ |
|||||
<template> |
|
||||
<div class="nav-box d-flex"> |
|
||||
<div |
|
||||
:class="activeNum === index ? 'nav-box-active' : ''" |
|
||||
:key="index" |
|
||||
@click="jump(item.url)" |
|
||||
v-for="(item, index) in list" |
|
||||
>{{ item.title }}</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'HNav', |
|
||||
data() { |
|
||||
return { |
|
||||
str: '导航条', |
|
||||
activeNum: 0, |
|
||||
list: [ |
|
||||
{ |
|
||||
title: '公司介绍', |
|
||||
url: '/About/Introduce', |
|
||||
}, |
|
||||
{ |
|
||||
title: '组织机构', |
|
||||
url: '/About/Organ', |
|
||||
}, |
|
||||
{ |
|
||||
title: '合作伙伴', |
|
||||
url: '/About/Partner', |
|
||||
}, |
|
||||
{ |
|
||||
title: '衍生企业', |
|
||||
url: '/About/SpinOffs', |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
if (this.$route.fullPath === '/About/Organ') { |
|
||||
this.activeNum = 1; |
|
||||
} else if (this.$route.fullPath === '/About/Partner') { |
|
||||
this.activeNum = 2; |
|
||||
} else if (this.$route.fullPath === '/About/SpinOffs') { |
|
||||
this.activeNum = 3; |
|
||||
} else { |
|
||||
this.activeNum = 0; |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
jump(url) { |
|
||||
if (this.$route.fullPath === url) { |
|
||||
this.$message.success('已在当前界面'); |
|
||||
} else { |
|
||||
this.$router.push(url); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped></style> |
|
@ -1,123 +0,0 @@ |
|||||
<template> |
|
||||
<div class="box"> |
|
||||
<div> |
|
||||
<div class="policy-title"> |
|
||||
<span>{{ actDetail.title }}</span> |
|
||||
</div> |
|
||||
<div class="policy-info"> |
|
||||
<span> |
|
||||
<a-icon |
|
||||
class="baseColor" |
|
||||
style="font-size: 14px; margin-right: 10px" |
|
||||
type="clock-circle" |
|
||||
/> |
|
||||
<span>{{ actDetail.releaseTime }}-{{ actDetail.closeTime }}</span> |
|
||||
</span> |
|
||||
<span style="margin-left: 60px"> |
|
||||
<a-icon class="baseColor" style="margin-right: 10px" type="environment" /> |
|
||||
<span>{{ actDetail.address }}</span> |
|
||||
</span> |
|
||||
</div> |
|
||||
<div class="policy-content" v-dompurify-html="actDetail.content"></div> |
|
||||
<enroll |
|
||||
:activityId="actDetail.activityId" |
|
||||
:actName="actDetail.title" |
|
||||
style="margin: 50px 25px" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState } from 'vuex'; |
|
||||
import Enroll from './components/Enroll.vue'; |
|
||||
export default { |
|
||||
name: 'ActDetails', |
|
||||
components: { Enroll }, |
|
||||
data() { |
|
||||
return {}; |
|
||||
}, |
|
||||
computed: mapState('home', ['actDetail']), |
|
||||
created() {}, |
|
||||
methods: {}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.box { |
|
||||
width: 1260px; |
|
||||
position: relative; |
|
||||
margin: 80px auto; |
|
||||
background: #fff; |
|
||||
min-height: 1037px; |
|
||||
overflow: hidden; |
|
||||
opacity: 1; |
|
||||
padding-bottom: 480px; |
|
||||
} |
|
||||
|
|
||||
.back-btn { |
|
||||
width: 80px; |
|
||||
position: absolute; |
|
||||
right: 0; |
|
||||
} |
|
||||
|
|
||||
.policy-title { |
|
||||
height: 120px; |
|
||||
font-size: 24px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
color: rgba(0, 0, 0, 0.85); |
|
||||
opacity: 1; |
|
||||
text-align: center; |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
justify-content: center; |
|
||||
padding: 0 150px; |
|
||||
border-bottom: 1px solid #707070; |
|
||||
} |
|
||||
|
|
||||
.policy-info { |
|
||||
height: 76px; |
|
||||
line-height: 76px; |
|
||||
text-align: center; |
|
||||
} |
|
||||
|
|
||||
.policy-content { |
|
||||
padding: 0 25px; |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
font-weight: 400; |
|
||||
font-family: Microsoft YaHei; |
|
||||
} |
|
||||
|
|
||||
.coms-style { |
|
||||
height: 480px; |
|
||||
padding: 25px 0; |
|
||||
border-top: 2px solid #ccc; |
|
||||
position: absolute; |
|
||||
bottom: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
|
|
||||
.coms-top { |
|
||||
height: 280px; |
|
||||
padding: 0 25px; |
|
||||
overflow: auto; |
|
||||
box-shadow: 0 0 5px #ccc; |
|
||||
} |
|
||||
|
|
||||
.coms-btm { |
|
||||
margin-top: 20px; |
|
||||
padding: 0 10px; |
|
||||
} |
|
||||
|
|
||||
.coms-content { |
|
||||
background: rgba(19, 172, 196, 0.1); |
|
||||
} |
|
||||
|
|
||||
.sub { |
|
||||
position: absolute; |
|
||||
right: 20px; |
|
||||
bottom: 20px; |
|
||||
} |
|
||||
</style> |
|
@ -1,326 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: song |
|
||||
email: 15235360226@163.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<div class="inner"> |
|
||||
<div class="search-list"> |
|
||||
<span> |
|
||||
<a-checkbox :checked="sta.ly === 1" @click="cSta('ly')">路演</a-checkbox> |
|
||||
<a-checkbox :checked="sta.jz === 1" @click="cSta('jz')">讲座</a-checkbox> |
|
||||
<a-checkbox :checked="sta.sl === 1" @click="cSta('sl')">沙龙</a-checkbox> |
|
||||
</span> |
|
||||
<a-input-search |
|
||||
@search="getData" |
|
||||
class="search" |
|
||||
enter-button="搜索" |
|
||||
placeholder="请输入..." |
|
||||
style="width: 381px" |
|
||||
v-model="iptCon" |
|
||||
/> |
|
||||
</div> |
|
||||
<div class="policy-box"> |
|
||||
<div :key="index" class="policy-list" v-for="(item, index) in lists"> |
|
||||
<div @click="jumpDetails(item)" class="date-box pointer" v-if="item.releaseTime"> |
|
||||
<p class="date-mon">{{ monthEnglish[item.releaseTime.split('-')[1] - 1] }}.</p> |
|
||||
<p class="date-day">{{ item.releaseTime.split(' ')[0].split('-')[2] }}</p> |
|
||||
</div> |
|
||||
<p @click="jumpDetails(item)" class="item-title pointer">{{ item.title }}</p> |
|
||||
<p @click="jumpDetails(item)" class="item-content pointer">{{ item.content }}</p> |
|
||||
<p class="source-time"> |
|
||||
<span class="source"> |
|
||||
时间:{{ item.releaseTime }} |
|
||||
<span v-if="item.closeTime">-{{ item.closeTime }}</span> |
|
||||
</span> |
|
||||
<span class="source">地点:{{ item.address }}</span> |
|
||||
</p> |
|
||||
<p class="original"> |
|
||||
<a-button |
|
||||
disabled |
|
||||
v-if="item.releaseTime && Date.parse(item.releaseTime) < Date.parse(nowData)" |
|
||||
>报名已结束</a-button> |
|
||||
<enroll :activityId="item.activityId" :actName="item.title" v-else /> |
|
||||
</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<a-pagination |
|
||||
:current="actCurrent" |
|
||||
:page-size="pageSize" |
|
||||
:total="total" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="total > 5" |
|
||||
/> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations } from 'vuex'; |
|
||||
import { front } from 'config/api'; |
|
||||
import Enroll from './components/Enroll.vue'; |
|
||||
export default { |
|
||||
name: 'Activity', |
|
||||
components: { Enroll }, |
|
||||
data() { |
|
||||
return { |
|
||||
str: '这是活动公告界面', |
|
||||
total: 0, |
|
||||
pageSize: 5, |
|
||||
iptCon: '', |
|
||||
sta: { |
|
||||
ly: 0, |
|
||||
jz: 0, |
|
||||
sl: 0, |
|
||||
}, |
|
||||
aList: [], |
|
||||
lists: [], |
|
||||
monthEnglish: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Spt', 'Oct', 'Nov', 'Dec'], |
|
||||
nowData: '', |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('home', ['actList', 'actIpCon', 'actCurrent']), |
|
||||
|
|
||||
created() { |
|
||||
this.iptCon = this.actIpCon; |
|
||||
this.aList = this.actList; |
|
||||
for (var i = 0; i < this.aList.length; i++) { |
|
||||
if (this.aList[i] === 0) { |
|
||||
this.sta.ly = 1; |
|
||||
} |
|
||||
if (this.aList[i] === 1) { |
|
||||
this.sta.jz = 1; |
|
||||
} |
|
||||
if (this.aList[i] === 2) { |
|
||||
this.sta.sl = 1; |
|
||||
} |
|
||||
} |
|
||||
this.getData(); |
|
||||
|
|
||||
// 获取当前时间 |
|
||||
var aData = new Date(); |
|
||||
console.log(aData); //Wed Aug 21 2019 10:00:58 GMT+0800 (中国标准时间) |
|
||||
this.nowData = |
|
||||
aData.getFullYear() + |
|
||||
'-' + |
|
||||
(aData.getMonth() + 1) + |
|
||||
'-' + |
|
||||
aData.getDate() + |
|
||||
' ' + |
|
||||
aData.getHours() + |
|
||||
':' + |
|
||||
aData.getMinutes() + |
|
||||
':' + |
|
||||
aData.getSeconds(); |
|
||||
console.log(this.nowData); //2019-8-20 |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapMutations('home', ['setActList', 'setActIpCon', 'setActCurrent', 'setActDetail']), |
|
||||
// 获取活动公告列表 |
|
||||
async getData() { |
|
||||
try { |
|
||||
this.setActIpCon(this.iptCon); |
|
||||
const params = { |
|
||||
param: { |
|
||||
activityType: this.actList, |
|
||||
pageNum: this.actCurrent, |
|
||||
pageSize: 5, |
|
||||
titleKey: this.iptCon, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await front(params); |
|
||||
const { data, msg, code } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.lists = data.list; |
|
||||
this.total = parseInt(data.total); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
// 改变当前所选类型 |
|
||||
cSta(index) { |
|
||||
this.aList = []; |
|
||||
if (this.sta[index] === 0) { |
|
||||
this.sta[index] = 1; |
|
||||
console.log(this.sta); |
|
||||
} else { |
|
||||
this.sta[index] = 0; |
|
||||
console.log(this.sta); |
|
||||
} |
|
||||
if (this.sta.ly === 1) { |
|
||||
this.aList = this.aList.concat(0); |
|
||||
} |
|
||||
if (this.sta.jz === 1) { |
|
||||
this.aList = this.aList.concat(1); |
|
||||
} |
|
||||
if (this.sta.sl === 1) { |
|
||||
this.aList = this.aList.concat(2); |
|
||||
} |
|
||||
this.setActList(this.aList); |
|
||||
this.getData(); |
|
||||
}, |
|
||||
|
|
||||
// 改变当前显示页数 |
|
||||
onShowSizeChange(current, size) { |
|
||||
this.setActCurrent(current); |
|
||||
this.getData(); |
|
||||
}, |
|
||||
|
|
||||
// 跳转到详情界面 |
|
||||
jumpDetails(item) { |
|
||||
this.setActDetail(item); |
|
||||
this.$router.push('/ActDetails'); |
|
||||
}, |
|
||||
|
|
||||
// 转换时间戳 |
|
||||
formatDate() { |
|
||||
var date = new Date('2020-04-07 18:08:58'); |
|
||||
// 有三种方式获取 |
|
||||
var time1 = date.getTime(); |
|
||||
var time2 = date.valueOf(); |
|
||||
var time3 = Date.parse(date); |
|
||||
console.log(time1); //1586254138000 |
|
||||
console.log(time2); //1586254138000 |
|
||||
console.log(time3); //1586254138000 |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style scoped lang="stylus"> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
|
|
||||
.search-list { |
|
||||
height: 72px; |
|
||||
line-height: 72px; |
|
||||
position: relative; |
|
||||
padding-left: 24px; |
|
||||
background: #fff; |
|
||||
} |
|
||||
|
|
||||
.search { |
|
||||
position: absolute; |
|
||||
right: 24px; |
|
||||
top: 20px; |
|
||||
} |
|
||||
|
|
||||
.policy-box { |
|
||||
.policy-list { |
|
||||
position: relative; |
|
||||
width: 100%; |
|
||||
height: 238px; |
|
||||
overflow: hidden; |
|
||||
background: #fff; |
|
||||
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
margin-top: 24px; |
|
||||
padding: 25px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.item-title { |
|
||||
margin-left: 200px; |
|
||||
overflow: hidden; |
|
||||
display: -webkit-box; |
|
||||
font-size: 24px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
-webkit-line-clamp: 1; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
|
|
||||
.item-content { |
|
||||
margin-left: 200px; |
|
||||
text-indent: 2em; |
|
||||
font-size: 16px; |
|
||||
line-height: 36px; |
|
||||
color: rgba(0, 0, 0, 0.35); |
|
||||
font-family: Microsoft YaHei; |
|
||||
overflow: hidden; |
|
||||
display: -webkit-box; |
|
||||
-webkit-line-clamp: 2; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
|
|
||||
.source { |
|
||||
cursor: pointer; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
opacity: 1; |
|
||||
margin-right: 24px; |
|
||||
} |
|
||||
|
|
||||
.time { |
|
||||
font-size: 14px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
color: rgba(0, 0, 0, 0.25); |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.original { |
|
||||
position: absolute; |
|
||||
right: 25px; |
|
||||
bottom: 25px; |
|
||||
font-size: 14px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
line-height: 22px; |
|
||||
opacity: 1; |
|
||||
margin-bottom: 0; |
|
||||
|
|
||||
span { |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.date-box { |
|
||||
height: 188px !important; |
|
||||
width: 188px !important; |
|
||||
position: absolute !important; |
|
||||
top: 0 !important; |
|
||||
// box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
text-align: center; |
|
||||
box-shadow: none !important; |
|
||||
padding: 25px; |
|
||||
margin-top: 24px; |
|
||||
|
|
||||
p { |
|
||||
margin-bottom: 0 !important; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.date-mon { |
|
||||
font-size: 40px; |
|
||||
height: 40px; |
|
||||
line-height: 40px; |
|
||||
font-weight: 500; |
|
||||
color: #13ACC4; |
|
||||
} |
|
||||
|
|
||||
.date-day { |
|
||||
font-size: 70px; |
|
||||
height: 80px; |
|
||||
line-height: 80px; |
|
||||
font-weight: bold; |
|
||||
color: #13ACC4; |
|
||||
} |
|
||||
|
|
||||
.source-time { |
|
||||
margin-left: 200px; |
|
||||
position: absolute; |
|
||||
bottom: 26px; |
|
||||
margin-bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
margin-top: 68px; |
|
||||
text-align: right; |
|
||||
} |
|
||||
</style> |
|
@ -1,323 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<a-button @click="showModal" type="primary">立即报名</a-button> |
|
||||
|
|
||||
<a-modal |
|
||||
:confirm-loading="confirmLoading" |
|
||||
:title="title" |
|
||||
:visible="visible" |
|
||||
@cancel="handleCancel" |
|
||||
@ok="handleOk" |
|
||||
width="50%" |
|
||||
> |
|
||||
<a-form :form="form"> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="活动名称" |
|
||||
> |
|
||||
<a-input :value="actName" disabled /> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="申请单位" |
|
||||
required |
|
||||
> |
|
||||
<a-input placeholder="请输入申请单位..." v-model.trim="platform.companyName" /> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
class="mb-3" |
|
||||
label="参加人员" |
|
||||
required |
|
||||
> |
|
||||
<div :key="index" class="d-flex flex-nowrap mb-3" v-for="(item,index) in people"> |
|
||||
<a-input class="flex-1 mr-3" placeholder="姓名" v-model.trim="item.name" /> |
|
||||
<a-input class="flex-1 mr-3" placeholder="职称" v-model.trim="item.duties" /> |
|
||||
<a-input class="flex-1 mr-3" placeholder="职务" v-model.trim="item.positional" /> |
|
||||
<a-button |
|
||||
@click="changePerson(index)" |
|
||||
icon="plus" |
|
||||
type="link" |
|
||||
v-if="index === people.length -1" |
|
||||
/> |
|
||||
</div> |
|
||||
</a-form-item> |
|
||||
|
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="联系人" |
|
||||
required |
|
||||
> |
|
||||
<a-input placeholder="请输入联系人..." v-model.trim="platform.manName" /> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="联系电话" |
|
||||
required |
|
||||
> |
|
||||
<a-input |
|
||||
@change="changePhone" |
|
||||
placeholder="请输入联系电话.." |
|
||||
type="tel" |
|
||||
v-decorator="['tel', { rules: phoneRules }]" |
|
||||
/> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="图片验证码" |
|
||||
required |
|
||||
> |
|
||||
<div class="d-flex flex-nowrap"> |
|
||||
<a-input placeholder="图片验证码" type="number" v-model="codeNum" /> |
|
||||
<img |
|
||||
:src="picCode.imageBase64" |
|
||||
@click="changePicCode" |
|
||||
class="code_img ml-2" |
|
||||
v-if="picCode && picCode.imageBase64" |
|
||||
/> |
|
||||
<a-button @click="changePicCode" class="code_img ml-2" size="small" v-else>获取验证码</a-button> |
|
||||
<!-- <a-input v-decorator="['account', { rules: rules.account }]" /> --> |
|
||||
</div> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="短信验证码" |
|
||||
required |
|
||||
> |
|
||||
<div class="d-flex flex-nowrap"> |
|
||||
<a-input placeholder="请输入验证码" type="number" v-model="platform.code" /> |
|
||||
<a-button |
|
||||
class="code_img ml-2" |
|
||||
disabled |
|
||||
type="primary" |
|
||||
v-if="showInterval" |
|
||||
>重新发送 {{ interval }}</a-button> |
|
||||
<a-button |
|
||||
:disabled="platform.isTel === false" |
|
||||
@click="getCode" |
|
||||
class="code_img ml-2" |
|
||||
type="primary" |
|
||||
v-else |
|
||||
>获取验证码</a-button> |
|
||||
</div> |
|
||||
</a-form-item> |
|
||||
</a-form> |
|
||||
</a-modal> |
|
||||
</div> |
|
||||
</template> |
|
||||
<script> |
|
||||
import { mapState, mapActions } from 'vuex'; |
|
||||
import { apply } from 'config/api'; |
|
||||
const formItemLayout = { |
|
||||
labelCol: { span: 5 }, |
|
||||
wrapperCol: { span: 18 }, |
|
||||
}; |
|
||||
const formTailLayout = { |
|
||||
labelCol: { span: 6 }, |
|
||||
wrapperCol: { span: 18, offset: 6 }, |
|
||||
}; |
|
||||
export default { |
|
||||
name: 'Enroll', |
|
||||
props: { |
|
||||
activityId: { |
|
||||
type: Number, |
|
||||
default: 0, |
|
||||
}, |
|
||||
actName: { |
|
||||
type: String, |
|
||||
default: '', |
|
||||
}, |
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
form: this.$form.createForm(this, { name: 'submit' }), |
|
||||
visible: false, |
|
||||
title: '活动报名', |
|
||||
formItemLayout, |
|
||||
formTailLayout, |
|
||||
confirmLoading: false, |
|
||||
// 参加人员 |
|
||||
people: [ |
|
||||
{ |
|
||||
name: '', |
|
||||
duties: '', |
|
||||
positional: '', |
|
||||
}, |
|
||||
], |
|
||||
platform: { |
|
||||
companyName: '', // 申请单位 |
|
||||
manName: '', // 联系人 |
|
||||
tel: '', // 联系电话 |
|
||||
code: '', // 验证码 |
|
||||
isTel: false, |
|
||||
}, |
|
||||
codeRules: [ |
|
||||
{ required: true, message: '请输入验证码' }, |
|
||||
{ min: 4, max: 4, message: '请输入4位短信验证码' }, |
|
||||
], |
|
||||
codeNum: '', |
|
||||
showInterval: false, |
|
||||
codeTimer: null, |
|
||||
interval: 120, // 验证码有效时间倒计时 |
|
||||
phoneRules: [ |
|
||||
{ required: true, pattern: new RegExp(/^[1][3,4,5,6,7,8,9][0-9]{9}$/), whitespace: true, message: '请输入正确的手机号' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
computed: { |
|
||||
...mapState('user', ['picCode']), |
|
||||
}, |
|
||||
|
|
||||
async created() { |
|
||||
this.sendPicCode(); |
|
||||
await this.getUserSer(); |
|
||||
if (this.userSer) { |
|
||||
if (this.userSer.name) { |
|
||||
this.platform.manName = this.userSer.name; |
|
||||
} |
|
||||
if (this.userSer.phone) { |
|
||||
this.platform.tel = this.userSer.phone; |
|
||||
} |
|
||||
if (this.userSer.companyName) { |
|
||||
this.platform.companyName = this.userSer.companyName; |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
...mapActions('user', ['sendCode', 'sendPicCode']), |
|
||||
...mapActions('home', ['getUserSer']), |
|
||||
|
|
||||
changePerson(index) { |
|
||||
// if (this.people[index].name && this.people[index].positional && this.people[index].duties) { |
|
||||
const a = { name: '', positional: '', duties: '' }; |
|
||||
this.people.push(a); |
|
||||
// } |
|
||||
}, |
|
||||
// 显示表单输入框 |
|
||||
showModal() { |
|
||||
this.visible = true; |
|
||||
}, |
|
||||
// 取消显示 |
|
||||
handleCancel(e) { |
|
||||
this.visible = false; |
|
||||
}, |
|
||||
// 验证电话 |
|
||||
changePhone(e) { |
|
||||
this.platform.tel = e.target.value; |
|
||||
this.platform.isTel = /^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(this.platform.tel); |
|
||||
}, |
|
||||
// 点击确定 |
|
||||
handleOk() { |
|
||||
if (!this.platform.companyName) { |
|
||||
this.$message.error('请输入申请单位'); |
|
||||
} else if (!this.people[0].name || !this.people[0].positional || !this.people[0].duties) { |
|
||||
this.$message.error('请至少输入一名参加人员'); |
|
||||
} else if (!this.platform.tel) { |
|
||||
this.$message.error('请输入联系电话'); |
|
||||
} else if (!this.platform.code) { |
|
||||
this.$message.error('请输入验证码'); |
|
||||
} else { |
|
||||
if (this.platform.isTel) { |
|
||||
this.subMitAdd(); |
|
||||
} else { |
|
||||
this.$message.error('请输入正确的联系电话'); |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
// 加入接口 |
|
||||
async subMitAdd() { |
|
||||
this.confirmLoading = true; |
|
||||
try { |
|
||||
const { activityId, platform, people } = this; |
|
||||
people.forEach(item => { |
|
||||
item.activityId = activityId; |
|
||||
}); |
|
||||
const params = { |
|
||||
param: { |
|
||||
activityId, |
|
||||
code: platform.code, |
|
||||
companyName: platform.companyName, |
|
||||
contactName: platform.manName, |
|
||||
contactPhone: platform.tel, |
|
||||
peoples: people, |
|
||||
}, |
|
||||
}; |
|
||||
console.log('params: ', params); |
|
||||
const res = await apply(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.$message.success('申请成功'); |
|
||||
this.visible = false; |
|
||||
this.confirmLoading = false; |
|
||||
for (let key in this.platform) { |
|
||||
this.platform[key] = ''; |
|
||||
} |
|
||||
this.platform.isTel = false; |
|
||||
} else { |
|
||||
throw msg; |
|
||||
this.confirmLoading = false; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
this.$message.error(error); |
|
||||
this.confirmLoading = false; |
|
||||
} |
|
||||
}, |
|
||||
// 获取验证码 |
|
||||
async getCode() { |
|
||||
console.log(111); |
|
||||
try { |
|
||||
const params = { |
|
||||
phone: this.platform.tel, |
|
||||
verificationCodeId: this.picCode.verificationCodeId, |
|
||||
verificationCodeValue: this.codeNum, |
|
||||
}; |
|
||||
await this.sendCode(params); |
|
||||
this.getCodeInterval(); |
|
||||
} catch (error) { |
|
||||
// throw new Error(`SignIn.vue method getCode: ${error}`); |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
// 验证码倒计时 |
|
||||
getCodeInterval() { |
|
||||
this.showInterval = true; |
|
||||
this.codeTimer = setInterval(() => { |
|
||||
if (this.interval === 0) { |
|
||||
clearInterval(this.codeTimer); |
|
||||
this.codeTimer = null; |
|
||||
this.showInterval = false; |
|
||||
this.interval = 120; |
|
||||
return; |
|
||||
} |
|
||||
this.interval = this.interval - 1; |
|
||||
}, 1000); |
|
||||
}, |
|
||||
|
|
||||
// 刷新验证码 |
|
||||
changePicCode() { |
|
||||
this.sendPicCode(); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.must-color { |
|
||||
color: red; |
|
||||
} |
|
||||
|
|
||||
.code_img { |
|
||||
height: 32px; |
|
||||
width: 120px; |
|
||||
} |
|
||||
</style> |
|
@ -1,13 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<router-view></router-view> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
data() { |
|
||||
return {}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
@ -1,240 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="search-background"> |
|
||||
<div class="d-flex"> |
|
||||
<div class="flex-3 flex-wrap"> |
|
||||
<span class="ins-title">技术领域:</span> |
|
||||
<span |
|
||||
:class="item.isActive ? 'act-color' : ''" |
|
||||
:key="index" |
|
||||
@click="choose(index)" |
|
||||
class="ins-name" |
|
||||
v-for="(item, index) in list" |
|
||||
>{{ item.name }}</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="inner d-flex flex-wrap"> |
|
||||
<div |
|
||||
:class="(index + 1) % 4 === 0 ? 'margin-0' : ''" |
|
||||
:key="index" |
|
||||
class="pro-box" |
|
||||
v-for="(item, index) in lists" |
|
||||
> |
|
||||
<p class="pro-title">{{ item.title }}</p> |
|
||||
<p class="pro-content">{{ item.content }}</p> |
|
||||
<p class="pro-time">时间:{{ item.time }}</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="inner"> |
|
||||
<a-pagination |
|
||||
:current="current" |
|
||||
:page-size="pageSize" |
|
||||
:total="total" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="total > 8" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
export default { |
|
||||
name: 'Release', |
|
||||
components: { HNav, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
str: '发布界面', |
|
||||
title: '结果公告', |
|
||||
typeOfPlatform: '创新挑战', |
|
||||
arr: [ |
|
||||
{ name: '创新挑战', url: '/Challenge/Solicitation' }, |
|
||||
{ name: '结果公告', url: '' }, |
|
||||
], |
|
||||
current: 1, |
|
||||
pageSize: 8, |
|
||||
total: 10, |
|
||||
list: [ |
|
||||
{ |
|
||||
id: 1, |
|
||||
name: '功能食品', |
|
||||
isActive: false, |
|
||||
}, |
|
||||
{ |
|
||||
id: 2, |
|
||||
name: '生物医药', |
|
||||
isActive: false, |
|
||||
}, |
|
||||
{ |
|
||||
id: 3, |
|
||||
name: '大健康', |
|
||||
isActive: false, |
|
||||
}, |
|
||||
], |
|
||||
lists: [ |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: 'XXX挑战成功', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: 'XXX挑战成功', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: 'XXX挑战成功', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: 'XXX挑战成功', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: 'XXX挑战成功', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: 'XXX挑战成功', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: 'XXX挑战成功', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: 'XXX挑战成功', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
methods: { |
|
||||
choose(index) { |
|
||||
const that = this; |
|
||||
// that.achList = []; |
|
||||
const { list } = this; |
|
||||
list[index].isActive = !list[index].isActive; |
|
||||
this.list = [...list]; |
|
||||
// for (let i = 0; i < list.length; i++) { |
|
||||
// if (list[i].isActive) { |
|
||||
// this.achList.push(list[i].id); |
|
||||
// } |
|
||||
// } |
|
||||
// this.setAchList(this.achList); |
|
||||
}, |
|
||||
// 改变单当前页数 |
|
||||
onShowSizeChange(current, size) { |
|
||||
this.current = current; |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
|
|
||||
.search-background { |
|
||||
background: rgba(0, 0, 0, 0.02); |
|
||||
border: 1px solid rgba(0, 0, 0, 0.06); |
|
||||
height: auto; |
|
||||
padding: 0 20px; |
|
||||
width: 82%; |
|
||||
margin: 40px auto; |
|
||||
line-height: 44px; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
margin: 40px 0; |
|
||||
text-align: right; |
|
||||
} |
|
||||
|
|
||||
.ins-title { |
|
||||
font-size: 16px; |
|
||||
font-weight: bold; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
} |
|
||||
|
|
||||
.ins-name { |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
padding: 0 10px; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
.act-color { |
|
||||
color: #13ACC4 !important; |
|
||||
} |
|
||||
|
|
||||
.margin-0 { |
|
||||
margin-right: 0% !important; |
|
||||
} |
|
||||
|
|
||||
.pro-box { |
|
||||
width: 20.5%; |
|
||||
margin-right: 6%; |
|
||||
height: auto; |
|
||||
background: #FFFFFF; |
|
||||
padding: 24px 20px; |
|
||||
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
position: relative; |
|
||||
margin-bottom: 20px; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.pro-title { |
|
||||
font-size: 24px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
line-height: 31px; |
|
||||
color: rgba(0, 0, 0, 0.85); |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.pro-content { |
|
||||
font-size: 30px; |
|
||||
overflow: hidden; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
color: #13ACC4; |
|
||||
margin-bottom: 60px; |
|
||||
opacity: 1; |
|
||||
display: -webkit-box; |
|
||||
-webkit-line-clamp: 5; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
|
|
||||
.pro-time { |
|
||||
position: absolute; |
|
||||
font-size: 14px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
line-height: 22px; |
|
||||
color: rgba(0, 0, 0, 0.45); |
|
||||
opacity: 1; |
|
||||
bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.pro-btn { |
|
||||
position: absolute; |
|
||||
bottom: 24px; |
|
||||
width: 100px; |
|
||||
} |
|
||||
</style> |
|
@ -1,249 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="search-background"> |
|
||||
<div class="d-flex"> |
|
||||
<div class="flex-3 flex-wrap"> |
|
||||
<span class="ins-title">技术领域:</span> |
|
||||
<span |
|
||||
:class="item.isActive ? 'act-color' : ''" |
|
||||
:key="index" |
|
||||
@click="choose(index)" |
|
||||
class="ins-name" |
|
||||
v-for="(item, index) in list" |
|
||||
>{{ item.name }}</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="inner d-flex flex-wrap"> |
|
||||
<div |
|
||||
:class="(index + 1) % 4 === 0 ? 'margin-0' : ''" |
|
||||
:key="index" |
|
||||
class="pro-box" |
|
||||
v-for="(item, index) in lists" |
|
||||
> |
|
||||
<p class="pro-title">{{ item.title }}</p> |
|
||||
<p class="pro-content">{{ item.content }}</p> |
|
||||
<p class="pro-time">时间:{{ item.time }}</p> |
|
||||
<a-button class="pro-btn" type="primary">揭榜</a-button> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="inner"> |
|
||||
<a-pagination |
|
||||
:current="current" |
|
||||
:page-size="pageSize" |
|
||||
:total="total" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="total > 8" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
export default { |
|
||||
name: 'Release', |
|
||||
components: { HNav, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '项目发布', |
|
||||
typeOfPlatform: '创新挑战', |
|
||||
arr: [ |
|
||||
{ name: '创新挑战', url: '/Challenge/Solicitation' }, |
|
||||
{ name: '项目发布', url: '' }, |
|
||||
], |
|
||||
str: '发布界面', |
|
||||
current: 1, |
|
||||
pageSize: 8, |
|
||||
total: 10, |
|
||||
list: [ |
|
||||
{ |
|
||||
id: 1, |
|
||||
name: '功能食品', |
|
||||
isActive: false, |
|
||||
}, |
|
||||
{ |
|
||||
id: 2, |
|
||||
name: '生物医药', |
|
||||
isActive: false, |
|
||||
}, |
|
||||
{ |
|
||||
id: 3, |
|
||||
name: '大健康', |
|
||||
isActive: false, |
|
||||
}, |
|
||||
], |
|
||||
lists: [ |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: |
|
||||
'需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容求内容需求内容求内容需求内容', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: |
|
||||
'需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容求内容需求内容求内容需求内容', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: |
|
||||
'需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容求内容需求内容求内容需求内容', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: |
|
||||
'需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容求内容需求内容求内容需求内容', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: |
|
||||
'需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容求内容需求内容求内容需求内容', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: |
|
||||
'需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容求内容需求内容求内容需求内容', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: |
|
||||
'需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容求内容需求内容求内容需求内容', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
{ |
|
||||
title: '需求标题', |
|
||||
content: |
|
||||
'需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容需求内容求内容需求内容求内容需求内容', |
|
||||
time: '2020-11-20', |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
methods: { |
|
||||
choose(index) { |
|
||||
const that = this; |
|
||||
// that.achList = []; |
|
||||
const { list } = this; |
|
||||
list[index].isActive = !list[index].isActive; |
|
||||
this.list = [...list]; |
|
||||
// for (let i = 0; i < list.length; i++) { |
|
||||
// if (list[i].isActive) { |
|
||||
// this.achList.push(list[i].id); |
|
||||
// } |
|
||||
// } |
|
||||
// this.setAchList(this.achList); |
|
||||
}, |
|
||||
// 改变单当前页数 |
|
||||
onShowSizeChange(current, size) { |
|
||||
this.current = current; |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
|
|
||||
.search-background { |
|
||||
background: rgba(0, 0, 0, 0.02); |
|
||||
border: 1px solid rgba(0, 0, 0, 0.06); |
|
||||
height: auto; |
|
||||
padding: 0 20px; |
|
||||
width: 82%; |
|
||||
margin: 40px auto; |
|
||||
line-height: 44px; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
margin: 40px 0; |
|
||||
text-align: right; |
|
||||
} |
|
||||
|
|
||||
.ins-title { |
|
||||
font-size: 16px; |
|
||||
font-weight: bold; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
} |
|
||||
|
|
||||
.ins-name { |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
padding: 0 10px; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
.act-color { |
|
||||
color: #13ACC4 !important; |
|
||||
} |
|
||||
|
|
||||
.margin-0 { |
|
||||
margin-right: 0% !important; |
|
||||
} |
|
||||
|
|
||||
.pro-box { |
|
||||
width: 20.5%; |
|
||||
margin-right: 6%; |
|
||||
height: 300px; |
|
||||
background: #FFFFFF; |
|
||||
padding: 24px 20px; |
|
||||
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
position: relative; |
|
||||
margin-bottom: 20px; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.pro-title { |
|
||||
font-size: 24px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
line-height: 31px; |
|
||||
color: rgba(0, 0, 0, 0.85); |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.pro-content { |
|
||||
font-size: 16px; |
|
||||
overflow: hidden; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
line-height: 24px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
opacity: 1; |
|
||||
display: -webkit-box; |
|
||||
-webkit-line-clamp: 5; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
|
|
||||
.pro-time { |
|
||||
position: absolute; |
|
||||
font-size: 14px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
line-height: 22px; |
|
||||
color: rgba(0, 0, 0, 0.45); |
|
||||
opacity: 1; |
|
||||
bottom: 60px; |
|
||||
} |
|
||||
|
|
||||
.pro-btn { |
|
||||
position: absolute; |
|
||||
bottom: 24px; |
|
||||
width: 100px; |
|
||||
} |
|
||||
</style> |
|
@ -1,71 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="top-box"> |
|
||||
<div class="top-title">创新挑战</div> |
|
||||
<div class="top-content"> |
|
||||
山西绿谷生物科技股份有限公司立足功能食品、生物医药和大健康产业,聚焦“创新”、聚力“孵化”、聚合“产业”, |
|
||||
致力建设集创新链、孵化链和产业链为一体,产学研协同、多学科交叉、大中小企业融通、 |
|
||||
线上线下相结合的融合发展机制和开放式创新创业平台,培育打造全链条一体化新型社会研发机构和创新创业生态系统, |
|
||||
构筑专业化、集群化、园区化、产业发展新模式和新业态。公司秉持“创新、开放、协同、融合”发展理 |
|
||||
念,以“赋能健康中国,筑梦绿色未来”为愿景,以“构建创新创业生态,发展特色产业集群,打造全链条一体化开放 |
|
||||
式创新创业高地”为使命,大力推动建设“共融共生,共建 共创”价值共同体。 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="center-box" style="margin-bottom: 160px"> |
|
||||
<div class="center-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">需求征集</div> |
|
||||
</div> |
|
||||
<div class="center-content"> |
|
||||
山西绿谷生物科技股份有限公司立足功能食品、生物医药和大健康产业,聚焦“创新”、聚力“孵化”、聚合“产业”, |
|
||||
致力建设集创新链、孵化链和产业链为一体,产学研协同、多学科交叉、大中小企业融通、 |
|
||||
线上线下相结合的融合发展机制和开放式创新创业平台,培育打造全链条一体化新型社会研发机构和创新创业生态系统, |
|
||||
构筑专业化、集群化、园区化、产业发展新模式和新业态。公司秉持“创新、开放、协同、融合”发展理 |
|
||||
念,以“赋能健康中国,筑梦绿色未来”为愿景,以“构建创新创业生态,发展特色产业集群,打造全链条一体化开放 |
|
||||
式创新创业高地”为使命,大力推动建设“共融共生,共建 共创”价值共同体。 |
|
||||
</div> |
|
||||
<a-button class="center-btn" type="primary">需求填报</a-button> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
export default { |
|
||||
name: 'Solicitation', |
|
||||
components: { HNav, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '需求征集', |
|
||||
typeOfPlatform: '创新挑战', |
|
||||
arr: [ |
|
||||
{ name: '创新挑战', url: '/Challenge/Solicitation' }, |
|
||||
{ name: '需求征集', url: '' }, |
|
||||
], |
|
||||
str: '征集界面', |
|
||||
list: [], |
|
||||
}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
|
|
||||
.top-box { |
|
||||
background: -webkit-linear-gradient(left, #13ACC4, #A9C300) !important; |
|
||||
} |
|
||||
|
|
||||
.center-btn { |
|
||||
position: absolute; |
|
||||
left: 26%; |
|
||||
bottom: 100px; |
|
||||
} |
|
||||
</style> |
|
@ -1,54 +0,0 @@ |
|||||
<template> |
|
||||
<div class="nav-box d-flex"> |
|
||||
<div v-for="(item, index) in list" :key="index" :class="activeNum === index ? 'nav-box-active' : ''" @click="jump(item.url)"> |
|
||||
{{ item.title }} |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'HNav', |
|
||||
data() { |
|
||||
return { |
|
||||
str: '导航条', |
|
||||
activeNum: 0, |
|
||||
list: [ |
|
||||
{ |
|
||||
title: '需求征集', |
|
||||
url: '/Challenge/Solicitation', |
|
||||
}, |
|
||||
{ |
|
||||
title: '项目发布', |
|
||||
url: '/Challenge/Release', |
|
||||
}, |
|
||||
{ |
|
||||
title: '结果公告', |
|
||||
url: '/Challenge/Notice', |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
console.log(); |
|
||||
if (this.$route.fullPath === '/Challenge/Release') { |
|
||||
this.activeNum = 1; |
|
||||
} else if (this.$route.fullPath === '/Challenge/Notice') { |
|
||||
this.activeNum = 2; |
|
||||
} else { |
|
||||
this.activeNum = 0; |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
jump(url) { |
|
||||
if (this.$route.fullPath === url) { |
|
||||
this.$message.success('已在当前界面'); |
|
||||
} else { |
|
||||
this.$router.push(url); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped></style> |
|
@ -1,193 +0,0 @@ |
|||||
<template> |
|
||||
<div class="box"> |
|
||||
<div> |
|
||||
<div class="policy-title"> |
|
||||
<span>{{ postDetail.title }}</span> |
|
||||
</div> |
|
||||
<div class="policy-info"> |
|
||||
<span> |
|
||||
<a-avatar |
|
||||
:size="20" |
|
||||
:src="postDetail.avatarUrl" |
|
||||
style="margin-top: -4px; margin-right: 10px" |
|
||||
/> |
|
||||
<span style="margin-right: 60px">{{ postDetail.userName }}</span> |
|
||||
<a-icon |
|
||||
class="baseColor" |
|
||||
style="font-size: 14px; margin-right: 10px" |
|
||||
type="clock-circle" |
|
||||
/> |
|
||||
<span>{{ postDetail.createdTime }}</span> |
|
||||
</span> |
|
||||
<span style="margin-left: 60px"> |
|
||||
<a-icon class="baseColor" style="margin-right: 10px" type="message" /> |
|
||||
<span>{{ postDetail.commentNum }}</span> |
|
||||
</span> |
|
||||
</div> |
|
||||
<div class="policy-content" v-dompurify-html="postDetail.content"></div> |
|
||||
</div> |
|
||||
<div class="coms-style"> |
|
||||
<div class="coms-top"> |
|
||||
<div :key="index" style="margin-top: 1em" v-for="(item, index) in coms"> |
|
||||
<p style="color: #999"> |
|
||||
<a-avatar |
|
||||
:size="20" |
|
||||
:src="item.avatarUrl" |
|
||||
alt |
|
||||
style="margin-top: -4px; margin-right: 4px" |
|
||||
/> |
|
||||
<span style="margin-right: 10px">{{ item.userName }}</span> |
|
||||
<span>{{ item.creatTime }}</span> |
|
||||
</p> |
|
||||
<span class="coms-content">{{ item.content }}</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="coms-btm"> |
|
||||
<a-textarea style="height: 140px;min-height: 140px;max-height: 140px" v-model="comment" /> |
|
||||
<a-button @click="sub" class="sub" type="primary">提交</a-button> |
|
||||
</div> |
|
||||
<!-- <div class="txtara"> |
|
||||
<a-textarea placeholder="请输入..." :rows="4" v-model="comment" /> |
|
||||
<a-button class="txt-btn" type="primary" @click="sub(index)">提交</a-button> |
|
||||
</div>--> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState } from 'vuex'; |
|
||||
import { selCommunity, insComment } from 'config/selComment'; |
|
||||
export default { |
|
||||
name: 'ComDetails', |
|
||||
data() { |
|
||||
return { |
|
||||
comment: '', |
|
||||
coms: {}, |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('home', ['postDetail']), |
|
||||
created() { |
|
||||
this.getData(); |
|
||||
}, |
|
||||
methods: { |
|
||||
async getData() { |
|
||||
// 查看评论 |
|
||||
try { |
|
||||
const params = { param: { commentId: this.postDetail.id } }; |
|
||||
const res = await selCommunity(params); |
|
||||
const { msg, data, code } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.coms = data; |
|
||||
} else { |
|
||||
this.$message.error(msg); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
this.$message.error(error); |
|
||||
} |
|
||||
}, |
|
||||
// 跟帖(发表评论) |
|
||||
async sub(index) { |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
communityId: this.postDetail.id, |
|
||||
content: this.comment, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await insComment(params); |
|
||||
const { msg, data, code } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.comment = ''; |
|
||||
this.$message.success('评论成功'); |
|
||||
this.getData(); |
|
||||
} else { |
|
||||
console.log(msg); |
|
||||
this.$message.error('评论失败'); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
this.$message.error('评论失败'); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.box { |
|
||||
width: 1260px; |
|
||||
position: relative; |
|
||||
margin: 80px auto; |
|
||||
background: #fff; |
|
||||
min-height: 1037px; |
|
||||
overflow: hidden; |
|
||||
opacity: 1; |
|
||||
padding-bottom: 480px; |
|
||||
} |
|
||||
|
|
||||
.back-btn { |
|
||||
width: 80px; |
|
||||
position: absolute; |
|
||||
right: 0; |
|
||||
} |
|
||||
|
|
||||
.policy-title { |
|
||||
height: 120px; |
|
||||
font-size: 24px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
color: rgba(0, 0, 0, 0.85); |
|
||||
opacity: 1; |
|
||||
text-align: center; |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
justify-content: center; |
|
||||
padding: 0 150px; |
|
||||
border-bottom: 1px solid #707070; |
|
||||
} |
|
||||
|
|
||||
.policy-info { |
|
||||
height: 76px; |
|
||||
line-height: 76px; |
|
||||
text-align: center; |
|
||||
} |
|
||||
|
|
||||
.policy-content { |
|
||||
padding: 0 25px; |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
font-weight: 400; |
|
||||
font-family: Microsoft YaHei; |
|
||||
} |
|
||||
|
|
||||
.coms-style { |
|
||||
height: 480px; |
|
||||
padding: 25px 0; |
|
||||
border-top: 2px solid #ccc; |
|
||||
position: absolute; |
|
||||
bottom: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
|
|
||||
.coms-top { |
|
||||
height: 280px; |
|
||||
padding: 0 25px; |
|
||||
overflow: auto; |
|
||||
box-shadow: 0 0 5px #ccc; |
|
||||
} |
|
||||
|
|
||||
.coms-btm { |
|
||||
margin-top: 20px; |
|
||||
padding: 0 10px; |
|
||||
} |
|
||||
|
|
||||
.coms-content { |
|
||||
background: rgba(19, 172, 196, 0.1); |
|
||||
} |
|
||||
|
|
||||
.sub { |
|
||||
position: absolute; |
|
||||
right: 20px; |
|
||||
bottom: 20px; |
|
||||
} |
|
||||
</style> |
|
@ -1,268 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: bin |
|
||||
email: binbin0314@126.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<div class="inner"> |
|
||||
<div class="search-list"> |
|
||||
<a-radio-group v-model="value"> |
|
||||
<a-radio :style="radioStyle" :value="1">主题论坛</a-radio> |
|
||||
<a-radio :style="radioStyle" :value="2">创新社区</a-radio> |
|
||||
<a-radio :style="radioStyle" :value="3">孵化社区</a-radio> |
|
||||
<a-radio :style="radioStyle" :value="4">产业社区</a-radio> |
|
||||
</a-radio-group> |
|
||||
<a-input-search |
|
||||
@search="searchData" |
|
||||
class="search" |
|
||||
enter-button="搜索" |
|
||||
placeholder="请输入..." |
|
||||
style="width: 381px" |
|
||||
v-model="iptCon" |
|
||||
/> |
|
||||
<a-button @click="jumpPost()" class="btn" type="primary">发帖</a-button> |
|
||||
</div> |
|
||||
<div :key="index" class="post" v-for="(item, index) in lists"> |
|
||||
<p class="post-title">{{ item.title }}</p> |
|
||||
<p style="color: rgba(0, 0, 0, 0.45)"> |
|
||||
<span> |
|
||||
<!-- <a-icon type="user" class="baseColor" /> --> |
|
||||
<a-avatar :size="20" :src="item.avatarUrl" style="margin-top: -4px" /> |
|
||||
{{ item.userName }} |
|
||||
</span> |
|
||||
<span style="margin-left: 20px">{{ item.createdTime }}</span> |
|
||||
<span class="baseColor" style="margin-left: 20px"> |
|
||||
<a-icon type="message" /> |
|
||||
{{ item.commentNum }} |
|
||||
</span> |
|
||||
</p> |
|
||||
<div class="d-flex flex-nowrap"> |
|
||||
<img :src="item.visitLocation" alt class="post-img" v-if="item.visitLocation" /> |
|
||||
<div class="post-content" v-dompurify-html="item.content"></div> |
|
||||
</div> |
|
||||
<p class="look-down baseColor"> |
|
||||
<span @click="getDet(item.id, index)"> |
|
||||
查看详情 |
|
||||
<a-icon type="arrow-right" /> |
|
||||
</span> |
|
||||
</p> |
|
||||
<div class="comment"> |
|
||||
<div :key="b" v-for="(a, b) in coms"> |
|
||||
<p style="padding-left: 20px"> |
|
||||
<a-avatar :size="20" :src="a.avatarUrl" style="margin-top: -4px" /> |
|
||||
<span>{{ a.userName }}</span> |
|
||||
<span style="margin-left: 20px">{{ a.creatTime }}</span> |
|
||||
</p> |
|
||||
<p class="coms-con">{{ a.content }}</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<a-pagination |
|
||||
:current="comCurrent" |
|
||||
:page-size="pageSize" |
|
||||
:total="total" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="total > 5" |
|
||||
/> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapMutations, mapState } from 'vuex'; |
|
||||
import { selComment } from 'config/selComment'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Community', |
|
||||
// components: { SearchList }, |
|
||||
data() { |
|
||||
return { |
|
||||
str: '这是交流社区界面', |
|
||||
radioStyle: { |
|
||||
height: '30px', |
|
||||
lineHeight: '30px', |
|
||||
}, |
|
||||
comment: '', |
|
||||
total: 0, |
|
||||
pageSize: 5, |
|
||||
value: 1, |
|
||||
iptCon: '', |
|
||||
showType: -1, |
|
||||
coms: [], |
|
||||
lists: [], |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('home', ['comCurrent', 'postVal', 'postIpCon']), |
|
||||
watch: { |
|
||||
value(val) { |
|
||||
this.setPostVal(val - 1); |
|
||||
this.setComCurrent(1); |
|
||||
this.searchData(); |
|
||||
}, |
|
||||
}, |
|
||||
created() { |
|
||||
this.value = this.postVal + 1; |
|
||||
this.iptCon = this.postIpCon; |
|
||||
this.searchData(); |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapMutations('home', ['setComCurrent', 'setPostDetail', 'setPostVal', 'setPostIpCon']), |
|
||||
// 展开帖子,并且评论 |
|
||||
async getDet(id, index) { |
|
||||
this.setPostDetail(this.lists[index]); |
|
||||
this.$router.push('/ComDetails'); |
|
||||
}, |
|
||||
// 查询当前页帖子列表(5篇) |
|
||||
async searchData() { |
|
||||
try { |
|
||||
this.setPostIpCon(this.iptCon); |
|
||||
const params = { |
|
||||
param: { |
|
||||
category: this.value - 1, |
|
||||
pageNum: this.comCurrent, |
|
||||
pageSize: 5, |
|
||||
title: this.iptCon, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await selComment(params); |
|
||||
const { msg, data, code } = res.data; |
|
||||
if (code === 200) { |
|
||||
console.log(data); |
|
||||
this.lists = data.list; |
|
||||
this.total = parseInt(data.total); |
|
||||
} else { |
|
||||
console.log(msg); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
// 改变单当前页数 |
|
||||
onShowSizeChange(current, size) { |
|
||||
this.setComCurrent(current); |
|
||||
this.searchData(); |
|
||||
}, |
|
||||
|
|
||||
// 发帖 |
|
||||
jumpPost() { |
|
||||
this.$router.push('/Posting'); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style scoped lang="stylus"> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
|
|
||||
.post-title { |
|
||||
// width: 165px; |
|
||||
height: 26px; |
|
||||
font-size: 20px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
line-height: 26px; |
|
||||
color: rgba(0, 0, 0, 0.85); |
|
||||
overflow: hidden; |
|
||||
opacity: 1; |
|
||||
display: -webkit-box; |
|
||||
-webkit-line-clamp: 1; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
|
|
||||
.search-list { |
|
||||
height: 72px; |
|
||||
line-height: 72px; |
|
||||
padding: 0 24px; |
|
||||
position: relative; |
|
||||
background: #fff; |
|
||||
box-shadow: 0 0 10px #ccc; |
|
||||
} |
|
||||
|
|
||||
.search { |
|
||||
position: absolute; |
|
||||
right: 110px; |
|
||||
top: 20px; |
|
||||
} |
|
||||
|
|
||||
.btn { |
|
||||
width: 75px; |
|
||||
height: 32px; |
|
||||
position: absolute; |
|
||||
right: 25px; |
|
||||
top: 20px; |
|
||||
} |
|
||||
|
|
||||
.post { |
|
||||
margin-top: 24px; |
|
||||
width: 100%; |
|
||||
padding: 25px; |
|
||||
position: relative; |
|
||||
overflow: hidden; |
|
||||
height: 270px; |
|
||||
background: #fff; |
|
||||
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
transition: all 0.25s; |
|
||||
} |
|
||||
|
|
||||
.post-img { |
|
||||
width: 233px; |
|
||||
height: 128px; |
|
||||
} |
|
||||
|
|
||||
.post-content { |
|
||||
margin-left: 30px; |
|
||||
overflow: hidden; |
|
||||
height: 110px; |
|
||||
text-indent: 2em; |
|
||||
display: -webkit-box; |
|
||||
-webkit-line-clamp: 5; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
|
|
||||
.look-down { |
|
||||
position: absolute; |
|
||||
right: 25px; |
|
||||
bottom: 10px; |
|
||||
cursor: pointer; |
|
||||
margin-bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
margin-top: 48px; |
|
||||
text-align: right; |
|
||||
} |
|
||||
|
|
||||
.comment { |
|
||||
min-height: 107px; |
|
||||
max-height: 207px; |
|
||||
overflow: auto; |
|
||||
width: 1210px; |
|
||||
opacity: 1; |
|
||||
background: #FAFAFA; |
|
||||
margin-top: 60px; |
|
||||
padding: 16px 0; |
|
||||
} |
|
||||
|
|
||||
.txtara { |
|
||||
margin-top: 20px; |
|
||||
position: relative; |
|
||||
} |
|
||||
|
|
||||
.txt-btn { |
|
||||
position: absolute; |
|
||||
right: 0; |
|
||||
bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.coms-con { |
|
||||
background: rgba(19, 172, 196, 0.1); |
|
||||
line-height: 24px; |
|
||||
text-indent: 2em; |
|
||||
margin: 0 20px; |
|
||||
} |
|
||||
</style> |
|
@ -1,142 +0,0 @@ |
|||||
<template> |
|
||||
<div class="wrap"> |
|
||||
<!-- {{ str }} --> |
|
||||
<h2>标题:</h2> |
|
||||
<a-input style="margin-bottom: 20px" v-model.trim="title" /> |
|
||||
<h2>封面图片</h2> |
|
||||
<a-upload |
|
||||
:action="action" |
|
||||
:default-file-list="fileList" |
|
||||
@change="fileChange" |
|
||||
list-type="picture" |
|
||||
name="files" |
|
||||
> |
|
||||
<a-button v-show="fileList.length === 0"> |
|
||||
<a-icon type="upload" />点击上传 |
|
||||
</a-button> |
|
||||
</a-upload> |
|
||||
<h2 style="margin-top: 20px">内容:</h2> |
|
||||
<div class="edit_container" style="height: auto; margin-bottom: 40px"> |
|
||||
<quill-editor |
|
||||
:options="editorOption" |
|
||||
@blur="onEditorBlur($event)" |
|
||||
@change="onEditorChange($event)" |
|
||||
@focus="onEditorFocus($event)" |
|
||||
ref="myQuillEditor" |
|
||||
v-model="content" |
|
||||
></quill-editor> |
|
||||
</div> |
|
||||
<a-button @click="subMit" type="primary">发表</a-button> |
|
||||
<router-link @click="subMit" style="margin-left: 40px" tag="a-button" to="Community">取消</router-link> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState } from 'vuex'; |
|
||||
import { quillEditor } from 'vue-quill-editor'; //调用编辑器 |
|
||||
import 'quill/dist/quill.core.css'; |
|
||||
import 'quill/dist/quill.snow.css'; |
|
||||
import 'quill/dist/quill.bubble.css'; |
|
||||
import { upload } from 'config/api'; |
|
||||
import { addComment } from 'config/selComment'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Posting', |
|
||||
components: { quillEditor }, |
|
||||
data() { |
|
||||
return { |
|
||||
str: '发帖界面', |
|
||||
title: '', |
|
||||
content: ``, |
|
||||
editorOption: { |
|
||||
placeholder: '请在这里输入', |
|
||||
modules: { |
|
||||
toolbar: [ |
|
||||
['bold', 'italic', 'underline', 'strike'], //加粗,斜体,下划线,删除线 |
|
||||
['blockquote', 'code-block'], //引用,代码块 |
|
||||
[{ header: 1 }, { header: 2 }], // 标题,键值对的形式;1、2表示字体大小 |
|
||||
[{ list: 'ordered' }, { list: 'bullet' }], //列表 |
|
||||
[{ script: 'sub' }, { script: 'super' }], // 上下标 |
|
||||
[{ indent: '-1' }, { indent: '+1' }], // 缩进 |
|
||||
[{ direction: 'rtl' }], // 文本方向 |
|
||||
[{ size: ['small', false, 'large', 'huge'] }], // 字体大小 |
|
||||
[{ header: [1, 2, 3, 4, 5, 6, false] }], //几级标题 |
|
||||
[{ color: [] }, { background: [] }], // 字体颜色,字体背景颜色 |
|
||||
[{ font: [] }], //字体 |
|
||||
[{ align: [] }], //对齐方式 |
|
||||
['clean'], //清除字体样式 |
|
||||
['image', 'video'], //上传图片、上传视频 |
|
||||
], |
|
||||
}, |
|
||||
}, |
|
||||
action: upload, |
|
||||
fileList: [], // 附件列表 |
|
||||
files: '', // 附件Id |
|
||||
}; |
|
||||
}, |
|
||||
computed: { |
|
||||
...mapState('home', ['postDetail', 'postVal']), |
|
||||
editor() { |
|
||||
return this.$refs.myQuillEditor.quill; |
|
||||
}, |
|
||||
}, |
|
||||
methods: { |
|
||||
onEditorReady(editor) { |
|
||||
// 准备编辑器 |
|
||||
}, |
|
||||
onEditorBlur() {}, // 失去焦点事件 |
|
||||
onEditorFocus() {}, // 获得焦点事件 |
|
||||
onEditorChange() { |
|
||||
// 内容改变事件 |
|
||||
// console.log(this.content); |
|
||||
}, |
|
||||
// 上传图片事件 |
|
||||
fileChange(info) { |
|
||||
this.fileList = info.fileList; |
|
||||
if (info.file.status === 'done') { |
|
||||
this.files = []; |
|
||||
this.files = info.fileList[0].response.data[0].id; |
|
||||
console.log(this.files); |
|
||||
} |
|
||||
}, |
|
||||
// 发帖 |
|
||||
async subMit() { |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
content: this.content, |
|
||||
category: this.postVal, |
|
||||
picId: this.files, |
|
||||
title: this.title, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await addComment(params); |
|
||||
const { msg, data, code } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.$message.success('发表成功'); |
|
||||
this.$router.push('/Community'); |
|
||||
} else { |
|
||||
this.$message.error('发表失败'); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
this.$message.error(error); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" > |
|
||||
.wrap { |
|
||||
width: 1260px; |
|
||||
min-height: 1037px; |
|
||||
margin: 80px auto 28px auto; |
|
||||
overflow: hidden; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.ql-editor { |
|
||||
min-height: 600px; |
|
||||
max-height: 800px; |
|
||||
} |
|
||||
</style> |
|
@ -1,47 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
<div class="white pa-5 my-5"> |
|
||||
<!-- <rich-text :title="title" /> --> |
|
||||
<div class="words-content"> |
|
||||
<img src="https://www.sxwikionline.com/gateway/greenvalley/uploads/upload/logo/fhcs.png" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import RichText from 'components/Introduce/RichText.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Incubator', |
|
||||
components: { Banner, HNav, BreadCrumb, RichText }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '孵化平台-孵化场所', |
|
||||
showPage: 45, |
|
||||
arr: [ |
|
||||
{ name: '孵化平台', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '众创空间', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '实体众创空间', url: '/IncubationPlatform/MakerSpace/EntitySpace' }, |
|
||||
{ name: '孵化场所', url: '' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
methods: {}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
</style> |
|
@ -1,120 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<div @click="openModel()"> |
|
||||
<banner :show-page="showPage" class="pointer" /> |
|
||||
</div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
<div> |
|
||||
<div :key="index" style="margin-top: 50px;" v-for="(item, index) in list"> |
|
||||
<div class="d-flex justify-space-between" v-if="index % 2 === 0"> |
|
||||
<div class="introduce-box"> |
|
||||
<p |
|
||||
@click="item.imgUrl ? jump(item.url) : openModel()" |
|
||||
class="introduce-title pointer" |
|
||||
>{{ item.title }}</p> |
|
||||
<p class="introduce-content" v-if="index === 0"> |
|
||||
实体空间由 |
|
||||
<span |
|
||||
@click="$router.push('/IncubationPlatform/Incubator')" |
|
||||
class="pointer baseColor" |
|
||||
>孵化场所</span>、 |
|
||||
<span |
|
||||
@click="$router.push('/IncubationPlatform/PublicLaboratory')" |
|
||||
class="pointer baseColor" |
|
||||
>公共实验室</span>、 |
|
||||
<span |
|
||||
@click="$router.push('/IncubationPlatform/PilotBase')" |
|
||||
class="pointer baseColor" |
|
||||
>中试基地</span>部分组成。 |
|
||||
</p> |
|
||||
<p |
|
||||
@click="item.imgUrl ? jump(item.url) : openModel()" |
|
||||
class="introduce-content pointer" |
|
||||
v-else |
|
||||
>{{ item.content }}</p> |
|
||||
</div> |
|
||||
<img |
|
||||
:src="item.imgUrl" |
|
||||
@click="item.url ? jump(item.url) : ''" |
|
||||
class="pointer" |
|
||||
style="width: 452px" |
|
||||
v-if="item.imgUrl" |
|
||||
/> |
|
||||
<!-- <a-button v-else style="width: 452px; height: 100%">123</a-button> --> |
|
||||
<add-model :value="1" ref="child" style="width: 452px" v-else /> |
|
||||
</div> |
|
||||
<div |
|
||||
@click="item.url ? jump(item.url) : ''" |
|
||||
class="d-flex justify-space-between pointer" |
|
||||
v-else |
|
||||
> |
|
||||
<img :src="item.imgUrl" style="width: 452px" /> |
|
||||
<div class="introduce-box"> |
|
||||
<p class="introduce-title">{{ item.title }}</p> |
|
||||
<p class="introduce-content">{{ item.content }}</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import AddModel from '../components/AddModel.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'MakerSpace', |
|
||||
components: { BreadCrumb, HNav, Banner, AddModel }, |
|
||||
data() { |
|
||||
return { |
|
||||
showPage: 41, |
|
||||
arr: [ |
|
||||
{ name: '孵化平台', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '众创空间', url: '' }, |
|
||||
], |
|
||||
list: [ |
|
||||
{ |
|
||||
title: '实体空间', |
|
||||
content: '实体空间由孵化场所、公共实验室、中试基地部分组成。', |
|
||||
imgUrl: 'https://www.sxwikionline.com/gateway/greenvalley/uploads/upload/20210106/9059bddfe0254a269bf8f575c917b199.png', |
|
||||
url: '/IncubationPlatform/MakerSpace/EntitySpace', |
|
||||
}, |
|
||||
{ |
|
||||
title: '虚拟空间', |
|
||||
content: |
|
||||
'虚拟众创空间主要面向非入驻实体空间从事功能食品、生物医药和大健康产业相关研发服务和生产的企业。虚拟众创空间依托绿谷数字化平台进行建设,入驻企业可享受实体众创空间的各种创新创业服务,参加相关创新创业活动。', |
|
||||
imgUrl: 'https://www.sxwikionline.com/gateway/greenvalley/uploads/upload/20210106/73cba2c598e24bc99d4b988185138f44.png', |
|
||||
url: '/IncubationPlatform/MakerSpace/VirtualSpace', |
|
||||
}, |
|
||||
{ |
|
||||
title: '加入我们', |
|
||||
content: '绿谷众创空间有专业的团队,专业的资源,专业的服务,让我们一起做专业的事,让每一个梦想在这里腾飞。', |
|
||||
imgUrl: '', |
|
||||
url: '', |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
methods: { |
|
||||
jump(url) { |
|
||||
this.$router.push(url); |
|
||||
}, |
|
||||
|
|
||||
openModel() { |
|
||||
this.$refs.child[0].showModal(); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
</style> |
|
@ -1,39 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
<div class="py-5 my-5"> |
|
||||
<partner-ship :title="title" :type-of-platform="typeOfPlatform" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations, mapActions } from 'vuex'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import PartnerShip from 'components/Introduce/PartnerShip.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Partner', |
|
||||
components: { HNav, BreadCrumb, PartnerShip }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '合作伙伴', |
|
||||
typeOfPlatform: '孵化平台', |
|
||||
arr: [ |
|
||||
{ name: '孵化平台', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '合作伙伴', url: '' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
</style> |
|
@ -1,44 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
<div class="white pa-5 my-5"> |
|
||||
<rich-text :title="title" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import RichText from 'components/Introduce/RichText.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'PilotBase', |
|
||||
components: { Banner, HNav, BreadCrumb, RichText }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '孵化平台-中试基地', |
|
||||
showPage: 43, |
|
||||
arr: [ |
|
||||
{ name: '孵化平台', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '众创空间', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '实体众创空间', url: '/IncubationPlatform/MakerSpace/EntitySpace' }, |
|
||||
{ name: '中试基地', url: '' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
methods: {}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
</style> |
|
@ -1,168 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
<div> |
|
||||
<div class="search-background"> |
|
||||
<div class="d-flex"> |
|
||||
<div class="flex-3 flex-wrap"> |
|
||||
<span class="ins-title">产品类目:</span> |
|
||||
<span |
|
||||
:class="item.isActive ? 'act-color' : ''" |
|
||||
:key="index" |
|
||||
@click="choose(index)" |
|
||||
class="ins-name" |
|
||||
v-for="(item, index) in productLists" |
|
||||
>{{ item.name }}</span> |
|
||||
</div> |
|
||||
<div class="flex-1 align-center"> |
|
||||
<a-input-search |
|
||||
@search="searchProduct" |
|
||||
class="item-search" |
|
||||
enter-button="搜索" |
|
||||
placeholder="请输入" |
|
||||
v-model="productIpt" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<p class="font-bold-24">产品展示</p> |
|
||||
</div> |
|
||||
<platform-list /> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapMutations } from 'vuex'; |
|
||||
import { selModel } from 'config/api'; |
|
||||
import PlatformList from 'components/PlatformList/PlatformList.vue'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Products', |
|
||||
components: { BreadCrumb, HNav, PlatformList }, |
|
||||
data() { |
|
||||
return { |
|
||||
arr: [ |
|
||||
{ name: '孵化平台', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '产品展示', url: '' }, |
|
||||
], |
|
||||
productIpt: '', // 产品搜索框内容 |
|
||||
productLists: [], // 产品类目 |
|
||||
productList: [], // 产品类型选择列表 |
|
||||
}; |
|
||||
}, |
|
||||
watch: { |
|
||||
productIpt(val) { |
|
||||
const obj = { |
|
||||
content: this.productIpt, |
|
||||
isBtn: 0, |
|
||||
}; |
|
||||
this.setProductIpt(obj); |
|
||||
}, |
|
||||
}, |
|
||||
created() { |
|
||||
const obj = { |
|
||||
content: '', |
|
||||
isBtn: 0, |
|
||||
}; |
|
||||
this.setListState(3); |
|
||||
this.setProductList([]); |
|
||||
this.setProductIpt(obj); |
|
||||
this.getType(3); |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapMutations('home', ['setProductIpt', 'setProductList', 'setListState']), |
|
||||
async getType(num) { |
|
||||
try { |
|
||||
const params = { param: { model: num } }; |
|
||||
const res = await selModel(params); |
|
||||
const { code, mst, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.productLists = data; |
|
||||
for (let i = 0; i < this.productLists.length; i++) { |
|
||||
this.productLists[i].isActive = false; |
|
||||
} |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
// 选中类型时触发 |
|
||||
choose(index) { |
|
||||
this.productList = []; |
|
||||
const { productLists } = this; |
|
||||
for (let i = 0; i < productLists.length; i++) { |
|
||||
productLists[i].isActive = false; |
|
||||
} |
|
||||
this.setListState(3); |
|
||||
productLists[index].isActive = !productLists[index].isActive; |
|
||||
this.productLists = [...productLists]; |
|
||||
for (let i = 0; i < productLists.length; i++) { |
|
||||
if (productLists[i].isActive) { |
|
||||
this.productList.push(productLists[i].id); |
|
||||
} |
|
||||
} |
|
||||
this.setProductList(this.productList); |
|
||||
}, |
|
||||
|
|
||||
// 搜索 |
|
||||
searchProduct() { |
|
||||
const { productLists } = this; |
|
||||
for (let i = 0; i < productLists.length; i++) { |
|
||||
productLists[i].isActive = false; |
|
||||
} |
|
||||
this.productLists = [...productLists]; |
|
||||
this.setListState(3); |
|
||||
this.productIpt = ''; |
|
||||
const obj = { |
|
||||
content: this.productIpt, |
|
||||
isBtn: 1, |
|
||||
}; |
|
||||
this.setProductList(obj); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
|
|
||||
.search-background { |
|
||||
background: rgba(0, 0, 0, 0.02); |
|
||||
border: 1px solid rgba(0, 0, 0, 0.06); |
|
||||
height: auto; |
|
||||
padding: 0 20px; |
|
||||
width: 100%; |
|
||||
margin: 40px auto; |
|
||||
line-height: 44px; |
|
||||
} |
|
||||
|
|
||||
.item-search { |
|
||||
width: 100%; |
|
||||
height: 32px; |
|
||||
} |
|
||||
|
|
||||
.ins-title { |
|
||||
font-size: 16px; |
|
||||
font-weight: bold; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
} |
|
||||
|
|
||||
.ins-name { |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
padding: 0 10px; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
.act-color { |
|
||||
color: #13ACC4 !important; |
|
||||
} |
|
||||
</style> |
|
@ -1,44 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
<div class="white pa-5 my-5"> |
|
||||
<rich-text :title="title" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import RichText from 'components/Introduce/RichText.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'PublicLaboratory', |
|
||||
components: { Banner, HNav, BreadCrumb, RichText }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '孵化平台-公共实验室', |
|
||||
showPage: 42, |
|
||||
arr: [ |
|
||||
{ name: '孵化平台', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '众创空间', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '实体众创空间', url: '/IncubationPlatform/MakerSpace/EntitySpace' }, |
|
||||
{ name: '公共实验室', url: '' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
methods: {}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
</style> |
|
@ -1,140 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="flow-path"> |
|
||||
<div class="flow-title">服务流程</div> |
|
||||
<div class="flow-content"> |
|
||||
<img src="~assets/image.png" style="width:100%" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="inner d-flex flex-wrap"> |
|
||||
<div |
|
||||
:class="(index + 1) % 4 === 0 ? 'margin-0' : ''" |
|
||||
:key="index" |
|
||||
class="item-box mb-8" |
|
||||
v-for="(item, index) in list" |
|
||||
> |
|
||||
<img :src="item.picUrl" style="height: 220px; width: 100%; border: 1px solid #ccc" /> |
|
||||
<p class="font-24 my-4">{{ item.name }}</p> |
|
||||
<p class="font-16 my-4 textColor line-height-30 item-content">{{ item.intro }}</p> |
|
||||
<p |
|
||||
@click="jump(item.id)" |
|
||||
class="font-16 baseColor" |
|
||||
style="text-align: right; cursor: pointer" |
|
||||
>了解更多→</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="inner"> |
|
||||
<a-pagination |
|
||||
:current="current" |
|
||||
:page-size="pageSize" |
|
||||
:total="total" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="total > 8" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapMutations } from 'vuex'; |
|
||||
import { selService } from 'config/api'; |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Services', |
|
||||
components: { Banner, HNav, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '创业服务', |
|
||||
showPage: 46, |
|
||||
arr: [ |
|
||||
{ name: '孵化平台', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '创业服务', url: '/IncubationPlatform/Services' }, |
|
||||
], |
|
||||
list: [], |
|
||||
current: 1, |
|
||||
pageSize: 8, |
|
||||
total: 0, |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
created() { |
|
||||
this.getService(); |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
...mapMutations('home', ['setServiceArr']), |
|
||||
// 改变单当前页数 |
|
||||
onShowSizeChange(current, size) { |
|
||||
this.current = current; |
|
||||
}, |
|
||||
|
|
||||
// 获取服务列表 |
|
||||
async getService() { |
|
||||
try { |
|
||||
const params = { param: { serviceType: 2 } }; |
|
||||
const res = await selService(params); |
|
||||
const { code, data, msg } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.list = data; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(data); |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
// 查看 服务 详情 |
|
||||
jump(id) { |
|
||||
console.log(id); |
|
||||
this.setServiceArr([]); |
|
||||
this.setServiceArr(this.arr); |
|
||||
this.$router.push({ |
|
||||
path: '/NewPlatform/ServiceDet', |
|
||||
name: 'ServiceDet', |
|
||||
params: { id }, |
|
||||
}); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
text-align: right; |
|
||||
} |
|
||||
|
|
||||
.item-box { |
|
||||
width: 20.5%; |
|
||||
margin-right: 6%; |
|
||||
border-radius: 4px; |
|
||||
} |
|
||||
|
|
||||
.item-content { |
|
||||
display: -webkit-box; |
|
||||
overflow: hidden; |
|
||||
white-space: normal !important; |
|
||||
text-overflow: ellipsis; |
|
||||
word-wrap: break-word; |
|
||||
-webkit-line-clamp: 2; |
|
||||
-webkit-box-orient: vertical; |
|
||||
height: 60px; |
|
||||
} |
|
||||
|
|
||||
.margin-0 { |
|
||||
margin-right: 0 !important; |
|
||||
} |
|
||||
</style> |
|
@ -1,97 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
<div class="py-5 my-5" v-if="teachers && teachers.length > 0"> |
|
||||
<div :key="teacher.categoryId" class="mb-4" v-for="teacher in teachers"> |
|
||||
<p class="font-bold-24 title-color">{{ teacher.categoryName }}</p> |
|
||||
<div class="d-flex flex-wrap mb-10" v-if="teacher.services && teacher.services.length"> |
|
||||
<div |
|
||||
:class="(index + 1) % 5 === 0 ? 'teacher-item1' : ''" |
|
||||
:key="index" |
|
||||
class="teacher-item font-24 mb-3" |
|
||||
v-for="(item, index) in teacher.services" |
|
||||
> |
|
||||
{{ item.name }} |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import { selTeacher } from 'config/api'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Tutor', |
|
||||
components: { Banner, HNav, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '孵化平台-创业导师', |
|
||||
showPage: 44, |
|
||||
arr: [ |
|
||||
{ name: '孵化平台', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '创业导师', url: '' }, |
|
||||
], |
|
||||
teachers: [], |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
created() { |
|
||||
this.handleTeacher(); |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
// 查询 导师 |
|
||||
async handleTeacher() { |
|
||||
try { |
|
||||
const res = await selTeacher(); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.teachers = data; |
|
||||
for (let i = 0; i < this.teachers.length; i++) { |
|
||||
const element = this.teachers[i]; |
|
||||
for (let j = 0; j < element.services.length; j++) { |
|
||||
for (let k = 0; k < element.services.length - j; k++) { |
|
||||
if (element.services[k].order > element.services[k + 1].order) { |
|
||||
let a = {}; |
|
||||
a = element.services[k + 1].order; |
|
||||
element.services[k + 1].order = element.services[k].order; |
|
||||
element.services[k].order = a; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} else { |
|
||||
this.$message.error(msg); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
this.$message.error(error); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
|
|
||||
.teacher-item { |
|
||||
width: 12%; |
|
||||
margin-right: 10%; |
|
||||
text-indent: 1em; |
|
||||
} |
|
||||
|
|
||||
.teacher-item1 { |
|
||||
margin-right: 0; |
|
||||
} |
|
||||
</style> |
|
@ -1,57 +0,0 @@ |
|||||
<template> |
|
||||
<div class="nav-box d-flex"> |
|
||||
<div |
|
||||
:class="activeNum === index ? 'nav-box-active' : ''" |
|
||||
:key="index" |
|
||||
@click="jump(item.url)" |
|
||||
v-for="(item, index) in list" |
|
||||
>{{ item.title }}</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'HNav', |
|
||||
data() { |
|
||||
return { |
|
||||
str: '导航条', |
|
||||
activeNum: 0, |
|
||||
list: [ |
|
||||
{ |
|
||||
title: '科技资源开放共享服务平台', |
|
||||
url: '/NewPlatform/Share', |
|
||||
}, |
|
||||
{ |
|
||||
title: '知识产权与技术转移转化服务平台', |
|
||||
url: '/NewPlatform/Transfer', |
|
||||
}, |
|
||||
{ |
|
||||
title: '创新服务', |
|
||||
url: '/NewPlatform/Develop', |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
console.log(); |
|
||||
if (this.$route.fullPath === '/NewPlatform/Transfer') { |
|
||||
this.activeNum = 1; |
|
||||
} else if (this.$route.fullPath === '/NewPlatform/Develop') { |
|
||||
this.activeNum = 2; |
|
||||
} else { |
|
||||
this.activeNum = 0; |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
jump(url) { |
|
||||
if (this.$route.fullPath === url) { |
|
||||
this.$message.success('已在当前界面'); |
|
||||
} else { |
|
||||
this.$router.push(url); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped></style> |
|
@ -1,274 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="top-box"> |
|
||||
<div class="top-title">实体众创空间</div> |
|
||||
<div class="top-content"> |
|
||||
山西绿谷生物科技股份有限公司立足功能食品、生物医药和大健康产业,聚焦“创新”、聚力“孵化”、聚合“产业”, |
|
||||
致力建设集创新链、孵化链和产业链为一体,产学研协同、多学科交叉、大中小企业融通、 |
|
||||
线上线下相结合的融合发展机制和开放式创新创业平台,培育打造全链条一体化新型社会研发机构和创新创业生态系统, |
|
||||
构筑专业化、集群化、园区化、产业发展新模式和新业态。公司秉持“创新、开放、协同、融合”发展理 |
|
||||
念,以“赋能健康中国,筑梦绿色未来”为愿景,以“构建创新创业生态,发展特色产业集群,打造全链条一体化开放 |
|
||||
式创新创业高地”为使命,大力推动建设“共融共生,共建 共创”价值共同体。 |
|
||||
</div> |
|
||||
</div> |
|
||||
<!-- 孵化场所 --> |
|
||||
<div @click="$router.push('/IncubationPlatform/Incubator')" class="center-box c-box pointer"> |
|
||||
<div class="center-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">孵化场所</div> |
|
||||
</div> |
|
||||
<div class="center-content"> |
|
||||
孵化场所分为运营办公区、公共空间区、独立空间区和开放办公区。公共空间区包括路演厅 |
|
||||
(项目路演、知识培训、产品展示等多项功能)、会议室、洽谈室、第三空间(创业咖啡)。 |
|
||||
开放空间区按功能食品、生物医药、数字健康领域进行分区设置。 |
|
||||
</div> |
|
||||
</div> |
|
||||
<!-- 公共实验室 --> |
|
||||
<div @click="$router.push('/IncubationPlatform/PublicLaboratory')" class="center-box pointer"> |
|
||||
<div class="center-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">公共实验室</div> |
|
||||
</div> |
|
||||
<div class="center-content"> |
|
||||
公共实验室位于太原市师范街50号山西省生物研究院有限公司,总面积1320平方米。 |
|
||||
建有“医药生物技术山西省重点实验室”、“山西省发酵工程中试基地”及“山西省乳品 |
|
||||
发酵中试基地”等省级科技创新平台;具有检验检测机构资质认定证书(CMA);实验室 |
|
||||
拥有20万以上仪器设备26台套,包括AKTA蛋白纯化系统、多功能酶标仪、原子吸收光谱仪、 |
|
||||
液相色谱仪、万级无菌工作间、P2实验室等多种高端、大型实验仪器设备;可提供生物医药、 |
|
||||
食品检测、食用菌、肠道微生物等方面的科学实验、检验检测、小试中试等技术服务与科研成果转化。 |
|
||||
</div> |
|
||||
</div> |
|
||||
<!-- 中试基地 --> |
|
||||
<div @click="$router.push('/IncubationPlatform/PilotBase')" class="center-box c-box pointer"> |
|
||||
<div class="center-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">中试基地</div> |
|
||||
</div> |
|
||||
<div class="center-content d-flex flex-column"> |
|
||||
<div>发酵工程中试基地位于山西维尔乳制品有限公司,基地具有发酵乳制品等生产加工条件,可提供微生物发酵实验及相关中试。</div> |
|
||||
<div>超高压食品加工中试基地位于太原市小店区正阳街43号的山西力德福科技有限公司。基地具有非热杀菌保鲜生产线、超高压设备制造生产线及中试车间,可提供超高压加工实验及相关中试和产业化服务。</div> |
|
||||
<div>干果精深加工中试基地位于吕梁的交城天娇红农业科技有限公司 ,拥有300余万元的先进分析检测仪器设备及免洗干枣生产车间、浓缩枣汁生产车间等生产加工条件,可提供相关中试研究。</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<!-- 加入流程 --> |
|
||||
<div class="center-box"> |
|
||||
<div class="center-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">加入流程</div> |
|
||||
</div> |
|
||||
<div class="center-content"> |
|
||||
<div class="join-us-box"> |
|
||||
<img class="fill-width" src="~assets/join-us.png" /> |
|
||||
<div class="material-box d-flex flex-row justify-center"> |
|
||||
<a-tooltip placement="top"> |
|
||||
<template slot="title"> |
|
||||
<div> |
|
||||
<p>资料:</p> |
|
||||
<p>1.入孵申请表</p> |
|
||||
<p>2.营业执照复印件(尚未注册的无须提供,未注册提供注册信息登记表)</p> |
|
||||
<p>3.法定代表或授权代表身份证复印件</p> |
|
||||
<p>4.主导产品或技术简介</p> |
|
||||
</div> |
|
||||
</template> |
|
||||
<div class="material"></div> |
|
||||
</a-tooltip> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<!-- <a-button class="center-btn" type="primary">申请加入</a-button> --> |
|
||||
<add-model :value="2" class="center-btn" style="height: 32px" /> |
|
||||
</div> |
|
||||
<!-- 入驻企业名录 --> |
|
||||
<div class="center-box c-box" style="margin-bottom: 160px"> |
|
||||
<div class="center-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">入驻企业名录</div> |
|
||||
</div> |
|
||||
<div class="center-content"> |
|
||||
<div class="d-flex flex-wrap"> |
|
||||
<div |
|
||||
:class="(index + 1) % 3 === 0 ? 'margin-0' : ''" |
|
||||
:key="index" |
|
||||
class="ent-box" |
|
||||
v-for="(item, index) in lists" |
|
||||
> |
|
||||
<p class="ent-index">{{ index + 1 }}</p> |
|
||||
<span class="ent-name" style="margin-left: 50px">{{ item }}</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="reg-box"> |
|
||||
<a-button class style="float: left" type="primary">入驻企业注册</a-button> |
|
||||
<a-pagination |
|
||||
:current="current" |
|
||||
:page-size="pageSize" |
|
||||
:total="lists.length" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="lists.length > 18" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import HNav from '../../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import AddModel from './../../components/AddModel.vue'; |
|
||||
export default { |
|
||||
name: 'EntitySpace', |
|
||||
components: { HNav, BreadCrumb, AddModel }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '实体众创空间', |
|
||||
arr: [ |
|
||||
{ name: '孵化平台', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '众创空间', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '实体众创空间', url: '' }, |
|
||||
], |
|
||||
list: [], |
|
||||
pageSize: 18, |
|
||||
current: 1, |
|
||||
lists: [ |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
// 改变单当前页数 |
|
||||
onShowSizeChange(current, size) { |
|
||||
this.current = current; |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
|
|
||||
.center-btn { |
|
||||
position: absolute; |
|
||||
left: 26.2%; |
|
||||
bottom: 100px; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
float: right; |
|
||||
} |
|
||||
|
|
||||
.c-box { |
|
||||
background: none !important; |
|
||||
} |
|
||||
|
|
||||
.big-btn { |
|
||||
width: 213px; |
|
||||
height: 166px; |
|
||||
background: #13ACC4; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.big-con { |
|
||||
width: 96px; |
|
||||
height: 31px; |
|
||||
font-size: 24px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
line-height: 31px; |
|
||||
color: #FFFFFF; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.margin-0 { |
|
||||
margin-right: 0 !important; |
|
||||
} |
|
||||
|
|
||||
.ent-box { |
|
||||
width: 26%; |
|
||||
margin-right: 11%; |
|
||||
position: relative; |
|
||||
height: 56px; |
|
||||
line-height: 56px; |
|
||||
padding: 0 14px; |
|
||||
background: #FFFFFF; |
|
||||
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
opacity: 1; |
|
||||
margin-bottom: 20px; |
|
||||
} |
|
||||
|
|
||||
.ent-index { |
|
||||
width: 28px; |
|
||||
position: absolute; |
|
||||
top: 14px; |
|
||||
line-height: 28px; |
|
||||
text-align: center; |
|
||||
font-size: 20px; |
|
||||
font-family: Segoe UI; |
|
||||
color: #FFFFFF; |
|
||||
height: 28px; |
|
||||
border-radius: 50%; |
|
||||
background: #13ACC4; |
|
||||
margin-bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.ent-name { |
|
||||
font-size: 20px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
line-height: 24px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.reg-box { |
|
||||
position: absolute; |
|
||||
left: 26.2%; |
|
||||
bottom: 100px; |
|
||||
width: 64.8%; |
|
||||
overflow: hidden; |
|
||||
} |
|
||||
|
|
||||
.join-us-box { |
|
||||
width: 100%; |
|
||||
position: relative; |
|
||||
|
|
||||
.material-box { |
|
||||
width: 100%; |
|
||||
height: 88px; |
|
||||
position: absolute; |
|
||||
top: 0px; |
|
||||
left: 0px; |
|
||||
|
|
||||
.material { |
|
||||
width: 10%; |
|
||||
height: 100%; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,228 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="top-box"> |
|
||||
<div class="top-title">虚拟众创空间</div> |
|
||||
<div |
|
||||
class="top-content" |
|
||||
>虚拟众创空间主要面向非入驻实体空间从事功能食品、生物医药和大健康产业相关研发服务和生产的企业。虚拟众创空间依托绿谷数字化平台进行建设,入驻企业可享受实体众创空间的各种创新创业服务,参加相关创新创业活动。</div> |
|
||||
</div> |
|
||||
<div class="center-box"> |
|
||||
<div class="center-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">加入流程</div> |
|
||||
</div> |
|
||||
<div class="center-content"> |
|
||||
<div class="join-us-box"> |
|
||||
<img class="fill-width" src="~assets/join-us.png" /> |
|
||||
<div class="material-box d-flex flex-row justify-center"> |
|
||||
<a-tooltip placement="top"> |
|
||||
<template slot="title"> |
|
||||
<div> |
|
||||
<p>资料:</p> |
|
||||
<p>1.入孵申请表</p> |
|
||||
<p>2.营业执照复印件(尚未注册的无须提供,未注册提供注册信息登记表)</p> |
|
||||
<p>3.法定代表或授权代表身份证复印件</p> |
|
||||
<p>4.主导产品或技术简介</p> |
|
||||
</div> |
|
||||
</template> |
|
||||
<div class="material"></div> |
|
||||
</a-tooltip> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<!-- <a-button class="center-btn" type="primary">申请加入</a-button> --> |
|
||||
<add-model :value="3" class="center-btn" style="height: 32px" /> |
|
||||
</div> |
|
||||
<div class="center-box c-box" style="margin-bottom: 160px"> |
|
||||
<div class="center-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">入驻企业名录</div> |
|
||||
</div> |
|
||||
<div class="center-content"> |
|
||||
<div class="d-flex flex-wrap"> |
|
||||
<div |
|
||||
:class="(index + 1) % 3 === 0 ? 'margin-0' : ''" |
|
||||
:key="index" |
|
||||
class="ent-box" |
|
||||
v-for="(item, index) in lists" |
|
||||
> |
|
||||
<p class="ent-index">{{ index + 1 }}</p> |
|
||||
<span class="ent-name" style="margin-left: 50px">{{ item }}</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="reg-box"> |
|
||||
<a-button class style="float: left" type="primary">入驻企业注册</a-button> |
|
||||
<a-pagination |
|
||||
:current="current" |
|
||||
:page-size="pageSize" |
|
||||
:total="lists.length" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="lists.length > 18" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import HNav from '../../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import AddModel from './../../components/AddModel.vue'; |
|
||||
export default { |
|
||||
name: 'VirtualSpace', |
|
||||
components: { HNav, BreadCrumb, AddModel }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '虚拟众创空间', |
|
||||
arr: [ |
|
||||
{ name: '孵化平台', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '众创空间', url: '/IncubationPlatform/MakerSpace' }, |
|
||||
{ name: '虚拟众创空间', url: '' }, |
|
||||
], |
|
||||
list: [], |
|
||||
pageSize: 18, |
|
||||
current: 1, |
|
||||
lists: [ |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
'XX企业', |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
// 改变单当前页数 |
|
||||
onShowSizeChange(current, size) { |
|
||||
this.current = current; |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
|
|
||||
.center-btn { |
|
||||
position: absolute; |
|
||||
left: 26.2%; |
|
||||
bottom: 100px; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
float: right; |
|
||||
} |
|
||||
|
|
||||
.c-box { |
|
||||
background: none !important; |
|
||||
} |
|
||||
|
|
||||
.big-btn { |
|
||||
width: 213px; |
|
||||
height: 166px; |
|
||||
background: #13ACC4; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.big-con { |
|
||||
width: 96px; |
|
||||
height: 31px; |
|
||||
font-size: 24px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
line-height: 31px; |
|
||||
color: #FFFFFF; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.margin-0 { |
|
||||
margin-right: 0 !important; |
|
||||
} |
|
||||
|
|
||||
.ent-box { |
|
||||
width: 26%; |
|
||||
margin-right: 11%; |
|
||||
position: relative; |
|
||||
height: 56px; |
|
||||
line-height: 56px; |
|
||||
padding: 0 14px; |
|
||||
background: #FFFFFF; |
|
||||
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
opacity: 1; |
|
||||
margin-bottom: 20px; |
|
||||
} |
|
||||
|
|
||||
.ent-index { |
|
||||
width: 28px; |
|
||||
position: absolute; |
|
||||
top: 14px; |
|
||||
line-height: 28px; |
|
||||
text-align: center; |
|
||||
font-size: 20px; |
|
||||
font-family: Segoe UI; |
|
||||
color: #FFFFFF; |
|
||||
height: 28px; |
|
||||
border-radius: 50%; |
|
||||
background: #13ACC4; |
|
||||
margin-bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.ent-name { |
|
||||
font-size: 20px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
line-height: 24px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.reg-box { |
|
||||
position: absolute; |
|
||||
left: 26.2%; |
|
||||
bottom: 100px; |
|
||||
width: 64.8%; |
|
||||
overflow: hidden; |
|
||||
} |
|
||||
|
|
||||
.join-us-box { |
|
||||
width: 100%; |
|
||||
position: relative; |
|
||||
|
|
||||
.material-box { |
|
||||
width: 100%; |
|
||||
height: 88px; |
|
||||
position: absolute; |
|
||||
top: 0px; |
|
||||
left: 0px; |
|
||||
|
|
||||
.material { |
|
||||
width: 10%; |
|
||||
height: 100%; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,14 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<router-view></router-view> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'IncubationPlatform', |
|
||||
data() { |
|
||||
return {}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
@ -1,292 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<img |
|
||||
@click="showModal" |
|
||||
class="fill-width fill-height pointer" |
|
||||
src="https://www.sxwikionline.com/gateway/greenvalley/uploads/upload/logo/join-space.png" |
|
||||
v-if="value === 1" |
|
||||
/> |
|
||||
<a-button @click="showModal" style="height: 100%; width: 100%" type="primary" v-else>{{ str }}</a-button> |
|
||||
<a-modal |
|
||||
:confirm-loading="confirmLoading" |
|
||||
:title="title" |
|
||||
:visible="visible" |
|
||||
@cancel="handleCancel" |
|
||||
@ok="handleOk" |
|
||||
width="50%" |
|
||||
> |
|
||||
<p style="text-align: center" v-show="value !== 1"> |
|
||||
<a-radio-group style="margin-bottom: 20px !important" v-model="value"> |
|
||||
<a-radio :value="2" style="margin-right: 100px">实体空间</a-radio> |
|
||||
<a-radio :value="3">虚拟空间</a-radio> |
|
||||
</a-radio-group> |
|
||||
</p> |
|
||||
<a-form :form="form"> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="公司名称" |
|
||||
> |
|
||||
<a-input placeholder="请输入公司名称..." v-model.trim="platform.companyName" /> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="联系人" |
|
||||
required |
|
||||
> |
|
||||
<a-input placeholder="请输入联系人..." v-model.trim="platform.manName" /> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="联系电话" |
|
||||
required |
|
||||
> |
|
||||
<a-input |
|
||||
@change="changePhone" |
|
||||
placeholder="请输入联系电话.." |
|
||||
type="tel" |
|
||||
v-decorator="['tel', { rules: phoneRules }]" |
|
||||
/> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="图片验证码" |
|
||||
required |
|
||||
> |
|
||||
<div class="d-flex flex-nowrap"> |
|
||||
<a-input placeholder="图片验证码" type="number" v-model="codeNum" /> |
|
||||
<img |
|
||||
:src="picCode.imageBase64" |
|
||||
@click="changePicCode" |
|
||||
class="code_img ml-2" |
|
||||
v-if="picCode && picCode.imageBase64" |
|
||||
/> |
|
||||
<a-button @click="changePicCode" class="code_img ml-2" size="small" v-else>获取验证码</a-button> |
|
||||
<!-- <a-input v-decorator="['account', { rules: rules.account }]" /> --> |
|
||||
</div> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="短信验证码" |
|
||||
required |
|
||||
> |
|
||||
<div class="d-flex flex-nowrap"> |
|
||||
<a-input placeholder="请输入验证码" type="number" v-model="platform.code" /> |
|
||||
<a-button |
|
||||
class="code_img ml-2" |
|
||||
disabled |
|
||||
type="primary" |
|
||||
v-if="showInterval" |
|
||||
>重新发送 {{ interval }}</a-button> |
|
||||
<a-button |
|
||||
:disabled="platform.isTel === false" |
|
||||
@click="getCode" |
|
||||
class="code_img ml-2" |
|
||||
type="primary" |
|
||||
v-else |
|
||||
>获取验证码</a-button> |
|
||||
</div> |
|
||||
</a-form-item> |
|
||||
<a-form-item |
|
||||
:label-col="formItemLayout.labelCol" |
|
||||
:wrapper-col="formItemLayout.wrapperCol" |
|
||||
label="合作信息简述" |
|
||||
required |
|
||||
> |
|
||||
<a-textarea |
|
||||
placeholder="请输入合作信息简述..." |
|
||||
style="height: 120px" |
|
||||
v-model.trim="platform.describe" |
|
||||
/> |
|
||||
</a-form-item> |
|
||||
</a-form> |
|
||||
</a-modal> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapActions } from 'vuex'; |
|
||||
import { JoinPlatform } from 'config/api'; |
|
||||
const formItemLayout = { |
|
||||
labelCol: { span: 5 }, |
|
||||
wrapperCol: { span: 18 }, |
|
||||
}; |
|
||||
const formTailLayout = { |
|
||||
labelCol: { span: 6 }, |
|
||||
wrapperCol: { span: 18, offset: 6 }, |
|
||||
}; |
|
||||
export default { |
|
||||
name: 'AddModel', |
|
||||
props: { |
|
||||
value: { |
|
||||
type: Number, |
|
||||
default: 1, |
|
||||
}, |
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
form: this.$form.createForm(this, { name: 'submit' }), |
|
||||
visible: false, |
|
||||
title: '申请加入', |
|
||||
str: '申请加入', |
|
||||
formItemLayout, |
|
||||
formTailLayout, |
|
||||
confirmLoading: false, |
|
||||
platform: { |
|
||||
companyName: '', // 公司名称 |
|
||||
manName: '', // 联系人 |
|
||||
tel: '', // 联系电话 |
|
||||
describe: '', // 项目描述 |
|
||||
code: '', // 验证码 |
|
||||
isTel: false, |
|
||||
}, |
|
||||
codeRules: [ |
|
||||
{ required: true, message: '请输入验证码' }, |
|
||||
{ min: 4, max: 4, message: '请输入4位短信验证码' }, |
|
||||
], |
|
||||
codeNum: '', |
|
||||
showInterval: false, |
|
||||
codeTimer: null, |
|
||||
interval: 120, // 验证码有效时间倒计时 |
|
||||
phoneRules: [ |
|
||||
{ required: true, pattern: new RegExp(/^[1][3,4,5,6,7,8,9][0-9]{9}$/), whitespace: true, message: '请输入正确的手机号' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('user', ['picCode']), |
|
||||
async created() { |
|
||||
this.sendPicCode(); |
|
||||
await this.getUserSer(); |
|
||||
if (this.userSer) { |
|
||||
if (this.userSer.name) { |
|
||||
this.platform.manName = this.userSer.name; |
|
||||
} |
|
||||
if (this.userSer.phone) { |
|
||||
this.platform.tel = this.userSer.phone; |
|
||||
} |
|
||||
if (this.userSer.companyName) { |
|
||||
this.platform.companyName = this.userSer.companyName; |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapActions('user', ['sendCode', 'sendPicCode']), |
|
||||
...mapActions('home', ['getUserSer']), |
|
||||
// 显示表单输入框 |
|
||||
showModal() { |
|
||||
this.visible = true; |
|
||||
}, |
|
||||
// 取消显示 |
|
||||
handleCancel(e) { |
|
||||
this.visible = false; |
|
||||
}, |
|
||||
// 验证电话 |
|
||||
changePhone(e) { |
|
||||
this.platform.tel = e.target.value; |
|
||||
this.platform.isTel = /^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(this.platform.tel); |
|
||||
}, |
|
||||
// 点击确定 |
|
||||
handleOk() { |
|
||||
if (!this.platform.manName) { |
|
||||
this.$message.error('请输入联系人'); |
|
||||
} else if (!this.platform.tel) { |
|
||||
this.$message.error('请输入联系电话'); |
|
||||
} else if (!this.platform.code) { |
|
||||
this.$message.error('请输入验证码'); |
|
||||
} else if (!this.platform.describe) { |
|
||||
this.$message.error('请输入项目信息简述'); |
|
||||
} else { |
|
||||
if (this.platform.isTel) { |
|
||||
this.subMitAdd(); |
|
||||
} else { |
|
||||
this.$message.error('请输入正确的联系电话'); |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
// 加入接口 |
|
||||
async subMitAdd() { |
|
||||
this.confirmLoading = true; |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
code: this.platform.code, |
|
||||
companyName: this.platform.companyName, |
|
||||
contactName: this.platform.manName, |
|
||||
contactPhone: this.platform.tel, |
|
||||
description: this.platform.describe, |
|
||||
type: this.value, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await JoinPlatform(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.$message.success('申请成功'); |
|
||||
this.visible = false; |
|
||||
this.confirmLoading = false; |
|
||||
for (let key in this.platform) { |
|
||||
this.platform[key] = ''; |
|
||||
} |
|
||||
this.platform.isTel = false; |
|
||||
} else { |
|
||||
throw msg; |
|
||||
this.confirmLoading = false; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
this.$message.error(error); |
|
||||
this.confirmLoading = false; |
|
||||
} |
|
||||
}, |
|
||||
// 获取验证码 |
|
||||
async getCode() { |
|
||||
console.log(111); |
|
||||
try { |
|
||||
const params = { |
|
||||
phone: this.platform.tel, |
|
||||
verificationCodeId: this.picCode.verificationCodeId, |
|
||||
verificationCodeValue: this.codeNum, |
|
||||
}; |
|
||||
await this.sendCode(params); |
|
||||
this.getCodeInterval(); |
|
||||
} catch (error) { |
|
||||
// throw new Error(`SignIn.vue method getCode: ${error}`); |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
// 验证码倒计时 |
|
||||
getCodeInterval() { |
|
||||
this.showInterval = true; |
|
||||
this.codeTimer = setInterval(() => { |
|
||||
if (this.interval === 0) { |
|
||||
clearInterval(this.codeTimer); |
|
||||
this.codeTimer = null; |
|
||||
this.showInterval = false; |
|
||||
this.interval = 120; |
|
||||
return; |
|
||||
} |
|
||||
this.interval = this.interval - 1; |
|
||||
}, 1000); |
|
||||
}, |
|
||||
|
|
||||
// 刷新验证码 |
|
||||
changePicCode() { |
|
||||
this.sendPicCode(); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.must-color { |
|
||||
color: red; |
|
||||
} |
|
||||
|
|
||||
.code_img { |
|
||||
height: 32px; |
|
||||
width: 120px; |
|
||||
} |
|
||||
</style> |
|
@ -1,68 +0,0 @@ |
|||||
<template> |
|
||||
<div class="nav-box d-flex"> |
|
||||
<div |
|
||||
:class="activeNum === index ? 'nav-box-active' : ''" |
|
||||
:key="index" |
|
||||
@click="jump(item.url)" |
|
||||
v-for="(item, index) in list" |
|
||||
>{{ item.title }}</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'HNav', |
|
||||
data() { |
|
||||
return { |
|
||||
activeNum: 0, |
|
||||
list: [ |
|
||||
{ |
|
||||
title: '众创空间', |
|
||||
url: '/IncubationPlatform/MakerSpace', |
|
||||
}, |
|
||||
// { |
|
||||
// title: '公共实验室', |
|
||||
// url: '/IncubationPlatform/PublicLaboratory', |
|
||||
// }, |
|
||||
// { |
|
||||
// title: '中试基地', |
|
||||
// url: '/IncubationPlatform/PilotBase', |
|
||||
// }, |
|
||||
// { |
|
||||
// title: '创业导师', |
|
||||
// url: '/IncubationPlatform/Tutor', |
|
||||
// }, |
|
||||
{ |
|
||||
title: '创业服务', |
|
||||
url: '/IncubationPlatform/Services', |
|
||||
}, |
|
||||
{ |
|
||||
title: '产品展示', |
|
||||
url: '/IncubationPlatform/Products', |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
console.log(); |
|
||||
if (this.$route.fullPath === '/IncubationPlatform/Services') { |
|
||||
this.activeNum = 1; |
|
||||
} else if (this.$route.fullPath === '/IncubationPlatform/Products') { |
|
||||
this.activeNum = 2; |
|
||||
} else { |
|
||||
this.activeNum = 0; |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
jump(url) { |
|
||||
if (this.$route.fullPath === url) { |
|
||||
// this.$message.success('已在当前界面'); |
|
||||
} else { |
|
||||
this.$router.push(url); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped></style> |
|
@ -1,37 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div> |
|
||||
<derive-enterprise :title="title" :type-of-platform="typeOfPlatform" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import HNav from './components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import DeriveEnterprise from 'components/Introduce/DeriveEnterprise.vue'; |
|
||||
export default { |
|
||||
name: 'Enterprise', |
|
||||
components: { HNav, BreadCrumb, DeriveEnterprise }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '衍生企业', |
|
||||
typeOfPlatform: '产业平台', |
|
||||
arr: [ |
|
||||
{ name: '产业平台', url: '/Challenge/Union' }, |
|
||||
{ name: '衍生企业', url: '' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
</style> |
|
@ -1,121 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="flow-path"> |
|
||||
<div class="flow-title">服务流程</div> |
|
||||
<div class="flow-content"> |
|
||||
<img src="~assets/image.png" style="width:100%" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="inner d-flex flex-wrap" style="margin: 60px auto"> |
|
||||
<div |
|
||||
:class="(index + 1) % 3 === 0 ? 'margin-0' : ''" |
|
||||
:key="index" |
|
||||
class="item-box mb-8" |
|
||||
v-for="(item, index) in list" |
|
||||
> |
|
||||
<img :src="item.picUrl" style="height: 220px; width: 100%; border: 1px solid #ccc" /> |
|
||||
<p class="font-24 my-4">{{ item.name }}</p> |
|
||||
<p class="font-16 my-4 textColor line-height-30 item-content">{{ item.intro }}</p> |
|
||||
<p |
|
||||
@click="jump(item.id)" |
|
||||
class="font-16 baseColor" |
|
||||
style="text-align: right; cursor: pointer" |
|
||||
>了解更多→</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapMutations } from 'vuex'; |
|
||||
import { selService } from 'config/api'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './components/HNav.vue'; |
|
||||
export default { |
|
||||
name: 'Serve', |
|
||||
components: { HNav, Banner, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '产业服务', |
|
||||
typeOfPlatform: '产业平台', |
|
||||
arr: [ |
|
||||
{ name: '产业平台', url: '/Challenge/Union' }, |
|
||||
{ name: '产业服务', url: '/Industry/Serve' }, |
|
||||
], |
|
||||
showPage: 52, |
|
||||
list: [], |
|
||||
current: 1, |
|
||||
pageSize: 8, |
|
||||
total: 0, |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
this.getService(); |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapMutations('home', ['setServiceArr']), |
|
||||
// 获取服务列表 |
|
||||
async getService() { |
|
||||
try { |
|
||||
const params = { param: { serviceType: 3 } }; |
|
||||
const res = await selService(params); |
|
||||
const { code, data, msg } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.list = data; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(data); |
|
||||
} |
|
||||
}, |
|
||||
// 查看 服务 详情 |
|
||||
jump(id) { |
|
||||
this.setServiceArr([]); |
|
||||
this.setServiceArr(this.arr); |
|
||||
this.$router.push({ |
|
||||
path: '/NewPlatform/ServiceDet', |
|
||||
name: 'ServiceDet', |
|
||||
params: { id }, |
|
||||
}); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
margin: 40px 0; |
|
||||
text-align: right; |
|
||||
} |
|
||||
|
|
||||
.item-box { |
|
||||
position: relative; |
|
||||
width: 26%; |
|
||||
margin-right: 11%; |
|
||||
border-radius: 4px; |
|
||||
} |
|
||||
|
|
||||
.margin-0 { |
|
||||
margin-right: 0 !important; |
|
||||
} |
|
||||
|
|
||||
.item-content { |
|
||||
display: -webkit-box; |
|
||||
overflow: hidden; |
|
||||
white-space: normal !important; |
|
||||
text-overflow: ellipsis; |
|
||||
word-wrap: break-word; |
|
||||
-webkit-line-clamp: 2; |
|
||||
-webkit-box-orient: vertical; |
|
||||
height: 60px; |
|
||||
} |
|
||||
</style> |
|
@ -1,184 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="top-box"> |
|
||||
<div class="top-title">产业创新联盟</div> |
|
||||
<div class="top-content"> |
|
||||
山西绿谷生物科技股份有限公司立足功能食品、生物医药和大健康产业,聚焦“创新”、聚力“孵化”、聚合“产业”, |
|
||||
致力建设集创新链、孵化链和产业链为一体,产学研协同、多学科交叉、大中小企业融通、 |
|
||||
线上线下相结合的融合发展机制和开放式创新创业平台,培育打造全链条一体化新型社会研发机构和创新创业生态系统, |
|
||||
构筑专业化、集群化、园区化、产业发展新模式和新业态。公司秉持“创新、开放、协同、融合”发展理 |
|
||||
念,以“赋能健康中国,筑梦绿色未来”为愿景,以“构建创新创业生态,发展特色产业集群,打造全链条一体化开放 |
|
||||
式创新创业高地”为使命,大力推动建设“共融共生,共建 共创”价值共同体。 |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="center-box"> |
|
||||
<div class="center-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">加入流程</div> |
|
||||
</div> |
|
||||
<div class="center-content"> |
|
||||
山西绿谷生物科技股份有限公司立足功能食品、生物医药和大健康产业,聚焦“创新”、聚力“孵化”、聚合“产业”, |
|
||||
致力建设集创新链、孵化链和产业链为一体,产学研协同、多学科交叉、大中小企业融通、 |
|
||||
线上线下相结合的融合发展机制和开放式创新创业平台,培育打造全链条一体化新型社会研发机构和创新创业生态系统, |
|
||||
构筑专业化、集群化、园区化、产业发展新模式和新业态。公司秉持“创新、开放、协同、融合”发展理 |
|
||||
念,以“赋能健康中国,筑梦绿色未来”为愿景,以“构建创新创业生态,发展特色产业集群,打造全链条一体化开放 |
|
||||
式创新创业高地”为使命,大力推动建设“共融共生,共建 共创”价值共同体。 |
|
||||
</div> |
|
||||
<new-model class="center-btn" /> |
|
||||
<!-- <a-button class="center-btn" type="primary">申请加入</a-button> --> |
|
||||
</div> |
|
||||
<div class="center-box c-box" style="margin-bottom: 160px"> |
|
||||
<div class="center-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">联盟名录</div> |
|
||||
</div> |
|
||||
<div class="center-content"> |
|
||||
<div class="d-flex flex-wrap"> |
|
||||
<div |
|
||||
:class="(index + 1) % 3 === 0 ? 'margin-0' : ''" |
|
||||
:key="index" |
|
||||
class="ent-box" |
|
||||
v-for="(item, index) in lists" |
|
||||
> |
|
||||
<p class="ent-index">{{ index + 1 }}</p> |
|
||||
<span class="ent-name" style="margin-left: 50px">{{ item }}</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="reg-box"> |
|
||||
<a-button class style="float: left" type="primary">入驻企业注册</a-button> |
|
||||
<a-pagination |
|
||||
:current="current" |
|
||||
:page-size="pageSize" |
|
||||
:total="lists.length" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="lists.length > 18" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import HNav from './components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import NewModel from '../../NewPlatform/components/NewModel.vue'; |
|
||||
export default { |
|
||||
name: 'Union', |
|
||||
components: { HNav, BreadCrumb, NewModel }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '产业创新联盟', |
|
||||
typeOfPlatform: '产业平台', |
|
||||
arr: [ |
|
||||
{ name: '产业平台', url: '/Challenge/Union' }, |
|
||||
{ name: '产业创新联盟', url: '' }, |
|
||||
], |
|
||||
list: [], |
|
||||
pageSize: 18, |
|
||||
current: 1, |
|
||||
lists: ['XX企业', 'XX企业', 'XX企业', 'XX企业', 'XX企业', 'XX企业', 'XX企业', 'XX企业', 'XX企业'], |
|
||||
}; |
|
||||
}, |
|
||||
methods: { |
|
||||
// 改变单当前页数 |
|
||||
onShowSizeChange(current, size) { |
|
||||
this.current = current; |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
|
|
||||
.center-btn { |
|
||||
position: absolute; |
|
||||
left: 26.2%; |
|
||||
bottom: 100px; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
float: right; |
|
||||
} |
|
||||
|
|
||||
.c-box { |
|
||||
background: none !important; |
|
||||
} |
|
||||
|
|
||||
.big-btn { |
|
||||
width: 213px; |
|
||||
height: 166px; |
|
||||
background: #13ACC4; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.big-con { |
|
||||
width: 96px; |
|
||||
height: 31px; |
|
||||
font-size: 24px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
line-height: 31px; |
|
||||
color: #FFFFFF; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.margin-0 { |
|
||||
margin-right: 0 !important; |
|
||||
} |
|
||||
|
|
||||
.ent-box { |
|
||||
width: 26%; |
|
||||
margin-right: 11%; |
|
||||
position: relative; |
|
||||
height: 56px; |
|
||||
line-height: 56px; |
|
||||
padding: 0 14px; |
|
||||
background: #FFFFFF; |
|
||||
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
opacity: 1; |
|
||||
margin-bottom: 20px; |
|
||||
} |
|
||||
|
|
||||
.ent-index { |
|
||||
width: 28px; |
|
||||
position: absolute; |
|
||||
top: 14px; |
|
||||
line-height: 28px; |
|
||||
text-align: center; |
|
||||
font-size: 20px; |
|
||||
font-family: Segoe UI; |
|
||||
color: #FFFFFF; |
|
||||
height: 28px; |
|
||||
border-radius: 50%; |
|
||||
background: #13ACC4; |
|
||||
margin-bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.ent-name { |
|
||||
font-size: 20px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
line-height: 24px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.reg-box { |
|
||||
position: absolute; |
|
||||
left: 26.2%; |
|
||||
bottom: 100px; |
|
||||
width: 64.8%; |
|
||||
overflow: hidden; |
|
||||
} |
|
||||
</style> |
|
@ -1,54 +0,0 @@ |
|||||
<template> |
|
||||
<div class="nav-box d-flex"> |
|
||||
<div v-for="(item, index) in list" :key="index" :class="activeNum === index ? 'nav-box-active' : ''" @click="jump(item.url)"> |
|
||||
{{ item.title }} |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'HNav', |
|
||||
data() { |
|
||||
return { |
|
||||
str: '导航条', |
|
||||
activeNum: 0, |
|
||||
list: [ |
|
||||
{ |
|
||||
title: '产业创新联盟', |
|
||||
url: '/Industry/Union', |
|
||||
}, |
|
||||
{ |
|
||||
title: '产业服务', |
|
||||
url: '/Industry/Serve', |
|
||||
}, |
|
||||
{ |
|
||||
title: '衍生企业', |
|
||||
url: '/Industry/Enterprise', |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
console.log(); |
|
||||
if (this.$route.fullPath === '/Industry/Serve') { |
|
||||
this.activeNum = 1; |
|
||||
} else if (this.$route.fullPath === '/Industry/Enterprise') { |
|
||||
this.activeNum = 2; |
|
||||
} else { |
|
||||
this.activeNum = 0; |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
jump(url) { |
|
||||
if (this.$route.fullPath === url) { |
|
||||
this.$message.success('已在当前界面'); |
|
||||
} else { |
|
||||
this.$router.push(url); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped></style> |
|
@ -1,14 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<router-view></router-view> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'Industry', |
|
||||
data() { |
|
||||
return {}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
@ -1,213 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: bin |
|
||||
email: binbin0314@126.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<div class="inner"> |
|
||||
<div class="policy-box"> |
|
||||
<div :key="index" class="policy-list" v-for="(item, index) in lists"> |
|
||||
<div @click="jumpDetails(item)" class="date-box pointer" v-if="item.time"> |
|
||||
<p class="date-mon">{{ monthEnglish[item.time.split('-')[1] - 1] }}.</p> |
|
||||
<p class="date-day">{{ item.time.split(' ')[0].split('-')[2] }}</p> |
|
||||
</div> |
|
||||
<p @click="jumpDetails(item)" class="item-title pointer">{{ item.title }}</p> |
|
||||
<p @click="jumpDetails(item)" class="item-content pointer">{{ item.content }}</p> |
|
||||
<p class="source-time"> |
|
||||
<span class="source">时间:{{ item.time }}</span> |
|
||||
<span class="source">地点:{{ item.site }}</span> |
|
||||
</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<a-pagination |
|
||||
:current="current" |
|
||||
:page-size="pageSize" |
|
||||
:total="total" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="total > 5" |
|
||||
/> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations } from 'vuex'; |
|
||||
import { industryInfo } from 'config/api'; |
|
||||
export default { |
|
||||
name: 'ItInformation', |
|
||||
data() { |
|
||||
return { |
|
||||
str: '这是行业资讯界面', |
|
||||
lists: [], |
|
||||
total: 0, |
|
||||
pageSize: 5, |
|
||||
current: 1, |
|
||||
monthEnglish: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Spt', 'Oct', 'Nov', 'Dec'], |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
this.getData(); |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapMutations('home', ['setActDetail']), |
|
||||
async getData() { |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
pageNum: this.current, |
|
||||
pageSize: this.pageSize, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await industryInfo(params); |
|
||||
const { code, data, msg } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.lists = data.list; |
|
||||
this.total = parseInt(data.total); |
|
||||
for (var i = 0; i < this.lists.length; i++) { |
|
||||
// this.lists[i].time = moment(this.lists[i].time).format('YYYY-MM-DD'); |
|
||||
this.lists[i].time = this.$moment(parseInt(this.lists[i].time) * 1000).format('YYYY-MM-DD'); |
|
||||
} |
|
||||
} else { |
|
||||
console.log(msg); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
this.$message.error(error); |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
onShowSizeChange(current) { |
|
||||
this.current = current; |
|
||||
this.getData(); |
|
||||
}, |
|
||||
|
|
||||
// 跳转到详情界面 |
|
||||
jumpDetails(item) { |
|
||||
this.setActDetail(item); |
|
||||
this.$router.push('/ActDetails'); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style scoped lang="stylus"> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
|
|
||||
.policy-box { |
|
||||
.policy-list { |
|
||||
position: relative; |
|
||||
width: 100%; |
|
||||
height: 238px; |
|
||||
overflow: hidden; |
|
||||
background: #fff; |
|
||||
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
margin-top: 24px; |
|
||||
padding: 25px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.item-title { |
|
||||
margin-left: 200px; |
|
||||
overflow: hidden; |
|
||||
display: -webkit-box; |
|
||||
font-size: 24px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
-webkit-line-clamp: 1; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
|
|
||||
.item-content { |
|
||||
margin-left: 200px; |
|
||||
text-indent: 2em; |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.35); |
|
||||
line-height: 36px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
overflow: hidden; |
|
||||
display: -webkit-box; |
|
||||
-webkit-line-clamp: 2; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
|
|
||||
.source { |
|
||||
cursor: pointer; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
opacity: 1; |
|
||||
margin-right: 24px; |
|
||||
} |
|
||||
|
|
||||
.time { |
|
||||
font-size: 14px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
color: rgba(0, 0, 0, 0.25); |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.original { |
|
||||
position: absolute; |
|
||||
right: 25px; |
|
||||
bottom: 25px; |
|
||||
font-size: 14px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
line-height: 22px; |
|
||||
opacity: 1; |
|
||||
margin-bottom: 0; |
|
||||
|
|
||||
span { |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.date-box { |
|
||||
height: 188px !important; |
|
||||
width: 188px !important; |
|
||||
position: absolute !important; |
|
||||
top: 0 !important; |
|
||||
// box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
text-align: center; |
|
||||
box-shadow: none !important; |
|
||||
padding: 25px; |
|
||||
margin-top: 24px; |
|
||||
|
|
||||
p { |
|
||||
margin-bottom: 0 !important; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.date-mon { |
|
||||
font-size: 40px; |
|
||||
height: 40px; |
|
||||
line-height: 40px; |
|
||||
font-weight: 500; |
|
||||
color: #13ACC4; |
|
||||
} |
|
||||
|
|
||||
.date-day { |
|
||||
font-size: 70px; |
|
||||
height: 80px; |
|
||||
line-height: 80px; |
|
||||
font-weight: bold; |
|
||||
color: #13ACC4; |
|
||||
} |
|
||||
|
|
||||
.source-time { |
|
||||
margin-left: 200px; |
|
||||
position: absolute; |
|
||||
bottom: 26px; |
|
||||
margin-bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
margin-top: 68px; |
|
||||
text-align: right; |
|
||||
} |
|
||||
</style> |
|
@ -1,41 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="dev-box"> |
|
||||
<img src="~assets/build.png" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
export default { |
|
||||
name: 'Knowledge', |
|
||||
components: { BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
str: '知识培训服务平台', |
|
||||
title: '知识平台', |
|
||||
typeOfPlatform: '知识平台', |
|
||||
arr: [{ name: '知识平台', url: '/Knowledge' }], |
|
||||
list: [], |
|
||||
}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 20px auto; |
|
||||
} |
|
||||
|
|
||||
.dev-box { |
|
||||
width: 100%; |
|
||||
|
|
||||
img { |
|
||||
width: 100%; |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,171 +0,0 @@ |
|||||
<template> |
|
||||
<div class="inner equ-box"> |
|
||||
<div class="equ-info d-flex"> |
|
||||
<img :src="obj.visitLocation" /> |
|
||||
<div class="equ-info-box mb-5"> |
|
||||
<p class="equ-name">{{ obj.name }}</p> |
|
||||
<div class="d-flex flex-wrap"> |
|
||||
<div class="equ-info-left" style="width: 200px"> |
|
||||
<p>成果名字:</p> |
|
||||
<p>学科分类:</p> |
|
||||
<p>联系人:</p> |
|
||||
<p>联系方式:</p> |
|
||||
<p>转让形式:</p> |
|
||||
<p>成果表现形式:</p> |
|
||||
<p>成果阶段:</p> |
|
||||
</div> |
|
||||
<div style="width: 500px"> |
|
||||
<p>{{ obj.name }}</p> |
|
||||
<p>{{ obj.classification === 0 ? '中医药学' : '' }}</p> |
|
||||
<p> |
|
||||
<span :key="index" v-for="(item, index) in obj.selPeoList">{{ item.contactsName }}</span> |
|
||||
</p> |
|
||||
<p> |
|
||||
<span :key="index" v-for="(item, index) in obj.selPeoList">{{ item.contactsPhone }}</span> |
|
||||
</p> |
|
||||
<p> |
|
||||
{{ obj.layout === 0 ? '产权转让' : |
|
||||
obj.layout === 1 ? '资金入股' : |
|
||||
obj.layout === 2 ? '技术入股' : |
|
||||
obj.layout === 3 ? '合作开发' : |
|
||||
obj.layout === 0 ? '技术服务' : '其他'}} |
|
||||
</p> |
|
||||
<p> |
|
||||
{{ obj.performance === 0 ? '国际标准' : |
|
||||
obj.performance === 1 ? '国家标准' : |
|
||||
obj.performance === 2 ? '行业标准' : |
|
||||
obj.performance === 3 ? '地方标准' : |
|
||||
obj.performance === 4 ? '企业标准' : |
|
||||
obj.performance === 5 ? '新技术' : |
|
||||
obj.performance === 6 ? '新工艺' : |
|
||||
obj.performance === 7 ? '新产品' : |
|
||||
obj.performance === 8 ? '新材料' : |
|
||||
obj.performance === 9 ? '新装备' : |
|
||||
obj.performance === 10 ? '农业、生物新品种' : |
|
||||
obj.performance === 11 ? '矿产新品种' : '其他应用技术'}} |
|
||||
</p> |
|
||||
<p> |
|
||||
{{ obj.stage === 0 ? '初期阶段' : |
|
||||
obj.stage === 1 ? '中期阶段' : '成熟应用阶段' }} |
|
||||
</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="equ-btn"> |
|
||||
<!-- <a-button style="margin-right: 20px">转化意向</a-button> --> |
|
||||
<intention-model :type-data="typeData" style="margin-right: 20px; float: left" /> |
|
||||
<!-- <a-button type="primary">加入购物车</a-button> --> |
|
||||
<add-shopping :type-data="typeData" style="margin-right: 20px; float: right" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="content-box"> |
|
||||
<div v-dompurify-html="obj.content"></div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState } from 'vuex'; |
|
||||
import { selResMes } from 'config/api'; |
|
||||
import IntentionModel from 'components/Introduce/IntentionModel.vue'; |
|
||||
import AddShopping from 'components/Introduce/AddShopping.vue'; |
|
||||
export default { |
|
||||
name: 'AchDet', |
|
||||
components: { IntentionModel, AddShopping }, |
|
||||
data() { |
|
||||
return { |
|
||||
obj: {}, |
|
||||
typeData: { |
|
||||
type: 2, |
|
||||
Id: '', |
|
||||
}, |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('home', ['achId']), |
|
||||
created() { |
|
||||
this.typeData.Id = this.achId; |
|
||||
this.getData(); |
|
||||
}, |
|
||||
methods: { |
|
||||
async getData() { |
|
||||
try { |
|
||||
const params = { param: { id: this.achId } }; |
|
||||
const res = await selResMes(params); |
|
||||
const { code, data, msg } = res.data; |
|
||||
if (code === 200) { |
|
||||
console.log(data); |
|
||||
this.obj = data; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.equ-box { |
|
||||
background: #fff; |
|
||||
padding: 20px; |
|
||||
margin: 60px auto; |
|
||||
} |
|
||||
|
|
||||
.equ-info { |
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.14901960784313725); |
|
||||
position: relative; |
|
||||
|
|
||||
img { |
|
||||
width: 300px; |
|
||||
height: 300px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.equ-name { |
|
||||
font-size: 24px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
line-height: 31px; |
|
||||
color: rgba(0, 0, 0, 0.85); |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.equ-info-box { |
|
||||
position: relative; |
|
||||
font-size: 16px; |
|
||||
margin-left: 20px; |
|
||||
height: 300px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
opacity: 1; |
|
||||
|
|
||||
p { |
|
||||
margin-bottom: 6px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.equ-info-left { |
|
||||
font-size: 16px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
color: rgba(0, 0, 0, 0.45); |
|
||||
opacity: 1; |
|
||||
|
|
||||
p { |
|
||||
margin-bottom: 6px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.equ-btn { |
|
||||
position: absolute; |
|
||||
bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.content-box { |
|
||||
min-height: 400px; |
|
||||
padding: 20px; |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
} |
|
||||
</style> |
|
@ -1,171 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="top-box"> |
|
||||
<div class="top-title">协同创新中心</div> |
|
||||
<div class="top-content"> |
|
||||
<!-- <div class="white pa-5 my-5"> --> |
|
||||
<core-organ :title="title" /> |
|
||||
<!-- </div> --> |
|
||||
</div> |
|
||||
</div> |
|
||||
<!-- <div class="center-box"> |
|
||||
<div class="center-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">组织机构</div> |
|
||||
</div> |
|
||||
<div class="center-content"> |
|
||||
<rich-text :title="title1" /> |
|
||||
</div> |
|
||||
</div>--> |
|
||||
<div class="bottom-box white"> |
|
||||
<div class="bottom-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">中心架构</div> |
|
||||
</div> |
|
||||
<div class="bottom-content"> |
|
||||
<div |
|
||||
class="font-16 textColor line-height-36" |
|
||||
>协同创新中心围绕研发领域设立功能食品、现代医药、生物医学工程及数字健康开发四大协同创新平台,根据研发方向设若干研发单元。</div> |
|
||||
<div :style="{ height: '500px' }" id="treeChart"></div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<!-- <div class="partner-box"> |
|
||||
<div class="partner-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">合作伙伴</div> |
|
||||
</div> |
|
||||
<div class="partner-content"> |
|
||||
<de-ent /> |
|
||||
</div> |
|
||||
</div>--> |
|
||||
<div class="join-box"> |
|
||||
<div class="join-title"> |
|
||||
<div class="circular"></div> |
|
||||
<div style="margin-left: 40px">申请加入</div> |
|
||||
</div> |
|
||||
<div class="join-content"> |
|
||||
申请加入 |
|
||||
<div> |
|
||||
<new-model /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import '@/common/platform.styl'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
// import DeEnt from './components/DeEnt.vue'; |
|
||||
import NewModel from './../components/NewModel.vue'; |
|
||||
// import RichText from 'components/Introduce/RichText.vue'; |
|
||||
import CoreOrgan from 'components/CoreOrgan/CoreOrgan.vue'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Core', |
|
||||
components: { HNav, BreadCrumb, NewModel, CoreOrgan }, |
|
||||
data() { |
|
||||
return { |
|
||||
str: '这是中心界面', |
|
||||
title: '创新平台-协同创新中心', |
|
||||
title1: '创新平台-组织机构', |
|
||||
typeOfPlatform: '创新平台', |
|
||||
arr: [ |
|
||||
{ name: '创新平台', url: '/NewPlatform/NewCore' }, |
|
||||
{ name: '协同创新中心', url: '' }, |
|
||||
], |
|
||||
list: [], |
|
||||
treedata: [ |
|
||||
{ |
|
||||
//一定一定要注意这里有[] |
|
||||
name: '协同创新中心', |
|
||||
children: [ |
|
||||
{ |
|
||||
name: '功能食品协同创新平台', |
|
||||
children: [ |
|
||||
{ name: '功能食品资源开发' }, |
|
||||
{ name: '营养健康功能因子分再鉴定及作用机制探究' }, |
|
||||
{ name: '功能食品关键加工技术研发' }, |
|
||||
{ name: '功能食品安全评价与风险监测' }, |
|
||||
], |
|
||||
}, |
|
||||
{ |
|
||||
name: '现代医药协同创新平台', |
|
||||
children: [ |
|
||||
{ name: '中医药与天然药物资源开发利用' }, |
|
||||
{ name: '医药生物技术' }, |
|
||||
{ name: '新药研发' }, |
|
||||
{ name: '药理药效研究与安全评价' }, |
|
||||
], |
|
||||
}, |
|
||||
{ |
|
||||
name: '生物医学工程协同创新平台', |
|
||||
children: [{ name: '生物信息技术' }, { name: '生物医学工程研发' }, { name: '生物力学和生物材料' }], |
|
||||
}, |
|
||||
{ |
|
||||
name: '数字健康开发协同创新平台', |
|
||||
children: [{ name: '健康医疗大数据挖掘与分析' }, { name: '基于纳米传感器的医疗健康' }, { name: '传染病预测预鉴数字技术' }], |
|
||||
}, |
|
||||
{ name: '科技资源共享服务平台' }, |
|
||||
{ name: '知识产权与技术转移转化服务平台' }, |
|
||||
{ name: '创新服务' }, |
|
||||
], |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
mounted() { |
|
||||
this.showChart(); |
|
||||
}, |
|
||||
methods: { |
|
||||
showChart() { |
|
||||
// 基于准备好的dom,初始化echarts实例 |
|
||||
var myChart = this.$echarts.init(document.getElementById('treeChart')); |
|
||||
// 指定图表的配置项和数据 |
|
||||
var option = { |
|
||||
tooltip: { |
|
||||
trigger: 'item', |
|
||||
triggerOn: 'mousemove', |
|
||||
}, |
|
||||
series: [ |
|
||||
{ |
|
||||
type: 'tree', |
|
||||
data: this.treedata, |
|
||||
top: '2%', |
|
||||
left: '12%', |
|
||||
bottom: '1%', |
|
||||
right: '36%', |
|
||||
symbolSize: 7, |
|
||||
lineStyle: { width: 4 }, |
|
||||
itemStyle: { borderWidth: 3, borderColor: '#AACD06' }, |
|
||||
label: { position: 'left', verticalAlign: 'middle', align: 'right', fontSize: 16 }, |
|
||||
leaves: { |
|
||||
label: { |
|
||||
position: 'right', |
|
||||
verticalAlign: 'middle', |
|
||||
align: 'left', |
|
||||
}, |
|
||||
}, |
|
||||
expandAndCollapse: true, |
|
||||
animationDuration: 550, |
|
||||
animationDurationUpdate: 750, |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
// 使用刚指定的配置项和数据显示图表。 |
|
||||
myChart.setOption(option); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
</style> |
|
@ -1,46 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<sen-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="dev-box"> |
|
||||
<img src="~assets/build.png" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import SenNav from './components/SenNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
export default { |
|
||||
name: 'Develop', |
|
||||
components: { SenNav, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
title: '创新服务', |
|
||||
typeOfPlatform: '创新平台', |
|
||||
arr: [ |
|
||||
{ name: '创新平台', url: '/NewPlatform/NewCore' }, |
|
||||
{ name: '创新资源平台', url: '/NewPlatform/News' }, |
|
||||
{ name: '创新服务', url: '' }, |
|
||||
], |
|
||||
list: [], |
|
||||
}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 20px auto; |
|
||||
} |
|
||||
|
|
||||
.dev-box { |
|
||||
width: 100%; |
|
||||
|
|
||||
img { |
|
||||
width: 100%; |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,85 +0,0 @@ |
|||||
<template> |
|
||||
<div style="padding-bottom: 50px"> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="content-box"> |
|
||||
<div |
|
||||
:key="index" |
|
||||
@click="jump(item.url)" |
|
||||
style="margin-top: 50px; cursor: pointer" |
|
||||
v-for="(item, index) in list" |
|
||||
> |
|
||||
<div class="d-flex justify-space-between" v-if="index % 2 === 0"> |
|
||||
<div class="introduce-box"> |
|
||||
<p class="introduce-title">{{ item.title }}</p> |
|
||||
<p class="introduce-content">{{ item.content }}</p> |
|
||||
</div> |
|
||||
<img :src="item.imgUrl" style="width: 452px" /> |
|
||||
</div> |
|
||||
<div class="d-flex justify-space-between" v-else> |
|
||||
<img :src="item.imgUrl" style="width: 452px" /> |
|
||||
<div class="introduce-box"> |
|
||||
<p class="introduce-title">{{ item.title }}</p> |
|
||||
<p class="introduce-content">{{ item.content }}</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
export default { |
|
||||
name: 'News', |
|
||||
components: { HNav, Banner, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
str: '这是政策界面', |
|
||||
title: '创新资源平台', |
|
||||
typeOfPlatform: '创新平台', |
|
||||
arr: [ |
|
||||
{ name: '创新平台', url: '/NewPlatform/NewCore' }, |
|
||||
{ name: '创新资源平台', url: '' }, |
|
||||
], |
|
||||
showPage: 32, |
|
||||
list: [ |
|
||||
{ |
|
||||
title: '科技资源开放共享服务平台', |
|
||||
content: '研发试验、检验检测、资源共享', |
|
||||
imgUrl: 'https://www.sxwikionline.com/gateway/greenvalley/uploads/upload/20210104/86d502b304944e0c849bff8dcf55ac08.jpg', |
|
||||
url: '/NewPlatform/Share', |
|
||||
}, |
|
||||
{ |
|
||||
title: '知识产权与技术转移转化服务平台', |
|
||||
content: '知识产权、成果转化、技术转移', |
|
||||
imgUrl: 'https://www.sxwikionline.com/gateway/greenvalley/uploads/upload/20210104/4f9b898da25e48d3b73b47345ed14a9a.jpg', |
|
||||
url: '/NewPlatform/Transfer', |
|
||||
}, |
|
||||
{ |
|
||||
title: '知识培训与科技人才服务平台', |
|
||||
content: '技术培训、管理培训、知识讲座', |
|
||||
imgUrl: 'https://www.sxwikionline.com/gateway/greenvalley/uploads/upload/20210104/f5fb570cfd7547279138a591818325e0.jpg', |
|
||||
url: '/NewPlatform/Develop', |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
methods: { |
|
||||
jump(url) { |
|
||||
this.$router.push(url); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
</style> |
|
@ -1,122 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="flow-path"> |
|
||||
<div class="flow-title">服务流程</div> |
|
||||
<div class="flow-content"> |
|
||||
<img src="~assets/image.png" style="width:100%" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="inner d-flex flex-wrap" style="margin: 60px auto"> |
|
||||
<div |
|
||||
:class="(index + 1) % 4 === 0 ? 'margin-0' : ''" |
|
||||
:key="index" |
|
||||
class="item-box mb-8" |
|
||||
v-for="(item, index) in list" |
|
||||
> |
|
||||
<img :src="item.picUrl" style="height: 220px; width: 100%; border: 1px solid #ccc" /> |
|
||||
<p class="font-24 my-4">{{ item.name }}</p> |
|
||||
<p class="font-16 my-4 textColor line-height-30 item-content">{{ item.intro }}</p> |
|
||||
<p |
|
||||
@click="jump(item.id)" |
|
||||
class="font-16 baseColor" |
|
||||
style="text-align: right; cursor: pointer" |
|
||||
>了解更多→</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapMutations } from 'vuex'; |
|
||||
import { selService } from 'config/api'; |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
export default { |
|
||||
name: 'Service', |
|
||||
components: { HNav, Banner, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
str: '这是服务界面', |
|
||||
title: '创新服务', |
|
||||
typeOfPlatform: '创新平台', |
|
||||
arr: [ |
|
||||
{ name: '创新平台', url: '/NewPlatform/NewCore' }, |
|
||||
{ name: '创新服务', url: '/NewPlatform/NewService' }, |
|
||||
], |
|
||||
showPage: 33, |
|
||||
list: [], |
|
||||
current: 1, |
|
||||
pageSize: 8, |
|
||||
total: 0, |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
this.getService(); |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapMutations('home', ['setServiceArr']), |
|
||||
// 获取服务列表 |
|
||||
async getService() { |
|
||||
try { |
|
||||
const params = { param: { serviceType: 1 } }; |
|
||||
const res = await selService(params); |
|
||||
const { code, data, msg } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.list = data; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(data); |
|
||||
} |
|
||||
}, |
|
||||
// 查看 服务 详情 |
|
||||
jump(id) { |
|
||||
this.setServiceArr([]); |
|
||||
this.setServiceArr(this.arr); |
|
||||
this.$router.push({ |
|
||||
path: '/NewPlatform/ServiceDet', |
|
||||
name: 'ServiceDet', |
|
||||
params: { id }, |
|
||||
}); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
margin: 40px 0; |
|
||||
text-align: right; |
|
||||
} |
|
||||
|
|
||||
.item-box { |
|
||||
position: relative; |
|
||||
width: 20.5%; |
|
||||
margin-right: 6%; |
|
||||
border-radius: 4px; |
|
||||
} |
|
||||
|
|
||||
.margin-0 { |
|
||||
margin-right: 0 !important; |
|
||||
} |
|
||||
|
|
||||
.item-content { |
|
||||
display: -webkit-box; |
|
||||
overflow: hidden; |
|
||||
white-space: normal !important; |
|
||||
text-overflow: ellipsis; |
|
||||
word-wrap: break-word; |
|
||||
-webkit-line-clamp: 2; |
|
||||
-webkit-box-orient: vertical; |
|
||||
height: 60px; |
|
||||
} |
|
||||
</style> |
|
@ -1,108 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<div class="inner" style="margin-top:40px"> |
|
||||
<a-breadcrumb> |
|
||||
<a-breadcrumb-item>绿谷生物</a-breadcrumb-item> |
|
||||
<a-breadcrumb-item :key="index" v-for="(item,index) in serviceArr"> |
|
||||
<router-link :to="item.url">{{ item.name }}</router-link> |
|
||||
</a-breadcrumb-item> |
|
||||
</a-breadcrumb> |
|
||||
</div> |
|
||||
<div class="posi-name"> |
|
||||
<p class="service-name">{{ obj.name }}</p> |
|
||||
<p class="service-eng">SERVICE</p> |
|
||||
</div> |
|
||||
<div class="inner service-box"> |
|
||||
<!-- <div style="margin-bottom: 40px" v-dompurify-html="obj.content"></div> --> |
|
||||
<div style="margin-bottom: 40px"> |
|
||||
山西绿谷生物科技股份有限公司立足功能食品、生物医药和大健康产业,聚焦“创新”、聚力“孵化”、聚合“产业”, |
|
||||
致力建设集创新链、孵化链和产业链为一体,产学研协同、多学科交叉、大中小企业融通、线上线下相结合的融合 |
|
||||
发展机制和开放式创新创业平台,培育打造全链条一体化新型社会研发机构和创新创业生态系统,构筑专业化、 |
|
||||
集群化、园区化、产业发展新模式和新业态。公司秉持“创新、开放、协同、融合”发展理 念,以“赋能健康中国, |
|
||||
筑梦绿色未来”为愿景,以“构建创新创业生态,发展特色产业集群,打造全链条一体化开放 式创新创业高地”为使命, |
|
||||
大力推动建设“共融共生,共建 共创”价值共同体。 |
|
||||
</div> |
|
||||
<div> |
|
||||
<!-- <a-button>直接申请</a-button> --> |
|
||||
<intention-model :type-data="typeData" style="float: left; margin-right: 20px" /> |
|
||||
<!-- <a-button type="primary">加入购物车</a-button> --> |
|
||||
<add-shopping :type-data="typeData" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState } from 'vuex'; |
|
||||
import { selContent } from 'config/api'; |
|
||||
import IntentionModel from 'components/Introduce/IntentionModel.vue'; |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import AddShopping from 'components/Introduce/AddShopping.vue'; |
|
||||
export default { |
|
||||
name: 'ServiceDet', |
|
||||
components: { IntentionModel, Banner, AddShopping }, |
|
||||
data() { |
|
||||
return { |
|
||||
showPage: 100, |
|
||||
obj: { |
|
||||
name: '', |
|
||||
id: '', |
|
||||
content: '', |
|
||||
}, |
|
||||
typeData: { |
|
||||
type: 0, |
|
||||
Id: '', |
|
||||
}, |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('home', ['serviceArr']), |
|
||||
|
|
||||
async created() { |
|
||||
this.typeData.Id = this.$route.params.id; |
|
||||
await this.getData(this.$route.params.id); |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
async getData(id) { |
|
||||
try { |
|
||||
const params = { param: { id } }; |
|
||||
const res = await selContent(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
console.log(data); |
|
||||
this.obj = data; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.service-box { |
|
||||
margin: 60px auto; |
|
||||
min-height: 400px; |
|
||||
padding: 20px; |
|
||||
background: #fff; |
|
||||
} |
|
||||
|
|
||||
.posi-name { |
|
||||
position: absolute; |
|
||||
left: 20%; |
|
||||
top: 300px; |
|
||||
color: #fff; |
|
||||
text-align: center; |
|
||||
} |
|
||||
|
|
||||
.service-name { |
|
||||
font-size: 40px; |
|
||||
margin-bottom: 0 !important; |
|
||||
} |
|
||||
|
|
||||
.service-eng { |
|
||||
font-size: 16px; |
|
||||
} |
|
||||
</style> |
|
@ -1,231 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<sen-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div> |
|
||||
<div class="search-background"> |
|
||||
<div class="d-flex"> |
|
||||
<div class="flex-3 flex-wrap"> |
|
||||
<span class="ins-title">研究开发实验室:</span> |
|
||||
<span |
|
||||
v-for="(item, index) in laboratory" |
|
||||
:key="index" |
|
||||
:class="item.isActive ? 'act-color' : ''" |
|
||||
class="ins-name" |
|
||||
@click="choose(index, 0)" |
|
||||
> |
|
||||
{{ item.name }} |
|
||||
</span> |
|
||||
</div> |
|
||||
<div class="flex-1 align-center"> |
|
||||
<a-input-search class="item-search" v-model="LabIpt" placeholder="搜索实验室" enter-button="搜索" @search="searchLab" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div style="border-top: 1px solid rgba(0, 0, 0, 0.06)" class="flex-3 flex-wrap"> |
|
||||
<div class="flex-3 flex-wrap"> |
|
||||
<span class="ins-title">大型科研设施与仪器:</span> |
|
||||
<span |
|
||||
v-for="(item, index) in instrument" |
|
||||
:key="index" |
|
||||
:class="item.isActive ? 'act-color' : ''" |
|
||||
class="ins-name" |
|
||||
@click="choose(index, 1)" |
|
||||
> |
|
||||
{{ item.name }} |
|
||||
</span> |
|
||||
</div> |
|
||||
<div class="flex-1 align-center"> |
|
||||
<a-input-search class="item-search" v-model="InsIpt" placeholder="搜索仪器" enter-button="搜索" @search="searchIns" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<platform-list /> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { selModel } from 'config/api'; |
|
||||
import PlatformList from 'components/PlatformList/PlatformList.vue'; |
|
||||
import SenNav from './components/SenNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import { mapMutations } from 'vuex'; |
|
||||
export default { |
|
||||
name: 'Share', |
|
||||
components: { SenNav, PlatformList, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
str: '这是科技资源开放共享服务平台', |
|
||||
title: '科技资源开放共享服务平台', |
|
||||
typeOfPlatform: '创新平台', |
|
||||
arr: [ |
|
||||
{ name: '创新平台', url: '/NewPlatform/NewCore' }, |
|
||||
{ name: '创新资源平台', url: '/NewPlatform/News' }, |
|
||||
{ name: '科技资源开放共享服务平台', url: '' }, |
|
||||
], |
|
||||
LabIpt: '', // 实验室搜索框内容 |
|
||||
laboratory: [], // 实验室 |
|
||||
labList: [], // 实验室类型选择列表 |
|
||||
InsIpt: '', // 仪器搜索框内容 |
|
||||
instrument: [], // 仪器 |
|
||||
insList: [], // 仪器类型选择列表 |
|
||||
}; |
|
||||
}, |
|
||||
watch: { |
|
||||
LabIpt(val) { |
|
||||
const obj = { |
|
||||
content: this.LabIpt, |
|
||||
isBtn: 0, |
|
||||
}; |
|
||||
this.setLabIpt(obj); |
|
||||
}, |
|
||||
InsIpt(val) { |
|
||||
const obj = { |
|
||||
content: this.InsIpt, |
|
||||
isBtn: 0, |
|
||||
}; |
|
||||
this.setInsIpt(obj); |
|
||||
}, |
|
||||
}, |
|
||||
created() { |
|
||||
const obj = { |
|
||||
content: '', |
|
||||
isBtn: 0, |
|
||||
}; |
|
||||
this.setLabList([]); |
|
||||
this.setInsList([]); |
|
||||
this.setLabIpt(obj); |
|
||||
this.setInsIpt(obj); |
|
||||
this.getType(1); |
|
||||
this.getType(2); |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapMutations('home', ['setLabList', 'setInsList', 'setLabIpt', 'setInsIpt', 'setListState']), |
|
||||
async getType(num) { |
|
||||
try { |
|
||||
const params = { param: { model: num } }; |
|
||||
const res = await selModel(params); |
|
||||
const { code, mst, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
if (num === 1) { |
|
||||
this.instrument = data; |
|
||||
for (let i = 0; i < this.instrument.length; i++) { |
|
||||
this.instrument[i].isActive = false; |
|
||||
} |
|
||||
} else if (num === 2) { |
|
||||
this.laboratory = data; |
|
||||
for (let i = 0; i < this.laboratory.length; i++) { |
|
||||
this.laboratory[i].isActive = false; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
// 选中类型时触发 |
|
||||
choose(index, num) { |
|
||||
const that = this; |
|
||||
if (num === 0) { |
|
||||
this.labList = []; |
|
||||
const { laboratory, instrument } = this; |
|
||||
for (let i = 0; i < instrument.length; i++) { |
|
||||
instrument[i].isActive = false; |
|
||||
} |
|
||||
this.setListState(0); |
|
||||
laboratory[index].isActive = !laboratory[index].isActive; |
|
||||
this.laboratory = [...laboratory]; |
|
||||
for (let i = 0; i < laboratory.length; i++) { |
|
||||
if (laboratory[i].isActive) { |
|
||||
this.labList.push(laboratory[i].id); |
|
||||
} |
|
||||
} |
|
||||
this.setLabList(this.labList); |
|
||||
} else if (num === 1) { |
|
||||
this.insList = []; |
|
||||
const { laboratory, instrument } = this; |
|
||||
for (let i = 0; i < laboratory.length; i++) { |
|
||||
laboratory[i].isActive = false; |
|
||||
} |
|
||||
this.setListState(1); |
|
||||
instrument[index].isActive = !instrument[index].isActive; |
|
||||
this.instrument = [...instrument]; |
|
||||
for (let i = 0; i < instrument.length; i++) { |
|
||||
if (instrument[i].isActive) { |
|
||||
this.insList.push(instrument[i].id); |
|
||||
} |
|
||||
} |
|
||||
this.setInsList(this.insList); |
|
||||
} |
|
||||
}, |
|
||||
searchLab() { |
|
||||
const { instrument } = this; |
|
||||
for (let i = 0; i < instrument.length; i++) { |
|
||||
instrument[i].isActive = false; |
|
||||
} |
|
||||
this.instrument = [...instrument]; |
|
||||
this.setListState(0); |
|
||||
this.InsIpt = ''; |
|
||||
const obj = { |
|
||||
content: this.LabIpt, |
|
||||
isBtn: 1, |
|
||||
}; |
|
||||
this.setLabIpt(obj); |
|
||||
}, |
|
||||
searchIns() { |
|
||||
const { laboratory } = this; |
|
||||
for (let i = 0; i < laboratory.length; i++) { |
|
||||
laboratory[i].isActive = false; |
|
||||
} |
|
||||
this.laboratory = [...laboratory]; |
|
||||
this.setListState(1); |
|
||||
this.LabIpt = ''; |
|
||||
const obj = { |
|
||||
content: this.InsIpt, |
|
||||
isBtn: 1, |
|
||||
}; |
|
||||
this.setInsIpt(obj); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
|
|
||||
.search-background { |
|
||||
background: rgba(0, 0, 0, 0.02); |
|
||||
border: 1px solid rgba(0, 0, 0, 0.06); |
|
||||
height: auto; |
|
||||
padding: 0 20px; |
|
||||
width: 82%; |
|
||||
margin: 40px auto; |
|
||||
line-height: 44px; |
|
||||
} |
|
||||
|
|
||||
.item-search { |
|
||||
width: 100%; |
|
||||
height: 32px; |
|
||||
} |
|
||||
|
|
||||
.ins-title { |
|
||||
font-size: 16px; |
|
||||
font-weight: bold; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
} |
|
||||
|
|
||||
.ins-name { |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
padding: 0 10px; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
.act-color { |
|
||||
color: #13ACC4 !important; |
|
||||
} |
|
||||
</style> |
|
@ -1,206 +0,0 @@ |
|||||
<template> |
|
||||
<div class="inner equ-box"> |
|
||||
<div class="equ-info d-flex"> |
|
||||
<img :src="obj.img" alt v-if="listState === 1" /> |
|
||||
<img :src="obj.visitLocation" alt v-if="listState === 3" /> |
|
||||
<div class="equ-info-box"> |
|
||||
<p class="equ-name">{{ obj.name }}</p> |
|
||||
<div class="d-flex flex-wrap" v-if="listState === 1"> |
|
||||
<div class="equ-info-left" style="width: 200px"> |
|
||||
<p>仪器名字:</p> |
|
||||
<p>制造商:</p> |
|
||||
<p>型号:</p> |
|
||||
<p>规格:</p> |
|
||||
<p>性能指标:</p> |
|
||||
<p>联系人:</p> |
|
||||
<p>联系方式:</p> |
|
||||
</div> |
|
||||
<div style="width: 500px"> |
|
||||
<p>{{ obj.name }}</p> |
|
||||
<p>{{ obj.manufactor }}</p> |
|
||||
<p>{{ obj.model }}</p> |
|
||||
<p>{{ obj.specifications }}</p> |
|
||||
<p>{{ obj.performance }}</p> |
|
||||
<p> |
|
||||
<span :key="index" v-for="(item, index) in obj.selPeoList"> |
|
||||
{{ item.contactsName }} |
|
||||
<span v-if="index !== obj.selPeoList.length-1">、</span> |
|
||||
</span> |
|
||||
</p> |
|
||||
<p> |
|
||||
<span :key="index" v-for="(item, index) in obj.selPeoList"> |
|
||||
{{ item.contactsPhone }} |
|
||||
<span v-if="index !== obj.selPeoList.length-1">、</span> |
|
||||
</span> |
|
||||
</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="d-flex flex-wrap" v-if="listState === 3"> |
|
||||
<div class="equ-info-left" style="width: 200px"> |
|
||||
<p>公司名称:</p> |
|
||||
<p>产品编号:</p> |
|
||||
<p>联系人:</p> |
|
||||
</div> |
|
||||
<div style="width: 500px"> |
|
||||
<p>{{ obj.companyname }}</p> |
|
||||
<p>{{ obj.identifier }}</p> |
|
||||
<p> |
|
||||
<span :key="index" v-for="(item, index) in obj.selPeoList"> |
|
||||
{{ item.contactsName }} |
|
||||
<span v-if="index !== obj.selPeoList.length-1">、</span> |
|
||||
</span> |
|
||||
</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<p class="equ-btn"> |
|
||||
<intention-model |
|
||||
:type-data="listState === 1 ? typeData : typeProductData" |
|
||||
style="margin-right: 20px; float: left" |
|
||||
/> |
|
||||
<!-- <a-button style="margin-right: 20px">转化意向</a-button> --> |
|
||||
<!-- <a-button type="primary">加入购物车</a-button> --> |
|
||||
<add-shopping :type-data="typeData" style="margin-right: 20px; float: right" /> |
|
||||
</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="content-box"> |
|
||||
<div v-dompurify-html="obj.purpose" v-if="listState === 1"></div> |
|
||||
<div v-dompurify-html="obj.details" v-if="listState === 3"></div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState } from 'vuex'; |
|
||||
import { selInstrumentMes, selProductMes } from 'config/api'; |
|
||||
import IntentionModel from 'components/Introduce/IntentionModel.vue'; |
|
||||
import AddShopping from 'components/Introduce/AddShopping.vue'; |
|
||||
export default { |
|
||||
name: 'InsDet', |
|
||||
components: { IntentionModel, AddShopping }, |
|
||||
data() { |
|
||||
return { |
|
||||
obj: {}, |
|
||||
typeData: { |
|
||||
type: 1, |
|
||||
Id: '', |
|
||||
}, |
|
||||
typeProductData: { |
|
||||
type: 3, |
|
||||
Id: '', |
|
||||
}, |
|
||||
id: 0, |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('home', ['listState']), |
|
||||
created() { |
|
||||
this.id = this.$route.params.id; |
|
||||
if (this.listState === 1) { |
|
||||
this.typeData.Id = this.$route.params.id; |
|
||||
this.getData(); |
|
||||
} |
|
||||
if (this.listState === 3) { |
|
||||
this.typeProductData.Id = this.$route.params.id; |
|
||||
this.getProductData(); |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
async getData() { |
|
||||
try { |
|
||||
const params = { param: { id: this.id } }; |
|
||||
const res = await selInstrumentMes(params); |
|
||||
const { code, data, msg } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.obj = data; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
// 查询 产品列表 详情 |
|
||||
async getProductData() { |
|
||||
try { |
|
||||
const params = { param: { id: this.id } }; |
|
||||
const res = await selProductMes(params); |
|
||||
const { code, data, msg } = res.data; |
|
||||
if (code === 200) { |
|
||||
console.log(data); |
|
||||
this.obj = data; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.equ-box { |
|
||||
background: #fff; |
|
||||
padding: 20px; |
|
||||
margin: 60px auto; |
|
||||
} |
|
||||
|
|
||||
.equ-info { |
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.14901960784313725); |
|
||||
position: relative; |
|
||||
padding-bottom: 24px; |
|
||||
|
|
||||
img { |
|
||||
width: 300px; |
|
||||
height: 300px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.equ-name { |
|
||||
font-size: 24px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
line-height: 31px; |
|
||||
color: rgba(0, 0, 0, 0.85); |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.equ-info-box { |
|
||||
position: relative; |
|
||||
font-size: 16px; |
|
||||
margin-left: 20px; |
|
||||
height: 300px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
opacity: 1; |
|
||||
|
|
||||
p { |
|
||||
height: 24px; |
|
||||
margin-bottom: 6px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.equ-info-left { |
|
||||
font-size: 16px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
color: rgba(0, 0, 0, 0.45); |
|
||||
opacity: 1; |
|
||||
|
|
||||
p { |
|
||||
height: 24px; |
|
||||
margin-bottom: 6px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.equ-btn { |
|
||||
position: absolute; |
|
||||
bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.content-box { |
|
||||
min-height: 400px; |
|
||||
padding: 20px; |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
} |
|
||||
</style> |
|
@ -1,233 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<banner :show-page="showPage" /> |
|
||||
<h-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div class="inner ins-box"> |
|
||||
<p class="font-bold-24 item-title">设备列表</p> |
|
||||
<div class="d-flex flex-wrap"> |
|
||||
<div |
|
||||
:class="(index + 1) % 4 === 0 ? 'margin-0' : ''" |
|
||||
:key="index" |
|
||||
class="item-box mb-8" |
|
||||
v-for="(item, index) in list" |
|
||||
> |
|
||||
<img :src="item.visitLocation" style="height: 220px; width: 100%" /> |
|
||||
<p class="font-24 my-4">{{ item.name }}</p> |
|
||||
<p @click="jump(item.id)" class="font-16 baseColor item-more">了解更多→</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<p class="font-bold-24 item-title">人才团队带头人情况</p> |
|
||||
<div class="d-flex"> |
|
||||
<div class="header-box" style="flex: 1"> |
|
||||
<p style="background: #11b7ce; color: #fff">姓名</p> |
|
||||
<p>性别</p> |
|
||||
<p>民族</p> |
|
||||
<p>出生年月</p> |
|
||||
<p>学历</p> |
|
||||
<p>职称</p> |
|
||||
<p>所学专业</p> |
|
||||
<p>从事专业</p> |
|
||||
<p>团队名称</p> |
|
||||
<p>工作单位</p> |
|
||||
<p>研究方向</p> |
|
||||
</div> |
|
||||
<div class="header-box" style="flex: 5; background: #fff"> |
|
||||
<p style="border-bottom: 1px solid #eee">{{ obj.name }}</p> |
|
||||
<p> |
|
||||
<span v-if="obj.gender - 0 === 1">男</span> |
|
||||
<span v-else-if="obj.gender - 0 === 2">女</span> |
|
||||
</p> |
|
||||
<p>{{ obj.famousFamily }}</p> |
|
||||
<p>{{ obj.birthday }}</p> |
|
||||
<p>{{ obj.education }}</p> |
|
||||
<p>{{ obj.position }}</p> |
|
||||
<p>{{ obj.major }}</p> |
|
||||
<p>{{ obj.professional }}</p> |
|
||||
<p>{{ obj.teamName }}</p> |
|
||||
<p>{{ obj.workUnit }}</p> |
|
||||
<p>{{ obj.direction }}</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<p class="font-bold-24 item-title">团队成员信息</p> |
|
||||
<div style="background: #fff"> |
|
||||
<div class="d-flex"> |
|
||||
<div class="h-box" style="flex: 1">姓名</div> |
|
||||
<div class="h-box" style="flex: 1">性别</div> |
|
||||
<!-- <div class="h-box" style="flex: 1">所在单位</div> --> |
|
||||
<div class="h-box" style="flex: 1">出生年月</div> |
|
||||
<div class="h-box" style="flex: 1">学历学位</div> |
|
||||
<div class="h-box" style="flex: 1">职称职务</div> |
|
||||
<div class="h-box" style="flex: 1">研究方向</div> |
|
||||
</div> |
|
||||
<div :key="index" class="d-flex" v-for="(item, index) in obj.teamMemberList"> |
|
||||
<div class="con-box" style="flex: 1">{{ item.name }}</div> |
|
||||
<div class="con-box" style="flex: 1"> |
|
||||
<span v-if="item.gender - 0 === 1">男</span> |
|
||||
<span v-else-if="item.gender - 0 === 2">女</span> |
|
||||
</div> |
|
||||
<!-- <div class="con-box" style="flex: 1">???????????????</div> --> |
|
||||
<div class="con-box" style="flex: 1">{{ item.birthday }}</div> |
|
||||
<div class="con-box" style="flex: 1">{{ item.education }}</div> |
|
||||
<div class="con-box" style="flex: 1">{{ item.position }}</div> |
|
||||
<div class="con-box" style="flex: 1">{{ item.direction }}</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapMutations, mapState } from 'vuex'; |
|
||||
import { selInstrumentByRes, teamSearch } from 'config/api'; |
|
||||
import Banner from 'components/Banner/Banner.vue'; |
|
||||
import HNav from './../../components/HNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
export default { |
|
||||
name: 'Institute', |
|
||||
components: { Banner, HNav, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
id: 0, |
|
||||
title: '研究院详情', |
|
||||
typeOfPlatform: '创新平台', |
|
||||
showPage: 32, |
|
||||
arr: [ |
|
||||
{ name: '创新平台', url: '/NewPlatform/NewCore' }, |
|
||||
{ name: '创新资源平台', url: '/NewPlatform/News' }, |
|
||||
{ name: '科技资源开放共享服务平台', url: '/NewPlatform/Share' }, |
|
||||
{ name: '研究院详情', url: '' }, |
|
||||
], |
|
||||
obj: {}, |
|
||||
list: [], |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('home', ['LabId']), |
|
||||
created() { |
|
||||
if (this.$route.params.id) { |
|
||||
this.setLabId(this.$route.params.id); |
|
||||
this.id = this.$route.params.id; |
|
||||
} else { |
|
||||
this.id = this.LabId; |
|
||||
} |
|
||||
this.getData(); |
|
||||
this.getTeam(); |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapMutations('home', ['setLabId']), |
|
||||
|
|
||||
// 获取当前研究院(实验室)下的仪器列表 |
|
||||
async getData() { |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
id: this.id, |
|
||||
pageNum: 1, |
|
||||
pageSize: 6, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await selInstrumentByRes(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.list = data.list; |
|
||||
this.total = parseInt(data.total); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
// 获取当前研究院(实验室)下的团队详情 |
|
||||
async getTeam() { |
|
||||
try { |
|
||||
const params = { param: { instituteId: this.id } }; |
|
||||
const res = await teamSearch(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.obj = data[0]; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
// 查看 研究院/仪器 详情 |
|
||||
jump(id) { |
|
||||
this.$router.push({ |
|
||||
path: '/NewPlatform/Share/InsDet', |
|
||||
name: 'InsDet', |
|
||||
params: { id }, |
|
||||
}); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
|
|
||||
.ins-box { |
|
||||
min-height: 500px; |
|
||||
height: auto; |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
margin: 40px 0; |
|
||||
text-align: right; |
|
||||
} |
|
||||
|
|
||||
.item-more { |
|
||||
right: 10px; |
|
||||
bottom: 0px; |
|
||||
cursor: pointer; |
|
||||
position: absolute; |
|
||||
} |
|
||||
|
|
||||
.item-box { |
|
||||
position: relative; |
|
||||
width: 20.5%; |
|
||||
margin-right: 6%; |
|
||||
border-radius: 4px; |
|
||||
padding-bottom: 40px; |
|
||||
} |
|
||||
|
|
||||
.margin-0 { |
|
||||
margin-right: 0 !important; |
|
||||
} |
|
||||
|
|
||||
.item-title { |
|
||||
color: rgba(0, 0, 0, 0.85); |
|
||||
margin-top: 60px; |
|
||||
} |
|
||||
|
|
||||
.header-box { |
|
||||
text-align: center; |
|
||||
|
|
||||
p { |
|
||||
font-size: 24px; |
|
||||
color: rgba(0, 0, 0, 0.66); |
|
||||
height: 56px; |
|
||||
line-height: 56px; |
|
||||
margin-bottom: 0 !important; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.h-box { |
|
||||
text-align: center; |
|
||||
font-size: 22px; |
|
||||
color: #096DD9; |
|
||||
height: 56px; |
|
||||
line-height: 56px; |
|
||||
} |
|
||||
|
|
||||
.con-box { |
|
||||
text-align: center; |
|
||||
font-size: 18px; |
|
||||
height: 46px; |
|
||||
line-height: 46px; |
|
||||
color: rgba(112, 112, 112, 0.66); |
|
||||
} |
|
||||
</style> |
|
@ -1,150 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<sen-nav /> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
</div> |
|
||||
<div> |
|
||||
<div class="search-background"> |
|
||||
<div class="d-flex"> |
|
||||
<div class="flex-3 flex-wrap"> |
|
||||
<span class="ins-title">技术领域:</span> |
|
||||
<span |
|
||||
:class="item.isActive ? 'act-color' : ''" |
|
||||
v-for="(item, index) in list" |
|
||||
:key="index" |
|
||||
class="ins-name" |
|
||||
@click="choose(index)" |
|
||||
> |
|
||||
{{ item.name }} |
|
||||
</span> |
|
||||
</div> |
|
||||
<div class="flex-1 align-center"> |
|
||||
<a-input-search class="item-search" v-model="fruitIpt" placeholder="搜索成果" enter-button="搜索" @search="searchFruit" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<fruit /> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapMutations } from 'vuex'; |
|
||||
import { selModel } from 'config/api'; |
|
||||
import Fruit from 'components/PlatformList/Fruit.vue'; |
|
||||
import SenNav from './components/SenNav.vue'; |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
export default { |
|
||||
name: 'Transfer', |
|
||||
components: { SenNav, Fruit, BreadCrumb }, |
|
||||
data() { |
|
||||
return { |
|
||||
str: '这是知识产权与技术转移转化服务平台', |
|
||||
title: '知识产权与技术转移转化服务平台', |
|
||||
typeOfPlatform: '创新平台', |
|
||||
arr: [ |
|
||||
{ name: '创新平台', url: '/NewPlatform/NewCore' }, |
|
||||
{ name: '创新资源平台', url: '/NewPlatform/News' }, |
|
||||
{ name: '知识产权与技术转移转化服务平台', url: '' }, |
|
||||
], |
|
||||
list: [], |
|
||||
achList: [], |
|
||||
fruitIpt: '', |
|
||||
}; |
|
||||
}, |
|
||||
watch: { |
|
||||
fruitIpt(val) { |
|
||||
const obj = { |
|
||||
content: this.fruitIpt, |
|
||||
isBtn: 0, |
|
||||
}; |
|
||||
this.setAchIpt(obj); |
|
||||
}, |
|
||||
}, |
|
||||
created() { |
|
||||
this.getType(); |
|
||||
this.setAchList([]); |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapMutations('home', ['setAchList', 'setAchIpt']), |
|
||||
// 获取类型列表 |
|
||||
async getType() { |
|
||||
try { |
|
||||
const params = { param: { model: 0 } }; |
|
||||
const res = await selModel(params); |
|
||||
const { code, mst, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.list = data; |
|
||||
for (var i = 0; i < this.list.length; i++) { |
|
||||
this.list[i].isActive = false; |
|
||||
} |
|
||||
console.log(this.list); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
// 点击搜索 |
|
||||
searchFruit() { |
|
||||
const obj = { |
|
||||
content: this.fruitIpt, |
|
||||
isBtn: 1, |
|
||||
}; |
|
||||
this.setAchIpt(obj); |
|
||||
}, |
|
||||
// 选中类型时触发 |
|
||||
choose(index) { |
|
||||
const that = this; |
|
||||
that.achList = []; |
|
||||
const { list } = this; |
|
||||
list[index].isActive = !list[index].isActive; |
|
||||
this.list = [...list]; |
|
||||
for (let i = 0; i < list.length; i++) { |
|
||||
if (list[i].isActive) { |
|
||||
this.achList.push(list[i].id); |
|
||||
} |
|
||||
} |
|
||||
this.setAchList(this.achList); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.inner { |
|
||||
margin: 10px auto 15px; |
|
||||
} |
|
||||
|
|
||||
.search-background { |
|
||||
background: rgba(0, 0, 0, 0.02); |
|
||||
border: 1px solid rgba(0, 0, 0, 0.06); |
|
||||
height: auto; |
|
||||
padding: 0 20px; |
|
||||
width: 82%; |
|
||||
margin: 40px auto; |
|
||||
line-height: 44px; |
|
||||
} |
|
||||
|
|
||||
.item-search { |
|
||||
width: 100%; |
|
||||
height: 32px; |
|
||||
} |
|
||||
|
|
||||
.ins-title { |
|
||||
font-size: 16px; |
|
||||
font-weight: bold; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
} |
|
||||
|
|
||||
.ins-name { |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
padding: 0 10px; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
.act-color { |
|
||||
color: #13ACC4 !important; |
|
||||
} |
|
||||
</style> |
|
@ -1,151 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: song |
|
||||
email: 15235360226@163.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<!-- <div v-if="newPartners && newPartners.length > 0"> |
|
||||
<div class="d-flex flex-wrap"> |
|
||||
<div |
|
||||
:class="(index + 1) % 3 === 0 ? 'enterprise-box1' : ''" |
|
||||
:key="index" |
|
||||
@click="openProfile(item.name, item.description)" |
|
||||
class="enterprise-box d-flex flex-column align-center white mb-8" |
|
||||
v-for="(item, index) in newPartners" |
|
||||
> |
|
||||
<img :src="item.logoUrl" class="enterprise-pic my-2" /> |
|
||||
<div class="font-bold-24 title-color my-2">{{ item.name }}</div> |
|
||||
<div |
|
||||
class="font-16 textColor d-flex flex-wrap align-start fill-width enterprise-txt" |
|
||||
>{{ item.description }}</div> |
|
||||
<div class="d-flex flex-nowrap fill-width py-5 enterprise-more"> |
|
||||
<div class="flex-1"></div> |
|
||||
<span class="font-16 baseColor"> |
|
||||
了解更多 |
|
||||
<a-icon type="arrow-right" /> |
|
||||
</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
<company-profile :show-profile="showProfile" @closeProfile="closeProfile" v-if="showProfile" /> |
|
||||
</div> |
|
||||
<div class="inner d-flex flex-row-reverse pb-10 enterprise-page"> |
|
||||
<a-pagination |
|
||||
:page-size="pageSize" |
|
||||
:total="newPartners.length" |
|
||||
@change="onChange" |
|
||||
show-less-items |
|
||||
v-model="current" |
|
||||
v-show="newPartners.length > 6" |
|
||||
/> |
|
||||
</div> |
|
||||
</div>--> |
|
||||
<div v-if="newPartners && newPartners.length > 0"> |
|
||||
<div :key="index" class="mb-4" v-for="(item,index) in newPartners"> |
|
||||
<p |
|
||||
class="font-bold-24 title-color" |
|
||||
>{{ item.typeOfTech===0 ? '高校' : item.typeOfTech===1 ? '院所' : '企业' }}</p> |
|
||||
<div class="d-flex flex-wrap pointer"> |
|
||||
<div |
|
||||
:class="(index+1)%4===0? 'logo-box1' : ''" |
|
||||
@click="openProfile(item.name,item.description)" |
|
||||
class="logo-box d-flex flex-column align-center justify-center white mb-8" |
|
||||
> |
|
||||
<img :src="item.logoUrl" class="logo-pic my-2" v-if="list.logoUrl" /> |
|
||||
<div class="font-16 title-color">{{ item.name }}</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<company-profile :show-profile="showProfile" @closeProfile="closeProfile" v-if="showProfile" /> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations, mapActions } from 'vuex'; |
|
||||
import 'components/Introduce/PartnerShip.styl'; |
|
||||
import CompanyProfile from 'components/Introduce/CompanyProfile.vue'; |
|
||||
export default { |
|
||||
name: 'DeEnt', |
|
||||
components: { CompanyProfile }, |
|
||||
props: { |
|
||||
title: { |
|
||||
type: String, |
|
||||
default: '', |
|
||||
}, |
|
||||
typeOfPlatform: { |
|
||||
type: String, |
|
||||
default: '', |
|
||||
}, |
|
||||
}, |
|
||||
|
|
||||
data() { |
|
||||
return { |
|
||||
current: 1, |
|
||||
pageSize: 6, |
|
||||
showProfile: false, // 显示公司介绍 |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
computed: { |
|
||||
...mapState('home', ['partners', 'profile']), |
|
||||
|
|
||||
newPartners() { |
|
||||
let { partners } = this; |
|
||||
let arr = []; |
|
||||
if (partners && partners.length > 0) { |
|
||||
for (let i = 0; i < partners.length; i++) { |
|
||||
const element = partners[i]; |
|
||||
for (let j = 0; j < element.backendSearchList.length; j++) { |
|
||||
const item = element.backendSearchList[j]; |
|
||||
arr.push(item); |
|
||||
} |
|
||||
} |
|
||||
console.log('arr: ', arr); |
|
||||
return arr; |
|
||||
} |
|
||||
return arr; |
|
||||
}, |
|
||||
}, |
|
||||
|
|
||||
async created() { |
|
||||
this.setPartners([]); |
|
||||
const { title, typeOfPlatform } = this; |
|
||||
const params = { |
|
||||
param: { |
|
||||
pageNum: this.current, |
|
||||
pageSize: 6, |
|
||||
type: title === '合作伙伴' ? 1 : 2, |
|
||||
typeOfPlatform: typeOfPlatform === '关于我们' ? 2 : 1, |
|
||||
}, |
|
||||
}; |
|
||||
await this.getFrontSearchCompany(params); |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
...mapMutations('home', ['setPartners', 'setProfile']), |
|
||||
...mapActions('home', ['getFrontSearchCompany']), |
|
||||
|
|
||||
// 切换页数 |
|
||||
onChange(current) { |
|
||||
this.current = current; |
|
||||
}, |
|
||||
|
|
||||
// 介绍 |
|
||||
openProfile(title, description) { |
|
||||
this.setProfile(null); |
|
||||
const profile = { |
|
||||
title, |
|
||||
description, |
|
||||
}; |
|
||||
this.setProfile(profile); |
|
||||
this.showProfile = true; |
|
||||
}, |
|
||||
|
|
||||
closeProfile() { |
|
||||
this.showProfile = false; |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped></style> |
|
@ -1,57 +0,0 @@ |
|||||
<template> |
|
||||
<div class="nav-box d-flex"> |
|
||||
<div |
|
||||
:class="activeNum === index ? 'nav-box-active' : ''" |
|
||||
:key="index" |
|
||||
@click="jump(item.url)" |
|
||||
v-for="(item, index) in list" |
|
||||
>{{ item.title }}</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'HNav', |
|
||||
data() { |
|
||||
return { |
|
||||
str: '导航条', |
|
||||
activeNum: 0, |
|
||||
list: [ |
|
||||
{ |
|
||||
title: '科技资源开放共享服务平台', |
|
||||
url: '/NewPlatform/Share', |
|
||||
}, |
|
||||
{ |
|
||||
title: '知识产权与技术转移转化服务平台', |
|
||||
url: '/NewPlatform/Transfer', |
|
||||
}, |
|
||||
{ |
|
||||
title: '创新服务', |
|
||||
url: '/NewPlatform/Develop', |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
console.log(); |
|
||||
if (this.$route.fullPath === '/NewPlatform/Transfer') { |
|
||||
this.activeNum = 1; |
|
||||
} else if (this.$route.fullPath === '/NewPlatform/Develop') { |
|
||||
this.activeNum = 2; |
|
||||
} else { |
|
||||
this.activeNum = 0; |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
jump(url) { |
|
||||
if (this.$route.fullPath === url) { |
|
||||
this.$message.success('已在当前界面'); |
|
||||
} else { |
|
||||
this.$router.push(url); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped></style> |
|
@ -1,27 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<router-view></router-view> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'NewPlatform', |
|
||||
data() { |
|
||||
return { |
|
||||
str: '创新平台界面', |
|
||||
list: [], |
|
||||
}; |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.wrap { |
|
||||
width: 1260px; |
|
||||
min-height: 1037px; |
|
||||
margin: 80px auto 28px auto; |
|
||||
overflow: hidden; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
</style> |
|
@ -1,59 +0,0 @@ |
|||||
<template> |
|
||||
<div class="nav-box d-flex"> |
|
||||
<div |
|
||||
:class="activeNum === index ? 'nav-box-active' : ''" |
|
||||
:key="index" |
|
||||
@click="jump(item.url)" |
|
||||
v-for="(item, index) in list" |
|
||||
>{{ item.title }}</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'HNav', |
|
||||
data() { |
|
||||
return { |
|
||||
str: '导航条', |
|
||||
activeNum: 0, |
|
||||
list: [ |
|
||||
{ |
|
||||
title: '协同创新中心', |
|
||||
url: '/NewPlatform/NewCore', |
|
||||
}, |
|
||||
{ |
|
||||
title: '创新资源平台', |
|
||||
url: '/NewPlatform/News', |
|
||||
}, |
|
||||
{ |
|
||||
title: '创新服务', |
|
||||
url: '/NewPlatform/NewService', |
|
||||
}, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
console.log(); |
|
||||
if (this.$route.fullPath === '/NewPlatform/News') { |
|
||||
this.activeNum = 1; |
|
||||
} else if (this.$route.fullPath === '/NewPlatform/Share/Institute') { |
|
||||
this.activeNum = 1; |
|
||||
} else if (this.$route.fullPath === '/NewPlatform/NewService') { |
|
||||
this.activeNum = 2; |
|
||||
} else { |
|
||||
this.activeNum = 0; |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
jump(url) { |
|
||||
if (this.$route.fullPath === url) { |
|
||||
this.$message.success('已在当前界面'); |
|
||||
} else { |
|
||||
this.$router.push(url); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped></style> |
|
@ -1,218 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<a-button type="primary" @click="showModal"> |
|
||||
{{ str }} |
|
||||
</a-button> |
|
||||
<a-modal width="50%" :title="title" :visible="visible" :confirm-loading="confirmLoading" @ok="handleOk" @cancel="handleCancel"> |
|
||||
<a-form :form="form"> |
|
||||
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="公司名称"> |
|
||||
<a-input v-model.trim="platform.companyName" placeholder="请输入公司名称..." /> |
|
||||
</a-form-item> |
|
||||
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="联系人" required> |
|
||||
<a-input v-model.trim="platform.manName" placeholder="请输入联系人..." /> |
|
||||
</a-form-item> |
|
||||
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="联系电话" required> |
|
||||
<a-input @change="changePhone" type="tel" v-decorator="['tel', { rules: phoneRules }]" placeholder="请输入联系电话.." /> |
|
||||
</a-form-item> |
|
||||
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="图片验证码" required> |
|
||||
<div class="d-flex flex-nowrap"> |
|
||||
<a-input placeholder="图片验证码" type="number" v-model="codeNum" /> |
|
||||
<img :src="picCode.imageBase64" @click="changePicCode" class="code_img ml-2" v-if="picCode && picCode.imageBase64" /> |
|
||||
<a-button @click="changePicCode" class="code_img ml-2" size="small" v-else>获取验证码</a-button> |
|
||||
<!-- <a-input v-decorator="['account', { rules: rules.account }]" /> --> |
|
||||
</div> |
|
||||
</a-form-item> |
|
||||
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="短信验证码" required> |
|
||||
<div class="d-flex flex-nowrap"> |
|
||||
<a-input placeholder="请输入验证码" type="number" v-model="platform.code" /> |
|
||||
<a-button class="code_img ml-2" disabled type="primary" v-if="showInterval">重新发送 {{ interval }}</a-button> |
|
||||
<a-button :disabled="platform.isTel === false" @click="getCode" class="code_img ml-2" type="primary" v-else> |
|
||||
获取验证码 |
|
||||
</a-button> |
|
||||
</div> |
|
||||
</a-form-item> |
|
||||
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="项目信息简述" required> |
|
||||
<a-textarea v-model.trim="platform.describe" style="height: 120px" placeholder="请输入项目信息简述..." /> |
|
||||
</a-form-item> |
|
||||
</a-form> |
|
||||
</a-modal> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapActions } from 'vuex'; |
|
||||
import { JoinPlatform } from 'config/api'; |
|
||||
const formItemLayout = { |
|
||||
labelCol: { span: 5 }, |
|
||||
wrapperCol: { span: 18 }, |
|
||||
}; |
|
||||
const formTailLayout = { |
|
||||
labelCol: { span: 6 }, |
|
||||
wrapperCol: { span: 18, offset: 6 }, |
|
||||
}; |
|
||||
export default { |
|
||||
name: 'NewModel', |
|
||||
|
|
||||
data() { |
|
||||
return { |
|
||||
form: this.$form.createForm(this, { name: 'submit' }), |
|
||||
visible: false, |
|
||||
title: '协同创新中心加入申请', |
|
||||
str: '申请加入', |
|
||||
formItemLayout, |
|
||||
formTailLayout, |
|
||||
confirmLoading: false, |
|
||||
platform: { |
|
||||
companyName: '', // 公司名称 |
|
||||
manName: '', // 联系人 |
|
||||
tel: '', // 联系电话 |
|
||||
describe: '', // 项目描述 |
|
||||
code: '', // 验证码 |
|
||||
isTel: false, |
|
||||
}, |
|
||||
codeRules: [ |
|
||||
{ required: true, message: '请输入验证码' }, |
|
||||
{ min: 4, max: 4, message: '请输入4位短信验证码' }, |
|
||||
], |
|
||||
codeNum: '', |
|
||||
showInterval: false, |
|
||||
codeTimer: null, |
|
||||
interval: 120, // 验证码有效时间倒计时 |
|
||||
phoneRules: [ |
|
||||
{ required: true, pattern: new RegExp(/^[1][3,4,5,6,7,8,9][0-9]{9}$/), whitespace: true, message: '请输入正确的手机号' }, |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('user', ['picCode']), |
|
||||
async created() { |
|
||||
this.sendPicCode(); |
|
||||
await this.getUserSer(); |
|
||||
if (this.userSer) { |
|
||||
if (this.userSer.name) { |
|
||||
this.platform.manName = this.userSer.name; |
|
||||
} |
|
||||
if (this.userSer.phone) { |
|
||||
this.platform.tel = this.userSer.phone; |
|
||||
} |
|
||||
if (this.userSer.companyName) { |
|
||||
this.platform.companyName = this.userSer.companyName; |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
...mapActions('user', ['sendCode', 'sendPicCode']), |
|
||||
...mapActions('home', ['getUserSer']), |
|
||||
// 显示表单输入框 |
|
||||
showModal() { |
|
||||
this.visible = true; |
|
||||
}, |
|
||||
// 取消显示 |
|
||||
handleCancel(e) { |
|
||||
this.visible = false; |
|
||||
}, |
|
||||
// 验证电话 |
|
||||
changePhone(e) { |
|
||||
this.platform.tel = e.target.value; |
|
||||
this.platform.isTel = /^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(this.platform.tel); |
|
||||
}, |
|
||||
// 点击确定 |
|
||||
handleOk() { |
|
||||
if (!this.platform.manName) { |
|
||||
this.$message.error('请输入联系人'); |
|
||||
} else if (!this.platform.tel) { |
|
||||
this.$message.error('请输入联系电话'); |
|
||||
} else if (!this.platform.code) { |
|
||||
this.$message.error('请输入验证码'); |
|
||||
} else if (!this.platform.describe) { |
|
||||
this.$message.error('请输入项目信息简述'); |
|
||||
} else { |
|
||||
if (this.platform.isTel) { |
|
||||
this.subMitAdd(); |
|
||||
} else { |
|
||||
this.$message.error('请输入正确的联系电话'); |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
// 加入接口 |
|
||||
async subMitAdd() { |
|
||||
this.confirmLoading = true; |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
code: this.platform.code, |
|
||||
companyName: this.platform.companyName, |
|
||||
contactName: this.platform.manName, |
|
||||
contactPhone: this.platform.tel, |
|
||||
description: this.platform.describe, |
|
||||
type: 0, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await JoinPlatform(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.$message.success('申请成功'); |
|
||||
this.visible = false; |
|
||||
this.confirmLoading = false; |
|
||||
for (let key in this.platform) { |
|
||||
this.platform[key] = ''; |
|
||||
} |
|
||||
this.platform.isTel = false; |
|
||||
} else { |
|
||||
throw msg; |
|
||||
this.confirmLoading = false; |
|
||||
} |
|
||||
} catch (error) { |
|
||||
this.$message.error(error); |
|
||||
this.confirmLoading = false; |
|
||||
} |
|
||||
}, |
|
||||
// 获取验证码 |
|
||||
async getCode() { |
|
||||
console.log(111); |
|
||||
try { |
|
||||
const params = { |
|
||||
phone: this.platform.tel, |
|
||||
verificationCodeId: this.picCode.verificationCodeId, |
|
||||
verificationCodeValue: this.codeNum, |
|
||||
}; |
|
||||
await this.sendCode(params); |
|
||||
this.getCodeInterval(); |
|
||||
} catch (error) { |
|
||||
// throw new Error(`SignIn.vue method getCode: ${error}`); |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
// 验证码倒计时 |
|
||||
getCodeInterval() { |
|
||||
this.showInterval = true; |
|
||||
this.codeTimer = setInterval(() => { |
|
||||
if (this.interval === 0) { |
|
||||
clearInterval(this.codeTimer); |
|
||||
this.codeTimer = null; |
|
||||
this.showInterval = false; |
|
||||
this.interval = 120; |
|
||||
return; |
|
||||
} |
|
||||
this.interval = this.interval - 1; |
|
||||
}, 1000); |
|
||||
}, |
|
||||
|
|
||||
// 刷新验证码 |
|
||||
changePicCode() { |
|
||||
this.sendPicCode(); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="stylus" scoped> |
|
||||
.must-color { |
|
||||
color: red; |
|
||||
} |
|
||||
|
|
||||
.code_img { |
|
||||
height: 32px; |
|
||||
width: 120px; |
|
||||
} |
|
||||
</style> |
|
@ -1,231 +0,0 @@ |
|||||
<template> |
|
||||
<div class="transition_test"> |
|
||||
<h2>过渡效果</h2> |
|
||||
|
|
||||
<button @click="show = !show">click</button> |
|
||||
<!-- <transition name="slide-fade"> |
|
||||
<div v-if="show" class="circle"></div> |
|
||||
</transition> --> |
|
||||
<div> |
|
||||
图片放大效果: |
|
||||
<transition name="img-fade"> |
|
||||
<img |
|
||||
class="bigimg" |
|
||||
v-if="show" |
|
||||
src="https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1672824262,2727256094&fm=111&gp=0.jpg" |
|
||||
alt="" |
|
||||
/> |
|
||||
</transition> |
|
||||
</div> |
|
||||
<div class="shop_cart"> |
|
||||
加入购物车动画(css实现): |
|
||||
<div class="add"> |
|
||||
<button @click="addShopCart">add</button> |
|
||||
<transition name="shop_cart"> |
|
||||
<img |
|
||||
class="add_img" |
|
||||
v-if="addShow" |
|
||||
src="https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1672824262,2727256094&fm=111&gp=0.jpg" |
|
||||
alt="" |
|
||||
/> |
|
||||
</transition> |
|
||||
</div> |
|
||||
<div class="cart"> |
|
||||
<img src="https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1672824262,2727256094&fm=111&gp=0.jpg" alt="" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div class="shop_cart"> |
|
||||
加入购物车动画(JavaScript钩子函数实现): |
|
||||
<div class="add"> |
|
||||
<button @click="addShopCart1">add</button> |
|
||||
<transition v-on:before-enter="beforeEnter" v-on:enter="enter" v-on:after-enter="afterEnter"> |
|
||||
<img |
|
||||
class="add_img_js" |
|
||||
v-if="addShow1" |
|
||||
src="https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1672824262,2727256094&fm=111&gp=0.jpg" |
|
||||
alt="" |
|
||||
/> |
|
||||
</transition> |
|
||||
</div> |
|
||||
<div class="cart"> |
|
||||
<img src="https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1672824262,2727256094&fm=111&gp=0.jpg" alt="" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
<!-- 动画数组效果 --> |
|
||||
<ul class="group_list"> |
|
||||
<button @click="addItem">addItem</button> |
|
||||
<button @click="removeItem">removeItem</button> |
|
||||
<transition-group name="list"> |
|
||||
<li class="group_item" v-for="item in list" :key="item">{{ item }}</li> |
|
||||
</transition-group> |
|
||||
</ul> |
|
||||
</div> |
|
||||
</template> |
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'myTransition', |
|
||||
components: {}, |
|
||||
data() { |
|
||||
return { |
|
||||
show: false, |
|
||||
addShow: false, |
|
||||
addShow1: false, |
|
||||
list: [1, 2, 3], |
|
||||
}; |
|
||||
}, |
|
||||
created() {}, |
|
||||
|
|
||||
methods: { |
|
||||
addShopCart() { |
|
||||
this.addShow = true; |
|
||||
setTimeout(() => { |
|
||||
this.addShow = false; |
|
||||
}, 1000); |
|
||||
}, |
|
||||
addShopCart1() { |
|
||||
this.addShow1 = true; |
|
||||
}, |
|
||||
|
|
||||
// 动画钩子函数 |
|
||||
// 进入前状态 |
|
||||
beforeEnter(el) { |
|
||||
el.style.left = '-20px'; |
|
||||
el.style.top = '-15px'; |
|
||||
el.style.transform = 'scale(1)'; |
|
||||
}, |
|
||||
// 进入中 |
|
||||
enter(el, done) { |
|
||||
// 需要调用元素的offset操作,才有过渡的效果,否则会马上实现过渡 |
|
||||
el.offsetWidth; |
|
||||
el.style.left = '600px'; |
|
||||
el.style.top = '-160px'; |
|
||||
el.style.transform = 'scale(.5)'; |
|
||||
done(); |
|
||||
}, |
|
||||
// 进入后 |
|
||||
afterEnter() { |
|
||||
this.addShow1 = false; |
|
||||
}, |
|
||||
|
|
||||
// 新增 |
|
||||
addItem() { |
|
||||
this.list.push(this.list.length + 1); |
|
||||
}, |
|
||||
// 删除 |
|
||||
removeItem() { |
|
||||
if (this.list.length > 1) { |
|
||||
this.list.pop(); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
<style scoped> |
|
||||
.transition_test { |
|
||||
text-align: left; |
|
||||
padding-bottom: 300px; |
|
||||
} |
|
||||
.circle { |
|
||||
width: 100px; |
|
||||
height: 100px; |
|
||||
border-radius: 50%; |
|
||||
background-color: aquamarine; |
|
||||
} |
|
||||
.slide-fade-enter-active, |
|
||||
.slide-fade-leave-active { |
|
||||
transition: all 0.5s ease-out; |
|
||||
} |
|
||||
.slide-fade-enter, |
|
||||
.slide-fade-leave-to { |
|
||||
/* transform: translateX(500px); */ |
|
||||
opacity: 0; |
|
||||
} |
|
||||
.bigimg { |
|
||||
width: 300px; |
|
||||
} |
|
||||
|
|
||||
.img-fade-enter-active { |
|
||||
transition: all 1s ease-out; |
|
||||
} |
|
||||
.img-fade-enter { |
|
||||
transform: scale(0.5); |
|
||||
/* width: 50px; */ |
|
||||
} |
|
||||
|
|
||||
.shop_cart { |
|
||||
padding: 20px; |
|
||||
} |
|
||||
.shop_cart .add { |
|
||||
position: relative; |
|
||||
margin-top: 100px; |
|
||||
width: 500px; |
|
||||
display: inline-block; |
|
||||
} |
|
||||
.shop_cart .add button { |
|
||||
position: absolute; |
|
||||
z-index: 99; |
|
||||
} |
|
||||
.shop_cart .cart { |
|
||||
width: 300px; |
|
||||
display: inline-block; |
|
||||
} |
|
||||
.shop_cart .cart img { |
|
||||
width: 100%; |
|
||||
} |
|
||||
.shop_cart .add_img { |
|
||||
width: 100px; |
|
||||
position: absolute; |
|
||||
left: 600px; |
|
||||
top: -160px; |
|
||||
} |
|
||||
/* 动画效果实现 */ |
|
||||
/* @keyframes bounce-in { |
|
||||
0% { |
|
||||
transform: scale(1); |
|
||||
transform: translate(-610px, 100px); |
|
||||
} |
|
||||
100% { |
|
||||
transform: scale(.5); |
|
||||
transform: translate(0px, 0px); |
|
||||
} |
|
||||
} |
|
||||
.shop_cart-enter-active { |
|
||||
animation: bounce-in 1s; |
|
||||
} */ |
|
||||
|
|
||||
/* CSS类名实现 */ |
|
||||
.shop_cart-enter-active { |
|
||||
transition: all 1s ease-out; |
|
||||
} |
|
||||
.shop_cart-enter { |
|
||||
opacity: 0; |
|
||||
transform: scale(0.5); |
|
||||
transform: translate(-610px, 100px); |
|
||||
} |
|
||||
.shop_cart .add_img_js { |
|
||||
width: 100px; |
|
||||
position: absolute; |
|
||||
left: 600px; |
|
||||
top: -160px; |
|
||||
transition: all 1s; |
|
||||
} |
|
||||
.group_list { |
|
||||
padding: 30px; |
|
||||
} |
|
||||
.group_list .group_item { |
|
||||
width: 200px; |
|
||||
height: 100px; |
|
||||
border: 1px solid orangered; |
|
||||
margin: 10px; |
|
||||
} |
|
||||
.list-enter-active, |
|
||||
.list-leave-active { |
|
||||
transition: all 0.8s; |
|
||||
} |
|
||||
.list-enter, |
|
||||
.list-leave-to { |
|
||||
opacity: 0; |
|
||||
transform: translateX(40px); |
|
||||
} |
|
||||
</style> |
|
@ -1,40 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: bin |
|
||||
email: binbin0314@126.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<div class="inner"> |
|
||||
<bread-crumb :arr="arr" /> |
|
||||
<policy-list class="py-5 my-5" /> |
|
||||
<!-- <policy-details v-else/> --> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue'; |
|
||||
import PolicyList from './components/PolicyList.vue'; |
|
||||
export default { |
|
||||
name: 'Policy', |
|
||||
components: { |
|
||||
BreadCrumb, |
|
||||
PolicyList, |
|
||||
// PolicyDetails, |
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
showType: 1, |
|
||||
list: [], |
|
||||
arr: [{ name: '创新政策', url: '' }], |
|
||||
}; |
|
||||
}, |
|
||||
methods: {}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style scoped lang="stylus"> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
</style> |
|
@ -1,107 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: bin |
|
||||
email: binbin0314@126.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<div class="white inner"> |
|
||||
<div class="policy-title"> |
|
||||
<span>{{ obj.title }}</span> |
|
||||
</div> |
|
||||
<div class="policy-info"> |
|
||||
<span> |
|
||||
<a-icon class="baseColor" type="clock-circle" /> |
|
||||
<span>{{ obj.time }}</span> |
|
||||
</span> |
|
||||
<span class="ml-8"> |
|
||||
<!-- <a-icon type="form" /> --> |
|
||||
<a-icon style="color: #ff1857" type="tag" /> |
|
||||
<span>{{ obj.source }}</span> |
|
||||
</span> |
|
||||
</div> |
|
||||
<div class="policy-content" v-dompurify-html="obj.content"></div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations } from 'vuex'; |
|
||||
import { selPolicy } from 'config/api'; |
|
||||
export default { |
|
||||
name: 'PolicyDetails', |
|
||||
data() { |
|
||||
return { |
|
||||
str: '这是政策详情界面', |
|
||||
obj: { |
|
||||
title: '', |
|
||||
content: '', |
|
||||
time: '', |
|
||||
source: '', |
|
||||
}, |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('home', ['policyId']), |
|
||||
created() { |
|
||||
this.getPolicyDet(); |
|
||||
}, |
|
||||
methods: { |
|
||||
async getPolicyDet() { |
|
||||
try { |
|
||||
const params = { param: { id: this.policyId } }; |
|
||||
const res = await selPolicy(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.obj.title = data.title; |
|
||||
this.obj.content = data.content; |
|
||||
this.obj.time = data.publishTime; |
|
||||
this.obj.source = data.publishDepartName; |
|
||||
window.scroll(0, 0); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style scoped lang="stylus"> |
|
||||
.inner { |
|
||||
margin: 40px auto; |
|
||||
} |
|
||||
|
|
||||
.back-btn { |
|
||||
width: 80px; |
|
||||
position: absolute; |
|
||||
right: 0; |
|
||||
} |
|
||||
|
|
||||
.policy-title { |
|
||||
height: 120px; |
|
||||
font-size: 24px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
color: rgba(0, 0, 0, 0.85); |
|
||||
opacity: 1; |
|
||||
text-align: center; |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
justify-content: center; |
|
||||
padding: 0 150px; |
|
||||
border-bottom: 1px solid #707070; |
|
||||
} |
|
||||
|
|
||||
.policy-info { |
|
||||
height: 76px; |
|
||||
line-height: 76px; |
|
||||
text-align: center; |
|
||||
} |
|
||||
|
|
||||
.policy-content { |
|
||||
padding: 0 25px 25px; |
|
||||
font-size: 16px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
font-weight: 400; |
|
||||
font-family: Microsoft YaHei; |
|
||||
} |
|
||||
</style> |
|
@ -1,305 +0,0 @@ |
|||||
<!-- |
|
||||
Copyright (c) 2020. |
|
||||
author: bin |
|
||||
email: binbin0314@126.com |
|
||||
--> |
|
||||
|
|
||||
<template> |
|
||||
<div class="box"> |
|
||||
<div class="search-list"> |
|
||||
<!-- <search-list @iptCon="getInput" /> --> |
|
||||
<span> |
|
||||
<a-checkbox :checked="pStatus.bw - 0 === 1" @click="changeStatus('bw')">国家</a-checkbox> |
|
||||
<a-checkbox :checked="pStatus.sx - 0 === 1" @click="changeStatus('sx')">山西省</a-checkbox> |
|
||||
<a-checkbox :checked="pStatus.zg - 0 === 1" @click="changeStatus('zg')">山西省综改区</a-checkbox> |
|
||||
<a-checkbox :checked="pStatus.ty - 0 === 1" @click="changeStatus('ty')">太原市</a-checkbox> |
|
||||
</span> |
|
||||
<a-input-group class="search" compact> |
|
||||
<a-select |
|
||||
@change="changeCode" |
|
||||
style="width: 120px; height: 40px" |
|
||||
v-model="pStatus.policyText[pStatus.value - 1]" |
|
||||
> |
|
||||
<a-select-option value="1">标题</a-select-option> |
|
||||
<a-select-option value="2">地区</a-select-option> |
|
||||
<a-select-option value="3">发布部门</a-select-option> |
|
||||
</a-select> |
|
||||
<a-input-search |
|
||||
@search="getPolicy" |
|
||||
enter-button="搜索" |
|
||||
placeholder="请输入..." |
|
||||
style="width: 76.2%" |
|
||||
v-model="pStatus.iptCon" |
|
||||
/> |
|
||||
</a-input-group> |
|
||||
</div> |
|
||||
<div class="policy-box"> |
|
||||
<div :key="index" v-for="(item, index) in lists"> |
|
||||
<div class="date-box"> |
|
||||
<p class="date-mon">{{ monthEnglish[item.publishTime.split('-')[1] - 1] }}.</p> |
|
||||
<p class="date-day">{{ item.publishTime.split('-')[2] }}</p> |
|
||||
</div> |
|
||||
<p class="item-title">{{ item.title }}</p> |
|
||||
<p class="item-content">{{ item.intro }}</p> |
|
||||
<!-- <p class="item-content" v-html="item.content"></p> --> |
|
||||
<p class="source-time"> |
|
||||
<span |
|
||||
@click="openWin(item.titleUrl)" |
|
||||
class="baseColor source" |
|
||||
>来源:{{ item.publishDepartName }}</span> |
|
||||
<span class="time">{{ item.publishTime }}</span> |
|
||||
</p> |
|
||||
<p class="original baseColor"> |
|
||||
<span @click="LookSource(item.id)"> |
|
||||
了解更多 |
|
||||
<a-icon type="arrow-right" /> |
|
||||
</span> |
|
||||
</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
<a-pagination |
|
||||
:current="current" |
|
||||
:page-size="pageSize" |
|
||||
:total="total" |
|
||||
@change="onShowSizeChange" |
|
||||
class="pagination" |
|
||||
show-less-items |
|
||||
show-quick-jumper |
|
||||
v-show="total > 5" |
|
||||
/> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { mapState, mapMutations } from 'vuex'; |
|
||||
import { selLikePolicy } from 'config/api'; |
|
||||
export default { |
|
||||
name: 'PolicyList', |
|
||||
data() { |
|
||||
return { |
|
||||
str: '这是创新政策界面', |
|
||||
lists: [], |
|
||||
total: 0, |
|
||||
pageSize: 5, |
|
||||
monthEnglish: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Spt', 'Oct', 'Nov', 'Dec'], |
|
||||
pCode: ['title', 'area', 'area'], |
|
||||
pStatus: { |
|
||||
bw: 0, |
|
||||
sx: 0, |
|
||||
zg: 0, |
|
||||
ty: 0, |
|
||||
value: 1, // 搜索框当前选项value |
|
||||
code: 'title', // 搜索框当前选项code |
|
||||
policyText: ['标题', '地区', '发布部门'], // 搜索框选项列表 |
|
||||
iptCon: '', // 搜索框input内容 |
|
||||
}, |
|
||||
}; |
|
||||
}, |
|
||||
computed: mapState('home', ['current', 'policyStatus']), |
|
||||
|
|
||||
watch: { |
|
||||
policyStatus(val) { |
|
||||
this.setCurrent(1); |
|
||||
this.getPolictList(); |
|
||||
}, |
|
||||
}, |
|
||||
|
|
||||
created() { |
|
||||
this.pStatus = this.policyStatus; |
|
||||
this.getPolictList(); |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
...mapMutations('home', ['setPolicyId', 'setCurrent', 'setPolicyStatus']), |
|
||||
async getPolictList() { |
|
||||
try { |
|
||||
const params = { |
|
||||
param: { |
|
||||
bw: this.policyStatus.bw, |
|
||||
code: this.policyStatus.code, |
|
||||
input: this.policyStatus.iptCon, |
|
||||
pageNum: this.current, |
|
||||
pageSize: 5, |
|
||||
sx: this.policyStatus.sx, |
|
||||
zg: this.policyStatus.zg, |
|
||||
ty: this.policyStatus.ty, |
|
||||
}, |
|
||||
}; |
|
||||
const res = await selLikePolicy(params); |
|
||||
const { code, msg, data } = res.data; |
|
||||
if (code === 200) { |
|
||||
this.lists = data.list; |
|
||||
this.total = data.total - 0; |
|
||||
window.scroll(0, 0); |
|
||||
} |
|
||||
} catch (error) { |
|
||||
console.log(error); |
|
||||
} |
|
||||
}, |
|
||||
// 查看政策详情 |
|
||||
LookSource(id) { |
|
||||
this.setPolicyId(id); |
|
||||
this.$router.push('/Policy/PolicyDetails'); |
|
||||
}, |
|
||||
// 改变单当前页数 |
|
||||
onShowSizeChange(current, size) { |
|
||||
this.setCurrent(current); |
|
||||
this.getPolictList(); |
|
||||
}, |
|
||||
// 政策界面课程类目多选框发生改变时的事件 |
|
||||
changeStatus(str) { |
|
||||
if (this.pStatus[str]) { |
|
||||
this.pStatus[str] = 0; |
|
||||
} else { |
|
||||
this.pStatus[str] = 1; |
|
||||
} |
|
||||
this.setPolicyStatus(this.pStatus); |
|
||||
}, |
|
||||
// 政策界面课程类目搜索提示 |
|
||||
changeCode(value) { |
|
||||
this.pStatus.code = this.pCode[value - 1]; |
|
||||
}, |
|
||||
// 点击搜索按钮 |
|
||||
getPolicy() { |
|
||||
this.setCurrent(1); |
|
||||
this.setPolicyStatus(this.pStatus); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style scoped lang="stylus"> |
|
||||
.box { |
|
||||
width: 100%; |
|
||||
min-height: 1037px; |
|
||||
overflow: hidden; |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.search-list { |
|
||||
height: 72px; |
|
||||
line-height: 72px; |
|
||||
background: #fff; |
|
||||
padding: 0 24px; |
|
||||
position: relative; |
|
||||
} |
|
||||
|
|
||||
.search { |
|
||||
width: 500px; |
|
||||
position: absolute; |
|
||||
right: 25px; |
|
||||
top: 20px; |
|
||||
} |
|
||||
|
|
||||
.policy-box { |
|
||||
div { |
|
||||
position: relative; |
|
||||
width: 100%; |
|
||||
height: 238px; |
|
||||
overflow: hidden; |
|
||||
background: #fff; |
|
||||
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
margin-top: 24px; |
|
||||
padding: 25px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.item-title { |
|
||||
margin-left: 200px; |
|
||||
overflow: hidden; |
|
||||
display: -webkit-box; |
|
||||
font-size: 24px; |
|
||||
color: rgba(0, 0, 0, 0.65); |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: bold; |
|
||||
-webkit-line-clamp: 1; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
|
|
||||
.item-content { |
|
||||
margin-left: 200px; |
|
||||
text-indent: 2em; |
|
||||
font-size: 16px; |
|
||||
line-height: 36px; |
|
||||
color: rgba(0, 0, 0, 0.35); |
|
||||
font-family: Microsoft YaHei; |
|
||||
overflow: hidden; |
|
||||
display: -webkit-box; |
|
||||
-webkit-line-clamp: 2; |
|
||||
-webkit-box-orient: vertical; |
|
||||
} |
|
||||
|
|
||||
.source { |
|
||||
cursor: pointer; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
opacity: 1; |
|
||||
margin-right: 24px; |
|
||||
} |
|
||||
|
|
||||
.time { |
|
||||
font-size: 14px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
color: rgba(0, 0, 0, 0.25); |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.original { |
|
||||
position: absolute; |
|
||||
right: 25px; |
|
||||
bottom: 25px; |
|
||||
font-size: 14px; |
|
||||
font-family: Microsoft YaHei; |
|
||||
font-weight: 400; |
|
||||
line-height: 22px; |
|
||||
opacity: 1; |
|
||||
margin-bottom: 0; |
|
||||
|
|
||||
span { |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.date-box { |
|
||||
height: 188px !important; |
|
||||
width: 188px !important; |
|
||||
position: absolute !important; |
|
||||
top: 0 !important; |
|
||||
// box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); |
|
||||
text-align: center; |
|
||||
box-shadow: none !important; |
|
||||
|
|
||||
p { |
|
||||
margin-bottom: 0 !important; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.date-mon { |
|
||||
font-size: 40px; |
|
||||
height: 40px; |
|
||||
line-height: 40px; |
|
||||
font-weight: 500; |
|
||||
color: #13ACC4; |
|
||||
} |
|
||||
|
|
||||
.date-day { |
|
||||
font-size: 70px; |
|
||||
height: 80px; |
|
||||
line-height: 80px; |
|
||||
font-weight: bold; |
|
||||
color: #13ACC4; |
|
||||
} |
|
||||
|
|
||||
.source-time { |
|
||||
margin-left: 200px; |
|
||||
position: absolute; |
|
||||
bottom: 26px; |
|
||||
margin-bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.pagination { |
|
||||
margin-top: 68px; |
|
||||
text-align: right; |
|
||||
} |
|
||||
</style> |
|
Loading…
Reference in new issue