Browse Source

细节

master
aBin 5 years ago
parent
commit
394e924385
  1. 2
      src/components/PlatformList/PlatformList.vue
  2. 20
      src/views/Activity/ActDetails.vue
  3. 53
      src/views/IncubationPlatform/Children/MakerSpace.vue
  4. 46
      src/views/IncubationPlatform/Children/Services.vue
  5. 238
      src/views/Industry/Children/Serve.vue
  6. 2
      src/views/NewPlatform/Children/AchDet.vue
  7. 4
      src/views/NewPlatform/Children/ShareChild/InsDet.vue
  8. 8
      src/views/NewPlatform/Children/ShareChild/Institute.vue

2
src/components/PlatformList/PlatformList.vue

@ -189,7 +189,7 @@ export default {
name: 'Institute',
params: {
id: item.id,
direction: item.direction,
description: item.description,
name: item.name,
},
});

20
src/views/Activity/ActDetails.vue

@ -6,24 +6,16 @@
</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>
<a-icon class="baseColor" style="font-size: 14px; margin-right: 10px" type="clock-circle" />
<span>{{ actDetail.time }}</span>
</span>
<span style="margin-left: 60px">
<a-icon class="baseColor" style="margin-right: 10px" type="environment" />
<span>{{ actDetail.address }}</span>
<span>{{ actDetail.site }}</span>
</span>
</div>
<div class="policy-content" v-dompurify-html="actDetail.content"></div>
<enroll
:act-name="actDetail.title"
:activity-id="actDetail.activityId"
style="margin: 50px 25px"
/>
<enroll :act-name="actDetail.title" :activity-id="actDetail.activityId" style="margin: 50px 25px" />
</div>
</div>
</template>
@ -38,7 +30,9 @@ export default {
return {};
},
computed: mapState('home', ['actDetail']),
created() {},
created() {
console.log(this.actDetail);
},
methods: {},
};
</script>

53
src/views/IncubationPlatform/Children/MakerSpace.vue

@ -11,7 +11,7 @@
<div>
<div class="d-flex flex-column white">
<div class="font-bold-32 title-color py-3 px-2">众创空间介绍</div>
<div class="pa-3 font-16 line-height-36" style="text-indent:2em">
<div class="pa-3 font-16 line-height-36" style="text-indent: 2em">
<div>
本众创空间分为线下实体众创空间与线上虚拟众创空间重点面向功能食品生物医药和大健康产业
领域科技型中小微企业创客和创新创业团队开展创业孵化培育高新技术企业促进科技成果转化和产业集聚发展
@ -24,14 +24,10 @@
</div>
<div>
目前空间已引入科创咨询专业服务机构并与多家
<span
@click="$router.push('/IncubationPlatform/Partner')"
class="pointer baseColor"
>第三方专业机构</span>
<span @click="$router.push('/IncubationPlatform/Partner')" class="pointer baseColor">第三方专业机构</span>
建立战略合作聘请
<span @click="$router.push('')" class="pointer baseColor">创业导师</span>
30余名服务领域涵盖专业技术企业管理科创咨询财务税务法务咨询等可随时为入孵企业提供针
对性一对一创业辅导服务
30余名服务领域涵盖专业技术企业管理科创咨询财务税务法务咨询等可随时为入孵企业提供针 对性一对一创业辅导服务
</div>
</div>
</div>
@ -44,43 +40,18 @@
<div :key="index" style="margin-top: 40px" 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 @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>部分组成
<span @click="$router.push('')" class="pointer baseColor">孵化场所</span>
<span @click="$router.push('')" class="pointer baseColor">公共实验室</span>
<span @click="$router.push('')" 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"
/>
</div>
<div
@click="item.url ? jump(item.url) : ''"
class="d-flex justify-space-between pointer"
v-else
>
<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" />
</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>

46
src/views/IncubationPlatform/Children/Services.vue

@ -26,13 +26,8 @@
:title="item.intro"
/>
<p class="font-24 my-4" @click="showModal(item.id)">{{ item.name }}</p>
<p class="font-16 my-4 textColor line-height-30 item-content item-intro">{{ item.intro }}</p>
<p class="see-more" @click="showIntro(item.intro)">查看全部</p>
<!-- <p
@click="jump(item.id)"
class="font-16 baseColor"
style="text-align: right; cursor: pointer"
>了解更多</p> -->
<p class="font-16 my-4 textColor line-height-30 item-intro">{{ item.intro }}</p>
<p class="see-more" @click="showDiv(index)">{{ showList[index] }}</p>
</div>
</div>
<div class="inner">
@ -90,9 +85,6 @@
</a-form-item>
</a-form>
</a-modal>
<a-modal :confirm-loading="confirmLoading1" title="服务简介" :visible="visible1" :footer="null" @cancel="handleCancel1" width="50%">
{{ intro }}
</a-modal>
</div>
</template>
@ -131,11 +123,9 @@ export default {
action: upload,
fileList: [],
visible: false,
visible1: false,
formItemLayout,
formTailLayout,
confirmLoading: false,
confirmLoading1: false,
platform: {
companyName: '', //
manName: '', //
@ -156,6 +146,7 @@ export default {
phoneRules: [
{ required: true, pattern: new RegExp(/^[1][3,4,5,6,7,8,9][0-9]{9}$/), whitespace: true, message: '请输入正确的手机号' },
],
showList: ['查看全部', '查看全部', '查看全部', '查看全部'],
typeData: {
type: 0,
id: '',
@ -220,13 +211,6 @@ export default {
this.typeData.id = id;
this.visible = true;
},
showIntro(intro) {
this.visible1 = true;
this.intro = intro;
},
handleCancel1() {
this.visible1 = false;
},
//
handleCancel(e) {
this.visible = false;
@ -330,6 +314,25 @@ export default {
fileChange(info) {
this.fileList = info.fileList;
},
showDiv(index) {
var divs = document.getElementsByClassName('item-intro');
let list = ['查看全部', '查看全部', '查看全部', '查看全部'];
for (let i = 0; i < divs.length; i++) {
if (index === i) {
if (divs[index].style.height === '90px' || divs[index].style.height === '') {
list[i] = '收起';
divs[i].style.height = 'auto';
} else {
divs[i].style.height = '90px';
list[i] = '查看全部';
}
} else {
divs[i].style.height = '90px';
list[i] = '查看全部';
}
}
this.showList = list;
},
},
};
</script>
@ -356,8 +359,9 @@ export default {
.item-intro {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
// -webkit-line-clamp: 3;
// -webkit-box-orient: vertical;
height: 90px;
overflow: hidden;
}

238
src/views/Industry/Children/Serve.vue

@ -8,35 +8,81 @@
<div class="flow-path">
<div class="flow-title">服务流程</div>
<div class="flow-content">
<img src="~assets/image.png" style="width:100%" />
<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>
<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" @click="showModal(item.id)" />
<p class="font-24 my-4" @click="showModal(item.id)">{{ item.name }}</p>
<p class="font-16 my-4 textColor line-height-30 item-content">{{ item.intro }}</p>
<p
<!-- <p
@click="jump(item.id)"
class="font-16 baseColor"
style="text-align: right; cursor: pointer"
>了解更多</p>
>了解更多</p> -->
</div>
</div>
<a-modal :confirm-loading="confirmLoading" 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 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="需求描述">
<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 { mapMutations } from 'vuex';
import { selService } from 'config/api';
import { mapMutations, mapState, mapActions } from 'vuex';
import { selService, serviceApply, upload } from 'config/api';
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue';
import Banner from 'components/Banner/Banner.vue';
import HNav from './components/HNav.vue';
const formItemLayout = {
labelCol: { span: 5 },
wrapperCol: { span: 18 },
};
const formTailLayout = {
labelCol: { span: 6 },
wrapperCol: { span: 18, offset: 6 },
};
export default {
name: 'Serve',
components: { HNav, Banner, BreadCrumb },
@ -53,13 +99,61 @@ export default {
current: 1,
pageSize: 8,
total: 0,
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: '请输入正确的手机号' },
],
typeData: {
type: 0,
id: '',
},
};
},
created() {
computed: mapState('user', ['picCode']),
async created() {
this.getService();
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: {
...mapMutations('home', ['setServiceArr']),
...mapActions('user', ['sendCode', 'sendPicCode']),
...mapActions('home', ['getUserSer']),
//
async getService() {
try {
@ -73,15 +167,113 @@ export default {
console.log(data);
}
},
//
jump(id) {
this.setServiceArr([]);
this.setServiceArr(this.arr);
this.$router.push({
path: '/NewPlatform/ServiceDet',
name: 'ServiceDet',
params: { id },
});
//
showModal(id) {
this.typeData.id = id;
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.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;
},
},
};

2
src/views/NewPlatform/Children/AchDet.vue

@ -9,7 +9,7 @@
<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">
<div class="equ-info-left" style="width: 100px">
<p>成果名字</p>
<p>专利类型</p>
<p>专利号</p>

4
src/views/NewPlatform/Children/ShareChild/InsDet.vue

@ -10,7 +10,7 @@
<div class="equ-info-box">
<p class="equ-name">{{ obj.name }}</p>
<div style="margin-top: 20px" class="d-flex flex-wrap" v-if="listState === 1">
<div class="equ-info-left" style="width: 200px">
<div class="equ-info-left" style="width: 100px">
<!-- <p>仪器名字</p> -->
<p>制造商</p>
<p>型号</p>
@ -40,7 +40,7 @@
</div>
</div>
<div style="margin-top: 20px" class="d-flex flex-wrap" v-if="listState === 3">
<div class="equ-info-left" style="width: 200px">
<div class="equ-info-left" style="width: 100px">
<p>公司名称</p>
<p>产品编号</p>
<p>联系人</p>

8
src/views/NewPlatform/Children/ShareChild/Institute.vue

@ -7,7 +7,7 @@
<banner :show-page="showPage" />
<div class="inner ins-box">
<p class="font-bold-24 item-title">{{ shareName }}</p>
<div>{{ direction }}</div>
<div>{{ description }}</div>
<p class="font-bold-24 item-title" v-if="list[0]">设备列表</p>
<div class="d-flex flex-wrap" v-if="list[0]">
<div :class="(index + 1) % 4 === 0 ? 'margin-0' : ''" :key="index" class="item-box mb-8" v-for="(item, index) in list">
@ -99,7 +99,7 @@ export default {
],
obj: null,
list: [],
direction: '',
description: '',
shareName: '',
};
},
@ -111,8 +111,8 @@ export default {
} else {
this.id = this.LabId;
}
if (this.$route.params.direction) {
this.direction = this.$route.params.direction;
if (this.$route.params.description) {
this.description = this.$route.params.description;
}
if (this.$route.params.name) {
this.shareName = this.$route.params.name;

Loading…
Cancel
Save