Browse Source

Merge branch 'http_test' into insist

qinzhipeng_v@didiglobal.com 4 years ago
parent
commit
9856cd53ad
52 changed files with 662 additions and 423 deletions
  1. 1 6
      src/App.vue
  2. 2 1
      src/apiConfig/api.js
  3. BIN
      src/assets/current.png
  4. BIN
      src/assets/expand.png
  5. 46 4
      src/components/newLayout/Aside.vue
  6. 4 3
      src/components/newLayout/Head.vue
  7. 17 0
      src/icons/svg/bug.svg
  8. 13 0
      src/icons/svg/config.svg
  9. 17 0
      src/icons/svg/iteration.svg
  10. 7 0
      src/icons/svg/member.svg
  11. 13 12
      src/icons/svg/person-workbench.svg
  12. 16 4
      src/icons/svg/project-manage.svg
  13. 59 0
      src/icons/svg/project.svg
  14. 18 0
      src/icons/svg/report.svg
  15. 17 0
      src/icons/svg/requirement.svg
  16. 10 0
      src/icons/svg/select-business-active.svg
  17. 10 0
      src/icons/svg/select-business.svg
  18. 19 1
      src/icons/svg/statistics.svg
  19. 18 0
      src/icons/svg/task.svg
  20. 39 12
      src/icons/svg/team-workbench.svg
  21. 8 0
      src/icons/svg/team.svg
  22. 19 0
      src/icons/svg/test-case.svg
  23. 17 0
      src/icons/svg/test-plain.svg
  24. 17 0
      src/icons/svg/version.svg
  25. 0 0
      src/icons/svg/团队工作台.svg
  26. 0 5
      src/icons/svg/工作台.svg
  27. 0 0
      src/icons/svg/项目管理.svg
  28. 2 119
      src/layout/components/Navbar.vue
  29. 15 2
      src/layout/components/Sidebar/index.vue
  30. 23 48
      src/router/index.js
  31. 68 0
      src/router/newRouter.js
  32. 3 4
      src/styles/detail-pages.scss
  33. 7 5
      src/utils/request.js
  34. 0 3
      src/views/Platform/useCase/queryUse.vue
  35. 1 1
      src/views/ToConfigure/components/bizConfigure.vue
  36. 19 9
      src/views/ToConfigure/components/memberConfiguration.vue
  37. 18 6
      src/views/ToConfigure/components/modifyNotice.vue
  38. 1 1
      src/views/ToConfigure/index.vue
  39. 56 38
      src/views/business/bizIdSelect.vue
  40. 3 3
      src/views/projectManage/Drawer.vue
  41. 0 1
      src/views/projectManage/bugList/details/bugTableDialog.vue
  42. 8 4
      src/views/projectManage/requirement/requirementDetail.vue
  43. 6 3
      src/views/projectManage/version/list/index.vue
  44. 4 1
      src/views/quality/allStatistics.vue
  45. 1 1
      src/views/quality/components/developmentCycle.vue
  46. 2 2
      src/views/quality/defectStatistics.vue
  47. 4 5
      src/views/quality/qualityDefectProcess.vue
  48. 4 5
      src/views/quality/qualityHotpatchProcess.vue
  49. 24 102
      src/views/quality/qualityMeasurement.vue
  50. 4 5
      src/views/quality/qualityProcess.vue
  51. 0 1
      src/views/workbench/bugTableList.vue
  52. 2 6
      src/views/workbench/team/index.vue

+ 1 - 6
src/App.vue

@@ -87,12 +87,7 @@ export default {
             this.$router.options.routes[i].children.push(route)
           }
         }
-        // 去掉项目管理的路由
-        const oldRouter = this.$router.options.routes.filter(item => {
-          if (!item.name) return false
-          return item.name.search(/工作台|业务线|项目管理/) < 0
-        })
-        this.$store.dispatch('data/setRoutes', oldRouter)
+        this.$store.dispatch('data/setRoutes', this.$router.options.routes)
       })
     }
   }

+ 2 - 1
src/apiConfig/api.js

@@ -1,7 +1,8 @@
 import { requestIp } from './requestIP'
 
 /*eslint-disable*/   //规避eslint的检查,如没有eslint可不写
-export const mockUrl = 'http://10.179.24.123:8980' // 线上
+
+export const mockUrl = 'http://10.179.53.173:8980' // 线上
 
 export const qualityUrl = 'http://10.190.6.249:8898' // 质量度量
 

BIN
src/assets/current.png


BIN
src/assets/expand.png


+ 46 - 4
src/components/newLayout/Aside.vue

@@ -10,21 +10,40 @@
     >
       <div class="business">
         <div
+          v-if="false"
           class="business-select"
           :class="{ 'show-business-all': showBizIdSelect }"
-          @click="handleClickRouter({ name: '业务线选择' })"
           @mouseenter="showBizIdSelect = true"
           @mouseleave="showBizIdSelect = false"
         >
           <img src="../../assets/业务线选择.png" class="business-logo"><span v-show="showBizIdSelect">项目管理首页</span>
         </div>
         {{ bizName }}
+        <div
+          class="icon-select"
+          @mouseenter="showBizIdSelect = true"
+          @mouseleave="showBizIdSelect = false"
+        >
+          <svg-icon
+            v-show="!showBizIdSelect"
+            icon-class="select-business"
+            @click="handleClickRouter({ name: '业务线选择' })"
+          />
+          <svg-icon
+            v-show="showBizIdSelect"
+            icon-class="select-business-active"
+            @click="handleClickRouter({ name: '业务线选择' })"
+          />
+        </div>
       </div>
       <ul class="all-pages-list">
         <li v-for="item in routesList" :key="item.path" @click="handleClickRouter(item)">
           <template v-if="!item.hidden">
             <div v-if="item.cutOff" class="cut-off" />
-            <div class="page-item" :class="{ 'active-page': activePage === item.name }">{{ item.name }}</div>
+            <div class="page-item" :class="{ 'active-page': activePage === item.name }">
+              <svg-icon v-if="item.icon" v-show="navTagType === 1" :icon-class="item.icon" />
+              {{ item.name }}
+            </div>
           </template>
         </li>
       </ul>
@@ -158,6 +177,12 @@ section {
     font-size: 18px;
     border-bottom: 1px solid #eeeeee;
     white-space: nowrap;
+    svg {
+      cursor: pointer;
+    }
+    .icon-select {
+      margin-left: 2px;
+    }
     .business-select {
       cursor: pointer;
       position: absolute;
@@ -196,11 +221,13 @@ section {
     }
     .page-item {
       width: 100%;
-      text-align: center;
       white-space: nowrap;
-      padding: 5px 0;
+      padding: 5px 0 2px 27px;
       margin-bottom: 10px;
       cursor: pointer;
+      svg {
+        margin-right: 5px;
+      }
     }
     .active-page {
       color: #409eff;
@@ -226,6 +253,7 @@ section {
     justify-content: flex-end;
     font-size: 30px;
     img {
+      cursor: pointer;
       height: 20px;
       margin-top: 10px;
       margin-right: 10px;
@@ -261,6 +289,12 @@ section {
     font-size: 18px;
     border-right: 1px solid #eeeeee;
     white-space: nowrap;
+    svg {
+      cursor: pointer;
+    }
+    .icon-select {
+      margin-left: 2px;
+    }
     .business-select {
       cursor: pointer;
       position: absolute;
@@ -344,4 +378,12 @@ section {
     border-bottom-right-radius: 4px;
   }
 }
+.iconFont {
+  font-size: 14px;
+  margin: 3px 4px 0;
+}
+.iconFont:hover {
+  cursor: pointer;
+  color: #409eff;
+}
 </style>

+ 4 - 3
src/components/newLayout/Head.vue

@@ -143,13 +143,14 @@ export default {
   font-size: 14px;
   color: #ffffff;
   text-align: center;
-  margin-bottom: 28px;
+  margin-bottom: 20px;
+  padding: 5px 0 9px 0;
   cursor: pointer;
   .icon {
     position: relative;
     color: #ffffff;
-    height: 20px;
-    width: 20px;
+    height: 27px;
+    width: 33px;
     margin: 7px auto;
     font-size: 32px;
   }

+ 17 - 0
src/icons/svg/bug.svg

@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.939" height="13.939" viewBox="0 0 13.939 13.939">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: url(#linear-gradient);
+      }
+    </style>
+    <linearGradient id="linear-gradient" x1="1" x2="0.18" y2="0.917" gradientUnits="objectBoundingBox">
+      <stop offset="0" stop-color="#f87046"/>
+      <stop offset="1" stop-color="#f8c146"/>
+    </linearGradient>
+  </defs>
+  <g id="虫子" transform="translate(-56.889 -85.333)">
+    <path id="路径_13029" data-name="路径 13029" class="cls-1" d="M68.04,205.151h2.788v-.929H68.04v-1.951a2.959,2.959,0,0,0,2.323-3.159h-.929a2.221,2.221,0,0,1-2.323,2.323h-6.5a2.233,2.233,0,0,1-2.323-2.323h-.929a3.109,3.109,0,0,0,2.323,3.159v1.951H56.889v.929h2.788v1.394a3.852,3.852,0,0,0,.279,1.487,3.01,3.01,0,0,0-2.6,3.159h.929a2.173,2.173,0,0,1,2.137-2.323,4.188,4.188,0,0,0,3.438,1.859,4.064,4.064,0,0,0,3.438-1.859,2.225,2.225,0,0,1,2.137,2.323h.929a3.01,3.01,0,0,0-2.6-3.159,3.852,3.852,0,0,0,.279-1.487ZM63.858,209.8a3.292,3.292,0,0,1-3.252-3.252v-4.182h2.788v5.576h.929v-5.576h2.788v4.182A3.292,3.292,0,0,1,63.858,209.8Z" transform="translate(0 -111.919)"/>
+    <path id="路径_13030" data-name="路径 13030" class="cls-1" d="M287.7,85.333a3.292,3.292,0,0,0-3.252,3.252h6.5A3.292,3.292,0,0,0,287.7,85.333Zm-2.137,2.323a2.336,2.336,0,0,1,4.275,0Z" transform="translate(-223.839)"/>
+  </g>
+</svg>

File diff suppressed because it is too large
+ 13 - 0
src/icons/svg/config.svg


+ 17 - 0
src/icons/svg/iteration.svg

@@ -0,0 +1,17 @@
+<svg id="编组_6" data-name="编组 6" xmlns="http://www.w3.org/2000/svg" width="14.935" height="14.935" viewBox="0 0 14.935 14.935">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: #80c9ff;
+      }
+
+      .cls-2 {
+        fill: #409eff;
+      }
+    </style>
+  </defs>
+  <path id="Fill_1" data-name="Fill 1" class="cls-1" d="M7.468,14.935A7.468,7.468,0,1,0,0,7.468,7.476,7.476,0,0,0,7.468,14.935Zm0-14.058A6.59,6.59,0,1,1,.88,7.468,6.6,6.6,0,0,1,7.468.877Z"/>
+  <g id="bijiben" transform="translate(3.777 5.307)">
+    <path id="Fill_2" data-name="Fill 2" class="cls-2" d="M4.776,4.149,2.449,1.518.679,3.5,0,2.739,2.449,0,4.776,2.6,6.764.38l.7.759Z" transform="translate(0)"/>
+  </g>
+</svg>

+ 7 - 0
src/icons/svg/member.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" width="12.612" height="13.924" viewBox="0 0 12.612 13.924">
+  <g id="成员" transform="translate(-216.813 -186.112)">
+    <path id="路径_13035" data-name="路径 13035" d="M218.956,290.772h-1.9a.247.247,0,1,1,0-.493h1.9a.247.247,0,1,1,0,.493Zm0,3.408h-1.9a.247.247,0,0,1,0-.493h1.9a.247.247,0,1,1,0,.493Zm0,3.408h-1.9a.247.247,0,1,1,0-.493h1.9a.247.247,0,1,1,0,.493Zm4.981-3.9a2.194,2.194,0,1,1,2.192-2.194A2.194,2.194,0,0,1,223.937,293.686Zm0-3.893a1.693,1.693,0,1,1,0,.012Z" transform="translate(0 -100.981)" fill="#444"/>
+    <path id="路径_13036" data-name="路径 13036" d="M369.859,491.45a.246.246,0,0,1-.246-.247,3.526,3.526,0,1,0-7.049,0,.247.247,0,1,1-.493,0,4.019,4.019,0,1,1,8.036,0A.247.247,0,0,1,369.859,491.45Z" transform="translate(-142.153 -294.543)" fill="#444"/>
+    <path id="路径_13037" data-name="路径 13037" d="M269.462,200.035H259.22a.74.74,0,0,1-.74-.74V186.851a.74.74,0,0,1,.74-.74h10.242a.74.74,0,0,1,.74.74V199.3A.74.74,0,0,1,269.462,200.035ZM259.22,186.6a.247.247,0,0,0-.247.247V199.3a.247.247,0,0,0,.247.247h10.242a.246.246,0,0,0,.247-.247V186.851a.247.247,0,0,0-.247-.247Z" transform="translate(-40.777 0)" fill="#444"/>
+  </g>
+</svg>

+ 13 - 12
src/icons/svg/person-workbench.svg

@@ -1,16 +1,17 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="19.997" height="19.964" viewBox="0 0 19.997 19.964">
+<svg xmlns="http://www.w3.org/2000/svg" width="22.159" height="22.124" viewBox="0 0 22.159 22.124">
   <defs>
-    <clipPath id="clip-path">
-      <path id="Clip_2" data-name="Clip 2" d="M0,0H20V19.964H0Z" transform="translate(0 0.011)" fill="none"/>
-    </clipPath>
+    <style>
+      .cls-1 {
+        fill: #fff;
+      }
+
+      .cls-2 {
+        fill: #409eff;
+      }
+    </style>
   </defs>
-  <g id="icon_personal" transform="translate(0 -0.011)">
-    <g id="编组">
-      <path id="Clip_2-2" data-name="Clip 2" d="M0,0H20V19.964H0Z" transform="translate(0 0.011)" fill="none"/>
-      <g id="编组-2" data-name="编组" clip-path="url(#clip-path)">
-        <path id="Fill_1" data-name="Fill 1" d="M18.539,19.965H1.486a1.533,1.533,0,0,1-1.178-.537,1.346,1.346,0,0,1-.294-1.049,5.376,5.376,0,0,1,1.633-3.547C3.361,13.085,6.171,12.2,10,12.2s6.638.886,8.353,2.633a5.415,5.415,0,0,1,1.633,3.574,1.4,1.4,0,0,1-.321,1.075A1.42,1.42,0,0,1,18.539,19.965Zm-8.513-6.557c-3.491,0-6,.759-7.469,2.257a4.159,4.159,0,0,0-1.312,2.767v.107a.244.244,0,0,0,.027.135c.026.052.1.08.214.08H18.539c.112,0,.188-.028.214-.08a.15.15,0,0,0,.027-.162v-.107a4.159,4.159,0,0,0-1.312-2.768C15.994,14.159,13.49,13.408,10.026,13.408Zm0-1.586A5.911,5.911,0,0,1,10.026,0h5.3a.625.625,0,0,1,.616.618v5.32A5.942,5.942,0,0,1,10.026,11.822Zm0-10.64a4.7,4.7,0,0,0,0,9.4,4.717,4.717,0,0,0,4.685-4.7v-4.7Z" transform="translate(0 0.011)" fill="#fff"/>
-      </g>
-    </g>
-    <path id="Fill_3" data-name="Fill 3" d="M3.395,3a.674.674,0,0,1-.606-.711V.711A.674.674,0,0,1,3.395,0,.657.657,0,0,1,4,.711V2.289A.65.65,0,0,1,3.395,3ZM.6,3A.673.673,0,0,1,0,2.289V.711A.673.673,0,0,1,.6,0a.658.658,0,0,1,.606.711V2.289A.65.65,0,0,1,.6,3Z" transform="translate(7 3)" fill="#fff"/>
+  <g id="组_2632" data-name="组 2632" transform="translate(0 -0.011)">
+    <path id="Fill_1" data-name="Fill 1" class="cls-1" d="M20.544,22.124H1.647a1.7,1.7,0,0,1-1.306-.6,1.492,1.492,0,0,1-.326-1.162,5.957,5.957,0,0,1,1.81-3.931c1.9-1.936,5.013-2.918,9.255-2.918s7.356.982,9.256,2.918a6,6,0,0,1,1.809,3.96,1.549,1.549,0,0,1-.356,1.191A1.573,1.573,0,0,1,20.544,22.124Zm-9.434-7.266c-3.868,0-6.653.842-8.277,2.5a4.609,4.609,0,0,0-1.454,3.067v.119a.27.27,0,0,0,.03.15c.029.057.113.089.237.089h18.9c.124,0,.208-.032.237-.089a.166.166,0,0,0,.03-.18V20.4a4.609,4.609,0,0,0-1.454-3.067C17.724,15.69,14.949,14.858,11.111,14.858Zm0-1.757a6.551,6.551,0,0,1,0-13.1h5.874a.693.693,0,0,1,.682.685v5.9A6.585,6.585,0,0,1,11.111,13.1Z" transform="translate(0 0.011)"/>
+    <path id="Fill_3" data-name="Fill 3" class="cls-2" d="M3.762,3.324a.747.747,0,0,1-.671-.788V.788A.747.747,0,0,1,3.762,0a.728.728,0,0,1,.67.788V2.536A.72.72,0,0,1,3.762,3.324Zm-3.092,0A.746.746,0,0,1,0,2.536V.788A.746.746,0,0,1,.67,0a.729.729,0,0,1,.671.788V2.536A.72.72,0,0,1,.67,3.324Z" transform="translate(7.757 3.323)"/>
   </g>
 </svg>

+ 16 - 4
src/icons/svg/project-manage.svg

@@ -1,6 +1,18 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="19.997" height="18.376" viewBox="0 0 19.997 18.376">
-  <g id="项目管理_base_goods_project_" data-name="项目管理 base_goods_project " transform="translate(-35.328 -75.769)">
-    <path id="路径_1" data-name="路径 1" d="M211.017,436.437H202.57a.533.533,0,1,0,0,1.066h8.447a.542.542,0,0,0,.533-.533A.557.557,0,0,0,211.017,436.437Zm-12.041-.288a.832.832,0,1,0,.832.832A.833.833,0,0,0,198.976,436.149Zm0-4.533a.847.847,0,0,0-.832.832.832.832,0,1,0,.832-.832Zm12.073.363H202.57a.533.533,0,0,0,0,1.067h8.447a.542.542,0,0,0,.533-.533A.521.521,0,0,0,211.049,431.979Z" transform="translate(-159.425 -348.435)" fill="#fff"/>
-    <path id="路径_2" data-name="路径 2" d="M54.013,78.691H48.179l-.1-.267a3.648,3.648,0,0,0-3.306-2.656H36.64a1.288,1.288,0,0,0-1.312,1.269V92.876a1.289,1.289,0,0,0,1.312,1.269H54.034a1.291,1.291,0,0,0,1.29-1.269V79.96A1.288,1.288,0,0,0,54.013,78.691ZM52.829,92.94H38.3c-1.429,0-1.61-.085-1.61-1.61V79.939H52.723a1.638,1.638,0,0,1,1.13.267c.2.213.2.555.192,1.024V91.553C54.034,92.94,53.97,92.94,52.829,92.94ZM37.877,76.846H43.4c2.208,0,2.688.523,3.05,1.152l.267.661H36.693V77.6c0-.341.043-.523.149-.629C36.992,76.825,37.312,76.836,37.877,76.846Z" transform="translate(0)" fill="#fff"/>
+<svg xmlns="http://www.w3.org/2000/svg" width="23.801" height="21.871" viewBox="0 0 23.801 21.871">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: #fff;
+      }
+    </style>
+  </defs>
+  <g id="组_2634" data-name="组 2634" transform="translate(-28.1 -244.156)">
+    <g id="组_2631" data-name="组 2631">
+      <g id="项目管理_base_goods_project_" data-name="项目管理 base_goods_project " transform="translate(-7.228 168.387)">
+        <path id="路径_13008" data-name="路径 13008" class="cls-1" d="M57.567,79.247H50.624l-.114-.317a4.342,4.342,0,0,0-3.935-3.161H36.889a1.533,1.533,0,0,0-1.561,1.511V96.13a1.534,1.534,0,0,0,1.561,1.511h20.7a1.536,1.536,0,0,0,1.536-1.511V80.758A1.533,1.533,0,0,0,57.567,79.247ZM56.158,96.206H38.87c-1.7,0-1.917-.1-1.917-1.917V80.732H56.031a1.95,1.95,0,0,1,1.346.317c.241.254.241.66.228,1.219V94.556C57.593,96.206,57.516,96.206,56.158,96.206Zm-17.8-19.155h6.575c2.628,0,3.2.622,3.63,1.371l.317.787H36.953V77.952c0-.406.051-.622.178-.749C37.308,77.026,37.689,77.038,38.362,77.051Z" transform="translate(0 0)"/>
+        <path id="路径_13007" data-name="路径 13007" class="cls-1" d="M213.465,437.353H203.412a.635.635,0,0,0,0,1.269h10.053a.645.645,0,0,0,.635-.635A.663.663,0,0,0,213.465,437.353Zm-14.331-.343a.99.99,0,1,0,.99.99.991.991,0,0,0-.99-.99Zm0-5.395a1.008,1.008,0,0,0-.99.99.99.99,0,1,0,.99-.99Zm14.369.432H203.412a.635.635,0,0,0,0,1.269h10.053a.645.645,0,0,0,.635-.635A.62.62,0,0,0,213.5,432.048Z" transform="translate(-158.779 -347.025)"/>
+      </g>
+      <path id="矩形_2300" data-name="矩形 2300" class="cls-1" d="M1.2,0H10a3,3,0,0,1,3,3V3a0,0,0,0,1,0,0H0A0,0,0,0,1,0,3V1.2A1.2,1.2,0,0,1,1.2,0Z" transform="translate(29 245)"/>
+    </g>
   </g>
 </svg>

+ 59 - 0
src/icons/svg/project.svg

@@ -0,0 +1,59 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="10.5" height="12" viewBox="0 0 10.5 12">
+  <defs>
+    <style>
+      .cls-1, .cls-3, .cls-5 {
+        fill: none;
+      }
+
+      .cls-1 {
+        stroke: #1e88ed;
+      }
+
+      .cls-1, .cls-2 {
+        stroke-width: 0.5px;
+      }
+
+      .cls-2 {
+        fill: #fff;
+      }
+
+      .cls-2, .cls-3 {
+        stroke: #60c1fd;
+      }
+
+      .cls-3 {
+        stroke-width: 0.3px;
+      }
+
+      .cls-4 {
+        stroke: none;
+      }
+    </style>
+  </defs>
+  <g id="组_2636" data-name="组 2636" transform="translate(-100 -99)">
+    <g id="组_2637" data-name="组 2637">
+      <g id="矩形_2302" data-name="矩形 2302" class="cls-1" transform="translate(102 99)">
+        <rect class="cls-4" width="8.5" height="9.5" rx="1"/>
+        <rect class="cls-5" x="0.25" y="0.25" width="8" height="9" rx="0.75"/>
+      </g>
+      <g id="组_2635" data-name="组 2635">
+        <g id="矩形_2301" data-name="矩形 2301" class="cls-2" transform="translate(100 101)">
+          <rect class="cls-4" width="9" height="10" rx="1"/>
+          <rect class="cls-5" x="0.25" y="0.25" width="8.5" height="9.5" rx="0.75"/>
+        </g>
+        <g id="矩形_2303" data-name="矩形 2303" class="cls-3" transform="translate(102 104)">
+          <rect class="cls-4" width="5" height="0.5" rx="0.25"/>
+          <rect class="cls-5" x="0.15" y="0.15" width="4.7" height="0.2" rx="0.1"/>
+        </g>
+        <g id="矩形_2304" data-name="矩形 2304" class="cls-3" transform="translate(102 106)">
+          <rect class="cls-4" width="5" height="0.5" rx="0.25"/>
+          <rect class="cls-5" x="0.15" y="0.15" width="4.7" height="0.2" rx="0.1"/>
+        </g>
+        <g id="矩形_2305" data-name="矩形 2305" class="cls-3" transform="translate(102 108)">
+          <rect class="cls-4" width="5" height="0.5" rx="0.25"/>
+          <rect class="cls-5" x="0.15" y="0.15" width="4.7" height="0.2" rx="0.1"/>
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>

+ 18 - 0
src/icons/svg/report.svg

@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="10.938" height="14.112" viewBox="0 0 10.938 14.112">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: #f8cf60;
+      }
+
+      .cls-2 {
+        fill: #6bd87c;
+      }
+    </style>
+  </defs>
+  <g id="报告" transform="translate(-291.229 -239.921)">
+    <path id="路径_13018" data-name="路径 13018" class="cls-1" d="M599.289,624.912h-1.232a.422.422,0,0,1,0-.844h1.232a.224.224,0,0,0,.22-.219v-2.667a.422.422,0,1,1,.844,0v2.667A1.059,1.059,0,0,1,599.289,624.912Z" transform="translate(-299.248 -371.943)"/>
+    <path id="路径_13019" data-name="路径 13019" class="cls-2" d="M300.665,254.033h-7.917a1.524,1.524,0,0,1-1.519-1.519V241.44a1.524,1.524,0,0,1,1.519-1.519h5.824a.271.271,0,0,1,.186.084l2.988,3.106a1.526,1.526,0,0,1,.422,1.047v8.356A1.509,1.509,0,0,1,300.665,254.033Zm-7.917-13.589a1.016,1.016,0,0,0-1.013,1.013v11.074a1.016,1.016,0,0,0,1.013,1.013h7.917a1.016,1.016,0,0,0,1.013-1.013v-8.356a1.025,1.025,0,0,0-.287-.709l-2.92-3.022Z"/>
+    <path id="路径_13020" data-name="路径 13020" class="cls-2" d="M344.832,244.492h-3.224a.26.26,0,0,1-.253-.253V240.9a.253.253,0,1,1,.506,0v3.089h2.971a.253.253,0,1,1,0,.506Zm-4.456-1.671h-4.811a.253.253,0,0,1,0-.506h4.811a.253.253,0,0,1,0,.506Zm0,2.093h-4.811a.253.253,0,1,1,0-.506h4.811a.253.253,0,0,1,0,.506Zm1.5,2.076h-6.3a.253.253,0,1,1,0-.506h6.3a.253.253,0,1,1,0,.506Z" transform="translate(-43.052 -0.706)"/>
+  </g>
+</svg>

+ 17 - 0
src/icons/svg/requirement.svg

@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10.78" height="12.691" viewBox="0 0 10.78 12.691">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: url(#linear-gradient);
+      }
+    </style>
+    <linearGradient id="linear-gradient" x1="1" x2="-0.17" y2="1.186" gradientUnits="objectBoundingBox">
+      <stop offset="0" stop-color="#f87046"/>
+      <stop offset="1" stop-color="#fcd56e"/>
+    </linearGradient>
+  </defs>
+  <g id="icon_需求2" transform="translate(-146.749 -82)">
+    <path id="路径_13012" data-name="路径 13012" class="cls-1" d="M272.886,82.571l-.377-.375a.714.714,0,0,0-.983,0l-.33.329,0,0-3.048,3.067.064,1.341,1.342.064,2.622-2.641h0l.758-.758a.7.7,0,0,0,.2-.49A.848.848,0,0,0,272.886,82.571Zm-3.575,3.806-.524-.025-.025-.526,2.433-2.449.55.549Zm3.193-3.208-.331.331-.549-.548.329-.328a.077.077,0,0,1,.129,0l.377.375a.452.452,0,0,1,.072.107A.091.091,0,0,1,272.5,83.169Zm-8.116,4.853h2.167a.3.3,0,1,0,0-.6h-2.167a.3.3,0,1,0,0,.6Zm6.206,1.619h-6.206a.3.3,0,1,0,0,.6h6.206a.3.3,0,1,0,0-.6Zm0,2.249h-6.206a.3.3,0,1,0,0,.6h6.206a.3.3,0,0,0,0-.6Z" transform="translate(-115.605)"/>
+    <path id="路径_13013" data-name="路径 13013" class="cls-1" d="M156.721,86.359a.3.3,0,0,0-.3.3v6.516a1.093,1.093,0,0,1-1.1.914h-7.05a.915.915,0,0,1-.914-.914V83.522a.915.915,0,0,1,.915-.914h4.625a.3.3,0,1,0,0-.6h-4.625a1.52,1.52,0,0,0-1.519,1.518v9.655a1.52,1.52,0,0,0,1.519,1.518h7.05a1.69,1.69,0,0,0,1.705-1.518V86.661A.3.3,0,0,0,156.721,86.359Z" transform="translate(0 -0.004)"/>
+  </g>
+</svg>

+ 10 - 0
src/icons/svg/select-business-active.svg

@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="12.498" height="11.601" viewBox="0 0 12.498 11.601">
+  <g id="组_2648" data-name="组 2648" transform="translate(6386.718 121.762)">
+    <g id="组_2644" data-name="组 2644" transform="translate(-6386.718 -121.762)">
+      <path id="减去_1" data-name="减去 1" d="M3.584,4.137a6.168,6.168,0,0,1-1.457-.16A4.116,4.116,0,0,1,1,3.539a2.345,2.345,0,0,1-.734-.652A1.365,1.365,0,0,1,0,2.087a1.475,1.475,0,0,1,.255-.818A2.282,2.282,0,0,1,.988.585,4.056,4.056,0,0,1,2.156.126a2.867,2.867,0,0,1,.672-.1c.1-.006.213-.013.377-.025L2.78.544C1.383.678.652,1.4.652,2.047c0,.831,1.336,1.508,2.979,1.508,1.705,0,2.958-.634,2.978-1.508a.906.906,0,0,0-.226-.624.021.021,0,0,0-.009-.012l.274-.355h0a.846.846,0,0,1,.329.255,1.037,1.037,0,0,1,.26.743,1.34,1.34,0,0,1-.279.806,2.464,2.464,0,0,1-.774.662,4.539,4.539,0,0,1-1.158.449,5.828,5.828,0,0,1-1.28.164Z" transform="translate(0 6.742)" fill="#409eff"/>
+      <g id="点击添加" transform="matrix(0.799, 0.602, -0.602, 0.799, 6.33, 0)">
+        <path id="路径_13033" data-name="路径 13033" d="M5.643,0H2.093a1.076,1.076,0,0,0-.979.625.455.455,0,0,0-.023.053L.142,3.532A1.169,1.169,0,0,0,.595,5.107a1.193,1.193,0,0,0,1.416-.175V7.488a1.238,1.238,0,0,0,2.475,0V5.4c2.106-.185,2.128-.188,2.143-.191A1.194,1.194,0,0,0,7.723,4.07c0-.041,0-.137-.636-3.164C6.9.224,6.534,0,5.643,0ZM1.7.906A.438.438,0,0,1,2.093.648h3.55c.7,0,.73.112.814.411.221,1.056.584,2.806.617,3.026-.01.293-.289.444-.551.487l-2.39.211a.324.324,0,0,0-.3.323V7.488a.589.589,0,0,1-1.178,0V3.407A.324.324,0,0,0,2.032,3.3L1.64,4.372a.558.558,0,0,1-.723.172.524.524,0,0,1-.25-.321.513.513,0,0,1,.054-.4.324.324,0,0,0,.028-.062L1.7.906Zm0,0" transform="translate(0 0)" fill="#409eff"/>
+      </g>
+    </g>
+  </g>
+</svg>

+ 10 - 0
src/icons/svg/select-business.svg

@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="12.498" height="11.601" viewBox="0 0 12.498 11.601">
+  <g id="组_2643" data-name="组 2643" transform="translate(6386.718 121.762)">
+    <g id="组_2644" data-name="组 2644" transform="translate(-6386.718 -121.762)">
+      <path id="减去_1" data-name="减去 1" d="M3.584,4.137a6.168,6.168,0,0,1-1.457-.16A4.116,4.116,0,0,1,1,3.539a2.345,2.345,0,0,1-.734-.652A1.365,1.365,0,0,1,0,2.087a1.475,1.475,0,0,1,.255-.818A2.282,2.282,0,0,1,.988.585,4.056,4.056,0,0,1,2.156.126a2.867,2.867,0,0,1,.672-.1c.1-.006.213-.013.377-.025L2.78.544C1.383.678.652,1.4.652,2.047c0,.831,1.336,1.508,2.979,1.508,1.705,0,2.958-.634,2.978-1.508a.906.906,0,0,0-.226-.624.021.021,0,0,0-.009-.012l.274-.355h0a.846.846,0,0,1,.329.255,1.037,1.037,0,0,1,.26.743,1.34,1.34,0,0,1-.279.806,2.464,2.464,0,0,1-.774.662,4.539,4.539,0,0,1-1.158.449,5.828,5.828,0,0,1-1.28.164Z" transform="translate(0 6.742)" fill="#333"/>
+      <g id="点击添加" transform="matrix(0.799, 0.602, -0.602, 0.799, 6.33, 0)">
+        <path id="路径_13033" data-name="路径 13033" d="M5.643,0H2.093a1.076,1.076,0,0,0-.979.625.455.455,0,0,0-.023.053L.142,3.532A1.169,1.169,0,0,0,.595,5.107a1.193,1.193,0,0,0,1.416-.175V7.488a1.238,1.238,0,0,0,2.475,0V5.4c2.106-.185,2.128-.188,2.143-.191A1.194,1.194,0,0,0,7.723,4.07c0-.041,0-.137-.636-3.164C6.9.224,6.534,0,5.643,0ZM1.7.906A.438.438,0,0,1,2.093.648h3.55c.7,0,.73.112.814.411.221,1.056.584,2.806.617,3.026-.01.293-.289.444-.551.487l-2.39.211a.324.324,0,0,0-.3.323V7.488a.589.589,0,0,1-1.178,0V3.407A.324.324,0,0,0,2.032,3.3L1.64,4.372a.558.558,0,0,1-.723.172.524.524,0,0,1-.25-.321.513.513,0,0,1,.054-.4.324.324,0,0,0,.028-.062L1.7.906Zm0,0" transform="translate(0 0)" fill="#333"/>
+      </g>
+    </g>
+  </g>
+</svg>

+ 19 - 1
src/icons/svg/statistics.svg

@@ -1 +1,19 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M512.056889 1024C794.453333 1024 1024 794.282667 1024 512s-229.717333-512-511.943111-512C229.888 0 0 229.603556 0 512s229.717333 512 512.056889 512z m0-963.868444c249.116444 0 451.811556 202.752 451.811555 451.868444 0 249.173333-202.695111 451.868444-451.811555 451.868444-249.059556 0-451.754667-202.752-451.754667-451.868444C60.302222 262.826667 262.997333 60.131556 512 60.131556z" fill="#565656" p-id="2162"></path><path d="M586.524444 648.305778l-159.630222-180.337778L305.493333 603.704889l-46.535111-52.053333 167.822222-187.733334L586.524444 542.321778 722.773333 389.916444l48.241778 52.053334z" fill="#409EFF" p-id="2163"></path><path d="M824.888889 881.777778m-85.333333 0a85.333333 85.333333 0 1 0 170.666666 0 85.333333 85.333333 0 1 0-170.666666 0Z" fill="#409EFF" p-id="2164"></path></svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="13.094" height="13.097" viewBox="0 0 13.094 13.097">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: #65eba2;
+      }
+
+      .cls-2 {
+        fill: #f8ce5e;
+      }
+    </style>
+  </defs>
+  <g id="统计" transform="translate(-84.8 -75.6)">
+    <g id="组_2646" data-name="组 2646">
+      <path id="路径_13023" data-name="路径 13023" class="cls-1" d="M85.366,120.264a5.589,5.589,0,0,1,.45-2.206,5.784,5.784,0,0,1,3.041-3.041,5.571,5.571,0,0,1,1.64-.422v6.236h6.236a5.617,5.617,0,0,1-.422,1.64,5.784,5.784,0,0,1-3.041,3.041,5.631,5.631,0,0,1-4.412,0,5.784,5.784,0,0,1-3.041-3.041,5.584,5.584,0,0,1-.452-2.209m-.566,0a6.264,6.264,0,0,0,12.528,0H91.064V114A6.293,6.293,0,0,0,84.8,120.264Z" transform="translate(0 -37.831)"/>
+      <path id="路径_13024" data-name="路径 13024" class="cls-2" d="M546.665,76.194a5.7,5.7,0,0,1,5.1,5.1h-5.1v-5.1M546.1,75.6v6.264h6.264A6.265,6.265,0,0,0,546.1,75.6Z" transform="translate(-454.47 0)"/>
+    </g>
+  </g>
+</svg>

+ 18 - 0
src/icons/svg/task.svg

@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="11" height="12.951" viewBox="0 0 11 12.951">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: url(#linear-gradient);
+      }
+    </style>
+    <linearGradient id="linear-gradient" x1="1" x2="0.086" y2="1" gradientUnits="objectBoundingBox">
+      <stop offset="0" stop-color="#b37cff"/>
+      <stop offset="1" stop-color="#f793eb"/>
+    </linearGradient>
+  </defs>
+  <g id="组_2645" data-name="组 2645" transform="translate(-107 -172.266)">
+    <path id="路径_13014" data-name="路径 13014" class="cls-1" d="M226.808,178.651a.84.84,0,0,1-.432-.119l-4.094-2.418a.157.157,0,0,0-.166,0l-4.092,2.418a.843.843,0,0,1-.853.007.962.962,0,0,1-.471-.84V166.654a.926.926,0,0,1,.892-.954h9.216a.925.925,0,0,1,.892.954V177.7a.962.962,0,0,1-.471.84A.853.853,0,0,1,226.808,178.651Zm-.082-.711a.154.154,0,0,0,.162,0,.277.277,0,0,0,.125-.244V166.652a.243.243,0,0,0-.2-.264h-9.216a.243.243,0,0,0-.2.264V177.7a.277.277,0,0,0,.125.244.15.15,0,0,0,.162,0l4.094-2.418a.837.837,0,0,1,.864,0Z" transform="translate(-109.7 6.566)"/>
+    <path id="路径_13015" data-name="路径 13015" class="cls-1" d="M432.5,299.88a1.59,1.59,0,1,1,1.6-1.59A1.6,1.6,0,0,1,432.5,299.88Zm0-2.452a.862.862,0,1,0,.872.862A.869.869,0,0,0,432.5,297.428Z" transform="translate(-320.122 -121.994)"/>
+    <path id="路径_13016" data-name="路径 13016" class="cls-1" d="M386.188,552.73h-4.423a.365.365,0,1,1,0-.73h4.421a.365.365,0,0,1,0,.73Z" transform="translate(-271.599 -372.258)"/>
+  </g>
+</svg>

+ 39 - 12
src/icons/svg/team-workbench.svg

@@ -1,26 +1,53 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24.997" height="20.964" viewBox="0 0 24.997 20.964">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="27.958" height="22.475" viewBox="0 0 27.958 22.475">
   <defs>
+    <style>
+      .cls-1 {
+        fill: none;
+      }
+
+      .cls-2 {
+        clip-path: url(#clip-path);
+      }
+
+      .cls-3 {
+        fill: #fff;
+      }
+
+      .cls-4 {
+        fill: #409eff;
+      }
+
+      .cls-5 {
+        clip-path: url(#clip-path-2);
+      }
+    </style>
     <clipPath id="clip-path">
-      <path id="Clip_2" data-name="Clip 2" d="M0,0H20V19.964H0Z" transform="translate(0 0.011)" fill="none"/>
+      <path id="Clip_2" data-name="Clip 2" class="cls-1" d="M0,0H22.6V21.4H0Z"/>
+    </clipPath>
+    <clipPath id="clip-path-2">
+      <path id="Clip_2-2" data-name="Clip 2" class="cls-1" d="M0,0H21.437V21.4H0Z"/>
     </clipPath>
   </defs>
-  <g id="icon_personal" transform="translate(0 -23.022)">
-    <g id="_" data-name="❤️" transform="translate(0 23.011)">
+  <g id="组_2627" data-name="组 2627" transform="translate(0 -23.022)">
+    <g id="_" data-name="❤️" transform="translate(0 23.022)">
       <g id="_2" data-name="❤️">
-        <g id="编组" transform="translate(5 1)">
-          <path id="Clip_2-3" data-name="Clip 2" d="M0,0H20V19.964H0Z" transform="translate(0 0.011)" fill="none"/>
-          <g id="编组-2" data-name="编组" clip-path="url(#clip-path)">
-            <path id="Fill_1" data-name="Fill 1" d="M12.061,17.21h-5.5c.013,0,1.335-.1,1.595-.428a1.391,1.391,0,0,0,.262-.565H8.259a2.97,2.97,0,0,0-.243-1.179c-.72-1.533-3.283-2.849-3.392-2.9h.081a10.793,10.793,0,0,1,1.163.072c-.372-.257-.727-.478-1.013-.655-.435-.27-.722-.449-.7-.525.007-.025.047-.039.123-.042.111,0,.225-.006.339-.006a14.7,14.7,0,0,1,4.95,1,7.77,7.77,0,0,1,2.782,1.9,2.707,2.707,0,0,1,.869,1.948v.027a1.186,1.186,0,0,1-.274.934A1.278,1.278,0,0,1,12.061,17.21ZM5.868,12.2A7.283,7.283,0,0,1,8.16,14.474a2.825,2.825,0,0,1,.262,1.742h3.306c.1,0,.208-.026.232-.075a.756.756,0,0,0,.031-.162,2.787,2.787,0,0,0-.769-1.512,5.945,5.945,0,0,0-2.136-1.428A11.279,11.279,0,0,0,5.868,12.2ZM4.1,9.752A15.6,15.6,0,0,1,0,9.3,8.511,8.511,0,0,0,3.806,7.1,2.589,2.589,0,0,1,1.923,8.829c.007,0,.249,0,.768,0,.275,0,.634,0,1.091,0a4.7,4.7,0,0,0,2.39-.794A3.525,3.525,0,0,0,7.5,5.884v-4.7H4.48C4.389.4,4.3,0,4.3,0H7.981A.625.625,0,0,1,8.6.618v5.32C8.582,7.7,6.613,9.752,4.1,9.752ZM3.809,7.1h0A3.822,3.822,0,0,0,3.99,5.884a39.576,39.576,0,0,1,.287-4.7h.2a32.564,32.564,0,0,1,.19,3.694A3.363,3.363,0,0,1,3.809,7.1Z" transform="translate(5.721 1)" fill="#fff"/>
+        <g id="编组" transform="translate(5.36 1.072)">
+          <path id="Clip_2-3" data-name="Clip 2" class="cls-1" d="M0,0H21.437V21.4H0Z"/>
+          <g id="编组-2" data-name="编组" class="cls-2">
+            <path id="Union_20" data-name="Union 20" class="cls-3" d="M7.419,18.45s1.507-.106,1.8-.46a2.443,2.443,0,0,0,0-2.473c-1.382-2.329-5.315-3.712-4.388-3.745a17.1,17.1,0,0,1,5.977,1.063,8.811,8.811,0,0,1,3.144,2.037,2.822,2.822,0,0,1,.983,2.117,1.229,1.229,0,0,1-.31,1,1.465,1.465,0,0,1-1,.46ZM0,9.968S5.277,8.713,5.277,5.227A24.848,24.848,0,0,0,4.857,0H9.019a.688.688,0,0,1,.7.662v5.7C9.7,8.174,7.575,10.454,4.63,10.454A18.345,18.345,0,0,1,0,9.968Z" transform="translate(6.465 1.06)"/>
+            <path id="路径" class="cls-4" d="M0,0S3,1.44,3.834,3.118a3.009,3.009,0,0,1,.275,1.264H8.028c.11,0,.235-.027.263-.08a.758.758,0,0,0,.036-.174,2.954,2.954,0,0,0-.868-1.621A6.7,6.7,0,0,0,5.044.976,13.779,13.779,0,0,0,0,0Z" transform="translate(11.69 14.063)"/>
+            <path id="路径-2" data-name="路径" class="cls-4" d="M2.66,0a39.864,39.864,0,0,0-.325,5.041A2.958,2.958,0,0,1,0,8.2s.552.007,2.1,0a5.555,5.555,0,0,0,2.7-.851A3.755,3.755,0,0,0,6.3,5.041V0Z" transform="translate(8.639 2.328)"/>
           </g>
         </g>
         <g id="_3" data-name="❤️">
-          <path id="Clip_2-4" data-name="Clip 2" d="M0,0H20V19.964H0Z" transform="translate(0 0.011)" fill="none"/>
-          <g id="_4" data-name="❤️" clip-path="url(#clip-path)">
-            <path id="Fill_1-2" data-name="Fill 1" d="M18.539,19.965H1.486a1.533,1.533,0,0,1-1.178-.537,1.346,1.346,0,0,1-.294-1.049,5.376,5.376,0,0,1,1.633-3.547C3.361,13.085,6.171,12.2,10,12.2s6.638.886,8.353,2.633a5.415,5.415,0,0,1,1.633,3.574,1.4,1.4,0,0,1-.321,1.075A1.42,1.42,0,0,1,18.539,19.965Zm-8.513-6.557c-3.491,0-6,.759-7.469,2.257a4.159,4.159,0,0,0-1.312,2.767v.107a.244.244,0,0,0,.027.135c.026.052.1.08.214.08H18.539c.112,0,.188-.028.214-.08a.15.15,0,0,0,.027-.162v-.107a4.159,4.159,0,0,0-1.312-2.768C15.994,14.159,13.49,13.408,10.026,13.408Zm0-1.586A5.911,5.911,0,0,1,10.026,0h5.3a.625.625,0,0,1,.616.618v5.32A5.942,5.942,0,0,1,10.026,11.822Zm0-10.64a4.7,4.7,0,0,0,0,9.4,4.717,4.717,0,0,0,4.685-4.7v-4.7Z" transform="translate(0 0.011)" fill="#fff"/>
+          <path id="Clip_2-4" data-name="Clip 2" class="cls-1" d="M0,0H21.437V21.4H0Z"/>
+          <g id="_4" data-name="❤️" class="cls-5">
+            <path id="Fill_1" data-name="Fill 1" class="cls-3" d="M19.875,21.4H1.593A1.643,1.643,0,0,1,.33,20.827,1.443,1.443,0,0,1,.015,19.7a5.763,5.763,0,0,1,1.751-3.8c1.838-1.873,4.85-2.823,8.954-2.823s7.116.95,8.955,2.823a5.805,5.805,0,0,1,1.75,3.831,1.5,1.5,0,0,1-.344,1.152A1.522,1.522,0,0,1,19.875,21.4Zm-9.126-7.029c-3.742,0-6.436.814-8.007,2.42a4.459,4.459,0,0,0-1.407,2.967v.115a.261.261,0,0,0,.029.145c.028.055.11.086.23.086H19.875c.12,0,.2-.031.23-.086a.16.16,0,0,0,.029-.174v-.115a4.459,4.459,0,0,0-1.407-2.967C17.146,15.179,14.462,14.374,10.748,14.374Zm0-1.7A6.337,6.337,0,0,1,10.748,0h5.683a.67.67,0,0,1,.66.663v5.7A6.37,6.37,0,0,1,10.748,12.674Zm22.513-1.325a5.041,5.041,0,0,1,0-10.082h5.023v5.04a5.056,5.056,0,0,1-5.023,5.041Z" transform="translate(0 0)"/>
           </g>
         </g>
       </g>
-      <path id="Fill_3" data-name="Fill 3" d="M3.395,3a.674.674,0,0,1-.606-.711V.711A.674.674,0,0,1,3.395,0,.657.657,0,0,1,4,.711V2.289A.65.65,0,0,1,3.395,3ZM.6,3A.673.673,0,0,1,0,2.289V.711A.673.673,0,0,1,.6,0a.658.658,0,0,1,.606.711V2.289A.65.65,0,0,1,.6,3Z" transform="translate(7 3)" fill="#fff"/>
+      <path id="Fill_3" data-name="Fill 3" class="cls-3" d="M3.4,3a.674.674,0,0,1-.606-.711V.711A.674.674,0,0,1,3.4,0,.657.657,0,0,1,4,.711V2.289A.65.65,0,0,1,3.4,3ZM.6,3A.673.673,0,0,1,0,2.289V.711A.673.673,0,0,1,.6,0a.658.658,0,0,1,.606.711V2.289A.65.65,0,0,1,.6,3Z" transform="translate(7.9 2.744)"/>
     </g>
+    <path id="Fill_3-2" data-name="Fill 3" class="cls-4" d="M3.639,3.216a.722.722,0,0,1-.649-.762V.762A.722.722,0,0,1,3.639,0a.7.7,0,0,1,.648.762V2.454A.7.7,0,0,1,3.639,3.216Zm-2.991,0A.722.722,0,0,1,0,2.454V.762A.722.722,0,0,1,.648,0,.7.7,0,0,1,1.3.762V2.454A.7.7,0,0,1,.648,3.216Z" transform="translate(7.504 26.215)"/>
   </g>
 </svg>

+ 8 - 0
src/icons/svg/team.svg

@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" width="11.879" height="12.695" viewBox="0 0 11.879 12.695">
+  <g id="组_2647" data-name="组 2647" transform="translate(5310.744 -5223.186)">
+    <g id="成员" transform="translate(-5310.744 5223.186)">
+      <path id="路径_13035" data-name="路径 13035" d="M450.669,295.783a3.243,3.243,0,1,1,3.239-3.243A3.243,3.243,0,0,1,450.669,295.783Zm0-5.754a2.5,2.5,0,1,1,0,.018Z" transform="translate(-444.728 -289.297)" fill="#444"/>
+      <path id="路径_13036" data-name="路径 13036" d="M373.582,493.535a.364.364,0,0,1-.364-.364,5.211,5.211,0,1,0-10.418,0,.364.364,0,0,1-.729,0,5.939,5.939,0,1,1,11.875,0A.364.364,0,0,1,373.582,493.535Z" transform="translate(-362.069 -480.84)" fill="#444"/>
+    </g>
+  </g>
+</svg>

+ 19 - 0
src/icons/svg/test-case.svg

@@ -0,0 +1,19 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14.265" height="14.265" viewBox="0 0 14.265 14.265">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: url(#linear-gradient);
+      }
+    </style>
+    <linearGradient id="linear-gradient" x1="0.833" x2="0.24" y2="0.831" gradientUnits="objectBoundingBox">
+      <stop offset="0" stop-color="#f87046"/>
+      <stop offset="1" stop-color="#fcd56e"/>
+    </linearGradient>
+  </defs>
+  <g id="测试" transform="translate(-98.106 -97.168)">
+    <path id="路径_13025" data-name="路径 13025" class="cls-1" d="M105.238,111.433a7.132,7.132,0,1,1,3.172-13.522,7.2,7.2,0,0,1,2.441,1.99.55.55,0,1,1-.865.679,6.032,6.032,0,1,0-4.748,9.753,5.724,5.724,0,0,0,6.032-5.654.55.55,0,1,1,1.1,0,6.535,6.535,0,0,1-2.105,4.87,7.371,7.371,0,0,1-5.027,1.884Z" transform="translate(0)"/>
+    <path id="路径_13026" data-name="路径 13026" class="cls-1" d="M605.129,261.378a.55.55,0,0,1-.477-.823l2.965-5.182a.55.55,0,1,1,.955.546l-2.965,5.182A.55.55,0,0,1,605.129,261.378Z" transform="translate(-497.768 -155.213)"/>
+    <path id="路径_13027" data-name="路径 13027" class="cls-1" d="M394.69,417.932a.547.547,0,0,1-.33-.11l-3.531-2.655a.55.55,0,0,1,.661-.879l3.531,2.655a.55.55,0,0,1-.331.99Z" transform="translate(-287.476 -311.561)"/>
+    <path id="路径_13028" data-name="路径 13028" class="cls-1" d="M187.653,422.039a.55.55,0,0,1-.443-.876l3.48-4.733a.55.55,0,0,1,.886.652l-3.48,4.733A.549.549,0,0,1,187.653,422.039Z" transform="translate(-87.467 -313.554)"/>
+  </g>
+</svg>

+ 17 - 0
src/icons/svg/test-plain.svg

@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.404" height="13.404" viewBox="0 0 13.404 13.404">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: url(#linear-gradient);
+      }
+    </style>
+    <linearGradient id="linear-gradient" x1="-0.778" y1="0.694" x2="1.363" y2="-0.432" gradientUnits="objectBoundingBox">
+      <stop offset="0" stop-color="#fcb8f7"/>
+      <stop offset="1" stop-color="#d846f4"/>
+    </linearGradient>
+  </defs>
+  <g id="销售计划" transform="translate(-170.667 -170.667)">
+    <path id="路径_13031" data-name="路径 13031" class="cls-1" d="M279.84,282.546a.836.836,0,1,1-.836-.836.836.836,0,0,1,.836.836m-2.507,0A1.671,1.671,0,1,0,279,280.875a1.673,1.673,0,0,0-1.671,1.671m10.9,5.362h-4.282a.418.418,0,1,0,0,.836h4.282a.418.418,0,0,0,0-.836m0,1.671h-4.282a.418.418,0,1,0,0,.836h4.282a.418.418,0,0,0,0-.836m0,1.706h-4.282a.418.418,0,1,0,0,.836h4.282a.418.418,0,0,0,0-.836" transform="translate(-104.578 -108.05)"/>
+    <path id="路径_13032" data-name="路径 13032" class="cls-1" d="M177.975,182.87a3.735,3.735,0,0,1-1.093-.76l-5.38-5.381V171.5h5.37l5.309,5.309a3.732,3.732,0,0,1,1.012,1.847.418.418,0,1,0,.816-.178,4.568,4.568,0,0,0-1.237-2.26l-5.367-5.366a.4.4,0,0,0-.075-.05.414.414,0,0,0-.306-.138h-5.941a.418.418,0,0,0-.418.418v5.724a.381.381,0,0,0,.019.093.411.411,0,0,0,.119.313l5.487,5.488a4.563,4.563,0,0,0,1.337.929.418.418,0,1,0,.348-.76" transform="translate(0 0)"/>
+  </g>
+</svg>

+ 17 - 0
src/icons/svg/version.svg

@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14.935" height="14.935" viewBox="0 0 14.935 14.935">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: url(#linear-gradient);
+      }
+    </style>
+    <linearGradient id="linear-gradient" x1="0.828" x2="0.214" y2="1" gradientUnits="objectBoundingBox">
+      <stop offset="0" stop-color="#f87046"/>
+      <stop offset="1" stop-color="#fcd56e"/>
+    </linearGradient>
+  </defs>
+  <g id="组_2641" data-name="组 2641" transform="translate(-112.599 -355.966)">
+    <path id="Fill_1" data-name="Fill 1" class="cls-1" d="M7.468,14.935A7.468,7.468,0,1,0,0,7.468,7.476,7.476,0,0,0,7.468,14.935Zm0-14.058A6.59,6.59,0,1,1,.88,7.468,6.6,6.6,0,0,1,7.468.877Z" transform="translate(112.599 355.966)"/>
+    <path id="版本升级" class="cls-1" d="M195.506,107.73h-2.319a.727.727,0,0,1-.725-.725v-2.752h-1.522a.507.507,0,0,1-.37-.855l2.935-3.095a1.156,1.156,0,0,1,1.681,0l2.933,3.095a.5.5,0,0,1,.1.548.51.51,0,0,1-.466.307h-1.522v2.751a.72.72,0,0,1-.722.725Zm-4.4-4.056h1.425a.507.507,0,0,1,.507.507v2.824a.145.145,0,0,0,.145.145h2.319a.145.145,0,0,0,.145-.145v-2.824a.507.507,0,0,1,.507-.507h1.425l-2.817-2.971a.591.591,0,0,0-.841,0Zm4.686,5.042h-2.9a.29.29,0,1,1,0-.58h2.9a.29.29,0,1,1,0,.58Zm.725.966h-4.348a.29.29,0,1,1,0-.58h4.348a.29.29,0,1,1,0,.58Z" transform="translate(-74.332 258.385)"/>
+  </g>
+</svg>

File diff suppressed because it is too large
+ 0 - 0
src/icons/svg/团队工作台.svg


+ 0 - 5
src/icons/svg/工作台.svg

@@ -1,5 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M512.193536 625.152c195.9424 0 339.8656 45.4144 427.6224 134.8096 78.1312 79.8208 83.6096 166.4512 83.6096 182.9888 2.7136 20.6336-4.096 39.936-16.4352 55.04-13.7216 16.4864-34.304 24.7296-57.6 24.7296H76.276736c-23.296 0-45.2096-9.6256-60.3136-27.4944a69.12 69.12 0 0 1-15.0528-53.6576c0-17.92 6.8096-103.168 83.6096-181.6064C172.225536 670.5664 316.097536 625.152 512.142336 625.152zM784.884736 0.5632c16.384 0 31.488 13.7728 31.488 31.6416v272.384c-1.3312 165.12-137.0624 301.312-302.8992 301.312-167.2192 0-301.568-136.192-301.568-302.6944 0-166.4 135.68-302.6432 301.568-302.6432h271.36z m-271.4112 686.4896c-178.176 0-307.0464 38.5024-382.464 115.5584-67.1232 67.4304-67.1232 138.9568-67.1232 141.7216v5.4784c0 2.7648 0 4.096 1.3824 6.912 1.3824 2.7136 5.4784 4.096 10.9568 4.096h873.1136c5.4784 0 9.6256-1.3824 10.9568-4.096 1.3824-1.3824 2.7648-4.1472 1.3824-8.2944v-5.4784c0-2.7648 0-74.2912-67.1744-141.7216-75.3664-75.6736-204.2368-114.176-381.0304-114.176z m0-625.9712c-132.9664 0-239.872 108.6976-239.872 240.7936 0 133.4272 108.288 240.7424 239.872 240.7424 131.584 0 239.872-108.6976 239.872-240.7424V61.0816h-239.872z" fill="#565656" p-id="1360"></path><path d="M389.569536 307.2C373.441536 307.2 358.593536 291.328 358.593536 270.7968V189.952c0-18.944 13.4656-36.4032 30.976-36.4032 17.5104 0 30.976 15.872 30.976 36.4032V270.848c0 20.5824-13.4656 36.4032-30.976 36.4032z m142.848 0c-16.1792 0-31.0272-15.872-31.0272-36.4032V189.952c0-18.944 13.5168-36.4032 31.0272-36.4032 17.5104 0 30.976 15.872 30.976 36.4032V270.848c0 20.5824-13.4656 36.4032-30.976 36.4032z" fill="#409EFF" p-id="1361"></path></svg>
-
-
-
-

File diff suppressed because it is too large
+ 0 - 0
src/icons/svg/项目管理.svg


+ 2 - 119
src/layout/components/Navbar.vue

@@ -3,9 +3,6 @@
     <div class="bizIdSet">
       <!-- <hamburger :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /> -->
       <!-- <breadcrumb class="breadcrumb-container" /> -->
-      <el-button v-show="status" :disabled="showBizId" type="primary" @click="changeBizId">
-        {{ sumType }}
-      </el-button>
     </div>
     <div>
       <div class="right-menu" style="display: fiex; align-items: center; justify-content: space-between;">
@@ -25,14 +22,10 @@
 </template>
 
 <script>
-import { mapGetters } from 'vuex'
-import { needIdList } from '@/router/needIdList'
-import { redirect } from '@/router/redirect'
-import { EncryptId, desDecryptId, analysisBizId_id } from '@/utils/crypto-js.js'
 // import Breadcrumb from '@/components/Breadcrumb' // 面包屑
 // import Hamburger from '@/components/Hamburger'  // 导航开关
 import { logoutUrl } from '@/apiConfig/requestIP.js'
-import { memberGetLoginInMemberInfoByLdap, settingGetBizList, settingUserGetBiz } from '@/api/projectIndex'
+import { memberGetLoginInMemberInfoByLdap } from '@/api/projectIndex'
 
 export default {
   // components: {
@@ -42,128 +35,18 @@ export default {
   data() {
     return {
       show2: false,
-      options: {},
-      value: '',
-      arr_data: [],
-      sumTypeArray: [],
-      formulaArea: '', // 公式的文本框
-      typeObj: {},
-      showBizId: false
+      options: {}
     }
   },
   computed: {
-    ...mapGetters([
-      'sidebar',
-      'avatar',
-      'status',
-      'bizId'
-    ]),
     username() {
       return localStorage.getItem('realname')
-    },
-    sumType() {
-      const nowBiz = this.sumTypeArray.find(item => item.code === this.bizId)
-      if (nowBiz) return nowBiz.name
-      return ''
-    }
-  },
-  watch: {
-    $route: {
-      async handler(to, from) {
-        const redirectUrl = `http://zhihui.xiaojukeji.com/#${to.fullPath}`
-        if (redirect[redirectUrl]) {
-          window.location.href = redirect[redirectUrl]
-          window.location.reload()
-        }
-        // 如果业务线列表不存在,请求获取路由业务线列表
-        if (this.sumTypeArray.length < 1) await this.settingGetBizList()
-        // 如果没有业务线,但是页面又是工作台
-        if (this.bizId === -1 && (to.name === '个人工作台' || to.name === '团队工作台')) this.settingUserGetBiz(true)
-        // 如果是业务线选择页面,不作处理
-        if (to.name === '业务线选择' || to.name === '个人工作台' || to.name === '团队工作台') return
-        // 如果与原路由相同,不作处理
-        if (from && to.path === from.path) return
-        // 如果已存在业务线ID
-        if (this.bizId !== -1) {
-          const existBizId_id = needIdList.find(item => item === this.$route.name)
-          existBizId_id
-            ? ''
-            : this.$router.replace({
-              path: this.$route.path,
-              query: { ...this.$route.query, bizId: EncryptId(this.bizId) }
-            })
-          return
-        }
-        // 如果前往路由中参数中bizId和bizId_id都不存在,去获取默认bizId
-        if (!to.query.bizId && !to.query.bizId_id) {
-          this.settingUserGetBiz()
-          return
-        }
-        // 如果是需要bizId和id的详情页
-        const existBizId_id = needIdList.find(item => item === to.name)
-        existBizId_id ? this.handlerIdAndBizId() : this.handlerBizId()
-      },
-      immediate: true
     }
   },
   created() {
     this.getLoginMember()
   },
   methods: {
-    handlerBizId() { // 只处理bizId
-      const bizId = Number(desDecryptId(this.$route.query.bizId))
-      const isExistBizId = this.sumTypeArray.find(item => bizId === item.code)// 业务线id是否存在
-      if (isExistBizId) {
-        this.$store.dispatch('global/setBizId', bizId)
-      } else {
-        this.settingUserGetBiz()
-      }
-      console.log('mainbizId', this.bizId)
-    },
-    handlerIdAndBizId() { // 处理bizId和id
-      const arr = analysisBizId_id(this.$route.query.bizId_id)
-      const isExistBizId = this.sumTypeArray.find(item => Number(arr[0]) === item.code)// 业务线id是否存在
-      if (isExistBizId) {
-        this.$store.dispatch('global/setBizId', Number(arr[0]))
-      } else {
-        this.settingUserGetBiz()
-      }
-      console.log('mainbizId', this.bizId)
-    },
-    async settingGetBizList() { // 获取业务线列表
-      const res = await settingGetBizList({})
-      this.sumTypeArray = res.data || []
-    },
-    async settingUserGetBiz(noQuery = false) { // 获取人员默认业务线
-      const res = await settingUserGetBiz()
-      const nowBiz = this.sumTypeArray.find(item => res.data.bizId === item.code)
-      if (nowBiz) {
-        this.$store.dispatch('global/setBizId', nowBiz.code)
-        localStorage.setItem('bizId', nowBiz.code)
-        if (noQuery) return // 如果是不需要url参数的,直接返回
-        const existBizId_id = needIdList.find(item => item === this.$route.name)
-        // 如果不是在需要bizId_id的详情页,就去给路由添加bizId
-        existBizId_id
-          ? ''
-          : this.$router.replace({
-            path: this.$route.path,
-            query: { ...this.$route.query, bizId: EncryptId(nowBiz.code) }
-          })
-      } else {
-        this.$router.push({ name: '业务线选择' })
-      }
-    },
-    async remoteMethod(query) {
-      if (query !== '') {
-        const res = await settingGetBizList({ bizName: query })
-        this.sumTypeArray = res.data
-      } else {
-        this.get_bizArr()
-      }
-    },
-    changeBizId(type) { // 更改业务线
-      this.$router.push({ name: '业务线选择' })
-    },
     async getLoginMember() { // 获取登录人员信息
       const res = await memberGetLoginInMemberInfoByLdap()
       this.options = res.data

+ 15 - 2
src/layout/components/Sidebar/index.vue

@@ -13,7 +13,7 @@
           :collapse-transition="false"
           mode="vertical"
         >
-          <sidebar-item v-for="route in routes" :key="route.path" :item="route" :base-path="route.path" :show-tips="notice" />
+          <sidebar-item v-for="route in activeRoutes" :key="route.path" :item="route" :base-path="route.path" :show-tips="notice" />
         </el-menu>
       </el-scrollbar>
     </el-main>
@@ -45,7 +45,8 @@ export default {
   mixins: [websocket],
   data() {
     return {
-      isKnownBusness: localStorage.getItem('known-business') || false
+      isKnownBusness: localStorage.getItem('known-business') || false,
+      activeRoutes: []
     }
   },
   computed: {
@@ -74,6 +75,18 @@ export default {
       return !this.sidebar.opened
     }
   },
+  watch: {
+    $route: {
+      handler(to, from) {
+        if (to.path.search(/env-platform/) > 0) {
+          this.activeRoutes = this.routes.filter(item => item.path.search(/env-platform/) > 0)
+        } else if (to.path.search(/views/) > 0) {
+          this.activeRoutes = this.routes.filter(item => item.path.search(/views/) > 0)
+        }
+      },
+      immediate: true
+    }
+  },
   methods: {
     toggleSideBar() {
       this.$store.dispatch('app/toggleSideBar')

+ 23 - 48
src/router/index.js

@@ -185,34 +185,9 @@ export const constantRoutes = [{
   component: Layout,
   redirect: '/quality/qualityMeasurement',
   name: '老版统计',
+  hidden: true,
   meta: { title: '统计分析', icon: '质量度量' },
-  children: [{
-    path: 'qualityMeasurement',
-    name: '老版统计详情',
-    component: (resolve) => require(['@/views/quality/qualityMeasurement.vue'], resolve),
-    meta: { title: '老版统计' }
-  },
-  {
-    path: 'qualityProcess',
-    name: '上线过程',
-    hidden: true,
-    component: (resolve) => require(['@/views/quality/qualityProcess.vue'], resolve),
-    meta: { title: '上线过程' }
-  },
-  {
-    path: 'qualityDefectProcess',
-    name: '缺陷过程',
-    hidden: true,
-    component: (resolve) => require(['@/views/quality/qualityDefectProcess.vue'], resolve),
-    meta: { title: '缺陷过程' }
-  },
-  {
-    path: 'qualityHotpatchProcess',
-    name: '热修复过程',
-    hidden: true,
-    component: (resolve) => require(['@/views/quality/qualityHotpatchProcess.vue'], resolve),
-    meta: { title: '热修复过程' }
-  },
+  children: [
   // {
   //   path: 'problemList',
   //   name: '线上问题',
@@ -221,27 +196,27 @@ export const constantRoutes = [{
   //         import('@/views/onlineProblem/problemList.vue'),
   //   meta: { title: '线上问题' }
   // },
-  {
-    path: '/Platform/defectManagement/problemCreate',
-    name: '新建线上问题',
-    hidden: true,
-    component: (resolve) => require(['@/views/onlineProblem/problemCreate'], resolve),
-    meta: { title: '新建线上问题' }
-  },
-  {
-    path: '/Platform/defectManagement/problemQuery',
-    name: '查看线上问题',
-    hidden: true,
-    component: (resolve) => require(['@/views/onlineProblem/problemQuery'], resolve),
-    meta: { title: '查看线上问题' }
-  },
-  {
-    path: '/Platform/defectManagement/problemUpdate',
-    name: '更新线上问题',
-    hidden: true,
-    component: (resolve) => require(['@/views/onlineProblem/problemUpdate'], resolve),
-    meta: { title: '更新线上问题' }
-  }
+    {
+      path: '/Platform/defectManagement/problemCreate',
+      name: '新建线上问题',
+      hidden: true,
+      component: (resolve) => require(['@/views/onlineProblem/problemCreate'], resolve),
+      meta: { title: '新建线上问题' }
+    },
+    {
+      path: '/Platform/defectManagement/problemQuery',
+      name: '查看线上问题',
+      hidden: true,
+      component: (resolve) => require(['@/views/onlineProblem/problemQuery'], resolve),
+      meta: { title: '查看线上问题' }
+    },
+    {
+      path: '/Platform/defectManagement/problemUpdate',
+      name: '更新线上问题',
+      hidden: true,
+      component: (resolve) => require(['@/views/onlineProblem/problemUpdate'], resolve),
+      meta: { title: '更新线上问题' }
+    }
   ]
 },
 

+ 68 - 0
src/router/newRouter.js

@@ -54,6 +54,7 @@ const layout = [
       {
         path: 'projectIndex',
         name: '项目',
+        icon: 'project',
         component: () => import('@/views/projectManage/projectList/projectIndex.vue'),
         meta: { title: '项目' }
       },
@@ -67,6 +68,7 @@ const layout = [
       {
         path: 'requirementIndex',
         name: '需求',
+        icon: 'requirement',
         component: () => import('@/views/projectManage/requirement/list/index.vue'),
         meta: { title: '需求' }
       },
@@ -80,6 +82,7 @@ const layout = [
       {
         path: 'taskIndex',
         name: '任务',
+        icon: 'task',
         component: () => import('@/views/projectManage/taskList/taskIndex'),
         meta: { title: '任务' }
       },
@@ -100,6 +103,7 @@ const layout = [
       {
         path: '/projectManage/bugList/bugindex',
         name: '缺陷',
+        icon: 'bug',
         component: () => import('@/views/projectManage/bugList/bugindex'),
         meta: { title: '缺陷' }
       },
@@ -113,6 +117,7 @@ const layout = [
       {
         path: 'reportManagement',
         name: '报告',
+        icon: 'report',
         component: () => import('@/views/reportManagement/testPresentation'),
         meta: { title: '报告' }
       },
@@ -162,6 +167,7 @@ const layout = [
         path: 'iteration',
         name: '迭代',
         cutOff: true,
+        icon: 'iteration',
         component: () => import('@/views/projectManage/iteration/index'),
         meta: { title: '迭代' }
       },
@@ -175,6 +181,7 @@ const layout = [
       {
         path: 'version',
         name: '版本',
+        icon: 'version',
         component: () => import('@/views/projectManage/version/list/index.vue'),
         meta: { title: '版本' }
       },
@@ -188,6 +195,7 @@ const layout = [
       {
         path: 'useCasePage',
         name: '测试用例',
+        icon: 'test-case',
         cutOff: true,
         component: () => import('@/views/Platform/useCasePage'),
         meta: { title: '测试用例' }
@@ -209,16 +217,75 @@ const layout = [
       {
         path: 'testPage',
         name: '测试计划',
+        icon: 'test-plain',
         component: () => import('@/views/Platform/testPage.vue'),
         meta: { title: '测试计划' }
       },
       {
         path: 'allStatistics',
         name: '统计分析',
+        icon: 'statistics',
         cutOff: true,
         component: () => import('@/views/quality/allStatistics.vue'),
         meta: { title: '统计分析' }
       },
+      {
+        path: 'qualityMeasurement',
+        name: '老版统计详情',
+        hidden: true,
+        component: () => import('@/views/quality/qualityMeasurement.vue'),
+        meta: { title: '老版统计' }
+      },
+      {
+        path: 'qualityProcess',
+        name: '上线过程',
+        hidden: true,
+        component: () => import('@/views/quality/qualityProcess.vue'),
+        meta: { title: '上线过程' }
+      },
+      {
+        path: 'qualityDefectProcess',
+        name: '缺陷过程',
+        hidden: true,
+        component: () => import('@/views/quality/qualityDefectProcess.vue'),
+        meta: { title: '缺陷过程' }
+      },
+      {
+        path: 'qualityHotpatchProcess',
+        name: '热修复过程',
+        hidden: true,
+        component: (resolve) => require(['@/views/quality/qualityHotpatchProcess.vue'], resolve),
+        meta: { title: '热修复过程' }
+      },
+      // {
+      //   path: 'problemList',
+      //   name: '线上问题',
+      //   hidden: true,
+      //   component: () =>
+      //         import('@/views/onlineProblem/problemList.vue'),
+      //   meta: { title: '线上问题' }
+      // },
+      {
+        path: '/Platform/defectManagement/problemCreate',
+        name: '新建线上问题',
+        hidden: true,
+        component: (resolve) => require(['@/views/onlineProblem/problemCreate'], resolve),
+        meta: { title: '新建线上问题' }
+      },
+      {
+        path: '/Platform/defectManagement/problemQuery',
+        name: '查看线上问题',
+        hidden: true,
+        component: (resolve) => require(['@/views/onlineProblem/problemQuery'], resolve),
+        meta: { title: '查看线上问题' }
+      },
+      {
+        path: '/Platform/defectManagement/problemUpdate',
+        name: '更新线上问题',
+        hidden: true,
+        component: (resolve) => require(['@/views/onlineProblem/problemUpdate'], resolve),
+        meta: { title: '更新线上问题' }
+      },
       {
         path: 'requireStatistics',
         name: '需求统计',
@@ -243,6 +310,7 @@ const layout = [
       {
         path: 'index',
         name: '配置中心',
+        icon: 'config',
         component: () => import('@/views/ToConfigure/index'),
         meta: { title: '配置中心' }
       }

+ 3 - 4
src/styles/detail-pages.scss

@@ -11,7 +11,7 @@
   display:flex;
   align-items: center;
   justify-content: center;
-  margin-top: 10px;
+  // margin-top: 10px;
   padding-top: 70px;
   .el-main {
     background-color: #FFFFFF;
@@ -39,7 +39,7 @@
   position: fixed;
   z-index: 99;
   left: 90px;
-  top: 60px;
+  top: 70px;
   width: calc(100% - 150px);
 }
 @mixin normal-main-header {
@@ -49,14 +49,13 @@
   top: 0;
   width: calc(100% - 150px);
 }
-@mixin main-header { 
+@mixin main-header {
   height: 60px;
   padding-left: 30px;
   background-color: #ffffff;
   display: flex;
   justify-content: space-between;
   align-items: center;
-  border-top: 10px solid #F2F3F6;
   box-sizing: content-box;
   .header-title{
     float: left;

+ 7 - 5
src/utils/request.js

@@ -110,11 +110,13 @@ service.interceptors.response.use(
         default:
           error.message = `未知错误${error.response.status}`
       }
-      message({
-        message: error.message,
-        type: 'warning',
-        duration: 5 * 1000
-      })
+      if (error.response.status !== 403) {
+        message({
+          message: error.message,
+          type: 'warning',
+          duration: 5 * 1000
+        })
+      }
       if (error.response.status === 401) {
         location.href = loginUrl
       } else if (error.response.status === 403) {

+ 0 - 3
src/views/Platform/useCase/queryUse.vue

@@ -113,6 +113,3 @@ export default {
   }
 }
 </script>
-
-<style>
-</style>

+ 1 - 1
src/views/ToConfigure/components/bizConfigure.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div style="margin: 0 10px;">
     <p class="biz_property">业务线属性</p>
     <el-radio-group v-model="radio" :disabled="Prohibit" class="biz_radio">
       <el-radio label="0"> 公开 </el-radio>

+ 19 - 9
src/views/ToConfigure/components/memberConfiguration.vue

@@ -1,10 +1,10 @@
 <template>
   <el-container>
     <el-main class="member_main">
-      <div class="member_title">成员</div>
-      <div class="member_all" :class="{'color-blue': isActive === 'all'}" @click="memberAll('all')">全部成员</div>
-      <div class="member_all member_margin" :class="{'color-blue': isActive === 'not'}" @click="memberAll('not')">未加入团队的成员</div>
-      <div class="member_title">团队</div>
+      <div class="member_title"><svg-icon icon-class="team" /> 成员</div>
+      <div class="member_team member_hover" :class="{'color-blue': isActive === 'all'}" @click="memberAll('all')">全部成员</div>
+      <div class="member_team member_hover member_margin" :class="{'color-blue': isActive === 'not'}" @click="memberAll('not')">未加入团队的成员</div>
+      <div class="member_title"><svg-icon icon-class="member" /> 团队</div>
       <div style="max-height: calc(100vh - 408px); overflow-y: auto;">
         <div class="member_team">我的团队</div>
         <div v-for="item in memberList[0]" :key="'my' + item.code">
@@ -25,7 +25,7 @@
             </el-dropdown>
           </div>
         </div>
-        <div class="member_team" style="margin-top: 25px;">其他团队</div>
+        <div :class="{member_team: true, member_top: memberList[0] && memberList[0].length > 0}">其他团队</div>
         <div v-for="item in memberList[1]" :key="'all' + item.code">
           <div class="member_all member_space_between">
             <span
@@ -124,24 +124,31 @@ export default {
   font-size: 14px;
   font-family: PingFangSC-Regular;
   line-height: 24px;
-  color: #333333;
+  color: #444;
+  margin-left: 20px;
+}
+.member_hover {
+  cursor: pointer;
+  color: #409EFF;
 }
 .member_all:hover {
   cursor: pointer;
   color: #409EFF;
 }
 .member_team {
+  font-weight: 600;
   font-size: 14px;
   font-family: PingFangSC-Regular;
   line-height: 24px;
-  color: #999999;
+  color: #333;
+  margin-left: 20px;
 }
 .member_margin {
   margin-bottom: 32px;
 }
 .member_main {
-  min-height: calc(100vh - 203px);
-  padding: 20px 0 20px 20px;
+  min-height: calc(100vh - 265px);
+  padding: 20px 0 20px 10px;
 }
 .member_footer {
   text-align: center;
@@ -167,4 +174,7 @@ export default {
 .color-blue {
   color: #409EFF;
 }
+.member_top {
+  margin-top: 25px;
+}
 </style>

+ 18 - 6
src/views/ToConfigure/components/modifyNotice.vue

@@ -85,7 +85,7 @@
             <el-option v-for="key in noticeGroupList" :key="'email-type'+key.label" :label="key.label" :value="key.value" />
           </el-select>
           <el-select v-show="item.type===1" v-model="item.teams" placeholder="请选择" size="small" :multiple="true" :disabled="disabled">
-            <el-option v-for="key in teamList" :key="'email-team'+key.teamId" :label="key.teamName" :value="key.teamId" />
+            <el-option v-for="key in teamList" :key="'email-team'+key.code" :label="key.name" :value="key.code" />
           </el-select>
           <search-people v-show="item.type===2" :value.sync="item.customStaffs" :clearable="false" :multiple="true" :disabled="disabled" />
           <i v-if="index!==0 && !disabled" class="el-icon-remove-outline" @click="removeMembers(EmailList,index)" />
@@ -98,7 +98,7 @@
             <el-option v-for="key in noticeGroupList" :key="'DChart-type'+key.label" :label="key.label" :value="key.value" />
           </el-select>
           <el-select v-show="item.type===1" v-model="item.teams" placeholder="请选择" size="small" :multiple="true" :disabled="disabled">
-            <el-option v-for="key in teamList" :key="'DChart-team'+key.teamId" :label="key.teamName" :value="key.teamId" />
+            <el-option v-for="key in teamList" :key="'DChart-team'+key.code" :label="key.name" :value="key.code" />
           </el-select>
           <search-people v-show="item.type===2" :value.sync="item.customStaffs" :clearable="false" :multiple="true" :disabled="disabled" />
           <i v-if="index!==0 && !disabled" class="el-icon-remove-outline" @click="removeMembers(DChartList,index)" />
@@ -171,9 +171,10 @@ import {
   addBizNoticeSetting,
   updateBizNoticeSetting
 } from '@/api/configure'
+import { teamQueryTeamListBelowBiz } from '@/api/toConfigure.js'
 import { settingQueryBizRqmtOrntList } from '@/api/requirement.js'
 import { settingQueryBizModuleList } from '@/api/defectManage'
-import { queryTeamInfoList } from '@/api/workSchedule'
+// import { queryTeamInfoList } from '@/api/workSchedule'
 import { showAppClientEnum } from '@/api/version.js'
 import normalDialog from '@/components/dialog/normalDialog'
 import searchPeople from '@/components/select/searchPeople'
@@ -345,6 +346,12 @@ export default {
           this.GroupList = []
         }
       }
+    },
+    bizId: {
+      handler(newV) {
+        this.formData.bizId = newV
+      },
+      immediate: true
     }
   },
   created() {
@@ -439,11 +446,16 @@ export default {
         this.statusList = res.data.taskStatus || []
       }
     },
+
     async queryTeamInfoList() { // 获取用户团队列表
-      const res = await queryTeamInfoList({ curIndex: 1, pageSize: 9999 })
-      if (res.code === 200 && res.data) {
-        this.teamList = res.data.list
+      const res = await teamQueryTeamListBelowBiz(this.bizId)
+      if (res.code === 200) {
+        this.teamList = res.data
       }
+      // const res = await queryTeamInfoList({ curIndex: 1, pageSize: 9999 })
+      // if (res.code === 200 && res.data) {
+      //   this.teamList = res.data.list
+      // }
     },
     init() {
       if (this.type === 'require') {

+ 1 - 1
src/views/ToConfigure/index.vue

@@ -98,7 +98,7 @@ export default {
     background: #FFF;
     padding: 0px;
     border-radius: 4px;
-    min-height: calc(100vh - 143px);
+    min-height: calc(100vh - 206px);
   }
   .configure_title {
     width: 100vw;

+ 56 - 38
src/views/business/bizIdSelect.vue

@@ -15,12 +15,13 @@
               :class="'business-item' + (index % 4)"
               @click="enter(item,'my')"
             >
-              {{ item.name }}
+              <img v-show="item.code === bizId || item.code === bizs" src="@/assets/current.png" class="biz-img">
+              <span class="biz-name">{{ item.name }}</span>
             </div>
           </div>
         </div>
         <div class="all-business">
-          <div class="business-title">所有业务线</div>
+          <div class="business-title" style="margin: 15px 0">所有业务线</div>
           <div class="all-business-list">
             <div
               v-for="(item, index) in bizSelectList"
@@ -29,7 +30,8 @@
               :class="['business-item' + (index % 4), item.isSecret?'disable':'']"
               @click="enter(item,'all')"
             >
-              {{ item.name }}
+              <img v-show="item.code === bizId || item.code === bizs" src="@/assets/current.png" class="biz-img">
+              <span class="biz-name">{{ item.name }}</span>
             </div>
           </div>
         </div>
@@ -53,7 +55,8 @@ export default {
   data() {
     return {
       bizSelectList: [], // 业务线选择列表
-      myBusiness: []
+      myBusiness: [],
+      bizs: ''
     }
   },
   computed: {
@@ -67,6 +70,9 @@ export default {
     this.settingGetBizList()
     this.getPersonBizList()
   },
+  mounted() {
+    if (this.bizId === -1) this.bizs = Number(localStorage.getItem('bizId'))
+  },
   methods: {
     async settingGetBizList() {
       const res = await settingGetBizList({})
@@ -119,7 +125,7 @@ export default {
 .business-contain {
   height: 100%;
   width: 100%;
-  padding: 120px 130px;
+  padding: 70px 130px 120px;
   background-color: #f7f8fc;
 }
 .bizId-select {
@@ -157,26 +163,28 @@ export default {
 }
 .my-business {
   width: 100%;
-  padding: 64px 46px 0 46px;
+  padding: 18px 46px 0 46px;
   color: #666666;
   font-size: 18px;
   .my-business-list {
     padding: 27px 32px;
     display: grid;
-    grid-template-columns: repeat(4, 25%);
+    text-align: center;
+    grid-template-columns: repeat(5, 20%);
     grid-gap: 50px 0;
   }
 }
 .all-business {
   width: 100%;
-  padding: 43px 46px;
+  padding: 0 46px 43px;
   color: #666666;
   font-size: 18px;
   .all-business-list {
     padding: 27px 32px;
     display: grid;
-    grid-template-columns: repeat(4, 25%);
-    grid-gap: 50px 0;
+    text-align: center;
+    grid-template-columns: repeat(5, 20%);
+    grid-gap: 33px 0;
   }
 }
 .business-name {
@@ -200,41 +208,41 @@ export default {
   background-color: #409eff;
 }
 .business-item0 {
-  color: #409eff;
-  border: 1px solid #409eff;
-  box-shadow: 0px 6px 12px rgba(64, 158, 255, 0.2);
-}
-.business-item0:hover {
-  color: #ffffff;
-  background-color: #409eff;
+  color: #333;
+  border: 1px solid #666;
+  box-shadow: 0px 6px 12px rgba(153, 153, 153, 0.2);
 }
+// .business-item0:hover {
+//   color: #ffffff;
+//   background-color: #409eff;
+// }
 .business-item1 {
-  color: #f88c51;
-  border: 1px solid #f88c51;
-  box-shadow: 0px 6px 12px rgba(239, 160, 117, 0.2);
-}
-.business-item1:hover {
-  color: #ffffff;
-  background-color: #f88c51;
+  color: #333;
+  border: 1px solid #666;
+  box-shadow: 0px 6px 12px rgba(153, 153, 153, 0.2);
 }
+// .business-item1:hover {
+//   color: #ffffff;
+//   background-color: #f88c51;
+// }
 .business-item2 {
-  color: #ae61cf;
-  border: 1px solid #ae61cf;
-  box-shadow: 0px 6px 12px rgba(174, 97, 207, 0.2);
-}
-.business-item2:hover {
-  color: #ffffff;
-  background-color: #ae61cf;
+  color: #333;
+  border: 1px solid #666;
+  box-shadow: 0px 6px 12px rgba(153, 153, 153, 0.2);
 }
+// .business-item2:hover {
+//   color: #ffffff;
+//   background-color: #ae61cf;
+// }
 .business-item3 {
-  color: #13cbc2;
-  border: 1px solid #13cbc2;
-  box-shadow: 0px 6px 12px rgba(19, 203, 194, 0.2);
-}
-.business-item3:hover {
-  color: #ffffff;
-  background-color: #13cbc2;
+  color: #333;
+  border: 1px solid #666;
+  box-shadow: 0px 6px 12px rgba(153, 153, 153, 0.2);
 }
+// .business-item3:hover {
+//   color: #ffffff;
+//   background-color: #13cbc2;
+// }
 .business-tips {
   margin-top: 43px;
   margin-bottom: 50px;
@@ -265,4 +273,14 @@ export default {
   color: #999999;
   background-color: #ffffff;
 }
+.biz-img {
+  display: inline-block;
+  width: 15px;
+  position: relative;
+  top: -7px;
+  left: 11px;
+}
+.biz-name {
+  width: 150px;
+}
 </style>

+ 3 - 3
src/views/projectManage/Drawer.vue

@@ -304,9 +304,9 @@ export default {
     },
 
     getoptions(val) { // 添加角色判断重复人员是否为相同角色
-      this.group.map(item => {
-        this.form.role === item.id ? val.roleName = item.name : ''
-      })
+      // this.group.map(item => {
+      //   this.form.role === item.id ? val.roleName = item.name : ''
+      // })
       if (this.gridData2.length > 0) {
         const num = this.gridData2.some(item => {
           if (item.idap === val.idap && item.roleId === this.form.role) {

+ 0 - 1
src/views/projectManage/bugList/details/bugTableDialog.vue

@@ -242,7 +242,6 @@ export default {
 }
 .open-sidebar .bug_manage_drawer {
   pointer-events: none;
-  margin-top: 10px;
 }
 .top-sidebar .bug_manage_drawer {
   pointer-events: none;

+ 8 - 4
src/views/projectManage/requirement/requirementDetail.vue

@@ -121,7 +121,7 @@
                     v-if="!form_query.needGrey || isScheduleLocked === 1"
                     class="titleStatus"
                     :class="isScheduleLocked === 1 ? 'el-icon-lock' : 'el-icon-unlock'"
-                    @click="unlockScheduleCheck"
+                    @click="unlockScheduleCheck(isScheduleLocked)"
                   >
                     {{ isScheduleLocked === 1 ? '已锁定' : '未锁定' }}
                   </span>
@@ -518,9 +518,13 @@ export default {
         this.$message({ message: '修改成功', type: 'success', duration: 1000, offset: 150 })
       }
     },
-    async unlockScheduleCheck() {
-      const res = await unlockScheduleCheck(this.requirementId)
-      if (res.code === 200) {
+    async unlockScheduleCheck(index) {
+      if (index === 1) {
+        const res = await unlockScheduleCheck(this.requirementId)
+        if (res.code === 200) {
+          this.scheduleVisble = true
+        }
+      } else {
         this.scheduleVisble = true
       }
     },

+ 6 - 3
src/views/projectManage/version/list/index.vue

@@ -41,8 +41,8 @@
           <time-line :steps="timeLineSteps" />
         </div>
       </el-main>
-      <div class="layout_main version_list_layout_main" style="padding: 1%;">
-        <el-tabs v-model="activeName" @tab-click="handleClick">
+      <div class="layout_main version_list_layout_main" style="padding: 15px">
+        <el-tabs v-model="activeName" class="version-nav-tag" @tab-click="handleClick">
           <el-tab-pane label="需求" name="first">
             <el-row>
               <el-col :span="24">
@@ -512,7 +512,10 @@ export default {
 .version_list_layout_main {
   /deep/ .el-tabs__item {
     font-size: 16px;
-}
+  }
+  /deep/ .el-tabs__header{
+    margin-left: 15px;
+  }
 }
 .time-line-container {
   margin-top: 20px;

+ 4 - 1
src/views/quality/allStatistics.vue

@@ -4,11 +4,13 @@
       <span class="control-item" :class="{'is-active':isActive === 1}" @click="isActive=1">需求统计</span>
       <span class="control-item" :class="{'is-active':isActive === 2}" @click="isActive=2">任务统计</span>
       <span class="control-item" :class="{'is-active':isActive === 3}" @click="isActive=3">缺陷统计</span>
+      <span class="control-item" :class="{'is-active':isActive === 4}" @click="isActive=4">老版统计</span>
     </div>
     <keep-alive>
       <require-statistics v-if="isActive === 1" />
       <task-statistics v-if="isActive === 2" />
       <defect-statistics v-if="isActive === 3" />
+      <quality-measurement v-if="isActive === 4" />
     </keep-alive>
   </section>
 </template>
@@ -16,9 +18,10 @@
 import requireStatistics from './requireStatistics'
 import taskStatistics from './taskStatistics'
 import defectStatistics from './defectStatistics'
+import qualityMeasurement from './qualityMeasurement'
 export default {
   components: {
-    requireStatistics, taskStatistics, defectStatistics
+    requireStatistics, taskStatistics, defectStatistics, qualityMeasurement
   },
   data() {
     return {

+ 1 - 1
src/views/quality/components/developmentCycle.vue

@@ -90,7 +90,7 @@ export default {
         return value.code === this.graphType
       })
       this.echartsOption = {
-        grid: { left: '0%', right: '2%', bottom: '0%', top: '3%', containLabel: true },
+        grid: { left: '0%', right: '3%', bottom: '0%', top: '3%', containLabel: true },
         tooltip: {
           showDelay: 0,
           formatter: (params) => {

+ 2 - 2
src/views/quality/defectStatistics.vue

@@ -756,7 +756,7 @@ export default {
   .defect-main {
     padding: 20px 20px 0 20px;
     height:100%;
-    width: calc(100%-60px);
+    width: calc(100%-20px);
     background:#ffffff;
     margin: 10px;
     border-radius: 4px;
@@ -859,7 +859,7 @@ export default {
   }
   .charts-main {
     padding-bottom: 20px;
-    width:calc(100%-60px);
+    width:calc(100% - 20px);
     background:#ffffff;
     margin: 10px;
     border-radius: 4px;

+ 4 - 5
src/views/quality/qualityDefectProcess.vue

@@ -150,12 +150,11 @@ export default {
     .block
       background-color rgba(255,255,255,1)
       box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
-      border-radius 7px
-      width 97%
-      min-height calc(100vh - 100px)
-      margin-top 25px
+      border-radius 4px
+      width 98.5%
+      min-height calc(100vh - 81px)
+      margin 10px 0
       padding 29px 20px
-      margin-bottom 22px
       .title-search-output
         display flex
         align-items center

+ 4 - 5
src/views/quality/qualityHotpatchProcess.vue

@@ -134,12 +134,11 @@ export default {
     .block
       background-color rgba(255,255,255,1)
       box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
-      border-radius 7px
-      width 97%
-      min-height calc(100vh - 100px)
-      margin-top 25px
+      border-radius 4px
+      width 98.5%
+      min-height calc(100vh - 81px)
+      margin-top 10px 0
       padding 29px 20px
-      margin-bottom 22px
       .title-search-output
         display flex
         align-items center

+ 24 - 102
src/views/quality/qualityMeasurement.vue

@@ -7,15 +7,7 @@
         <el-menu-item index="3">部门数据</el-menu-item>
         <el-menu-item index="5">客户端数据</el-menu-item>
       </el-menu>
-      <el-date-picker
-        v-model="timeInterval"
-        type="daterange"
-        range-separator="至"
-        start-placeholder="开始日期"
-        end-placeholder="结束日期"
-        value-format="timestamp"
-        @change="dataSearch"
-      />
+      <el-date-picker v-model="timeInterval" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" value-format="timestamp" @change="dataSearch" />
     </el-header>
     <el-container style="height:calc(100vh - 140px);">
       <el-aside class="aside">
@@ -36,62 +28,23 @@
           <el-tab-pane :label="guild" name="first">
             <!-- 上线过程 客户端-->
             <h4>1. 上线过程</h4>
-            <el-table
-              v-show="pauseKey === 5"
-              :data="clientOnline"
-              border
-              style="width: 100%"
-              size="mini"
-            >
-              <el-table-column
-                label="上线次数"
-                align="center"
-              >
+            <el-table v-show="pauseKey === 5" :data="clientOnline" border style="width: 100%" size="mini">
+              <el-table-column label="上线次数" align="center">
                 <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toClientView()">{{ scope.row.clientOnlineCount }}</a></template>
               </el-table-column>
             </el-table>
             <!-- 上线过程-->
-            <el-table
-              v-show="pauseKey !== 5"
-              :data="[onlineProcess]"
-              border
-              style="width: 100%"
-              size="mini"
-            >
-              <el-table-column
-                prop="totalOnlineNum"
-                label="上线次数"
-                style="width:50%;"
-                align="center"
-              >
+            <el-table v-show="pauseKey !== 5" :data="[onlineProcess]" border style="width: 100%" size="mini">
+              <el-table-column prop="totalOnlineNum" label="上线次数" style="width:50%;" align="center">
                 <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('0')">{{ scope.row.totalOnlineNum }}</a></template>
               </el-table-column>
-              <el-table-column
-                label="免提测全量上线数"
-                style="width:50%;"
-                align="center"
-              >
+              <el-table-column label="免提测全量上线数" style="width:50%;" align="center">
                 <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('1')">{{ scope.row.noTestNum }}</a></template>
               </el-table-column>
             </el-table>
-            <el-table
-              v-show="pauseKey !== 5"
-              :data="[onlineProcess]"
-              border
-              style="width: 100%"
-              class="move-border-top abviously"
-              size="mini"
-            >
-              <el-table-column
-                label="回滚数据"
-                style="width:100%;"
-                align="center"
-              >
-                <el-table-column
-                  label="回滚次数"
-                  style="width:20%;"
-                  align="center"
-                >
+            <el-table v-show="pauseKey !== 5" :data="[onlineProcess]" border style="width: 100%" class="move-border-top abviously" size="mini">
+              <el-table-column label="回滚数据" style="width:100%;" align="center">
+                <el-table-column label="回滚次数" style="width:20%;" align="center">
                   <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('2')">{{ scope.row.rollbackNum }}</a></template>
                 </el-table-column>
                 <el-table-column
@@ -248,18 +201,8 @@
                   width="calc(10/7)%"
                   align="center"
                 />
-                <el-table-column
-                  prop="totalP3"
-                  label="P3"
-                  width="calc(10/7)%"
-                  align="center"
-                />
-                <el-table-column
-                  prop="totalP4"
-                  label="P4"
-                  width="calc(10/7)%"
-                  align="center"
-                />
+                <el-table-column prop="totalP3" label="P3" width="calc(10/7)%" align="center" />
+                <el-table-column prop="totalP4" label="P4" width="calc(10/7)%" align="center" />
                 <el-table-column
                   prop="totalP5"
                   label="P5"
@@ -321,10 +264,7 @@
                 width="120"
                 align="center"
               />
-              <el-table-column
-                label="bug修复率"
-                align="center"
-              >
+              <el-table-column label="bug修复率" align="center">
                 <template slot-scope="scope">{{ scope.row.avgRepairTime | toPercent }}</template>
               </el-table-column>
               <el-table-column
@@ -368,16 +308,8 @@
                 label="提测"
                 align="center"
               />
-              <el-table-column
-                prop="checkInRepulse"
-                label="提测打回"
-                align="center"
-              />
-              <el-table-column
-                prop="stepOut"
-                label="准出"
-                align="center"
-              />
+              <el-table-column prop="checkInRepulse" label="提测打回" align="center" />
+              <el-table-column prop="stepOut" label="准出" align="center" />
             </el-table>
           </el-tab-pane>
           <el-tab-pane v-if="pauseKey !== 5" label="数据视图" name="third">
@@ -401,18 +333,8 @@
             <div v-if="!isTotalShowOnline" id="comparatorOnlineBetween" style="width: 100%; height: 400px" />
           </el-tab-pane>
           <el-tab-pane v-if="pauseKey === 3" label="研发质量" name="second">
-            <!-- people -->
-            <el-table
-              :data="handlerData"
-              style="width: 100%;margin-top: 21.280px;"
-              border
-              size="mini"
-            >
-              <el-table-column
-                prop="handler"
-                label="姓名"
-                align="center"
-              />
+            <el-table :data="handlerData" style="width: 100%;margin-top: 21.280px;" border size="mini">
+              <el-table-column prop="handler" label="姓名" align="center" />
               <el-table-column label="研发质量" align="center">
                 <el-table-column
                   prop="defectsVO.totalProjectNum"
@@ -1079,10 +1001,10 @@ export default {
     background-color #F2F3F6
     min-width 900px
     .header
-      width 97%
+      width 98.5%
       background-color white
-      border-radius 7px
-      margin 15px auto
+      border-radius 4px
+      margin 10px auto
       display flex
       justify-content space-between
       align-items center
@@ -1108,14 +1030,14 @@ export default {
     .aside
       width 12.9% !important
       overflow-x scroll
-      margin 0 0 1.5% 1.5%
+      margin 0 0 10px 10px
       background-color white
-      border-radius 7px
+      border-radius 4px
     .combine-table
       background-color white
-      border-radius 7px
-      width 82.7%
-      margin 0 0 1.5% 1.5%
+      border-radius 4px
+      width 84.7%
+      margin 0 0 10px 10px
       flex 0 1 auto !important
     // .combine-table >>> li
     //   width 65px

+ 4 - 5
src/views/quality/qualityProcess.vue

@@ -159,12 +159,11 @@ export default {
     .block
       background-color rgba(255,255,255,1)
       box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
-      border-radius 7px
-      width 95%
-      min-height calc(100vh - 100px)
-      margin-top 25px
+      border-radius 4px
+      width 98.5%
+      min-height calc(100vh - 81px)
+      margin 10px 0
       padding 29px 20px
-      margin-bottom 22px
       .title-search-output
         display flex
         align-items center

+ 0 - 1
src/views/workbench/bugTableList.vue

@@ -237,7 +237,6 @@ export default {
 }
 .open-sidebar .bug_manage_drawer {
   pointer-events: none;
-  margin-top: 10px;
 }
 .top-sidebar .bug_manage_drawer {
   pointer-events: none;

+ 2 - 6
src/views/workbench/team/index.vue

@@ -4,7 +4,7 @@
     <el-header class="main-header">
       <div class="select-group">
         <el-cascader ref="cascader" v-model="teamNames" :options="options" class="cascader" @change="handleChange" />
-        <span class="team_teamName" @click="setCascader">{{ teamBizName.length > 11 ? teamBizName.substring(0, 11) + '...' : teamBizName }} <i class="el-icon-arrow-down" /></span>
+        <span class="el-dropdown-link" @click="setCascader">{{ teamBizName.length > 11 ? teamBizName.substring(0, 11) + '...' : teamBizName }} <i class="el-icon-arrow-down" /></span>
         <el-dropdown size="small" style="margin-left: 20px" @command="handleBizId">
           <span class="el-dropdown-link">
             {{ bizName }}<i class="el-icon-arrow-down el-icon--right" />
@@ -697,6 +697,7 @@ export default {
 .el-dropdown-link {
   color: #333B4A;
   font-weight: 600;
+  cursor: pointer;
 }
 >>>.el-dropdown-menu__item {
   max-width: 20vw;
@@ -722,11 +723,6 @@ export default {
 }
 </style>
 <style lang="scss" scoped>
-.team_teamName {
-  color: #333B4A;
-  font-weight: 500;
-  cursor: pointer;
-}
 .cascader {
   position: absolute;
   width: 20px;

Some files were not shown because too many files changed in this diff