|
@@ -1,19 +1,205 @@
|
|
|
<template>
|
|
|
<div id="dockDetail">
|
|
|
- <p>dockDetail</p>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24" class="style">
|
|
|
+ <el-image :src="beijingPic"></el-image>
|
|
|
+ <el-col :span="24" class="info">
|
|
|
+ <div class="w_1200">
|
|
|
+ <el-col :span="24" class="top">
|
|
|
+ <p>吉林省计算中心对接直播大厅</p>
|
|
|
+ <p>主办方:吉林省计算中心</p>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="main">
|
|
|
+ <el-col :span="6" class="btn">
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-button type="primary" icon="el-icon-tickets" @click="btnInfo">项目信息</el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-button type="danger" icon="el-icon-phone-outline" @click="btnPhone">线下对接</el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="18" class="mainInfo">
|
|
|
+ <el-col :span="24" v-if="display === '1'">
|
|
|
+ <p class="name textOver">{{ productInfo.name }}</p>
|
|
|
+ <div class="brief">
|
|
|
+ <p>
|
|
|
+ <span>应用领域:{{ productInfo.field }}</span>
|
|
|
+ <span>服务范围:{{ productInfo.scope }}</span>
|
|
|
+ </p>
|
|
|
+ <p>
|
|
|
+ <span>产品类型:{{ productInfo.product_type_name }}</span>
|
|
|
+ <span>研发阶段:{{ productInfo.phase }}</span>
|
|
|
+ </p>
|
|
|
+ <p>
|
|
|
+ <span>交易方式:{{ productInfo.business }}</span>
|
|
|
+ <span>交易价格:{{ productInfo.price }}/{{ productInfo.priceunit }}</span>
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ <p class="intro">
|
|
|
+ <span><i class="el-icon-date"></i>项目简介</span>
|
|
|
+ <span>{{ productInfo.introduction }}</span>
|
|
|
+ </p>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" v-if="display === '2'">
|
|
|
+ <p>{{ productInfo.contact_user }}</p>
|
|
|
+ <p>{{ productInfo.contact_tel }}</p>
|
|
|
+ </el-col>
|
|
|
+ </el-col>
|
|
|
+ </el-col>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { mapState, createNamespacedHelpers } from 'vuex';
|
|
|
+const { mapActions: mapProduct } = createNamespacedHelpers('marketproduct');
|
|
|
export default {
|
|
|
name: 'dockDetail',
|
|
|
props: {},
|
|
|
components: {},
|
|
|
- data: () => ({}),
|
|
|
- created() {},
|
|
|
- computed: {},
|
|
|
- methods: {},
|
|
|
+ data: () => ({
|
|
|
+ beijingPic: require('@a/live/top_3.png'),
|
|
|
+ display: '1',
|
|
|
+ productInfo: {},
|
|
|
+ }),
|
|
|
+ created() {
|
|
|
+ if (this.$route.query.id) {
|
|
|
+ this.searchInfo();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ ...mapProduct(['fetch']),
|
|
|
+ async searchInfo() {
|
|
|
+ let res = await this.fetch(this.$route.query.id);
|
|
|
+ if (res.errcode === 0) {
|
|
|
+ this.$set(this, `productInfo`, res.data);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 项目信息
|
|
|
+ btnInfo() {
|
|
|
+ this.display = '1';
|
|
|
+ },
|
|
|
+ // 线下对接
|
|
|
+ btnPhone() {
|
|
|
+ this.display = '2';
|
|
|
+ },
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapState(['user']),
|
|
|
+ pageTitle() {
|
|
|
+ return `${this.$route.meta.title}`;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ metaInfo() {
|
|
|
+ return { title: this.$route.meta.title };
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
-<style lang="less" scoped></style>
|
|
|
+<style lang="less" scoped>
|
|
|
+.w_1200 {
|
|
|
+ width: 1200px;
|
|
|
+ margin: 0 auto;
|
|
|
+}
|
|
|
+p {
|
|
|
+ padding: 0;
|
|
|
+ margin: 0;
|
|
|
+}
|
|
|
+.style {
|
|
|
+ height: 100vh;
|
|
|
+}
|
|
|
+.style .info {
|
|
|
+ position: relative;
|
|
|
+ top: -450px;
|
|
|
+}
|
|
|
+.style .top {
|
|
|
+ position: relative;
|
|
|
+ top: 0;
|
|
|
+ width: 100%;
|
|
|
+ text-align: center;
|
|
|
+ z-index: 999;
|
|
|
+ height: 230px;
|
|
|
+ margin: 0 0 20px 0;
|
|
|
+}
|
|
|
+.style .top p:first-child {
|
|
|
+ font-size: 50px;
|
|
|
+ color: #fff;
|
|
|
+}
|
|
|
+.style .top p:last-child {
|
|
|
+ font-size: 30px;
|
|
|
+ color: #fff;
|
|
|
+ position: absolute;
|
|
|
+ width: 100%;
|
|
|
+ top: 170px;
|
|
|
+}
|
|
|
+.style .main {
|
|
|
+ height: 670px;
|
|
|
+ border: 1px solid red;
|
|
|
+ background: #fff;
|
|
|
+ overflow: hidden;
|
|
|
+ padding: 30px 20px;
|
|
|
+}
|
|
|
+.main .btn div {
|
|
|
+ padding: 30px 0 0px 0;
|
|
|
+}
|
|
|
+/deep/.main .btn .el-button {
|
|
|
+ float: left;
|
|
|
+ margin: 0 40px;
|
|
|
+ width: 70%;
|
|
|
+}
|
|
|
+.main .mainInfo {
|
|
|
+ border: 1px solid red;
|
|
|
+ height: 610px;
|
|
|
+}
|
|
|
+.mainInfo .name {
|
|
|
+ font-size: 25px;
|
|
|
+ text-align: center;
|
|
|
+ height: 90px;
|
|
|
+ line-height: 90px;
|
|
|
+ border-bottom: 2px solid red;
|
|
|
+ margin: 0 60px;
|
|
|
+}
|
|
|
+.mainInfo .brief {
|
|
|
+ float: left;
|
|
|
+ padding: 0 88px 15px 88px;
|
|
|
+ color: red;
|
|
|
+ margin: 15px 20px 0 19px;
|
|
|
+ width: 75%;
|
|
|
+ border-bottom: 1px dashed red;
|
|
|
+}
|
|
|
+.mainInfo .brief p {
|
|
|
+ float: left;
|
|
|
+ width: 100%;
|
|
|
+ padding: 0 0 15px 0;
|
|
|
+}
|
|
|
+.mainInfo .brief p span:first-child {
|
|
|
+ float: left;
|
|
|
+ width: 50%;
|
|
|
+}
|
|
|
+.mainInfo .intro {
|
|
|
+ float: left;
|
|
|
+ padding: 20px;
|
|
|
+ width: 95%;
|
|
|
+}
|
|
|
+.mainInfo .intro span:first-child {
|
|
|
+ display: inline-block;
|
|
|
+ width: 100%;
|
|
|
+ font-size: 20px;
|
|
|
+ color: red;
|
|
|
+}
|
|
|
+.mainInfo .intro span:last-child {
|
|
|
+ display: inline-block;
|
|
|
+ line-height: 25px;
|
|
|
+ color: #666;
|
|
|
+ text-indent: 2rem;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ -webkit-line-clamp: 13;
|
|
|
+ word-break: break-all;
|
|
|
+ display: -webkit-box;
|
|
|
+ -webkit-box-orient: vertical;
|
|
|
+}
|
|
|
+</style>
|