This commit is contained in:
annzee 2020-11-20 20:11:31 +08:00
parent 0a0e2292c7
commit 4588895004
34 changed files with 699 additions and 364 deletions

View File

@ -1,24 +1,21 @@
# jointcloud
# jointcloud 云际计算
## 电脑需要安装 node 环境
## 安装依赖命令
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
### 编译及热加载命令
```
npm run serve
```
### Compiles and minifies for production
### 生产环境打包命令
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 389 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

After

Width:  |  Height:  |  Size: 71 KiB

BIN
src/assets/banner-bg3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 KiB

BIN
src/assets/banner-bg4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 KiB

View File

@ -1,5 +1,5 @@
<template>
<el-col class="main " :span="18">
<div>
<h1 class="page-title">第一次全面评测报告</h1>
<div id="header-1">
<h3 class="page-header"></h3>
@ -61,7 +61,7 @@
<div>评测结果数据
<a href="datas/bench_results.xlsx" download="datas/bench_results.xlsx">bench_results.xlsx</a>
</div>
</el-col>
</div>
</template>
<script>
export default {

View File

@ -0,0 +1,19 @@
<template>
<router-view class="documents"></router-view>
</template>
<script>
export default {
name: 'document',
}
</script>
<style lang="scss" scoped>
.documents{
display: block;
width: 80%;
max-width: 800px;
margin: 30px auto;
text-align: left;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<el-col class="main " :span="18">
<div>
<h1 class="page-title">评分预测推广</h1>
<div id="header-1">
<h3 class="page-header"></h3>
@ -77,7 +77,7 @@
<h3 class="page-header">启动时间</h3>
<p>启动时间与规格不存在明显的关系所以不进行预测总的来说在四家厂商中启动时间整体上由慢到快的顺序为UCloud > 腾讯云 > 华为云 > 阿里云</p>
</div>
</el-col>
</div>
</template>
<script>
export default {

View File

@ -1,38 +1,36 @@
<template>
<div>
<el-col class="main " :span="18">
<h1 class="page-title">性能评测及评分规则</h1>
<div id="header-1">
<h3 class="page-header"></h3>
<p>我们对阿里云华为云腾讯云UCloud按量付费的实例进行评测得到评分结果以此为依据进行推荐</p>
<p>由于实例类型种类繁多我们主要选取了有代表性的3种类型12种实例同时也选取了各云服务厂商最新的几种实例进行持续的评测并进行评分</p>
<p>评测每周进行一次每次评测选择不同的地域在四个不同地域中进行评测如下图</p>
<img style="width: 90%;" src="@/assets/modules/serviceRecommendation/regions.png">
<p>评测结果见云服务评分页面</p>
</div>
<div id="header-2">
<h3 class="page-header">评测实例选取</h3>
<p>对于阿里云华为云和腾讯云我们在常用的通用型/标准型计算优化型和内存优化型三种类型种各选择一种
对于UCloud由于没有区分类型选择相同vCPU和内存的实例主要的评测实例选取如下</p>
<img style="width: 90%;" src="@/assets/modules/serviceRecommendation/instances.png">
<p>通用型/标准型的vCPU内存比为1:4计算优化型为1:2内存优化型为1:8另外也选取了各厂商最新的实例进行评测
阿里云的g6e.large, c6e.xlarge, r6e.large腾讯云的SN5.MEDIUM8等等这些评测实例的选取并不是一定的</p>
</div>
<div id="header-3">
<h3 class="page-header">评测指标和评分计算</h3>
<p>目前我们选择了五个维度的评测指标来衡量一个实例的性能并分别进行评分分别是CPU性能内存性能磁盘性能网络性能
对于每一个指标设定一个基准性能参数评测实例的分数就是该实例的评测结果与设定的基准性能参数的比值基准性能参数的设置使得分数在100分左右
</p>
<p>总评分即是各个指标评分的加和</p>
</div>
<div id="header-4">
<h3 class="page-header">评测程序</h3>
<p>我们使用Sysbench评测程序分别对CPU内存和IO进行评测并打分
对三个指标的评测都分为单线程的评测和多线程的评测多线程评测的线程数量等于实例的CPU数量
对内存的评测又分为读和写对IO的评测分为顺序读顺序写随机读随机写和随机读写</p>
<p>我们使用Netperf对内网性能进行评测评测分为TCP和UDP两部分</p>
</div>
</el-col>
<h1 class="page-title">性能评测及评分规则</h1>
<div id="header-1">
<h3 class="page-header"></h3>
<p>我们对阿里云华为云腾讯云UCloud按量付费的实例进行评测得到评分结果以此为依据进行推荐</p>
<p>由于实例类型种类繁多我们主要选取了有代表性的3种类型12种实例同时也选取了各云服务厂商最新的几种实例进行持续的评测并进行评分</p>
<p>评测每周进行一次每次评测选择不同的地域在四个不同地域中进行评测如下图</p>
<img style="width: 90%;" src="@/assets/modules/serviceRecommendation/regions.png">
<p>评测结果见云服务评分页面</p>
</div>
<div id="header-2">
<h3 class="page-header">评测实例选取</h3>
<p>对于阿里云华为云和腾讯云我们在常用的通用型/标准型计算优化型和内存优化型三种类型种各选择一种
对于UCloud由于没有区分类型选择相同vCPU和内存的实例主要的评测实例选取如下</p>
<img style="width: 90%;" src="@/assets/modules/serviceRecommendation/instances.png">
<p>通用型/标准型的vCPU内存比为1:4计算优化型为1:2内存优化型为1:8另外也选取了各厂商最新的实例进行评测
阿里云的g6e.large, c6e.xlarge, r6e.large腾讯云的SN5.MEDIUM8等等这些评测实例的选取并不是一定的</p>
</div>
<div id="header-3">
<h3 class="page-header">评测指标和评分计算</h3>
<p>目前我们选择了五个维度的评测指标来衡量一个实例的性能并分别进行评分分别是CPU性能内存性能磁盘性能网络性能
对于每一个指标设定一个基准性能参数评测实例的分数就是该实例的评测结果与设定的基准性能参数的比值基准性能参数的设置使得分数在100分左右
</p>
<p>总评分即是各个指标评分的加和</p>
</div>
<div id="header-4">
<h3 class="page-header">评测程序</h3>
<p>我们使用Sysbench评测程序分别对CPU内存和IO进行评测并打分
对三个指标的评测都分为单线程的评测和多线程的评测多线程评测的线程数量等于实例的CPU数量
对内存的评测又分为读和写对IO的评测分为顺序读顺序写随机读随机写和随机读写</p>
<p>我们使用Netperf对内网性能进行评测评测分为TCP和UDP两部分</p>
</div>
</div>
</template>
<script>

View File

@ -1,5 +1,5 @@
<template>
<div class="footer">
<div :class="fixed?'fixedFooter':'footer'">
<div class="footer-links">
<el-row v-if="type !== 'mini'">
<el-col>
@ -49,6 +49,16 @@ export default {
props: {
type: String,
},
data() {
return {
fixed: this.$route.path === '/serviceRecommendation/documents',
}
},
watch: {
$route(val) {
this.fixed = val.path === '/serviceRecommendation/documents';
}
},
};
</script>
@ -59,6 +69,15 @@ export default {
padding: 30px;
overflow: auto;
}
.fixedFooter{
background-color: black;
color: #dddddd;
padding: 30px;
overflow: auto;
width: 100%;
position: absolute;
bottom: 0;
}
.footer-links{
width: 86%;
max-width: 1200px;

View File

@ -33,10 +33,9 @@
@select="handleSelect">
<el-menu-item index="1">首页</el-menu-item>
<el-menu-item index="2">需求发布</el-menu-item>
<el-menu-item index="3">厂商信息</el-menu-item>
<el-menu-item index="4">企业应用中心</el-menu-item>
<el-menu-item index="5">解决方案</el-menu-item>
<el-menu-item index="6">技术成果</el-menu-item>
<el-menu-item index="3">服务发布</el-menu-item>
<el-menu-item index="4">解决方案</el-menu-item>
<el-menu-item index="5">技术成果</el-menu-item>
</el-menu>
</el-col>
@ -55,9 +54,8 @@ export default {
1: '/',
2: '/requirementRelease',
3: '/servicePublication',
4: '/404',
5: '/solution',
6: '/404',
4: '/solution',
5: '/404',
},
};
},

View File

@ -134,11 +134,11 @@ export default {
},
],
functionList: [
// {
// name: '', icon: 'yj_1', info: ', , ', url: '/serviceRecommendation',
// },
{
name: '云际磋商', icon: 'yj_1', info: '根据需求侧特定信息整合供给侧资源, 形成满足特定领域用户需求的云服务资源提供商候选对象列表, 协助用户选择最优化的云服务资源组合。', url: '/serviceRecommendation',
},
{
name: '云际互联', icon: 'yj_2', info: '实现对云际资源与服务之间的互联互通,构建云服务描述与发现标准体系;实现云际服务的快速发现、标准化索引和计量,构建云际服务的可信平台以及价值交换平台。', url: '/404',
name: '虚拟专云', icon: 'yj_5', info: '基于虚拟专用云平台管理系统,建立 “工作空间即服务” 的一种新型云际应用服务模式,对传统应用平滑上云,与对云际资源的动态自适应形成有效支撑。', url: '/serviceRecommendation',
},
{
name: '云际存储', icon: 'yj_3', info: '量化评估任务执行时间异常造成的影响,利用工作集负载感知的高效虚拟机迁移技术,实现虚拟机实时迁移,多维度云际存储优化,为云际应用开发运维提供支撑。', url: '/cloudStorage',
@ -147,17 +147,18 @@ export default {
name: '跨云计算', icon: 'yj_4', info: '构建面向计算与存储的资源抽象模型,运用应用与平台的解耦方法,实现计算资源的统一管理与聚合,通过对效能的动态评价寻找最满足功能约束的资源分配计算方案。', url: '/cloudComputation',
},
{
name: '虚拟专云', icon: 'yj_5', info: '基于虚拟专用云平台管理系统,建立“工作空间即服务”的一种新型云际应用服务模式,对传统应用平滑上云与对云际资源的动态自适应形成有效支撑。', url: '/404',
name: '际互联', icon: 'yj_2', info: '实现对云际资源与服务之间的互联互通,构建云服务描述与发现标准体系;实现云际服务的快速发现、标准化索引和计量,构建云际服务的可信平台以及价值交换平台。', url: '/404',
},
{
name: '云际容灾', icon: 'yj_6', info: '利用“纠删码”与“多副本”容灾技术,实现数据分散存放,形成有效数据备份;结合数据安全、存储利用率、读写效率等特性,实现低成本/高效率的云际容灾管理。', url: '/404',
},
{
name: '云际学习', icon: 'yj_7', info: '结合AI数据集与应用场景通过云际大数据融合过程实现数据智能学习实现对问题解决的聚焦、分类、推荐、解决、预测。', url: '/404',
},
{
name: '云际记账', icon: 'yj_8', info: '提供分布记账、智能合约等相关支撑机制, 基于区块链技术构建云际分布记账账本,交易完成后向参与方提供包含资源集成、代理服务和资源交易支付等完整记录。', url: '/404',
},
{
name: '云际学习', icon: 'yj_7', info: '结合AI数据集与应用场景通过云际大数据融合过程实现数据智能学习实现对问题解决的聚焦、分类、推荐、解决、预测。', url: '/404',
},
],
solutionList: [
{

View File

@ -13,8 +13,31 @@
<h2>跨云计算</h2>
<div class="manufacturer cloudComputation">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="函数面板" name="0">
<el-row :gutter="30">
<el-col :span="6" v-for="(item,index) in functionList" :key="index">
<el-card class="functionCard">
<p class="title">{{item.name}} <el-button type="text" class="insideFloatRight" @click="activeName='1'">details</el-button></p>
<el-divider></el-divider>
<p>env:{{item.env}}</p>
<p>memory:{{item.memory}}</p>
<p>timeout:{{item.timeout}}</p>
<el-popconfirm
confirm-button-text='好的'
cancel-button-text='不用了'
icon="el-icon-info"
icon-color="red"
title="确认删除此函数么?"
>
<el-button slot="reference" type="danger" size="small">删除</el-button>
</el-popconfirm>
</el-card>
</el-col>
</el-row>
</el-tab-pane>
<el-tab-pane label="创建函数" name="1">
<div class="bg-gray">
<div class="bg-gray" v-if="activeName==='1'">
<el-row :gutter="30">
<el-col :span="12">
<el-form v-model="form" ref="form" label-width="150px">
@ -90,25 +113,43 @@
<td>EnviromentVariable:</td>
<td :colspan="2">{{form.envVar}}</td>
<td :colspan="3">
Enable Native Serverless:
<!-- Enable Native Serverless:
<el-switch
v-model="form.enableNS"
size="small">
</el-switch>
</el-switch> -->
</td>
</tr>
</table>
<el-row style="margin-bottom:30px" :gutter="30">
<el-col :span="9">
<p>Args</p>
<el-input
type="textarea"
rows="6"
v-model="args"
></el-input>
</el-col>
<el-col :span="2" :offset="1">
<el-button class="invokeBtn" @click="invoke">invoke</el-button>
</el-col>
<el-col :offset="1" :span="9">
<p>函数返回值</p>
<el-input rows="6" type="textarea" readonly v-model="result"></el-input>
</el-col>
</el-row>
<el-button @click="activeName='1'">上一步</el-button>
<el-button @click="getResult">下一步</el-button>
<el-button @click="getResult">查看过程</el-button>
</div>
</el-tab-pane>
<el-tab-pane label="过程监管并获取结果" name="3">
<div class="bg-gray">
<el-tab-pane label="过程监管" name="3">
<iframe id="iframe" src="http://117.50.133.184:3000/d/MtxJZLoMk/hcloud-backend?orgId=1&refresh=5s" frameborder="0"></iframe>
<!-- <div class="bg-gray">
<el-progress class="progress" :text-inside="true"
:stroke-width="26" :percentage="percentage"></el-progress>
<div id="myEchart" style="width:1000px; height:600px" ref="myEchart">
</div>
</div>
</div> -->
</el-tab-pane>
</el-tabs>
</div>
@ -140,8 +181,12 @@ export default {
data() {
return {
interval: '',
activeName: '1',
form: {},
activeName: '0',
form: {
env: 'python',
},
args: '{}',
result: '',
percentage: 0,
second: 0,
cmOption: {
@ -154,7 +199,36 @@ export default {
theme: 'base16-light',
// keyMap: "emacs"
},
code: dedent`# Code here`,
code: dedent`# Code here
def handler(event):
return "hello world"
`,
functionList:[
{
name: 'MLtest',
env: 'python3',
memory: '128MB',
timeout: '3s',
},
{
name: 'MLtest1',
env: 'python3',
memory: '128MB',
timeout: '3s',
},
{
name: 'hello',
env: 'python3',
memory: '128MB',
timeout: '3s',
},
{
name: 'img_resize',
env: 'python3',
memory: '128MB',
timeout: '3s',
},
]
};
},
methods: {
@ -164,9 +238,12 @@ export default {
createFunc() {
this.activeName = '2';
},
invoke() {
this.result = 'hello world';
},
getResult() {
this.activeName = '3';
this.dynamicData();
// this.dynamicData();
},
randomData() {
this.second += 1;
@ -287,6 +364,40 @@ export default {
width: 300px;
margin: 30px auto;
}
.invokeBtn{
margin: 40px auto;
}
}
iframe {
width: 100%;
height: 500px;
margin-top: 30px;
}
.functionCard{
margin: 30px auto;
.el-card__body{
padding:0;
padding-bottom: 20px;
text-align: center;
}
.title{
margin:20px;
margin-bottom: 10px;
}
p{
margin: 10px 20px;
// margin-bottom: 10px;
}
.el-button{
margin:10px;
}
.insideFloatRight {
margin: 0;
padding:0;
float: right;
}
}
</style>

View File

@ -11,7 +11,8 @@
</div>
<h2>跨云计算</h2>
<div class="manufacturer">
<div class="processImg processImg-3">
<div class="processImg">
<img src="@/assets/modules/cloudComputation/process3.png" alt="">
</div>
<el-row class="overviewInfo" :gutter="30">
<el-col :span="12">

View File

@ -14,36 +14,27 @@
<h2>HCloud 技术亮点</h2>
<el-divider></el-divider>
<div class="text">
<p>HCloud是一套跨云Serverless计算框架提供了基本的Serverless计算服务同时能够让Serverless任务在不同的云平台如AWS和阿里云
以及不同云服务平台原生Serverless服务以及虚拟机之间 进行快速动态迁移从而</p>
<p>HCloud是一套跨云Serverless计算框架提供了基本的Serverless计算服务同时能够让Serverless任务在不同的云平台如AWS和阿里云以及不同云服务平台原生Serverless服务以及虚拟机之间进行快速动态迁移在保证用户业务逻辑稳定的前提条件下降低用户成本简化用户运维工作</p>
<h3>
·提供Serverless计算服务
</h3>
<p>Serverless计算又称Function-as-a-ServiceFaaS函数计算无服务计算等是一种新型的 编程模型
用户以函数的形式将自定义的业务逻辑代码上传给Serverless平台并通过事件驱动的 方式对业务逻辑进行调用Serverless具有如下优势
<p>Serverless计算又称Function-as-a-ServiceFaaS函数计算无服务计算等是一种新型的编程模型用户以函数的形式将自定义的业务逻辑代码上传到Serverless平台并通过事件驱动HTTP调用等触发器对业务逻辑进行调用Serverless具有如下优势
</p>
<h4>1. 降低启动成本</h4>
<p>对于新创企业而言使用Serverless服务可以免去自己搭建版本管理服务器数据库服务器等基础设施仅需要编写业务逻辑代码即可
部署运维等其他服务均由Serverless服务商提供
<p>Serverless服务使用可以免去自己搭建版本管理服务器数据库服务器等基础设施仅需要编写业务逻辑代码即可对初创企业更加友好部署运维等其他服务均由Serverless服务商提供
</p>
<h4>2. 细粒度计费机制</h4>
<p>Serverless按照函数调用的具体次数和每个函数执行的具体时间精确到100ms进行计费真正做到按使用计费
对比在虚拟机上运行服务由于虚拟机的粗粒度长期购买机制即使没 有请求到来虚拟机仍将持续计费</p>
<p>Serverless按照函数调用的具体次数和每个函数执行的具体时间精确到100ms进行细粒度计费对比在虚拟机上运行服务由于虚拟机的粗粒度长期购买机制即使没有请求处理和计算资源的使用虚拟机仍将持续计费</p>
<h4>3. 自动扩容</h4>
<p>Serverless得益于其细粒度部署的特点易于实现自动扩容当请求吞吐量激增时能够快速创建出大量的实例进行计算保证每个实例的计算效率
自动扩容的实现由Serverless平台完成对用户透明无感知</p>
<p>Serverless得益于其细粒度部署的特点易于实现自动扩容当请求吞吐量激增时能够快速创建出大量的实例进行计算保证每个实例的计算效率以及整体业务的稳定性自动扩容的实现由Serverless平台完成对用户透明无感知</p>
<h3>· 提供跨平台的Serverless服务</h3>
<p>HCloud提供了统一的接口能够将同一份代码运行在不同的平台上当用户具有服务迁移的需求时能够将服务动态地从一个云迁移到另一个云上</p>
<p>云平台通常提供原生的Serverless服务这些服务往往具有不同的接口不同的写法要求和运行方式因此当云用户希望将自己的函数代码部署在多云从而灵活利用各平台优势时不得不针对每个平台进行代码的适配和分别部署</p>
<p>HCloud向用户提供统一的接口能够将用户的同一份代码运行在不同的云平台当用户具有Serverless任务迁移的需求时能够将任务动态地从一个云迁移到另一个云上整个过程对服务调用方透明</p>
<h3>· 提供跨服务的Serverless架构</h3>
<p>Serverless按量计费的特点使得在请求吞吐量小时比起虚拟机而言能够避免资源空转带来的成本浪费
然而当请求吞吐量非常大以至于能够撑满虚拟机的计算资源时Serverless的服务成本比起虚拟机会贵很多</p>
<p>因此当请求吞吐量低时HCloud能够将Serverless任务运行在原生的Serverless平台如AWS Lambda
利用Serverless按量付费的优势当请求吞吐量高时HCloud可以将任务迁移到虚拟机上运行从而降低成本</p>
<p>通常情况下单个Serverless用户或者说单个函数的请求量较少常常不足以撑满虚拟机资源
HCloud可以将多个用户或者说多个函数的请求一起运行在虚拟机中使得这些函 数的运行成本都能够下降类似拼单的原理</p>
<p>云服务厂商通常提供Spot Instance即可以临时使用的虚拟机这样的虚拟机通常价格非常便宜但是可能随时被云服务商回收
HCloud提供的Serverless模型天然利于在Spot Instance上运行当某台虚拟机被回收时仅需将任务迁移到其他虚拟机上即可
该过程对用户无感知目前功能完善中</p>
<p>Serverless按量计费的特点使得在请求吞吐量小时比起虚拟机而言能够避免资源空转带来的成本浪费然而当请求吞吐量非常大时Serverless的服务成本较高而此时使用相同性能的虚拟机处理请求成本相对使用Serverless更加低廉</p>
<p>因此当请求吞吐量低时HCloud能够将Serverless任务运行在原生的Serverless平台如AWS Lambda利用Serverless按量付费的优势当请求吞吐量高时HCloud可以将任务迁移到虚拟机上运行从而降低成本p>
<p>通常情况下单个Function的调用请求量较少往往不需要占用所有的虚拟机资源 HCloud可以将多个Function的实例一同运行在虚拟机中从而提升虚拟机整体的资源利用率最终达到降低每个用户价格的目标该原理类似于日常生活中的拼单</p>
<p>云服务厂商通常提供Spot Instance即可以临时使用的虚拟机这样的虚拟机通常价格非常便宜但随时可能被云服务商回收HCloud提供的Serverless计算模型天然利于在Spot Instance上运行当某台虚拟机被回收时仅需将任务迁移到其他虚拟机上即可该过程对用户无感知目前功能完善中</p>
</div>

View File

@ -206,7 +206,7 @@ export default {
},
back() {
this.$emit('back');
}
},
},
};

View File

@ -4,14 +4,16 @@
<span>迁移源概况</span>
<el-row class="numMark" :gutter="20">
<el-col :span="4" v-for="(item,index) in originBrief" :key="index">
<div :class="index===0?'blue':item.type==='error'&&item.num>0?'red':'green'"><i class="bigNum">{{item.num}}</i>{{item.info}}</div>
<div :class="index===0?'blue':item.type==='error'&&item.num>0?'red':'green'">
<i class="bigNum">{{item.num}}</i>{{item.info}}</div>
</el-col>
</el-row>
<span>迁移任务概况</span>
<div>
<el-row class="numMark" :gutter="20">
<el-col :span="4" v-for="(item,index) in taskBrief" :key="index">
<div :class="index===0?'blue':item.type==='error'&&item.num>0?'red':'green'"><i class="bigNum">{{item.num}}</i>{{item.info}}</div>
<div :class="index===0?'blue':item.type==='error'&&item.num>0?'red':'green'">
<i class="bigNum">{{item.num}}</i>{{item.info}}</div>
</el-col>
</el-row>
</div>
@ -29,15 +31,25 @@
label="任务名称"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="origin"
width="150"
label="迁移源">
</el-table-column>
<el-table-column
prop="target"
width="150"
label="迁移目标">
</el-table-column>
<el-table-column
prop="startTime"
label="开始时间"
width="120">
width="180">
</el-table-column>
<el-table-column
prop="progress"
label="当前完成进度"
width="120">
width="200">
<template slot-scope="scope">
<el-progress :percentage="scope.row.progress"></el-progress>
</template>
@ -75,15 +87,25 @@
label="任务名称"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="origin"
width="150"
label="迁移源">
</el-table-column>
<el-table-column
prop="target"
width="150"
label="迁移目标">
</el-table-column>
<el-table-column
prop="startTime"
label="开始时间"
width="120">
width="180">
</el-table-column>
<el-table-column
prop="endTime"
label="结束时间"
width="120">
width="180">
</el-table-column>
<el-table-column
label="操作"
@ -108,39 +130,53 @@ export default {
data() {
return {
tableData: [{
        name: '北京服务器: e-a13ha86weg153we ',
        startTime: '2020/11/18 07:22:21',
        endTime: '2020/11/19 19:11:02',
        progress: 60,
      },{
        name: '东京服务器: e-haurawwroi3rg6ar4ge ',
        startTime: '2020/10/18 08:20:51',
        endTime: '2020/11/20 14:33:07',
        progress: 60,
      },{
        name: '多伦多服务器: o-itfxci562y3rge ',
        startTime: '2020/10/23 08:27:20',
        endTime: '2020/10/23 09:10:07',
        progress: 60,
      },{
        name: '巴黎服务器: b-irtui12e3ra9i3wrt ',
        startTime: '2020/11/14 09:23:45',
        endTime: '2020/11/29 22:41:22',
        progress: 60,
      },{
        name: '挪威服务器: N-sje8ecd4rg7tt5eas ',
        startTime: '2020/11/18 17:17:35',
        endTime: '2020/11/19 18:51:07',
        progress: 60,
      },{
        name: '伦敦服务器: L-eus8ef2eqq4dojhv ',
        startTime: '2020/10/18 09:21:31',
        endTime: '2020/10/22 17:01:58',
        progress: 60,
      }],
name: '北京服务器: e-a13ha86weg153we ',
origin: '阿里云-北京',
target: '百度云-上海',
startTime: '2020/11/18 07:22:21',
endTime: '2020/11/19 19:11:02',
progress: 60,
}, {
name: '东京服务器: e-haurawwroi3rg6ar4ge ',
origin: '阿里云-北京',
target: '百度云-上海',
startTime: '2020/10/18 08:20:51',
endTime: '2020/11/20 14:33:07',
progress: 60,
},
// {
// name: ': o-itfxci562y3rge ',
// origin: '-',
// target: '-',
// startTime: '2020/10/23 08:27:20',
// endTime: '2020/10/23 09:10:07',
// progress: 60,
// }, {
// name: ': b-irtui12e3ra9i3wrt ',
// origin: '-',
// target: '-',
// startTime: '2020/11/14 09:23:45',
// endTime: '2020/11/29 22:41:22',
// progress: 60,
// }, {
// name: ': N-sje8ecd4rg7tt5eas ',
// origin: '-',
// target: '-',
// startTime: '2020/11/18 17:17:35',
// endTime: '2020/11/19 18:51:07',
// progress: 60,
// }, {
// name: ': L-eus8ef2eqq4dojhv ',
// origin: '-',
// target: '-',
// startTime: '2020/10/18 09:21:31',
// endTime: '2020/10/22 17:01:58',
// progress: 60,
// }
],
originBrief: [
{
num: 5,
num: 4,
info: '个总数',
},
{
@ -157,17 +193,17 @@ export default {
type: 'error',
},
{
num: 3,
num: 2,
info: '个迁移中',
},
{
num: 1,
num: 0,
info: '个已完成',
},
],
taskBrief: [
{
num: 3,
num: 2,
info: '个总数',
},
{
@ -179,28 +215,28 @@ export default {
info: '个未开始',
},
{
num: 1,
num: 0,
info: '个出错',
type: 'error',
},
{
num: 1,
num: 2,
info: '个迁移中',
},
{
num: 1,
num: 0,
info: '个已完成',
},
],
}
};
},
methods: {
deleteRow(index, rows) {
rows.splice(index, 1);
},
suspend(index,rows){
suspend() {
}
},
},
};
</script>
@ -233,7 +269,7 @@ export default {
margin: 0 5px 0 0;
line-height: 40px;
}
}
}

View File

@ -1,6 +1,6 @@
<template>
<div>
<h4>用户服务实时监控</h4>
<!-- <h4>用户服务实时监控</h4> -->
<el-row :gutter="30">
<el-col :span="8">
<StatusLineChart/>
@ -10,21 +10,38 @@
</el-col>
<el-col :span="24">
<el-card class="requirementForm">
<p>可迁移服务器选择</p>
<div class="radioGroup">
<p>云厂商服务状态</p>
<!-- <div class="radioGroup">
<el-radio v-model="radio" label="1" border>
东京服务器: d-auiufqiwuqwehquihiuqgefiquwd</el-radio>
<el-radio v-model="radio" label="2" border>
东京服务器: d-auiufqiwuqwehquihiuqgefiquwd</el-radio>
<el-radio v-model="radio" label="3" border>
东京服务器: d-auiufqiwuqwehquihiuqgefiquwd</el-radio>
<el-radio v-model="radio" label="4" border>
东京服务器: d-auiufqiwuqwehquihiuqgefiquwd</el-radio>
<el-radio v-model="radio" label="5" border>
东京服务器: d-auiufqiwuqwehquihiuqgefiquwd</el-radio>
</div>
<el-button class="submitBtn" type="primary" @click="onSubmit">确认提交</el-button>
</div> -->
<el-table
ref="multipleTable"
:data="tableData"
highlight-current-row
tooltip-effect="dark"
style="width: 100%">
<el-table-column
prop="name"
label="服务器名称"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="delayTime"
label="延时"
width="120">
</el-table-column>
<el-table-column
prop="status"
label="状态"
width="120">
</el-table-column>
</el-table>
<!-- <el-button class="submitBtn" type="primary" @click="onSubmit">确认提交</el-button> -->
</el-card>
</el-col>
</el-row>
@ -40,6 +57,23 @@ export default {
data() {
return {
radio: '',
tableData: [
{
name: '阿里云-北京',
delayTime: '11ms',
status: 'online',
},
{
name: '百度云-上海',
delayTime: '26ms',
status: 'online',
},
{
name: '金山云-广州',
delayTime: '43ms',
status: 'online',
},
],
};
},
components: {
@ -56,5 +90,4 @@ export default {
</script>
<style lang="scss" >
</style>

View File

@ -4,32 +4,24 @@
<div id="myEchart" ref="myEchart">
</div>
<el-form ref="form" :model="form" label-width="100px">
<el-form-item label="国内地区">
<el-radio-group v-model="form.resource">
<el-radio-button label="上海"></el-radio-button>
<el-radio-button label="北京"></el-radio-button>
<el-radio-button label="广州"></el-radio-button>
<el-radio-button label="深圳"></el-radio-button>
</el-radio-group>
<el-form-item label="数据中心">
<el-checkbox-group v-model="form.city">
<el-checkbox v-for="city in cities" :label="city.name" :key="city.key">{{city.name}}
<el-radio-group v-model="form.server[city.key]">
<el-radio-button label="阿里云"></el-radio-button>
<el-radio-button label="百度云"></el-radio-button>
<el-radio-button label="UCloud"></el-radio-button>
<el-radio-button label="金山云"></el-radio-button>
</el-radio-group>
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="国外地区">
<el-form-item label="存储模式">
<el-radio-group v-model="form.resource">
<el-radio-button label="新加坡"></el-radio-button>
<el-radio-button label="孟买"></el-radio-button>
<el-radio-button label="硅谷"></el-radio-button>
<el-radio-button label="首尔"></el-radio-button>
<el-radio-button label="多副本存储"></el-radio-button>
<el-radio-button label="纠删码存储"></el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="可用区">
<el-radio-group v-model="form.resource">
<el-radio-button label="随机可用区"></el-radio-button>
<el-radio-button label="南京一区"></el-radio-button>
<el-radio-button label="南京二区"></el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="存储数量">
<el-input-number v-model="form.num" :min="1" :max="100"></el-input-number>
</el-form-item>
</el-form>
<el-button type="primary" class="submitBtn" @click="onSubmit">确认提交</el-button>
</el-card>
@ -47,7 +39,26 @@ export default {
},
data() {
return {
form: {},
form: {
city: [],
server:[],
},
cities: [{
name:'北京',
key: 1,
},{
name:'上海',
key: 2,
},{
name:'广州',
key: 3,
},{
name:'成都',
key: 4,
},{
name:'青岛',
key: 5,
}]
};
},
mounted() {
@ -192,3 +203,8 @@ export default {
margin: 0 auto;
}
</style>
<style lang="scss">
.el-checkbox .el-radio-group{
margin-left: 30px;
}
</style>

View File

@ -1,18 +1,18 @@
<template>
<el-card class="chartCard">
<p>数据资源计算总量<i class="bigNum">450GB</i></p>
<p>数据存储总量<i class="bigNum">45.9GB</i></p>
<el-row :gutter="30">
<el-col :span="8" class="center">
<el-progress type="circle" :percentage="80"></el-progress>
<p>服务器1</p>
<p>阿里云-北京</p>
</el-col>
<el-col :span="8" class="center">
<el-progress type="circle" color="#30c0b7" :percentage="80"></el-progress>
<p>服务器2</p>
<p>百度云-上海</p>
</el-col>
<el-col :span="8" class="center">
<el-progress type="circle" color="#feb23a" :percentage="75"></el-progress>
<p>服务器3</p>
<p>金山云-广州</p>
</el-col>
</el-row>
</el-card>

View File

@ -1,6 +1,6 @@
<template>
<el-card class="chartCard">
<p>设备运营状态</p>
<p>服务运行状态</p>
<div id="lineChart" ref="lineChart"></div>
</el-card>
</template>

View File

@ -28,23 +28,23 @@ export default {
return {
form: {},
monitorDisplay: false,
dialogFormVisible : false,
dialogFormVisible: false,
};
},
components: {
SelectServer,
DynamicMonitor
DynamicMonitor,
},
methods: {
onSubmit(){
onSubmit() {
// this.dialogFormVisible = true;
// setTimeout(() => {
// this.dialogFormVisible = false;
this.monitorDisplay = true;
// this.dialogFormVisible = false;
this.monitorDisplay = true;
// }, 4000);
},
DynamicMonitoronSubmit() {
},
},
};

View File

@ -8,18 +8,46 @@
</div>
<div class="manufacturer">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="迁移源选择" name="1">
<el-tab-pane label="服务状态监控" name="1">
<SelectPoint v-if="activeName==='1'" @selectedPointSumbit="onSelectedOrigin"/>
</el-tab-pane>
<el-tab-pane label="迁移目标选择" name="2">
<!-- <el-tab-pane label="迁移目标选择" name="2">
<SelectServer v-if="activeName==='2'" title="资源需求分布图"
@selectedServerSumbit="onSelectServer"/>
</el-tab-pane> -->
<el-tab-pane label="存储迁移" name="2">
<div v-if="activeName==='2'">
<el-card class="requirementForm">
<el-row :gutter="30">
<el-col :span="12">
<p>迁移源</p>
<div class="radioGroup">
<el-radio v-model="radio" label="1" border>
阿里云-北京</el-radio>
<el-radio v-model="radio" label="2" border>
百度云-上海</el-radio>
<el-radio v-model="radio" label="3" border>
金山云-广州</el-radio>
</div>
</el-col>
<el-col :span="12">
<p>迁移目标</p>
<div class="radioGroup">
<el-radio v-model="target" label="1" border>
阿里云-北京</el-radio>
<el-radio v-model="target" label="2" border>
百度云-上海</el-radio>
<el-radio v-model="target" label="3" border>
金山云-广州</el-radio>
</div>
</el-col>
</el-row>
<el-button type="primary" class="submitBtn" @click="onSubmit">开始迁移</el-button>
</el-card>
</div>
</el-tab-pane>
<el-tab-pane label="迁移任务选择" name="3">
<SelectPoint v-if="activeName==='3'" @selectedPointSumbit="onSelectedTarget"/>
</el-tab-pane>
<el-tab-pane label="迁移结果查看" name="4">
<ResultDisplay v-if="activeName==='4'"/>
<el-tab-pane label="迁移结果" name="3">
<ResultDisplay v-if="activeName==='3'"/>
</el-tab-pane>
</el-tabs>
</div>
@ -29,12 +57,12 @@
<script>
import ResultDisplay from './components/resultDisplay.vue';
import SelectPoint from './components/selectPoint.vue';
import SelectServer from './components/selectServer.vue';
// import SelectServer from './components/selectServer.vue';
export default {
name: 'storageMove',
components: {
SelectServer,
// SelectServer,
SelectPoint,
ResultDisplay,
},
@ -42,7 +70,8 @@ export default {
return {
activeName: '1',
form: {},
radio1: '',
radio: '',
target: '',
};
},
@ -52,7 +81,7 @@ export default {
},
onSubmit() {
// loading
// this.activeName = '2';
this.activeName = '3';
},
onSelectServer(form) {
console.log(form);
@ -72,7 +101,7 @@ export default {
.storageMove{
.el-card{
margin-bottom: 30px;
}
.requirementForm{
p{

View File

@ -8,7 +8,8 @@
</div>
<h2>云服务测评</h2>
<div class="manufacturer">
<div class="processImg processImg-1">
<div class="processImg">
<img src="@/assets/modules/serviceRecommendation/process1.png" alt="">
<!-- <el-row>
<el-col :span="8">
<p>VMs</p>
@ -29,7 +30,7 @@
使用Netperf对内网性能进行评测评测分为TCP和UDP两部分
</p>
<el-row :gutter="30">
<el-row :gutter="30" style="margin-top:40px">
<el-col :span="3">
<span style="line-height:40px">评测时间</span>
</el-col>
@ -197,7 +198,7 @@ export default {
});
} else {
// console.log('compare');
this.$router.push('serviceRecommendation/compare');
this.$router.push('compare');
}
},
},

View File

@ -8,7 +8,8 @@
</div>
<h2>云服务推荐</h2>
<div class="manufacturer">
<div class="processImg processImg-2">
<div class="processImg">
<img src="@/assets/modules/serviceRecommendation/process2.png" alt="">
<!-- <el-row>
<el-col :span="6">
<p>Make Scores</p>

View File

@ -45,6 +45,21 @@
<script>
export default {
name: 'studyRecom',
data() {
return {
fileList: []
}
},
methods: {
handlePreview() {
},
handleRemove(){
},
beforeRemove(){},
handleExceed(){}
},
};
</script>
<style lang="scss" scoped>

View File

@ -6,7 +6,15 @@
<div class="">
<div class="manufacturer">
<p class="indexTitle">行业解决方案</p>
<el-radio-group v-model="tabPosition">
<el-tabs v-model="tabPosition" type="card">
<el-tab-pane v-for="(item, index) in solutionCase" :key="'solution'+index" :label="item.label" :name="index">
<el-card shadow="always" class="solutionCase">
<p class="title">{{item.p}}</p>
<p>{{item.span}}</p>
</el-card>
</el-tab-pane>
</el-tabs>
<!-- <el-radio-group v-model="tabPosition">
<el-radio-button label="1">新零售</el-radio-button>
<el-radio-button label="2">金融</el-radio-button>
<el-radio-button label="3">数字政府</el-radio-button>
@ -16,25 +24,16 @@
<el-radio-button label="7">医疗</el-radio-button>
<el-radio-button label="8">文旅</el-radio-button>
<el-radio-button label="9">地产</el-radio-button>
</el-radio-group>
<el-row :gutter="30">
<el-col :span="12"
v-for="(item, index) in industrySolution" :key="index">
<el-card shadow="always" class="solutionList">
<p class="title">{{item.name}}</p>
<p>{{item.description}}</p>
</el-card>
</el-col>
</el-row>
</el-radio-group> -->
</div>
</div>
<div class="bg-gray">
<div class="manufacturer">
<p class="indexTitle" >通用解决方案</p>
<p class="indexTitle" >先进技术案例</p>
<el-radio-group v-model="tabPosition2">
<el-radio-button label="1">云网络</el-radio-button>
<el-radio-button label="2">中间件</el-radio-button>
<el-radio-button label="1">区块链</el-radio-button>
<el-radio-button label="2">数字身份</el-radio-button>
<el-radio-button label="3">边缘计算</el-radio-button>
</el-radio-group>
<el-row :gutter="30">
@ -57,26 +56,26 @@ export default {
name: 'SolutionCase',
data() {
return {
tabPosition: 1,
tabPosition: 0,
tabPosition2: 1,
industrySolution: [
{
name: '应收账款流转',
description: '将核心企业应付账款债权进行多级流转、拆分;为大量无法融资的中小企业、商业机构提供更多的融资机会,降低了中小企业的资金成本,解决企业三角债困局。',
},
{
name: '动产质押',
description: '运用“人工智能+区块链+物联网”三者结合技术,为用户提供区块链资产管理服务,以满足基于动产质押的供应链金融及大宗商品电子仓单交易等场景。',
},
{
name: '数字身份',
description: '基于联盟链的实体身份标识DID技术解决方案提供分布式实体身份标识与管理、交换可信数据促进跨地域、跨部门的身份认证和数据合作。',
},
{
name: '可信数据共享',
description: '采用区块链技术连接数据建模服务方、监管方、使用方和提供方等,实现身份数据目录与授权、数据、密文数据共享和交换等链上操作。',
},
],
// industrySolution: [
// {
// name: '',
// description: '',
// },
// {
// name: '',
// description: '++',
// },
// {
// name: '',
// description: 'DID',
// },
// {
// name: '',
// description: '使',
// },
// ],
commonSolution: [
{
name: '全球网络互联',
@ -103,7 +102,144 @@ export default {
description: '面向全球网络互联和企业全面上云需求,打造全球互联网络、企业级云上网络、云原生应用网络和应用加速网络四大核心解决方案及丰富的产品和功能,助力企业数字化转型。',
},
],
solutionCase:[{
label:'智能制造',
p: ` 智能制造是一个柔性系统,能够自主学习适应新环境,自动运行整个生产流程,强化制造企业的数据洞察能力,实现智能化控制和管理,是现代工业制造信息化发展的新阶段。
智能制造指基于泛在感知技术实现面向产品生产全生命周期的信息化和智能化的生产制造是在传感技术通信技术自动控制人工智能等创新技术基础上通过智能化的感知交互决策和执行技术实现设计制造以及服务的智能化是通信技术信息技术与制造技术的深度融合和创新集成
`,
span:`
1智能监控
结合感知传感器定位摄像等技术降低有线部署和人工值守的成本实现降低成本高可靠的智能化监控
2自动化生产
通过搭建智能工厂神经中枢结合DCS智能化控制系统建立生产调度中心
3智能检测
在质量检测过程中通过工业相机实时采集产品图像信息提升质量检测的准确率检测效率和监测范围`
},
{
label: '智慧农业',
p: ` 智慧农业是农业信息化发展到智能化的高级阶段,是以信息和知识为核心要素,通过将互联网、物联网、大数据、云计算、人工智能等现代信息技术与农业深度融合,实现农业信息感知、定量决策、智能控制、精准投入、个性化服务的全新的农业生产方式。
智慧农业的生态场景围绕生产服务和生活展开涉及从投入到产出全产业链的各个领域各个环节智慧农业利用先进的数字化信息化手段达到科学化精准化精细化生态化灵活化的效果和目标囊括了通过智能智慧技术实现高附加值农产品价值创造价值实现和价值服务的全过程`,
span: `1、大田智慧农业
应对生产环境的不可控因素借助智慧技术科技装备进行农业生产的趋利避害
2设施智慧农业
设施智慧农业是生产条件和生产环境可控的智慧农业形态由于作业环境可控性好可塑性强设施智慧农业可具有更高的智能水平
3智慧养殖业
智慧养殖业包含智慧畜牧养殖和智慧水产养殖借助智能科技实时监控动植物健康环境事项综合养殖效益最大化
4智慧农技服务业
智慧智能科技在农业的集中信息化应用是促进智慧农业发展的关键路径
5智慧农业监管服务
智慧农业监管服务是农业监管服务的一体化耦合化智能化整合升级是农业支持保护体系的系统化立体化智慧化实现`
},
{
label: '智慧城市',
p: `智慧城市是新一代信息通信技术与城市经济社会发展深度融合,促进城市规划、建设、管理和服务智慧化的新理念和新模式,也是物理世界与数字世界相互映射、协同交互的城市新形态。
智慧城市由物理设施建筑市政工程公用设施等数字空间通信算力数据算法等和社会人文生态组成运用通信连接数据智能等技术手段实现对城市实时动态的感知分析协调并能对城市治理和公共服务等作出智能响应实现城市健康运行和可持续发展
`,
span: `1、单领域融合
打破城市的物理空间界限延伸城市服务边界打造万物互联数据流通全栈智能加速城市要素的数字化和城市业务的智能化
2虚拟现实结合
物理城市和虚拟数字城市的互相映射和协同交互形成真正意义上的数字孪生体
3多领域融合
智慧城市建设通过业务融合技术融合和数据融合支撑城市从单领域智能到城市智群的升级实现跨层级跨系统跨地区跨业务的协同管理和服务`
},
{
label: '智能交通',
p: `智能交通涉及汽车、电子、信息通信、交通运输和交通管理等多个行业,借助于“人一车一路一云”交通参与要素之间的有效连接和信息交互,不仅可以促进信息通信技术在跨行业领域的应用推广,还有助于加强汽车、交通等传统产业的智能化网联化转型,并逐步培育出新的产业生态。
`,
span: `1、车路协同应用架构
感知连接和计算是车路协同的基本要素车路协同应用架构由端一管一边一云组成端即网络层管即网络层云即平台管理和应用层边即多接入边缘计算
2智能交通关键技术
智能交通关键技术基于上述车路协同应用架构智能 RSU多接入边缘计算及分级架构5G网络切片人工智能及大数据高精度定位以及高精地图等关键技术有效协同支持智能交通系统持续发展和演进
`
},
{
label: '智能电网',
p: `智能电网是在传统电力系统基础上,通过集成先进信息技术、控制技术、储能技术等,以坚强网络架构为基础、以信息通信平台为支撑、以智能控制为手段,包括电力系统的发电、输电、变电、配电、用电和调度各个环节,覆盖所有电压等级,实现电力流、信息流、业务流高度一体化融合,具有坚强可靠、经济高效、清洁环保、透明开放、友好互动的特征。
智能电网是一个完全自动化的供电网络其中的每一个用户和节点都得到实时监控并保证从发电厂到用户端之间整个输配电过程中所有节点之间的电流和信息双向流动智能电网通过广泛应用的分布式智能和宽带通信以及自动控制系统智能化决策系统的集成提高供电可靠水平实现源一网一荷一体化支撑能源清洁化转型和电力市场化改革
`,
span: `1智慧输变电场景生态
基于云计算和边缘计算平台搭建总部一换流站/变电站两级的输变电设备状态集中监测中心实现输电线路状态和全寿命周期管理
2智能配电网场景生态
通过物联网技术应用实现分布式能源储能充电设备的接入和双向交互提升供电可靠性与用电效率以及为节能减排提供技术保证
3智慧电力服务场景生态
通过人工智能地理位置服务和移动应用技术实现办电用户身份验证面对面办电指导安全缴费线上智能客服等功能提高办电效率和安全性进一步提升用户体验
`
},
{
label: '智慧金融',
p: `金融是现代经济的核心金融服务行业一直是创新的积极实践者和受益者我国金融服务行业在全面信息化建设浪潮中处于前列在5G网络、数据中心、云计算、人工智能等新型基础设施日趋成熟、高度融合之下“智慧金融”成为金融服务演进的方向以更加高效、安全、定制化的服务体现在金融全链条运行当中。与此同时“智慧金融”与智慧城市、智慧农业、智慧交通等业态日益交融形成智慧金融生态圈为金融行业自身提供转型驱动力进一步实现“以智促惠” 更加精准、灵活、广泛地实现资源配置,让资金融通这一基础性功能更“聪明”地作用于传统产业转型升级,服务于实体经济高质量发展,普惠于社会民生各领域。
`,
span: `1智能支付快速发展
移动支付是支付体系的重要蜕变使用户能够随时随地获取所需服务并完成支付过程
2银行服务的数字化转型
开放式银行以开放API为基础以数据共享为本质以平台合作为模式以数字化信息新型基础设施建设为基础支撑实现更高效更低成本更优体验的客户需求
3保险行业智能应用
保险行业在新型基础设施的助力下形成无边界高融合的开放生态新业态和新生态充分发挥其风险保障属性为经济社会的发展提供更多的风险保障和服务作用
4资本市场智能化发展
伴随着新型基础设施领域不断建设和战略投入未来云计算领域会形成更加完备垂直精细化的运营服务格局
5智能风控
智能风控是在数据驱动下提升风控与运营水平金融科技的普及为智能风控提供了扎实的技术支撑广泛应用于支付清算信贷融资保险理赔等各个场景中
`
},
{
label: '智慧物流',
p: `物流作为当代社会重要组成部分,在国民经济和社会发展中发挥着重要作用。智慧物流深嵌产业的制造与销售流程,有助于提升各产业的经济与社会效益,实现物流驱动产业升级,形成物流与产业互动的新局面,对优化资源配置、促进经济发展具有积极推动作用。
智慧物流包含物联网云计算大数据等新型信息技术和智能设备设施等科技要素通过高效的执行运营与决策等领域智能化能力实现物流作业自动化物流管理与流程的可视化物流规划与决策的智能化最终达到提升物流运营效率提高服务质量和降低用工成本的目的
`,
span: `1、智能规划
智能规划通过数据智能技术的引进能够在规划层满足物流业务战略的同时系统性降低物流网络的成本物流网络规划是面向中长期的战略性规划
2数字化管理
智慧物流在运营层面体现为数字化管理方式其核心承载是物流管理系统通过该系统保障整个物流体系的有效运营
3自动化作业
在物流执行层面应用物流自动化及智能化技术和相关智能设备实现作业的强体验高效率低成本是行业持续探索的方向在智慧物流体系中互联互通自主控制的智能设施设备是自动化智能化作业的关键
`
},
{
label: '智慧教育',
p: `迈入数字时代,教育领域信息化的脚步不断加快,以智慧教育为核心的各类应用场景不断以新的模式出现,带来了教育形式和学习方式的重大改变。
智慧教育是运用5G物联网人工智能大数据云计算区块链等新技术新手段形成智慧学习环境支撑通过信息技术与教育主流业务的深度融合智慧教学智慧学习智慧管理智慧评价智慧科研和智慧服务 让教师能够施展高成效的教学方法让学习者能够进行泛在学习个性化学习获得美好个人发展体验的一种应用场景
`,
span: `1、智慧教学
智慧教学是教师在智慧教学环境下利用各种先进信息化技术和丰富的教学资源开展的教学活动通过智慧备课智慧课堂智慧阅卷作业等形式改变传统的教学模式
2智慧学习
智慧学习的核心目标是促进学习者个性化的发展为学习者提供虚拟的智慧学习环境通过建立以连接课堂与社区家庭及校园为重要载体的网络学习空间来支持互帮互助协作交流的学习共同体建设形成不同学习场景的无缝衔接
3智慧管理
智慧管理辅助各级教育管理部门和管理人员提升教育管理的智能水平促进校园管理和区域教育治理的精细管理科学化决策可视化管控和可信性评价
4智慧评价
智慧评价基于新一代信息技术实现针对教学教师学生的全方位全过程动态化客观真实评价通过大数据技术建立多元多维多指标的评价模型对教育评价数据进行深度挖掘分析形成评价数据报告将信息技术和智能技术深度融入教育教学评估全过程
5智慧教育教研
网络协同教研建立基于5G 网络和大数据教学资源管理和教师在线协同教研平台使教学研究活动从传统线下研讨向在线化互动方向转型提升教学教研质量促进教师专业发展通过组建教研网络共同体促进教学教研成果的快速流通转换和分享
6智慧教育服务
智慧服务构建以服务客体为中心的服务平台使用大数据虚拟化物联网人工智能等新技术为用户个性化场景落地提供支撑
7智慧教育环境
智慧环境是智慧教育的物理基础由智慧教育云教育承载网和智慧校园三部分组成`
},
{
label: '智慧医疗',
p: `智慧医疗是以“人民群众医疗健康”为核心导向结合5G、物联网、云计算、大数据、人工智能等新型基础设施建设核心技术通过构建全场景、全周期、智能化的数字生态加速优化医疗资源配置并提升医疗效率推动医疗健康服务模式创新与运营体制创新构建智慧医疗服务、智能健康管理、智慧公共卫生等领域应用覆盖个体全生命周期涵盖预防、治疗、康复、养老等线上线下一体化医疗健康服务新模式。
`,
span: `1智慧医疗服务
随着5G的大规模商用国内一大批医疗机构基于5G网络开展院间医疗合作院内医疗设备互联互通和院外应急救治等应用先后在5G智慧救援远程会诊远程手术移动医护VR隔离探视和医院物资管理等方面展开智慧医疗的应用创新
2智慧健康管理
基于个体健康风险因素提供智能化健康干预管理具体应用如运动管理风险预测居家护理远程监测健康管理及健康养老等
3智慧公共卫生
整合区域医疗卫生信息资源预测疾病流行趋势加强对传染病等疾病的智能监测提高重大疾病防控和突发公共卫生事件应对能力具体应用如传染病智能预警医疗质量智能监管环境卫生智慧监测及灾害防病智能预警等
`
},
{
label: '智慧文旅',
p: `智慧文旅是指以特色文化为内在驱动以现代科技为主要手段通过5G、大数据、物联网、人工智能等新一代信息技术实现“文化+旅游+科技”融合,围绕旅游管理、旅游服务、旅游营销、旅游信息传播、旅游体验等智慧化应用所形成的数字化文化旅游新产业。
智慧文旅的建设与发展体现在一是面向消费者的创新文旅体验和消费服务的智慧化二是面向企业的文旅服务和产品的智慧化三是面向政务和行业管理的智慧化
`,
span: `1智慧文旅体验
面向消费者的创新文旅体验和消费服务的智慧化即TOC业务推动文化旅游资源与多样化个性化市场需求的高效对接实现精准的线上线下无缝服务和深度文化体验等实时互动个性化服务大大提升了用户体验推动传统的旅游观光消费方式向现代文化旅游体验消费方式转变
2智慧文旅服务
面向企业的文旅服务和产品的智慧化即TO B业务包括智慧移动出行智慧住宿智慧导游智慧景区智慧游乐智慧文娱智慧文博虚拟旅游OTA (在线旅游个性化在线定制大数据精准营销等全方位的服务
3智慧文旅管理
面向政府和行业管理的智慧化即TOG业务包括景区动态监测信息监管大数据统计分析景区人流引导安全预警等内容全面了解行业和谢各需求旅游目的地动态投诉建等内容推动传统旅游管理方式向现代管理方式转变实现政府的科学决策和管理
`
},
]
};
},
methods: {
@ -112,5 +248,12 @@ export default {
};
</script>
<style lang="scss" scoped>
.solutionCase{
p{
line-height: 1.8rem;
}
.title{
text-indent: 2rem;
}
}
</style>

View File

@ -99,8 +99,8 @@ const router = [
},
{
path: '/documents',
name: 'documents',
component: () => import(/* webpackChunkName: "documents" */ '../components/documents/benchreport1.vue'),
// name: 'documents',
component: () => import(/* webpackChunkName: "documents" */ '../components/documents/index.vue'),
children: [
{ path: 'benchReport', component: () => import(/* webpackChunkName: "benchReport" */ '../components/documents/benchreport1.vue') },
{ path: 'scorePredict', component: () => import(/* webpackChunkName: "scorePredict" */ '../components/documents/scorepredict.vue') },

View File

@ -42,16 +42,16 @@ $class-prefix: "imgIcon";
}
&-banner-2{
// background-image: url(../assets/banner-1.png);
background-color: #f6f7f9;
background-image: url(../assets/banner-2.png), url(../assets/banner-bg2.png);
background-color: #f9fafc;
background-image: url(../assets/banner-2.png), url(../assets/banner-bg3.png);
background-repeat: no-repeat;
background-size: auto 75%, 100% auto;
background-position: center;
}
&-banner-3{
// background-image: url(../assets/banner-1.png);
background-color: #f6f7f9;
background-image: url(../assets/banner-3.png), url(../assets/banner-bg2.png);
background-color: #f9fafc;
background-image: url(../assets/banner-3.png), url(../assets/banner-bg4.png);
background-repeat: no-repeat;
background-size: auto 65%, 100% auto;
background-position: center;
@ -193,16 +193,20 @@ $class-prefix: "imgIcon";
.processImg{
width: 100%;
height: 180px;
background-position: center;
background-repeat: no-repeat;
background-size: 80% auto;
padding:0 5%;
box-sizing: border-box;
p{
text-align: center;
margin-top: 120px;
width: 800px;
margin: 0 auto;
// height: 180px;
// background-position: center;
// background-repeat: no-repeat;
// background-size: 100% auto;
// padding:0 5%;
// box-sizing: border-box;
// p{
// text-align: center;
// margin-top: 120px;
// }
img{
width: 100%;
}
}

View File

@ -47,18 +47,14 @@
:key="passwordType"
ref="password"
v-model="loginForm.password"
:type="passwordType"
placeholder="Password"
name="password"
tabindex="2"
autocomplete="on"
show-password
@keyup.native="checkCapslock"
@blur="capsTooltip = false"
@keyup.enter.native="handleLogin"
/>
<!-- <span class="show-pwd" @click="showPwd">
<svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" />
</span> -->
@keyup.enter.native="handleLogin"/>
</el-form-item>
</el-tooltip>
<el-checkbox class="margin-20" v-model="rememberMe">记住我</el-checkbox>
@ -114,14 +110,13 @@ export default {
const { query } = route;
if (query) {
this.redirect = query.redirect;
this.otherQuery = this.getOtherQuery(query);
// this.otherQuery = this.getOtherQuery(query);
}
},
immediate: true,
},
},
created() {
// window.addEventListener('storage', this.afterQRScan)
},
mounted() {
if (this.loginForm.username === '') {
@ -131,7 +126,6 @@ export default {
}
},
destroyed() {
// window.removeEventListener('storage', this.afterQRScan)
},
methods: {
checkCapslock(e) {
@ -152,45 +146,21 @@ export default {
this.$refs.loginForm.validate((valid) => {
if (valid) {
this.loading = true;
this.$store.dispatch('user/login', this.loginForm)
.then(() => {
this.$router.push({ path: this.redirect || '/', query: this.otherQuery });
this.loading = false;
})
.catch(() => {
this.loading = false;
});
setTimeout(()=>this.$router.push('/'), 1500);
// this.loading = false;
// this.$store.dispatch('user/login', this.loginForm)
// .then(() => {
// this.$router.push({ path: this.redirect || '/', query: this.otherQuery });
// this.loading = false;
// })
// .catch(() => {
// this.loading = false;
// });
return true;
}
return false;
});
},
getOtherQuery(query) {
return Object.keys(query).reduce((acc, cur) => {
if (cur !== 'redirect') {
acc[cur] = query[cur];
}
return acc;
}, {});
},
// afterQRScan() {
// if (e.key === 'x-admin-oauth-code') {
// const code = getQueryObject(e.newValue)
// const codeMap = {
// wechat: 'code',
// tencent: 'code'
// }
// const type = codeMap[this.auth_type]
// const codeName = code[type]
// if (codeName) {
// this.$store.dispatch('LoginByThirdparty', codeName).then(() => {
// this.$router.push({ path: this.redirect || '/' })
// })
// } else {
// alert('')
// }
// }
// }
},
};
</script>

View File

@ -29,10 +29,10 @@ export default {
name: '技术亮点',
url: 'technicalSpot',
},
{
name: '文档资料',
url: 'documents',
},
// {
// name: '',
// url: 'documents',
// },
],
};
},

View File

@ -37,10 +37,10 @@ export default {
name: '技术亮点',
url: 'technicalSpot',
},
{
name: '文档资料',
url: 'documents',
},
// {
// name: '',
// url: 'documents',
// },
],
};
},

View File

@ -129,8 +129,13 @@ export default {
// password: '111111',
},
loginRules: {
// username: [{ required: true, trigger: 'blur' }],
// password: [{ required: true, trigger: 'blur' }],
// name: [
// { required: true, message: '', trigger: 'blur' },
// { min: 3, max: 5, message: ' 3 5 ', trigger: 'blur' }
// ],
// region: [
// { required: true, message: '', trigger: 'change' }
// ],
},
rememberMe: false,
passwordType: 'password',
@ -147,7 +152,7 @@ export default {
const { query } = route;
if (query) {
this.redirect = query.redirect;
this.otherQuery = this.getOtherQuery(query);
// this.otherQuery = this.getOtherQuery(query);
}
},
immediate: true,
@ -167,59 +172,6 @@ export default {
const { key } = e;
this.capsTooltip = key && key.length === 1 && (key >= 'A' && key <= 'Z');
},
showPwd() {
if (this.passwordType === 'password') {
this.passwordType = '';
} else {
this.passwordType = 'password';
}
this.$nextTick(() => {
this.$refs.password.focus();
});
},
handleLogin() {
this.$refs.loginForm.validate((valid) => {
if (valid) {
this.loading = true;
this.$store.dispatch('user/login', this.loginForm)
.then(() => {
this.$router.push({ path: this.redirect || '/', query: this.otherQuery });
this.loading = false;
})
.catch(() => {
this.loading = false;
});
return true;
}
return false;
});
},
getOtherQuery(query) {
return Object.keys(query).reduce((acc, cur) => {
if (cur !== 'redirect') {
acc[cur] = query[cur];
}
return acc;
}, {});
},
// afterQRScan() {
// if (e.key === 'x-admin-oauth-code') {
// const code = getQueryObject(e.newValue)
// const codeMap = {
// wechat: 'code',
// tencent: 'code'
// }
// const type = codeMap[this.auth_type]
// const codeName = code[type]
// if (codeName) {
// this.$store.dispatch('LoginByThirdparty', codeName).then(() => {
// this.$router.push({ path: this.redirect || '/' })
// })
// } else {
// alert('')
// }
// }
// }
},
};
</script>