|
@@ -0,0 +1,452 @@
|
|
|
+<template>
|
|
|
+ <div class="right-view-com">
|
|
|
+ <CardView
|
|
|
+ class="CardViewC1"
|
|
|
+ :title="'试用、正式、临时、实习'"
|
|
|
+ :rightTabs="['总览', '按板块']"
|
|
|
+ @rightClick="rightClick1"
|
|
|
+ >
|
|
|
+ <div class="cardBox">
|
|
|
+ <ul>
|
|
|
+ <li v-for="(item, index) in card1List" :key="index">
|
|
|
+ <div class="topBj">
|
|
|
+ <p>{{ item.value }} 人</p>
|
|
|
+ </div>
|
|
|
+ <p>{{ item.name }}</p>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </CardView>
|
|
|
+ <CardView
|
|
|
+ class="CardViewC2"
|
|
|
+ :title="'工龄、司龄'"
|
|
|
+ :leftTabs="['规划类', '软件类']"
|
|
|
+ @leftClick="leftClick1"
|
|
|
+ :rightTabs="['总览', '按板块']"
|
|
|
+ @rightClick="rightClick2"
|
|
|
+ >
|
|
|
+ <div class="cardBox">
|
|
|
+ <ul>
|
|
|
+ <li v-for="(item, index) in card2List" :key="index">
|
|
|
+ <p class="p1a">{{ item.name }}</p>
|
|
|
+ <div class="perBox">
|
|
|
+ <div class="per">
|
|
|
+ <div class="bfb" :style="{ background: item.color, width: item.per + '%' }">
|
|
|
+ <div :style="{ left: 96 + '%', borderTopColor: item.color }"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <p :style="{ color: item.color }">{{ item.per }}%</p>
|
|
|
+ </div>
|
|
|
+ <p class="p2a">{{ item.value }}人</p>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </CardView>
|
|
|
+
|
|
|
+ <CardView class="CardViewC3" :title="'人员流动'">
|
|
|
+ <div class="cardBox">
|
|
|
+ <div class="ldBox">
|
|
|
+ <div class="ldTop1">
|
|
|
+ <div class="dian"> <div></div></div>
|
|
|
+ <p style="color: #fff; margin-right: 25px">净流入</p>
|
|
|
+ <p>16人</p>
|
|
|
+ </div>
|
|
|
+ <div class="ldTop2">
|
|
|
+ <div class="rz">
|
|
|
+ <div></div>
|
|
|
+ <p>入职</p>
|
|
|
+ </div>
|
|
|
+ <div class="lz">
|
|
|
+ <div></div>
|
|
|
+ <p>离职</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <ul>
|
|
|
+ <li v-for="(item, index) in card3List" :key="index">
|
|
|
+ <p style="margin-right: 10px">{{ item.name }}</p>
|
|
|
+ <div class="perBox1">
|
|
|
+ <div class="per">
|
|
|
+ <div :style="{ width: item.rzPer + '%' }"></div>
|
|
|
+ </div>
|
|
|
+ <p>{{ item.rz }}人</p>
|
|
|
+ </div>
|
|
|
+ <div class="perBox2">
|
|
|
+ <div class="per">
|
|
|
+ <div :style="{ width: item.lzPer + '%' }"></div>
|
|
|
+ </div>
|
|
|
+ <p>{{ item.lz }}人</p>
|
|
|
+ </div>
|
|
|
+ <div class="tenBox" v-if="item.upTen != ''">
|
|
|
+ <img src="@/assets/imgs/oaView/up.png" alt="" />
|
|
|
+ <p>{{ item.upTen }}%</p>
|
|
|
+ </div>
|
|
|
+ <div class="tenBox" v-else>
|
|
|
+ <img src="@/assets/imgs/oaView/down.png" alt="" />
|
|
|
+ <p>{{ item.downTen }}%</p>
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </CardView>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script setup lang="ts">
|
|
|
+import { onMounted, ref } from 'vue'
|
|
|
+import CardView from '../../components/cardView.vue'
|
|
|
+
|
|
|
+const card1List = ref([
|
|
|
+ {
|
|
|
+ name: '试用工',
|
|
|
+ value: 3
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '正式工',
|
|
|
+ value: 276
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '临时工',
|
|
|
+ value: 12
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '实习生',
|
|
|
+ value: 6
|
|
|
+ }
|
|
|
+])
|
|
|
+const card2List = ref([
|
|
|
+ {
|
|
|
+ name: '1年以下',
|
|
|
+ per: '23',
|
|
|
+ color: '#09D9CD',
|
|
|
+ value: '65'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '1-3年',
|
|
|
+ per: '30',
|
|
|
+ color: '#3AAEFF',
|
|
|
+ value: '84'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '3-5年',
|
|
|
+ per: '18',
|
|
|
+ color: '#E4A306',
|
|
|
+ value: '53'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '5-7年',
|
|
|
+ per: '7',
|
|
|
+ color: '#00D488',
|
|
|
+ value: '21'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '7年以上',
|
|
|
+ per: '22',
|
|
|
+ color: '#717BF9',
|
|
|
+ value: '56'
|
|
|
+ }
|
|
|
+])
|
|
|
+const card3List = ref([
|
|
|
+ {
|
|
|
+ name: '规划板块',
|
|
|
+ rz: '36',
|
|
|
+ lz: '28',
|
|
|
+ rzPer: '56',
|
|
|
+ lzPer: '44',
|
|
|
+ upTen: '50',
|
|
|
+ downTen: ''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '信息板块',
|
|
|
+ rz: '3',
|
|
|
+ lz: '21',
|
|
|
+ rzPer: '13',
|
|
|
+ lzPer: '87',
|
|
|
+ upTen: '',
|
|
|
+ downTen: '32'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '招商板块',
|
|
|
+ rz: '9',
|
|
|
+ lz: '4',
|
|
|
+ rzPer: '69',
|
|
|
+ lzPer: '31',
|
|
|
+ upTen: '31',
|
|
|
+ downTen: ''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '其他部门',
|
|
|
+ rz: '28',
|
|
|
+ lz: '7',
|
|
|
+ rzPer: '80',
|
|
|
+ lzPer: '20',
|
|
|
+ upTen: '80',
|
|
|
+ downTen: ''
|
|
|
+ }
|
|
|
+])
|
|
|
+
|
|
|
+const leftClick1 = (value) => {
|
|
|
+ console.log(value)
|
|
|
+}
|
|
|
+const rightClick1 = (value) => {
|
|
|
+ console.log(value)
|
|
|
+}
|
|
|
+const rightClick2 = (value) => {
|
|
|
+ console.log(value)
|
|
|
+}
|
|
|
+/** 初始化 **/
|
|
|
+onMounted(() => {})
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+@import '../../publicView.scss';
|
|
|
+
|
|
|
+.right-view-com {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+
|
|
|
+ .CardViewC1 {
|
|
|
+ height: 25%;
|
|
|
+ .cardBox {
|
|
|
+ ul {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ li {
|
|
|
+ width: 27%;
|
|
|
+ .topBj {
|
|
|
+ width: 100%;
|
|
|
+ height: 89px;
|
|
|
+ background: url(@/assets/imgs/oaView/syg.png) no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ p {
|
|
|
+ font-size: 18px;
|
|
|
+ margin-top: -18px;
|
|
|
+ margin-left: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ p {
|
|
|
+ text-align: center;
|
|
|
+ margin-left: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ li:nth-child(2) {
|
|
|
+ .topBj {
|
|
|
+ background: url(@/assets/imgs/oaView/zsg.png) no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ li:nth-child(3) {
|
|
|
+ .topBj {
|
|
|
+ background: url(@/assets/imgs/oaView/lsg.png) no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ li:nth-child(4) {
|
|
|
+ .topBj {
|
|
|
+ background: url(@/assets/imgs/oaView/sxs.png) no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .CardViewC2 {
|
|
|
+ height: 38%;
|
|
|
+ .cardBox {
|
|
|
+ ul {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ li {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ p {
|
|
|
+ font-size: 16px;
|
|
|
+ }
|
|
|
+ .p1a {
|
|
|
+ width: 57px;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ .perBox {
|
|
|
+ width: 215px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-left: 10px;
|
|
|
+ .per {
|
|
|
+ width: calc(100%);
|
|
|
+ height: 8px;
|
|
|
+ background: rgba(9, 217, 205, 0.16);
|
|
|
+ .bfb {
|
|
|
+ height: 100%;
|
|
|
+ position: relative;
|
|
|
+ div {
|
|
|
+ position: absolute;
|
|
|
+ top: -9px;
|
|
|
+ width: 0;
|
|
|
+ height: 0;
|
|
|
+ border-left: 5px solid transparent;
|
|
|
+ border-right: 5px solid transparent;
|
|
|
+ border-top: 10px solid red;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ p {
|
|
|
+ margin: 0 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .p2a {
|
|
|
+ flex: 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .CardViewC3 {
|
|
|
+ height: 35%;
|
|
|
+
|
|
|
+ .cardBox {
|
|
|
+ padding: 10px;
|
|
|
+ height: calc(100% + 86px);
|
|
|
+ .ldBox {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ .ldTop1 {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .dian {
|
|
|
+ width: 14px;
|
|
|
+ height: 14px;
|
|
|
+ border-radius: 50%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ background-color: #0a434a;
|
|
|
+ margin-right: 10px;
|
|
|
+ div {
|
|
|
+ width: 8px;
|
|
|
+ height: 8px;
|
|
|
+ border-radius: 50%;
|
|
|
+ background-color: #1ca2ff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ p {
|
|
|
+ color: #1ca2ff;
|
|
|
+ font-size: 18px;
|
|
|
+ font-family: AlibabaPuHuiTiB;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .ldTop2 {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .rz {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-right: 15px;
|
|
|
+ div {
|
|
|
+ width: 6px;
|
|
|
+ height: 10px;
|
|
|
+ background: #09d9cd;
|
|
|
+ margin-right: 5px;
|
|
|
+ }
|
|
|
+ p {
|
|
|
+ font-size: 16px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .lz {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ div {
|
|
|
+ width: 6px;
|
|
|
+ height: 10px;
|
|
|
+ background: #e4a306;
|
|
|
+ margin-right: 5px;
|
|
|
+ }
|
|
|
+ p {
|
|
|
+ font-size: 16px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ul {
|
|
|
+ width: 100%;
|
|
|
+ height: calc(100% - 60px);
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ li {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ p {
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+
|
|
|
+ .perBox1 {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .per {
|
|
|
+ width: 50px;
|
|
|
+ height: 10px;
|
|
|
+ background-color: rgba($color: #09d9cd, $alpha: 0.2);
|
|
|
+ div {
|
|
|
+ height: 100%;
|
|
|
+ background-color: #09d9cd;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ p {
|
|
|
+ width: 40px;
|
|
|
+ color: #09d9cd;
|
|
|
+ margin-left: 10px;
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ -o-text-overflow: ellipsis;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .perBox2 {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .per {
|
|
|
+ width: 50px;
|
|
|
+ height: 10px;
|
|
|
+ background-color: rgba($color: #e4a306, $alpha: 0.2);
|
|
|
+ div {
|
|
|
+ background-color: #e4a306;
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ p {
|
|
|
+ width: 40px;
|
|
|
+ color: #e4a306;
|
|
|
+ margin-left: 10px;
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ -o-text-overflow: ellipsis;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .tenBox {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ flex: 1;
|
|
|
+ img {
|
|
|
+ margin-right: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|