浏览代码

新增接口版文件

zhbyyy 2 年之前
父节点
当前提交
76c235be3f
共有 100 个文件被更改,包括 6292 次插入0 次删除
  1. 3 0
      manpowerPort/.vscode/settings.json
  2. 二进制
      manpowerPort/fonts/element-icons.woff
  3. 二进制
      manpowerPort/images/alert.png
  4. 二进制
      manpowerPort/images/back.png
  5. 二进制
      manpowerPort/images/bar-blue.png
  6. 二进制
      manpowerPort/images/bar-green.png
  7. 二进制
      manpowerPort/images/bar-purple.png
  8. 二进制
      manpowerPort/images/bar-yellow.png
  9. 二进制
      manpowerPort/images/center-icon1.png
  10. 二进制
      manpowerPort/images/center-icon2.png
  11. 二进制
      manpowerPort/images/center-icon3.png
  12. 二进制
      manpowerPort/images/center-top1.png
  13. 二进制
      manpowerPort/images/center-top2.png
  14. 二进制
      manpowerPort/images/center-top3.png
  15. 二进制
      manpowerPort/images/content-bg.png
  16. 二进制
      manpowerPort/images/down.png
  17. 二进制
      manpowerPort/images/footer-item-checked.png
  18. 二进制
      manpowerPort/images/footer-item.png
  19. 二进制
      manpowerPort/images/green.png
  20. 二进制
      manpowerPort/images/header-bg.png
  21. 二进制
      manpowerPort/images/header-bg2.png
  22. 二进制
      manpowerPort/images/home-bg.png
  23. 二进制
      manpowerPort/images/icon.png
  24. 二进制
      manpowerPort/images/left1-bg.png
  25. 二进制
      manpowerPort/images/logos/logo1.png
  26. 二进制
      manpowerPort/images/logos/logo10.png
  27. 二进制
      manpowerPort/images/logos/logo11.png
  28. 二进制
      manpowerPort/images/logos/logo12.png
  29. 二进制
      manpowerPort/images/logos/logo13.png
  30. 二进制
      manpowerPort/images/logos/logo14.png
  31. 二进制
      manpowerPort/images/logos/logo15.png
  32. 二进制
      manpowerPort/images/logos/logo16.png
  33. 二进制
      manpowerPort/images/logos/logo17.png
  34. 二进制
      manpowerPort/images/logos/logo18.png
  35. 二进制
      manpowerPort/images/logos/logo2.png
  36. 二进制
      manpowerPort/images/logos/logo3.png
  37. 二进制
      manpowerPort/images/logos/logo4.png
  38. 二进制
      manpowerPort/images/logos/logo5.png
  39. 二进制
      manpowerPort/images/logos/logo6.png
  40. 二进制
      manpowerPort/images/logos/logo7.png
  41. 二进制
      manpowerPort/images/logos/logo8.png
  42. 二进制
      manpowerPort/images/logos/logo9.png
  43. 二进制
      manpowerPort/images/page-bg.png
  44. 二进制
      manpowerPort/images/red.png
  45. 二进制
      manpowerPort/images/select-bg.png
  46. 二进制
      manpowerPort/images/sex-bg.png
  47. 二进制
      manpowerPort/images/title-bg.png
  48. 二进制
      manpowerPort/images/title-left.png
  49. 二进制
      manpowerPort/images/title-right.png
  50. 二进制
      manpowerPort/images/up.png
  51. 二进制
      manpowerPort/images/yellow.png
  52. 347 0
      manpowerPort/index.html
  53. 289 0
      manpowerPort/index2.html
  54. 286 0
      manpowerPort/index3.html
  55. 289 0
      manpowerPort/index4.html
  56. 294 0
      manpowerPort/index5.html
  57. 80 0
      manpowerPort/js/data.js
  58. 112 0
      manpowerPort/js/data2.js
  59. 114 0
      manpowerPort/js/data3.js
  60. 103 0
      manpowerPort/js/data4.js
  61. 115 0
      manpowerPort/js/fjx.js
  62. 1 0
      manpowerPort/js/index.js
  63. 1 0
      manpowerPort/js/index2.js
  64. 1 0
      manpowerPort/js/index3.js
  65. 1 0
      manpowerPort/js/index4.js
  66. 1 0
      manpowerPort/js/index5.js
  67. 16 0
      manpowerPort/js/li.js
  68. 194 0
      manpowerPort/js/request.js
  69. 12 0
      manpowerPort/js/zhb.js
  70. 1 0
      manpowerPort/libs/axios.min.js
  71. 0 0
      manpowerPort/libs/datav.min.js
  72. 227 0
      manpowerPort/libs/echarts-tooltip-carousel.js
  73. 21 0
      manpowerPort/libs/echarts.min.js
  74. 0 0
      manpowerPort/libs/element-ui@2.15.9.js
  75. 15 0
      manpowerPort/libs/lodash.min.js
  76. 10 0
      manpowerPort/libs/vue@2.7.10.js
  77. 二进制
      manpowerPort/login/fonts/element-icons.woff
  78. 二进制
      manpowerPort/login/images/accounts.png
  79. 二进制
      manpowerPort/login/images/back.png
  80. 二进制
      manpowerPort/login/images/orthogon.png
  81. 二进制
      manpowerPort/login/images/password.png
  82. 二进制
      manpowerPort/login/images/register.png
  83. 42 0
      manpowerPort/login/js/login.js
  84. 190 0
      manpowerPort/login/js/request.js
  85. 1 0
      manpowerPort/login/libs/axios.min.js
  86. 0 0
      manpowerPort/login/libs/datav.min.js
  87. 227 0
      manpowerPort/login/libs/echarts-tooltip-carousel.js
  88. 21 0
      manpowerPort/login/libs/echarts.min.js
  89. 0 0
      manpowerPort/login/libs/element-ui@2.15.9.js
  90. 10 0
      manpowerPort/login/libs/vue@2.7.10.js
  91. 46 0
      manpowerPort/login/login.html
  92. 751 0
      manpowerPort/login/styles/common.css
  93. 0 0
      manpowerPort/login/styles/element-ui@2.15.9.css
  94. 286 0
      manpowerPort/login/styles/login.css
  95. 264 0
      manpowerPort/login/styles/normalize.css
  96. 745 0
      manpowerPort/styles/common.css
  97. 0 0
      manpowerPort/styles/element-ui@2.15.9.css
  98. 471 0
      manpowerPort/styles/index.css
  99. 441 0
      manpowerPort/styles/index5.css
  100. 264 0
      manpowerPort/styles/normalize.css

+ 3 - 0
manpowerPort/.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+  "liveServer.settings.port": 5502
+}

二进制
manpowerPort/fonts/element-icons.woff


二进制
manpowerPort/images/alert.png


二进制
manpowerPort/images/back.png


二进制
manpowerPort/images/bar-blue.png


二进制
manpowerPort/images/bar-green.png


二进制
manpowerPort/images/bar-purple.png


二进制
manpowerPort/images/bar-yellow.png


二进制
manpowerPort/images/center-icon1.png


二进制
manpowerPort/images/center-icon2.png


二进制
manpowerPort/images/center-icon3.png


二进制
manpowerPort/images/center-top1.png


二进制
manpowerPort/images/center-top2.png


二进制
manpowerPort/images/center-top3.png


二进制
manpowerPort/images/content-bg.png


二进制
manpowerPort/images/down.png


二进制
manpowerPort/images/footer-item-checked.png


二进制
manpowerPort/images/footer-item.png


二进制
manpowerPort/images/green.png


二进制
manpowerPort/images/header-bg.png


二进制
manpowerPort/images/header-bg2.png


二进制
manpowerPort/images/home-bg.png


二进制
manpowerPort/images/icon.png


二进制
manpowerPort/images/left1-bg.png


二进制
manpowerPort/images/logos/logo1.png


二进制
manpowerPort/images/logos/logo10.png


二进制
manpowerPort/images/logos/logo11.png


二进制
manpowerPort/images/logos/logo12.png


二进制
manpowerPort/images/logos/logo13.png


二进制
manpowerPort/images/logos/logo14.png


二进制
manpowerPort/images/logos/logo15.png


二进制
manpowerPort/images/logos/logo16.png


二进制
manpowerPort/images/logos/logo17.png


二进制
manpowerPort/images/logos/logo18.png


二进制
manpowerPort/images/logos/logo2.png


二进制
manpowerPort/images/logos/logo3.png


二进制
manpowerPort/images/logos/logo4.png


二进制
manpowerPort/images/logos/logo5.png


二进制
manpowerPort/images/logos/logo6.png


二进制
manpowerPort/images/logos/logo7.png


二进制
manpowerPort/images/logos/logo8.png


二进制
manpowerPort/images/logos/logo9.png


二进制
manpowerPort/images/page-bg.png


二进制
manpowerPort/images/red.png


二进制
manpowerPort/images/select-bg.png


二进制
manpowerPort/images/sex-bg.png


二进制
manpowerPort/images/title-bg.png


二进制
manpowerPort/images/title-left.png


二进制
manpowerPort/images/title-right.png


二进制
manpowerPort/images/up.png


二进制
manpowerPort/images/yellow.png


+ 347 - 0
manpowerPort/index.html

@@ -0,0 +1,347 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <!-- 引入样式 -->
+  <link rel="stylesheet" href="./styles/element-ui@2.15.9.css" />
+  <link rel="stylesheet" href="./styles/normalize.css" />
+  <link rel="stylesheet" href="./styles/index.css" />
+  <!-- 引入js -->
+  <script src="./libs/vue@2.7.10.js"></script>
+  <!-- <script src="https://unpkg.com/@jiaminghi/data-view/dist/datav.min.vue.js"></script> -->
+  <script src="./libs/echarts.min.js"></script>
+  <script src="./libs/datav.min.js"></script>
+  <script src="./libs/element-ui@2.15.9.js"></script>
+  <script src="./libs/axios.min.js"></script>
+  <script src="./libs/lodash.min.js"></script>
+  <script src="./js/request.js"></script>
+  <script src="./js/data.js"></script>
+  <script src="./js/zhb.js"></script>
+  <script src="./js/li.js"></script>
+  <script src="./js/fjx.js"></script>
+  <script src="./libs/echarts-tooltip-carousel.js"></script>
+</head>
+
+<body>
+  <div id="app" v-cloak @click="showTipClose">
+    <header class="my-header">
+      <span @click.stop="handleTitleShow()" style="cursor: pointer;">国有资本数智化平台人力资源系统</span>
+      <span class="right">{{time}}</span>
+    </header>
+    <div class="main">
+      <div class="left">
+        <dv-border-box-8 :dur="10" style="flex: 1;">
+          <div class="my-panel">
+            <div class="panel-title flex-between ">
+              <span class="text">定机构</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(0,'focus')">改革成效</span>
+                <span class="tip-window" @click.stop="handleShowTip(0,'analysis')">智能分析</span>
+              </div>
+            </div>
+            <div class="content flex">
+              <div ref="echartL1" style="flex: 1;height: 100%;"></div>
+              <div ref="echartL2" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="11" style="flex: 1;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定职数</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(1,'focus')">改革成效</span>
+                <span class="tip-window" @click.stop="handleShowTip(1,'analysis')">智能分析</span>
+              </div>
+            </div>
+            <div class="content flex">
+              <div ref="echartL3" style="flex: 1;height: 100%;"></div>
+              <div style="flex: 1;height: 100%; position: relative;">
+                <div ref="echartL4" style="height: 100%; width: 100%;"></div>
+                <div class="icon" @click.stop="handleShowTip2(0)">?</div>
+              </div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="12" style="flex: 2;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定员额</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(2,'focus')">改革成效</span>
+                <span class="tip-window" @click.stop="handleShowTip(2,'analysis')">智能分析</span>
+              </div>
+            </div>
+            <div class="content flex flex-wrap">
+              <div ref="echartL5" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL6" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL7" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL8" style="flex: 0 0 49.9%;height: 50%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+      </div>
+      <div class="center">
+        <div class="top" v-if="centerData">
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(0,'topThree')">创新的建设模式</span>
+            </div>
+            <div class="box-content">
+              <img src="./images/center-top1.png" />
+              <div>
+                <p>架构数</p>
+                <p><i style="color: #45DAD1">{{numFormat(centerData.info.value1)}}</i></p>
+              </div>
+            </div>
+
+          </div>
+
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(1,'topThree')">穿透的全局监测</span>
+            </div>
+
+            <div class="box-content">
+              <img src="./images/center-top2.png" />
+              <div>
+                <p>岗位数</p>
+                <p><i style="color: #8BA2FF">{{numFormat(centerData.info.value2)}}</i></p>
+              </div>
+            </div>
+
+          </div>
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(2,'topThree')">领先的数智平台</span>
+            </div>
+            <div class="box-content">
+              <img src="./images/center-top3.png" style=" cursor: pointer;"
+                @click.stop="handleShowTip(0,'totlePeople')" />
+              <div>
+                <p>总人数</p>
+                <p><i style="color: #69C0FF">{{numFormat(centerData.info.value3)}}</i></p>
+              </div>
+            </div>
+          </div>
+        </div>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel" v-if="centerData">
+            <div class="panel-title">
+              <span class="text">六定改革成效</span>
+            </div>
+            <div class="content flex" style="padding: 10px;">
+              <div class="box-center">
+                <div class="t">
+                  <p>{{centerData.changeInfo[0].value1}}<span>%</span></p>
+                  <p>总部机构压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{centerData.changeInfo[0].value2}}</p>
+                    <p style=" cursor: pointer;" @click.stop="handleShowTip(0,'beforeReform')">改革前总部机构平均数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{centerData.changeInfo[0].value3}}</p>
+                    <p>改革后总部机构平均数
+                    </p>
+                  </div>
+                </div>
+              </div>
+              <!-- <div class="box-center">
+                <div class="t">
+                  <p>{{centerData.changeInfo[1].value1}}<span>%</span></p>
+                  <p>中层管理人数压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{numFormat(centerData.changeInfo[1].value2)}}</p>
+                    <p>改革前中层管理人数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{numFormat(centerData.changeInfo[1].value3)}}</p>
+                    <p>改革后中层管理人数</p>
+                  </div>
+                </div>
+              </div> -->
+              <div class="box-center">
+                <div>
+                  <p>{{centerData.changeInfo[2].value1}}<span>%</span></p>
+                  <p>在册职工压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{numFormat(centerData.changeInfo[2].value2)}}</p>
+                    <p style=" cursor: pointer;" @click.stop="handleShowTip(0,'reformRegistered')">改革前在册职工数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{centerData.changeInfo[2].value3}}<span>万</span></p>
+                    <p>在册职工压缩数</p>
+                  </div>
+                </div>
+              </div>
+              <div class="box-center">
+                <div class="t">
+                  <p>{{centerData.changeInfo[1].value1}}<span>%</span></p>
+                  <p>在岗职工薪酬增长率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{numFormat(centerData.changeInfo[1].value2)}}<span>万元</span></p>
+                    <p style=" cursor: pointer;" @click.stop="handleShowTip(0,'reforAveRemuneration')">改革前在岗职工平均薪酬</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{numFormat(centerData.changeInfo[1].value3)}}<span>万元</span></p>
+                    <p>改革后在岗职工平均薪酬</p>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">核心指标监测</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(3,'focus')">改革成效</span>
+                <span class="tip-window" @click.stop="handleShowTip(3,'analysis')">智能分析</span>
+              </div>
+
+
+            </div>
+            <div class="content flex">
+              <div style="flex: 1;height: 100%; position: relative;">
+                <div ref="echartC1" style="flex: 1;height: 100%;"></div>
+                <div class="icon" @click.stop="handleShowTip2(1)">?</div>
+              </div>
+              <div ref="echartC2" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel">
+            <div class="panel-title">
+              <span class="text">分析预警中心</span>
+            </div>
+            <div class="content yujing">
+              <div class="flex1">
+                <p class="s-title main-color">工作台分析</p>
+                <dv-scroll-board :config="storageRecordConfig" class="content" />
+              </div>
+              <div class="flex1">
+                <p class="s-title main-color">数据库预警</p>
+                <dv-scroll-board :config="storageRecordConfig2" class="content" />
+              </div>
+            </div>
+          </div>
+        </dv-border-box-8>
+
+      </div>
+      <div class="right">
+        <dv-border-box-8 :dur="10" style="flex: 2">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定机制</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(4,'focus')">改革成效</span>
+                <span class="tip-window" @click.stop="handleShowTip(4,'analysis')">智能分析</span>
+              </div>
+
+            </div>
+            <div class="content flex flex-wrap">
+              <div ref="echartR1" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR2" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR3" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR4" style="flex: 0 0 49.9%;height: 50%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="11" style="flex: 1">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定薪酬</span>
+              <div>
+                <!-- <span class="tip-window" @click.stop="handlepaymentShow">改革成效</span> -->
+                <span class="tip-window" @click.stop="handleShowTip(5,'focus')">改革成效</span>
+                <span class="tip-window" @click.stop="handleShowTip(5,'analysis')">智能分析</span>
+              </div>
+
+            </div>
+            <div class="content flex">
+              <div ref="echartR5" style="flex: 1;height: 100%;"></div>
+              <div ref="echartR6" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="12" style="flex: 1">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定任期</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(6,'focus')">改革成效</span>
+                <span class="tip-window" @click.stop="handleShowTip(6,'analysis')">智能分析</span>
+              </div>
+            </div>
+            <div class="content flex">
+              <div ref="echartR7" style="flex: 1;height: 100%;"></div>
+              <div ref="echartR8" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+      </div>
+    </div>
+    <div class="footer">
+      <a class="item" v-for="(item,index) in companyList" :key="index" @click="handleGoPage(item.id,item.name)"><img
+          :src="`./images/logos/logo${index+1}.png`"></img> {{item.name}}</a>
+    </div>
+    <!-- 公共弹窗 -->
+    <div class="tip" @click="showTip = false" v-if="showTip && tipNum != 3">
+      <div class="tip-box">
+        <div class="tip-content">
+          <div class="btm10" v-for="(item,index) in tipData[tipNum]" :key="index"> {{item}}</div>
+        </div>
+      </div>
+    </div>
+    <!-- 问号弹窗 -->
+    <div class="tip" @click="showTip2 = false" v-if="showTip2">
+      <div class="tip-box" style="left:calc( 50% + 1300px )">
+        <div class="tip-content">
+          <div class="btm10" v-for="(item,index) in tipData2[tipNum]" :key="index"> {{item}}</div>
+        </div>
+      </div>
+    </div>
+    <!-- 核心指标监测专属 -->
+    <div class="tip" @click="showTip = false" v-if="showTip && tipNum == 3">
+      <div class="tip-box" style="left:calc( 50% + 1300px )">
+        <div class="tip-content">
+          <div class="btm10" v-for="(item,index) in tipData[tipNum]" :key="index"> {{item}}</div>
+        </div>
+      </div>
+    </div>
+    <!--标题弹窗 -->
+    <div class="tip" v-if="titleShow">
+      <div class="tip-box">
+        <div class="tip-content">
+          <div class="btm10" v-for="(item,index) in titleData" :key="index"> {{item}}</div>
+        </div>
+      </div>
+    </div>
+    <!-- 定薪酬加粗弹窗 -->
+    <!-- <div class="tip" v-if="paymentShow">
+      <div class="tip-box">
+        <div class="tip-content">
+          <div class="btm10">{{tipData.focus[5][0]}}<span style="font-weight: bold;">{{tipData.focus[5][1]}}</span></div>
+        </div>
+      </div>
+    </div> -->
+  </div>
+
+
+  <script src="./js/index.js"></script>
+</body>
+
+</html>

+ 289 - 0
manpowerPort/index2.html

@@ -0,0 +1,289 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <!-- 引入样式 -->
+  <link rel="stylesheet" href="./styles/element-ui@2.15.9.css" />
+  <link rel="stylesheet" href="./styles/normalize.css" />
+  <link rel="stylesheet" href="./styles/index.css" />
+  <!-- 引入js -->
+  <script src="./libs/vue@2.7.10.js"></script>
+  <!-- <script src="https://unpkg.com/@jiaminghi/data-view/dist/datav.min.vue.js"></script> -->
+  <script src="./libs/echarts.min.js"></script>
+  <script src="./libs/datav.min.js"></script>
+  <script src="./libs/element-ui@2.15.9.js"></script>
+  <script src="./libs/axios.min.js"></script>
+  <script src="./libs/lodash.min.js"></script>
+  <script src="./js/request.js"></script>
+  <script src="./js/data2.js"></script>
+  <script src="./libs/echarts-tooltip-carousel.js"></script>
+  <script src="./js/fjx.js"></script>
+</head>
+
+<body>
+  <div id="app" v-cloak>
+    <header class="my-header">
+      <span class="left" @click="handleGoBack"><img style="width: 70px;height: 70px;" src="./images/back.png"></img>
+      </span>
+      <span>{{titleName}}</span>
+      <span class="right">{{time}}</span>
+    </header>
+    <div class="main">
+      <div class="left">
+        <dv-border-box-8 :dur="10" style="flex: 1;">
+          <div class="my-panel">
+            <div class="panel-title  flex-between">
+              <span class="text">定机构</span>
+              <span class="tip-window" @click="handleShowTip(0)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartL1" style="flex: 1;height: 100%;"></div>
+              <div ref="echartL2" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="11" style="flex: 1;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定职数</span>
+              <span class="tip-window" @click="handleShowTip(2)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartL3" style="flex: 1;height: 100%;"></div>
+              <div ref="echartL4" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="12" style="flex: 2;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定员额</span>
+              <span class="tip-window" @click="handleShowTip(1)">智能分析</span>
+            </div>
+            <div class="content flex flex-wrap">
+              <div ref="echartL5" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL6" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL7" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL8" style="flex: 0 0 49.9%;height: 50%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+      </div>
+      <div class="center">
+        <!-- <div class="top" v-if="centerData">
+          <div class="box">
+            <img src="./images/center-top1.png" />
+            <div>
+              <p>架构数</p>
+              <p><i style="color: #45DAD1">{{numFormat(centerData.info.value1)}}</i></p>
+            </div>
+          </div>
+          <div class="box">
+            <img src="./images/center-top2.png" />
+            <div>
+              <p>岗位数</p>
+              <p><i style="color: #8BA2FF">{{numFormat(centerData.info.value2)}}</i></p>
+            </div>
+          </div>
+          <div class="box">
+            <img src="./images/center-top3.png" />
+            <div>
+              <p>总人数</p>
+              <p><i style="color: #69C0FF">{{numFormat(centerData.info.value3)}}</i></p>
+            </div>
+          </div>
+        </div> -->
+        <div class="top" v-if="centerData">
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(0,'topThree')">创新的建设模式</span>
+            </div>
+            <div class="box-content">
+              <img src="./images/center-top1.png" />
+              <div>
+                <p>架构数</p>
+                <p><i style="color: #45DAD1">{{numFormat(centerData.info.value1)}}</i></p>
+              </div>
+            </div>
+
+          </div>
+
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(1,'topThree')">穿透的全局监测</span>
+            </div>
+
+            <div class="box-content">
+              <img src="./images/center-top2.png" />
+              <div>
+                <p>岗位数</p>
+                <p><i style="color: #8BA2FF">{{numFormat(centerData.info.value2)}}</i></p>
+              </div>
+            </div>
+
+          </div>
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(2,'topThree')">领先的数智平台</span>
+            </div>
+            <div class="box-content">
+              <img src="./images/center-top3.png" style=" cursor: pointer;"
+                @click.stop="handleShowTip(0,'totlePeople')" />
+              <div>
+                <p>总人数</p>
+                <p><i style="color: #69C0FF">{{numFormat(centerData.info.value3)}}</i></p>
+              </div>
+            </div>
+          </div>
+        </div>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel" v-if="centerData">
+            <div class="panel-title">
+              <span class="text">六定改革成效</span>
+            </div>
+            <div class="content flex" style="padding: 10px;">
+              <div class="box-center">
+                <div class="t">
+                  <p>{{centerData.changeInfo[0].value1}}<span>%</span></p>
+                  <p>总部机构压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{centerData.changeInfo[0].value2}}</p>
+                    <p>改革前总部机构平均数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{centerData.changeInfo[0].value3}}</p>
+                    <p>改革后总部机构平均数
+                    </p>
+                  </div>
+                </div>
+              </div>
+              <div class="box-center">
+                <div class="t">
+                  <p>{{centerData.changeInfo[1].value1}}<span>%</span></p>
+                  <p>中层管理人数压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{numFormat(centerData.changeInfo[1].value2)}}</p>
+                    <p>改革前中层管理人数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{numFormat(centerData.changeInfo[1].value3)}}</p>
+                    <p>改革后中层管理人数</p>
+                  </div>
+                </div>
+              </div>
+              <div class="box-center">
+                <div>
+                  <p>{{centerData.changeInfo[2].value1}}<span>%</span></p>
+                  <p>在册职工压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{numFormat(centerData.changeInfo[2].value2)}}</p>
+                    <p>改革前在册职工数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{numFormat(centerData.changeInfo[2].value3)}}<span></span></p>
+                    <p>在册职工压缩数</p>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">核心指标监测</span>
+              <span class="tip-window" @click="handleShowTip(3)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartC1" style="flex: 1;height: 90%;"></div>
+              <div ref="echartC2" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel">
+            <div class="panel-title">
+              <span class="text">分析预警中心</span>
+            </div>
+            <div class="content yujing">
+              <div class="flex1">
+                <p class="s-title main-color">工作台分析</p>
+                <dv-scroll-board :config="storageRecordConfig" class="content" />
+              </div>
+              <!-- <div class="flex1">
+                <p class="s-title main-color">数据库预警</p>
+                <dv-scroll-board :config="storageRecordConfig2" class="content" />
+              </div> -->
+            </div>
+          </div>
+        </dv-border-box-8>
+
+      </div>
+      <div class="right">
+        <dv-border-box-8 :dur="10" style="flex: 2">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定机制</span>
+              <span class="tip-window" @click="handleShowTip(4)">智能分析</span>
+
+            </div>
+            <div class="content flex flex-wrap">
+              <div ref="echartR1" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR2" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR3" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR4" style="flex: 0 0 49.9%;height: 50%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="11" style="flex: 1">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定薪酬</span>
+              <span class="tip-window" @click="handleShowTip(5)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartR5" style="flex: 1;height: 100%;"></div>
+              <div ref="echartR6" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="12" style="flex: 1">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定任期</span>
+              <span class="tip-window" @click="handleShowTip(6)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartR7" style="flex: 1;height: 100%;"></div>
+              <div ref="echartR8" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+      </div>
+    </div>
+    <div class="footer">
+      <a class="item" v-for="(item,index) in companyList" :key="index"
+        @click="handleGoPage(item.id,item.name)">{{item.name}}</a>
+    </div>
+
+    <div class="tip" @click="showTip = false" v-if="showTip">
+      <div class="tip-box">
+        <div class="tip-content">{{tipData[tipNum]}}</div>
+        <!-- <div class="btm20">全员劳动生产率从去年前的人均XX万元提升到XX万元;在岗职工平均工资从去年前的人均XX万元提升到XX万元。</div>
+        <div>打破工资“大锅饭”,所有盈利企业工资增幅不高于利润增幅。实行薪酬“双挂钩”,省属企业负责人绩效年薪与经营业绩考核结果挂钩后,还要与企业经济效益挂钩。</div> -->
+      </div>
+    </div>
+  </div>
+  <script src="./js/index2.js"></script>
+</body>
+
+</html>

+ 286 - 0
manpowerPort/index3.html

@@ -0,0 +1,286 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <!-- 引入样式 -->
+  <link rel="stylesheet" href="./styles/element-ui@2.15.9.css" />
+  <link rel="stylesheet" href="./styles/normalize.css" />
+  <link rel="stylesheet" href="./styles/index.css" />
+  <!-- 引入js -->
+  <script src="./libs/vue@2.7.10.js"></script>
+  <script src="./libs/echarts.min.js"></script>
+  <script src="./libs/datav.min.js"></script>
+  <script src="./libs/element-ui@2.15.9.js"></script>
+  <script src="./libs/axios.min.js"></script>
+  <script src="./libs/lodash.min.js"></script>
+  <script src="./js/request.js"></script>
+  <script src="./js/data3.js"></script>
+  <script src="./libs/echarts-tooltip-carousel.js"></script>
+  <script src="./js/fjx.js"></script>
+</head>
+
+<body>
+  <div id="app" v-cloak>
+    <header class="my-header">
+      <span class="left" @click="handleGoBack"><img style="width: 70px;height: 70px;" src="./images/back.png"></img>
+      </span>
+      <span>{{titleName}}</span>
+      <span class="right">{{time}}</span>
+    </header>
+    <div class="main">
+      <div class="left">
+        <dv-border-box-8 :dur="10" style="flex: 1;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定机构</span>
+              <span class="tip-window" @click="handleShowTip(0)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartL1" style="flex: 1;height: 100%;"></div>
+              <div ref="echartL2" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="11" style="flex: 1;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定职数</span>
+              <span class="tip-window" @click="handleShowTip(2)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartL3" style="flex: 1;height: 100%;"></div>
+              <div ref="echartL4" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="12" style="flex: 2;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定员额</span>
+              <span class="tip-window" @click="handleShowTip(1)">智能分析</span>
+            </div>
+            <div class="content flex flex-wrap">
+              <div ref="echartL5" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL6" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL7" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL8" style="flex: 0 0 49.9%;height: 50%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+      </div>
+      <div class="center">
+        <!-- <div class="top" v-if="centerData">
+          <div class="box">
+            <img src="./images/center-top1.png" />
+            <div>
+              <p>架构数</p>
+              <p><i style="color: #45DAD1">{{numFormat(centerData.info.value1)}}</i></p>
+            </div>
+          </div>
+          <div class="box">
+            <img src="./images/center-top2.png" />
+            <div>
+              <p>岗位数</p>
+              <p><i style="color: #8BA2FF">{{numFormat(centerData.info.value2)}}</i></p>
+            </div>
+          </div>
+          <div class="box">
+            <img src="./images/center-top3.png" />
+            <div>
+              <p>总人数</p>
+              <p><i style="color: #69C0FF">{{numFormat(centerData.info.value3)}}</i></p>
+            </div>
+          </div>
+        </div> -->
+        <div class="top" v-if="centerData">
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(0,'topThree')">创新的建设模式</span>
+            </div>
+            <div class="box-content">
+              <img src="./images/center-top1.png" />
+              <div>
+                <p>架构数</p>
+                <p><i style="color: #45DAD1">{{numFormat(centerData.info.value1)}}</i></p>
+              </div>
+            </div>
+
+          </div>
+
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(1,'topThree')">穿透的全局监测</span>
+            </div>
+
+            <div class="box-content">
+              <img src="./images/center-top2.png" />
+              <div>
+                <p>岗位数</p>
+                <p><i style="color: #8BA2FF">{{numFormat(centerData.info.value2)}}</i></p>
+              </div>
+            </div>
+
+          </div>
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(2,'topThree')">领先的数智平台</span>
+            </div>
+            <div class="box-content">
+              <img src="./images/center-top3.png" style=" cursor: pointer;"
+                @click.stop="handleShowTip(0,'totlePeople')" />
+              <div>
+                <p>总人数</p>
+                <p><i style="color: #69C0FF">{{numFormat(centerData.info.value3)}}</i></p>
+              </div>
+            </div>
+          </div>
+        </div>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel" v-if="centerData">
+            <div class="panel-title">
+              <span class="text">六定改革成效</span>
+            </div>
+            <div class="content flex" style="padding: 10px;">
+              <div class="box-center">
+                <div class="t">
+                  <p>{{centerData.changeInfo[0].value1}}<span>%</span></p>
+                  <p>总部机构压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{centerData.changeInfo[0].value2}}</p>
+                    <p>改革前总部机构平均数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{centerData.changeInfo[0].value3}}</p>
+                    <p>改革后总部机构平均数
+                    </p>
+                  </div>
+                </div>
+              </div>
+              <div class="box-center">
+                <div class="t">
+                  <p>{{centerData.changeInfo[1].value1}}<span>%</span></p>
+                  <p>中层管理人数压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{numFormat(centerData.changeInfo[1].value2)}}</p>
+                    <p>改革前中层管理人数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{numFormat(centerData.changeInfo[1].value3)}}</p>
+                    <p>改革后中层管理人数</p>
+                  </div>
+                </div>
+              </div>
+              <div class="box-center">
+                <div>
+                  <p>{{centerData.changeInfo[2].value1}}<span>%</span></p>
+                  <p>在册职工压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{numFormat(centerData.changeInfo[2].value2)}}</p>
+                    <p>改革前在册职工数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76"> {{numFormat(centerData.changeInfo[2].value3)}}<span></span></p>
+                    <p>在册职工压缩数</p>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">核心指标监测</span>
+              <span class="tip-window" @click="handleShowTip(3)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartC1" style="flex: 1;height: 100%;"></div>
+              <div ref="echartC2" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel">
+            <div class="panel-title">
+              <span class="text">分析预警中心</span>
+            </div>
+            <div class="content yujing">
+              <div class="flex1">
+                <p class="s-title main-color">工作台分析</p>
+                <dv-scroll-board :config="storageRecordConfig" class="content" />
+              </div>
+              <!-- <div class="flex1">
+                <p class="s-title main-color">数据库预警</p>
+                <dv-scroll-board :config="storageRecordConfig2" class="content" />
+              </div> -->
+            </div>
+          </div>
+        </dv-border-box-8>
+
+      </div>
+      <div class="right">
+        <dv-border-box-8 :dur="10" style="flex: 2">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定机制</span>
+              <span class="tip-window" @click="handleShowTip(4)">智能分析</span>
+            </div>
+            <div class="content flex flex-wrap">
+              <div ref="echartR1" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR2" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR3" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR4" style="flex: 0 0 49.9%;height: 50%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="11" style="flex: 1">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定薪酬</span>
+              <span class="tip-window" @click="handleShowTip(5)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartR5" style="flex: 1;height: 100%;"></div>
+              <div ref="echartR6" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="12" style="flex: 1">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定任期</span>
+              <span class="tip-window" @click="handleShowTip(6)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartR7" style="flex: 1;height: 100%;"></div>
+              <div ref="echartR8" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+      </div>
+    </div>
+    <div class="footer" style="width: 70%;">
+      <a class="item" v-for="(item,index) in companyList" :key="index"
+        @click="handleGoPage(item.id,item.name)">{{item.name}}</a>
+    </div>
+    <div class="tip" @click="showTip = false" v-if="showTip">
+      <div class="tip-box">
+        <div class="tip-content">{{tipData[tipNum]}}</div>
+        <!-- <div class="btm20">全员劳动生产率从去年前的人均XX万元提升到XX万元;在岗职工平均工资从去年前的人均XX万元提升到XX万元。</div>
+        <div>打破工资“大锅饭”,所有盈利企业工资增幅不高于利润增幅。实行薪酬“双挂钩”,省属企业负责人绩效年薪与经营业绩考核结果挂钩后,还要与企业经济效益挂钩。</div> -->
+      </div>
+    </div>
+  </div>
+  <script src="./js/index3.js"></script>
+</body>
+
+</html>

+ 289 - 0
manpowerPort/index4.html

@@ -0,0 +1,289 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <!-- 引入样式 -->
+  <link rel="stylesheet" href="./styles/element-ui@2.15.9.css" />
+  <link rel="stylesheet" href="./styles/normalize.css" />
+  <link rel="stylesheet" href="./styles/index.css" />
+  <!-- 引入js -->
+  <script src="./libs/vue@2.7.10.js"></script>
+  <script src="./libs/echarts.min.js"></script>
+  <script src="./libs/datav.min.js"></script>
+  <script src="./libs/element-ui@2.15.9.js"></script>
+  <script src="./libs/axios.min.js"></script>
+  <script src="./libs/lodash.min.js"></script>
+  <script src="./js/request.js"></script>
+  <script src="./js/data4.js"></script>
+  <script src="./libs/echarts-tooltip-carousel.js"></script>
+  <script src="./js/fjx.js"></script>
+</head>
+
+<body>
+  <div id="app" v-cloak>
+    <header class="my-header">
+      <span class="left" @click="handleGoBack"><img style="width: 70px;height: 70px;" src="./images/back.png"></img>
+      </span>
+      <!--  -->
+      <span class="left2" @click="handleGoIndex">返回首页</img>
+      </span>
+      <span>{{titleName}}</span>
+      <span class="right">{{time}}</span>
+    </header>
+    <div class="main">
+      <div class="left">
+        <dv-border-box-8 :dur="10" style="flex: 1;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定机构</span>
+              <span class="tip-window" @click="handleShowTip(0)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartL1" style="flex: 1;height: 100%;"></div>
+              <div ref="echartL2" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="11" style="flex: 1;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定职数</span>
+              <span class="tip-window" @click="handleShowTip(2)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartL3" style="flex: 1;height: 100%;"></div>
+              <div ref="echartL4" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="12" style="flex: 2;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定员额</span>
+              <span class="tip-window" @click="handleShowTip(1)">智能分析</span>
+            </div>
+            <div class="content flex flex-wrap">
+              <div ref="echartL5" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL6" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL7" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartL8" style="flex: 0 0 49.9%;height: 50%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+      </div>
+      <div class="center">
+        <!-- <div class="top" v-if="centerData">
+          <div class="box">
+            <img src="./images/center-top1.png" />
+            <div>
+              <p>架构数</p>
+              <p><i style="color: #45DAD1">{{numFormat(centerData.info.value1)}}</i></p>
+            </div>
+          </div>
+          <div class="box">
+            <img src="./images/center-top2.png" />
+            <div>
+              <p>岗位数</p>
+              <p><i style="color: #8BA2FF">{{numFormat(centerData.info.value2)}}</i></p>
+            </div>
+          </div>
+          <div class="box">
+            <img src="./images/center-top3.png" />
+            <div>
+              <p>总人数</p>
+              <p><i style="color: #69C0FF">{{numFormat(centerData.info.value3)}}</i></p>
+            </div>
+          </div>
+        </div> -->
+        <div class="top" v-if="centerData">
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(0,'topThree')">创新的建设模式</span>
+            </div>
+            <div class="box-content">
+              <img src="./images/center-top1.png" />
+              <div>
+                <p>架构数</p>
+                <p><i style="color: #45DAD1">{{numFormat(centerData.info.value1)}}</i></p>
+              </div>
+            </div>
+
+          </div>
+
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(1,'topThree')">穿透的全局监测</span>
+            </div>
+
+            <div class="box-content">
+              <img src="./images/center-top2.png" />
+              <div>
+                <p>岗位数</p>
+                <p><i style="color: #8BA2FF">{{numFormat(centerData.info.value2)}}</i></p>
+              </div>
+            </div>
+
+          </div>
+          <div class="box">
+            <div>
+              <span class="tip-window2" @click.stop="handleShowTip(2,'topThree')">领先的数智平台</span>
+            </div>
+            <div class="box-content">
+              <img src="./images/center-top3.png" style=" cursor: pointer;"
+                @click.stop="handleShowTip(0,'totlePeople')" />
+              <div>
+                <p>总人数</p>
+                <p><i style="color: #69C0FF">{{numFormat(centerData.info.value3)}}</i></p>
+              </div>
+            </div>
+          </div>
+        </div>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel" v-if="centerData">
+            <div class="panel-title">
+              <span class="text">六定改革成效</span>
+            </div>
+            <div class="content flex" style="padding: 10px;">
+              <div class="box-center">
+                <div class="t">
+                  <p>{{centerData.changeInfo[0].value1}}<span>%</span></p>
+                  <p>总部机构压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{centerData.changeInfo[0].value2}}</p>
+                    <p>改革前总部机构平均数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{centerData.changeInfo[0].value3}}</p>
+                    <p>改革后总部机构平均数
+                    </p>
+                  </div>
+                </div>
+              </div>
+              <div class="box-center">
+                <div class="t">
+                  <p>{{centerData.changeInfo[1].value1}}<span>%</span></p>
+                  <p>中层管理人数压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{numFormat(centerData.changeInfo[1].value2)}}</p>
+                    <p>改革前中层管理人数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{numFormat(centerData.changeInfo[1].value3)}}</p>
+                    <p>改革后中层管理人数</p>
+                  </div>
+                </div>
+              </div>
+              <div class="box-center">
+                <div>
+                  <p>{{centerData.changeInfo[2].value1}}<span>%</span></p>
+                  <p>在册职工压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{numFormat(centerData.changeInfo[2].value2)}}</p>
+                    <p>改革前在册职工数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{numFormat(centerData.changeInfo[2].value3)}}<span></span></p>
+                    <p>在册职工压缩数</p>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">核心指标监测</span>
+              <span class="tip-window" @click="handleShowTip(3)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartC1" style="flex: 1;height: 100%;"></div>
+              <div ref="echartC2" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel">
+            <div class="panel-title">
+              <span class="text">分析预警中心</span>
+            </div>
+            <div class="content yujing">
+              <div class="flex1">
+                <p class="s-title main-color">工作台分析</p>
+                <dv-scroll-board :config="storageRecordConfig" class="content" />
+              </div>
+              <!-- <div class="flex1">
+                <p class="s-title main-color">数据库预警</p>
+                <dv-scroll-board :config="storageRecordConfig2" class="content" />
+              </div> -->
+            </div>
+          </div>
+        </dv-border-box-8>
+
+      </div>
+      <div class="right">
+        <dv-border-box-8 :dur="10" style="flex: 2">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定机制</span>
+              <span class="tip-window" @click="handleShowTip(4)">智能分析</span>
+            </div>
+            <div class="content flex flex-wrap">
+              <div ref="echartR1" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR2" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR3" style="flex: 0 0 49.9%;height: 50%;"></div>
+              <div ref="echartR4" style="flex: 0 0 49.9%;height: 50%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="11" style="flex: 1">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定薪酬</span>
+              <span class="tip-window" @click="handleShowTip(5)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartR5" style="flex: 1;height: 100%;"></div>
+              <div ref="echartR6" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="12" style="flex: 1">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定任期</span>
+              <span class="tip-window" @click="handleShowTip(6)">智能分析</span>
+            </div>
+            <div class="content flex">
+              <div ref="echartR7" style="flex: 1;height: 100%;"></div>
+              <div ref="echartR8" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+      </div>
+    </div>
+    <!-- <div class="footer">
+      <a class="item" v-for="(item,index) in companyList" :key="index"
+        @click="handleGoPage(item.id)">{{item.name}}</a>
+    </div> -->
+    <div class="tip" @click="showTip = false" v-if="showTip">
+      <div class="tip-box">
+        <div class="tip-content">{{tipData[tipNum]}}</div>
+        <!-- <div class="btm20">全员劳动生产率从去年前的人均XX万元提升到XX万元;在岗职工平均工资从去年前的人均XX万元提升到XX万元。</div>
+        <div>打破工资“大锅饭”,所有盈利企业工资增幅不高于利润增幅。实行薪酬“双挂钩”,省属企业负责人绩效年薪与经营业绩考核结果挂钩后,还要与企业经济效益挂钩。</div> -->
+      </div>
+    </div>
+  </div>
+  <script src="./js/index4.js"></script>
+</body>
+
+</html>

+ 294 - 0
manpowerPort/index5.html

@@ -0,0 +1,294 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <!-- 引入样式 -->
+  <link rel="stylesheet" href="./styles/element-ui@2.15.9.css" />
+  <link rel="stylesheet" href="./styles/normalize.css" />
+  <link rel="stylesheet" href="./styles/index5.css" />
+  <!-- 引入js -->
+  <script src="./libs/vue@2.7.10.js"></script>
+  <!-- <script src="https://unpkg.com/@jiaminghi/data-view/dist/datav.min.vue.js"></script> -->
+  <script src="./libs/echarts.min.js"></script>
+  <script src="./libs/datav.min.js"></script>
+  <script src="./libs/element-ui@2.15.9.js"></script>
+  <script src="./libs/axios.min.js"></script>
+  <script src="./libs/lodash.min.js"></script>
+  <script src="./js/request.js"></script>
+  <script src="./js/data.js"></script>
+  <script src="./js/zhb.js"></script>
+  <script src="./js/li.js"></script>
+  <script src="./js/fjx.js"></script>
+  <script src="./libs/echarts-tooltip-carousel.js"></script>
+</head>
+
+<body>
+  <div id="app" v-cloak @click="showTipClose">
+    <header class="my-header">
+      <span>国有资本数智化平台人力资源系统</span>
+      <span class="right">{{time}}</span>
+    </header>
+    <div class="main">
+      <div class="left">
+        <dv-border-box-8 :dur="10" style="flex: 1;">
+          <div class="my-panel">
+            <div class="panel-title flex-between ">
+              <span class="text">定机构</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(0,'focus')">关注重点</span>
+                <span class="tip-window" @click.stop="handleShowTip(0,'analysis')">智能分析</span>
+              </div>
+            </div>
+            <div class="content flex">
+              <!-- <div ref="echartL1" style="flex: 1;height: 100%;"></div> -->
+              <div ref="echartL2" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="11" style="flex: 1;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定职数</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(1,'focus')">关注重点</span>
+                <span class="tip-window" @click.stop="handleShowTip(1,'analysis')">智能分析</span>
+              </div>
+            </div>
+            <div class="content flex">
+              <!-- <div ref="echartL3" style="flex: 1;height: 100%;"></div> -->
+              <div style="flex: 1;height: 100%; position: relative;">
+                <div ref="echartL4" style="height: 100%; width: 100%;"></div>
+                <div class="icon" @click.stop="handleShowTip2(0)">?</div>
+              </div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="12" style="flex: 1;">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定员额</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(2,'focus')">关注重点</span>
+                <span class="tip-window" @click.stop="handleShowTip(2,'analysis')">智能分析</span>
+              </div>
+            </div>
+            <div class="content">
+              <!-- <div ref="echartL5" style="flex: 0 0 49.9%;height: 50%;"></div> -->
+              <!-- <div ref="echartL6" style="flex: 0 0 49.9%;height: 50%;"></div> -->
+              <!-- <div ref="echartL7" style="flex: 0 0 49.9%;height: 50%;"></div> -->
+              <div ref="echartL8" style="height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+      </div>
+      <div class="center">
+        <div class="top" v-if="centerData">
+          <div class="box">
+            <img src="./images/center-top1.png" />
+            <div>
+              <p>架构数</p>
+              <p><i style="color: #45DAD1">{{numFormat(centerData.info.value1)}}</i></p>
+            </div>
+          </div>
+          <div class="box">
+            <img src="./images/center-top2.png" />
+            <div>
+              <p>岗位数</p>
+              <p><i style="color: #8BA2FF">{{numFormat(centerData.info.value2)}}</i></p>
+            </div>
+          </div>
+          <div class="box">
+            <img src="./images/center-top3.png" />
+            <div>
+              <p>总人数</p>
+              <p><i style="color: #69C0FF">{{numFormat(centerData.info.value3)}}</i></p>
+            </div>
+          </div>
+        </div>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel" v-if="centerData">
+            <div class="panel-title">
+              <span class="text">六定改革成效</span>
+            </div>
+            <div class="content flex" style="padding: 10px;">
+              <div class="box-center">
+                <div class="t">
+                  <p>{{centerData.changeInfo[0].value1}}<span>%</span></p>
+                  <p>总部机构压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{centerData.changeInfo[0].value2}}</p>
+                    <p>改革前总部机构平均数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{centerData.changeInfo[0].value3}}</p>
+                    <p>改革后总部机构平均数
+                    </p>
+                  </div>
+                </div>
+              </div>
+              <div class="box-center">
+                <div class="t">
+                  <p>{{centerData.changeInfo[1].value1}}<span>%</span></p>
+                  <p>中层管理人数压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{numFormat(centerData.changeInfo[1].value2)}}</p>
+                    <p>改革前中层管理人数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{numFormat(centerData.changeInfo[1].value3)}}</p>
+                    <p>改革后中层管理人数</p>
+                  </div>
+                </div>
+              </div>
+              <div class="box-center">
+                <div>
+                  <p>{{centerData.changeInfo[2].value1}}<span>%</span></p>
+                  <p>在册职工压缩率</p>
+                </div>
+                <div class="flex">
+                  <div>
+                    <p style="color:#FBE139">{{numFormat(centerData.changeInfo[2].value2)}}</p>
+                    <p>改革前在册职工数</p>
+                  </div>
+                  <div>
+                    <p style="color:#17AC76">{{centerData.changeInfo[2].value3}}<span>万</span></p>
+                    <p>在册职工压缩数</p>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">核心指标监测</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(3,'focus')">关注重点</span>
+                <span class="tip-window" @click.stop="handleShowTip(3,'analysis')">智能分析</span>
+              </div>
+
+
+            </div>
+            <div class="content flex">
+              <div style="flex: 1;height: 100%; position: relative;">
+                <div ref="echartC1" style="flex: 1;height: 100%;"></div>
+                <div class="icon" @click.stop="handleShowTip2(1)">?</div>
+              </div>
+              <div ref="echartC2" style="flex: 1;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="10">
+          <div class="my-panel">
+            <div class="panel-title">
+              <span class="text">分析预警中心</span>
+            </div>
+            <div class="content yujing">
+              <div class="flex1">
+                <p class="s-title main-color">工作台分析</p>
+                <dv-scroll-board :config="storageRecordConfig" class="content" />
+              </div>
+              <div class="flex1">
+                <p class="s-title main-color">数据库预警</p>
+                <dv-scroll-board :config="storageRecordConfig2" class="content" />
+              </div>
+            </div>
+          </div>
+        </dv-border-box-8>
+
+      </div>
+      <div class="right">
+        <dv-border-box-8 :dur="10" style="flex: 1">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定机制</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(4,'focus')">关注重点</span>
+                <span class="tip-window" @click.stop="handleShowTip(4,'analysis')">智能分析</span>
+              </div>
+
+            </div>
+            <div class="content">
+              <!-- <div ref="echartR1" style="flex: 0 0 49.9%;height: 50%;"></div> -->
+              <!-- <div ref="echartR2" style="flex: 0 0 49.9%;height: 50%;"></div> -->
+              <!-- <div ref="echartR3" style="flex: 0 0 49.9%;height: 50%;"></div> -->
+              <div ref="echartR4" style="width:100;height: 100%;"></div>
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="11" style="flex: 1">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定薪酬</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(5,'focus')">关注重点</span>
+                <span class="tip-window" @click.stop="handleShowTip(5,'analysis')">智能分析</span>
+              </div>
+
+            </div>
+            <div class="content flex">
+              <div ref="echartR5" style="flex: 1;height: 100%;"></div>
+              <!-- <div ref="echartR6" style="flex: 1;height: 100%;"></div> -->
+            </div>
+          </div>
+        </dv-border-box-8>
+        <dv-border-box-8 :dur="12" style="flex: 1">
+          <div class="my-panel">
+            <div class="panel-title flex-between">
+              <span class="text">定任期</span>
+              <div>
+                <span class="tip-window" @click.stop="handleShowTip(6,'focus')">关注重点</span>
+                <span class="tip-window" @click.stop="handleShowTip(6,'analysis')">智能分析</span>
+              </div>
+            </div>
+            <div class="content flex">
+              <div ref="echartR7" style="flex: 1;height: 100%;"></div>
+              <!-- <div ref="echartR8" style="flex: 1;height: 100%;"></div> -->
+            </div>
+          </div>
+        </dv-border-box-8>
+      </div>
+    </div>
+    <div class="footer">
+      <a class="item" v-for="(item,index) in companyList" :key="index" @click="handleGoPage(item.link)"><img
+          :src="`./images/logos/logo${index+1}.png`"></img> {{item.name}}</a>
+    </div>
+
+    <div class="tip" @click="showTip = false" v-if="showTip && tipNum != 3">
+      <div class="tip-box">
+        <div class="tip-content">
+          <div class="btm10" v-for="(item,index) in tipData[tipNum]" :key="index"> {{item}}</div>
+        </div>
+      </div>
+    </div>
+    <!-- 问号弹窗 -->
+    <div class="tip" @click="showTip2 = false" v-if="showTip2">
+      <div class="tip-box" style="left:calc( 50% + 1300px )">
+        <div class="tip-content">
+          <div class="btm10" v-for="(item,index) in tipData2[tipNum]" :key="index"> {{item}}</div>
+        </div>
+      </div>
+    </div>
+    <!-- 核心指标监测专属 -->
+    <div class="tip" @click="showTip = false" v-if="showTip && tipNum == 3">
+      <div class="tip-box" style="left:calc( 50% + 1300px )">
+        <div class="tip-content">
+          <div class="btm10" v-for="(item,index) in tipData[tipNum]" :key="index"> {{item}}</div>
+        </div>
+      </div>
+    </div>
+  </div>
+
+
+  <script src="./js/index5.js"></script>
+</body>
+
+</html>

+ 80 - 0
manpowerPort/js/data.js

@@ -0,0 +1,80 @@
+const companyList = [
+  { name: '山西焦煤' },
+  { name: '晋能控股', link: './index2.html' },
+  { name: '华阳新材' },
+  { name: '潞安化工' },
+  { name: '华新燃气' },
+  { name: '太重集团' },
+  { name: '国际能源' },
+  { name: '华远陆港' },
+  { name: '水控集团' },
+  { name: '文旅集团' },
+  { name: '交控集团' },
+  { name: '航产集团' },
+  { name: '山西建投' },
+  { name: '汾酒集团' },
+  { name: '大地控股' },
+  { name: '云时代' },
+  { name: '华舰体育' },
+  { name: '神农科技' },
+]
+const data = {
+  info: {
+    value1: '5805',
+    value2: '444094',
+    value3: '860527',
+  },
+  changeInfo: [
+    {
+      value1: '50.30',
+      value2: '25',
+      value3: '15',
+    },
+    {
+      value1: '40.00',
+      value2: '8',
+      value3: '11.2',
+    },
+    {
+      value1: '11',
+      value2: '950527',
+      value3: '9',
+    },
+  ],
+}
+const dataL1 = [
+  [35, 30, 28, 41, 28, 28, 6, 23, 31, 19, 19, 17, 23, 27, 25, 15, 13, 13],
+  [18, 21, 14, 21, 13, 14, 6, 13, 13, 14, 14, 12, 15, 16, 12, 15, 10, 13],
+  [21, 21, 21, 21, 13, 13, 6, 13, 13, 14, 14, 12, 15, 15, 12, 15, 12, 13],
+]
+const dataL2 = [
+  [11, 8, 12, 10, 11, 0, 0, 5, 0, 0, 7, 0, 4, 0, 0, 0, 0, 6],
+  [11, 10, 6, 10, 12, 0, 0, 5, 0, 5, 7, 0, 4, 0, 0, 0, 0, 10],
+]
+const dataL3 = [
+  [15732, 29724, 4936, 9821, 2116, 763, 218, 1472, 661, 400, 3497, 265, 3066, 1205, 155, 1311, 22, 93],
+  [9.5, 8.43, 9.13, 9.11, 8.96, 8.99, 8.97, 8.99, 9.0, 9.0, 9.1, 8.2, 8.8, 9.1, 8, 8.8, 7.3, 8.8],
+]
+const dataL4 = [
+  [142, 189, 58, 59, 39, 32, 12, 36, 66, 36, 72, 41, 28, 161, 63, 10, 69, 28],
+  [59, 70, 71, 67, 38, 29, 2, 36, 32, 31, 36, 28, 37, 64, 25, 20, 10, 21],
+  [59, 70, 71, 67, 38, 29, 22, 36, 32, 31, 36, 28, 37, 64, 25, 33, 18, 34]
+]
+const dataL5 = [
+  [173826, 352494, 54039, 108985, 23512, 8484, 2430, 16357, 7351, 4452, 38863, 3242, 35183, 13285, 1937, 14733, 302, 1052],
+  [-1, -5, -24, 2, 5, -4, -13, -5, -3, 2, -2, -3, 5, 1, 14, -1, 490, 23],
+]
+
+const dataL6 = [
+  [146, 360, 400, 185, 220, 180, 30, 200, 200, 141, 170, 120, 200, 315, 50, 118, 100, 157],
+  [400, 400, 400, 400, 200, 180, 50, 200, 200, 177, 170, 120, 200, 330, 80, 186, 100, 150],
+]
+const dataL7 = [
+  [-1, -5, -24, 2, 5, -4, -13, -5, -3, 2, -2, -3, 5, 1, 14, -1, 490, 23],
+  [34.0, 17.0, 23.0, 26, 2, 7, null, 24.0, 15.0, -33.0, 10.0, -38.0, 12.0, 43.0, -7.0, 6.0, 56.0, 121.0],
+]
+
+const dataL8 = [
+  [-1, -5, -24, 2, 5, -4, -13, -5, -3, 2, -2, -3, 5, 1, 14, -1, 490, 23],
+  [145.0, 88.0, 58.0, 70, 8, 33, 98, 21.0, 24.0, -470.0, 69.0, -185.0, 19.0, 33.0, -4.0, 27.0, 76.0, 107.0],
+]

+ 112 - 0
manpowerPort/js/data2.js

@@ -0,0 +1,112 @@
+const companyList = [
+  { name: '山西煤炭运销集团忻州有限公司' },
+  { name: '山西煤炭运销集团长治有限公司', link:'./index3.html' },
+  { name: '晋能控股电力集团有限公司' },
+  { name: '中国太原煤炭交易中心有限公司' },
+  { name: '晋能控股装备制造集团有限公司' },
+  { name: '晋能控股山西煤业集团有限公司' },
+  { name: '晋能控股山西电力股份有限公司' },
+  { name: '晋控电力山西新能源有限公司' },
+  { name: '晋能控股煤业集团有限公司' }
+]
+const companyListTitle = [
+  { name: '山西煤炭运销集团长治有限公司', link:'./index3.html' },
+  { name: '山西煤炭运销集团忻州有限公司' },
+  { name: '晋能控股电力集团有限公司' },
+  { name: '中国太原煤炭交易中心有限公司' },
+  { name: '晋能控股装备制造集团有限公司' },
+  { name: '晋能控股山西煤业集团有限公司' },
+  { name: '晋能控股山西电力股份有限公司' },
+  { name: '晋控电力山西新能源有限公司' },
+  { name: '晋能控股煤业集团有限公司' }
+]
+const data = {
+  info: {
+    value1: '1708',
+    value2: '99386',
+    value3: '352494',
+  },
+  changeInfo: [
+    {
+      value1: '39',
+      value2: '34',
+      value3: '21',
+    },
+    {
+      value1: '25',
+      value2: '6278',
+      value3: '4372',
+    },
+    {
+      value1: '12',
+      value2: '352494',
+      value3: '42299',
+    },
+  ],
+}
+const dataL1 = [
+  [33, 29, 16, 14, 16, 12, 15, 12, 17]
+]
+const dataL2 = [
+  [30, 52, 287, 12, 297, 9, 42, 57, 83]
+]
+const dataL3 = [
+  [60, 104, 32, 28, 32, 24, 30, 24, 34]
+]
+const dataL4 = [
+  [319, 1392, 1475, 44, 5180, 344, 740, 27, 10336],
+  [10.35, 12.13, 12.16, 8.91, 9.00, 9.01, 9.00, 9.96, 11.00]
+]
+const dataL5 = [
+  [3081, 11480, 12134, 494, 57555, 3818, 8219, 271, 93960],
+  [9, 11, 0, 3, -4, -3, -2, 9, -9]
+]
+const dataL6 = [
+  [269, 697, 232, 139, 300, 100, 149, 60, 344]
+]
+const dataL7 = [
+  [9, 11, 0, 3, -4, -3, -2, 9, -9],
+  [61, -12, 54, 127, 24, 2, 27, -8, 7]
+]
+const dataL8 = [
+  [9, 11, 0, 3, -4, -3, -2, 9, -9],
+  [105, 323, 182, 1769.00, 43.00, -30, 686, -33, 78]
+]
+const dataC1 = [
+  [153.51, 37.99, 83.68, 46.72, 50.77, 332.56, 64.64, 413.42, 44.41],
+  [61, -12, 54, 127, 24, 2, 27, -8, 7]
+]
+const dataC2 = [
+  [105, 323, 182, 1769.00, 43.00, -30, 686, -33, 78],
+  [305, 8, 120.00, 79, 72, 415, 15, 571, 40]
+]
+const dataR1 = [
+  [1, 1, 1, 1, 1, 1, 1, 1, 1],
+  [0, 0, 0, 0, 0, 0, 0, 0, 0]
+]
+const dataR2 = [
+  [1, 1, 1, 1, 1, 1, 1, 1, 1],
+  [19, 62, 70, 3, 347, 23, 50, 2, 566]
+]
+const dataR3 = [
+  [258327, 4015, 1393496, 7404, 1330867, 621047, 20622, 31010, 926504],
+  [19, 62, 70, 3, 347, 23, 50, 2, 566]
+]
+const dataR4 = [
+  [69, 192, 210, 10, 1143, 76, 164, 5, 1865],
+  [19, 62, 70, 3, 347, 23, 50, 2, 566]
+]
+const dataR5 = [
+  [17117.80, 12669.20, 14311.00, 11220.77, 9302.98, 12107.07, 8637.63, 9259.17, 7301.61],
+  [23923.1, 0, 14081.1, 0, 6077.7, 0, 8196, 10210, 10351.6],
+]
+const dataR6 = [
+  [183, 372, 221, 268, 51, -25, 676, -31, 62],
+  [-25, 0, 10, 0, 63, 0, 13, -4, -26]
+]
+const dataR7 = [
+  [100, 100, 100, 100, 100, 100, 100, 100, 100]
+]
+const dataR8 = [
+  [100, 100, 100, 100, 100, 100, 100, 100, 100]
+]

+ 114 - 0
manpowerPort/js/data3.js

@@ -0,0 +1,114 @@
+const companyList = [
+  { name: '山西煤炭运销集团三元石窟煤业有限公司' },
+  { name: '山西三元福达煤业有限公司' },
+  { name: '山西三元煤业股份有限公司', link: './index4.html' },
+  { name: '长治市聚通能源发展有限公司' },
+  { name: '长治三元中能煤业有限公司' },
+  { name: '山西马堡煤业有限公司' },
+  { name: '山西长治郊区三元南耀小常煤业有限公司' },
+  { name: '山西长治王庄煤业有限责任公司' },
+  { name: '山西煤炭运销集团三元古韩荆宝煤业有限公司' },
+  { name: '长治县三元王庄华泰水泥有限公司' }
+]
+const companyListTitle = [
+  { name: '山西三元煤业股份有限公司', link: './index4.html' },
+  { name: '山西煤炭运销集团三元石窟煤业有限公司' },
+  { name: '山西三元福达煤业有限公司' },
+  { name: '长治市聚通能源发展有限公司' },
+  { name: '长治三元中能煤业有限公司' },
+  { name: '山西马堡煤业有限公司' },
+  { name: '山西长治郊区三元南耀小常煤业有限公司' },
+  { name: '山西长治王庄煤业有限责任公司' },
+  { name: '山西煤炭运销集团三元古韩荆宝煤业有限公司' },
+  { name: '长治县三元王庄华泰水泥有限公司' }
+]
+const data = {
+  info: {
+    value1: '350',
+    value2: '3823',
+    value3: '11480',
+  },
+  changeInfo: [
+    {
+      value1: '39',
+      value2: '47',
+      value3: '29',
+    },
+    {
+      value1: '32.83',
+      value2: '1468',
+      value3: '986',
+    },
+    {
+      value1: '16',
+      value2: '13520',
+      value3: '2040',
+    },
+  ],
+}
+const dataL1 = [
+  [17, 27, 47, 4, 36, 43, 33, 36, 34, 17]
+]
+const dataL2 = [
+  [27, 28, 48, 42, 37, 44, 34, 37, 35, 18]
+]
+const dataL3 = [
+  [34, 54, 94, 8, 72, 86, 66, 72, 68, 34]
+]
+const dataL4 = [
+  [26, 58, 137, 34, 127, 113, 96, 95, 85, 25],
+  [8.00, 9.00, 8.00, 10.00, 11.00, 12.00, 9.00, 8.00, 11.00, 10.00]
+]
+const dataL5 = [
+  [323, 647, 1710, 344, 1156, 944, 1070, 1191, 775, 254],
+  [-57.00, 20.00, -14.00, -8.00, 0.00, 9.00, 0.00, -4.00, 0.00, -2.00]
+]
+const dataL6 = [
+  [323, 647, 1710, 344, 1156, 944, 1070, 1191, 775, 254]
+]
+const dataL7 = [
+  [-57.00, 20.00, -14.00, -8.00, 0.00, 9.00, 0.00, -4.00, 0.00, -2.00],
+  [null, 46, 2, 6, -8, 46, 17, -44, 24, -80]
+]
+const dataL8 = [
+  [-57.00, 20.00, -14.00, -8.00, 0.00, 9.00, 0.00, -4.00, 0.00, -2.00],
+  [469.09, 117.06, -43.01, -16.89, -33.33, 35.19, 15.56, -75.42, null, -222.00]
+]
+const dataC1 = [
+  [321.15, 233.91, 170.76, 157.08, 156.96, 150.38, 114.21, 113.93, 40.54, 3.46],
+  [null, 46, 2, 6, -8, 46, 17, -44, 24, -80]
+]
+const dataC2 = [
+  [469.09, 117.06, -43.01, -16.89, -33.33, 35.19, 15.56, -75.42, null, -222.00],
+  [812.00, 547.00, 212.00, 251.00, 272.00, 315.00, 401.00, 87.00, 85.00, -161.00]
+]
+const dataR1 = [
+  [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
+  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+]
+const dataR2 = [
+  [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
+  [2, 4, 10, 2, 7, 6, 6, 7, 5, 2]
+]
+const dataR3 = [
+  [30029, 116146, 213144, 308565, 105661, 98456, 87853, 38084, 8204, -3783],
+  [2, 4, 10, 2, 7, 6, 6, 7, 5, 2]
+]
+const dataR4 = [
+  [7, 13, 33, 7, 23, 20, 20, 23, 16, 7],
+  [2, 4, 10, 2, 7, 6, 6, 7, 5, 2]
+]
+const dataR5 = [
+  [43240, 8019.8, 15874.4, 29026.3, 19815.07, 8486.45, 7865.4, 14039.6, 8894.4, 7326.7],
+  [32620, 21120.75, 14255.91, 26785, 18356, 15658, 25738, 33585, 21078, 3683]
+]
+const dataR6 = [
+  [359, 141, -26, -8, -23, 90, 20, -68, 1769, -221],
+  [-25, -6, -6, -8, -7, 85, 227, 139, -6, -50]
+]
+const dataR7 = [
+  [100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
+]
+const dataR8 = [
+  [100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
+]

+ 103 - 0
manpowerPort/js/data4.js

@@ -0,0 +1,103 @@
+const companyList = [
+  { name: '山西三元文化产业发展有限公司' },
+  { name: '山西煤炭运销集团东井岭煤业有限公司' },
+  { name: '武乡县恒盛洗煤有限公司' },
+  { name: '山西煤炭运销集团三元微子镇煤业有限公司' },
+  { name: '山西煤炭运销集团黄山煤业有限公司' },
+  { name: '山西长治郊区三元吉祥煤业有限公司' },
+  { name: '山西沁园春矿泉水有限公司' },
+  { name: '山西海森生物制品有限公司' },
+]
+const data = {
+  info: {
+    value1: '128',
+    value2: '356',
+    value3: '1710',
+  },
+  changeInfo: [
+    {
+      value1: '23.8',
+      value2: '21',
+      value3: '16',
+    },
+    {
+      value1: '26.7',
+      value2: '213',
+      value3: '156',
+    },
+    {
+      value1: '29.13',
+      value2: '2413',
+      value3: '703',
+    },
+  ],
+}
+const dataL1 = [
+  [3, 9, 10, 33, 23, 29, 13, 8]
+]
+const dataL2 = [
+  [3, 9, 10, 33, 23, 29, 13, 8]
+]
+const dataL3 = [
+  [5, 4, 12, 24, 32, 25, 35, 8]
+]
+const dataL4 = [
+  [6, 18, 20, 66, 46, 58, 26, 12],
+  [55.56, 12.50, 16.44, 8.60, 21.19, 20.00, 24.31, 66.67]
+]
+const dataL5 = [
+  [9, 32, 73, 279, 151, 125, 144, 12],
+  [0.00, 0.00, -1.35, 81.82, 73.82, 0.00, -9.03, 0.00]
+]
+const dataL6 = [
+  [9, 32, 73, 279, 151, 125, 144, 12]
+]
+
+const dataL7 = [
+  [0.00, 0.00, -1.35, 81.82, 73.82, 0.00, -9.03, 0.00],
+  [-18.20, 0.00, 95.39, -35.61, -71.34, 0.00, 0.00, 0.00]
+]
+
+const dataL8 = [
+  [0.00, 0.00, -1.35, 81.82, 73.82, 0.00, -9.03, 0.00],
+  [0.00, 0.00, 780.62, 242.97, 18.09, -52.24, 3.12, 24.68]
+]
+const dataC1 = [
+  [37.30, 0.00, 89.53, 17.89, 7.67, 16.05, -6.89, 0.00],
+  [-18.20, 0.00, 95.39, -35.61, -71.34, 0.00, 0.00, 0.00]
+]
+const dataC2 = [
+  [0.00, 0.00, 780.62, 242.97, 18.09, -52.24, 3.12, 24.68],
+  [0.00, 0.00, 235.35, -141.02, -138.66, -125.17, -417.93, -3675.51]
+  
+]
+const dataR1 = [
+  [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
+  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+]
+const dataR2 = [
+  [1, 1, 1, 1, 1, 1, 1, 1],
+  [0, 0, 0, 1, 2, 0, 0, 0]
+]
+const dataR3 = [
+  [0, -2000, 2610, -12442, -14428, -7992, -5780, -3602],
+  [0, 0, 0, 1, 2, 0, 0, 0]
+]
+const dataR4 = [
+  [2, 2, 2, 6, 8, 0, 0, 0],
+  [0, 0, 0, 1, 2, 0, 0, 0]
+]
+const dataR5 = [
+  [15323.20, 0.00, 9084.66, 10674.11, 12694.67, 10281.05, 4433.65, 0.00],
+  [11000, 0.00, 6666.66, 9492.75, 41783.7, 0, 3387.97, 8333.33]
+]
+const dataR6 = [
+  [0, -100, -920, -239, 38, 27, 30, -2727],
+  [45.45, 0, 43.84, 18.63, -68.03, 0, 38.16, 0]
+]
+const dataR7 = [
+  [100, 100, 100, 100, 100, 100, 100, 100, 100]
+]
+const dataR8 = [
+  [100, 100, 100, 100, 100, 100, 100, 100, 100]
+]

+ 115 - 0
manpowerPort/js/fjx.js

@@ -0,0 +1,115 @@
+const fjxdataL1 = [
+  [10399.32, 7126.2, 8643.4, 15964.2, 9733.9, 8070.8, 11564.4, 4233.6, 7927.05, 5298.9, 6001.3, 9010.1, 11370.3, 10170.1, 15123.3, 6103.5, 18555.5, 7293.3],
+  [10765.11, 9926.11, 8004.83, 17927.84, 8175.60, 8564.49, 14752.41, 4198.19, 7769.08, 5675.25, 6930.32, 8930.43, 11308.43, 10595.55, 8713.58, 6006.82, 17387.07, 5532.42],
+]
+
+const fjxdataL2 = [
+  [172, 89, 80, 117, 23, 38, 99, 30, 34, -524, 64, -160, 31, 53, 2, 27, -20, 109],
+  [3.52, 39.29, -7.39, 12.30, -16.01, 6.12, 27.57, -0.84, -1.99, 7.10, 15.48, -0.88, -0.54, 4.18, -42.38, -1.58, -6.30, -24.14],
+]
+
+const fjxdataL3 = [
+  [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
+]
+const fjxdataL4 = [
+  [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
+]
+const titleData = ['国资运营公司在工作过程中高度重视将新兴管理技术运用到实际业务场景之中,大力推动大数据应用从分析展示向智能决策转变,做到“一屏总览、一键调取”,实现“全局感知、精准监测全景可视、智慧分析”,推动国资阳光运行、要素全部覆盖过程留痕可询、动态监测预警。']
+const tipData =
+{
+  analysis: [
+    [
+      '华阳新材12月总部设立的共享服务中心及事业部数共12个,“六定”常态机制核定上限为6个,未严格执行机构配置限额有关规定'
+    ],
+    [
+      '云时代中层管理人员对比六定前有所增长,是因为在此期间发生了组织兼并。'
+    ],
+    [
+      '1.	华舰体育总人数比去年同期增长490%,主要原因是业务发展需要;',
+      '2.	华阳新材人数下降了24%,主要是自然减员结果;',
+      '3.	文旅集团全员劳动生产率同比下降33%,人工成本利润率同比下降470%,企业总人数增长2%;',
+      '4.	大地控股的全员劳动生产率同比下降7%,人工成本利润率同比下降4%,企业总人数增长14%;',
+      '5.	华舰体育全员劳动生产率同比增长56%,同时企业总人数增长490%,明显高于全员劳动率增长幅度,值得关注;',
+    ],
+    [
+      '1.	国际能源全员劳动生产率较高,因为扭亏减亏成效显著;',
+      '2.	汾酒集团全员劳动生产率较高,因为企业效益好人均产值较高;',
+      '3.	文旅集团、航产集团人工成本利润率为负,且与去年同期比有所下降,需重点关注;',
+      '4.	国际能源、华舰体育人工成本利润率为负,但相比去年有所改善;',
+      '5.	山西焦煤、晋能控股、华阳新材、太重集团、国际能源、华远陆港、交控集团等8家企业人工成本利润率增长且总人数下降;',
+    ],
+    [
+      '1. 国际能源2022年利润为负,同年累计招聘190人;',
+      '2.	文旅集团2022年利润为负,同年累计招聘46人;',
+      '3.	航产集团2022年利润为负,同年累计招聘199人;',
+      '4.	华舰体育2022年利润为负,同年累计招聘12人;',
+    ],
+    [
+      '文旅集团2022年利润同比降低524%,同时在岗职工平均薪酬增长7.1%;',
+    ]
+  ],
+  focus: [
+    [
+      '18家省属企业总部机构平均数量由25个降到15个;内设机构平均数量由103个降到26个;一律取消二级内设机构。'
+    ],
+    [
+      '省管干部减少82人,总经理助理级和中层管理人员分别减少一半以上。'
+    ],
+    [
+      '集团总部平均员工编制数量由822人降到229人;截至2022年底,职工人数较2020年6月改革前减少10万人;全员劳动生产率从2019年的人均25.5万元提升到50.1万元。',
+    ],
+    [
+      '核心关注企业效益与人力资源管理挂钩的两个核心指标发展趋势。', '全员劳动生产率:企业劳动生产总值/在册人数,代表企业人均产出;需重点关注低于平均线的企业。', '人工成本利润率:企业利润总额/人工成本,值为负的企业代表其利润为负,需重点关注其增长趋势。',
+    ],
+    [
+      '省属企业用人“逢进必考”,2022年新进5619人,招聘条件、过程、结果信息全部在省政府网站公开。'
+    ],
+    [
+      '企业负责人绩效薪比重上调到年薪的80%,实行薪酬“双挂钩”,省属企业负责人绩效年薪与经营业绩考核结果挂钩后,还要与企业经济效益挂钩,未完成效益指标的企业,按比例扣减绩效年薪。对扭亏减亏“动真格”,无重大客观原因发生经营性亏损的企业,负责人不得领取绩效年薪;拿出一半的年度绩效薪酬,与扭亏减亏成绩挂钩。2022年有429户省属亏损企业只取基本工资,850户效益下滑企业工资不增长,所有盈利企业工资增幅不高于利润增幅。截至2022年末,18家省属企业在岗职工平均工资从2019年的人均8万元提升到11.2万元。',
+    ],
+    [
+      '进一步深化落实“六定“改革,借助数智化工具,”六定“改革评估频率从原本1年1次提升到1月1次,监督有力执行提效,2022年,省属企业在册职工减少 2 万人,全员劳动生产率从年初人均 36.76 万元提升到 47.53 万元,人工成本利润率从年初18.1%提升到38.6%:省属企业累计新进员工5347人,公开招聘 5331人,公开招聘率 99%。',
+    ]
+  ],
+  // 中间最上面仨按钮
+  topThree: [
+    [
+      '● 迄今为止,国有企业人力资源信息化单体范围最大、业态最复杂的项目', '● 覆盖18家省属企业、3家世界五百强、19家上市公司,约100万从业人员', '● 全国首创”1+X“建设模式:“1”部分落实省委省政府“六定”要求,“X”部分赋能省属企业人资管理提质增效', '● 5个100%:“六定”监管覆盖率100%、企业人员覆盖率100%、手机操作覆盖率100%,电子合同覆盖率100%、线上招聘覆盖率100%'
+    ],
+    [
+      '● 穿透全级次6188个管理主体,10万多个组织架构,截至目前已累计89万次登录,峰值7万人同时在线', '● 预设256个监测点,自动触发预警,自2023年1月1日投入使用以来,已发现问题2000多个', '● 将“六定”要求固化到系统中,架构设立、人员档案、劳动合同签署、全员绩效考核、公开招聘、高管薪酬等监测全层级覆盖', '● 聚焦主要矛盾抓核心,自上而下直接抽取18家省属企业95%的人员原始数据', '● 服务国企选人用人体制机制改革,专项建设岗位、人员画像模块'
+    ],
+    [
+      '● 理念领先:对标世界一流,系统脱胎于华为全球20万员工HR管理理念,将华为300余条业务模式和流程固化其中', '● 管理领先:借鉴华为20万员工内部灵活调配的内部人才市场机制、平安120万员工筛选潜力员工的人才画像机制等一流经验,帮助省属企业实现了100余类业务的规范及优化', '● 实践领先:以焦煤集团为试点,建立集团内部人才市场,推动职工内部横向流动,有效控制员工总量,很大程度上解决了国企职工能进不能出的问题', '● 技术领先:安全上基于华为对美国的防御技术及策略,为省属企业提供最高安等级保障数据安全;效率上薪酬模块的计算速度已经优于阿里同类型产品', '● 团队领先:200多人的建设团队,70%来自华为、平安、SAP、四大会所、五大咨询,从群众中来到群众中去,深入省属企业现场调研200余场,培训赋能150余次,组建培训了10000多人的省属企业网格员队伍', '● 效率领先: “六定”监管管理效率提升60%,赋能52000多名省属企业人事劳资专员,流程线上化200多条,智能机器人客服可在线解答80%以上的系统使用问题'
+    ]
+  ],
+  // 总人数
+  totlePeople: [
+    [
+      '情况复杂,底数不清', '● 受煤炭资源整合和煤矿兼并重组、煤焦公路运销体制改革、分离企业办社会职能、股权多元化和混合所有制改革、“僵尸企业”出清、厂办大集体改革、压缩管理层级减少法人户数、专业化重组、化解历史遗留问题、维护安全稳定等因素影响,省属企业人力资源领域积累了大量问题', '● 盲目投资扩张、内部管理粗放', '● 委外从业人员、劳务派遣人员、短期临时人员、少数股东派出留用人员、农民合同制人员交织', '● 劳动合同与劳动关系错位、人事劳资管理权与财务并表权错位、劳动关系与实际管理错位', '● 财务报表口径与人事劳资口径差异巨大,例如,晋能控股财务口径从业人员 47.7万人,劳资口径实际管理 35.1万人,相差 12.6万人'
+    ]
+  ],
+  // 改革前总部机构平均数
+  beforeReform: [
+    [
+      '机构臃肿,干部超配', '● 以晋能控股为例,重组之前,原同煤集团、晋煤集团、晋能集团重组之前', '● 总部共有“处级”机构 150个(分别为67个、49个、34个),“科级”机构742个(分别为602个、105 个、35个),“股级”机构434个(分别为102个、332 个、0个)', '● 总部人员共有 8124 人(分别为5578 人、1910 人、636人),其中,“处级”千部 892人(分别为430人、273 人、189人),“科级”干部 1827人(分别为1367 人、460人、0人)', '● 二级公司共有“处级”干部 3295人(分别为2064 人、927 人、304 人),集团合计共有“处级”干部 4187人', '● 在管理、辅助、后勤、地面岗位职工严重过剩的同时,井下一、二线生产岗位职工数量明显不足,平均年龄偏大,缺少年轻职工'
+    ]
+  ],
+  // 改革在册职工
+  reformRegistered: [
+    [
+      '冗员繁多,效率低下', '● 省属企业特别是省属煤企普遍重视吸纳就业规模,忽视劳动生产率,片面地将职工人数视为实力、政绩和荣誉,随意进人,人浮于事,在册不在岗', '● 与央企相比,2019年,原7大省属煤企资产总额超1.8万亿元,煤炭产量5.8亿吨,从业人员82.6万人;国家能源集团资产总额超1.8万亿元,煤炭产量5.2亿吨,职工人数35万', '● 2019年,原28 家省属企业全员劳动生产率人均仅为 25.55 万元,相当于央企同期的 45.4%', '● 与邻省相比,2015年我省煤矿人均产量 990吨,同期内蒙 4463 吨。省属煤企由于人数过多,人均产量仅为全省平均水平的 80%', '● 2012年~2016 年煤炭下行周期,省属煤企普遍采取了鼓励休假、提前内退、停薪留职、转岗分流等措施自救'
+    ]
+  ],
+  // 改革前在岗职工平均薪酬
+  reforAveRemuneration: [
+    [
+      '薪效脱钩,波动较大', '● 从薪酬总量看,多年来省属企业职工薪酬总额位居全国省级国企前列,居第 4位至第2位之间,排位高于资产总额和利润总额', '● 从薪酬比重看,2022年,省属企业劳动生产总值 4442亿元,其中职工薪酬1486亿元,占比1/3,比重高于上缴税费、营业利润和折旧', '● 从薪效联动看,2020年,省属企业利润总额较上年下滑 36.6%,职工工资总额不降反增,大量亏损企业负责人照常领取年薪,效益一般的企业,中层干部薪酬标准处于省属企业较高水平', '● 从薪酬兑付看,欠薪欠保问题周期性发生,2021年,晋能控股、华阳新材再次出现大面积欠薪'
+    ]
+  ]
+}
+
+const tipData2 = [
+  ['管理人员是指有直接下属、具有人员管理职责的人员,不包括财务人员、人力资源等管理部门中不负有人员管理职能的具体工作人员。'],
+  ['全员劳动生产率=劳动生产总值/平均在岗职工人数']
+]

文件差异内容过多而无法显示
+ 1 - 0
manpowerPort/js/index.js


文件差异内容过多而无法显示
+ 1 - 0
manpowerPort/js/index2.js


文件差异内容过多而无法显示
+ 1 - 0
manpowerPort/js/index3.js


文件差异内容过多而无法显示
+ 1 - 0
manpowerPort/js/index4.js


文件差异内容过多而无法显示
+ 1 - 0
manpowerPort/js/index5.js


+ 16 - 0
manpowerPort/js/li.js

@@ -0,0 +1,16 @@
+const dataR1 = [
+  [1, 1, 5, 1, 1, 4, 2, 6, 3, 0, 7, 5, 1, 1, 4, 1, 1, 3],
+  [2000, 0, 1908, 300, 0, 733, 236, 224, 270, 0, 864, 0, 0, 325, 241, 777, 63, 104],
+]
+const dataR2 = [
+  [1, 1, 5, 1, 1, 4, 2, 6, 3, 0, 7, 5, 1, 1, 4, 1, 1, 3],
+  [0, 2290, 1884, 0, 34, 339, 6, 231, 93, 0, 511, 0, 9, 12, 85, 508, 61, 82],
+]
+const dataR3 = [
+  [3006606.00, 3262765.00, 751436.00, 1020038.00, 110320.00, 30198.00, -4547.00, 77807.00, 23356.00, -31785.00, 125604.00, -30488.00, 432926.00, 1032546.00, 51752.00, 73106.00, -10784.00, 672.00],
+  [2, 2125, 835, 450, 34, 476, 190, 225, 37, 46, 78, 199, 281, 164, 86, 59, 12, 26]
+]
+const dataR4 = [
+  [4000, 7000, 4000, 600, 300, 460, 90, 600, 350, 261, 618, 73, 1200, 500, 60, 742, 10, 300],
+  [2, 2125, 835, 450, 34, 476, 190, 225, 37, 46, 78, 199, 281, 164, 86, 59, 12, 26]
+]

+ 194 - 0
manpowerPort/js/request.js

@@ -0,0 +1,194 @@
+//如果部署在同域名的话可以直接取cookie,后端需 HttpOnly 设置成否
+// var cookie_name = 'wolfking.jeesharp.session.id'
+// getCookie(cookie_name)
+
+// 是否本地环境
+function isLocalEnv () {
+  let domain = window.location.origin
+  if (['http://127.0.0.1:5500', 'file://'].includes(domain)) {
+    return true
+  } else {
+    return false
+  }
+}
+
+// api 前缀
+function getApiUrl () {
+  // 为线上时
+  if (!isLocalEnv()) {
+    return window.location.origin
+  } else {
+    // 本地时
+    // return 'http://sxtc.com:10002'        // 内网环境
+    // return 'http://10.8.8.100:10002'   // 内网环境
+    // return 'http://1.71.170.214:18080' // 线上环境
+    // return 'http://szxm.sxcig.com:8012' // 线上环境
+    // return 'http://10.0.0.27:8080'     // 超哥环境
+    // return 'http://10.0.0.22:8080'     // 闫敏的环境
+    // return 'http://10.0.0.8:8080' // 祥慧的环境
+    // return 'http://10.0.0.115:8080'    // 王蒙的环境
+    return 'http://10.0.0.74:8080'
+  }
+}
+// websocket 前缀
+function getWsUrl () {
+  let prefix = location.protocol === 'https:' ? 'wss://' : 'ws://'
+  // 为线上时
+  if (!isLocalEnv()) {
+    return prefix + window.location.host
+  } else {
+    return prefix + 'sxtc.com:10002'
+    // return prefix + '10.0.0.115:8080'
+  }
+}
+
+// minio 前缀
+function getMinioUrl () {
+  let isProduction = location.origin.indexOf('1.71.170.214') != -1
+  if (isProduction) {
+    return 'http://1.71.170.214:19000/constr-documents/'
+  } else {
+    return 'http://10.8.8.191:9000/constr-documents-test/'
+  }
+}
+
+/** axios封装
+ * 请求拦截、相应拦截、错误统一处理
+ */
+const httpRequest = axios.create({
+  baseURL: 'http://192.168.1.2:8080', // 测试环境
+  timeout: 3 * 60 * 1000, // 3分钟等待
+  withCredentials: true // 携带cookie
+})
+
+// 请求拦截器
+httpRequest.interceptors.request.use(
+  function (config) {
+    if(config.data.access_token){
+      config.headers['access_token'] = config.data.access_token
+    }
+    // if (!isLocalEnv()) {
+    //   if (getQueryVariable('token')) {
+    //     config.headers['access_token'] = getQueryVariable('token')
+    //   }
+    // } else {
+    //   config.headers['access_token'] = localStorage.getItem('token')
+    //   // config.headers['access_token'] = '4b3ed521-f509-48d9-b907-ab127479df41'
+    // }
+    // // 上传文件
+    // if (config.url == '/apiSys/oss/upload') {
+    //   config.headers['Content-Type'] = 'multipart/form-data'
+    // } else {
+    //   config.headers['Content-Type'] = 'application/json'
+    // }
+    return config
+  },
+  function (error) {
+    return Promise.reject(error)
+  }
+)
+
+//响应拦截
+httpRequest.interceptors.response.use(
+  function (response) {
+    const res = response.data
+    // if (res.code == 201) {
+    //   this.ELEMENT.Message.error(res.msg)
+    //   if (!isLocalEnv()) {
+    //     // 跳登录页
+    //     window.location = window.location.origin
+    //   } else {
+    //     localEnvLogin()
+    //   }
+    // }
+    return response
+  },
+  function (error) {
+    this.ELEMENT.Message.error(error.message)
+    return Promise.reject(error)
+  }
+)
+
+function get (url, params) {
+  return new Promise((resolve, reject) => {
+    httpRequest
+      .get(url, { params: params })
+      .then(res => {
+        resolve(res.data)
+      })
+      .catch(err => {
+        reject(err.data)
+      })
+  })
+}
+// qs.stringify(data)
+function post (url, data, config) {
+  return new Promise((resolve, reject) => {
+    httpRequest
+      .post(url, data, config)
+      .then(res => {
+        resolve(res.data)
+      })
+      .catch(err => {
+        reject(err)
+      })
+  })
+}
+
+function postFile (url, blob) {
+  return new Promise((resolve, reject) => {
+    let formdata = new FormData()
+    formdata.append('multipartFile', blob)
+    httpRequest
+      .post(url, formdata)
+      .then(res => {
+        resolve(res.data)
+      })
+      .catch(err => {
+        reject(err)
+      })
+  })
+}
+
+function localEnvLogin () {
+  post(
+    '/apiSys/login',
+    {
+      username: 'admin',
+      password: '1q2w3e4r5t'
+    },
+    {
+      transformRequest: [
+        function (data, headers) {
+          // 将请求数据转换成功 formdata 接收格式
+          headers['Content-Type'] = 'application/x-www-form-urlencoded'
+          return stringify(data)
+        }
+      ]
+    }
+  ).then(res => {
+    localStorage.setItem('token', res.data.token || getQueryVariable('token'))
+  })
+}
+
+// 将参数转换成功 formdata 接收格式
+function stringify (data) {
+  let ret = ''
+  for (const it in data) {
+    ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
+  }
+  ret = ret.substring(0, ret.lastIndexOf('&'))
+  return ret
+}
+
+// 格式化日期
+function formatDate (time) {
+  let date = time ? new Date(Number(time)) : new Date();
+  let Y = date.getFullYear() + '-';
+  let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+  let D = date.getDate() < 10 ? '0' + date.getDate() + ' ' : date.getDate() + ' ';
+  let h = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':';
+  let m = date.getMinutes() < 10 ? '0' + date.getMinutes() + ':' : date.getMinutes() + ':';
+  let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
+  return Y + M + D + h + m + s;
+}

+ 12 - 0
manpowerPort/js/zhb.js

@@ -0,0 +1,12 @@
+let c1 = [
+  [55.05, 46.82, 52.82, 61.2, 38.48, 30.64, 117.48, 27.09, 28.7, 14.27, 25.92, 12.6, 44.66, 138.83, 56.38, 26.42, 21.58, 17.18],
+  [34, 17, 23, 26, 2, 7, 2896, 24, 15, -33, 10, -38, 12, 43, -7, 6, 56, 121],
+  50.13,
+  69.4
+]
+let c2 = [
+  // [8205410, 14715548, 2568135, 5445393, 886982, 261380, 13345, 384646, 217328, 102553, 886750, 51326, 1357108, 1504393, 99042, 313161, 693, 6361],
+  // [2, 2125, 835, 450, 34, 476, 190, 225, 37, 46, 78, 199, 281, 164, 86, 59, 12, 26]
+  [145, 88, 58, 70, 8, 33, 98, 21, 24, -470, 69, -185, 19, 33, -4, 27, 76, 107],
+  [80.16, 58.04, 115, 48.61, 26.9, 24.16, -8.02, 44.94, 17.05, -54.75, 25.66, -75.02, 67.99, 324.15, 149.79, 44.86, -142.59, 5.82]
+]

文件差异内容过多而无法显示
+ 1 - 0
manpowerPort/libs/axios.min.js


文件差异内容过多而无法显示
+ 0 - 0
manpowerPort/libs/datav.min.js


+ 227 - 0
manpowerPort/libs/echarts-tooltip-carousel.js

@@ -0,0 +1,227 @@
+/**
+ * Created by chengwb on 2016/9/3.
+ */
+(function (global) {
+  global.tools = global.tools || {};
+
+  /**
+   * echarts tooltip轮播
+   * @param chart ECharts实例
+   * @param chartOption echarts的配置信息
+   * @param options object 选项
+   * {
+   *  interval    轮播时间间隔,单位毫秒,默认为2000
+   *  loopSeries  boolean类型,默认为false。
+   *              true表示循环所有series的tooltip,false则显示指定seriesIndex的tooltip
+   * 	seriesIndex 默认为0,指定某个系列(option中的series索引)循环显示tooltip,
+   * 	            当loopSeries为true时,从seriesIndex系列开始执行。
+   *  updateData  自定义更新数据的函数,默认为null;
+   *              用于类似于分页的效果,比如总数据有20条,chart一次只显示5条,全部数据可以分4次显示。
+   * }
+   * @returns {{clearLoop: clearLoop}}
+   */
+  tools.loopShowTooltip = function (chart, chartOption, options) {
+    let defaultOptions = {
+      interval: 2000,
+      loopSeries: false,
+      seriesIndex: 0,
+      updateData: null
+    };
+
+    if (!chart || !chartOption) {
+      return;
+    }
+
+    let dataIndex = 0; // 数据索引,初始化为-1,是为了判断是否是第一次执行
+    let seriesIndex = 0; // 系列索引
+    let timeTicket = 0;
+    let seriesLen = chartOption.series.length; // 系列个数
+    let dataLen = 0; // 某个系列数据个数
+    let chartType; // 系列类型
+    let first = true;
+    let lastShowSeriesIndex = 0;
+    let lastShowDataIndex = 0;
+    if (seriesLen === 0) {
+      return;
+    }
+
+    //待处理列表
+    //不循环series时seriesIndex指定显示tooltip的系列,不指定默认为0,指定多个则默认为第一个
+    //循环series时seriesIndex指定循环的series,不指定则从0开始循环所有series,指定单个则相当于不循环,指定多个
+    //要不要添加开始series索引和开始的data索引?
+
+    if (options) {
+      options.interval = options.interval || defaultOptions.interval;
+      options.loopSeries = options.loopSeries || defaultOptions.loopSeries;
+      options.seriesIndex = options.seriesIndex || defaultOptions.seriesIndex;
+      options.updateData = options.updateData || defaultOptions.updateData;
+    } else {
+      options = defaultOptions;
+    }
+
+    //如果设置的seriesIndex无效,则默认为0
+    if (options.seriesIndex < 0 || options.seriesIndex >= seriesLen) {
+      seriesIndex = 0;
+    } else {
+      seriesIndex = options.seriesIndex;
+    }
+
+    /**
+     * 清除定时器
+     */
+    function clearLoop() {
+      if (timeTicket) {
+        clearInterval(timeTicket);
+        timeTicket = 0;
+      }
+      chart.off('mousemove', stopAutoShow);
+      zRender.off('mousemove', zRenderMouseMove);
+      zRender.off('globalout', zRenderGlobalOut);
+    }
+
+    /**
+     * 取消高亮
+     */
+    function cancelHighlight() {
+      /**
+       * 如果dataIndex为0表示上次系列完成显示,如果是循环系列,且系列索引为0则上次是seriesLen-1,否则为seriesIndex-1;
+       * 如果不是循环系列,则就是当前系列;
+       * 如果dataIndex>0则就是当前系列。
+       */
+      let tempSeriesIndex = dataIndex === 0 ?
+        (options.loopSeries ?
+          (seriesIndex === 0 ? seriesLen - 1 : seriesIndex - 1)
+          : seriesIndex)
+        : seriesIndex;
+      let tempType = chartOption.series[tempSeriesIndex].type;
+
+      if (tempType === 'pie' || tempType === 'radar') {
+        chart.dispatchAction({
+          type: 'downplay',
+          seriesIndex: lastShowSeriesIndex,
+          dataIndex: lastShowDataIndex
+        });//wait 系列序号为0且循环系列,则要判断上次的系列类型是否是pie、radar
+      }
+    }
+
+    /**
+     * 自动轮播tooltip
+     */
+    function autoShowTip() {
+      let invalidSeries = 0;
+      let invalidData = 0;
+
+      function showTip() {
+        //判断是否更新数据
+        if (dataIndex === 0 && !first && typeof options.updateData === "function") {
+          options.updateData();
+          chart.setOption(chartOption);
+        }
+
+        let series = chartOption.series;
+        let currSeries = series[seriesIndex];
+        if (!series || series.length === 0 ||
+          !currSeries || !currSeries.type || !currSeries.data ||
+          !currSeries.data.length) {
+          return;
+        }
+        chartType = currSeries.type; // 系列类型
+        dataLen = currSeries.data.length; // 某个系列的数据个数
+
+        let tipParams = {seriesIndex: seriesIndex};
+        switch (chartType) {
+          case 'pie':
+          case 'map':
+          case 'chord':
+            tipParams.name = currSeries.data[dataIndex].name;
+            break;
+          case 'radar': // 雷达图
+            tipParams.seriesIndex = seriesIndex;
+            tipParams.dataIndex = dataIndex;
+            break;
+          default:
+            tipParams.dataIndex = dataIndex;
+            break;
+        }
+
+        if (chartType === 'pie' || chartType === 'radar') {
+          if (!first) {
+            cancelHighlight();
+          }
+
+          // 高亮当前图形
+          chart.dispatchAction({
+            type: 'highlight',
+            seriesIndex: seriesIndex,
+            dataIndex: dataIndex
+          });
+        }
+
+        // 显示 tooltip
+        tipParams.type = 'showTip';
+
+        // 防止updateData时先处理tooltip后刷新数据导出tooltip显示不正确
+        setTimeout(() => {
+          chart.dispatchAction(tipParams);
+        }, 0);
+
+        lastShowSeriesIndex = seriesIndex;
+        lastShowDataIndex = dataIndex;
+        dataIndex = (dataIndex + 1) % dataLen;
+        if (options.loopSeries && dataIndex === 0) { // 数据索引归0表示当前系列数据已经循环完
+          invalidData = 0;
+          seriesIndex = (seriesIndex + 1) % seriesLen;
+          if (seriesIndex === options.seriesIndex) {
+            invalidSeries = 0;
+          }
+        }
+
+        first = false;
+      }
+
+      showTip();
+      timeTicket = setInterval(showTip, options.interval);
+    }
+
+    // 关闭轮播
+    function stopAutoShow() {
+      if (timeTicket) {
+        clearInterval(timeTicket);
+        timeTicket = 0;
+
+        if (chartType === 'pie' || chartType === 'radar') {
+          cancelHighlight();
+        }
+      }
+    }
+
+    let zRender = chart.getZr();
+
+    function zRenderMouseMove(param) {
+      if (param.event) {
+        //阻止canvas上的鼠标移动事件冒泡
+        param.event.cancelBubble = true;
+      }
+
+      stopAutoShow();
+    }
+
+    // 离开echarts图时恢复自动轮播
+    function zRenderGlobalOut() {
+      if (!timeTicket) {
+        autoShowTip();
+      }
+    }
+
+    // 鼠标在echarts图上时停止轮播
+    chart.on('mousemove', stopAutoShow);
+    zRender.on('mousemove', zRenderMouseMove);
+    zRender.on('globalout', zRenderGlobalOut);
+
+    autoShowTip();
+
+    return {
+      clearLoop: clearLoop
+    };
+  };
+})(window);

文件差异内容过多而无法显示
+ 21 - 0
manpowerPort/libs/echarts.min.js


文件差异内容过多而无法显示
+ 0 - 0
manpowerPort/libs/element-ui@2.15.9.js


文件差异内容过多而无法显示
+ 15 - 0
manpowerPort/libs/lodash.min.js


文件差异内容过多而无法显示
+ 10 - 0
manpowerPort/libs/vue@2.7.10.js


二进制
manpowerPort/login/fonts/element-icons.woff


二进制
manpowerPort/login/images/accounts.png


二进制
manpowerPort/login/images/back.png


二进制
manpowerPort/login/images/orthogon.png


二进制
manpowerPort/login/images/password.png


二进制
manpowerPort/login/images/register.png


+ 42 - 0
manpowerPort/login/js/login.js

@@ -0,0 +1,42 @@
+let app = new Vue({
+  el: '#app',
+  data () {
+    return {
+      accounts:'',
+      password:'',
+      userList:[
+        {accounts:'123',password:'123'},
+        {accounts:'admin',password:'123456'}
+      ]
+    }
+  },
+  created () {
+  },
+  beforeDestroy () {
+  },
+  mounted () {
+
+  },
+  methods: {
+    goIndex(){
+      let that = this
+      for(let a = 0;a<this.userList.length;a++){
+        if(this.userList[a].accounts == this.accounts){
+          if(this.userList[a].password == this.password){
+            this.$message({
+              message: '登录成功',
+              type: 'success'
+            });
+            sessionStorage.setItem('accounts',this.accounts);
+            sessionStorage.setItem('password',this.password);
+            setTimeout(()=>{
+              window.location.href = '../index.html'
+            },1000)
+            return
+          }
+        }
+      }
+      this.$message.error('用户名不存在或密码错误');
+    }
+   },
+})

+ 190 - 0
manpowerPort/login/js/request.js

@@ -0,0 +1,190 @@
+//如果部署在同域名的话可以直接取cookie,后端需 HttpOnly 设置成否
+// var cookie_name = 'wolfking.jeesharp.session.id'
+// getCookie(cookie_name)
+
+// 是否本地环境
+function isLocalEnv () {
+  let domain = window.location.origin
+  if (['http://127.0.0.1:5500', 'file://'].includes(domain)) {
+    return true
+  } else {
+    return false
+  }
+}
+
+// api 前缀
+function getApiUrl () {
+  // 为线上时
+  if (!isLocalEnv()) {
+    return window.location.origin
+  } else {
+    // 本地时
+    // return 'http://sxtc.com:10002'        // 内网环境
+    // return 'http://10.8.8.100:10002'   // 内网环境
+    // return 'http://1.71.170.214:18080' // 线上环境
+    // return 'http://szxm.sxcig.com:8012' // 线上环境
+    // return 'http://10.0.0.27:8080'     // 超哥环境
+    // return 'http://10.0.0.22:8080'     // 闫敏的环境
+    // return 'http://10.0.0.8:8080' // 祥慧的环境
+    // return 'http://10.0.0.115:8080'    // 王蒙的环境
+    return 'http://10.0.0.82:8080'
+  }
+}
+// websocket 前缀
+function getWsUrl () {
+  let prefix = location.protocol === 'https:' ? 'wss://' : 'ws://'
+  // 为线上时
+  if (!isLocalEnv()) {
+    return prefix + window.location.host
+  } else {
+    return prefix + 'sxtc.com:10002'
+    // return prefix + '10.0.0.115:8080'
+  }
+}
+
+// minio 前缀
+function getMinioUrl () {
+  let isProduction = location.origin.indexOf('1.71.170.214') != -1
+  if (isProduction) {
+    return 'http://1.71.170.214:19000/constr-documents/'
+  } else {
+    return 'http://10.8.8.191:9000/constr-documents-test/'
+  }
+}
+
+/** axios封装
+ * 请求拦截、相应拦截、错误统一处理
+ */
+const httpRequest = axios.create({
+  baseURL: 'http://10.0.0.82:8080', // 测试环境
+  timeout: 3 * 60 * 1000, // 3分钟等待
+  withCredentials: true // 携带cookie
+})
+
+// 请求拦截器
+// httpRequest.interceptors.request.use(
+//   function (config) {
+//     if (!isLocalEnv()) {
+//       if (getQueryVariable('token')) {
+//         config.headers['access_token'] = getQueryVariable('token')
+//       }
+//     } else {
+//       config.headers['access_token'] = localStorage.getItem('token')
+//       // config.headers['access_token'] = '4b3ed521-f509-48d9-b907-ab127479df41'
+//     }
+//     // 上传文件
+//     if (config.url == '/apiSys/oss/upload') {
+//       config.headers['Content-Type'] = 'multipart/form-data'
+//     } else {
+//       config.headers['Content-Type'] = 'application/json'
+//     }
+//     return config
+//   },
+//   function (error) {
+//     return Promise.reject(error)
+//   }
+// )
+
+//响应拦截
+httpRequest.interceptors.response.use(
+  function (response) {
+    const res = response.data
+    // if (res.code == 201) {
+    //   this.ELEMENT.Message.error(res.msg)
+    //   if (!isLocalEnv()) {
+    //     // 跳登录页
+    //     window.location = window.location.origin
+    //   } else {
+    //     localEnvLogin()
+    //   }
+    // }
+    return response
+  },
+  function (error) {
+    this.ELEMENT.Message.error(error.message)
+    return Promise.reject(error)
+  }
+)
+
+function get (url, params) {
+  return new Promise((resolve, reject) => {
+    httpRequest
+      .get(url, { params: params })
+      .then(res => {
+        resolve(res.data)
+      })
+      .catch(err => {
+        reject(err.data)
+      })
+  })
+}
+// qs.stringify(data)
+function post (url, data, config) {
+  return new Promise((resolve, reject) => {
+    httpRequest
+      .post(url, data, config)
+      .then(res => {
+        resolve(res.data)
+      })
+      .catch(err => {
+        reject(err)
+      })
+  })
+}
+
+function postFile (url, blob) {
+  return new Promise((resolve, reject) => {
+    let formdata = new FormData()
+    formdata.append('multipartFile', blob)
+    httpRequest
+      .post(url, formdata)
+      .then(res => {
+        resolve(res.data)
+      })
+      .catch(err => {
+        reject(err)
+      })
+  })
+}
+
+function localEnvLogin () {
+  post(
+    '/apiSys/login',
+    {
+      username: 'admin',
+      password: '1q2w3e4r5t'
+    },
+    {
+      transformRequest: [
+        function (data, headers) {
+          // 将请求数据转换成功 formdata 接收格式
+          headers['Content-Type'] = 'application/x-www-form-urlencoded'
+          return stringify(data)
+        }
+      ]
+    }
+  ).then(res => {
+    localStorage.setItem('token', res.data.token || getQueryVariable('token'))
+  })
+}
+
+// 将参数转换成功 formdata 接收格式
+function stringify (data) {
+  let ret = ''
+  for (const it in data) {
+    ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
+  }
+  ret = ret.substring(0, ret.lastIndexOf('&'))
+  return ret
+}
+// 格式化日期
+function formatDate (time) {
+  let date = time ? new Date(Number(time)) : new Date();
+  let Y = date.getFullYear() + '-';
+  let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+  let D = date.getDate() < 10 ? '0' + date.getDate() + ' ' : date.getDate() + ' ';
+  let h = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':';
+  let m = date.getMinutes() < 10 ? '0' + date.getMinutes() + ':' : date.getMinutes() + ':';
+  let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
+  return Y + M + D + h + m + s;
+}

文件差异内容过多而无法显示
+ 1 - 0
manpowerPort/login/libs/axios.min.js


文件差异内容过多而无法显示
+ 0 - 0
manpowerPort/login/libs/datav.min.js


+ 227 - 0
manpowerPort/login/libs/echarts-tooltip-carousel.js

@@ -0,0 +1,227 @@
+/**
+ * Created by chengwb on 2016/9/3.
+ */
+(function (global) {
+  global.tools = global.tools || {};
+
+  /**
+   * echarts tooltip轮播
+   * @param chart ECharts实例
+   * @param chartOption echarts的配置信息
+   * @param options object 选项
+   * {
+   *  interval    轮播时间间隔,单位毫秒,默认为2000
+   *  loopSeries  boolean类型,默认为false。
+   *              true表示循环所有series的tooltip,false则显示指定seriesIndex的tooltip
+   * 	seriesIndex 默认为0,指定某个系列(option中的series索引)循环显示tooltip,
+   * 	            当loopSeries为true时,从seriesIndex系列开始执行。
+   *  updateData  自定义更新数据的函数,默认为null;
+   *              用于类似于分页的效果,比如总数据有20条,chart一次只显示5条,全部数据可以分4次显示。
+   * }
+   * @returns {{clearLoop: clearLoop}}
+   */
+  tools.loopShowTooltip = function (chart, chartOption, options) {
+    let defaultOptions = {
+      interval: 2000,
+      loopSeries: false,
+      seriesIndex: 0,
+      updateData: null
+    };
+
+    if (!chart || !chartOption) {
+      return;
+    }
+
+    let dataIndex = 0; // 数据索引,初始化为-1,是为了判断是否是第一次执行
+    let seriesIndex = 0; // 系列索引
+    let timeTicket = 0;
+    let seriesLen = chartOption.series.length; // 系列个数
+    let dataLen = 0; // 某个系列数据个数
+    let chartType; // 系列类型
+    let first = true;
+    let lastShowSeriesIndex = 0;
+    let lastShowDataIndex = 0;
+    if (seriesLen === 0) {
+      return;
+    }
+
+    //待处理列表
+    //不循环series时seriesIndex指定显示tooltip的系列,不指定默认为0,指定多个则默认为第一个
+    //循环series时seriesIndex指定循环的series,不指定则从0开始循环所有series,指定单个则相当于不循环,指定多个
+    //要不要添加开始series索引和开始的data索引?
+
+    if (options) {
+      options.interval = options.interval || defaultOptions.interval;
+      options.loopSeries = options.loopSeries || defaultOptions.loopSeries;
+      options.seriesIndex = options.seriesIndex || defaultOptions.seriesIndex;
+      options.updateData = options.updateData || defaultOptions.updateData;
+    } else {
+      options = defaultOptions;
+    }
+
+    //如果设置的seriesIndex无效,则默认为0
+    if (options.seriesIndex < 0 || options.seriesIndex >= seriesLen) {
+      seriesIndex = 0;
+    } else {
+      seriesIndex = options.seriesIndex;
+    }
+
+    /**
+     * 清除定时器
+     */
+    function clearLoop() {
+      if (timeTicket) {
+        clearInterval(timeTicket);
+        timeTicket = 0;
+      }
+      chart.off('mousemove', stopAutoShow);
+      zRender.off('mousemove', zRenderMouseMove);
+      zRender.off('globalout', zRenderGlobalOut);
+    }
+
+    /**
+     * 取消高亮
+     */
+    function cancelHighlight() {
+      /**
+       * 如果dataIndex为0表示上次系列完成显示,如果是循环系列,且系列索引为0则上次是seriesLen-1,否则为seriesIndex-1;
+       * 如果不是循环系列,则就是当前系列;
+       * 如果dataIndex>0则就是当前系列。
+       */
+      let tempSeriesIndex = dataIndex === 0 ?
+        (options.loopSeries ?
+          (seriesIndex === 0 ? seriesLen - 1 : seriesIndex - 1)
+          : seriesIndex)
+        : seriesIndex;
+      let tempType = chartOption.series[tempSeriesIndex].type;
+
+      if (tempType === 'pie' || tempType === 'radar') {
+        chart.dispatchAction({
+          type: 'downplay',
+          seriesIndex: lastShowSeriesIndex,
+          dataIndex: lastShowDataIndex
+        });//wait 系列序号为0且循环系列,则要判断上次的系列类型是否是pie、radar
+      }
+    }
+
+    /**
+     * 自动轮播tooltip
+     */
+    function autoShowTip() {
+      let invalidSeries = 0;
+      let invalidData = 0;
+
+      function showTip() {
+        //判断是否更新数据
+        if (dataIndex === 0 && !first && typeof options.updateData === "function") {
+          options.updateData();
+          chart.setOption(chartOption);
+        }
+
+        let series = chartOption.series;
+        let currSeries = series[seriesIndex];
+        if (!series || series.length === 0 ||
+          !currSeries || !currSeries.type || !currSeries.data ||
+          !currSeries.data.length) {
+          return;
+        }
+        chartType = currSeries.type; // 系列类型
+        dataLen = currSeries.data.length; // 某个系列的数据个数
+
+        let tipParams = {seriesIndex: seriesIndex};
+        switch (chartType) {
+          case 'pie':
+          case 'map':
+          case 'chord':
+            tipParams.name = currSeries.data[dataIndex].name;
+            break;
+          case 'radar': // 雷达图
+            tipParams.seriesIndex = seriesIndex;
+            tipParams.dataIndex = dataIndex;
+            break;
+          default:
+            tipParams.dataIndex = dataIndex;
+            break;
+        }
+
+        if (chartType === 'pie' || chartType === 'radar') {
+          if (!first) {
+            cancelHighlight();
+          }
+
+          // 高亮当前图形
+          chart.dispatchAction({
+            type: 'highlight',
+            seriesIndex: seriesIndex,
+            dataIndex: dataIndex
+          });
+        }
+
+        // 显示 tooltip
+        tipParams.type = 'showTip';
+
+        // 防止updateData时先处理tooltip后刷新数据导出tooltip显示不正确
+        setTimeout(() => {
+          chart.dispatchAction(tipParams);
+        }, 0);
+
+        lastShowSeriesIndex = seriesIndex;
+        lastShowDataIndex = dataIndex;
+        dataIndex = (dataIndex + 1) % dataLen;
+        if (options.loopSeries && dataIndex === 0) { // 数据索引归0表示当前系列数据已经循环完
+          invalidData = 0;
+          seriesIndex = (seriesIndex + 1) % seriesLen;
+          if (seriesIndex === options.seriesIndex) {
+            invalidSeries = 0;
+          }
+        }
+
+        first = false;
+      }
+
+      showTip();
+      timeTicket = setInterval(showTip, options.interval);
+    }
+
+    // 关闭轮播
+    function stopAutoShow() {
+      if (timeTicket) {
+        clearInterval(timeTicket);
+        timeTicket = 0;
+
+        if (chartType === 'pie' || chartType === 'radar') {
+          cancelHighlight();
+        }
+      }
+    }
+
+    let zRender = chart.getZr();
+
+    function zRenderMouseMove(param) {
+      if (param.event) {
+        //阻止canvas上的鼠标移动事件冒泡
+        param.event.cancelBubble = true;
+      }
+
+      stopAutoShow();
+    }
+
+    // 离开echarts图时恢复自动轮播
+    function zRenderGlobalOut() {
+      if (!timeTicket) {
+        autoShowTip();
+      }
+    }
+
+    // 鼠标在echarts图上时停止轮播
+    chart.on('mousemove', stopAutoShow);
+    zRender.on('mousemove', zRenderMouseMove);
+    zRender.on('globalout', zRenderGlobalOut);
+
+    autoShowTip();
+
+    return {
+      clearLoop: clearLoop
+    };
+  };
+})(window);

文件差异内容过多而无法显示
+ 21 - 0
manpowerPort/login/libs/echarts.min.js


文件差异内容过多而无法显示
+ 0 - 0
manpowerPort/login/libs/element-ui@2.15.9.js


文件差异内容过多而无法显示
+ 10 - 0
manpowerPort/login/libs/vue@2.7.10.js


+ 46 - 0
manpowerPort/login/login.html

@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <!-- 引入样式 -->
+  <link rel="stylesheet" href="./styles/element-ui@2.15.9.css" />
+  <link rel="stylesheet" href="./styles/login.css" />
+  <!-- 引入js -->
+  <script src="./libs/vue@2.7.10.js"></script>
+  <script src="./libs/datav.min.js"></script>
+  <script src="./libs/echarts.min.js"></script>
+  <script src="./libs/element-ui@2.15.9.js"></script>
+  <script src="./libs/axios.min.js"></script>
+  <script src="./js/request.js"></script>
+  <script src="./libs/echarts-tooltip-carousel.js"></script>
+</head>
+
+<body>
+  <div id="app">
+    <dv-full-screen-container>
+      <div class="main">
+        <span class="title">国有资本数智化平台人力资源系统</span>
+        <div class="login">
+          <div>平 台 登 录</div>
+          <div class="card">
+            <div class="" style="margin-bottom: 20px;">
+              <img src="./images/accounts.png" alt="" >
+              <el-input v-model="accounts" placeholder="请输入用户名" style="width:80%"></el-input>
+            </div>
+            <div class="">
+              <img src="./images/password.png" alt="" >
+              <el-input type="password" v-model="password" placeholder="请输入密码" style="width:80%"></el-input>
+            </div>
+          </div>
+          <div type="primary" class="loginButton" @click="goIndex">登录</div>
+        </div>
+      </div>
+    </dv-full-screen-container>
+  </div>
+  <script src="./js/login.js"></script>
+</body>
+
+</html>

+ 751 - 0
manpowerPort/login/styles/common.css

@@ -0,0 +1,751 @@
+*,
+*:before,
+*:after {
+  padding: 0;
+  margin: 0;
+  box-sizing: border-box;
+}
+html,
+body {
+  height: 100%;
+  font-size: 13px;
+  background-color: #f3f3f3;
+  font-family: 'Microsoft YaHei', 'Helvetica Neue', Helvetica, 'PingFang SC',
+    'Hiragino Sans GB', Arial, sans-serif;
+  /* overflow: hidden; */
+}
+
+.flex {
+  display: flex;
+}
+.flex1 {
+  flex: 1;
+}
+.flex-around {
+  display: flex;
+  justify-content: space-around;
+}
+.flex-between {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.flex-end {
+  display: flex;
+  justify-content: flex-end;
+}
+.flex-align-center {
+  display: flex;
+  align-items: center;
+}
+.text-center {
+  text-align: center;
+}
+.font12 {
+  font-size: 12px;
+}
+.main-color {
+  color: #228af5;
+}
+.danger-color {
+  color: #f56c6c;
+}
+.btm10 {
+  margin-bottom: 10px;
+}
+.btm20 {
+  margin-bottom: 20px;
+}
+a {
+  text-decoration: none;
+  cursor: pointer;
+}
+.dialog-full-icon {
+  padding: 5px;
+  color: #fff;
+  position: absolute;
+  right: 50px;
+  top: 18px;
+  font-size: 16px;
+  cursor: pointer;
+}
+
+[v-cloak] {
+  display: none;
+}
+#app {
+  height: 100vh;
+}
+/* 头部 */
+.header {
+  height: 77px;
+  flex: 0 0 auto;
+  background-color: #fff;
+  display: flex;
+}
+.header-item {
+  padding: 15px;
+  text-align: center;
+  color: #333;
+  cursor: pointer;
+  position: relative;
+}
+.header-item p {
+  width: 150%;
+  margin-left: -25%;
+}
+.header-item:hover {
+  background-color: #cae5fb;
+  color: #228af5;
+}
+.header-item.active {
+  background-color: #cae5fb;
+  color: #228af5;
+}
+.nav-dropdown {
+  display: block;
+  font-size: 13px;
+  color: #333;
+}
+
+#designer {
+  width: 100%;
+  height: 100%;
+}
+.main-wrap {
+  height: calc(100vh - 77px);
+  padding: 10px 0;
+  flex: 1;
+}
+.main {
+  display: flex;
+  padding: 0px;
+  height: 100%;
+  margin: 0 10px;
+  background: #fff;
+  border: 1px solid #e5e5e5;
+}
+/* 左侧 */
+.aside {
+  height: 100%;
+  background-color: #fff;
+  border: 1px solid #e5e5e5;
+}
+.el-tree > .el-tree-node {
+  display: inline-block;
+  min-width: 100%;
+}
+
+/* el-tree 操作弹出 */
+.contextmenu__item {
+  display: block;
+  line-height: 34px;
+  text-align: left;
+  padding: 0 20px;
+}
+.contextmenu__item:not(:last-child) {
+  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+}
+.menu {
+  position: fixed;
+  background-color: #fff;
+  font-size: 14px;
+  color: #444040;
+  border-radius: 4px;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+  white-space: nowrap;
+  z-index: 1000;
+}
+.contextmenu__item:hover {
+  cursor: pointer;
+  background: #66b1ff;
+  border-color: #66b1ff;
+  color: #fff;
+}
+.main > div.left {
+  flex: 1;
+  overflow: hidden;
+  padding: 5px;
+}
+.main > div.right {
+  flex: 1;
+  overflow: hidden;
+  padding: 5px;
+  border-left: 1px solid #ccc;
+}
+
+.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
+  background-color: #e8f3fe;
+}
+/* 公共弹框样式 */
+.el-dialog {
+  border-radius: 8px;
+  overflow: hidden;
+}
+.el-dialog__header {
+  padding: 15px;
+  background-color: #228af5;
+}
+
+.el-dialog__header .el-dialog__title {
+  color: #fff;
+  font-size: 16px;
+}
+.el-dialog__headerbtn .el-dialog__close {
+  color: #fff;
+  font-size: 20px;
+}
+.el-dialog__body {
+  padding: 15px;
+  border-top: 1px solid #f1f1f1;
+}
+.el-form-item--mini.el-form-item,
+.el-form-item--small.el-form-item {
+  margin-bottom: 15px;
+}
+.build-modal .el-dialog__body {
+  padding: 0;
+}
+.build-modal .el-card {
+  margin-bottom: 10px;
+}
+.build-modal .el-card p {
+  line-height: 1.6;
+}
+.build-modal .el-form {
+  flex: 0 0 300px;
+  margin-right: 30px;
+}
+.build-modal .el-card__header {
+  padding: 10px;
+  background-color: whitesmoke;
+}
+.build-modal .el-card__body {
+  padding: 15px;
+}
+.inline-inputs .el-form-item__content {
+  display: flex;
+  justify-content: space-between;
+}
+.inline-inputs .el-form-item__content span {
+  margin: 0 20px;
+}
+
+.select-box .el-radio-group {
+  display: flex;
+  flex-direction: column;
+  margin-top: 15px;
+}
+.select-box .el-checkbox-group {
+  display: flex;
+  flex-direction: column;
+}
+.select-box .el-radio-group label {
+  margin-bottom: 20px;
+}
+.select-box .el-checkbox-group label {
+  margin-bottom: 15px;
+}
+.nav-icon {
+  display: inline-block;
+  width: 35px;
+  height: 35px;
+  margin-bottom: 3px;
+}
+.nav-icon1 {
+  background: url(../images/navs/1.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon2 {
+  background: url(../images/navs/2.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon3 {
+  background: url(../images/navs/3.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon4 {
+  background: url(../images/navs/4.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon5 {
+  background: url(../images/navs/5.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon6 {
+  background: url(../images/navs/6.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon7 {
+  background: url(../images/navs/7.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon8 {
+  background: url(../images/navs/8.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon9 {
+  background: url(../images/navs/9.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon10 {
+  background: url(../images/navs/10.png) no-repeat;
+  background-size: 100% 100%;
+}
+
+.nav-icon11 {
+  background: url(../images/navs/11.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon12 {
+  background: url(../images/navs/12.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon13 {
+  background: url(../images/navs/13.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon14 {
+  background: url(../images/navs/14.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon15 {
+  background: url(../images/navs/15.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon16 {
+  background: url(../images/navs/16.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon17 {
+  background: url(../images/navs/17.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon18 {
+  background: url(../images/navs/18.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon19 {
+  background: url(../images/navs/19.png) no-repeat;
+  background-size: 100% 100%;
+}
+
+.tree-icon {
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  margin-right: 5px;
+  vertical-align: -2px;
+}
+.tree-icon01 {
+  background: url(../images/tree/project-1@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon02 {
+  background: url(../images/tree/project-2@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon03 {
+  background: url(../images/tree/project-3@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon1,
+.tree-icon18,
+.tree-icon20,
+.tree-icon22 {
+  background: url(../images/tree/project@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon2 {
+  background: url(../images/tree/class@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon3 {
+  background: url(../images/tree/sub-class@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon4 {
+  background: url(../images/tree/sub-class-child@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon5 {
+  background: url(../images/tree/form@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon6,
+.tree-icon17,
+.tree-icon19,
+.tree-icon21 {
+  background: url(../images/tree/floor@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon7 {
+  background: url(../images/tree/build@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon8 {
+  background: url(../images/tree/form8@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon9 {
+  background: url(../images/tree/floor@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon10 {
+  background: url(../images/tree/project@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon11 {
+  background: url(../images/tree/tong1.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon12 {
+  background: url(../images/tree/tong2.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon13 {
+  background: url(../images/tree/tong3.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon14 {
+  background: url(../images/tree/tong4.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon15 {
+  background: url(../images/tree/tong5.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon16 {
+  background: url(../images/tree/tong6.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon100 {
+  background: url(../images/tree/tong7.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon101 {
+  background: url(../images/tree/tong8.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon102 {
+  background: url(../images/tree/tong9.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon103 {
+  background: url(../images/tree/tong10.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon104 {
+  background: url(../images/tree/tong1.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon105 {
+  background: url(../images/tree/tong2.png) no-repeat;
+  background-size: 100% 100%;
+}
+
+.tree-icon-company {
+  background: url(../images/icons/company.png) no-repeat;
+  background-size: 110% 110%;
+}
+
+.home-content {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  flex: 1;
+}
+.home-content h1 {
+  margin-bottom: 50px;
+}
+.home-content img {
+  width: 80%;
+  height: 50%;
+}
+.dialog-nowrap {
+  pointer-events: none;
+}
+.dialog-nowrap .el-dialog {
+  pointer-events: auto;
+}
+.el-drawer__wrapper {
+  pointer-events: none;
+}
+.el-drawer__wrapper .el-drawer {
+  pointer-events: auto;
+}
+/* 新建表格tab ...限制宽度 */
+.sheet-modal .el-tabs__item {
+  max-width: 400px;
+  overflow: hidden;
+  padding: 0 15px 0 10px;
+  text-overflow: ellipsis;
+}
+/* 使用element 滚动条样式 */
+::-webkit-scrollbar {
+  z-index: 11;
+  width: 6px;
+  height: 6px;
+}
+::-webkit-scrollbar-thumb {
+  border-radius: 5px;
+  width: 6px;
+  background: #b4bccc;
+}
+::-webkit-scrollbar-corner {
+  background: #fff;
+}
+::-webkit-scrollbar-track {
+  background: #fff;
+}
+::-webkit-scrollbar-track-piece {
+  background: #fff;
+  width: 6px;
+}
+.ribbon-button-lock {
+  background-image: url('../images/icons/lock.png');
+  background-size: 100% 100% !important;
+}
+.ribbon-button-unlock {
+  background-image: url('../images/icons/unlock.png');
+  background-size: 100% 100% !important;
+}
+.ribbon-button-tags {
+  background-image: url('../images/icons/tags.png');
+  background-size: 100% 100% !important;
+}
+.ribbon-button-check {
+  background-image: url('../images/icons/check.png');
+  background-size: 100% 100% !important;
+}
+.ribbon-button-clear-source {
+  background-image: url('../images/icons/clear.png');
+  background-size: 100% 100% !important;
+}
+.ribbon-button-select {
+  background-image: url('../images/icons/select.png');
+  background-size: 100% 100% !important;
+}
+
+.gc-ribbon-bar .ribbon-button-item.ribbon-bigbutton {
+  min-width: 40px;
+  max-width: 60px;
+  min-height: 0;
+}
+.grid-box {
+  display: flex;
+  flex-wrap: wrap;
+  border-left: 1px solid #ccc;
+}
+.grid-box > div {
+  width: 30px;
+  height: 35px;
+  text-align: center;
+  line-height: 35px;
+  color: #000;
+  border-bottom: 1px solid #ccc;
+  border-right: 1px solid #ccc;
+  border-top: 1px solid #ccc;
+  cursor: pointer;
+  font-size: 18px;
+}
+.grid-box > div:nth-child(n + 21) {
+  border-top: none;
+}
+.grid-box > div.checked {
+  background-color: #409eff;
+  color: #f1f1f1;
+}
+
+.char-tab .el-tabs__nav,
+.char-tab .el-tabs__content {
+  max-height: 300px;
+  overflow: auto;
+}
+.char-tab .el-tabs__item {
+  height: 25px;
+  line-height: 25px;
+  font-family: 'chars';
+}
+.char-input .el-input__inner {
+  font-family: 'chars';
+}
+.fonts {
+  font-family: 'chars';
+}
+.char-pop {
+  text-align: center;
+  height: 80px;
+  line-height: 60px;
+  width: 80px;
+  font-size: 60px;
+  font-family: 'chars';
+}
+
+/* 拖拽的线 */
+#box {
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  /* background-color:royalblue; */
+}
+#resize {
+  width: 2px;
+  height: 100%;
+  cursor: w-resize;
+  background-color: #ccc;
+  float: left;
+  position: relative;
+}
+#resize2 {
+  height: 5px;
+  width: 100%;
+  background-color: #ccc;
+  cursor: n-resize;
+  position: relative;
+}
+#left {
+  width: 350px;
+  height: 100%;
+  /* background:skyblue; */
+  float: left;
+  overflow: auto;
+}
+#right {
+  float: right;
+  width: calc(100% - 352px);
+  height: 100%;
+  /* background:tomato; */
+  overflow: auto;
+}
+#top {
+  height: 300px;
+  width: 100%;
+  /* background:skyblue; */
+  overflow: auto;
+}
+
+#bottom {
+  height: calc(100% - 305px);
+  width: 100%;
+  /* background:tomato; */
+  overflow: auto;
+}
+.resImg {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  margin: auto;
+  width: 12px;
+  height: 60px;
+  cursor: pointer;
+}
+#resize2 .resImg {
+  position: absolute;
+  left: 0;
+  right: 0;
+  margin: auto;
+  height: 12px;
+  width: 60px;
+  cursor: pointer;
+}
+.left-tree {
+  flex: 0 0 300px;
+  padding: 10px 10px 10px 0;
+  border: 1px solid #ccc;
+  min-height: 400px;
+  height: 100%;
+  /* margin-right: 15px;
+  border-radius: 5px; */
+  overflow: auto;
+}
+.el-table tbody tr:hover > td {
+  background-color: unset !important;
+}
+.el-table .cell {
+  line-height: 1.2;
+}
+.capacity-cell {
+  background-color: rgb(212, 243, 255);
+  position: relative;
+}
+.capacity-cell:hover .xuan-btn {
+  display: block;
+}
+.xuan-btn {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  margin: auto;
+  right: 0;
+  padding: 4px;
+  display: none;
+}
+.bottom-cell {
+  position: relative;
+  padding-top: 20px !important;
+}
+.inline-input .el-input__inner {
+  padding: 0 4px;
+}
+.scheme-table.el-table .cell {
+  padding: 0 5px;
+  line-height: 1.3;
+}
+.bottom-cell:hover .opration {
+  display: block;
+}
+.opration {
+  position: absolute;
+  top: 0;
+  right: 0;
+  display: block;
+  border: 1px solid #ccc;
+  line-height: 1;
+  display: none;
+}
+.opration i {
+  cursor: pointer;
+  font-size: 14px;
+  color: #409eff;
+  border: 1px solid #409eff;
+}
+.branch-list .el-radio-group {
+  display: flex;
+  flex-wrap: wrap;
+}
+.branch-list .el-radio-group label {
+  flex: 0 0 50%;
+  margin-right: 0px;
+  margin: 6px 0;
+}
+.input-number input::-webkit-outer-spin-button {
+  -webkit-appearance: none;
+}
+.input-number input::-webkit-inner-spin-button {
+  -webkit-appearance: none;
+}
+.input-number input[type='number'] {
+  -moz-appearance: textfield;
+}
+/* table 行内编辑使用 */
+.item_input {
+  display: none;
+}
+.item_input .el-input__inner {
+  padding: 0px 2px;
+  height: 18px;
+  line-height: 18px;
+}
+.text-overflow {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.is-tooltipStyle {
+  max-width: 20%;
+  color: #fff;
+  background-color: #444040;
+}

文件差异内容过多而无法显示
+ 0 - 0
manpowerPort/login/styles/element-ui@2.15.9.css


+ 286 - 0
manpowerPort/login/styles/login.css

@@ -0,0 +1,286 @@
+*,
+*:before,
+*:after {
+  padding: 0;
+  margin: 0;
+  box-sizing: border-box;
+}
+html,
+body {
+  height: 100%;
+  font-size: 14px;
+  background-color: #ecffff;
+  font-family: 'Microsoft YaHei', 'Helvetica Neue', Helvetica, 'PingFang SC',
+    'Hiragino Sans GB', Arial, sans-serif;
+}
+.main {
+  width: 100%;
+  height: 100%;
+  background: url('../images/back.png') center center no-repeat;
+  background-size: 100% 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-direction: column;
+}
+.login {
+  width: 700px;
+  height: 450px;
+  display: grid;
+  grid-template-rows: repeat(3, 1fr);
+  align-items: center;
+  background: url('../images/register.png') center center no-repeat;
+  background-size: 100% 100%;
+}
+.title {
+  background: linear-gradient(-3deg, #99eeff 0%, #99eeff 30%, #ffffff 91%);
+  -webkit-background-clip: text;
+  -webkit-text-fill-color: transparent;
+  font-size: 36px;
+  font-weight: bold;
+  margin-bottom: 30px;
+}
+.loginButton {
+  width: 330px;
+  height: 50px;
+  line-height: 50px;
+  margin: 0 auto;
+  background: url('../images/orthogon.png') center center no-repeat;
+  background-size: 100% 100%;
+  text-align: center;
+  color: #fff;
+}
+.login>div:nth-child(1){
+  height: 50px;
+  line-height: 50px;
+  text-align: center;
+  color: #Fff;
+  font-size: 24px;
+}
+.card{
+  display: flex;
+  justify-content: center;
+  flex-direction: column;
+  align-items: center;
+}
+.card img{
+  width: 21px;
+  height: 23px;
+  margin-right: 10px;
+}
+.card div{
+  width: 70%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  background-color: #263E5F;
+  padding: 3px 0;
+}
+.el-input__inner{
+  background: #263E5F;
+  border: 0;
+  color: #fff;
+
+}
+/* top-[3px] */
+/* z-[100] */
+
+/* 显示隐藏未脱离文档流 */
+.visible {
+  visibility: visible;
+}
+.invisible {
+  visibility: hidden;
+}
+
+/* 内边距 */
+.p-0 {
+  padding: 0px;
+}
+.px-0 {
+  padding-left: 0px;
+  padding-right: 0px;
+}
+.py-0 {
+  padding-top: 0px;
+  padding-bottom: 0px;
+}
+.pt-0 {
+  padding-top: 0px;
+}
+.pr-0 {
+  padding-right: 0px;
+}
+.pb-0 {
+  padding-bottom: 0px;
+}
+.pl-0 {
+  padding-left: 0px;
+}
+/* p-[5px] */
+
+/* 外边距 */
+.m-0 {
+  margin: 0px;
+}
+.mx-0 {
+  margin-left: 0px;
+  margin-right: 0px;
+}
+.my-0 {
+  margin-top: 0px;
+  margin-bottom: 0px;
+}
+.mt-0 {
+  margin-top: 0px;
+}
+.mr-0 {
+  margin-right: 0px;
+}
+.mb-0 {
+  margin-bottom: 0px;
+}
+.ml-0 {
+  margin-left: 0px;
+}
+/* m-[5px] */
+
+/* 宽度 */
+.w-full {
+  width: 100%;
+}
+.w-screen {
+  width: 100vw;
+}
+/* w-[32rem] */
+/* min-w-[50%] */
+/* max-w-[50%] */
+
+/* 高度 */
+.h-full {
+  height: 100%;
+}
+.h-screen {
+  height: 100vh;
+}
+/* h-[32rem] */
+/* min-h-[50%] */
+/* max-h-[32rem] */
+
+/* 字体 */
+.text-xs {
+  font-size: 0.75rem; /* 12px */
+  line-height: 1rem; /* 16px */
+}
+.text-sm {
+  font-size: 0.875rem; /* 14px */
+  line-height: 1.25rem; /* 20px */
+}
+.text-base {
+  font-size: 1rem; /* 16px */
+  line-height: 1.5rem; /* 24px */
+}
+.text-lg {
+  font-size: 1.125rem; /* 18px */
+  line-height: 1.75rem; /* 28px */
+}
+.text-xl {
+  font-size: 1.25rem; /* 20px */
+  line-height: 1.75rem; /* 28px */
+}
+.text-2xl {
+  font-size: 1.5rem; /* 24px */
+  line-height: 2rem; /* 32px */
+}
+.text-3xl {
+  font-size: 1.875rem; /* 30px */
+  line-height: 2.25rem; /* 36px */
+}
+.text-4xl {
+  font-size: 2.25rem; /* 36px */
+  line-height: 2.5rem; /* 40px */
+}
+.text-5xl {
+  font-size: 3rem; /* 48px */
+  line-height: 1;
+}
+.text-6xl {
+  font-size: 3.75rem; /* 60px */
+  line-height: 1;
+}
+.text-7xl {
+  font-size: 4.5rem; /* 72px */
+  line-height: 1;
+}
+.text-8xl {
+  font-size: 6rem; /* 96px */
+  line-height: 1;
+}
+.text-9xl {
+  font-size: 8rem; /* 128px */
+  line-height: 1;
+}
+/* text-[14px] */
+/* 字体粗细font-weight */
+/* font-[1100] */
+/* https://tailwindcss.com/docs/font-weight */
+/* 字体间距letter-spacing */
+/* tracking-[.25em] */
+/* 行高line-height */
+/* leading-[3rem] */
+/* 无列表样式 */
+.list-none {
+  list-style-type: none;
+}
+/* 小圆点 */
+.list-disc {
+  list-style-type: disc;
+}
+/* 数字列表 */
+.list-decimal {
+  list-style-type: decimal;
+}
+.text-left {
+  text-align: left;
+}
+.text-center {
+  text-align: center;
+}
+.text-right {
+  text-align: right;
+}
+/* 所有文本头尾对齐 */
+.text-justify {
+  text-align: justify;
+}
+/* 文本颜色 */
+/* text-[#50d71e] */
+/* https://tailwindcss.com/docs/text-color */
+/* 下划线 */
+.underline {
+  text-decoration-line: underline;
+}
+/* 上划线 */
+.overline {
+  text-decoration-line: overline;
+}
+/* 中划线 */
+.line-through {
+  text-decoration-line: line-through;
+}
+/* 无划线 */
+.no-underline {
+  text-decoration-line: none;
+}
+/* 全小写 */
+.lowercase {
+  text-transform: lowercase;
+}
+/* 全大写 */
+.uppercase {
+  text-transform: uppercase;
+}
+/* 首字母大写 */
+.capitalize {
+  text-transform: capitalize;
+}

+ 264 - 0
manpowerPort/login/styles/normalize.css

@@ -0,0 +1,264 @@
+/* Document
+ * ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ */
+
+:where(html) {
+  line-height: 1.15; /* 1 */
+}
+
+/* Sections
+ * ========================================================================== */
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Edge, Firefox, and Safari.
+ */
+
+:where(h1) {
+  font-size: 2em;
+  margin-block-end: 0.67em;
+  margin-block-start: 0.67em;
+}
+
+/* Grouping content
+ * ========================================================================== */
+
+/**
+ * Remove the margin on nested lists in Chrome, Edge, and Safari.
+ */
+
+:where(dl, ol, ul) :where(dl, ol, ul) {
+  margin-block-end: 0;
+  margin-block-start: 0;
+}
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Correct the inheritance of border color in Firefox.
+ */
+
+:where(hr) {
+  box-sizing: content-box; /* 1 */
+  color: inherit; /* 2 */
+  height: 0; /* 1 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+:where(pre) {
+  font-family: monospace, monospace; /* 1 */
+  font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+ * ========================================================================== */
+
+/**
+ * Add the correct text decoration in Safari.
+ */
+
+:where(abbr[title]) {
+  text-decoration: underline;
+  text-decoration: underline dotted;
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+:where(b, strong) {
+  font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+:where(code, kbd, samp) {
+  font-family: monospace, monospace; /* 1 */
+  font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+:where(small) {
+  font-size: 80%;
+}
+
+/* Tabular data
+ * ========================================================================== */
+
+/**
+ * 1. Correct table border color in Chrome, Edge, and Safari.
+ * 2. Remove text indentation from table contents in Chrome, Edge, and Safari.
+ */
+
+:where(table) {
+  border-color: currentColor; /* 1 */
+  text-indent: 0; /* 2 */
+}
+
+/* Forms
+ * ========================================================================== */
+
+/**
+ * Remove the margin on controls in Safari.
+ */
+
+:where(button, input, select) {
+  margin: 0;
+}
+
+/**
+ * Remove the inheritance of text transform in Firefox.
+ */
+
+:where(button) {
+  text-transform: none;
+}
+
+/**
+ * Correct the inability to style buttons in iOS and Safari.
+ */
+
+:where(button, input:is([type="button" i], [type="reset" i], [type="submit" i])) {
+  -webkit-appearance: button;
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Edge, and Firefox.
+ */
+
+:where(progress) {
+  vertical-align: baseline;
+}
+
+/**
+ * Remove the inheritance of text transform in Firefox.
+ */
+
+:where(select) {
+  text-transform: none;
+}
+
+/**
+ * Remove the margin in Firefox and Safari.
+ */
+
+:where(textarea) {
+  margin: 0;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome, Edge, and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+:where(input[type="search" i]) {
+  -webkit-appearance: textfield; /* 1 */
+  outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Safari.
+ */
+
+::-webkit-inner-spin-button,
+::-webkit-outer-spin-button {
+  height: auto;
+}
+
+/**
+ * Correct the text style of placeholders in Chrome, Edge, and Safari.
+ */
+
+::-webkit-input-placeholder {
+  color: inherit;
+  opacity: 0.54;
+}
+
+/**
+ * Remove the inner padding in Chrome, Edge, and Safari on macOS.
+ */
+
+::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style upload buttons in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+  -webkit-appearance: button; /* 1 */
+  font: inherit; /* 2 */
+}
+
+/**
+ * Remove the inner border and padding of focus outlines in Firefox.
+ */
+
+:where(button, input:is([type="button" i], [type="color" i], [type="reset" i], [type="submit" i]))::-moz-focus-inner {
+  border-style: none;
+  padding: 0;
+}
+
+/**
+ * Restore the focus outline styles unset by the previous rule in Firefox.
+ */
+
+:where(button, input:is([type="button" i], [type="color" i], [type="reset" i], [type="submit" i]))::-moz-focusring {
+  outline: 1px dotted ButtonText;
+}
+
+/**
+ * Remove the additional :invalid styles in Firefox.
+ */
+
+:where(:-moz-ui-invalid) {
+  box-shadow: none;
+}
+
+/* Interactive
+ * ========================================================================== */
+
+/*
+ * Add the correct styles in Safari.
+ */
+
+:where(dialog) {
+  background-color: white;
+  border: solid;
+  color: black;
+  height: -moz-fit-content;
+  height: fit-content;
+  left: 0;
+  margin: auto;
+  padding: 1em;
+  position: absolute;
+  right: 0;
+  width: -moz-fit-content;
+  width: fit-content;
+}
+
+:where(dialog:not([open])) {
+  display: none;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+:where(summary) {
+  display: list-item;
+}

+ 745 - 0
manpowerPort/styles/common.css

@@ -0,0 +1,745 @@
+*,
+*:before,
+*:after {
+  padding: 0;
+  margin: 0;
+  box-sizing: border-box;
+}
+html,
+body {
+  height: 100%;
+  font-size: 13px;
+  background-color: #f3f3f3;
+  font-family: 'Microsoft YaHei','Helvetica Neue',Helvetica,'PingFang SC','Hiragino Sans GB', Arial,sans-serif;
+  /* overflow: hidden; */
+}
+
+.flex {
+  display: flex;
+}
+.flex1 {
+  flex: 1;
+}
+.flex-around {
+  display: flex;
+  justify-content: space-around;
+}
+.flex-between {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.flex-end {
+  display: flex;
+  justify-content: flex-end;
+}
+.flex-align-center {
+  display: flex;
+  align-items: center;
+}
+.text-center {
+  text-align: center;
+}
+.font12 {
+  font-size: 12px;
+}
+.main-color {
+  color: #228af5;
+}
+.danger-color {
+  color: #f56c6c;
+}
+.btm10 {
+  margin-bottom: 10px;
+}
+.btm20 {
+  margin-bottom: 20px;
+}
+a {
+  text-decoration: none;
+  cursor: pointer;
+}
+.dialog-full-icon {
+  padding: 5px;
+  color: #fff;
+  position: absolute;
+  right: 50px;
+  top: 18px;
+  font-size: 16px;
+  cursor: pointer;
+}
+
+[v-cloak] {
+  display: none;
+}
+#app {
+  height: 100vh;
+}
+/* 头部 */
+.header {
+  height: 77px;
+  flex: 0 0 auto;
+  background-color: #fff;
+  display: flex;
+}
+.header-item {
+  padding: 15px;
+  text-align: center;
+  color: #333;
+  cursor: pointer;
+  position: relative;
+}
+.header-item p {
+ width: 150%;
+ margin-left: -25%;
+}
+.header-item:hover {
+  background-color: #cae5fb;
+  color: #228af5;
+}
+.header-item.active {
+  background-color: #cae5fb;
+  color: #228af5;
+}
+.nav-dropdown {
+  display: block;
+  font-size: 13px;
+  color: #333;
+}
+
+#designer {
+  width: 100%;
+  height: 100%;
+}
+.main-wrap {
+  height: calc(100vh - 77px);
+  padding: 10px 0;
+  flex: 1;
+}
+.main {
+  display: flex;
+  padding: 0px;
+  height: 100%;
+  margin: 0 10px;
+  background: #fff;
+  border: 1px solid #e5e5e5;
+}
+/* 左侧 */
+.aside {
+  height: 100%;
+  background-color: #fff;
+  border: 1px solid #e5e5e5;
+}
+.el-tree > .el-tree-node {
+  display: inline-block;
+  min-width: 100%;
+}
+
+/* el-tree 操作弹出 */
+.contextmenu__item {
+  display: block;
+  line-height: 34px;
+  text-align: left;
+  padding: 0 20px;
+}
+.contextmenu__item:not(:last-child) {
+  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+}
+.menu {
+  position: fixed;
+  background-color: #fff;
+  font-size: 14px;
+  color: #444040;
+  border-radius: 4px;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+  white-space: nowrap;
+  z-index: 1000;
+}
+.contextmenu__item:hover {
+  cursor: pointer;
+  background: #66b1ff;
+  border-color: #66b1ff;
+  color: #fff;
+}
+.main > div.left {
+  flex: 1;
+  overflow: hidden;
+  padding: 5px;
+}
+.main > div.right {
+  flex: 1;
+  overflow: hidden;
+  padding: 5px;
+  border-left: 1px solid #ccc;
+}
+
+.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
+  background-color: #e8f3fe;
+}
+/* 公共弹框样式 */
+.el-dialog {
+  border-radius: 8px;
+  overflow: hidden;
+}
+.el-dialog__header {
+  padding: 15px;
+  background-color: #228af5;
+}
+
+.el-dialog__header .el-dialog__title {
+  color: #fff;
+  font-size: 16px;
+}
+.el-dialog__headerbtn .el-dialog__close {
+  color: #fff;
+  font-size: 20px;
+}
+.el-dialog__body {
+  padding: 15px;
+  border-top: 1px solid #f1f1f1;
+}
+.el-form-item--mini.el-form-item,
+.el-form-item--small.el-form-item {
+  margin-bottom: 15px;
+}
+.build-modal .el-dialog__body {
+  padding: 0;
+}
+.build-modal .el-card {
+  margin-bottom: 10px;
+}
+.build-modal .el-card p {
+  line-height: 1.6;
+}
+.build-modal .el-form {
+  flex: 0 0 300px;
+  margin-right: 30px;
+}
+.build-modal .el-card__header {
+  padding: 10px;
+  background-color: whitesmoke;
+}
+.build-modal .el-card__body {
+  padding: 15px;
+}
+.inline-inputs .el-form-item__content {
+  display: flex;
+  justify-content: space-between;
+}
+.inline-inputs .el-form-item__content span {
+  margin: 0 20px;
+}
+
+.select-box .el-radio-group {
+  display: flex;
+  flex-direction: column;
+  margin-top: 15px;
+}
+.select-box .el-checkbox-group {
+  display: flex;
+  flex-direction: column;
+}
+.select-box .el-radio-group label {
+  margin-bottom: 20px;
+}
+.select-box .el-checkbox-group label {
+  margin-bottom: 15px;
+}
+.nav-icon {
+  display: inline-block;
+  width: 35px;
+  height: 35px;
+  margin-bottom: 3px;
+}
+.nav-icon1 {
+  background: url(../images/navs/1.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon2 {
+  background: url(../images/navs/2.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon3 {
+  background: url(../images/navs/3.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon4 {
+  background: url(../images/navs/4.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon5 {
+  background: url(../images/navs/5.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon6 {
+  background: url(../images/navs/6.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon7 {
+  background: url(../images/navs/7.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon8 {
+  background: url(../images/navs/8.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon9 {
+  background: url(../images/navs/9.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon10 {
+  background: url(../images/navs/10.png) no-repeat;
+  background-size: 100% 100%;
+}
+
+.nav-icon11 {
+  background: url(../images/navs/11.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon12 {
+  background: url(../images/navs/12.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon13 {
+  background: url(../images/navs/13.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon14 {
+  background: url(../images/navs/14.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon15 {
+  background: url(../images/navs/15.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon16 {
+  background: url(../images/navs/16.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon17 {
+  background: url(../images/navs/17.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon18 {
+  background: url(../images/navs/18.png) no-repeat;
+  background-size: 100% 100%;
+}
+.nav-icon19 {
+  background: url(../images/navs/19.png) no-repeat;
+  background-size: 100% 100%;
+}
+
+.tree-icon {
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  margin-right: 5px;
+  vertical-align: -2px;
+}
+.tree-icon01 {
+  background: url(../images/tree/project-1@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon02 {
+  background: url(../images/tree/project-2@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon03 {
+  background: url(../images/tree/project-3@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon1, .tree-icon18, .tree-icon20, .tree-icon22 {
+  background: url(../images/tree/project@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon2 {
+  background: url(../images/tree/class@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon3 {
+  background: url(../images/tree/sub-class@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon4 {
+  background: url(../images/tree/sub-class-child@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon5 {
+  background: url(../images/tree/form@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon6, .tree-icon17, .tree-icon19, .tree-icon21 {
+  background: url(../images/tree/floor@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon7 {
+  background: url(../images/tree/build@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon8 {
+  background: url(../images/tree/form8@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon9 {
+  background: url(../images/tree/floor@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon10 {
+  background: url(../images/tree/project@2x.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon11 {
+  background: url(../images/tree/tong1.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon12 {
+  background: url(../images/tree/tong2.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon13 {
+  background: url(../images/tree/tong3.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon14 {
+  background: url(../images/tree/tong4.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon15 {
+  background: url(../images/tree/tong5.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon16 {
+  background: url(../images/tree/tong6.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon100 {
+  background: url(../images/tree/tong7.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon101 {
+  background: url(../images/tree/tong8.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon102 {
+  background: url(../images/tree/tong9.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon103 {
+  background: url(../images/tree/tong10.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon104 {
+  background: url(../images/tree/tong1.png) no-repeat;
+  background-size: 100% 100%;
+}
+.tree-icon105 {
+  background: url(../images/tree/tong2.png) no-repeat;
+  background-size: 100% 100%;
+}
+
+.tree-icon-company {
+  background: url(../images/icons/company.png) no-repeat;
+  background-size: 110% 110%;
+}
+
+
+.home-content {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  flex: 1;
+}
+.home-content h1 {
+  margin-bottom: 50px;
+}
+.home-content img {
+  width: 80%;
+  height: 50%;
+}
+.dialog-nowrap {
+  pointer-events: none;
+}
+.dialog-nowrap .el-dialog {
+  pointer-events: auto;
+}
+.el-drawer__wrapper {
+  pointer-events: none;
+}
+.el-drawer__wrapper .el-drawer {
+  pointer-events: auto;
+}
+/* 新建表格tab ...限制宽度 */
+.sheet-modal .el-tabs__item {
+  max-width: 400px;
+  overflow: hidden;
+  padding: 0 15px 0 10px;
+  text-overflow: ellipsis;
+}
+/* 使用element 滚动条样式 */
+::-webkit-scrollbar {
+  z-index: 11;
+  width: 6px;
+  height: 6px;
+}
+::-webkit-scrollbar-thumb {
+  border-radius: 5px;
+  width: 6px;
+  background: #b4bccc;
+}
+::-webkit-scrollbar-corner {
+  background: #fff;
+}
+::-webkit-scrollbar-track {
+  background: #fff;
+}
+::-webkit-scrollbar-track-piece {
+  background: #fff;
+  width: 6px;
+}
+.ribbon-button-lock {
+  background-image: url('../images/icons/lock.png');
+  background-size: 100% 100% !important;
+}
+.ribbon-button-unlock {
+  background-image: url('../images/icons/unlock.png');
+  background-size: 100% 100% !important;
+}
+.ribbon-button-tags {
+  background-image: url('../images/icons/tags.png');
+  background-size: 100% 100% !important;
+}
+.ribbon-button-check {
+  background-image: url('../images/icons/check.png');
+  background-size: 100% 100% !important;
+}
+.ribbon-button-clear-source {
+  background-image: url('../images/icons/clear.png');
+  background-size: 100% 100% !important;
+}
+.ribbon-button-select {
+  background-image: url('../images/icons/select.png');
+  background-size: 100% 100% !important;
+}
+
+.gc-ribbon-bar .ribbon-button-item.ribbon-bigbutton {
+  min-width: 40px;
+  max-width: 60px;
+  min-height: 0;
+}
+.grid-box {
+  display: flex;
+  flex-wrap: wrap;
+  border-left: 1px solid #ccc;
+}
+.grid-box > div {
+  width: 30px;
+  height: 35px;
+  text-align: center;
+  line-height: 35px;
+  color: #000;
+  border-bottom: 1px solid #ccc;
+  border-right: 1px solid #ccc;
+  border-top: 1px solid #ccc;
+  cursor: pointer;
+  font-size: 18px;
+}
+.grid-box > div:nth-child(n + 21) {
+  border-top: none;
+}
+.grid-box > div.checked {
+  background-color: #409eff;
+  color: #f1f1f1;
+}
+
+.char-tab .el-tabs__nav,
+.char-tab .el-tabs__content {
+  max-height: 300px;
+  overflow: auto;
+}
+.char-tab .el-tabs__item {
+  height: 25px;
+  line-height: 25px;
+  font-family: 'chars';
+}
+.char-input .el-input__inner {
+  font-family: 'chars';
+}
+.fonts {
+  font-family: 'chars';
+}
+.char-pop {
+  text-align: center;
+  height: 80px;
+  line-height: 60px;
+  width: 80px;
+  font-size: 60px;
+  font-family: 'chars';
+}
+
+/* 拖拽的线 */
+#box {
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  /* background-color:royalblue; */
+}
+#resize {
+  width: 2px;
+  height: 100%;
+  cursor: w-resize;
+  background-color: #ccc;
+  float: left;
+  position: relative;
+}
+#resize2 {
+  height: 5px;
+  width: 100%;
+  background-color: #ccc;
+  cursor: n-resize;
+  position: relative;
+}
+#left {
+  width: 350px;
+  height: 100%;
+  /* background:skyblue; */
+  float: left;
+  overflow: auto;
+}
+#right {
+  float: right;
+  width: calc(100% - 352px);
+  height: 100%;
+  /* background:tomato; */
+  overflow: auto;
+}
+#top {
+  height: 300px;
+  width: 100%;
+  /* background:skyblue; */
+  overflow: auto;
+}
+
+#bottom {
+  height: calc(100% - 305px);
+  width: 100%;
+  /* background:tomato; */
+  overflow: auto;
+}
+.resImg {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  margin: auto;
+  width: 12px;
+  height: 60px;
+  cursor: pointer;
+}
+#resize2 .resImg {
+  position: absolute;
+  left: 0;
+  right: 0;
+  margin: auto;
+  height: 12px;
+  width: 60px;
+  cursor: pointer;
+}
+.left-tree {
+  flex: 0 0 300px;
+  padding: 10px 10px 10px 0;
+  border: 1px solid #ccc;
+  min-height: 400px;
+  height: 100%;
+  /* margin-right: 15px;
+  border-radius: 5px; */
+  overflow: auto;
+}
+.el-table tbody tr:hover > td {
+  background-color: unset!important;
+}
+.el-table .cell {
+  line-height: 1.2;
+}
+.capacity-cell {
+  background-color: rgb(212, 243, 255);
+  position: relative;
+}
+.capacity-cell:hover .xuan-btn {
+  display: block;
+}
+.xuan-btn {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  margin: auto;
+  right: 0;
+  padding: 4px;
+  display: none;
+}
+.bottom-cell {
+  position: relative;
+  padding-top: 20px!important;
+}
+.inline-input .el-input__inner {
+  padding: 0 4px;
+}
+.scheme-table.el-table .cell {
+  padding: 0 5px;
+  line-height: 1.3;
+}
+.bottom-cell:hover .opration {
+  display: block;
+}
+.opration {
+  position: absolute;
+  top: 0;
+  right: 0;
+  display: block;
+  border: 1px solid #ccc;
+  line-height: 1;
+  display: none;
+}
+.opration i {
+  cursor: pointer;
+  font-size: 14px;
+  color: #409EFF;
+  border: 1px solid #409EFF;
+}
+.branch-list .el-radio-group {
+  display: flex;
+  flex-wrap: wrap;
+}
+.branch-list .el-radio-group label {
+  flex: 0 0 50%;
+  margin-right: 0px;
+  margin: 6px 0;
+}
+.input-number input::-webkit-outer-spin-button {
+  -webkit-appearance: none;
+}
+.input-number input::-webkit-inner-spin-button {
+  -webkit-appearance: none;
+}
+.input-number input[type='number']{
+  -moz-appearance: textfield;
+}
+/* table 行内编辑使用 */
+.item_input {
+  display: none;
+}
+.item_input .el-input__inner {
+  padding: 0px 2px;
+  height: 18px;
+  line-height: 18px;
+}
+.text-overflow {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.is-tooltipStyle {
+  max-width: 20%;
+  color: #fff;
+  background-color: #444040;
+}

文件差异内容过多而无法显示
+ 0 - 0
manpowerPort/styles/element-ui@2.15.9.css


+ 471 - 0
manpowerPort/styles/index.css

@@ -0,0 +1,471 @@
+*,
+*:before,
+*:after {
+  padding: 0;
+  margin: 0;
+  box-sizing: border-box;
+}
+html,
+body {
+  min-width: 7640px;
+  font-size: 20px;
+  color: #fff;
+  font-family: 'Microsoft YaHei', 'Helvetica Neue', Helvetica, 'PingFang SC',
+    'Hiragino Sans GB', Arial, sans-serif;
+  height: 100vh;
+  overflow-y: hidden;
+}
+[v-cloak] {
+  display: none;
+}
+.flex {
+  display: flex;
+}
+.flex-wrap {
+  flex-wrap: wrap;
+}
+.flex1 {
+  flex: 1;
+}
+.flex2 {
+  flex: 2;
+}
+.flex-around {
+  display: flex;
+  justify-content: space-around;
+}
+.flex-between {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.flex-end {
+  display: flex;
+  justify-content: flex-end;
+}
+.flex-column {
+  display: flex;
+  flex-direction: column;
+}
+.flex-align-center {
+  display: flex;
+  align-items: center;
+}
+.text-center {
+  text-align: center;
+}
+.font12 {
+  font-size: 12px;
+}
+.main-color {
+  color: #69c0ff;
+}
+.danger-color {
+  color: #f15450 !important;
+}
+.error-color {
+  color: #ffc704 !important;
+}
+.btm10 {
+  margin-bottom: 10px;
+}
+.btm20 {
+  margin-bottom: 20px;
+}
+a {
+  text-decoration: none;
+  cursor: pointer;
+}
+
+[v-cloak] {
+  display: none;
+}
+#app {
+  background: url('../images/page-bg.png') center center no-repeat;
+  background-size: 100% 100%;
+  padding-top: 10px;
+  position: relative;
+  height: 100vh;
+  overflow-y: hidden;
+}
+.my-header {
+  position: relative;
+  height: 140px;
+  line-height: 140px;
+  background: url('../images/header-bg2.png') center center no-repeat;
+  background-size: 100% 100%;
+  text-align: center;
+  font-weight: bold;
+  font-size: 60px;
+  font-weight: 600;
+}
+.my-header span {
+  background: linear-gradient(-3deg, #99eeff 0%, #99eeff 30%, #ffffff 91%);
+  -webkit-background-clip: text;
+  -webkit-text-fill-color: transparent;
+}
+.my-header span.left {
+  position: absolute;
+  left: 100px;
+  height: 50px;
+  top: 40px;
+  font-size: 30px;
+  cursor: pointer;
+}
+.my-header span.left2 {
+  position: absolute;
+  left: 300px;
+  top: 20px;
+  height: 100px;
+  line-height: 100px;
+  display: inline-block;
+  width: 180px;
+  font-size: 36px;
+  cursor: pointer;
+}
+
+.my-header span.right {
+  position: absolute;
+  right: 100px;
+  top: 0px;
+  font-size: 30px;
+}
+.main {
+  padding: 15px 15px 0;
+  display: flex;
+  height: calc(100vh - 280px);
+}
+.left,
+.right {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+}
+.left .my-panel,
+.right .my-panel {
+  height: 100%;
+  overflow: hidden;
+}
+.dv-border-box-8 {
+  margin-bottom: 25px;
+  padding: 15px;
+  box-sizing: border-box;
+}
+.center {
+  flex: 1;
+  margin: 0 20px;
+  display: flex;
+  flex-direction: column;
+}
+.center .my-panel {
+  height: 100%;
+}
+.center .top {
+  display: flex;
+  justify-content: space-between;
+}
+.center .top .box {
+  flex: 1;
+  padding: 20px 0;
+  padding-bottom: 10px;
+  /* background-color: rgba(105, 192, 255, 0.2); */
+  /* padding-left: 8%; */
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  margin: 0 10px;
+}
+.box-content {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-top: 20px;
+}
+.box-content > div {
+  margin-left: 30px;
+}
+.box-content > img {
+  width: 138px;
+}
+.box-content > div p {
+  font-size: 24px;
+  color: #e4f8ff;
+}
+.box-content > div i {
+  display: inline-block;
+  font-size: 48px;
+  margin-right: 5px;
+  font-weight: 600;
+  margin-top: 5px;
+}
+.footer {
+  position: relative;
+  padding-bottom: 20px;
+  display: flex;
+  width: 60%;
+  margin: 0 auto;
+}
+.footer a {
+  flex: 1;
+  height: 70px;
+  line-height: 70px;
+  text-align: center;
+  align-items: center;
+  justify-content: center;
+  display: flex;
+  color: #fff;
+  font-weight: 600;
+  font-size: 22px;
+  background: url('../images/footer-item.png') no-repeat;
+  background-size: 100% 100%;
+}
+.footer a img {
+  width: 35px;
+  height: 35px;
+  margin-right: 15px;
+}
+.footer a:hover {
+  background: url('../images/footer-item-checked.png') no-repeat;
+  background-size: 100% 100%;
+  color: #15f7ff;
+}
+.my-panel .content {
+  height: calc(100% - 60px);
+}
+.panel-title {
+  position: relative;
+  height: 60px;
+  line-height: 60px;
+  padding-left: 6%;
+  background: url('../images/title-bg.png') no-repeat;
+  background-size: 100% 100%;
+}
+.panel-title .text {
+  font-size: 32px;
+  font-weight: 600;
+  color: #daf9ff;
+}
+.panel-title .right-opr {
+  position: absolute;
+  right: 0;
+  width: 80px;
+}
+
+.list {
+  flex: 1;
+  padding: 15px;
+}
+.list .list-item {
+  display: flex;
+  align-items: center;
+  margin: 15px 0;
+  border: 1px solid #69c0ff3f;
+  padding: 20px;
+}
+.list .list-item > i {
+  margin-right: 15px;
+  width: 35px;
+  height: 35px;
+  line-height: 35px;
+  text-align: center;
+  background: #69c0ff3f;
+  border-radius: 4px;
+  color: #69c0ff;
+}
+.list-item i.num {
+  font-size: 30px;
+  color: #69c0ff;
+  margin-right: 10px;
+}
+.s-title {
+  text-align: center;
+  font-size: 24px;
+  margin-bottom: 20px;
+  font-weight: 600;
+}
+.yujing {
+  display: flex;
+  padding: 15px 10px 12px;
+}
+.yujing > div {
+  background-color: #05507b4c;
+  margin: 0 15px;
+  padding: 15px 30px;
+  border-radius: 10px;
+}
+.el-progress-bar__outer {
+  background-color: #17436d !important;
+}
+.el-progress__text {
+  color: #f5f7fa;
+}
+.box-center {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  background: url('../images/sex-bg.png') no-repeat center;
+  background-size: 100% 100%;
+  padding: 1.5%;
+  margin: 0 10px;
+}
+.box-center > div {
+  text-align: center;
+  flex: 1;
+  height: 150px;
+}
+.box-center > div.t {
+  background-color: rgb(18 81 128 / 22%);
+  margin-bottom: 20px;
+  padding-top: 1%;
+}
+.box-center > div.flex {
+  margin: 0 -10px;
+}
+.box-center > div.flex > div {
+  flex: 1;
+  margin: 0 10px;
+  padding-top: 1.3%;
+  background-color: rgb(18 81 128 / 22%);
+}
+.box-center > div p:nth-child(1) {
+  font-size: 45px;
+  font-weight: 800;
+  color: #69c0ff;
+  margin-bottom: 15px;
+}
+.box-center > div p:nth-child(2) {
+  font-size: 24px;
+  color: #e4f8ff;
+}
+.box-center > div span {
+  font-size: 24px;
+  margin-left: 10px;
+}
+.dv-scroll-board .header {
+  font-size: 24px !important;
+  font-weight: 600 !important;
+  background-color: rgba(105, 192, 255, 0.1) !important;
+}
+.dv-scroll-board .rows .row-item {
+  font-size: 22px !important;
+}
+.tip-window {
+  margin-right: 50px;
+  margin-top: 10px;
+  color: #69c0ff;
+  display: inline-block;
+  width: 142px;
+  height: 50px;
+  line-height: 50px;
+  text-align: center;
+  background-color: rgba(64, 169, 255, 0.12);
+  border: 2px solid #40a9ff;
+  border-radius: 8px;
+  cursor: pointer;
+}
+.tip-window2 {
+  color: #69c0ff;
+  display: inline-block;
+  width: 400px;
+  height: 50px;
+  line-height: 50px;
+  text-align: center;
+  background-color: rgba(64, 169, 255, 0.12);
+  border: 2px solid #40a9ff;
+  border-radius: 8px;
+  cursor: pointer;
+  margin: 0 auto;
+  margin-top: 3px;
+  display: block;
+  font-size: 30px;
+  /* margin-left: calc(34% - 85px); */
+}
+.tip {
+  /* position: fixed;
+  background-color: rgba(0, 0, 0, 0.5);
+  width: 100%;
+  height: 100%;
+  top: 0;
+  left: 0; */
+}
+.tip-box {
+  position: absolute;
+  /* top: 35%;
+  left: 32.5%; */
+  /* width: 35%;
+  height: 30%; */
+  width: 1800px;
+  height: 1200px;
+  top: calc(50% - 600px);
+  left: calc(50% - 900px);
+  background: url('../images/alert.png') no-repeat center;
+  background-color: #133b65;
+  background-size: 100% 100%;
+  padding: 100px 60px 50px;
+}
+.tip-box > div {
+  font-size: 42px;
+  line-height: 70px;
+}
+.light {
+  display: inline-block;
+  width: 24px;
+  height: 24px;
+  border-radius: 50%;
+  background-size: 100% 100%;
+}
+.red {
+  background: url('../images/red.png');
+}
+.green {
+  background: url('../images/green.png');
+}
+.yellow {
+  background: url('../images/yellow.png');
+}
+.lightOut {
+  display: flex;
+  width: 100%;
+  height: 100%;
+  align-items: center;
+  justify-content: center;
+}
+.tip-content {
+  height: 95%;
+  overflow: auto;
+  padding-right: 15px;
+  margin-top: 2%;
+}
+div::-webkit-scrollbar {
+  width: 4px;
+}
+div::-webkit-scrollbar-thumb {
+  border-radius: 10px;
+  background: rgba(64, 169, 255, 0.6);
+}
+div::-webkit-scrollbar-track {
+  border-radius: 0;
+  background: rgba(64, 169, 255, 0.3);
+}
+.icon {
+  width: 35px;
+  height: 35px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-weight: bold;
+  position: absolute;
+  top: 8px;
+  left: 400px;
+  background-color: rgba(64, 169, 255, 0.12);
+  border: 2px solid #40a9ff;
+  cursor: pointer;
+  border-radius: 50%;
+  font-size: 24px;
+}
+* {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}

+ 441 - 0
manpowerPort/styles/index5.css

@@ -0,0 +1,441 @@
+*,
+*:before,
+*:after {
+  padding: 0;
+  margin: 0;
+  box-sizing: border-box;
+}
+html,
+body {
+  min-width: 7640px;
+  font-size: 20px;
+  color: #fff;
+  font-family: "Microsoft YaHei", "Helvetica Neue", Helvetica, "PingFang SC",
+    "Hiragino Sans GB", Arial, sans-serif;
+    height: 100vh;
+    overflow-y: hidden;
+}
+[v-cloak] {
+  display: none;
+}
+.flex {
+  display: flex;
+}
+.flex-wrap {
+  flex-wrap: wrap;
+}
+.flex1 {
+  flex: 1;
+}
+.flex2 {
+  flex: 2;
+}
+.flex-around {
+  display: flex;
+  justify-content: space-around;
+}
+.flex-between {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.flex-end {
+  display: flex;
+  justify-content: flex-end;
+}
+.flex-column {
+  display: flex;
+  flex-direction: column;
+}
+.flex-align-center {
+  display: flex;
+  align-items: center;
+}
+.text-center {
+  text-align: center;
+}
+.font12 {
+  font-size: 12px;
+}
+.main-color {
+  color: #69c0ff;
+}
+.danger-color {
+  color: #f15450 !important;
+}
+.error-color {
+  color: #ffc704 !important;
+}
+.btm10 {
+  margin-bottom: 10px;
+}
+.btm20 {
+  margin-bottom: 20px;
+}
+a {
+  text-decoration: none;
+  cursor: pointer;
+}
+
+[v-cloak] {
+  display: none;
+}
+#app {
+  background: url("../images/page-bg.png") center center no-repeat;
+  background-size: 100% 100%;
+  padding-top: 10px;
+  position: relative;
+  height:100vh;
+  overflow-y: hidden;
+}
+.my-header {
+  position: relative;
+  height: 140px;
+  line-height: 140px;
+  background: url("../images/header-bg2.png") center center no-repeat;
+  background-size: 100% 100%;
+  text-align: center;
+  font-weight: bold;
+  font-size: 60px;
+  font-weight: 600;
+}
+.my-header span {
+  background: linear-gradient(-3deg, #99eeff 0%, #99eeff 30%, #ffffff 91%);
+  -webkit-background-clip: text;
+  -webkit-text-fill-color: transparent;
+}
+.my-header span.left {
+  position: absolute;
+  left: 100px;
+  height: 50px;
+  top: 40px;
+  font-size: 30px;
+  cursor: pointer;
+}
+.my-header span.left2 {
+  position: absolute;
+  left: 300px;
+  top: 20px;
+  height: 100px;
+  line-height: 100px;
+  display: inline-block;
+  width: 180px;
+  font-size: 36px;
+  cursor: pointer;
+}
+
+.my-header span.right {
+  position: absolute;
+  right: 100px;
+  top: 0px;
+  font-size: 30px;
+}
+.main {
+  padding: 15px 15px 0;
+  display: flex;
+  height: calc(100vh - 280px);
+}
+.left,
+.right {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+}
+.left .my-panel,
+.right .my-panel {
+  height: 100%;
+  overflow: hidden;
+}
+.dv-border-box-8 {
+  margin-bottom: 25px;
+  padding: 15px;
+  box-sizing: border-box;
+}
+.center {
+  flex: 1;
+  margin: 0 20px;
+  display: flex;
+  flex-direction: column;
+}
+.center .my-panel {
+  height: 100%;
+}
+.center .top {
+  display: flex;
+  justify-content: space-between;
+  margin: 0px -10px 20px;
+}
+.center .top .box {
+  flex: 1;
+  padding: 20px 0;
+  background-color: rgba(105, 192, 255, 0.2);
+  display: flex;
+  align-items: center;
+  padding-left: 8%;
+  margin: 0 10px;
+}
+.box > div {
+  margin-left: 30px;
+}
+.box > img {
+  width: 138px;
+}
+.box > div p {
+  font-size: 24px;
+  color: #e4f8ff;
+}
+.box > div i {
+  display: inline-block;
+  font-size: 48px;
+  margin-right: 5px;
+  font-weight: 600;
+  margin-top: 5px;
+}
+.footer {
+  position: relative;
+  padding-bottom: 20px;
+  display: flex;
+  width: 60%;
+  margin: 0 auto;
+}
+.footer a {
+  flex: 1;
+  height: 70px;
+  line-height: 70px;
+  text-align: center;
+  align-items: center;
+  justify-content: center;
+  display: flex;
+  color: #fff;
+  font-weight: 600;
+  font-size: 22px;
+  background: url("../images/footer-item.png") no-repeat;
+  background-size: 100% 100%;
+}
+.footer a img {
+  width: 35px;
+  height: 35px;
+  margin-right: 15px;
+}
+.footer a:hover {
+  background: url("../images/footer-item-checked.png") no-repeat;
+  background-size: 100% 100%;
+  color: #15f7ff;
+}
+.my-panel .content {
+  height: calc(100% - 60px);
+}
+.panel-title {
+  position: relative;
+  height: 60px;
+  line-height: 60px;
+  padding-left: 6%;
+  background: url("../images/title-bg.png") no-repeat;
+  background-size: 100% 100%;
+}
+.panel-title .text {
+  font-size: 32px;
+  font-weight: 600;
+  color: #daf9ff;
+}
+.panel-title .right-opr {
+  position: absolute;
+  right: 0;
+  width: 80px;
+}
+
+.list {
+  flex: 1;
+  padding: 15px;
+}
+.list .list-item {
+  display: flex;
+  align-items: center;
+  margin: 15px 0;
+  border: 1px solid #69c0ff3f;
+  padding: 20px;
+}
+.list .list-item > i {
+  margin-right: 15px;
+  width: 35px;
+  height: 35px;
+  line-height: 35px;
+  text-align: center;
+  background: #69c0ff3f;
+  border-radius: 4px;
+  color: #69c0ff;
+}
+.list-item i.num {
+  font-size: 30px;
+  color: #69c0ff;
+  margin-right: 10px;
+}
+.s-title {
+  text-align: center;
+  font-size: 24px;
+  margin-bottom: 20px;
+  font-weight: 600;
+}
+.yujing {
+  display: flex;
+  padding: 15px 10px 12px;
+}
+.yujing > div {
+  background-color: #05507b4c;
+  margin: 0 15px;
+  padding: 15px 30px;
+  border-radius: 10px;
+}
+.el-progress-bar__outer {
+  background-color: #17436d !important;
+}
+.el-progress__text {
+  color: #f5f7fa;
+}
+.box-center {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  background: url("../images/sex-bg.png") no-repeat center;
+  background-size: 100% 100%;
+  padding: 1.5%;
+  margin: 0 10px;
+}
+.box-center > div {
+  text-align: center;
+  flex: 1;
+  height: 150px;
+}
+.box-center > div.t {
+  background-color: rgb(18 81 128 / 22%);
+  margin-bottom: 20px;
+  padding-top: 1%;
+}
+.box-center > div.flex {
+  margin: 0 -10px;
+}
+.box-center > div.flex > div {
+  flex: 1;
+  margin: 0 10px;
+  padding-top: 1.3%;
+  background-color: rgb(18 81 128 / 22%);
+}
+.box-center > div p:nth-child(1) {
+  font-size: 45px;
+  font-weight: 800;
+  color: #69c0ff;
+  margin-bottom: 15px;
+}
+.box-center > div p:nth-child(2) {
+  font-size: 24px;
+  color: #e4f8ff;
+}
+.box-center > div span {
+  font-size: 24px;
+  margin-left: 10px;
+}
+.dv-scroll-board .header {
+  font-size: 24px !important;
+  font-weight: 600 !important;
+  background-color: rgba(105, 192, 255, 0.1) !important;
+}
+.dv-scroll-board .rows .row-item {
+  font-size: 22px !important;
+}
+.tip-window {
+  margin-right: 50px;
+  margin-top: 10px;
+  color: #69c0ff;
+  display: inline-block;
+  width: 142px;
+  height: 50px;
+  line-height: 50px;
+  text-align: center;
+  background-color: rgba(64, 169, 255, 0.12);
+  border: 2px solid #40a9ff;
+  border-radius: 8px;
+  cursor: pointer;
+}
+.tip {
+  /* position: fixed;
+  background-color: rgba(0, 0, 0, 0.5);
+  width: 100%;
+  height: 100%;
+  top: 0;
+  left: 0; */
+}
+.tip-box {
+  position: absolute;
+  /* top: 35%;
+  left: 32.5%; */
+  /* width: 35%;
+  height: 30%; */
+  width: 1200px;
+  height: 850px;
+  top: calc(50% - 375px);
+  left: calc(50% - 600px);
+  background: url("../images/alert.png") no-repeat center;
+  background-color: #133b65;
+  background-size: 100% 100%;
+  padding: 100px 60px 50px;
+}
+.tip-box > div {
+  font-size: 42px;
+  line-height: 70px;
+}
+.light {
+  display: inline-block;
+  width: 24px;
+  height: 24px;
+  border-radius: 50%;
+  background-size: 100% 100%;
+}
+.red {
+  background: url("../images/red.png");
+}
+.green {
+  background: url("../images/green.png");
+}
+.yellow {
+  background: url("../images/yellow.png");
+}
+.lightOut {
+  display: flex;
+  width: 100%;
+  height: 100%;
+  align-items: center;
+  justify-content: center;
+}
+.tip-content {
+  height: 95%;
+  overflow: auto;
+  padding-right: 15px;
+  margin-top: 2%;
+}
+div::-webkit-scrollbar {
+  width: 4px;
+}
+div::-webkit-scrollbar-thumb {
+  border-radius: 10px;
+  background: rgba(64, 169, 255, 0.6);
+}
+div::-webkit-scrollbar-track {
+  border-radius: 0;
+  background: rgba(64, 169, 255, 0.3);
+}
+.icon {
+  width: 35px;
+  height: 35px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-weight: bold;
+  position: absolute;
+  top: 8px;
+  left: 400px;
+  background-color: rgba(64, 169, 255, 0.12);
+  border: 2px solid #40a9ff;
+  cursor: pointer;
+  border-radius: 50%;
+  font-size: 24px;
+}

+ 264 - 0
manpowerPort/styles/normalize.css

@@ -0,0 +1,264 @@
+/* Document
+ * ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ */
+
+:where(html) {
+  line-height: 1.15; /* 1 */
+}
+
+/* Sections
+ * ========================================================================== */
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Edge, Firefox, and Safari.
+ */
+
+:where(h1) {
+  font-size: 2em;
+  margin-block-end: 0.67em;
+  margin-block-start: 0.67em;
+}
+
+/* Grouping content
+ * ========================================================================== */
+
+/**
+ * Remove the margin on nested lists in Chrome, Edge, and Safari.
+ */
+
+:where(dl, ol, ul) :where(dl, ol, ul) {
+  margin-block-end: 0;
+  margin-block-start: 0;
+}
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Correct the inheritance of border color in Firefox.
+ */
+
+:where(hr) {
+  box-sizing: content-box; /* 1 */
+  color: inherit; /* 2 */
+  height: 0; /* 1 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+:where(pre) {
+  font-family: monospace, monospace; /* 1 */
+  font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+ * ========================================================================== */
+
+/**
+ * Add the correct text decoration in Safari.
+ */
+
+:where(abbr[title]) {
+  text-decoration: underline;
+  text-decoration: underline dotted;
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+:where(b, strong) {
+  font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+:where(code, kbd, samp) {
+  font-family: monospace, monospace; /* 1 */
+  font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+:where(small) {
+  font-size: 80%;
+}
+
+/* Tabular data
+ * ========================================================================== */
+
+/**
+ * 1. Correct table border color in Chrome, Edge, and Safari.
+ * 2. Remove text indentation from table contents in Chrome, Edge, and Safari.
+ */
+
+:where(table) {
+  border-color: currentColor; /* 1 */
+  text-indent: 0; /* 2 */
+}
+
+/* Forms
+ * ========================================================================== */
+
+/**
+ * Remove the margin on controls in Safari.
+ */
+
+:where(button, input, select) {
+  margin: 0;
+}
+
+/**
+ * Remove the inheritance of text transform in Firefox.
+ */
+
+:where(button) {
+  text-transform: none;
+}
+
+/**
+ * Correct the inability to style buttons in iOS and Safari.
+ */
+
+:where(button, input:is([type="button" i], [type="reset" i], [type="submit" i])) {
+  -webkit-appearance: button;
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Edge, and Firefox.
+ */
+
+:where(progress) {
+  vertical-align: baseline;
+}
+
+/**
+ * Remove the inheritance of text transform in Firefox.
+ */
+
+:where(select) {
+  text-transform: none;
+}
+
+/**
+ * Remove the margin in Firefox and Safari.
+ */
+
+:where(textarea) {
+  margin: 0;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome, Edge, and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+:where(input[type="search" i]) {
+  -webkit-appearance: textfield; /* 1 */
+  outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Safari.
+ */
+
+::-webkit-inner-spin-button,
+::-webkit-outer-spin-button {
+  height: auto;
+}
+
+/**
+ * Correct the text style of placeholders in Chrome, Edge, and Safari.
+ */
+
+::-webkit-input-placeholder {
+  color: inherit;
+  opacity: 0.54;
+}
+
+/**
+ * Remove the inner padding in Chrome, Edge, and Safari on macOS.
+ */
+
+::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style upload buttons in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+  -webkit-appearance: button; /* 1 */
+  font: inherit; /* 2 */
+}
+
+/**
+ * Remove the inner border and padding of focus outlines in Firefox.
+ */
+
+:where(button, input:is([type="button" i], [type="color" i], [type="reset" i], [type="submit" i]))::-moz-focus-inner {
+  border-style: none;
+  padding: 0;
+}
+
+/**
+ * Restore the focus outline styles unset by the previous rule in Firefox.
+ */
+
+:where(button, input:is([type="button" i], [type="color" i], [type="reset" i], [type="submit" i]))::-moz-focusring {
+  outline: 1px dotted ButtonText;
+}
+
+/**
+ * Remove the additional :invalid styles in Firefox.
+ */
+
+:where(:-moz-ui-invalid) {
+  box-shadow: none;
+}
+
+/* Interactive
+ * ========================================================================== */
+
+/*
+ * Add the correct styles in Safari.
+ */
+
+:where(dialog) {
+  background-color: white;
+  border: solid;
+  color: black;
+  height: -moz-fit-content;
+  height: fit-content;
+  left: 0;
+  margin: auto;
+  padding: 1em;
+  position: absolute;
+  right: 0;
+  width: -moz-fit-content;
+  width: fit-content;
+}
+
+:where(dialog:not([open])) {
+  display: none;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+:where(summary) {
+  display: list-item;
+}

部分文件因为文件数量过多而无法显示