Browse Source

市场工作台ui改造

hujunwei 2 years ago
parent
commit
a86511d32e

+ 1 - 0
src/App.vue

@@ -32,6 +32,7 @@ body,
 .page {
   width: 100%;
   min-width: 1000px;
+  overflow: hidden;
   height: 100%;
   font-family: "Avenir", Helvetica, Arial, sans-serif;
   -webkit-font-smoothing: antialiased;

+ 7 - 2
src/assets/calendar.scss

@@ -1,7 +1,12 @@
 @charset "UTF-8";
 .calendar-box {
-  height: 710px;
-  overflow-y: scroll;
+  height: 720px;
+  overflow-y: auto;
+  background: rgb(255, 255, 255);
+  padding-left: 15px;
+  padding-top: 20px;
+  padding-right: 15px;
+  border-radius: 5px;
 }
 .tag-tip{
   text-align: right;

BIN
src/assets/dbyb-bt-bj3.jpg


BIN
src/assets/djlph-bt-bj.jpg


BIN
src/assets/logo.png


BIN
src/assets/newlogo-old.png


BIN
src/assets/newlogo.png


BIN
src/assets/newlogo2-old.png


BIN
src/assets/newlogo2.png


+ 89 - 8
src/components/p-header.vue

@@ -1,9 +1,9 @@
 <template>
   <div class="p-header">
-    <div class="title" @click="menuClose">
+    <!-- <div class="title" @click="menuClose">
       <i v-if="this.$store.state.collapse" class="el-icon-s-fold"></i
       ><i v-else class="el-icon-s-unfold"></i>
-    </div>
+    </div> -->
     <!-- <div
       class="title"
       v-for="(item, index) in routeChecked"
@@ -13,12 +13,27 @@
     >
       <span :class="item.icon"></span>{{ item.name }}
     </div> -->
+    <div class="headerspan">
+      <!-- <span>市场经济管理平台</span> -->
+      <img
+        :src="
+          parentorgid === '00440063000000000000'
+            ? require('../assets/newlogo2.png')
+            : require('../assets/newlogo.png')
+        "
+        style="text-align: center; vertical-align: middle"
+        alt=""
+      />
+    </div>
+
     <div class="bars">
-      <div class="bars-item user-info">Hello,{{ username }}</div>
       <div class="bars-item" @click="handleGoToCalendar">
         <i class="el-icon-date"></i>
         日历
       </div>
+      <div class="bars-item user-info">
+        你好{{ username }}
+      </div>
 
       <div class="bars-item" @click="handleHelp">
         <i class="el-icon-time"></i>
@@ -29,8 +44,30 @@
         知识库
       </div>
       <div class="bars-item" @click="handleLogout">
-        <i class="el-icon-guide"></i>
-        退出
+        <!-- <i class="el-icon-guide"></i> -->
+        <svg
+          t="1654163202752"
+          class="icon"
+          viewBox="0 0 1024 1024"
+          version="1.1"
+          xmlns="http://www.w3.org/2000/svg"
+          p-id="9307"
+          id="mx_n_1654163202756"
+          width="18"
+          height="18"
+        >
+          <path
+            d="M768 819.2h-256V204.8L256 102.4h512v102.4h102.4V0H0v819.2l512 204.8v-102.4h358.4v-204.8h-102.4v102.4z"
+            p-id="9308"
+            fill="#ffffff"
+          ></path>
+          <path
+            d="M1024 460.8l-256-153.6v102.4h-204.8v102.4h204.8v102.4l256-153.6z"
+            p-id="9309"
+            fill="#ffffff"
+          ></path>
+        </svg>
+        <span>退出</span>
       </div>
     </div>
   </div>
@@ -47,6 +84,7 @@ export default {
   },
   data() {
     return {
+      parentorgid: "",
       currentIndex: "5",
       date: new Date(),
       routeChecked: [
@@ -74,6 +112,7 @@ export default {
     //   this.$store.commit("setCollapse");
     // }
     //this.menuClose();
+    this.getDept();
     this.$http({
       url: "/sysmgr/csysdept/queryGroupListByLoginNo",
       method: "post",
@@ -88,6 +127,19 @@ export default {
     });
   },
   methods: {
+    getDept() {
+      this.$http({
+        url: "/sysmgr/csysdept/queryGroupListByLoginNo",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {},
+      }).then((res) => {
+        console.log(res.data[0].parentorgid);
+        this.parentorgid = res.data[0].parentorgid;
+      });
+    },
     handleGoToCalendar() {
       this.$http({
         url: "/sysmgr/csysdept/queryGroupListByLoginNo",
@@ -164,7 +216,7 @@ export default {
             window.sessionStorage.menus = undefined;
             window.sessionStorage.userInfo = undefined;
             window.sessionStorage.childrenMenus = undefined;
-            window.sessionStorage.removeItem("antiSpoofingSearchParams")
+            window.sessionStorage.removeItem("antiSpoofingSearchParams");
             window.opener = null;
             window.open(" ", "_self");
             window.close();
@@ -218,7 +270,26 @@ export default {
 .p-header {
   color: #fff;
   height: 100%;
-  background-color: #0b82ff;
+  background-color: #0056a9;
+
+  .headerspan {
+    float: left;
+    width: 300px;
+    line-height: 60px;
+    margin-left: 20px;
+    // background: url(../assets/logo.png) no-repeat 20px center;
+    // text-indent: 25px;
+    // font-size: 18px;
+    // font-weight: bolder;
+    color: #ffffff;
+    // span {
+    //   margin-left: 40px;
+    // }
+    img {
+      width: 207px;
+      height: 35px;
+    }
+  }
 
   .active {
     color: #0b82ff;
@@ -256,9 +327,19 @@ export default {
       margin-left: 30px;
       cursor: pointer;
       font-family: SourceHanSansCN-Normal;
-      font-size: 14px;
+      font-size: 18px;
       color: #ffffff;
+      position: relative;
       letter-spacing: 0;
+      svg {
+        position: absolute;
+        top: 55%;
+        bottom: 50%;
+        transform: translate(-50%, -50%);
+      }
+      span{
+        margin-left: 15px;
+      }
     }
 
     .user-info {

+ 20 - 6
src/components/p-menu-item.vue

@@ -58,13 +58,22 @@
 </script>
 <style>
 	.el-submenu {
-		border-bottom: 1px solid #f2f2f2;
+		border-bottom: 1px solid #ececec;
 	}
-
+	
 	.is-opened .el-submenu__title {
-		background-color: #ecf5ff !important;
+		/* background-color: #ecf5ff !important; */
+		background-color: #dddddd !important;
+		border-left:3px solid #34A0CE;
+	}
+	.el-submenu__title:hover{
+		background-color: #bbbbbb !important;
+		border-left:3px solid #34A0CE;
+	}
+	.is-opened .el-submenu__title:hover{
+		background-color: #bbbbbb !important;
+		border-left:3px solid #34A0CE;
 	}
-
 	.el-submenu__title {
 		/* background-color: #ecf5ff;
   border-radius: 30px;
@@ -81,16 +90,21 @@
 		text-overflow: ellipsis;
 		white-space: nowrap;
 		width: 50px;
-
+		background: #2e7dcf;
 		span {
 			padding-right: 10px;
+			color: #bdddff;
 		}
+		
+	}
+
+	.el-menu-item:hover{
+		background: #577494;
 	}
 
 	.el-menu--vertical {
 		.el-menu-item {
 			width: auto !important;
-
 			span {
 				padding-right: 0;
 			}

+ 183 - 167
src/components/p-menu.vue

@@ -1,185 +1,201 @@
 <template>
-	<div class="p-menu">
-		<!-- <div style="height:60px;background-color: #0b82ff;"></div> -->
-		<!-- <el-card class="card" ref="menuCard"> -->
-		<el-menu class="el-menu-vertical-demo" :default-active="getDefaultActive" router :collapse="collapse"
-			@open="handleOpen" @close="handleClose" active-text-color="#71A6FD">
-			<div class="menu-logo" style="height: 60px; line-height: 60px">
-<!--                <img width="95%" style="text-align: center; vertical-align: middle" src="../assets/newlogo.png"-->
-<!--                     alt="" />-->
-                <img :src="parentorgid==='00440063000000000000' ? require('../assets/newlogo2.png') : require('../assets/newlogo.png')" width="95%" style="text-align: center; vertical-align: middle" alt=""/>
-			</div>
-			<!-- 引入组件 -->
-			<div class="menuScoll">
-				<menuItem :menuData="data" class="menuScoll-box">
-				</menuItem>
-			</div>
-		</el-menu>
-		<!-- </el-card> -->
-	</div>
+  <div class="p-menu">
+    <!-- <div style="height:60px;background-color: #0b82ff;"></div> -->
+    <!-- <el-card class="card" ref="menuCard"> -->
+    <el-menu
+      class="el-menu-vertical-demo"
+      :default-active="getDefaultActive"
+      router
+      :collapse="collapse"
+      @open="handleOpen"
+      @close="handleClose"
+      active-text-color="#71A6FD"
+    >
+      <!-- <div class="menu-logo" style="height: 60px; line-height: 60px"> -->
+      <!--                <img width="95%" style="text-align: center; vertical-align: middle" src="../assets/newlogo.png"-->
+      <!--                     alt="" />-->
+      <!-- <img :src="parentorgid==='00440063000000000000' ? require('../assets/newlogo2.png') : require('../assets/newlogo.png')" width="95%" style="text-align: center; vertical-align: middle" alt=""/> -->
+      <!-- </div> -->
+      <!-- 引入组件 -->
+      <div class="menuScoll">
+        <menuItem :menuData="data" class="menuScoll-box"> </menuItem>
+      </div>
+    </el-menu>
+    <!-- </el-card> -->
+  </div>
 </template>
 
 <script>
-	export default {
-		props: {
-			//菜单数据源类型Array<JsonObject>,具体格式参考data/menu-list.js
-			data: {
-				required: false,
-				type: Array,
-				default () {
-					return [];
-				},
-			},
-		},
-		components: {
-			menuItem: () => import( /* webpackChunkName: "system" */ "./p-menu-item"),
-		},
-		computed: {
-			getDefaultActive() {
-				return this.$store.state.defaultActive;
-			},
-			collapse() {
-				return this.$store.state.collapse;
-			},
-		},
-		data() {
-			return {
-				defaultActiveMenuItem: {},
-                parentorgid: '',
-			};
-		},
-		mounted() {
-			if (this.data.length > 0) {
-				this.recursion(this.data);
-			}
-            this.getDept()
-		},
-		updated() {
-			if (this.data.length > 0) {
-
-				this.recursion(this.data);
-
-			}
-		},
-		methods: {
-			recursion(data) {
-				for (let item of data) {
-					if (item.children != "") {
-						this.recursion(item.children);
-					} else if (item.rountPath == this.$route.path) {
-						if (item.systemflag != "1") {
-							this.handelRouterTo(item);
-							return;
-						}
-					}
-				}
-			},
-			handleOpen(e) {
-				if (e.indexOf("/") != -1) {
-					if (this.$route.path != e) {
-						this.$router.push(e);
-					}
-				}
-			},
-			handleClose() {},
-			handelRouterTo(item) {
-				if (item.systemflag == "1") {
-					return;
-				}
-				let defaults = this.$store.state.tabList.filter((row) => {
-					let rountPath = row.hasOwnProperty("rountPath") ?
-						row.rountPath :
-						row.jspUrl;
-					if (rountPath == item.rountPath) {
-						return row;
-					}
-				});
-				if (defaults.length == 1) {
-					return;
-				}
-				let set = new Set([...this.$store.state.tabList, item]);
-				set.add(item);
-				this.$store.commit("setDefaultActive", item.rountPath);
-				this.$store.commit("setTabList", Array.from(set));
-			},
-            getDept() {
-                this.$http({
-                    url: "/sysmgr/csysdept/queryGroupListByLoginNo",
-                    method: "post",
-                    headers: {
-                        "Content-Type": "application/json",
-                    },
-                    data: {},
-                }).then((res) => {
-                    console.log(res.data[0].parentorgid)
-                    this.parentorgid = res.data[0].parentorgid;
-                });
-            },
-		},
-	};
+export default {
+  props: {
+    //菜单数据源类型Array<JsonObject>,具体格式参考data/menu-list.js
+    data: {
+      required: false,
+      type: Array,
+      default() {
+        return [];
+      },
+    },
+  },
+  components: {
+    menuItem: () => import(/* webpackChunkName: "system" */ "./p-menu-item"),
+  },
+  computed: {
+    getDefaultActive() {
+      return this.$store.state.defaultActive;
+    },
+    collapse() {
+      return this.$store.state.collapse;
+    },
+  },
+  data() {
+    return {
+      defaultActiveMenuItem: {},
+      parentorgid: "",
+    };
+  },
+  mounted() {
+    if (this.data.length > 0) {
+      this.recursion(this.data);
+    }
+    this.getDept();
+  },
+  updated() {
+    if (this.data.length > 0) {
+      this.recursion(this.data);
+    }
+  },
+  methods: {
+    recursion(data) {
+      for (let item of data) {
+        if (item.children != "") {
+          this.recursion(item.children);
+        } else if (item.rountPath == this.$route.path) {
+          if (item.systemflag != "1") {
+            this.handelRouterTo(item);
+            return;
+          }
+        }
+      }
+    },
+    handleOpen(e) {
+      if (e.indexOf("/") != -1) {
+        if (this.$route.path != e) {
+          this.$router.push(e);
+        }
+      }
+    },
+    handleClose() {},
+    handelRouterTo(item) {
+      if (item.systemflag == "1") {
+        return;
+      }
+      let defaults = this.$store.state.tabList.filter((row) => {
+        let rountPath = row.hasOwnProperty("rountPath")
+          ? row.rountPath
+          : row.jspUrl;
+        if (rountPath == item.rountPath) {
+          return row;
+        }
+      });
+      if (defaults.length == 1) {
+        return;
+      }
+      let set = new Set([...this.$store.state.tabList, item]);
+      set.add(item);
+      this.$store.commit("setDefaultActive", item.rountPath);
+      this.$store.commit("setTabList", Array.from(set));
+    },
+    getDept() {
+      this.$http({
+        url: "/sysmgr/csysdept/queryGroupListByLoginNo",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {},
+      }).then((res) => {
+        console.log(res.data[0].parentorgid);
+        this.parentorgid = res.data[0].parentorgid;
+      });
+    },
+  },
+};
 </script>
 <style>
-	.el-menu--collapse .menu-logo {
-		background-image: url(../assets/leftlogo.png);
-		background-repeat: no-repeat;
-		background-size: 50% 50%;
-		background-position-x: 50%;
-		background-position-y: 50%;
-	}
+.el-menu--collapse .menu-logo {
+  background-image: url(../assets/leftlogo.png);
+  background-repeat: no-repeat;
+  background-size: 50% 50%;
+  background-position-x: 50%;
+  background-position-y: 50%;
+}
 
-	.menu-logo {
-		border: 1px solid #f2f2f2;
-	}
+.menu-logo {
+  border: 1px solid #f2f2f2;
+}
 
-	.el-menu--collapse .menu-logo img {
-		display: none;
-	}
+.el-menu--collapse .menu-logo img {
+  display: none;
+}
 
-	.el-menu--collapse .el-submenu__title span {
-		display: none;
-	}
+.el-menu--collapse .el-submenu__title span {
+  display: none;
+}
 
-	.el-menu--collapse .el-submenu__title .el-submenu__icon-arrow {
-		display: none;
-	}
+.el-menu--collapse .el-submenu__title .el-submenu__icon-arrow {
+  display: none;
+}
 
-	.p-menu .el-menu-vertical-demo:not(.el-menu--collapse) {
-		width: 200px;
-		min-height: 400px;
-	}
+.p-menu .el-menu-vertical-demo:not(.el-menu--collapse) {
+  width: 200px;
+  min-height: 400px;
+}
 </style>
 <style scoped="scoped" lang="scss">
-	.p-menu {
-		height: 100%;
-		// padding-left: 50px;
-		// padding-top: 38px;
-		max-width: 200px;
-		background-color: white;
-		overflow: hidden;
+.p-menu {
+  height: 100%;
+  // padding-left: 50px;
+  // padding-top: 38px;
+  max-width: 200px;
+  background-color: white;
+  overflow: hidden;
+
+  .card {
+    width: 100%;
+    flex-grow: 0;
+    flex-shrink: 0;
+    height: 100%;
+    max-height: 100%;
 
-		.card {
-			width: 100%;
-			flex-grow: 0;
-			flex-shrink: 0;
-			height: 100%;
-			max-height: 100%;
+    ::v-deep .el-card__body {
+      padding: 0px;
+    }
+  }
+}
 
-			::v-deep .el-card__body {
-				padding: 0px;
-			}
-		}
-	}
+.menuScoll {
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
 
-	.menuScoll {
-		width: 100%;
-		height: 100%;
-		overflow: hidden;
+  .menuScoll-box {
+    width: calc(100% + 20px);
+    max-height: calc(100vh - 60px);
+    padding-bottom: 60px;
+    overflow-y: scroll;
+  }
+}
+/*菜单打开*/
+::v-deep .el-submenu.is-opened > .el-submenu__title .el-submenu__icon-arrow {
+  -webkit-transform: rotateZ(0deg);
+  transform: rotateZ(0deg);
+}
 
-		.menuScoll-box {
-			width: calc(100% + 20px);
-			max-height: calc(100vh - 60px);
-			padding-bottom: 60px;
-			overflow-y: scroll;
-		}
-	}
+/*菜单关闭*/
+::v-deep .el-submenu>.el-submenu__title .el-submenu__icon-arrow{
+	-webkit-transform: rotateZ(-90deg); 
+	-ms-transform: rotate(-90deg);
+	transform: rotateZ(-90deg);
+}
 </style>

+ 22 - 18
src/components/p-tabs.vue

@@ -27,7 +27,7 @@
           </div>
         </el-tooltip>
         <i
-          class="el-icon-error close"
+          class="el-icon-close close"
           @click="handleClose($event, item, index)"
         ></i>
       </div>
@@ -377,22 +377,22 @@ export default {
 .p-tabs {
   box-sizing: border-box;
   width: 100%;
-  height: 38px;
+  height: 50px;
   white-space: nowrap;
   overflow: hidden;
-  margin-top: 15px;
-
+  // margin-top: 15px;
+  background: #f3f3f3;;
   // padding-left: 40px;
   .tab-item {
     display: inline-block;
-    height: 38px;
-    line-height: 38px;
+    height: 50px;
+    line-height: 50px;
     color: black;
     position: relative;
-    width: 134px;
+    width: 160px;
     overflow: hidden;
     border-radius: 0px 5px 0px 0px;
-    margin-left: 15px;
+    // margin-left: 15px;
     cursor: pointer;
 
     .tab-item-shap {
@@ -408,7 +408,7 @@ export default {
 
     .text {
       text-align: center;
-      overflow-x: hidden;
+      // overflow-x: hidden;
       white-space: nowrap;
       text-overflow: ellipsis;
       // padding: 0px 16px;
@@ -418,19 +418,20 @@ export default {
       width: 100%;
       height: 38px;
       text-align: center;
-      background-color: white;
+      // background-color: white;
     }
 
     .close {
-      font-size: 12px;
+      font-size: 16px;
+      font-weight: 900;
       position: absolute;
-      right: 3px;
-      top: 3px;
-      color: #fff;
+      right: -3px;
+      top: 18px;
+      color: #000000;
     }
 
     .close:hover {
-      color: #107cff;
+      color: #0056A9;
     }
   }
 
@@ -441,6 +442,7 @@ export default {
   }
 
   .tab-item-active {
+    border-bottom: 3px solid #41a2fd;
     .skew {
       background: #fff;
     }
@@ -454,15 +456,17 @@ export default {
 
     .text {
       text-align: center;
-      overflow-x: hidden;
+      // overflow-x: hidden;
       white-space: nowrap;
       text-overflow: ellipsis;
       // padding: 0px 16px;
-      color: #107cff;
+      font-weight:900;
+      color: #0056A9;
+      
     }
 
     .close {
-      color: #107cff;
+      color: transparent;
     }
   }
 

+ 136 - 96
src/pages/main/achievements/achievementsIndex.vue

@@ -1,101 +1,141 @@
 <template>
-	<div class="inner-container">
-		<el-col :span="3">
-			<el-tabs tab-position="left" v-model="activeName" @tab-click="handleClick">
-				<el-tab-pane v-for="(item, index) in menuList" :key="index" :name="item.path" :label="item.label">
-				</el-tab-pane>
-			</el-tabs>
-		</el-col>
-		<el-col :span="21">
-			<div style="height: 100%">
-				<router-view />
-			</div>
-		</el-col>
-	</div>
+  <div class="inner-container">
+    <div class="box">
+      <el-tabs v-model="activeName" @tab-click="handleClick" type="card">
+        <el-tab-pane
+          v-for="(item, index) in menuList"
+          :key="index"
+          :name="item.path"
+          :label="item.label"
+        >
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+    <el-row>
+      <div style="height: 100%;padding-left:15px">
+        <router-view />
+      </div>
+    </el-row>
+  </div>
 </template>
 <script>
-	export default {
-		data() {
-			return {
-				activeName: "budget",
-				userNo: JSON.parse(window.sessionStorage.userInfo).loginNo,
-				showList: [],
-				routerList: [{
-						label: "集团绩效",
-						path: "/recallJt",
-						name: "recallJt"
-					},
-					{
-						label: "部门绩效",
-						path: "/recallBm",
-						name: "recallBm"
-					},
-					{
-						label: "副总GS",
-						path: "/recallGs",
-						name: "recallGs"
-					},
-					// {
-					// 	label: "绩效回复列表",
-					// 	path: "/kpiRecall",
-					// 	name: "kpiRecall"
-					// },
-					{
-						label: "绩效模板管理",
-						path: "/kpiMuban",
-						name: "kpiMuban"
-					},
-                    {
-                        label: "下发管理",
-                        path: "/kpiIssueList",
-                        name: "kpiIssueList"
-                    },
-                    {
-                        label: "科室绩效",
-                        path: "/recallkpi",
-                        name: "recallkpi"
-                    },
-
-				],
-			};
-		},
-		computed: {
-			menuList: function() {
-				let arr = [];
-				this.routerList.map((item) => {
-					this.showList.map((row) => {
-						if (item.path == row) {
-							arr.push(item);
-						}
-					});
-				});
-				return arr;
-			},
-		},
-		methods: {
-			handleClick(val) {
-				if (this.$route.path != this.activeName) {
-					this.$router.push(this.activeName);
-				}
-			},
-		},
-		mounted() {
-			this.activeName = this.$route.path;
-		},
-		created() {
-			JSON.parse(sessionStorage.childrenMenus).map((item) => {
-				this.showList.push(item.jspUrl);
-			});
-		},
-		watch: {
-			$route(to, from) {
-				this.activeName = this.$route.path;
-			},
-		},
-	};
+export default {
+  data() {
+    return {
+      activeName: "budget",
+      userNo: JSON.parse(window.sessionStorage.userInfo).loginNo,
+      showList: [],
+      routerList: [
+        {
+          label: "集团绩效",
+          path: "/recallJt",
+          name: "recallJt",
+        },
+        {
+          label: "部门绩效",
+          path: "/recallBm",
+          name: "recallBm",
+        },
+        {
+          label: "副总GS",
+          path: "/recallGs",
+          name: "recallGs",
+        },
+        // {
+        // 	label: "绩效回复列表",
+        // 	path: "/kpiRecall",
+        // 	name: "kpiRecall"
+        // },
+        {
+          label: "绩效模板管理",
+          path: "/kpiMuban",
+          name: "kpiMuban",
+        },
+        {
+          label: "下发管理",
+          path: "/kpiIssueList",
+          name: "kpiIssueList",
+        },
+        {
+          label: "科室绩效",
+          path: "/recallkpi",
+          name: "recallkpi",
+        },
+      ],
+    };
+  },
+  computed: {
+    menuList: function () {
+      let arr = [];
+      this.routerList.map((item) => {
+        this.showList.map((row) => {
+          if (item.path == row) {
+            arr.push(item);
+          }
+        });
+      });
+      return arr;
+    },
+  },
+  methods: {
+    handleClick(val) {
+      if (this.$route.path != this.activeName) {
+        this.$router.push(this.activeName);
+      }
+    },
+  },
+  mounted() {
+    this.activeName = this.$route.path;
+  },
+  created() {
+    JSON.parse(sessionStorage.childrenMenus).map((item) => {
+      this.showList.push(item.jspUrl);
+    });
+  },
+  watch: {
+    $route(to, from) {
+      this.activeName = this.$route.path;
+    },
+  },
+};
 </script>
-<style>
-	.el-tabs__content {
-		display: none;
-	}
+<style lang="scss" scoped>
+.el-tabs__content {
+  display: none;
+}
+.box {
+  border-bottom: 1px solid #e1e1e1;
+  height: 55px;
+  margin-top:10px ;
+}
+::v-deep .el-tabs__item {
+  width: 166px;
+  text-align: center;
+  border-left: 10px solid #ffffff;
+  border-right: 10px solid #ffffff;
+}
+::v-deep .el-tabs__header {
+  margin: 0px;
+  background: #d8eaf6;
+  color: black;
+  border:0;
+  margin-left: 20px;
+  display: inline-block;
+}
+
+::v-deep .is-active {
+  background: #0583cd;
+  color: white;
+}
+
+::v-deep .el-tabs__item:hover {
+  color: black;
+}
+::v-deep .is-active:hover {
+  background: #0583cd;
+  color: white;
+}
+::v-deep .el-tabs--card>.el-tabs__header .el-tabs__nav {
+  border:0px
+}
 </style>

+ 3 - 0
src/pages/main/achievements/recallBumen.vue

@@ -417,5 +417,8 @@ export default {
   text-align: right;
   margin-top: 10px;
 }
+::v-deep .el-tabs__active-bar{
+		width: 0px !important;
+	}
 </style>
 

+ 3 - 0
src/pages/main/achievements/recallGS.vue

@@ -435,5 +435,8 @@ export default {
   text-align: right;
   margin-top: 10px;
 }
+::v-deep .el-tabs__active-bar{
+		width: 0px !important;
+	}
 </style>
 

+ 3 - 0
src/pages/main/achievements/recallJt.vue

@@ -387,4 +387,7 @@
 		text-align: right;
 		margin-top: 10px;
 	}
+	::v-deep .el-tabs__active-bar{
+		width: 0px !important;
+	}
 </style>

+ 63 - 24
src/pages/main/antiSpoofing/home.vue

@@ -1,31 +1,31 @@
 <template>
   <div class="inner-container">
     <div v-if="menuList.indexOf(activeName) >= 0">
-        <el-col :span="3"
-        ><el-tabs
-            tab-position="left"
-            v-model="activeName"
-            @tab-click="handleClick"
+      <div class="box">
+        <el-tabs
+          v-model="activeName"
+          @tab-click="handleClick"
         >
-            <el-tab-pane
-                v-for="(item, index) in routerList"
-                :key="index"
-                :name="item.path"
-                :label="item.label"
-            ></el-tab-pane>
+          <el-tab-pane
+            v-for="(item, index) in routerList"
+            :key="index"
+            :name="item.path"
+            :label="item.label"
+          ></el-tab-pane>
         </el-tabs>
-        </el-col>
-        <el-col :span="21" style="background: #f4f4f4;">
-            <div style="height: 100%">
-                <router-view />
-            </div>
-        </el-col>
+      </div>
+      <el-row>
+        <!-- <el-col :span="21" style="background: #f4f4f4;"> -->
+        <div style="height: 100%">
+          <router-view />
+        </div>
+      </el-row>
     </div>
-      <div v-else>
-          <div style="height: 100%;background: #f4f4f4;">
-              <router-view />
-          </div>
+    <div v-else>
+      <div style="height: 100%; background: #f4f4f4">
+        <router-view />
       </div>
+    </div>
   </div>
 </template>
 <script>
@@ -35,9 +35,13 @@ export default {
       activeName: "",
       showList: [],
       routerList: [
-        { label: "区县考核报表", path: "/districtCounty", name: "districtCounty" },
+        {
+          label: "区县考核报表",
+          path: "/districtCounty",
+          name: "districtCounty",
+        },
         { label: "人员考核报表", path: "/personnel", name: "personnel" },
-        { label: "渠道考核报表", path: "/channel", name: "channel" }
+        { label: "渠道考核报表", path: "/channel", name: "channel" },
       ],
     };
   },
@@ -76,8 +80,43 @@ export default {
   },
 };
 </script>
-<style>
+<style lang="scss" scoped>
+
 .el-tabs__content {
   display: none;
 }
+.box{
+  border-bottom: 1px solid #e1e1e1;
+  height: 55px;
+  margin-top:10px ;
+}
+::v-deep .el-tabs__item {
+  width: 166px;
+  text-align: center;
+  border-left: 10px solid #ffffff;
+  padding: 0;
+  border-right: 10px solid #ffffff;
+}
+::v-deep .el-tabs__header {
+  margin: 0px;
+  background: #d8eaf6;
+  color: black;
+  margin-left: 20px;
+  display: inline-block;
+}
+::v-deep .is-active {
+  background: #0583cd;
+  color: white;
+}
+
+::v-deep .el-tabs__item:hover {
+  color: black;
+}
+::v-deep .is-active:hover {
+  background: #0583cd;
+  color: white;
+}
+::v-deep .el-tabs__active-bar{
+  width: 0px !important;;
+}
 </style>

+ 176 - 154
src/pages/main/budget/budgetIndex.vue

@@ -1,162 +1,184 @@
 <template>
-	<div class="inner-container">
-		<el-col :span="3">
-			<span :class="item.sts?'spanbox bg':'spanbox'" v-for="(item, index) in menuList" :key="index" :name="item.path" :label="item.label" @click="handleClick(item)">
-				<el-badge :value="item.num" :max="99" :hidden="item.num == 0">
-					<span style="padding-right: 10px;">{{item.label}}</span>
-				</el-badge>
-			</span>
-			<!-- <el-tabs tab-position="left" v-model="activeName" @tab-click="handleClick">
+  <div class="inner-container">
+    <!-- <el-col :span="3"> -->
+    <div class="box">
+      <span
+        :class="item.sts ? 'spanbox bg' : 'spanbox'"
+        v-for="(item, index) in menuList"
+        :key="index"
+        :name="item.path"
+        :label="item.label"
+        @click="handleClick(item)"
+      >
+        <el-badge :value="item.num" :max="99" :hidden="item.num == 0">
+          <span>{{ item.label }}</span>
+        </el-badge>
+      </span>
+    </div>
+    <!-- <el-tabs tab-position="left" v-model="activeName" @tab-click="handleClick">
 				<el-tab-pane v-for="(item, index) in menuList" :key="index" :name="item.path" :label="item.label">
 				</el-tab-pane>
 			</el-tabs> -->
-		</el-col>
-		<el-col :span="21">
-			<div style="height: 100%">
-				<router-view />
-			</div>
-		</el-col>
-	</div>
+    <!-- </el-col> -->
+    <div style="padding-left: 15px">
+      <el-row>
+        <div style="height: 100%">
+          <router-view />
+        </div>
+      </el-row>
+    </div>
+  </div>
 </template>
 <script>
-	export default {
-		data() {
-			return {
-				activeName: "",
-				showList: [],
-				routerList: [{
-						label: "月度部门预算",
-						path: "/monthExcel",
-						name: "monthExcel",
-						sts:1,
-						num:0
-					},
-					{
-						label: "季度部门预算",
-						path: "/quarterExcel",
-						name: "quarterExcel",
-						sts:0,
-						num:0
-					},
-					{
-						label: "年度部门预算",
-						path: "/yearExcel",
-						name: "yearExcel",
-						sts:0,
-						num:0
-					},
-					{
-						label: "采购部门预算",
-						path: "/projectExcel",
-						name: "projectExcel",
-						sts:0,
-						num:0
-					},
-					// {
-					// 	label: "预算回复",
-					// 	path: "/recallAdmin",
-					// 	name: "recallAdmin",
-					// 	sts:0,
-					// 	num:0
-					// },
-					{
-						label: "预算模板管理",
-						path: "/budgetList",
-						name: "budgetList",
-						sts:0,
-						num:0
-					},
-                    {
-                        label: "下发管理",
-                        path: "/issueList",
-                        name: "issueList",
-                        sts:0,
-                        num:0
-                    },
-				],
-			};
-		},
-		computed: {
-			menuList: function() {
-				let arr = [];
-				this.routerList.map((item) => {
-					// arr.push(item);
-					this.showList.map((row) => {
-						if (item.path == row.jspUrl && row.systemflag == '1') {
-							arr.push(item);
-						}
-					});
-				});
-				return arr;
-			},
-		},
-		methods: {
-			handleClick(val) {
-				this.activeName = val.path;
-				for (let i = 0; i < this.routerList.length; i++) {
-					this.routerList[i].sts = 0;
-				}
-				val.sts = 1;
-				if (this.$route.path != this.activeName) {
-					this.$router.push(this.activeName);
-				}
-				this.getnunm();
-			},
-			getnunm(){
-				this.$http({
-					url: "/market/preTask/queryTaskToDoNumByFunc",
-					method: "post",
-					headers: {
-						"Content-Type": "application/json",
-					},
-					data: {},
-				}).then((res) => {
-					for (let i = 0; i < res.data.length; i++) {
-						if(res.data[i].funcCode == '1000'){
-							this.routerList[2].num = res.data[i].taskNum;
-						}
-						if(res.data[i].funcCode == '1001'){
-							this.routerList[0].num = res.data[i].taskNum;
-						}
-						if(res.data[i].funcCode == '1003'){
-							this.routerList[3].num = res.data[i].taskNum;
-						}
-						if(res.data[i].funcCode == '1004'){
-							this.routerList[1].num = res.data[i].taskNum;
-						}
-					}
-				});
-			}
-		},
-		mounted() {
-			this.activeName = this.$route.path;
-		},
-		created() {
-			JSON.parse(sessionStorage.childrenMenus).map((item) => {
-				this.showList.push(item);
-			});
-			this.getnunm();
-		},
-		watch: {
-			$route(to, from) {
-				this.activeName = this.$route.path;
-			},
-		},
-	};
+export default {
+  data() {
+    return {
+      activeName: "",
+      showList: [],
+      routerList: [
+        {
+          label: "月度部门预算",
+          path: "/monthExcel",
+          name: "monthExcel",
+          sts: 1,
+          num: 0,
+        },
+        {
+          label: "季度部门预算",
+          path: "/quarterExcel",
+          name: "quarterExcel",
+          sts: 0,
+          num: 0,
+        },
+        {
+          label: "年度部门预算",
+          path: "/yearExcel",
+          name: "yearExcel",
+          sts: 0,
+          num: 0,
+        },
+        {
+          label: "采购部门预算",
+          path: "/projectExcel",
+          name: "projectExcel",
+          sts: 0,
+          num: 0,
+        },
+        // {
+        // 	label: "预算回复",
+        // 	path: "/recallAdmin",
+        // 	name: "recallAdmin",
+        // 	sts:0,
+        // 	num:0
+        // },
+        {
+          label: "预算模板管理",
+          path: "/budgetList",
+          name: "budgetList",
+          sts: 0,
+          num: 0,
+        },
+        {
+          label: "下发管理",
+          path: "/issueList",
+          name: "issueList",
+          sts: 0,
+          num: 0,
+        },
+      ],
+    };
+  },
+  computed: {
+    menuList: function () {
+      let arr = [];
+      this.routerList.map((item) => {
+        // arr.push(item);
+        this.showList.map((row) => {
+          if (item.path == row.jspUrl && row.systemflag == "1") {
+            arr.push(item);
+          }
+        });
+      });
+      return arr;
+    },
+  },
+  methods: {
+    handleClick(val) {
+      this.activeName = val.path;
+      for (let i = 0; i < this.routerList.length; i++) {
+        this.routerList[i].sts = 0;
+      }
+      val.sts = 1;
+      if (this.$route.path != this.activeName) {
+        this.$router.push(this.activeName);
+      }
+      this.getnunm();
+    },
+    getnunm() {
+      this.$http({
+        url: "/market/preTask/queryTaskToDoNumByFunc",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {},
+      }).then((res) => {
+        for (let i = 0; i < res.data.length; i++) {
+          if (res.data[i].funcCode == "1000") {
+            this.routerList[2].num = res.data[i].taskNum;
+          }
+          if (res.data[i].funcCode == "1001") {
+            this.routerList[0].num = res.data[i].taskNum;
+          }
+          if (res.data[i].funcCode == "1003") {
+            this.routerList[3].num = res.data[i].taskNum;
+          }
+          if (res.data[i].funcCode == "1004") {
+            this.routerList[1].num = res.data[i].taskNum;
+          }
+        }
+      });
+    },
+  },
+  mounted() {
+    this.activeName = this.$route.path;
+  },
+  created() {
+    JSON.parse(sessionStorage.childrenMenus).map((item) => {
+      this.showList.push(item);
+    });
+    this.getnunm();
+  },
+  watch: {
+    $route(to, from) {
+      this.activeName = this.$route.path;
+    },
+  },
+};
 </script>
-<style>
-	.el-tabs__content {
-		display: none;
-	}
-	.spanbox{
-		display: block;
-		text-align: center;
-		padding: 10px 0;
-		border-right: 3px solid #f1f1f1;
-		margin-right: 20px;
-	}
-	.bg{
-		border-right: 3px solid #0080FF;
-		color: #007AFF;
-	}
+<style lang="scss" scoped>
+.el-tabs__content {
+  display: none;
+}
+
+.box {
+  display: inline-block;
+  padding-left: 10px;
+  width: 100%;
+  border-bottom: 1px solid #e1e1e1;
+  .spanbox {
+    display: inline-block;
+    text-align: center;
+    width: 166px;
+    height: 36px;
+    margin: 10px;
+    line-height: 36px;
+    background: #d8eaf6;
+    color: #000;
+  }
+  .bg {
+    color: white;
+    background: #0583cd;
+  }
+}
 </style>

+ 4 - 1
src/pages/main/competitor/competeInfo.vue

@@ -1,5 +1,5 @@
 <template>
-    <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0;">
+    <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0px;">
         <div class="container-box">
             <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
             <div class="search">
@@ -280,4 +280,7 @@
             width: calc(100% - 100px);
         }
     }
+    .container{
+        width: 100%;
+    }
 </style>

+ 42 - 8
src/pages/main/competitor/home.vue

@@ -1,8 +1,7 @@
 <template>
   <div class="inner-container">
-    <el-col :span="3"
-      ><el-tabs
-        tab-position="left"
+    <div class="box">
+      <el-tabs
         v-model="activeName"
         @tab-click="handleClick"
       >
@@ -13,12 +12,12 @@
           :label="item.label"
         ></el-tab-pane>
       </el-tabs>
-    </el-col>
-    <el-col :span="21" style="background: #f4f4f4;">
-      <div style="height: 100%">
+    </div>
+    <el-row style="background: #f4f4f4;">
+      <div>
         <router-view />
       </div>
-    </el-col>
+      </el-row>
   </div>
 </template>
 <script>
@@ -70,8 +69,43 @@ export default {
   },
 };
 </script>
-<style>
+<style lang="scss" scoped>
+
 .el-tabs__content {
   display: none;
 }
+.box {
+  border-bottom: 1px solid #e1e1e1;
+  height: 55px;
+  margin-top:10px ;
+}
+::v-deep .el-tabs__item {
+  width: 166px;
+  text-align: center;
+  padding: 0;
+  border-left: 10px solid #ffffff;
+  border-right: 10px solid #ffffff;
+}
+::v-deep .el-tabs__header {
+  margin: 0px;
+  background: #d8eaf6;
+  color: black;
+  margin-left: 20px;
+  display: inline-block;
+}
+::v-deep .is-active {
+  background: #0583cd;
+  color: white;
+}
+
+::v-deep .el-tabs__item:hover {
+  color: black;
+}
+::v-deep .is-active:hover {
+  background: #0583cd;
+  color: white;
+}
+::v-deep .el-tabs__active-bar{
+		width: 0px !important;
+	}
 </style>

+ 14 - 11
src/pages/main/fileList/fileListIndex.vue

@@ -96,15 +96,18 @@
 	.el-tabs__content {
 		display: none;
 	}
-	.spanbox{
-		display: block;
-		text-align: center;
-		padding: 10px 0;
-		border-right: 3px solid #f1f1f1;
-		margin-right: 20px;
-	}
-	.bg{
-		border-right: 3px solid #0080FF;
-		color: #007AFF;
-	}
+	.spanbox {
+    display: inline-block;
+    text-align: center;
+    width: 166px;
+    height: 36px;
+    margin: 10px;
+    line-height: 36px;
+    background: #d8eaf6;
+    color: #000;
+  }
+  .bg {
+    color: white;
+    background: #0583cd;
+  }
 </style>

+ 38 - 25
src/pages/main/fullcalendar/calendar.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <basic-block title="">
+    <!-- <basic-block title=""> -->
       <!--
             <div class="tag-tip">
               <el-tag size="small" color="#f08f00">审核中</el-tag>
@@ -20,13 +20,14 @@
                   </div>
                 </el-col>
                 -->
-        <el-col :span="19">
+        <el-col :span="24">
           <div class="calendar-box">
             <!-- 日历菜单栏 -->
             <full-calendar
               ref="fullCalendar"
               style="height: 100%"
               :options="calendarOptions"
+              id="calendar"
               alt=""
             >
             </full-calendar>
@@ -228,7 +229,7 @@
         </el-form>
       </el-dialog>
       <!--日程新增弹窗end-->
-    </basic-block>
+    <!-- </basic-block> -->
   </div>
 </template>
 
@@ -331,9 +332,9 @@ export default {
         height: 700,
         plugins: [dayGridPlugin, interactionPlugin],
         headerToolbar: {
-          left: "prev,next today",
-          center: "title",
-          right: "dayGridMonth,dayGridWeek,dayGrid",
+          left: "title",
+          center: "",
+          right: "today prev dayGridMonth,dayGridWeek,dayGrid next",
           // right: 'agendaWeek,dayGridWeek,dayGrid'
         },
         buttonText: {
@@ -352,6 +353,7 @@ export default {
         dateClick: this.handleDateClick, //点击日历
         eventClick: this.handleEventClick, //日历日程点击
         eventsSet: this.handleEvents,
+
         select: this.handleDateSelect,
         eventMouseEnter: this.eventmouseover, //鼠标滑过
         eventMouseLeave: this.eventmouseout, //鼠标离开
@@ -473,7 +475,7 @@ export default {
         },
         data: { isFile: "0" },
       }).then((res) => {
-        console.log("res", res);
+        // console.log("res", res);
         if (res.data && res.data.length > 0) {
           this.array = res.data;
           // this.getReservationList(this.array.scheduleList0);
@@ -491,7 +493,7 @@ export default {
         },
         data: { isFile: "0" },
       }).then((res) => {
-        console.log(res);
+        // console.log(res);
         // console.log('res====', typeof res.data)
         // console.log(res.data)
         this.auth = res.data;
@@ -499,7 +501,7 @@ export default {
       });
     },
     getReservationList(arrayData) {
-      console.log(arrayData);
+      // console.log(arrayData);
       let newArr = [];
       this.subList = arrayData;
       // let year = new Date(new Date()).getFullYear();
@@ -587,7 +589,7 @@ export default {
       //   });
       // });
       arrayData.forEach((item) => {
-        console.log("item", item);
+        // console.log("item", item);
         newArr.push({
           newBeginTime: item.begindate.split(" ")[1].substr(0, 5),
           newEndTime: item.enddate.split(" ")[1].substr(0, 5),
@@ -603,7 +605,7 @@ export default {
         });
       });
       this.calendarOptions.events = newArr;
-      console.log(this.calendarOptions.events);
+      // console.log(this.calendarOptions.events);
 
       // debugger
     },
@@ -646,7 +648,7 @@ export default {
       this.form.startTime = this.getHoursMin(beginDate);
       this.form.enddate = this.dealWithTime(endDate);
       this.form.endTime = this.getHoursMin(endDate);
-      console.log(this.form);
+      // console.log(this.form);
       // this.$forceUpdate()
       this.form = { ...this.form };
     },
@@ -700,7 +702,7 @@ export default {
     },
     //鼠标滑过事件
     eventmouseover(calEvent, event) {
-      console.log(123);
+      // console.log(123);
       this.xuanchuang(calEvent, event);
     },
     eventmouseout() {
@@ -728,9 +730,9 @@ export default {
     },
     //悬停窗体删除按钮
     delxuan() {
-        if (!this.auth) {
-            return;
-        }
+      if (!this.auth) {
+        return;
+      }
       this.delStatus = true;
     },
     // 点击日历
@@ -796,10 +798,10 @@ export default {
     //     }
     // },
     handleEvents(events) {
-      console.log(events, "事件3");
+      // console.log(events, "事件3");
     },
     handleDateSelect(selectInfo) {
-      console.log(selectInfo, "限制");
+      // console.log(selectInfo, "限制");
     },
     // 切换上一个按钮
     prev() {
@@ -825,7 +827,7 @@ export default {
           id: this.idx,
         },
       }).then((res) => {
-        console.log(res);
+        // console.log(res);
         location.reload();
       });
     },
@@ -835,7 +837,7 @@ export default {
         if (valid) {
           this.form.begindate = `${this.form.begindate} ${this.form.startTime}`;
           this.form.enddate = `${this.form.enddate} ${this.form.endTime}`;
-          console.log(this.form, "数据");
+          // console.log(this.form, "数据");
           this.dialogVisible = false;
           if (this.form.id === "") {
             this.form === "";
@@ -857,7 +859,7 @@ export default {
               },
               data: this.form,
             }).then((res) => {
-              console.log(res);
+              // console.log(res);
               this.loadinged = false;
               if (res.data.result === 1) {
                 this.$message({
@@ -874,7 +876,7 @@ export default {
             });
           }
         } else {
-          console.log("error submit!!");
+          // console.log("error submit!!");
           return false;
         }
       });
@@ -889,7 +891,7 @@ export default {
       this.$refs["form"].resetFields();
     },
     onStartTime(val) {
-      console.log("val", val);
+      // console.log("val", val);
       this.form.startTime = val;
     },
     //开始时间 option显示/隐藏
@@ -908,7 +910,7 @@ export default {
           return result;
         });
         // 第二次过滤,过滤掉后端返回的数据
-        console.log(this.newfrom);
+        // console.log(this.newfrom);
         this.newfrom.map((_item) => {
           this.timeOptions = this.timeOptions.map((_timeOptionItem) => {
             // debugger
@@ -1030,9 +1032,20 @@ export default {
   border: none !important;
   background-color: #fff !important;
 }
-::v-deep .el-select__tags{
+::v-deep .el-select__tags {
   flex-flow: inherit;
   overflow: hidden;
   flex-wrap: inherit;
 }
+.calendar-box {
+  margin: 10px;
+}
+::v-deep .fc-col-header-cell-cushion {
+  font-size: 18px;
+  line-height: 50px;
+}
+::v-deep .fc .fc-daygrid-day-top {
+  justify-content: center;
+  margin-top: 5px;
+}
 </style>

+ 4 - 4
src/pages/main/index.vue

@@ -1,13 +1,13 @@
 <template>
   <div class="page">
+    <el-header>
+      <p-header :username="getUserName" @collapse="collapsed"></p-header>
+    </el-header>
     <el-container style="height: 100%">
       <el-aside>
         <p-menu :data="getMenus"></p-menu>
       </el-aside>
-      <el-container style="background-color: #f2f2f2">
-        <el-header>
-          <p-header :username="getUserName" @collapse="collapsed"></p-header>
-        </el-header>
+      <el-container style="background-color: #E8E8E8">
         <el-main style="height: 100%">
           <div class="tab">
             <p-tabs :list="getTabList"></p-tabs>

+ 212 - 0
src/pages/main/leader/leaderHome.vue

@@ -0,0 +1,212 @@
+<template>
+  <div class="mc-wrap">
+    <div class="container-box">
+      <div class="mc-top">
+        <div class="mc-top-left">
+          <el-row>
+            <el-col :span="24">
+              <div class="car-line">
+                <el-carousel height="40px" direction="vertical" trigger="click">
+                  <el-carousel-item
+                    v-for="item in noticeData"
+                    :key="item.noticeId"
+                  >
+                    <div class="car-box">
+                      <i class="el-icon-message-solid"></i>
+                      <span>公告</span>
+                      <span style="color: #0b82ff" @click="uploadsee(item)">{{
+                        item.noticeTitle
+                      }}</span>
+                      <span @click="jNotice">更多</span>
+                    </div>
+                  </el-carousel-item>
+                </el-carousel>
+              </div>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <leaderTag></leaderTag>
+            </el-col>
+          </el-row>
+          <el-row>
+            <div v-if="status">
+              <el-col :span="18">
+                <hometask></hometask>
+              </el-col>
+              <el-col :span="6">
+                <numberhits></numberhits>
+              </el-col>
+            </div>
+            <div v-else>
+              <el-col :span="24">
+                <hometask></hometask>
+              </el-col>
+            </div>
+          </el-row>
+          <el-row style="margin-top: 10px;">
+            <ProcessingInstruction></ProcessingInstruction>
+          </el-row>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import ProcessingInstruction from "./leaderHprocess.vue";
+import hometask from "./leaderhomeTask.vue";
+import numberhits from "./numberHits.vue";
+import leaderTag from "./leaderTag.vue";
+
+export default {
+  components: {
+    ProcessingInstruction,
+    hometask,
+    numberhits,
+    leaderTag,
+  },
+  data() {
+    return {
+      noticeData: [], // 公告数据源
+      status: true,
+    };
+  },
+  methods: {
+    //获取公告
+    getNotice() {
+      this.$http({
+        url: "/sysmgr/notice/queryPage",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+          page: '{"pageNo":"' + 1 + '","pageSize":"10"}',
+        },
+        data: {
+          sts: 2,
+        },
+      }).then((res) => {
+        this.noticeData = res.data.data;
+      });
+    },
+    //预览公告
+    uploadsee(v) {
+      this.dialogStatus = true;
+      this.infolist = v;
+      this.$http({
+        url: "/sysmgr/cnotice/queryInfo",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          noticeId: v.noticeId,
+        },
+      }).then((res) => {
+        this.uploadstatus = !this.uploadstatus;
+        this.datalist.attList = [];
+        this.datalist.attList = res.data.attList;
+        // if(res.data.attList){
+        //     res.data.attList.forEach(item => {
+        //         this.attList.push({
+        //             name: item.fileName,
+        //             url: '',
+        //             id: item.id,
+        //             fileName: item.fileName
+        //         });
+        //     })
+        //     this.datalist.attList = this.attList;
+        //     console.log(this.datalist.attList)
+        // }
+      });
+    },
+    jNotice() {
+      this.$router.push("/noticec");
+      // this.setabList("公告管理","/noticec");
+    },
+  },
+  mounted() {
+    this.getNotice();
+    this.$http({
+      url: "/sysmgr/csysdept/queryGroupListByLoginNo",
+      method: "post",
+      headers: {
+        "Content-Type": "application/json",
+      },
+      data: {},
+    }).then((res) => {
+      if (res.data[0].parentorgid === "00440063000000000000") {
+        this.status = false;
+      }
+    });
+  },
+  created() {},
+  computed: {},
+};
+</script>
+
+<style lang="scss" scoped>
+.mc-wrap {
+  box-sizing: border-box !important;
+  margin: 0;
+  height: calc(100vh - 120px);
+  overflow: hidden;
+  width: 100%;
+  padding-right: 10px;
+
+  .container-box {
+    width: 100%;
+    height: calc(100% - 40px);
+    margin-top: 10px;
+    overflow-y: scroll;
+    padding: 0 0 0 15px;
+  }
+}
+
+.mc-top {
+  display: flex;
+  width: 100%;
+}
+
+.mc-wrap .mc-top-left {
+  width: 100%;
+  margin-right: 15px;
+}
+
+.mc-wrap .mc-top-right {
+  width: calc(20% - 15px);
+  background-color: white;
+  overflow: hidden;
+
+  .inner-box {
+    width: calc(100% + 20px);
+    background-color: white;
+    overflow-y: scroll;
+  }
+}
+.car-line {
+  height: 40px;
+  background: #fff;
+  border-radius: 5px;
+  // margin: 10px 0 0 0;
+
+  .car-box {
+    padding: 0 20px;
+    line-height: 40px;
+    color: #333;
+
+    span {
+      cursor: pointer;
+      margin-right: 20px;
+    }
+
+    span:first-child {
+      cursor: auto;
+    }
+
+    span:last-child {
+      float: right;
+      margin-right: 0;
+    }
+  }
+}
+</style>

+ 343 - 0
src/pages/main/leader/leaderHprocess.vue

@@ -0,0 +1,343 @@
+<template>
+  <div class="pmain">
+    <div class="layui-col-md6" v-for="(ite, index) in funcData" :key="index">
+      <div class="mc-nomal-title">
+        <h3>{{ ite.lineName }}</h3>
+      </div>
+      <div class="bg-style">
+        <div class="mc-function-box">
+          <div
+            v-for="item in ite.unitList"
+            :key="item.unitName"
+            class="function-box"
+          >
+            <div
+              v-for="items in item.modList"
+              :key="items.moduleName"
+              class="f-box-info"
+            >
+              <el-badge
+                :value="items.noTaskNum"
+                :max="99"
+                :hidden="items.noTaskNum == 0"
+              >
+                <i
+                  @click="jumpTo(items)"
+                  v-if="items.sts == '0' && items.icon"
+                  v-html="items.icon"
+                >
+                  {{ items.icon }}
+                </i>
+                <i
+                  @click="jumpTo(items)"
+                  :class="'el-icon-user'"
+                  v-if="items.sts == '0' && !items.icon"
+                  style="background: #0b82ff"
+                ></i>
+                <i
+                  :class="'iconfont icon-tongji'"
+                  v-if="items.sts != '0'"
+                  style="background: #ddd"
+                ></i>
+                <el-tooltip
+                  class="item"
+                  effect="dark"
+                  :content="items.moduleName"
+                  placement="bottom"
+                >
+                </el-tooltip>
+                <span style="float: right" @click="jumpTo(items)">
+                  {{ items.moduleName }}
+                  <span class="f-box-tit">
+                    {{ item.unitName }}
+                  </span>
+                </span>
+              </el-badge>
+            </div>
+            <div class="f-box-info" v-if="item.modList.length == 0"></div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      funcData: [],
+      boxHeight: {
+        height: "auto",
+      },
+      outsideModules: [],
+      groupName: "",
+    };
+  },
+  methods: {
+    getList() {
+      let loginNo = JSON.parse(window.sessionStorage.userInfo).loginNo;
+      this.$http({
+        url: "/market/cmkline/queryInfo",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {},
+      }).then((res) => {
+        this.funcData = res.data.lineList;
+        this.outsideModules = res.data.outsideModules;
+        this.groupName = res.data.groupName;
+      });
+    },
+    hAuto() {
+      let boxLinel = this.$refs.boxLinel.offsetHeight;
+      let boxLiner = this.$refs.boxLiner.offsetHeight;
+      if (boxLinel > boxLiner) {
+        this.boxHeight.height = boxLinel + "px";
+      } else {
+        this.boxHeight.height = boxLiner + "px";
+      }
+    },
+    jumpTo(v) {
+      if (v.moduleUrl) {
+        if (this.groupName == "default") {
+          //加入外部人员权限控制start
+          if (this.outsideModules.length > 0) {
+            let moduleIndex = -1;
+            for (let i = 0; i < this.outsideModules.length; i++) {
+              if (this.outsideModules[i].moduleUrl == v.moduleUrl) {
+                moduleIndex = i;
+                break;
+              }
+            }
+            if (moduleIndex < 0) {
+              global.$vm.$notify.error({
+                title: "提示",
+                message: "暂无使用权限",
+              });
+              return;
+            }
+          }
+          //加入外部人员权限控制end
+        } else {
+          let childrenMenus = JSON.parse(window.sessionStorage.childrenMenus);
+          if (childrenMenus != undefined && childrenMenus.length > 0) {
+            let moduleIndex = -1;
+            for (let a = 0; a < childrenMenus.length; a++) {
+              if (childrenMenus[a].jspUrl == v.moduleUrl) {
+                moduleIndex = a;
+                break;
+              }
+            }
+            if (moduleIndex < 0) {
+              global.$vm.$notify.error({
+                title: "提示",
+                message: "暂无使用权限",
+              });
+              return;
+            }
+          }
+        }
+
+        this.$router.push({
+          path: v.moduleUrl,
+        });
+        this.setabList(v.moduleName, v.moduleUrl);
+      }
+    },
+    setabList(n, p) {
+      let params = {
+        children: "",
+        name: n,
+        rountPath: p,
+        target: "_self",
+      };
+      // console.log(this.$store.state.tabList)
+      // for (let i = 0; i < this.$store.state.tabList.length; i++) {
+      //     if (this.$store.state.tabList[i].name === params.name) {
+      //         this.$store.state.tabList[i] = params;
+      //     }
+      // }
+      // let set = new Set([...this.$store.state.tabList, params]);
+      // set.add(params);
+      // this.$store.commit("setDefaultActive", params.rountPath);
+      // this.$store.commit("setTabList", Array.from(set));
+    },
+  },
+  mounted() {},
+  created() {
+    this.getList();
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.mc-red {
+  color: #ff6060;
+}
+
+.pmain {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  
+
+  .layui-col-md6 {
+    display: inline-block;
+    margin-bottom: 10px;
+    width: 100%;
+    background: #FaFaFa;
+    border-radius:5px;
+  }
+}
+
+.mc-nomal-title {
+  padding-left: 38px;
+  background: url(../../../../src/assets/dbyb-bt-bj3.jpg) no-repeat 10px center;
+  // font-size: 20px;
+  line-height: 20px;
+  width: 150px;
+  // font-weight: 500;
+  color: rgb(255, 255, 255);
+  padding-bottom: 10px;
+  padding-top: 10px;
+}
+
+.mc-nomal-checked {
+  color: #999;
+  font-size: 12px;
+}
+
+.mc-title-box {
+  display: flex;
+  justify-content: space-between;
+}
+
+.mc-nomal-show-num {
+  display: flex;
+  justify-content: space-between;
+  text-align: center;
+  margin-top: 10px;
+
+  .num-box {
+    margin-right: 40px;
+  }
+}
+
+.mc-right-title {
+  margin-top: 10px;
+  text-align: right;
+  padding-right: 20px;
+}
+
+.mc-nomal-num {
+  font-size: 20px;
+}
+
+.bg-style {
+  height: 60px;
+  overflow-y: auto;
+  margin: 5px;
+  .custom-tree-node {
+    width: 100%;
+  }
+
+  .tree-box {
+    overflow: hidden;
+    height: 26px;
+    width: 100%;
+
+    img {
+      width: 26px;
+      height: 26px;
+      float: left;
+    }
+
+    div {
+      display: inline-block;
+      height: 26px;
+      line-height: 26px;
+
+      span {
+        padding-left: 10px;
+      }
+    }
+  }
+}
+
+.mc-function-box {
+  margin-left: 5px;
+  margin-right: 5px;
+  .function-box {
+    display: inline;
+
+    .f-box-tit {
+      font-size: 14px;
+      color: #4AAFF5;
+    }
+
+    .f-box-info {
+      display: inline-block;
+      height: 60px;
+      width: 20%;
+      text-align: center;
+
+      i {
+        width: 40px;
+        height: 40px;
+        border-radius: 18px;
+        display: block;
+        color: #fff;
+        text-align: center;
+        line-height: 40px;
+        cursor: pointer;
+        float: left;
+      }
+
+      span {
+        font-size: 13px;
+        display: block;
+        text-align: left;
+        width: 200px;
+        height: 20px;
+        line-height: 20px;
+        cursor: pointer;
+      }
+      span:nth-child(even):hover{
+        color: blue;
+      }
+
+      .mybadge {
+        top: 0;
+        right: 40px;
+      }
+
+      .icon {
+        width: 100% !important;
+        height: 100% !important;
+      }
+    }
+  }
+  .function-box:nth-child(2) {
+    .f-box-tit{
+      color: #9DC914;
+    }
+  }
+  .function-box:nth-child(3) {
+    .f-box-tit{
+      color: #FFA042;
+    }
+  }
+  .function-box:nth-child(4) {
+    .f-box-tit{
+      color: palevioletred;
+    }
+  }
+}
+
+::v-deep .el-badge__content {
+  margin-top: 8px;
+  margin-right: 35px;
+}
+</style>

File diff suppressed because it is too large
+ 393 - 0
src/pages/main/leader/leaderTag.vue


File diff suppressed because it is too large
+ 1793 - 0
src/pages/main/leader/leaderhomeTask.vue


+ 116 - 0
src/pages/main/leader/numberHits.vue

@@ -0,0 +1,116 @@
+<template>
+  <div class="numbox">
+    <div class="bgnum">
+      <div class="bgnum1"><span>点击率排行</span></div>
+      <span
+        style="float: right; cursor: pointer; color: orange; margin-right: 10px"
+        >更多>></span
+      >
+    </div>
+    <div>
+      <el-table
+        class="numbox1"
+        :data="numHits"
+        height="250"
+        size="small"
+        :header-cell-style="{ background: '#F2F2F2' }"
+        :cell-style="{ background: '#FaFaFa' }"
+      >
+        <el-table-column prop="woTitle" label="标题">
+          <template slot-scope="scope">
+            <span style="color: #afb2d8; margin-right: 5px"
+              >{{ scope.$index + 1 }}.</span
+            >
+            <span @click="RowTitle" style="cursor: pointer; color: blue">{{
+              scope.row.woTitle
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="woNum" label="点击量" width="100">
+          <template> </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      numHits: [
+        { woTitle: "sdf", woNum: "1111" },
+        { woTitle: "ewsad", woNum: "1010" },
+        { woTitle: "easdw", woNum: "1001" },
+        { woTitle: "ewasdsad", woNum: "1000" },
+        { woTitle: "ewasd", woNum: "1000" },
+        { woTitle: "ewasd", woNum: "1000" },
+        { woTitle: "asdew", woNum: "1000" },
+        { woTitle: "ew213", woNum: "1000" },
+        { woTitle: "ew23", woNum: "1000" },
+        { woTitle: "ew23", woNum: "1000" },
+        { woTitle: "e23w", woNum: "1000" },
+        { woTitle: "ew123", woNum: "1000" },
+      ],
+    };
+  },
+  methods: {
+    RowTitle() {
+      console.log(11);
+    },
+    getList(){
+      // this.$http({
+      //   url: "/market/cmkline/queryInfo",
+      //   method: "post",
+      //   headers: {
+      //     "Content-Type": "application/json",
+      //   },
+      //   data: {},
+      // }).then((res) => {
+      //   this.funcData = res.data.lineList;
+      //   this.outsideModules = res.data.outsideModules;
+      //   this.groupName = res.data.groupName;
+      // });
+    }
+  },
+  mounted(){
+    this.getList()
+  }
+};
+</script>
+<style lang="scss" scoped>
+.numbox {
+  width: 97%;
+  background: #fafafa;
+  margin: 10px;
+  height: 317px;
+  border-radius: 5px;
+  .bgnum {
+    background-image: linear-gradient(#fafafa, #f5f1d9);
+    height: 47px;
+    font-size: 16px;
+    border-top-left-radius: 5px;
+    border-top-right-radius: 5px;
+    .bgnum1 {
+      background: url(../../../../src/assets/djlph-bt-bj.jpg) no-repeat 5px
+        center;
+      display: inline-block;
+      color: rgb(233, 59, 59);
+      font-weight: 900;
+    }
+    span {
+      line-height: 47px;
+      margin-left: 50px;
+    }
+  }
+  .numbox1 {
+    margin-top: 10px;
+    margin-left: 10px;
+    font-size: 16px;
+    width: 94%;
+  }
+}
+::v-deep .gutter {
+  background: #fafafa;
+}
+</style>

+ 46 - 8
src/pages/main/performance/index.vue

@@ -1,19 +1,22 @@
 <template>
-  <div v-if="routes.length" class="performance-container flex-justify-start">
-    <div>
-      <el-tabs tab-position="left" v-model="name">
-        <el-tab-pane
+  <!-- <div v-if="routes.length" class="performance-container flex-justify-start"> -->
+  <div v-if="routes.length" class="performance-container">
+    <div class="box">
+      <el-tabs v-model="name" type="card">
+          <el-tab-pane
           v-for="({ label, name }, index) in routes"
           :key="index"
           :name="name"
           :label="label"
-        ></el-tab-pane>
+        >
+        </el-tab-pane>
       </el-tabs>
     </div>
-    <div class="container-viewport width-90 flex-1">
-      <div class="font-size-30 padding-bottom-20 padding-left-20">
+    <!-- <div class="container-viewport width-90 flex-1"> -->
+    <div class="container-viewport">
+      <!-- <div class="font-size-30 padding-bottom-20 padding-left-20">
         {{ handleLabel(name) }}
-      </div>
+      </div> -->
       <div
         v-if="!loading"
         class="performance-container-viewport-component"
@@ -208,4 +211,39 @@ export default {
     overflow: auto;
   }
 }
+.box{
+  border-bottom: 1px solid #e1e1e1;
+  height: 60px;
+}
+::v-deep .el-tabs__item {
+  width: 166px;
+  text-align: center;
+  border-left: 10px solid #ffffff;
+  border-right: 10px solid #ffffff;
+  
+}
+::v-deep .el-tabs__header {
+  margin: 0px;
+  background: #d8eaf6;
+  color: black;
+  margin-left: 20px;
+  display: inline-block;
+  border:0px
+}
+::v-deep .is-active {
+  background: #0583cd;
+  color: white;
+}
+
+::v-deep .el-tabs__item:hover {
+  color: black;
+}
+::v-deep .is-active:hover {
+  background: #0583cd;
+  color: white;
+}
+::v-deep .el-tabs--card>.el-tabs__header .el-tabs__nav {
+  border:0px
+}
+
 </style>

+ 122 - 84
src/pages/main/terminal/terminalhome.vue

@@ -1,95 +1,133 @@
 <template>
-    <div class="inner-container">
-        <div class="tabBox">
-            <el-tabs tab-position="left" v-model="activeName" @tab-click="handleClick">
-                <el-tab-pane v-for="(item, index) in routerList" :key="index" :name="item.path" :label="item.label">
-                </el-tab-pane>
-            </el-tabs>
-        </div>
-        <div class="infoBox">
-            <router-view />
-        </div>
+  <div class="inner-container">
+    <div class="tabBox">
+      <el-tabs v-model="activeName" @tab-click="handleClick">
+        <el-tab-pane
+          v-for="(item, index) in routerList"
+          :key="index"
+          :name="item.path"
+          :label="item.label"
+        >
+        </el-tab-pane>
+      </el-tabs>
     </div>
+    <div class="infoBox">
+      <router-view />
+    </div>
+  </div>
 </template>
 <script>
-    export default {
-        data() {
-            return {
-                activeName: "",
-                showList: [],
-                routerList: [
-                    {
-                        label: "测试终端管理",
-                        path: "/terminal",
-                        name: "terminal"
-                    },
-                    {
-                        label: "测试终端申请",
-                        path: "/terminalApply",
-                        name: "terminalApply"
-                    },
-                    {
-                        label: "终端型号管理",
-                        path: "/terminalModel",
-                        name: "terminalModel"
-                    },
-                    {
-                        label: "终端台账管理",
-                        path: "/terminalStandbook",
-                        name: "terminalStandbook"
-                    },
-                ],
-            };
-        },
-        computed: {
-            menuList: function() {
-                let arr = [];
-                this.routerList.map((item) => {
-                    this.showList.map((row) => {
-                        if (item.path == row) {
-                            arr.push(item);
-                        }
-                    });
-                });
-                return arr;
-            },
-        },
-        methods: {
-            handleClick(val) {
-                if (this.$route.path != this.activeName) {
-                    this.$router.push(this.activeName);
-                }
-            },
+export default {
+  data() {
+    return {
+      activeName: "",
+      showList: [],
+      routerList: [
+        {
+          label: "测试终端管理",
+          path: "/terminal",
+          name: "terminal",
         },
-        mounted() {
-            this.activeName = this.$route.path;
+        {
+          label: "测试终端申请",
+          path: "/terminalApply",
+          name: "terminalApply",
         },
-        created() {
-            JSON.parse(sessionStorage.childrenMenus).map((item) => {
-                this.showList.push(item.jspUrl);
-            });
+        {
+          label: "终端型号管理",
+          path: "/terminalModel",
+          name: "terminalModel",
         },
-        watch: {
-            $route(to, from) {
-                this.activeName = this.$route.path;
-            },
+        {
+          label: "终端台账管理",
+          path: "/terminalStandbook",
+          name: "terminalStandbook",
         },
+      ],
     };
+  },
+  computed: {
+    menuList: function () {
+      let arr = [];
+      this.routerList.map((item) => {
+        this.showList.map((row) => {
+          if (item.path == row) {
+            arr.push(item);
+          }
+        });
+      });
+      return arr;
+    },
+  },
+  methods: {
+    handleClick(val) {
+      if (this.$route.path != this.activeName) {
+        this.$router.push(this.activeName);
+      }
+    },
+  },
+  mounted() {
+    this.activeName = this.$route.path;
+  },
+  created() {
+    JSON.parse(sessionStorage.childrenMenus).map((item) => {
+      this.showList.push(item.jspUrl);
+    });
+  },
+  watch: {
+    $route(to, from) {
+      this.activeName = this.$route.path;
+    },
+  },
+};
 </script>
-<style>
-    .el-tabs__content {
-        display: none;
-    }
-    .inner-container{
-        display: flex;
-        justify-content: space-between;
-    }
-    .tabBox{
-        width: 135px;
-    }
-    .infoBox{
-        background: #f4f4f4!important;
-        height: 100%;
-        width: calc(100% - 135px)
-    }
+<style lang="scss" scoped>
+
+.el-tabs__content {
+  display: none;
+}
+.inner-container {
+//   display: flex;
+//   justify-content: space-between;
+}
+.tabBox {
+  border-bottom: 1px solid #e1e1e1;
+  height: 55px;
+  margin-top: 10px;
+}
+.infoBox {
+  background: #f4f4f4 !important;
+  height: 100%;
+//   width: calc(100% - 135px);
+    margin-left: 20px;
+}
+::v-deep .el-tabs__item {
+  width: 166px;
+  text-align: center;
+  border-left: 10px solid #ffffff;
+  border-right: 10px solid #ffffff;
+  padding: 0;
+}
+::v-deep .el-tabs__header {
+  margin: 0px;
+  background: #d8eaf6;
+  color: black;
+  margin-left: 20px;
+  display: inline-block;
+}
+::v-deep .is-active {
+  background: #0583cd;
+  color: white;
+}
+
+::v-deep .el-tabs__item:hover {
+  color: black;
+}
+::v-deep .is-active:hover {
+  background: #0583cd;
+  color: white;
+}
+::v-deep .el-tabs__active-bar{
+		width: 0px !important;
+	}
 </style>

+ 7 - 0
src/router/index.js

@@ -690,6 +690,13 @@ const routes = [{
                 ['../pages/main/leader/index.vue'], resolve)
         },
         {
+            meta: { name:  '新首页', keepAlive: false },
+            path: '/leaderHome',
+            name: 'leaderHome',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/leader/leaderHome.vue'], resolve)
+        },
+        {
             meta: { name:  '品质部首页', keepAlive: false },
             path: '/marketHome',
             name: 'marketHome',