diff --git a/src/forge/Main/Index.scss b/src/forge/Main/Index.scss
index 89d3023e4..2a207dfdd 100644
--- a/src/forge/Main/Index.scss
+++ b/src/forge/Main/Index.scss
@@ -203,15 +203,17 @@
.listtablehead{
display: flex;
justify-content: space-between;
- align-items: flex-start;
+ align-items: center;
border-bottom: 1px solid #d9d9d9;
padding:7px 20px;
border-radius: 4px 4px 0px 0px;
background-color: #FAFBFC;
.ellipsistxt{
+ #ptxt{
+ margin-bottom: 0px;
+ }
margin-left: 13px;
line-height:18px;
- margin-top:6px;
flex:1;
width: 0;
color: #666;
diff --git a/src/forge/users/Echart/Cloud.jsx b/src/forge/users/Echart/Cloud.jsx
new file mode 100644
index 000000000..cbe182a26
--- /dev/null
+++ b/src/forge/users/Echart/Cloud.jsx
@@ -0,0 +1,44 @@
+import React ,{ useEffect } from 'react';
+import Js2WordCloud from 'js2wordcloud/dist/js2wordcloud.js'
+
+function Cloud({data}) {
+
+ useEffect(()=>{
+ optionChart1();
+ },[])
+
+ function optionChart1(){
+ var div = new Js2WordCloud(document.getElementById('cloud'))
+ let textList=[
+ ['服务'], ['细致'], ['意识'], ['踏实'],['开发'], ['反馈'], ['协助'],['使用'],['谈判']
+ ]
+ let cyList=[]
+ for(let i=0;i<60;i++){
+ cyList.push([textList[parseInt(Math.random()*textList.length)],Math.round(Math.random()*10)+1])
+ }
+ div.setOption({
+ backgroundColor:'transparent',
+ shape: 'circle',
+ // ellipticity: 1,//椭圆
+ maxFontSize: 40,//最大字号
+ minFontSize: 12,//最小字号
+ tooltip: {
+ show: true
+ },
+ list: cyList,
+ color(word, weight, fontSize, distance, theta) { //自定义颜色、透明度
+ if (fontSize>=12 && fontSize<=20) {
+ return 'rgb(29,227,250,0.3)';
+ } else if(fontSize>20 && fontSize<=30){
+ return 'rgb(29,227,250,0.6)';
+ }else if(fontSize>30 && fontSize<=40){
+ return 'rgb(29,227,250)';
+ }
+ },
+ })
+ }
+ return(
+
+ )
+}
+export default Cloud;
\ No newline at end of file
diff --git a/src/forge/users/Echart/Line.jsx b/src/forge/users/Echart/Line.jsx
new file mode 100644
index 000000000..2092b87c1
--- /dev/null
+++ b/src/forge/users/Echart/Line.jsx
@@ -0,0 +1,96 @@
+import React ,{ useEffect } from 'react';
+import * as echarts from 'echarts';
+
+function Line({data}) {
+ useEffect(()=>{
+ Init();
+ },[])
+
+ useEffect(()=>{
+ if(data){
+ Init();
+ }
+ },[data])
+
+ function Init() {
+ var huan_val = document.getElementById("Line");
+ var myEcharts = echarts.init(huan_val);
+ let option = {
+ color: ["#f8e367", "#99dfff", "#58c0f0", "#5ea6ff", "#ff9e48", "#bcbcbc"],
+ title: {
+ text: '近期活动统计',
+ left: '3%'
+ },
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {
+ data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎'],
+ right: '3%'
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ toolbox: {
+ feature: {
+ // saveAsImage: {}
+ }
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
+ },
+ yAxis: {
+ type: 'value',
+ axisLine:{
+ show:false
+ },
+ axisTick:{
+ show:false
+ }
+ },
+ series: [
+ {
+ name: '邮件营销',
+ type: 'line',
+ stack: '总量',
+ data: [120, 132, 101, 134, 90, 230, 210]
+ },
+ {
+ name: '联盟广告',
+ type: 'line',
+ stack: '总量',
+ data: [220, 182, 191, 234, 290, 330, 310]
+ },
+ {
+ name: '视频广告',
+ type: 'line',
+ stack: '总量',
+ data: [150, 232, 201, 154, 190, 330, 410]
+ },
+ {
+ name: '直接访问',
+ type: 'line',
+ stack: '总量',
+ data: [320, 332, 301, 334, 390, 330, 320]
+ },
+ {
+ name: '搜索引擎',
+ type: 'line',
+ stack: '总量',
+ data: [820, 932, 901, 934, 1290, 1330, 1320]
+ }
+ ]
+ };
+ myEcharts.setOption(option);
+ }
+
+ return(
+
+ )
+}
+export default Line;
\ No newline at end of file
diff --git a/src/forge/users/Echart/Pie.jsx b/src/forge/users/Echart/Pie.jsx
new file mode 100644
index 000000000..460d7f001
--- /dev/null
+++ b/src/forge/users/Echart/Pie.jsx
@@ -0,0 +1,75 @@
+import React ,{ useEffect } from 'react';
+import echarts from 'echarts/lib/echarts';
+import 'echarts/lib/chart/pie';
+
+function Pie({data}) {
+ useEffect(()=>{
+ Init();
+ },[])
+
+ useEffect(()=>{
+ if(data){
+ Init();
+ }
+ },[data])
+
+ function Init() {
+ var huan_val = document.getElementById("Pie");
+ var chart = echarts.init(huan_val);
+ let option = {
+ color: ["#f8e367", "#99dfff", "#58c0f0", "#5ea6ff", "#ff9e48", "#bcbcbc"],
+ title: {
+ text: '角色定位',
+ top:"5%",
+ left:"3%"
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+ legend: {
+ top: '5%',
+ right: '3%'
+ },
+ series: [
+ {
+ name: '',
+ type: 'pie',
+ radius: ['40%', '70%'],
+ avoidLabelOverlap: false,
+ itemStyle: {
+ borderRadius: 10,
+ borderColor: '#fff',
+ borderWidth: 2
+ },
+ label: {
+ show: false,
+ position: 'center'
+ },
+ emphasis: {
+ label: {
+ show: true,
+ fontSize: '40',
+ fontWeight: 'bold'
+ }
+ },
+ labelLine: {
+ show: false
+ },
+ data: [
+ {value: 1048, name: '搜索引擎'},
+ {value: 735, name: '直接访问'},
+ {value: 580, name: '邮件营销'},
+ {value: 484, name: '联盟广告'},
+ {value: 300, name: '视频广告'}
+ ]
+ }
+ ]
+ };
+ chart.setOption(option);
+ }
+
+ return(
+
+ )
+}
+export default Pie;
\ No newline at end of file
diff --git a/src/forge/users/Echart/Radar.jsx b/src/forge/users/Echart/Radar.jsx
new file mode 100644
index 000000000..f427442ed
--- /dev/null
+++ b/src/forge/users/Echart/Radar.jsx
@@ -0,0 +1,65 @@
+import React ,{ useEffect } from 'react';
+import echarts from 'echarts/lib/echarts'
+import 'echarts/lib/chart/radar';
+
+function Radar({data}) {
+ useEffect(()=>{
+ Init();
+ },[])
+
+ useEffect(()=>{
+ if(data){
+ Init();
+ }
+ },[data])
+
+ function Init() {
+ var huan_val = document.getElementById("radar");
+ var myEcharts = echarts.init(huan_val);
+ let option = {
+ color: ["#f8e367", "#99dfff", "#58c0f0", "#5ea6ff", "#ff9e48", "#bcbcbc"],
+ title: {
+ text: '开发能力',
+ top:"0",
+ left:"3%"
+ },
+ legend: {
+ data: ['预算分配', '实际开销'],
+ top:"0",
+ right:"center"
+ },
+ radar: {
+ // shape: 'circle',
+ indicator: [
+ { name: '销售', max: 6500},
+ { name: '管理', max: 16000},
+ { name: '信息技术', max: 30000},
+ { name: '客服', max: 38000},
+ { name: '研发', max: 52000},
+ { name: '市场', max: 25000}
+ ],
+ center:["50%","55%"]
+ },
+ series: [{
+ name: '预算 vs 开销',
+ type: 'radar',
+ data: [
+ {
+ value: [4200, 3000, 20000, 35000, 50000, 18000],
+ name: '预算分配'
+ },
+ {
+ value: [5000, 14000, 28000, 26000, 42000, 21000],
+ name: '实际开销'
+ }
+ ]
+ }]
+ };
+ myEcharts.setOption(option);
+ }
+
+ return(
+
+ )
+}
+export default Radar;
\ No newline at end of file
diff --git a/src/forge/users/GeneralView/Index.jsx b/src/forge/users/GeneralView/Index.jsx
new file mode 100644
index 000000000..9a76e9aa1
--- /dev/null
+++ b/src/forge/users/GeneralView/Index.jsx
@@ -0,0 +1,23 @@
+import React from 'react';
+import './Index.scss';
+import 'echarts/lib/component/tooltip';
+import 'echarts/lib/component/title';
+import 'echarts/lib/component/legend'
+import 'echarts/lib/component/markPoint';
+
+import Pie from '../Echart/Pie';
+import Line from '../Echart/Line';
+import Radar from '../Echart/Radar';
+import Cloud from '../Echart/Cloud';
+
+function Index(props) {
+ return(
+
+ )
+}
+export default Index;
\ No newline at end of file
diff --git a/src/forge/users/GeneralView/Index.scss b/src/forge/users/GeneralView/Index.scss
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/forge/users/Infos.js b/src/forge/users/Infos.js
index a812a6d7a..7e4e660a4 100644
--- a/src/forge/users/Infos.js
+++ b/src/forge/users/Infos.js
@@ -23,6 +23,11 @@ const InfosDevOpsCD = Loadable({
loader: () => import("./devOpsCD"),
loading: Loading,
});
+
+const GeneralView = Loadable({
+ loader: () => import("./GeneralView/Index"),
+ loading: Loading,
+});
const InfosUser = Loadable({
loader: () => import("./InfosUser"),
loading: Loading,