Commit 75c52e84 authored by 乐宝呗666's avatar 乐宝呗666

概况接口联调

parent dd078b2c
......@@ -2,3 +2,8 @@
# 页面 title 前缀
VUE_APP_TITLE=D2Admin Dev
NODE_ENV = "development"
# 开发环境 API
VUE_APP_BASE_API = '/api'
# 开发环境 URL
VUE_APP_REQUEST_URL = 'http://111.203.232.175:8085'
# 生产环境
# 页面 title 前缀
VUE_APP_TITLE = D2Admin Dev
NODE_ENV = "production"
# 生产环境 API
VUE_APP_BASE_API = '/'
# 生产环境 URL
VUE_APP_REQUEST_URL = 'http://111.203.232.175:8085'
......@@ -2,7 +2,8 @@ import axios from 'axios'
import Adapter from 'axios-mock-adapter'
import { get } from 'lodash'
import util from '@/libs/util'
import store from '../../store/index'
import { Message } from 'element-ui'
// import store from '../../store/index'
// import { errorLog, errorCreate } from './tools'
/**
......@@ -10,17 +11,22 @@ import store from '../../store/index'
*/
function createService () {
// 创建一个 axios 实例
const service = axios.create()
const service = axios.create({
baseURL: process.env.NODE_ENV === 'production' ? process.env.VUE_APP_REQUEST_URL : process.env.VUE_APP_BASE_API,
// baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
// withCredentials: true, // send cookies when cross-domain requests
timeout: 5000 // request timeout
})
// 请求拦截
service.interceptors.request.use(
// config => config,
config => {
const token = sessionStorage.getItem('token')
if (token) {
config.headers['Authorization'] = token
}
return config
},
if (token) {
config.headers.Authorization = token
}
return config
},
error => {
// 发送失败
console.log(error)
......@@ -71,7 +77,8 @@ function createService () {
case 505: error.message = 'HTTP版本不受支持'; break
default: break
}
// errorLog(error)
Message.closeAll()
Message.error(error.message)
return Promise.reject(error)
}
)
......@@ -91,16 +98,17 @@ function createRequestFunction (service) {
'Content-Type': get(config, 'headers.Content-Type', 'application/json')
},
timeout: 5000,
baseURL: 'http://111.203.232.175:8085',
data: {}
// baseURL: process.env.NODE_ENV === 'production' ? process.env.VUE_APP_REQUEST_URL : process.env.VUE_APP_BASE_API,
baseURL: process.env.VUE_APP_BASE_API
// data: {}
}
return service(Object.assign(configDefault, config))
}
}
// 用于真实网络请求的实例和请求方法
export const service = createService()
export const request = createRequestFunction(service)
export const request = createService()
// export const request = createRequestFunction(service)
// 用于模拟网络请求的实例和请求方法
export const serviceForMock = createService()
......
import { service, request, serviceForMock, requestForMock, mock } from './service'
import { request } from './service'
/**
* 获取知识图谱
*/
export function GetBasicList () {
return request({
url: `/tp/basic/getList`,
url: '/tp/basic/getList',
method: 'post'
})
}
......@@ -15,3 +15,114 @@ export function GetMapChina (type) {
method: 'post'
})
}
// 获取企业介绍详情
export function getIntroductionById (params) {
return request({
url: '/tp/introduction/getById',
method: 'get',
params
})
}
// 获取主营业务详情
export function getMainBusinessById (params) {
return request({
url: '/tp/mainBusiness/getById',
method: 'get',
params
})
}
// 获取公司荣誉详情
export function getGloryById (params) {
return request({
url: '/tp/glory/getById',
method: 'get',
params
})
}
// 获取公司文化详情
export function getCultureById (params) {
return request({
url: '/tp/culture/getById',
method: 'get',
params
})
}
// 获取公司资质详情
export function getCertificationList () {
return request({
url: '/tp/certification/getCertificationList',
method: 'get'
})
}
// 获取公司新闻列表
export function getNewsPageList (params) {
return request({
url: '/tp/news/getPageList',
method: 'post',
params
})
}
// 获取公司新闻详情
export function getNewsById (params) {
return request({
url: '/tp/news/getById',
method: 'get',
params
})
}
// 获取企业规模列表
export function getScalePageList (params) {
return request({
url: '/tp/scale/getPageList',
method: 'post',
params
})
}
// 获取公司规模详情
export function getScaleById (params) {
return request({
url: '/tp/scale/getById',
method: 'get',
params
})
}
// 公司营收数据
export function getRevenueDataList (params) {
return request({
url: '/tp/revenue/getRevenueDataList',
method: 'get',
params
})
}
// 查询客户增长分布
export function getCustomer (params) {
return request({
url: '/tp/revenue/getCustomer',
method: 'get',
params
})
}
// 查询解决方案数据
export function getMajorItems (params) {
return request({
url: '/tp/majorItems/getMajorItems',
method: 'get',
params
})
}
// 查询产品演示和案例展示
export function productDemonstration (params) {
return request({
url: '/tp/product/productDemonstration',
method: 'get',
params
})
}
// 获取行业信息
export function getIndustryData () {
return request({
url: '/tp/customerInformation/getList',
method: 'post'
})
}
// import request from '@/utils/request'
import { service, request, serviceForMock, requestForMock, mock } from './service'
import { request } from './service'
export function login(params) {
export function login (params) {
return request({
url: '/tp/login',
method: 'post',
......@@ -9,7 +9,7 @@ export function login(params) {
})
}
export function getInfo(token) {
export function getInfo (token) {
return request({
url: '/vue-admin-template/user/info',
method: 'get',
......@@ -17,7 +17,7 @@ export function getInfo(token) {
})
}
export function logout() {
export function logout () {
return request({
url: '/vue-admin-template/user/logout',
method: 'post'
......
......@@ -190,6 +190,13 @@ ul{list-style: none; padding: 0}
.search-box {
padding: .2rem;
.el-input--mini .el-input__inner {
height: .28rem;
line-height: .28rem;
}
.el-input--mini .el-input__icon {
line-height: .28rem;
}
}
// 选择框 搜索框样式
.el-input__inner{
......@@ -215,7 +222,12 @@ ul{list-style: none; padding: 0}
width: calc(100% - 0.64rem);
float: left;
}
.el-input--mini .el-input__inner {
height: .28rem;
line-height: .28rem;
}
.searchBtn{
font-size: .14rem;
color: #000E42;
width: .64rem;
height: .28rem;
......
<template>
<div :class="{'hidden':hidden}" class="pagination-container">
<el-pagination
:background="background"
:current-page.sync="currentPage"
:page-size.sync="pageSize"
:layout="layout"
:page-sizes="pageSizes"
:total="total"
v-bind="$attrs"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</template>
<script>
import { scrollTo } from '@/utils/scroll-to'
export default {
name: 'Pagination',
props: {
total: {
required: true,
type: Number
},
page: {
type: Number,
default: 1
},
limit: {
type: Number,
default: 10
},
pageSizes: {
type: Array,
default () {
return [10, 20, 30, 50]
}
},
layout: {
type: String,
default: 'total, sizes, prev, pager, next, jumper'
},
background: {
type: Boolean,
default: true
},
autoScroll: {
type: Boolean,
default: true
},
hidden: {
type: Boolean,
default: false
}
},
computed: {
currentPage: {
get () {
return this.page
},
set (val) {
this.$emit('update:page', val)
}
},
pageSize: {
get () {
return this.limit
},
set (val) {
this.$emit('update:limit', val)
}
}
},
methods: {
handleSizeChange (val) {
this.$emit('pagination', { page: this.currentPage, limit: val })
if (this.autoScroll) {
scrollTo(0, 800)
}
},
handleCurrentChange (val) {
this.$emit('pagination', { page: val, limit: this.pageSize })
if (this.autoScroll) {
scrollTo(0, 800)
}
}
}
}
</script>
<style scoped>
.pagination-container {
padding: 16px;
}
.pagination-container.hidden {
display: none;
}
</style>
......@@ -19,61 +19,47 @@ export default {
methods: {
drawLine () {
const vm = this
// const _list = vm.message
const _list = {
nodes: [
{
id: '0',
name: '群智合',
symbolSize: 50,
value: 28.685715,
category: 0,
symbolSize: 30,
value: 128.685715,
category: 2,
itemStyle: {
color: '#30DDF4'
},
label: {
position: 'inside'
}
},
{
id: '1',
name: '中行',
symbolSize: 40,
symbolSize: 20,
value: 4,
category: 0,
itemStyle: {
color: '#4f19c7'
},
label: {
fontSize: 12,
position: 'inside'
}
},
{
id: '2',
name: '新航城',
symbolSize: 40,
symbolSize: 20,
value: 9.485714,
category: 1,
category: 0,
itemStyle: {
color: '#c71969'
},
label: {
fontSize: 12,
position: 'inside'
}
},
{
id: '3',
name: '科技局',
symbolSize: 40,
symbolSize: 20,
value: 9.485714,
category: 1,
itemStyle: {
color: '#1984c7'
},
label: {
fontSize: 12,
position: 'inside'
}
},
{
......
......@@ -6,7 +6,7 @@ import App from './App'
import d2Admin from './plugin/d2admin'
// store
import store from '../store/index'
import qs from 'qs'
// import $ from 'jquery'
// 菜单和路由设置
import router from './router'
......@@ -29,6 +29,7 @@ Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key])
})
Vue.prototype.$echarts = echarts
Vue.prototype.$qs = qs
Vue.prototype.downUrl = 'http://10.11.16.19:8080'
Vue.prototype.baseUrl = 'http://10.12.8.67:51005'
......
......@@ -27,5 +27,10 @@ export default [
name: 'enterpriseSize',
meta,
component: _import('system/index/components/enterpriseSize')
}, {
path: '/enterpriseDetail', // 企业详情
name: 'enterpriseDetail',
meta,
component: _import('system/index/components/enterpriseDetail')
}
]
Math.easeInOutQuad = function(t, b, c, d) {
t /= d / 2
if (t < 1) {
return c / 2 * t * t + b
}
t--
return -c / 2 * (t * (t - 2) - 1) + b
}
// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts
var requestAnimFrame = (function() {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60) }
})()
/**
* Because it's so fucking difficult to detect the scrolling element, just move them all
* @param {number} amount
*/
function move(amount) {
document.documentElement.scrollTop = amount
document.body.parentNode.scrollTop = amount
document.body.scrollTop = amount
}
function position() {
return document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop
}
/**
* @param {number} to
* @param {number} duration
* @param {Function} callback
*/
export function scrollTo(to, duration, callback) {
const start = position()
const change = to - start
const increment = 20
let currentTime = 0
duration = (typeof (duration) === 'undefined') ? 500 : duration
var animateScroll = function() {
// increment the time
currentTime += increment
// find the value with the quadratic in-out easing function
var val = Math.easeInOutQuad(currentTime, start, change, duration)
// move the document.body
move(val)
// do the animation unless its over
if (currentTime < duration) {
requestAnimFrame(animateScroll)
} else {
if (callback && typeof (callback) === 'function') {
// the animation is done so lets callback
callback()
}
}
}
animateScroll()
}
......@@ -8,23 +8,25 @@
</div>
<div class="news-content">
<el-table stripe :data="tableData" style="width: 100%">
<el-table-column prop="name" label="内容">
<el-table-column prop="title">
<template slot-scope="scope">
<a @click.stop="goDetail(scope.row)">{{scope.row.name}}</a>
<div @click.stop="goDetail(scope.row)">{{scope.row.title}}</div>
</template>
</el-table-column>
<el-table-column align="right" prop="publishTime" label="日期">
<el-table-column align="right" prop="releaseDate">
<template slot-scope="scope">
<a @click.stop="goDetail(scope.row)">{{scope.row.publishTime}}</a>
<div @click.stop="goDetail(scope.row)">{{scope.row.releaseDate}}</div>
</template>
</el-table-column>
</el-table>
<el-pagination
background
class="text-right"
layout="prev, pager, next"
:total="1000">
</el-pagination>
<Pagination
v-show="pageObj.total > 0"
:total="pageObj.total"
layout="->,total, prev, pager, next"
:page.sync="pageObj.pageNo"
:limit.sync="pageObj.pageSize"
@pagination="pageChange"
/>
</div>
</div>
</d2-container>
......@@ -32,28 +34,31 @@
<script>
import headerLayout from '@/components/headerLayout/index' // 公共头部
import Pagination from '@/components/Pagination'
import * as API_BASIC from '@/api/sys.basic.js'
export default {
components: { headerLayout },
components: { headerLayout, Pagination },
data () {
return {
tableData: [
{ id: '1', name: '千帆竞渡,群智合助力医药健康行业数字化', publishTime: '2021年4月30日', source: '中国网' },
{ id: '2', name: '千帆竞渡,群智合助力医药健康行业数字化', publishTime: '2021年4月30日', source: '中国网' },
{ id: '3', name: '千帆竞渡,群智合助力医药健康行业数字化', publishTime: '2021年4月30日', source: '中国网' },
{ id: '4', name: '千帆竞渡,群智合助力医药健康行业数字化', publishTime: '2021年4月30日', source: '中国网' },
{ id: '5', name: '千帆竞渡,群智合助力医药健康行业数字化', publishTime: '2021年4月30日', source: '中国网' },
{ id: '6', name: '千帆竞渡,群智合助力医药健康行业数字化', publishTime: '2021年4月30日', source: '中国网' },
{ id: '7', name: '千帆竞渡,群智合助力医药健康行业数字化', publishTime: '2021年4月30日', source: '中国网' },
{ id: '8', name: '千帆竞渡,群智合助力医药健康行业数字化', publishTime: '2021年4月30日', source: '中国网' },
{ id: '9', name: '千帆竞渡,群智合助力医药健康行业数字化', publishTime: '2021年4月30日', source: '中国网' },
{ id: '10', name: '千帆竞渡,群智合助力医药健康行业数字化', publishTime: '2021年4月30日', source: '中国网' }
]
pageObj: {
pageNo: 1,
total: 1,
pageSize: 10
},
tableData: []
}
},
mounted () {
this.getNewsList()
},
methods: {
// 查询概况页面数据
getNewsList () {
API_BASIC.getNewsPageList({ _index: 1, _size: 10 }).then(res => {
this.tableData = res.data.records
this.pageObj.total = Number(res.data.total)
})
},
goDetail (row) {
this.$router.push({ path: '/newsDetail', query: { row: JSON.stringify(row) } })
},
......
......@@ -19,8 +19,6 @@
</template>
<script>
// import * as API_BASIC from '@/api/sys.basic.js'
export default {
data () {
return {
......@@ -77,7 +75,11 @@ export default {
handleDetail (item) {
this.activeIndex = item
if (this.basicData[item].name === '企业规模') {
this.$router.push('./enterpriseSize')
this.$router.push('/enterpriseSize')
} else if (this.basicData[item].name === '企业产权') {
// this.$router.push('/enterpriseSize')
} else {
this.$router.push({ path: '/enterpriseDetail', query: { type: item } })
}
}
}
......
......@@ -18,31 +18,32 @@ export default {
columnWidth: [350, 100],
oddRowBGC: 'rgba(47,219,243,0.15)',
evenRowBGC: 'rgba(47,219,243,0.05)',
data: [
['群智合成功交付实施*****项目', '2010/9/10'],
['群智合成功交付实施*****项目', '2010/9/10'],
['群智合成功交付实施*****项目', '2010/9/10'],
['群智合成功交付实施*****项目', '2010/9/10'],
['群智合成功交付实施*****项目', '2010/9/10'],
['群智合成功交付实施*****项目', '2010/9/10']
]
data: []
// data: [
// ['群智合成功交付实施*****项目', '2010/9/10'],
// ['群智合成功交付实施*****项目', '2010/9/10'],
// ['群智合成功交付实施*****项目', '2010/9/10'],
// ['群智合成功交付实施*****项目', '2010/9/10'],
// ['群智合成功交付实施*****项目', '2010/9/10'],
// ['群智合成功交付实施*****项目', '2010/9/10']
// ]
}
}
},
mounted () {
// this.getNewsList()
this.getNewsList()
},
methods: {
// 查询概况页面数据
getNewsList () {
API_BASIC.GetBasicList().then(res => {
const newsList = res.data.news
API_BASIC.getNewsPageList({ _index: 1, _size: 10 }).then(res => {
const newsList = res.data.records
const _data = []
newsList.forEach(element => {
_data.push([element.introduce, element.createTime])
_data.push([element.title, element.releaseDate])
})
this.config = {
columnWidth: [350, 100],
columnWidth: [350, 200],
oddRowBGC: 'rgba(47,219,243,0.15)',
evenRowBGC: 'rgba(47,219,243,0.05)',
data: _data
......@@ -64,6 +65,5 @@ export default {
padding: .24rem;
width: 100%;
}
}
</style>
......@@ -4,12 +4,22 @@
<div class="content">
<div class="select-box">
<div class="tab-chart">
<span class="tab-button" @click="chartActive=1" :class="{'is-active':chartActive=== 1 }">公司营收统计</span>
<span class="tab-button" @click="chartActive=2" :class="{'is-active':chartActive=== 2 }">客户增长分布</span>
<span class="tab-button" @click="getTypeData(1)" :class="{'is-active':chartActive=== 1 }">公司营收统计</span>
<span class="tab-button" @click="getTypeData(2)" :class="{'is-active':chartActive=== 2 }">客户增长分布</span>
</div>
<div class="tab-data">
<span class="tab-button" @click="dataActive=1" :class="{'is-active':dataActive=== 1 }">年</span>
<span class="tab-button" @click="dataActive=2" :class="{'is-active':dataActive=== 2 }">月</span>
<div class="tab-data" v-if="chartActive===1">
<span class="tab-button" @click="getTimeData('year')" :class="{'is-active':dataActive=== 'year' }">年</span>
<span class="tab-button" @click="getTimeData('month')" :class="{'is-active':dataActive=== 'month' }">月</span>
</div>
<div class="tab-data" v-if="chartActive===2">
<el-select v-model="years" size="mini" @change="getCustomer">
<el-option
v-for="item in yearsOption"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</div>
</div>
<div class="charts">
......@@ -30,79 +40,77 @@ export default {
components: { statistics, distributed },
data () {
return {
chartActive: 1,
dataActive: 1,
iconList: [
yearsOption: [
'2020',
'2021'
],
years: '2021',
chartActive: 1,
dataActive: 'year',
statisticsChart: {},
distributedChart: [],
basicObj: {},
introducearr: [],
urlarr: [],
caseList: [],
caseObj: {}
distributedChart: {
xAxis: [],
serise: {}
}
}
},
mounted () {
// this.getCustomerList()
this.getTypeData(1)
},
methods: {
// 查询概况页面数据
getCustomerList () {
API_BASIC.GetBasicList().then(res => {
this.iconList = res.data.program
for (let i = 0; i < this.iconList.length; i++) {
// this.iconList[i].name = this.iconList[i].name
this.iconList[i].urlArr = this.iconList[i].url.split(',')
this.iconList[i].introArr = this.iconList[i].introduce.split(',')
}
this.iconList.forEach(element => {
this.basicObj.name = element.name
this.introducearr = element.introduce.split(',')
this.urlarr = element.url.split(',')
})
// 案例展示
this.caseList = res.data.case
this.caseList.forEach(ele => {
this.caseObj = ele
})
// 客户分布
const argcustomer = res.data.customer
const titledis = []
const data = []
const num = []
argcustomer.forEach(e => {
titledis.push(e.status)
num.push(e.new)
var dis = { name: e.status, value: e.new }
data.push(dis)
})
this.distributedChart.push({ title: titledis, num: num, data: data })
})
getTimeData (param) {
if (param === 'year') {
this.dataActive = 'year'
} else {
this.dataActive = 'month'
}
this.getRevenueDataList()
},
getTypeData (param) {
if (param === 1) {
this.chartActive = 1
this.getRevenueDataList()
} else {
this.chartActive = 2
this.getCustomer()
}
},
// 查询公司营收数据
async getRevenueDataList () {
const _data = await API_BASIC.getRevenueDataList({ time: this.dataActive })
this.statisticsChart = _data.data
},
// 查询公司营收数据
async getCustomer () {
const _data = await API_BASIC.getCustomer({ time: this.years })
this.distributedChart = _data.data
}
}
}
</script>
<style lang="scss" scoped>
.deptOperation{
.content {
font-size: .12rem;
padding: .16rem .24rem;
.select-box {
justify-content: flex-end;
.tab-data {
margin-left: .4rem;
}
}
.charts {
width: 100%;
height: 2rem;
.statisticsChart ,.distributedChart {
width: 100%;
height: 2rem;
}
.deptOperation{
.content {
font-size: .12rem;
padding: .16rem .24rem;
.select-box {
justify-content: flex-end;
.tab-data {
margin-left: .4rem;
.el-select {
width: .92rem;
}
}
}
.charts {
width: 100%;
height: 2rem;
.statisticsChart ,.distributedChart {
width: 100%;
height: 2rem;
}
}
}
}
</style>
<template>
<d2-container class="newsDetail">
<headerLayout></headerLayout>
<div class="news-wrapper">
<div class="news-title d-flex jc-between">
<label>{{titleList[type]}}</label>
<span @click="goBack">&lt; 返回</span>
</div>
<div class="news-content" v-if="type===0 ||type===3|| type===4|| type===5 ">
<h3>{{contentData.name}}</h3>
<div v-html="contentData.content"></div>
</div>
<div class="news-content" v-if="type===1">
<a class="image-box" v-for="(item,index) in contentData" :key="index">
<el-image :src="item.fileUrl"></el-image>
</a>
</div>
</div>
</d2-container>
</template>
<script>
import headerLayout from '@/components/headerLayout/index' // 公共头部
import * as API_BASIC from '@/api/sys.basic.js'
export default {
components: { headerLayout },
data () {
return {
titleList: {
0: '企业介绍',
1: '企业资质',
2: '企业产权',
3: '主营业务',
4: '公司荣誉',
5: '企业文化',
6: '企业规模'
},
type: 0,
contentData: ''
}
},
mounted () {
this.type = JSON.parse(this.$route.query.type)
console.log(typeof this.type)
if (this.type === 0) {
this.getIntroductionById()
} else if (this.type === 1) {
this.getCertificationList()
} else if (this.type === 3) {
this.getMainBusinessById()
} else if (this.type === 4) {
this.getGloryById()
} else if (this.type === 5) {
this.getCultureById()
}
},
methods: {
async getIntroductionById () {
const _data = await API_BASIC.getIntroductionById({ id: 1 })
this.contentData = _data.data
this.contentData.content = unescape(this.contentData.content)
},
async getCertificationList () {
const _data = await API_BASIC.getCertificationList()
this.contentData = _data.data
},
async getMainBusinessById () {
const _data = await API_BASIC.getMainBusinessById({ id: 1 })
this.contentData = _data.data
this.contentData.content = unescape(this.contentData.content)
},
async getGloryById () {
const _data = await API_BASIC.getGloryById({ id: 1 })
this.contentData = _data.data
this.contentData.content = unescape(this.contentData.content)
},
async getCultureById () {
const _data = await API_BASIC.getCultureById({ id: 1 })
this.contentData = _data.data
this.contentData.content = unescape(this.contentData.content)
},
goBack () {
this.$router.back(-1)
}
}
}
</script>
<style lang="scss" scoped>
.newsDetail {
.news-wrapper {
padding: .5rem 1rem;
}
.news-title {
width: 100%;
height: .54rem;
font-size: .24rem;
line-height: 1.5;
color: $color-primary;
border-bottom: .02rem solid $color-primary;
margin-bottom: .5rem;
span {
cursor: pointer;
}
}
.news-content {
color: #fff;
font-size: .14rem;
width: 9.6rem;
margin: 0 auto;
padding:20px;
h3 {
text-align: center;
font-size: .18rem;
}
.mb-2 {
margin-bottom: .2rem;
}
.pl {
padding-left: .5rem;
}
.el-image {
width: 2.4rem;
height: 1.8rem;
margin: .24rem;
}
}
}
</style>
......@@ -4,7 +4,11 @@
<div class="section">
<div class="leftBlock">
<el-table :show-header="false" :data="tableData" stripe style="width: 100%">
<el-table-column prop="type" width="100"></el-table-column>
<el-table-column prop="type" width="100">
<template slot-scope="scope">
<span>{{scope.row.type==1?'子公司':'母公司'}}</span>
</template>
</el-table-column>
<el-table-column prop="name"></el-table-column>
</el-table>
</div>
......@@ -25,67 +29,26 @@ export default {
data () {
return {
mapChina: [],
tableData: [{
name: '北京群智合信息科技股份有限公司',
type: '母公司'
}, {
name: '北京群智合信息技术服务有限公司',
type: '子公司'
}, {
name: '北京群智合数码科技有限公司',
type: '子公司'
}, {
name: '北京群智合数码科技有限公司深圳分公司',
type: '子公司'
}, {
name: '天津群智合数码科技有限公司',
type: '子公司'
}, {
name: '许昌群智合数码科技有限公司',
type: '子公司'
}, {
name: '郑州',
type: '办事处'
}, {
name: '西安',
type: '办事处'
}, {
name: '成都',
type: '办事处'
}, {
name: '贵阳',
type: '办事处'
}, {
name: '安阳',
type: '办事处'
}, {
name: '唐山',
type: '办事处'
}, {
name: '张家口',
type: '办事处'
}, {
name: '南京',
type: '办事处'
}, {
name: '云南',
type: '办事处'
}, {
name: '广东',
type: '办事处'
}, {
name: '威海',
type: '办事处'
}, {
name: '烟台',
type: '办事处'
}]
tableData: []
}
},
mounted () {
this.getTableData()
this.GET_MapChina()
},
methods: {
// 获取表格
getTableData () {
const param = {
_index: 1,
_size: 30
}
API_BASIC.getScalePageList(param).then(res => {
if (res.status === 200) {
this.tableData = res.data.records
}
})
},
GET_MapChina () {
API_BASIC.GetMapChina(0).then(res => {
this.newData = res.data
......
<template>
<div class="importantProject">
<div class="title">重点项目</div>
<div class="d-flex search-box jc-end">
<el-select v-model="industry" size="mini" @change="getTypeData">
<el-option
v-for="(item,index) in industryOptions"
:key="index"
:label="item.customerAttribute"
:value="item.customerAttribute">
</el-option>
</el-select>
</div>
<div class="content">
<div class="subtitle"><i class="diamond"></i>解决方案</div>
<div class="solution">
<el-carousel indicator-position="none">
<el-carousel-item v-for="(icon, id) in solutionList" :key="id">
<div class="softwareSolution">
<div class="title">{{icon.name}}</div>
<div class="title">{{icon.industry}}</div>
</div>
<ul>
<li v-for="(item, index) in icon.introArr.length" :key="index">
<el-image :src="icon.urlArr[index]"></el-image>
<p>{{icon.introArr[index]}}</p>
<li v-for="(item, index) in icon.imageUrl.length" :key="index">
<el-image :src="icon.imageUrl[index]"></el-image>
<p>{{icon.imageName[index]}}</p>
</li>
</ul>
</el-carousel-item>
......@@ -23,13 +33,13 @@
<el-carousel>
<el-carousel-item v-for="(item, i) in caseList" :key="i">
<div class="softwareSolution">
<div class="title">{{item.name}}</div>
<div class="title">{{item.industry}}</div>
</div>
<ul>
<li>
<el-image :src="item.url" class="case-img"></el-image>
<el-image :src="item.imageUrl" class="case-img"></el-image>
<div class="case-content">
<h5>案例介绍</h5>
<h5>{{item.systemName}}</h5>
<div class="text-ells">{{item.introduce}}</div>
</div>
</li>
......@@ -48,46 +58,48 @@ export default {
components: {},
data () {
return {
solutionList: [
{ icon: 'intelligent', name: '企业智能化', urlArr: ['123', '345', '567', '789'], introArr: ['123.png', '456.png', '567.png', '789.png'] },
{ icon: 'retail', name: '新零售', urlArr: ['123', '345', '567', '789'], introArr: ['123.png', '456.png', '567.png', '789.png'] },
{ icon: 'city', name: '智慧城市', urlArr: ['123', '345', '567', '789'], introArr: ['123.png', '456.png', '567.png', '789.png'] },
{ icon: 'energy', name: '智慧能源', urlArr: ['123', '345', '567', '789'], introArr: ['123.png', '456.png', '567.png', '789.png'] },
{ icon: 'general', name: '基础通用', urlArr: ['123', '345', '567', '789'], introArr: ['123.png', '456.png', '567.png', '789.png'] }
],
caseList: [
{
name: '企业智能化',
url: '123',
introduce: '基础通用基础通用基础通用基础通用基础通用基础通用基础通用基础通用基础通用基础通用,基础通用基础通用基础通用,基础通用基础通用基础通用基础通用。'
},
{
name: '新零售',
url: '456',
introduce: '基础通用基础通用基础通用基础通用基础通用基础通用基础通用基础通用基础通用基础通用,基础通用基础通用基础通用,基础通用基础通用基础通用基础通用。'
}, {
name: '智慧城市',
url: '789',
introduce: '基础通用基础通用基础通用基础通用基础通用基础通用基础通用基础通用基础通用基础通用,基础通用基础通用基础通用,基础通用基础通用基础通用基础通用。'
}
]
industryOptions: [],
industry: '',
solutionList: [],
caseList: []
}
},
mounted () {
// this.getCustomerList()
this.getIndustryData()
this.getMajorItems()
this.productDemonstration()
},
methods: {
getTypeData () {
this.getMajorItems()
this.productDemonstration()
},
// 获取下拉框数据
async getIndustryData () {
const _data = await API_BASIC.getIndustryData()
this.industryOptions = _data.data
},
// 查询概况页面数据
getCustomerList () {
API_BASIC.GetBasicList().then(res => {
console.log(res.data)
// this.solutionList = res.data.program
// for (let i = 0; i < this.solutionList.length; i++) {
// this.solutionList[i].urlArr = this.solutionList[i].url.split(',')
// this.solutionList[i].introArr = this.solutionList[i].introduce.split(',')
// }
// 案例展示
this.caseList = res.data.case
getMajorItems () {
API_BASIC.getMajorItems({ industry: this.industry || null }).then(res => {
if (res.status === 200) {
this.solutionList = []
const _data = res.data
_data.forEach(item => {
this.solutionList.push({
industry: item.industry,
imageUrl: item.imageUrl && item.imageUrl.split(','),
imageName: item.imageName && item.imageName.split(',')
})
})
}
})
},
productDemonstration () {
API_BASIC.productDemonstration({ industry: this.industry || null }).then(res => {
if (res.status === 200) {
this.caseList = res.data
}
})
}
}
......@@ -97,18 +109,18 @@ export default {
<style lang="scss" scoped>
.importantProject{
.content {
padding: .24rem;
padding: 0 .24rem;
.solution{
width:100%;
height: 1.28rem;
height: 1.24rem;
border-radius:2px;
border:1px solid $color-primary;
margin: .16rem 0 .24rem;
margin: .12rem 0 .24rem;
.el-carousel {
height: 1.28rem;
height: 1.24rem;
}
::v-deep .el-carousel__container {
height: 1.28rem;
height: 1.24rem;
}
.softwareSolution{
......@@ -158,22 +170,21 @@ export default {
}
}
.caseShow{
height: 1.6rem;
.el-carousel {
height: 1.6rem;
::v-deep .el-carousel__indicators--horizontal {
bottom: -.15rem;
}
::v-deep .el-carousel__container {
height: 1.6rem;
::v-deep .el-carousel__indicator--horizontal {
padding: .06rem .04rem;
}
.case-img{
width:1.6rem;
height:1rem;
width:1.15rem;
height:.8rem;
box-shadow:0px 0px 8px 4px rgba(10,18,35,0.5);
border-radius:2px 0px 0px 2px;
float: left;
}
.case-content{
width: calc(100% - 1.8rem);
width: calc(100% - 1.4rem);
height:1rem;
margin-left: .2rem;
float: left;
......@@ -189,7 +200,7 @@ export default {
.text-ells{
position: relative;
width: 100%;
height: calc(100% - .26rem);
height: calc(100% - .46rem);
font-size:.12rem;
font-family:PingFang-SC-Regular,PingFang-SC;
color:#fff;
......
......@@ -26,7 +26,7 @@
</div>
<!-- <div id="topology"></div> -->
<graphChart :message="{}" idstr="graphChart" class="heightCut44"></graphChart>
<graphChart :message="mapData" idstr="graphChart" class="heightCut44"></graphChart>
<div class="open" @click="openDialog"></div>
<knowledgeDialog v-if="knowledgeDialogShow" ref="child"></knowledgeDialog>
</div>
......@@ -64,6 +64,222 @@ export default {
knowledname: {},
knowledid: '',
knowledData: [],
mapData: {
nodes: [
{
category: 0,
color: '#4f19c7',
customerId: '83449',
customerName: '中国银行保险监督管理委员会',
id: '83449',
name: '中国银行保险监督管理委员会',
refId: '6286628186264322878',
symbolSize: 30,
value: 10
},
{
category: 0,
code: '',
color: '#8419c7',
id: '93232',
name: '2019年中国银行保险监督管理委员会驻场项目',
projectId: '93232',
projectName: '2019年中国银行保险监督管理委员会驻场项目',
refId: '7906013387793795048',
symbolSize: 50,
value: 10
},
{
category: 0,
code: '',
color: '#8419c7',
id: '93231',
name: '保监会2018年驻场项目',
projectId: '93231',
projectName: '保监会2018年驻场项目',
refId: '7633172723624484172',
symbolSize: 50,
value: 10
},
{
category: 0,
color: '#199fc7',
id: '90243',
name: '2019年中国银行保险监督管理委员会维保项目',
nicheId: '90243',
nicheName: '2019年中国银行保险监督管理委员会维保项目',
refId: '6102089388333429693',
symbolSize: 50,
value: 10
},
{
category: 0,
color: '#199fc7',
id: '90242',
name: '2019年中国银行保险监督管理委员会维保项目',
nicheId: '90242',
nicheName: '2019年中国银行保险监督管理委员会维保项目',
refId: '5460092193160790682',
symbolSize: 50,
value: 10
},
{
category: 0,
color: '#b9c719',
id: '87336',
memberId: '87336',
memberName: '王伟',
name: '王伟',
refId: '4624570720492670093',
symbolSize: 10,
value: 10
}
],
links: [
{
customer: {
category: 0,
color: '#4f19c7',
customerId: '83449',
customerName: '中国银行保险监督管理委员会',
id: '83449',
name: '中国银行保险监督管理委员会',
refId: '6286628186264322878',
symbolSize: 10,
value: 10
},
id: '80577',
indexName: '',
project: {
category: 0,
code: '',
color: '#8419c7',
id: '93232',
name: '2019年中国银行保险监督管理委员会驻场项目',
projectId: '93232',
projectName: '2019年中国银行保险监督管理委员会驻场项目',
refId: '7906013387793795048',
symbolSize: 10,
value: 10
},
source: '83449',
target: '93232'
},
{
customer: {
category: 0,
color: '#4f19c7',
customerId: '83449',
customerName: '中国银行保险监督管理委员会',
id: '83449',
name: '中国银行保险监督管理委员会',
refId: '6286628186264322878',
symbolSize: 10,
value: 10
},
id: '80576',
indexName: '',
project: {
category: 0,
code: '',
color: '#8419c7',
id: '93231',
name: '保监会2018年驻场项目',
projectId: '93231',
projectName: '保监会2018年驻场项目',
refId: '7633172723624484172',
symbolSize: 10,
value: 10
},
source: '83449',
target: '93231'
},
{
customer: {
category: 0,
color: '#4f19c7',
customerId: '83449',
customerName: '中国银行保险监督管理委员会',
id: '83449',
name: '中国银行保险监督管理委员会',
refId: '6286628186264322878',
symbolSize: 10,
value: 10
},
id: '78195',
indexName: '',
niche: {
category: 0,
color: '#199fc7',
id: '90243',
name: '2019年中国银行保险监督管理委员会维保项目',
nicheId: '90243',
nicheName: '2019年中国银行保险监督管理委员会维保项目',
refId: '6102089388333429693',
symbolSize: 10,
value: 10
},
source: '83449',
target: '90243'
},
{
customer: {
category: 0,
color: '#4f19c7',
customerId: '83449',
customerName: '中国银行保险监督管理委员会',
id: '83449',
name: '中国银行保险监督管理委员会',
refId: '6286628186264322878',
symbolSize: 10,
value: 10
},
id: '78194',
indexName: '',
niche: {
category: 0,
color: '#199fc7',
id: '90242',
name: '2019年中国银行保险监督管理委员会维保项目',
nicheId: '90242',
nicheName: '2019年中国银行保险监督管理委员会维保项目',
refId: '5460092193160790682',
symbolSize: 10,
value: 10
},
source: '83449',
target: '90242'
},
{
customer: {
category: 0,
color: '#4f19c7',
customerId: '83449',
customerName: '中国银行保险监督管理委员会',
id: '83449',
name: '中国银行保险监督管理委员会',
refId: '6286628186264322878',
symbolSize: 10,
value: 10
},
id: '74409',
indexName: '',
member: {
category: 0,
color: '#b9c719',
id: '87336',
memberId: '87336',
memberName: '王伟',
name: '王伟',
refId: '4624570720492670093',
symbolSize: 10,
value: 10
},
source: '83449',
target: '87336'
}
]
},
knowledgeDialogShow: false
}
},
......
......@@ -12,11 +12,9 @@ require('echarts/lib/component/title')
export default {
data () {
return {
dataObj: {},
option: {},
chart: null,
lengendColor: ['#00E8FF', '#746ef8', '#F8E71C', '#7ED321', '#FF663B'],
clickNum: [1, 1, 1, 1, 1]
lengendColor: ['#00E8FF', '#746ef8', '#F8E71C', '#7ED321', '#FF663B']
}
},
props: ['message', 'idstr'],
......@@ -30,11 +28,14 @@ export default {
vm.chart = echarts.init(document.getElementById(vm.idstr))
// 清空图表
vm.chart.clear()
if (!vm.message.series.number) {
return false
}
vm.option = {
xAxis: [
{
type: 'category',
data: ['4行业', '5行业', '6行业', '7行业', '8行业', '9行业', '10行业', '11行业', '12行业'],
data: vm.message.xAxis,
axisPointer: {
type: 'shadow'
},
......@@ -49,9 +50,13 @@ export default {
{
type: 'value',
name: '单位:个',
min: 0,
max: 250,
interval: 50,
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: 'rgba(255,255,255,.3)'
}
},
axisLine: {
lineStyle: {
color: '#FFF'
......@@ -61,9 +66,13 @@ export default {
{
type: 'value',
name: '增长率:%',
min: 0,
max: 25,
interval: 5,
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: 'rgba(255,255,255,.3)'
}
},
axisLine: {
lineStyle: {
color: '#FFF'
......@@ -82,14 +91,14 @@ export default {
series: [
{
type: 'bar',
barWidth: '50%',
barWidth: '25%',
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{ offset: 0, color: '#30DDF4' },
{ offset: 1, color: '#001873' }
])
},
data: [23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
data: vm.message.series.number
},
{
type: 'line',
......@@ -110,7 +119,7 @@ export default {
}
}
},
data: [4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
data: vm.message.series.proportion
}
]
}
......@@ -129,12 +138,14 @@ export default {
}
},
watch: {
message: function () {
const vm = this
setTimeout(function () {
vm.drawLine()
}, 1000)
// console.log(this.message)
message: {
handler () {
const vm = this
setTimeout(function () {
vm.drawLine()
}, 0)
},
deep: true
}
}
}
......
......@@ -12,10 +12,8 @@ require('echarts/lib/component/title')
export default {
data () {
return {
dataObj: {},
option: {},
chart: null,
clickNum: [1, 1, 1, 1, 1]
chart: null
}
},
props: ['message', 'idstr'],
......@@ -32,7 +30,7 @@ export default {
vm.option = {
xAxis: {
type: 'category',
data: ['1', '2', '3', '4', '5', '6', '7'],
data: vm.message.xAxis,
axisLine: {
lineStyle: {
color: '#FFF'
......@@ -64,7 +62,7 @@ export default {
height: '80%' // 图例高度
},
series: [{
data: [820, 932, 901, 934, 1290, 1330, 620],
data: vm.message.series,
smooth: true, // 折线图平滑
type: 'line',
areaStyle: {
......@@ -95,11 +93,6 @@ export default {
}
}
}
}, {
data: [120, 232, 501, 634, 290, 330, 320],
type: 'line',
smooth: true,
color: '#30DDF4'
}]
}
vm.drawBar()
......@@ -117,12 +110,14 @@ export default {
}
},
watch: {
message: function () {
const vm = this
setTimeout(function () {
vm.drawLine()
}, 1000)
// console.log(this.message)
message: {
handler () {
const vm = this
setTimeout(function () {
vm.drawLine()
}, 0)
},
deep: true
}
}
}
......
......@@ -7,27 +7,17 @@
<span @click="goBack">&lt; 返回</span>
</div>
<div class="news-content">
<h3>{{itemContent.name}}</h3>
<h3>{{itemContent.title}}</h3>
<div class="d-flex jc-center mb-2">
<div>
<label>发布时间:</label>
{{itemContent.publishTime}}
{{itemContent.releaseDate}}
</div>
<div class="pl">
<label>来源:</label>{{itemContent.source}}
</div>
</div>
<!-- <div v-html="content"></div> -->
<div>
“晓看红湿处,花重锦官城”。春天自古是筹谋与播种的季节,春生夏长秋收冬藏,在春意盎然的成都城里,一场关于信息化数字化的讨论为这个3月增添了更多的春色。
3月18日-19日,以“千帆竞渡·数字新起点”为主题的第九届医药健康行业信息化高峰论坛在成都保利公园皇冠假日酒店举行,来自医药健康行业的从业者、信息中心负责人、厂商代表等300余位行业精英共聚一堂,会间,大家围绕疫情后产业变局思维、数字新生态新空间、网络智慧连接运用、数据治理、设备智慧互联、研发全流程信息化等话题展开了激烈交流与探讨,群智合作为国内领先的政企数字化转型方案提供商应邀出席本次盛会。
<div class="text-center">
<el-image src=""></el-image>
<el-image src=""></el-image>
</div>
“晓看红湿处,花重锦官城”。春天自古是筹谋与播种的季节,春生夏长秋收冬藏,在春意盎然的成都城里,一场关于信息化数字化的讨论为这个3月增添了更多的春色。
3月18日-19日,以“千帆竞渡·数字新起点”为主题的第九届医药健康行业信息化高峰论坛在成都保利公园皇冠假日酒店举行,来自医药健康行业的从业者、信息中心负责人、厂商代表等300余位行业精英共聚一堂,会间,大家围绕疫情后产业变局思维、数字新生态新空间、网络智慧连接运用、数据治理、设备智慧互联、研发全流程信息化等话题展开了激烈交流与探讨,群智合作为国内领先的政企数字化转型方案提供商应邀出席本次盛会。
</div>
<div v-html="itemContent.content"></div>
</div>
</div>
</d2-container>
......@@ -40,13 +30,12 @@ export default {
components: { headerLayout },
data () {
return {
itemContent: {},
content: ''
itemContent: {}
}
},
mounted () {
this.itemContent = JSON.parse(this.$route.query.row)
this.content = ''
this.itemContent.content = unescape(this.itemContent.content)
},
methods: {
goBack () {
......@@ -88,11 +77,6 @@ export default {
.pl {
padding-left: .5rem;
}
.el-image {
width: 2.4rem;
height: 1.8rem;
margin: .24rem;
}
}
}
</style>
......@@ -39,12 +39,21 @@ module.exports = {
lintOnSave: true,
devServer: {
publicPath, // 和 publicPath 保持一致
disableHostCheck: process.env.NODE_ENV === 'development' // 关闭 host check,方便使用 ngrok 之类的内网转发工具
disableHostCheck: process.env.NODE_ENV === 'development', // 关闭 host check,方便使用 ngrok 之类的内网转发工具
// headers: {
// 'Access-Control-Allow-Origin': '*',
// },
// 'Access-Control-Allow-Origin': '*'
// }
// hotOnly: false,
// disableHostCheck: true
proxy: {
[process.env.VUE_APP_BASE_API]: {
target: process.env.VUE_APP_REQUEST_URL,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
}
}
}
},
css: {
loaderOptions: {
......
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