Commit ae176f56 authored by lei's avatar lei

add:孵化器企业信息

parent 36fdc16d
// var ServiceURL = 'http://192.168.3.216:9002'; // var ServiceURL = 'http://192.168.3.216:9002';
// var ServiceURL = 'http://192.168.3.250:9103'; // var ServiceURL = 'http://192.168.3.250:9103';
var ServiceURL = 'http://gqfhq.gemho.cn:9103'; // 正式环境 // var ServiceURL = 'http://gqfhq.gemho.cn:9103'; // 正式环境
// var ServiceURL = 'http://192.168.3.226:9103' // 测试环境 var ServiceURL = "http://192.168.2.37:9103"; // 测试环境
window.VUE_APP_API = {ServiceURL:ServiceURL} window.VUE_APP_API = { ServiceURL: ServiceURL };
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
"codemirror": "^5.49.2", "codemirror": "^5.49.2",
"connect": "3.6.6", "connect": "3.6.6",
"core-js": "^2.6.12", "core-js": "^2.6.12",
"echarts": "^5.6.0",
"element-ui": "^2.13.2", "element-ui": "^2.13.2",
"file-saver": "1.3.8", "file-saver": "1.3.8",
"fuse.js": "3.4.4", "fuse.js": "3.4.4",
......
import router from './routers' import router from "./routers";
import store from '@/store' import store from "@/store";
import Config from '@/settings' import Config from "@/settings";
import NProgress from 'nprogress' // progress bar import NProgress from "nprogress"; // progress bar
import 'nprogress/nprogress.css'// progress bar style import "nprogress/nprogress.css"; // progress bar style
import { getToken } from '@/utils/auth' // getToken from cookie import { getToken } from "@/utils/auth"; // getToken from cookie
import { buildMenus } from '@/api/system/menu' import { buildMenus } from "@/api/system/menu";
import { filterAsyncRouter } from '@/store/modules/permission' import { filterAsyncRouter } from "@/store/modules/permission";
NProgress.configure({ showSpinner: false }) // NProgress Configuration NProgress.configure({ showSpinner: false }); // NProgress Configuration
const whiteList = ['/plus/login', '/register'] // no redirect whitelist const whiteList = ["/plus/login", "/register"]; // no redirect whitelist
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
if (to.meta.title) { if (to.meta.title) {
//document.title = to.meta.title + ' - ' + Config.title //document.title = to.meta.title + ' - ' + Config.title
document.title = to.meta.title document.title = to.meta.title;
} }
NProgress.start(); NProgress.start();
if (getToken()) { if (getToken()) {
// 已登录且要跳转的页面是登录页 // 已登录且要跳转的页面是登录页
if (to.path === '/plus/login') { if (to.path === "/plus/login") {
next({ path: '/' }) next({ path: "/" });
NProgress.done() NProgress.done();
} else { } else {
if (store.getters.roles.length === 0) { // 判断当前用户是否已拉取完user_info信息 if (store.getters.roles.length === 0) {
store.dispatch('GetInfo').then(() => { // 拉取user_info // 判断当前用户是否已拉取完user_info信息
// 动态路由,拉取菜单 store
loadMenus(next, to) .dispatch("GetInfo")
}).catch(() => { .then(() => {
store.dispatch('LogOut').then(() => { // 拉取user_info
location.reload() // 为了重新实例化vue-router对象 避免bug // 动态路由,拉取菜单
}) loadMenus(next, to);
}) })
// 登录时未拉取 菜单,在此处拉取 .catch(() => {
} else if (store.getters.loadMenus) { store.dispatch("LogOut").then(() => {
// 修改成false,防止死循环 location.reload(); // 为了重新实例化vue-router对象 避免bug
store.dispatch('updateLoadMenus') });
loadMenus(next, to) });
} else { // 登录时未拉取 菜单,在此处拉取
next() } else if (store.getters.loadMenus) {
} // 修改成false,防止死循环
} store.dispatch("updateLoadMenus");
} else { loadMenus(next, to);
/* has no token*/ } else {
if (whiteList.indexOf(to.path) !== -1) { // 在免登录白名单,直接进入 next();
next() }
} else { }
window.location.href = `/plus/login?redirect=${to.fullPath}`; } else {
NProgress.done() /* has no token*/
} if (whiteList.indexOf(to.path) !== -1) {
} // 在免登录白名单,直接进入
}) next();
} else {
window.location.href = `/plus/login?redirect=${to.fullPath}`;
NProgress.done();
}
}
});
export const loadMenus = (next, to) => { export const loadMenus = (next, to) => {
buildMenus().then(res => { buildMenus().then(res => {
const sdata = JSON.parse(JSON.stringify(res)) const sdata = JSON.parse(JSON.stringify(res));
const rdata = JSON.parse(JSON.stringify(res)) const rdata = JSON.parse(JSON.stringify(res));
const sidebarRoutes = filterAsyncRouter(sdata) const sidebarRoutes = filterAsyncRouter(sdata);
const rewriteRoutes = filterAsyncRouter(rdata, true) const rewriteRoutes = filterAsyncRouter(rdata, true);
rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true }) rewriteRoutes.push({ path: "*", redirect: "/404", hidden: true });
store.dispatch('GenerateRoutes', rewriteRoutes).then(() => { // 存储路由 store.dispatch("GenerateRoutes", rewriteRoutes).then(() => {
router.addRoutes(rewriteRoutes) // 动态添加可访问路由表 // 存储路由
next({ ...to, replace: true }) router.addRoutes(rewriteRoutes); // 动态添加可访问路由表
}) next({ ...to, replace: true });
store.dispatch('SetSidebarRouters', sidebarRoutes) });
}) store.dispatch("SetSidebarRouters", sidebarRoutes);
} });
};
router.afterEach(() => { router.afterEach(() => {
NProgress.done() // finish progress bar NProgress.done(); // finish progress bar
}) });
import axios from 'axios' import axios from "axios";
import { Notification } from 'element-ui' import { Notification } from "element-ui";
import { getToken } from '@/utils/auth' import { getToken } from "@/utils/auth";
import Config from '@/settings' import Config from "@/settings";
// 使请求头可以携带cookie // 使请求头可以携带cookie
axios.defaults.withCredentials = true; axios.defaults.withCredentials = true;
//var baseURL = (VUE_APP_API.ServiceURL || process.env.VUE_APP_LOCAL_API) + '/'; //var baseURL = (VUE_APP_API.ServiceURL || process.env.VUE_APP_LOCAL_API) + '/';
var baseURL = process.env.NODE_ENV var baseURL =
=== 'development' ? process.env.VUE_APP_LOCAL_API + '/' : (VUE_APP_API.ServiceURL || process.env.VUE_APP_LOCAL_API) + '/'; process.env.NODE_ENV === "development"
? process.env.VUE_APP_BASE_API + "/"
: (VUE_APP_API.ServiceURL || process.env.VUE_APP_BASE_API) + "/";
// 创建axios实例 // 创建axios实例
const service = axios.create({ const service = axios.create({
baseURL: baseURL, baseURL: baseURL,
timeout: Config.timeout // 请求超时时间 timeout: Config.timeout // 请求超时时间
}) });
// request拦截器 // request拦截器
service.interceptors.request.use( service.interceptors.request.use(
config => { config => {
if (getToken()) { if (getToken()) {
config.headers['Authorization'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 config.headers["Authorization"] = getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
} }
config.headers['Content-Type'] = 'application/json' config.headers["Content-Type"] = "application/json";
return config return config;
}, },
error => { error => {
Promise.reject(error) Promise.reject(error);
} }
) );
// response 拦截器 // response 拦截器
service.interceptors.response.use( service.interceptors.response.use(
response => { response => {
return response.data return response.data;
}, },
error => { error => {
if (error.response.status) { if (error.response.status) {
const responseCode = error.response.status const responseCode = error.response.status;
switch (responseCode) { switch (responseCode) {
case 400: case 400:
Notification({ Notification({
title: error.response.data.msg, title: error.response.data.msg,
duration: 2000, duration: 2000,
type: 'warning' type: "warning"
}) });
break break;
// token 过期 // token 过期
case 401: case 401:
Notification({ Notification({
title: '登录过期,请重新登录', title: "登录过期,请重新登录",
duration: 2000, duration: 2000,
type: 'warning' type: "warning"
}) });
setTimeout(() => { // setTimeout(() => {
window.localStorage.removeItem('token') // window.localStorage.removeItem("token");
window.location = '#/'; // // window.location = '#/';
location.reload() // location.reload();
}, 1000) // }, 1000);
break break;
default: default:
break break;
} }
return error.response.data return error.response.data;
} }
} }
) );
export default service export default service;
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="header"> <div class="header">
<ul> <ul>
<li @click="changeNav(0)" :class="{ active: activeIndex === 0 }"> <li @click="changeNav(0)" :class="{ active: activeIndex === 0 }">
<div class="title">孵化器概况</div> <div class="title">孵化器概况</div>
</li> </li>
<li @click="changeNav(1)" :class="{ active: activeIndex === 1 }"> <li @click="changeNav(1)" :class="{ active: activeIndex === 1 }">
<div class="title">在孵企业</div> <div class="title">在孵企业</div>
</li> </li>
<li @click="changeNav(2)" :class="{ active: activeIndex === 2 }"> <li @click="changeNav(2)" :class="{ active: activeIndex === 2 }">
<div class="title">毕业企业</div> <div class="title">毕业企业</div>
</li> </li>
<li @click="changeNav(3)" :class="{ active: activeIndex === 3 }"> <li @click="changeNav(3)" :class="{ active: activeIndex === 3 }">
<div class="title">中介机构</div> <div class="title">中介机构</div>
</li> </li>
<li @click="changeNav(4)" :class="{ active: activeIndex === 4 }"> <li @click="changeNav(4)" :class="{ active: activeIndex === 4 }">
<div class="title">创业导师</div> <div class="title">创业导师</div>
</li> </li>
</ul> </ul>
</div> </div>
<div class="bodyer"> <div class="bodyer">
<ul class="panelsWrapper"> <ul class="panelsWrapper">
<li class="overview tab_panel_0" v-if="activeIndex === 0"> <li class="overview tab_panel_0" v-if="activeIndex === 0">
<h2>{{ data4panel0.incubatorName }}</h2> <h2>{{ data4panel0.incubatorName }}</h2>
<div class="contentWrapper"> <div class="contentWrapper">
<div class="left"> <div class="left">
<div class="item"> <div class="item">
<div class="_title prefixDiv"> <div class="_title prefixDiv">
<span class="_left">总收入</span> <span class="_left">总收入</span>
<span class="_right" @click="getMore4panel0">查看更多>></span> <span class="_right" @click="getMore4panel0">查看更多>></span>
</div>
<div class="body">
<div class="_left">
<ul>
<li>年度:{{ data4panel0.year }}</li>
<li>孵化器总收入:{{ data4panel0.totalRevenue }}万元</li>
<li>
综合服务收入:{{ data4panel0.serviceRevenue }}万元
</li>
<li>物业费收入:{{ data4panel0.propertyRevenue }}万元</li>
<li>房租费收入:{{ data4panel0.rentRevenue }}万元</li>
<li>投资收入:{{ data4panel0.investmentRevenue }}万元</li>
<li>政策性收入:{{ data4panel0.policyRevenue }}万元</li>
<li>其他:{{ data4panel0.otherRevenue }}万元</li>
</ul>
</div>
<div class="_right">
<div
ref="pieChart4panel0_1"
style="width: 300px; height: 300px"
class="charts pie"
></div>
</div>
</div>
</div> </div>
<div class="item"> <div class="body">
<div class="_title prefixDiv"> <div class="_left">
<span class="_left">使用面积</span> <ul>
<li>年度:{{ data4panel0.year }}</li>
<li>孵化器总收入:{{ data4panel0.totalRevenue }}万元</li>
<li>
综合服务收入:{{ data4panel0.serviceRevenue }}万元
</li>
<li>物业费收入:{{ data4panel0.propertyRevenue }}万元</li>
<li>房租费收入:{{ data4panel0.rentRevenue }}万元</li>
<li>投资收入:{{ data4panel0.investmentRevenue }}万元</li>
<li>政策性收入:{{ data4panel0.policyRevenue }}万元</li>
<li>其他:{{ data4panel0.otherRevenue }}万元</li>
</ul>
</div> </div>
<div class="body"> <div class="_right">
<div class="_left"> <div
<ul> ref="pieChart4panel0_1"
<li>孵化器使用总面积:{{ data4panel0.totalArea }}</li> style="width: 300px; height: 300px"
<li> class="charts pie"
用于企业孵化的面积:{{ data4panel0.incubationArea }} ></div>
</li>
<li>剩余孵化面积:{{ data4panel0.remainingArea }}</li>
</ul>
</div>
<div class="_right">
<div
ref="pieChart4panel0_2"
style="width: 300px; height: 300px"
class="charts pie"
></div>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="right"> <div class="item">
<div class="item"> <div class="_title prefixDiv">
<div class="_title prefixDiv"> <span class="_left">使用面积</span>
<span class="_left">简介</span> </div>
<div class="body">
<div class="_left">
<ul>
<li>孵化器使用总面积:{{ data4panel0.totalArea }}</li>
<li>
用于企业孵化的面积:{{ data4panel0.incubationArea }}
</li>
<li>剩余孵化面积:{{ data4panel0.remainingArea }}</li>
</ul>
</div> </div>
<div class="body"> <div class="_right">
<div class="_top"> <div
<ul> ref="pieChart4panel0_2"
<li>运营机构:{{ data4panel0.operatingAgency }}</li> style="width: 300px; height: 300px"
<li>联 系人:{{ data4panel0.contactPerson }}</li> class="charts pie"
<li>联系电话:{{ data4panel0.contactPhone }}</li> ></div>
</ul>
</div>
<div class="_bottom">
<img
:src="`${baseAPI}file/${data4panel0.incubatorImage}`"
alt=""
/>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</li> <div class="right">
<li class="tab_panel_1" v-if="activeIndex === 1||activeIndex === 2||activeIndex === 3"> <div class="item">
<div class="_left"> <div class="_title prefixDiv">
<div class="_title"> <span class="_left">孵化器经营信息统计</span>
<span>{{ navCompanyTypeName }}</span> </div>
<span>{{ totalCount4panel1 }}</span> <div class="body">
</div> <div class="_top">
<div class="_list"> <ul>
<el-input <li>
placeholder="请输入内容" <span>
prefix-icon="el-icon-search" 企业总数:{{ data4panel0.companyCount }}
v-model="searchQuery4panel1" </span>
@blur="getData4panel1" <span style="margin-left: 90px;">
></el-input> 从业人员总数:{{ data4panel0.employeesCount }}
</span>
<ul> </li>
<!-- tableData4panel1 --> <li></li>
<li v-for="item1 in tableData4panel1" :key="item1.companyId" :class="{active: currentSelectedCompanyId===item1.companyId}" @click="changeCompany(item1.companyId)"> <li>企业总收入:{{ data4panel0.companyRevenue }}万元</li>
{{ item1.companyName }} </ul>
</li> <p
</ul> style="font-size: 15px;
<el-pagination color: #606266;
@current-change="handleCurrentChange4panel1" line-height: 26px;
@size-change="handleSizeChange4panel1" margin-left: 50px;
:current-page="currentPage4panel1" margin-top: 15px;
:page-size="pageSize4panel1" margin-bottom: 5px;"
:total="totalCount4panel1" >
:page-sizes="[10, 20, 30, 40]" <span class="dbox"></span>
layout="prev, pager, next, sizes" 知识产权
/> </p>
</div> <ul>
</div> <li>
<div class="_right"> <span>
<h2>{{data4panel1.companyName}}</h2> 发明专利数总数:{{
<div class="divider"></div> data4panel0.inventionPatentsNumber
<div class="_title prefixDiv"> }}
<div class="_left">企业基础信息</div> </span>
<div class="_right" @click="getMore4panel1">查看企业简介>></div> <span style="margin-left: 50px;">
</div> 发明申请数总数:{{
<div class="_body"> data4panel0.inventionApplicationsNumber
<ul> }}</span
<li class="prefixPoint"> >
入驻时间: {{ data4panel1.entryDate || '-' }} </li>
</li> <li></li>
<li class="prefixPoint"> <li></li>
法人: {{ data4panel1.legalPerson || '-' }} <li style="margin-bottom:20px;">
</li> <span>
<li class="prefixPoint"> 实用新型数总数:{{
联系人: {{ data4panel1.principal || '-' }} data4panel0.utilityModelsNumber
</li> }}</span
<li class="prefixPoint"> >
联系电话: {{ data4panel1.contactPhone || '-' }} <span style="margin-left: 50px;"
</li> >软件著作权数总数:{{
<li class="prefixPoint"> data4panel0.softwareCopyrightNumber
企业类型: {{ data4panel1.companyTypeName || '-'}} }}</span
</li> >
<li class="prefixPoint"> </li>
主要负责人创业特征: {{ data4panel1.founderCharacteristicsName || '-'}} </ul>
</li> </div>
<li class="prefixPoint"> <div class="_bottom"></div>
全职导师: {{ data4panel1.mentorName || '-'}} </div>
</li>
<li class="prefixPoint">
兼职导师: {{ data4panel1.parMentorName || '-'}}
</li>
<li class="prefixPoint">
孵化状态: {{ data4panel1.incubationStatusName || '-'}}
</li>
<li class="prefixPoint">
企业级别: {{ data4panel1.companyLevelName || '-' }}
</li>
<li class="prefixPoint">
所属技术领域: {{ data4panel1.technicalFieldName || '-' }}
</li>
<li class="prefixPoint">
是否体外孵化: {{ data4panel1.outsideIncubation? '': '' }}
</li>
<li class="prefixPoint">
占用孵化场地面积: {{ data4panel1.occupiedArea || '-' }}
</li>
<li class="prefixPoint">
累计获得融资总额: {{ data4panel1.totalFunding || '-' }}
</li>
<li class="prefixPoint">
注册资金: {{ data4panel1.registeredCapital || '-' }}
</li>
<li class="prefixPoint">
注册时间: {{ data4panel1.registerDate || '-'}}
</li>
<li class="prefixPoint">
投资方名称: {{ data4panel1.investorsName || '-'}}
</li>
<li class="prefixPoint">
投资地区: {{ data4panel1.investmentArea || '-'}}
</li>
<li class="prefixPoint">
位置: {{ data4panel1.address || '-'}}
</li>
</ul>
</div>
<div class="_title prefixDiv">
<div class="_left">知识产权</div>
</div>
<div class="_body">
<ul>
<li class="prefixPoint">
发明专利数: {{ data4panel1.inventionPatentsNumber || '-'}}
</li>
<li class="prefixPoint">
实用新型数: {{ data4panel1.utilityModelsNumber || '-' }}
</li>
<li class="prefixPoint">
软件著作权数: {{ data4panel1.softwareCopyrightNumber || '-' }}
</li>
<li class="prefixPoint">
发明申请数: {{ data4panel1.inventionApplicationsNumber || '-' }}
</li>
</ul>
</div>
<div class="_title prefixDiv">
<div class="_left">创业创新企业情况</div>
</div>
<div class="_body">
<ul>
<li v-for="(item, index) in data4panel1.entrepreneurshipInnovationEnterprises" class="prefixPoint" :key="index">
{{ item.name }}: {{ item.value }}
</li>
</ul>
</div>
<div class="_title prefixDiv">
<div class="_left">企业经营信息</div>
<div class="_right" @click="getMore4panel1_2">查看更多>></div>
</div>
<div class="_body">
<ul>
<li class="prefixPoint">
从业人员: {{ data4panel1.totalEmployees || '-' }}
</li>
<li class="prefixPoint">
博士人数: {{ data4panel1.phdEmployees || '-' }}
</li>
<li class="prefixPoint">
硕士人数: {{ data4panel1.masterEmployees || '-' }}
</li>
<li class="prefixPoint">
本科人数: {{ data4panel1.undergraduateEmployees || '-'}}
</li>
<li class="prefixPoint">
留学人数: {{ data4panel1.overseasEmployees || '-'}}
</li>
<li class="prefixPoint">
净利润: {{ data4panel1.netProfit || '-'}}万元
</li>
<li class="prefixPoint">
上缴税费: {{ data4panel1.taxesPaid || '-' }}万元
</li>
<li class="prefixPoint">
总收入: {{ data4panel1.grossIncome || '-'}}万元
</li>
<li class="prefixPoint">
研发投入: {{ data4panel1.researchInput || '-'}}万元
</li>
<li class="prefixPoint">
研发投入占比: {{ data4panel1.investmentProportion || '-' }}%
</li>
</ul>
</div>
<!-- -->
<div class="_title prefixDiv">
<div class="_left">企业产品</div>
<div class="_right" @click="getMore4panel1_3">查看更多>></div>
</div> </div>
<div class="_body" style="padding-bottom:20px;"> <div class="item">
<div v-if="!data4panel1.companyProductList.length" style="display:flex;justify-content:center;align-items:center; font-size:14px;color:#686868;">暂无数据</div> <div class="_title prefixDiv">
<dl v-else> <span class="_left">简介</span>
<dd v-for="(item,index) in data4panel1.companyProductList" :key="index"> </div>
<div class="body">
<div class="_top">
<ul>
<li>运营机构:{{ data4panel0.operatingAgency }}</li>
<li>联 系人:{{ data4panel0.contactPerson }}</li>
<li>联系电话:{{ data4panel0.contactPhone }}</li>
</ul>
</div>
<div class="_bottom">
<img <img
:src="`${baseAPI}file/${item.image}`" :src="`${baseAPI}file/${data4panel0.incubatorImage}`"
alt="" alt=""
/> />
<h3>{{ item.productName }}</h3> </div>
<p v-html="item.description"> </div>
<!-- 内置NB-IoT物联网SIM卡,把数据传
输到晶合云平台或客户私有云平台, 实现数据 -->
</p>
</dd>
</dl>
</div> </div>
</div> </div>
</li> </div>
<li class="tab_panel_4" v-if="activeIndex === 4"> </li>
<li
class="tab_panel_1"
v-if="activeIndex === 1 || activeIndex === 2 || activeIndex === 3"
>
<div class="_left">
<div class="_title"> <div class="_title">
<span>创业导师</span> <span>{{ navCompanyTypeName }}</span>
<span>{{ totalCount4panel1 }}</span>
</div>
<div class="_list">
<el-input <el-input
placeholder="请输入姓名搜索" placeholder="请输入内容"
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
v-model="searchQuery4panel4" v-model="searchQuery4panel1"
style="width: 300px; margin-right: 10px;" @blur="getData4panel1"
@blur="filterData4panel4"
></el-input> ></el-input>
<ul>
<!-- tableData4panel1 -->
<li
v-for="item1 in tableData4panel1"
:key="item1.companyId"
:class="{
active: currentSelectedCompanyId === item1.companyId
}"
@click="changeCompany(item1.companyId)"
>
{{ item1.companyName }}
</li>
</ul>
<el-pagination
@current-change="handleCurrentChange4panel1"
@size-change="handleSizeChange4panel1"
:current-page="currentPage4panel1"
:page-size="pageSize4panel1"
:total="totalCount4panel1"
:page-sizes="[10, 20, 30, 40]"
layout="prev, pager, next, sizes"
/>
</div>
</div>
<div class="_right">
<h2>{{ data4panel1.companyName }}</h2>
<div class="divider"></div>
<div class="_title prefixDiv">
<div class="_left">企业基础信息</div>
<div class="_right" @click="getMore4panel1">查看企业简介>></div>
</div>
<div class="_body">
<ul>
<li class="prefixPoint">
入驻时间: {{ data4panel1.entryDate || "-" }}
</li>
<li class="prefixPoint">
法人: {{ data4panel1.legalPerson || "-" }}
</li>
<li class="prefixPoint">
联系人: {{ data4panel1.principal || "-" }}
</li>
<li class="prefixPoint">
联系电话: {{ data4panel1.contactPhone || "-" }}
</li>
<li class="prefixPoint">
企业类型: {{ data4panel1.companyTypeName || "-" }}
</li>
<li class="prefixPoint">
主要负责人创业特征:
{{ data4panel1.founderCharacteristicsName || "-" }}
</li>
<li class="prefixPoint">
全职导师: {{ data4panel1.mentorName || "-" }}
</li>
<li class="prefixPoint">
兼职导师: {{ data4panel1.parMentorName || "-" }}
</li>
<li class="prefixPoint">
孵化状态: {{ data4panel1.incubationStatusName || "-" }}
</li>
<li class="prefixPoint">
企业级别: {{ data4panel1.companyLevelName || "-" }}
</li>
<li class="prefixPoint">
所属技术领域: {{ data4panel1.technicalFieldName || "-" }}
</li>
<li class="prefixPoint">
是否体外孵化:
{{ data4panel1.outsideIncubation ? "" : "" }}
</li>
<li class="prefixPoint">
占用孵化场地面积: {{ data4panel1.occupiedArea || "-" }}
</li>
<li class="prefixPoint">
累计获得融资总额: {{ data4panel1.totalFunding || "-" }}
</li>
<li class="prefixPoint">
注册资金: {{ data4panel1.registeredCapital || "-" }}
</li>
<li class="prefixPoint">
注册时间: {{ data4panel1.registerDate || "-" }}
</li>
<li class="prefixPoint">
投资方名称: {{ data4panel1.investorsName || "-" }}
</li>
<li class="prefixPoint">
投资地区: {{ data4panel1.investmentArea || "-" }}
</li>
<li class="prefixPoint">
位置: {{ data4panel1.address || "-" }}
</li>
</ul>
</div>
<div class="_title prefixDiv">
<div class="_left">知识产权</div>
</div>
<div class="_body">
<ul>
<li class="prefixPoint">
发明专利数: {{ data4panel1.inventionPatentsNumber || "-" }}
</li>
<li class="prefixPoint">
实用新型数: {{ data4panel1.utilityModelsNumber || "-" }}
</li>
<li class="prefixPoint">
软件著作权数: {{ data4panel1.softwareCopyrightNumber || "-" }}
</li>
<li class="prefixPoint">
发明申请数:
{{ data4panel1.inventionApplicationsNumber || "-" }}
</li>
</ul>
</div>
<div class="_title prefixDiv">
<div class="_left">创业创新企业情况</div>
</div>
<div class="_body">
<ul>
<li
v-for="(item,
index) in data4panel1.entrepreneurshipInnovationEnterprises"
class="prefixPoint"
:key="index"
>
{{ item.name }}: {{ item.value }}
</li>
</ul>
</div>
<div class="_title prefixDiv">
<div class="_left">企业经营信息</div>
<div class="_right" @click="getMore4panel1_2">查看更多>></div>
</div>
<div class="_body">
<ul>
<li class="prefixPoint">
从业人员: {{ data4panel1.totalEmployees || "-" }}
</li>
<li class="prefixPoint">
博士人数: {{ data4panel1.phdEmployees || "-" }}
</li>
<li class="prefixPoint">
硕士人数: {{ data4panel1.masterEmployees || "-" }}
</li>
<li class="prefixPoint">
本科人数: {{ data4panel1.undergraduateEmployees || "-" }}
</li>
<li class="prefixPoint">
留学人数: {{ data4panel1.overseasEmployees || "-" }}
</li>
<li class="prefixPoint">
净利润: {{ data4panel1.netProfit || "-" }}万元
</li>
<li class="prefixPoint">
上缴税费: {{ data4panel1.taxesPaid || "-" }}万元
</li>
<li class="prefixPoint">
总收入: {{ data4panel1.grossIncome || "-" }}万元
</li>
<li class="prefixPoint">
研发投入: {{ data4panel1.researchInput || "-" }}万元
</li>
<li class="prefixPoint">
研发投入占比: {{ data4panel1.investmentProportion || "-" }}%
</li>
</ul>
</div> </div>
<ul>
<li v-for="item in tableData4panel4" :key="item.id"> <!-- -->
<img <div class="_title prefixDiv">
:src="`${baseAPI}file/${item.photo}`" <div class="_left">企业产品</div>
alt="" <div class="_right" @click="getMore4panel1_3">查看更多>></div>
/> </div>
<p>姓名:{{ item.mentorName }}</p> <div class="_body" style="padding-bottom:20px;">
<p>学历:{{ item.education }}</p> <div
<p>毕业学校:{{ item.graduationSchool }}</p> v-if="!data4panel1.companyProductList.length"
<p>联系电话:{{ item.contactPhone }}</p> style="display:flex;justify-content:center;align-items:center; font-size:14px;color:#686868;"
<a @click="getMore4panel4(item)">查看简介&gt;</a> >
</li> 暂无数据
</ul> </div>
<el-pagination <dl v-else>
style="text-align: center; margin-top: 20px;" <dd
@current-change="handleCurrentChange4panel4" v-for="(item, index) in data4panel1.companyProductList"
@size-change="handleSizeChange4panel4" :key="index"
:current-page="currentPage4panel4" >
:page-size="pageSize4panel4" <img :src="`${baseAPI}file/${item.image}`" alt="" />
:total="totalCount4panel4" <h3>{{ item.productName }}</h3>
:page-sizes="[10, 20, 30, 40]" <p v-html="item.description">
layout="prev, pager, next, sizes" <!-- 内置NB-IoT物联网SIM卡,把数据传
></el-pagination> 输到晶合云平台或客户私有云平台, 实现数据 -->
</li> </p>
</ul> </dd>
</div> </dl>
</div>
</div>
<el-dialog </li>
title="孵化器年度收入信息" <li class="tab_panel_4" v-if="activeIndex === 4">
:visible.sync="dialogVisible4panel0" <div class="_title">
width="1100px" <span>创业导师</span>
> <el-input
<el-input placeholder="请输入姓名搜索"
prefix-icon="el-icon-search"
v-model="searchQuery4panel4"
style="width: 300px; margin-right: 10px;"
@blur="filterData4panel4"
></el-input>
</div>
<ul>
<li v-for="item in tableData4panel4" :key="item.id">
<img :src="`${baseAPI}file/${item.photo}`" alt="" />
<p>姓名:{{ item.mentorName }}</p>
<p>学历:{{ item.education }}</p>
<p>毕业学校:{{ item.graduationSchool }}</p>
<p>联系电话:{{ item.contactPhone }}</p>
<a @click="getMore4panel4(item)">查看简介&gt;</a>
</li>
</ul>
<el-pagination
style="text-align: center; margin-top: 20px;"
@current-change="handleCurrentChange4panel4"
@size-change="handleSizeChange4panel4"
:current-page="currentPage4panel4"
:page-size="pageSize4panel4"
:total="totalCount4panel4"
:page-sizes="[10, 20, 30, 40]"
layout="prev, pager, next, sizes"
></el-pagination>
</li>
</ul>
</div>
<el-dialog
title="孵化器年度收入信息"
:visible.sync="dialogVisible4panel0"
width="1100px"
>
<el-input
placeholder="请输入年度搜索" placeholder="请输入年度搜索"
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
v-model="searchQuery4panel0" v-model="searchQuery4panel0"
style="width: 300px;margin-bottom: 10px;" style="width: 300px;margin-bottom: 10px;"
@blur="filterData4panel0" @blur="filterData4panel0"
></el-input> ></el-input>
<el-table :data="tableData4panel0" style="width: 100%"> <el-table :data="tableData4panel0" style="width: 100%">
<el-table-column <el-table-column prop="year" label="年度" width="50"></el-table-column>
prop="year" <el-table-column
label="年度" prop="totalRevenue"
width="50" label="孵化器总收入(万元)"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="totalRevenue" prop="serviceRevenue"
label="孵化器总收入(万元)" label="综合服务收入(万元)"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="serviceRevenue" prop="rentRevenue"
label="综合服务收入(万元)" label="房租收入(万元)"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="rentRevenue" prop="propertyRevenue"
label="房租收入(万元)" label="物业收入(万元)"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="propertyRevenue" prop="investmentRevenue"
label="物业收入(万元)" label="投资收入(万元)"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="investmentRevenue" prop="policyRevenue"
label="投资收入(万元)" label="政策性收入(万元)"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="policyRevenue" prop="otherRevenue"
label="政策性收入(万元)" label="其他收入(万元)"
></el-table-column> ></el-table-column>
<el-table-column </el-table>
prop="otherRevenue"
label="其他收入(万元)" <el-pagination
></el-table-column> @current-change="handleCurrentChange4panel0"
</el-table> @size-change="handleSizeChange4panel0"
:current-page="currentPage4panel0"
<el-pagination :page-size="pageSize4panel0"
@current-change="handleCurrentChange4panel0" :total="totalCount4panel0"
@size-change="handleSizeChange4panel0" :page-sizes="[10, 20, 30, 40]"
:current-page="currentPage4panel0" layout="prev, pager, next, sizes"
:page-size="pageSize4panel0" ></el-pagination>
:total="totalCount4panel0" </el-dialog>
:page-sizes="[10, 20, 30, 40]"
layout="prev, pager, next, sizes" <el-dialog
></el-pagination> title="企业经营信息"
:visible.sync="dialogVisible4panel1_2"
</el-dialog> width="1100px"
>
<el-dialog <el-input
title="企业经营信息"
:visible.sync="dialogVisible4panel1_2"
width="1100px"
>
<el-input
placeholder="请输入年度搜索" placeholder="请输入年度搜索"
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
v-model="searchQuery4panel1_2" v-model="searchQuery4panel1_2"
style="width: 300px;margin-bottom: 10px;" style="width: 300px;margin-bottom: 10px;"
@blur="filterData4panel1_2" @blur="filterData4panel1_2"
></el-input> ></el-input>
<el-table :data="tableData4panel1_2" style="width: 100%"> <el-table :data="tableData4panel1_2" style="width: 100%">
<el-table-column <el-table-column prop="year" label="年度" width="50"></el-table-column>
prop="year" <el-table-column
label="年度" prop="totalEmployees"
width="50" label="从业人数"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="totalEmployees" prop="phdEmployees"
label="从业人数" label="博士从业人数"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="phdEmployees" prop="overseasEmployees"
label="博士从业人数" label="留学人数"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="overseasEmployees" prop="netProfit"
label="留学人数" label="净利润(万元)"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="netProfit" prop="taxesPaid"
label="净利润(万元)" label="上缴税费(万元)"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="taxesPaid" prop="researchInput"
label="上缴税费(万元)" label="研发投入(万元)"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="researchInput" prop="investmentProportion"
label="研发投入(万元)" label="研发投入占比"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="investmentProportion" prop="grossIncome"
label="研发投入占比" label="总收入(万元)"
></el-table-column> ></el-table-column>
<el-table-column </el-table>
prop="grossIncome"
label="总收入(万元)" <el-pagination
></el-table-column> @current-change="handleCurrentChange4panel1_2"
@size-change="handleSizeChange4panel1_2"
</el-table> :current-page="currentPage4panel1_2"
:page-size="pageSize4panel1_2"
<el-pagination :total="totalCount4panel1_2"
@current-change="handleCurrentChange4panel1_2" :page-sizes="[10, 20, 30, 40]"
@size-change="handleSizeChange4panel1_2" layout="prev, pager, next, sizes"
:current-page="currentPage4panel1_2" ></el-pagination>
:page-size="pageSize4panel1_2" </el-dialog>
:total="totalCount4panel1_2" <el-dialog
:page-sizes="[10, 20, 30, 40]" title="企业产品信息"
layout="prev, pager, next, sizes" :visible.sync="dialogVisible4panel1_3"
></el-pagination> width="1100px"
>
</el-dialog> <el-input
<el-dialog
title="企业产品信息"
:visible.sync="dialogVisible4panel1_3"
width="1100px"
>
<el-input
placeholder="请输入产品名称" placeholder="请输入产品名称"
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
v-model="searchQuery4panel1_3" v-model="searchQuery4panel1_3"
style="width: 300px;margin-bottom: 10px;" style="width: 300px;margin-bottom: 10px;"
@blur="filterData4panel1_3" @blur="filterData4panel1_3"
></el-input> ></el-input>
<el-table :data="tableData4panel1_3" style="width: 100%"> <el-table :data="tableData4panel1_3" style="width: 100%">
<el-table-column <el-table-column
prop="productName" prop="productName"
label="产品名称" label="产品名称"
align="center" align="center"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="totalEmployees" prop="totalEmployees"
label="图片" label="图片"
width="120" width="120"
align="center" align="center"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<img :src="`${baseAPI}file/${scope.row.image}`" alt="Image" style="width: 80px; height: auto;" /> <img
:src="`${baseAPI}file/${scope.row.image}`"
alt="Image"
style="width: 80px; height: auto;"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="description" label="简介" align="center">
prop="description"
label="简介"
align="center"
>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination
@current-change="handleCurrentChange4panel1_3"
@size-change="handleSizeChange4panel1_3"
:current-page="currentPage4panel1_3"
:page-size="pageSize4panel1_3"
:total="totalCount4panel1_3"
:page-sizes="[10, 20, 30, 40]"
layout="prev, pager, next, sizes"
></el-pagination>
</el-dialog>
<!-- penel -->
<el-dialog
title="简介信息"
:visible.sync="dialogVisible4panel4"
>
<div v-html="introduction4panel4"></div>
</el-dialog>
<el-dialog
title="企业简介"
:visible.sync="dialogVisible4panel1"
>
<div v-html="data4panel1.introduction"></div>
</el-dialog>
</div>
</template>
<script>
var baseAPI =
process.env.NODE_ENV === "development"
? process.env.VUE_APP_LOCAL_API + "/"
: (VUE_APP_API.ServiceURL || process.env.VUE_APP_LOCAL_API) + "/";
import overviewApi from "@/api/system/overview.js";
import * as echarts from "echarts";
export default {
name: "Overview",
components: {},
data() {
return {
// 公共用
baseAPI: baseAPI,
incubatorId: "",
// 顶部切换菜单
activeIndex: 0,
navCompanyTypeName: '',
// panel0 孵化器概况
data4panel0: {},
totalCount4panel0: 0, // 总条目数
currentPage4panel0: 0, // 当前页码
pageSize4panel0: 10, // 每页显示的条目数量
dialogVisible4panel0: false,
searchQuery4panel0: '',
tableData4panel0: [],
// panel123 企业信息
data4panel1: {
companyProductList: []
},
totalCount4panel1: 0, // 总条目数
currentPage4panel1: 0, // 当前页码
pageSize4panel1: 10, // 每页显示的条目数量
searchQuery4panel1: '',
tableData4panel1: [],
// panel_1 企业简介 弹窗
dialogVisible4panel1: false,
introduction4panel1: '',
// panel_1 年度收入信息 弹窗
currentPage4panel1_2: 0, // 当前页码
pageSize4panel1_2: 10, // 每页显示的条目数量
dialogVisible4panel1_2: false,
searchQuery4panel1_2: '',
tableData4panel1_2: [],
totalCount4panel1_2: 0, // 总条目数
// panel_1 产品信息 弹窗
currentSelectedCompanyId: '',
currentPage4panel1_3: 0, // 当前页码
pageSize4panel1_3: 10, // 每页显示的条目数量
dialogVisible4panel1_3: false,
searchQuery4panel1_3: '',
tableData4panel1_3: [],
totalCount4panel1_3: 0,
// panel4 创业导师
totalCount4panel4: 0, // 总条目数
currentPage4panel4: 0, // 当前页码
pageSize4panel4: 10, // 每页显示的条目数量
dialogVisible4panel4: false,
searchQuery4panel4: '',
tableData4panel4: [],
introduction4panel4: '',
};
},
computed: {},
mounted() {
this.incubatorId = this.$route.query.id || '';
// this.getData4panel0();
// this.getData4panel4();
this.getData4panel0()
},
methods: {
changeNav(index) {
this.activeIndex = ~~index;
if(index === 1){
this.navCompanyTypeName = '在孵企业'
}else if(index === 2){
this.navCompanyTypeName = '毕业企业'
}else if(index === 3){
this.navCompanyTypeName = '中介机构'
}
<el-pagination
@current-change="handleCurrentChange4panel1_3"
@size-change="handleSizeChange4panel1_3"
:current-page="currentPage4panel1_3"
:page-size="pageSize4panel1_3"
:total="totalCount4panel1_3"
:page-sizes="[10, 20, 30, 40]"
layout="prev, pager, next, sizes"
></el-pagination>
</el-dialog>
<!-- penel -->
<el-dialog title="简介信息" :visible.sync="dialogVisible4panel4">
<div v-html="introduction4panel4"></div>
</el-dialog>
<el-dialog title="企业简介" :visible.sync="dialogVisible4panel1">
<div v-html="data4panel1.introduction"></div>
</el-dialog>
</div>
</template>
<script>
var baseAPI =
process.env.NODE_ENV === "development"
? process.env.VUE_APP_LOCAL_API + "/"
: (VUE_APP_API.ServiceURL || process.env.VUE_APP_LOCAL_API) + "/";
import overviewApi from "@/api/system/overview.js";
import * as echarts from "echarts";
export default {
name: "Overview",
components: {},
data() {
return {
// 公共用
baseAPI: baseAPI,
incubatorId: "",
if(~~this.activeIndex === 1 || ~~this.activeIndex === 2 || ~~this.activeIndex === 3){ // 顶部切换菜单
this.searchQuery4panel1 = '' // 清空公司搜索框 activeIndex: 0,
// 重置分页条件查询信息 navCompanyTypeName: "",
this.totalCount4panel1 = 0 // 总条目数
this.currentPage4panel1 = 0 // 当前页码
this.pageSize4panel1 = 10 // 每页显示的条目数量
this.getData4panel1() // panel0 孵化器概况
}else if(~~this.activeIndex === 0){ data4panel0: {},
this.totalCount4panel0 = 0 // 总条目数 totalCount4panel0: 0, // 总条目数
this.currentPage4panel0 = 0 // 当前页码 currentPage4panel0: 0, // 当前页码
this.pageSize4panel0 = 10 // 每页显示的条目数量 pageSize4panel0: 10, // 每页显示的条目数量
this.getData4panel0() dialogVisible4panel0: false,
}else if(~~this.activeIndex === 4){ searchQuery4panel0: "",
// 重置分页条件查询信息 tableData4panel0: [],
this.totalCount4panel4 = 0 // 总条目数
this.currentPage4panel4 = 0 // 当前页码 // panel123 企业信息
this.pageSize4panel4 = 10 // 每页显示的条目数量 data4panel1: {
this.getData4panel4() companyProductList: []
}
}, },
/** totalCount4panel1: 0, // 总条目数
* getData4enterprise currentPage4panel1: 0, // 当前页码
* panel 1,2,3 企业信息 pageSize4panel1: 10, // 每页显示的条目数量
*/ searchQuery4panel1: "",
tableData4panel1: [],
filterData4panel1() {
this.currentPage4panel1 = 1; // 重置当前分页 // panel_1 企业简介 弹窗
dialogVisible4panel1: false,
introduction4panel1: "",
// panel_1 年度收入信息 弹窗
currentPage4panel1_2: 0, // 当前页码
pageSize4panel1_2: 10, // 每页显示的条目数量
dialogVisible4panel1_2: false,
searchQuery4panel1_2: "",
tableData4panel1_2: [],
totalCount4panel1_2: 0, // 总条目数
// panel_1 产品信息 弹窗
currentSelectedCompanyId: "",
currentPage4panel1_3: 0, // 当前页码
pageSize4panel1_3: 10, // 每页显示的条目数量
dialogVisible4panel1_3: false,
searchQuery4panel1_3: "",
tableData4panel1_3: [],
totalCount4panel1_3: 0,
// panel4 创业导师
totalCount4panel4: 0, // 总条目数
currentPage4panel4: 0, // 当前页码
pageSize4panel4: 10, // 每页显示的条目数量
dialogVisible4panel4: false,
searchQuery4panel4: "",
tableData4panel4: [],
introduction4panel4: ""
};
},
computed: {},
mounted() {
this.incubatorId = this.$route.query.id || "";
// this.getData4panel0();
// this.getData4panel4();
this.getData4panel0();
},
methods: {
changeNav(index) {
this.activeIndex = ~~index;
if (index === 1) {
this.navCompanyTypeName = "在孵企业";
} else if (index === 2) {
this.navCompanyTypeName = "毕业企业";
} else if (index === 3) {
this.navCompanyTypeName = "中介机构";
}
if (
~~this.activeIndex === 1 ||
~~this.activeIndex === 2 ||
~~this.activeIndex === 3
) {
this.searchQuery4panel1 = ""; // 清空公司搜索框
// 重置分页条件查询信息
this.totalCount4panel1 = 0; // 总条目数
this.currentPage4panel1 = 0; // 当前页码
this.pageSize4panel1 = 10; // 每页显示的条目数量
this.getData4panel1(); this.getData4panel1();
}, } else if (~~this.activeIndex === 0) {
getMore4panel1(item){ this.totalCount4panel0 = 0; // 总条目数
this.dialogVisible4panel1 = true this.currentPage4panel0 = 0; // 当前页码
this.introduction4panel1 = item.introduction this.pageSize4panel0 = 10; // 每页显示的条目数量
}, this.getData4panel0();
} else if (~~this.activeIndex === 4) {
handleCurrentChange4panel1(newPage) { // 重置分页条件查询信息
// 切换分页 this.totalCount4panel4 = 0; // 总条目数
this.currentPage4panel1 = newPage; this.currentPage4panel4 = 0; // 当前页码
this.getData4panel1() this.pageSize4panel4 = 10; // 每页显示的条目数量
this.getData4panel4();
}, }
handleSizeChange4panel1(newSize){ },
this.pageSize4panel1 = newSize; /**
this.getData4panel1() * getData4enterprise
}, * panel 1,2,3 企业信息
getData4panel1() { // 获取panel2,3,4企业列表 */
let companyType = ''
if(~~this.activeIndex === 1){ filterData4panel1() {
companyType = '1' this.currentPage4panel1 = 1; // 重置当前分页
}else if(~~this.activeIndex === 2){ this.getData4panel1();
companyType = '2' },
}else if(~~this.activeIndex === 3){ getMore4panel1(item) {
companyType = '3' this.dialogVisible4panel1 = true;
} this.introduction4panel1 = item.introduction;
overviewApi },
.getData4enterprise({
// 之所以减一操作时因为后台page从0开始,而组件分页时1开始。 handleCurrentChange4panel1(newPage) {
page: this.currentPage4panel1 > 0 ? this.currentPage4panel1-1 : this.currentPage4panel1, // 切换分页
size: this.pageSize4panel1, this.currentPage4panel1 = newPage;
incubatorId: this.incubatorId, this.getData4panel1();
companyType, },
vague: {"companyName": this.searchQuery4panel1} handleSizeChange4panel1(newSize) {
}) this.pageSize4panel1 = newSize;
.then((res) => { this.getData4panel1();
this.tableData4panel1 = res.body.records || []; },
this.totalCount4panel1 = res.body.total getData4panel1() {
if(this.tableData4panel1.length){ // 获取panel2,3,4企业列表
this.getData4panel1_1(this.tableData4panel1[0].companyId) let companyType = "";
this.currentSelectedCompanyId = this.tableData4panel1[0].companyId if (~~this.activeIndex === 1) {
}else{ // 公司列表为空的时候, 数据为空. companyType = "1";
this.getData4panel1_1('') } else if (~~this.activeIndex === 2) {
this.currentSelectedCompanyId = '' companyType = "2";
} } else if (~~this.activeIndex === 3) {
}); companyType = "3";
}, }
getData4panel1_1(companyId) { // 获取panel2,3,4企业详情 overviewApi
overviewApi .getData4enterprise({
.getData4enterpriseDetail({ // 之所以减一操作时因为后台page从0开始,而组件分页时1开始。
companyId: companyId+'' page:
}) this.currentPage4panel1 > 0
.then((res) => { ? this.currentPage4panel1 - 1
this.data4panel1 = res.body || { companyProductList: [] }; : this.currentPage4panel1,
}); size: this.pageSize4panel1,
}, incubatorId: this.incubatorId,
changeCompany(companyId){ companyType,
this.currentSelectedCompanyId = companyId vague: { companyName: this.searchQuery4panel1 }
this.getData4panel1_1(companyId)
},
getMore4panel1(){// 获取企业简介
this.dialogVisible4panel1 = true
},
filterData4panel1_2() {
this.currentPage4panel1_2 = 1; // 重置当前分页
this.getDialogData4panel1_2();
},
getMore4panel1_2(){ // 获取更多年度收入信息
this.dialogVisible4panel1_2 = true
this.getDialogData4panel1_2()
},
getDialogData4panel1_2(fn) { // 获取panel1 经营信息 弹窗列表信息
overviewApi
.getDialogData4panel1_2({
page: this.currentPage4panel1_2 > 0 ? this.currentPage4panel1_2-1 : this.currentPage4panel1_2,
size: this.pageSize4panel1_2,
exact:{
companyId: this.currentSelectedCompanyId,
},
vague:{
year: this.searchQuery4panel1_2
}
})
.then((res) => {
this.tableData4panel1_2 = res.body.list || [];
});
},
handleCurrentChange4panel1_2(newPage) {
// 切换分页
this.currentPage4panel1_2 = newPage;
// 这里可以添加代码来加载新页的数据
console.log(`当前页: ${newPage}`);
this.getDialogData4panel1_2()
},
handleSizeChange4panel1_2(newSize){
this.pageSize4panel1_2 = newSize;
this.getDialogData4panel1_2()
},
getMore4panel1_3(){ // 获取更多产品信息
this.dialogVisible4panel1_3 = true
this.getDialogData4panel1_3()
},
getDialogData4panel1_3() { // 获取panel1 产品弹窗列表信息
overviewApi
.getDialogData4panel1_3({
page: this.currentPage4panel1_3 > 0 ? this.currentPage4panel1_3-1 : this.currentPage4panel1_3,
size: this.pageSize4panel1_3,
exact:{
companyId: this.currentSelectedCompanyId,
},
vague: {"productName": this.searchQuery4panel1_3}
})
.then((res) => {
this.tableData4panel1_3 = res.body.list || [];
this.totalCount4panel1_3 = res.body.total
});
},
filterData4panel1_3() {
this.currentPage4panel1_3 = 1; // 重置当前分页
this.getDialogData4panel1_3();
},
handleCurrentChange4panel1_3(newPage) {
// 切换分页
this.currentPage4panel1_3 = newPage;
// 这里可以添加代码来加载新页的数据
console.log(`当前页: ${newPage}`);
this.getDialogData4panel1_3()
},
handleSizeChange4panel1_3(newSize){
this.pageSize4panel1_3 = newSize;
this.getDialogData4panel1_3()
},
/**
* panel0
*/
filterData4panel0() {
this.currentPage4panel0 = 1; // 重置当前分页
this.getDialogData4panel0();
},
getMore4panel0(){
this.dialogVisible4panel0 = true
this.getDialogData4panel0()
},
handleCurrentChange4panel0(newPage) {
// 切换分页
this.currentPage4panel0 = newPage;
// 这里可以添加代码来加载新页的数据
console.log(`当前页: ${newPage}`);
this.getDialogData4panel0()
},
handleSizeChange4panel0(newSize){
this.pageSize4panel0 = newSize;
this.getDialogData4panel0()
},
initChart4panel0_1() {
const chartDom = this.$refs.pieChart4panel0_1;
const myChart = echarts.init(chartDom);
const colorArr = ['#5c7bd9', '#3ba172', '#73c0de', '#ee6666', '#f7c557', '#91cc75', '#5470c6', '#3e75e5']
const chartsData = this.data4panel0.revenueChartData.map((item,index)=>{
item.itemStyle= {color: colorArr[index]}
return item
}) })
const option = { .then(res => {
tooltip: { this.tableData4panel1 = res.body.records || [];
trigger: "item", this.totalCount4panel1 = res.body.total;
if (this.tableData4panel1.length) {
this.getData4panel1_1(this.tableData4panel1[0].companyId);
this.currentSelectedCompanyId = this.tableData4panel1[0].companyId;
} else {
// 公司列表为空的时候, 数据为空.
this.getData4panel1_1("");
this.currentSelectedCompanyId = "";
}
});
},
getData4panel1_1(companyId) {
// 获取panel2,3,4企业详情
overviewApi
.getData4enterpriseDetail({
companyId: companyId + ""
})
.then(res => {
this.data4panel1 = res.body || { companyProductList: [] };
});
},
changeCompany(companyId) {
this.currentSelectedCompanyId = companyId;
this.getData4panel1_1(companyId);
},
getMore4panel1() {
// 获取企业简介
this.dialogVisible4panel1 = true;
},
filterData4panel1_2() {
this.currentPage4panel1_2 = 1; // 重置当前分页
this.getDialogData4panel1_2();
},
getMore4panel1_2() {
// 获取更多年度收入信息
this.dialogVisible4panel1_2 = true;
this.getDialogData4panel1_2();
},
getDialogData4panel1_2(fn) {
// 获取panel1 经营信息 弹窗列表信息
overviewApi
.getDialogData4panel1_2({
page:
this.currentPage4panel1_2 > 0
? this.currentPage4panel1_2 - 1
: this.currentPage4panel1_2,
size: this.pageSize4panel1_2,
exact: {
companyId: this.currentSelectedCompanyId
}, },
series: [ vague: {
{ year: this.searchQuery4panel1_2
name: "", }
type: "pie",
radius: "30%",
// radius: ['40%', '60%'], // 设置内外半径,使饼图小一些
data: chartsData,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: "rgba(0, 0, 0, 0.5)",
},
},
},
],
};
myChart.setOption(option);
},
initChart4panel0_2() {
const chartDom = this.$refs.pieChart4panel0_2;
const myChart = echarts.init(chartDom);
const colorArr = ['#9fe080','#5470c6', '#f9c758']
const chartsData = this.data4panel0.areaChartData.map((item, index)=>{
item.itemStyle= {color: colorArr[index]}
return item
}) })
const option = { .then(res => {
tooltip: { this.tableData4panel1_2 = res.body.list || [];
trigger: "item", });
},
handleCurrentChange4panel1_2(newPage) {
// 切换分页
this.currentPage4panel1_2 = newPage;
// 这里可以添加代码来加载新页的数据
console.log(`当前页: ${newPage}`);
this.getDialogData4panel1_2();
},
handleSizeChange4panel1_2(newSize) {
this.pageSize4panel1_2 = newSize;
this.getDialogData4panel1_2();
},
getMore4panel1_3() {
// 获取更多产品信息
this.dialogVisible4panel1_3 = true;
this.getDialogData4panel1_3();
},
getDialogData4panel1_3() {
// 获取panel1 产品弹窗列表信息
overviewApi
.getDialogData4panel1_3({
page:
this.currentPage4panel1_3 > 0
? this.currentPage4panel1_3 - 1
: this.currentPage4panel1_3,
size: this.pageSize4panel1_3,
exact: {
companyId: this.currentSelectedCompanyId
}, },
series: [ vague: { productName: this.searchQuery4panel1_3 }
{ })
name: "", .then(res => {
type: "pie", this.tableData4panel1_3 = res.body.list || [];
radius: "30%", this.totalCount4panel1_3 = res.body.total;
data: chartsData, });
emphasis: { },
itemStyle: { filterData4panel1_3() {
shadowBlur: 10, this.currentPage4panel1_3 = 1; // 重置当前分页
shadowOffsetX: 0, this.getDialogData4panel1_3();
shadowColor: "rgba(0, 0, 0, 0.5)", },
}, handleCurrentChange4panel1_3(newPage) {
}, // 切换分页
}, this.currentPage4panel1_3 = newPage;
], // 这里可以添加代码来加载新页的数据
}; console.log(`当前页: ${newPage}`);
this.getDialogData4panel1_3();
myChart.setOption(option); },
}, handleSizeChange4panel1_3(newSize) {
getDialogData4panel0(fn) { // 获取panel0弹窗列表信息 this.pageSize4panel1_3 = newSize;
overviewApi this.getDialogData4panel1_3();
.getDialogData4panel0({ },
page: this.currentPage4panel0 > 0 ? this.currentPage4panel0-1 : this.currentPage4panel0,
size: this.pageSize4panel0, /**
exact:{ * panel0
incubatorId: this.incubatorId, */
}, filterData4panel0() {
vague:{ this.currentPage4panel0 = 1; // 重置当前分页
year: this.searchQuery4panel0 this.getDialogData4panel0();
},
getMore4panel0() {
this.dialogVisible4panel0 = true;
this.getDialogData4panel0();
},
handleCurrentChange4panel0(newPage) {
// 切换分页
this.currentPage4panel0 = newPage;
// 这里可以添加代码来加载新页的数据
console.log(`当前页: ${newPage}`);
this.getDialogData4panel0();
},
handleSizeChange4panel0(newSize) {
this.pageSize4panel0 = newSize;
this.getDialogData4panel0();
},
initChart4panel0_1() {
const chartDom = this.$refs.pieChart4panel0_1;
const myChart = echarts.init(chartDom);
const colorArr = [
"#5c7bd9",
"#3ba172",
"#73c0de",
"#ee6666",
"#f7c557",
"#91cc75",
"#5470c6",
"#3e75e5"
];
const chartsData = this.data4panel0.revenueChartData.map(
(item, index) => {
item.itemStyle = { color: colorArr[index] };
return item;
}
);
const option = {
tooltip: {
trigger: "item"
},
series: [
{
name: "",
type: "pie",
radius: "30%",
// radius: ['40%', '60%'], // 设置内外半径,使饼图小一些
data: chartsData,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: "rgba(0, 0, 0, 0.5)"
}
} }
}
}) ]
.then((res) => { };
console.log(res, "getData4panel04tech");
this.tableData4panel0 = res.body.list || []; myChart.setOption(option);
this.totalCount4panel0 = res.body.total },
}); initChart4panel0_2() {
}, const chartDom = this.$refs.pieChart4panel0_2;
getData4panel0(fn) { // 获取panel0页面统计信息 const myChart = echarts.init(chartDom);
overviewApi
.getData4panel0({ const colorArr = ["#9fe080", "#5470c6", "#f9c758"];
exact:{
incubatorId: this.incubatorId, const chartsData = this.data4panel0.areaChartData.map((item, index) => {
item.itemStyle = { color: colorArr[index] };
return item;
});
const option = {
tooltip: {
trigger: "item"
},
series: [
{
name: "",
type: "pie",
radius: "30%",
data: chartsData,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: "rgba(0, 0, 0, 0.5)"
}
} }
}) }
.then((res) => { ]
console.log(res, "getData4panel04tech"); };
this.data4panel0 = res.body;
this.initChart4panel0_1(); myChart.setOption(option);
this.initChart4panel0_2()
});
},
/**
* panel4
* @param {*} fn
*/
filterData4panel4() {
this.currentPage4panel4 = 1; // 重置当前分页
this.getData4panel4();
},
getMore4panel4(item){
this.dialogVisible4panel4 = true
this.introduction4panel4 = item.introduction
},
handleCurrentChange4panel4(newPage) {
// 切换分页
this.currentPage4panel4 = newPage;
this.getData4panel4()
},
handleSizeChange4panel4(newSize){
this.pageSize4panel4 = newSize;
this.getData4panel4()
},
getData4panel4(fn) { // 获取panel4导师信息
overviewApi
.getData4panel4({
page: this.currentPage4panel4 > 0 ? this.currentPage4panel4-1 : this.currentPage4panel4,
size: this.pageSize4panel4,
exact:{
incubatorId: this.incubatorId,
},
vague: {"mentorName":this.searchQuery4panel4}
})
.then((res) => {
this.tableData4panel4 = res.body.list || [];
this.totalCount4panel4 = res.body.total
});
},
}, },
}; getDialogData4panel0(fn) {
</script> // 获取panel0弹窗列表信息
<style rel="stylesheet/scss" lang="scss" scoped> overviewApi
.app-container { .getDialogData4panel0({
padding: 20px; page:
background-color: #fff; this.currentPage4panel0 > 0
font-family: Microsoft YaHei; ? this.currentPage4panel0 - 1
} : this.currentPage4panel0,
size: this.pageSize4panel0,
.page-footer { exact: {
display: none !important; incubatorId: this.incubatorId
},
vague: {
year: this.searchQuery4panel0
}
})
.then(res => {
console.log(res, "getData4panel04tech");
this.tableData4panel0 = res.body.list || [];
this.totalCount4panel0 = res.body.total;
});
},
getData4panel0(fn) {
// 获取panel0页面统计信息
overviewApi
.getData4panel0({
exact: {
incubatorId: this.incubatorId
}
})
.then(res => {
console.log(res, "getData4panel04tech");
this.data4panel0 = res.body;
this.initChart4panel0_1();
this.initChart4panel0_2();
});
},
/**
* panel4
* @param {*} fn
*/
filterData4panel4() {
this.currentPage4panel4 = 1; // 重置当前分页
this.getData4panel4();
},
getMore4panel4(item) {
this.dialogVisible4panel4 = true;
this.introduction4panel4 = item.introduction;
},
handleCurrentChange4panel4(newPage) {
// 切换分页
this.currentPage4panel4 = newPage;
this.getData4panel4();
},
handleSizeChange4panel4(newSize) {
this.pageSize4panel4 = newSize;
this.getData4panel4();
},
getData4panel4(fn) {
// 获取panel4导师信息
overviewApi
.getData4panel4({
page:
this.currentPage4panel4 > 0
? this.currentPage4panel4 - 1
: this.currentPage4panel4,
size: this.pageSize4panel4,
exact: {
incubatorId: this.incubatorId
},
vague: { mentorName: this.searchQuery4panel4 }
})
.then(res => {
this.tableData4panel4 = res.body.list || [];
this.totalCount4panel4 = res.body.total;
});
}
} }
};
.header { </script>
// 菜单标题头 <style rel="stylesheet/scss" lang="scss" scoped>
background: #f5f7fa; .app-container {
ul { padding: 20px;
background-color: #fff;
font-family: Microsoft YaHei;
}
.page-footer {
display: none !important;
}
.header {
// 菜单标题头
background: #f5f7fa;
ul {
display: flex;
justify-content: start;
border: 1px solid #d8dce5;
background-color: #fff;
li {
width: 238px;
height: 48px;
display: flex; display: flex;
justify-content: start; align-items: center;
border: 1px solid #d8dce5; list-style: none;
background-color: #fff; justify-content: center;
li { cursor: pointer;
width: 238px;
height: 48px; &:active,
display: flex; &.active {
align-items: center; background: #1890ff;
list-style: none;
justify-content: center;
cursor: pointer;
&:active,
&.active {
background: #1890ff;
.title {
color: #ffffff;
}
}
.title { .title {
font-size: 16px; color: #ffffff;
color: #303133;
font-weight: bold;
} }
} }
.title {
font-size: 16px;
color: #303133;
font-weight: bold;
}
} }
} }
}
.bodyer {
// panels最外层容器 .bodyer {
background-color: #fff; // panels最外层容器
background-color: #fff;
}
.panelsWrapper {
// panels父容器
background: #f5f6fb;
display: flex;
flex-wrap: wrap;
& > li {
width: 100%;
height: 442px;
background: #ffffff;
position: relative;
} }
}
.panelsWrapper {
// panels父容器 /**公共类 */
background: #f5f6fb; .divider {
display: flex; width: 100%;
flex-wrap: wrap; height: 1px;
border: 1px dashed #dddee1;
& > li { }
width: 100%; .prefixDiv {
height: 442px; position: relative;
background: #ffffff; &:before {
position: relative; width: 4px;
} height: 16px;
background: #1890ff;
position: absolute;
top: 50%; /* 垂直居中 */
transform: translateY(-50%); /* 精确居中 */
left: 16px;
content: "";
} }
}
/**公共类 */ .prefixPoint {
.divider { position: relative;
width: 100%; &:before {
height: 1px; content: "";
border: 1px dashed #dddee1; width: 6px;
height: 6px;
background: #1890ff;
border-radius: 50%;
position: absolute;
left: 5px;
top: 50%; /* 垂直居中 */
transform: translateY(-50%); /* 精确居中 */
} }
.prefixDiv { }
/** 第五个面板 */
.tab_panel_4 {
._title {
font-size: 16px;
color: #1890ff;
width: 100%;
height: 50px;
background: #e4f2ff;
display: flex;
justify-content: space-between;
align-items: center;
position: relative; position: relative;
padding-left: 26px;
&:before { &:before {
width: 4px; width: 4px;
height: 16px; height: 16px;
background: #1890ff; background: #1890ff;
position: absolute; position: absolute;
// top: 19px;
top: 50%; /* 垂直居中 */ top: 50%; /* 垂直居中 */
transform: translateY(-50%); /* 精确居中 */ transform: translateY(-50%); /* 精确居中 */
left: 16px; left: 16px;
content: ""; content: "";
} }
} }
.prefixPoint { ul {
position: relative; display: flex;
&:before { flex-wrap: wrap;
content: ""; margin-left: 68px;
width: 6px; // margin-top: 20px;
height: 6px; & > li {
background: #1890ff; position: relative;
border-radius: 50%; width: 260px;
position: absolute; height: 334px;
left: 5px; background: #fff;
top: 50%; /* 垂直居中 */ border: 1px solid #dddee1;
transform: translateY(-50%); /* 精确居中 */ text-align: center;
padding: 10px;
margin-left: 10px;
margin-right: 40px;
margin-top: 20px;
img {
width: 200px;
height: 200px;
margin: 0 auto;
}
a {
position: absolute;
right: 11px;
bottom: 96px;
font-size: 15px;
color: #1890ff;
}
p {
font-size: 15px;
color: #606266;
padding-left: 18px;
text-align: left;
position: relative;
padding-top: 3px;
padding-bottom: 3px;
&:before {
content: "";
width: 6px;
height: 6px;
background: #1890ff;
border-radius: 50%;
position: absolute;
left: 5px;
top: 50%; /* 垂直居中 */
transform: translateY(-50%); /* 精确居中 */
}
}
} }
} }
/** 第五个面板 */ }
.tab_panel_4 { .tab_panel_1 {
display: flex;
padding: 10px;
& > ._left {
flex: 1;
margin-right: 20px;
height: 798px !important;
border: 1px solid #dddee1;
padding: 20px;
ul {
height: 640px;
overflow-y: auto;
}
._title { ._title {
font-size: 16px;
color: #1890ff;
width: 100%;
height: 50px;
background: #e4f2ff;
display: flex; display: flex;
width: 100%;
justify-content: space-between; justify-content: space-between;
align-items: center; margin-top: 10px;
position: relative; margin-bottom: 20px;
padding-left: 26px; span {
&:before { &:first-child {
width: 4px; font-size: 19px;
height: 16px; color: #303133;
}
&:last-child {
font-size: 19px;
color: #42b983;
}
}
}
li {
font-size: 15px;
color: #666666;
width: 100%;
height: 38px;
line-height: 38px;
text-align: left;
padding-left: 10px;
cursor: pointer;
&.active,
&:hover {
background: #1890ff; background: #1890ff;
position: absolute; color: #fff;
// top: 19px; }
top: 50%; /* 垂直居中 */ }
transform: translateY(-50%); /* 精确居中 */ }
left: 16px; & > ._right {
content: ""; flex: 4;
h2 {
font-weight: 400;
font-size: 27px;
color: #42b983;
text-align: center;
margin-top: 20px;
margin-block: 20px;
}
._title {
width: 100%;
height: 36px;
background: #e4f2ff;
font-size: 16px;
color: #1890ff;
margin-top: 10px;
margin-bottom: 6px;
._left {
float: left;
margin-left: 30px;
margin-top: 6px;
}
._right {
float: right;
margin-right: 30px;
margin-top: 6px;
cursor: pointer;
} }
} }
ul { ul {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
margin-left: 68px; padding-left: 20px;
// margin-top: 20px; li {
& > li { width: 290px;
position: relative; font-size: 15px;
width: 260px; color: #606266;
height: 334px;
background: #fff;
border: 1px solid #dddee1;
text-align: center;
padding: 10px; padding: 10px;
margin-left: 10px; padding-left: 20px;
margin-right: 40px; }
margin-top: 20px; }
dl {
display: flex;
flex-wrap: wrap;
padding-left: 20px;
dd {
width: 250px;
height: 274px;
font-size: 15px;
color: #606266;
/* padding: 10px; */
margin-left: 20px;
margin-right: 20px;
border: 1px solid #dddee1;
margin-top: 10px;
img { img {
width: 200px; width: 250px;
height: 200px; height: 150px;
margin: 0 auto;
} }
a { h3 {
position: absolute;
right: 11px;
bottom: 96px;
font-size: 15px; font-size: 15px;
color: #1890ff; color: #606266;
padding-left: 15px;
} }
p { p {
font-size: 15px; font-size: 13px;
color: #606266; color: #969aa3;
padding-left: 18px; padding-left: 15px;
text-align: left; // line-height: 20px;
position: relative; display: -webkit-box;
padding-top: 3px; -webkit-box-orient: vertical;
padding-bottom: 3px; overflow: hidden;
&:before { -webkit-line-clamp: 4;
content: ""; line-height: 1.6;
width: 6px;
height: 6px;
background: #1890ff;
border-radius: 50%;
position: absolute;
left: 5px;
top: 50%; /* 垂直居中 */
transform: translateY(-50%); /* 精确居中 */
}
} }
} }
} }
} }
.tab_panel_1 { }
.tab_panel_0 {
h2 {
font-weight: 400;
font-size: 27px;
color: #42b983;
text-align: center;
padding-top: 16px;
padding-bottom: 16px;
}
._title {
color: #1890ff;
height: 48px;
background: #e4f2ff;
font-weight: 400;
font-size: 16px;
line-height: 48px;
margin-bottom: 20px;
display: flex; display: flex;
padding: 10px; justify-content: space-between;
& > ._left { padding-left: 26px;
padding-right: 20px;
& > ._right {
cursor: pointer;
}
}
.contentWrapper {
border-top: 1px dashed #dddee1;
display: flex;
padding: 16px;
& > div {
flex: 1; flex: 1;
margin-right: 20px; }
height: 798px !important; .left {
border: 1px solid #dddee1; border-right: 1px dashed #dddee1;
padding: 20px; padding-left: 20px;
ul{ padding-right: 20px;
height: 640px; .body {
overflow-y: auto;
}
._title {
display: flex; display: flex;
width: 100%; ._left,
justify-content: space-between; ._right {
margin-top: 10px; flex: 1;
margin-bottom: 20px;
span {
&:first-child {
font-size: 19px;
color: #303133;
}
&:last-child {
font-size: 19px;
color: #42b983;
}
} }
} }
li { li {
font-size: 15px; font-size: 15px;
color: #666666; color: #606266;
width: 100%; line-height: 26px;
height: 38px; padding: 4px 42px;
line-height: 38px;
text-align: left;
padding-left: 10px;
cursor: pointer;
&.active,
&:hover {
background: #1890ff;
color: #fff;
}
} }
} }
& > ._right { .right {
flex: 4; padding-left: 20px;
h2 {
font-weight: 400;
font-size: 27px;
color: #42b983;
text-align: center;
margin-top: 20px;
margin-block: 20px;
}
._title {
width: 100%;
height: 36px;
background: #e4f2ff;
font-size: 16px;
color: #1890ff;
margin-top: 10px;
margin-bottom: 6px;
._left {
float: left;
margin-left: 30px;
margin-top: 6px;
}
._right {
float: right;
margin-right: 30px;
margin-top: 6px;
cursor: pointer;
}
}
ul {
display: flex;
flex-wrap: wrap;
padding-left: 20px;
li {
width: 290px;
font-size: 15px;
color: #606266;
padding: 10px;
padding-left: 20px;
}
}
dl {
display: flex;
flex-wrap: wrap;
padding-left: 20px;
dd {
width: 250px;
height: 274px;
font-size: 15px;
color: #606266;
/* padding: 10px; */
margin-left: 20px;
margin-right: 20px;
border: 1px solid #dddee1;
margin-top: 10px;
img {
width: 250px;
height: 150px;
}
h3 {
font-size: 15px;
color: #606266;
padding-left: 15px;
}
p {
font-size: 13px;
color: #969aa3;
padding-left: 15px;
// line-height: 20px;
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
-webkit-line-clamp: 4;
line-height: 1.6;
}
}
}
}
}
.tab_panel_0 {
h2 {
font-weight: 400;
font-size: 27px;
color: #42b983;
text-align: center;
padding-top: 16px;
padding-bottom: 16px;
}
._title {
color: #1890ff;
height: 48px;
background: #e4f2ff;
font-weight: 400;
font-size: 16px;
line-height: 48px;
margin-bottom: 20px;
display: flex;
justify-content: space-between;
padding-left: 26px;
padding-right: 20px; padding-right: 20px;
&>._right{ .body {
cursor: pointer; display: flex;
} flex-direction: column;
}
.contentWrapper {
border-top: 1px dashed #dddee1;
display: flex;
padding: 16px;
& > div {
flex: 1;
} }
.left {
border-right: 1px dashed #dddee1; ._top {
padding-left: 20px;
padding-right: 20px;
.body {
display: flex;
._left,
._right {
flex: 1;
}
}
li { li {
font-size: 15px; font-size: 15px;
color: #606266; color: #606266;
line-height: 26px; line-height: 26px;
padding: 4px 42px; padding: 4px 42px;
} }
} .dbox {
.right { display: inline-block;
padding-left: 20px; width: 10px;
padding-right: 20px; height: 10px;
.body { background: #1890ff;
display: flex; border-radius: 50%;
flex-direction: column; margin-right: 5px;
}
._top {
li {
font-size: 15px;
color: #606266;
line-height: 26px;
padding: 4px 42px;
}
} }
._bottom { }
padding-left: 40px; ._bottom {
img { padding-left: 40px;
width: 418px; img {
height: 272px; width: 418px;
} height: 272px;
} }
} }
} }
} }
}
::v-deep .el-dialog__body .el-table th.el-table__cell{
background-color: #f9ffec; ::v-deep .el-dialog__body .el-table th.el-table__cell {
} background-color: #f9ffec;
</style> }
</style>
\ No newline at end of file
'use strict' "use strict";
const path = require('path') const path = require("path");
const Mode = 'src'; // 'src' 'src-neuter'(中性) const Mode = "src"; // 'src' 'src-neuter'(中性)
// copy-webpack-plugin@4.5.2 // copy-webpack-plugin@4.5.2
const CopyWebpackPlugin = require('copy-webpack-plugin'); const CopyWebpackPlugin = require("copy-webpack-plugin");
//var HtmlWebpackPlugin = require('html-webpack-plugin'); //var HtmlWebpackPlugin = require('html-webpack-plugin');
const defaultSettings = require('./'+Mode+'/settings.js'); const defaultSettings = require("./" + Mode + "/settings.js");
function resolve(dir) { function resolve(dir) {
return path.join(__dirname, dir) return path.join(__dirname, dir);
}; }
const name = defaultSettings.title; // 网址标题 const name = defaultSettings.title; // 网址标题
const port = process.env.VUE_APP_LOCAL_PORT; // 端口配置 const port = process.env.VUE_APP_LOCAL_PORT; // 端口配置
const VUE_APP_BASE_API = process.env.VUE_APP_BASE_API; const VUE_APP_BASE_API = process.env.VUE_APP_BASE_API;
// 在文件顶部添加验证
console.log("BASE_API:", process.env.VUE_APP_BASE_API); // 调试用,确保能正确打印地址
// All configuration item explanations can be find in https://cli.vuejs.org/config/ // All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports = { module.exports = {
// hash 模式下可使用 // hash 模式下可使用
// publicPath: process.env.NODE_ENV === 'development' ? '/' : './', // publicPath: process.env.NODE_ENV === 'development' ? '/' : './',
publicPath: '/', publicPath: "/",
outputDir: 'dist', outputDir: "dist",
assetsDir: 'static', assetsDir: "static",
lintOnSave: process.env.NODE_ENV === 'development', lintOnSave: process.env.NODE_ENV === "development",
productionSourceMap: false, productionSourceMap: false,
//indexPath: 'index3.html', //indexPath: 'index3.html',
//integrity:true, //integrity:true,
lintOnSave:false, // 关闭代码核查 lintOnSave: false, // 关闭代码核查
pages:{ pages: {
index: { index: {
entry: Mode+'/main.js', entry: Mode + "/main.js",
// 模板来源 // 模板来源
template: './public/index.html', template: "./public/index.html",
// 在 dist/index.html 的输出 // 在 dist/index.html 的输出
filename: 'index.html', filename: "index.html",
// 当使用 title 选项时, // 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title> // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
//title: "Index Page", //title: "Index Page",
//keywords: "333", //keywords: "333",
//description: "444", //description: "444",
// 在这个页面中包含的块,默认情况下会包含 // 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。 // 提取出来的通用 chunk 和 vendor chunk。
chunks: ["index", "runtime", "chunk-libs", "chunk-elementUI"] chunks: ["index", "runtime", "chunk-libs", "chunk-elementUI"]
}, },
edge: { edge: {
// 页面的入口文件 // 页面的入口文件
entry: Mode+'/edge.js', entry: Mode + "/edge.js",
// 页面的模板文件 // 页面的模板文件
template: './public/edge.html', template: "./public/edge.html",
// build 生成的文件名称 例: dist/index.html // build 生成的文件名称 例: dist/index.html
filename: 'edge.html', filename: "edge.html",
chunks:["edge", "runtime", "chunk-libs", "chunk-elementUI"], chunks: ["edge", "runtime", "chunk-libs", "chunk-elementUI"]
} }
}, },
devServer: { devServer: {
port: port, port: port,
host: VUE_APP_BASE_API && VUE_APP_BASE_API.split(/\/\/|:/).slice(-2)[0], host: "0.0.0.0",
open: false, open: false,
overlay: { overlay: {
warnings: false, warnings: false,
errors: true errors: true
}, },
proxy: { proxy: {
'/api': { "/api": {
target: process.env.VUE_APP_BASE_API, target: VUE_APP_BASE_API,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/api': 'api' "^/api": "api"
} }
}, },
'/auth': { "/auth": {
target: process.env.VUE_APP_BASE_API, target: VUE_APP_BASE_API,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/auth': 'auth' "^/auth": "auth"
} }
}, }
} }
}, },
configureWebpack: { configureWebpack: {
// provide the app's title in webpack's name field, so that // provide the app's title in webpack's name field, so that
// it can be accessed in index.html to inject the correct title. // it can be accessed in index.html to inject the correct title.
plugins: [ plugins: [
new CopyWebpackPlugin([{ new CopyWebpackPlugin([
from: "./static", {
to: 'static' from: "./static",
}]), to: "static"
new CopyWebpackPlugin([{ }
from: "./config", ]),
to: 'config' new CopyWebpackPlugin([
}]) {
], from: "./config",
name: name, to: "config"
resolve: { }
alias: { ])
'@': resolve(Mode+''), ],
'@crud': resolve(Mode+'/components/Crud') name: name,
} resolve: {
} alias: {
}, "@": resolve(Mode + ""),
chainWebpack(config) { "@crud": resolve(Mode + "/components/Crud")
config.plugins.delete('preload') // TODO: need test }
config.plugins.delete('prefetch') // TODO: need test }
},
chainWebpack(config) {
config.plugins.delete("preload"); // TODO: need test
config.plugins.delete("prefetch"); // TODO: need test
// set svg-sprite-loader // set svg-sprite-loader
config.module config.module
.rule('svg') .rule("svg")
.exclude.add(resolve(Mode+'/assets/icons')) .exclude.add(resolve(Mode + "/assets/icons"))
.end() .end();
config.module config.module
.rule('icons') .rule("icons")
.test(/\.svg$/) .test(/\.svg$/)
.include.add(resolve(Mode+'/assets/icons')) .include.add(resolve(Mode + "/assets/icons"))
.end() .end()
.use('svg-sprite-loader') .use("svg-sprite-loader")
.loader('svg-sprite-loader') .loader("svg-sprite-loader")
.options({ .options({
symbolId: 'icon-[name]' symbolId: "icon-[name]"
}) })
.end() .end();
// set preserveWhitespace // set preserveWhitespace
config.module config.module
.rule('vue') .rule("vue")
.use('vue-loader') .use("vue-loader")
.loader('vue-loader') .loader("vue-loader")
.tap(options => { .tap(options => {
options.compilerOptions.preserveWhitespace = true options.compilerOptions.preserveWhitespace = true;
return options return options;
}) })
.end() .end();
config config
// https://webpack.js.org/configuration/devtool/#development // https://webpack.js.org/configuration/devtool/#development
.when(process.env.NODE_ENV === 'development', .when(process.env.NODE_ENV === "development", config =>
config => config.devtool('cheap-source-map') config.devtool("cheap-source-map")
) );
config config.when(process.env.NODE_ENV !== "development", config => {
.when(process.env.NODE_ENV !== 'development', config
config => { .plugin("ScriptExtHtmlWebpackPlugin")
config .after("html")
.plugin('ScriptExtHtmlWebpackPlugin') .use("script-ext-html-webpack-plugin", [
.after('html') {
.use('script-ext-html-webpack-plugin', [{ // `runtime` must same as runtimeChunk name. default is `runtime`
// `runtime` must same as runtimeChunk name. default is `runtime` inline: /runtime\..*\.js$/
inline: /runtime\..*\.js$/ }
}]) ])
.end() .end();
config config.optimization.splitChunks({
.optimization.splitChunks({ chunks: "all",
chunks: 'all', cacheGroups: {
cacheGroups: { libs: {
libs: { name: "chunk-libs",
name: 'chunk-libs', test: /[\\/]node_modules[\\/]/,
test: /[\\/]node_modules[\\/]/, priority: 10,
priority: 10, chunks: "initial" // only package third parties that are initially dependent
chunks: 'initial' // only package third parties that are initially dependent },
}, elementUI: {
elementUI: { name: "chunk-elementUI", // split elementUI into a single package
name: 'chunk-elementUI', // split elementUI into a single package priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm },
}, commons: {
commons: { name: "chunk-commons",
name: 'chunk-commons', test: resolve(Mode + "/components"), // can customize your rules
test: resolve(Mode+'/components'), // can customize your rules minChunks: 3, // minimum common number
minChunks: 3, // minimum common number priority: 5,
priority: 5, reuseExistingChunk: true
reuseExistingChunk: true }
} }
} });
}) config.optimization.runtimeChunk("single");
config.optimization.runtimeChunk('single') });
} },
); transpileDependencies: [
}, //'vue-echarts',
transpileDependencies: [ "resize-detector"
//'vue-echarts', ]
'resize-detector' };
]
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment