123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- <!--
- 描述: 人员占比
- 作者: Jack Chen
- 日期: 2020-05-02
- -->
- <template>
- <div class="wrap-container sn-container">
- <div class="sn-content">
- <div class="sn-title">人员占比</div>
- <div class="sn-body">
- <div class="wrap-container">
- <div class="person">
- <div class="pers person1"></div>
- <div class="pers person2"></div>
- <div class="pers person3"></div>
- </div>
- <div class="svgs">
- <svg
- width="244"
- height="264"
- version="1.1"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- >
- <defs>
- <linearGradient id="linear" x1="0%" y1="0%" x2="0%" y2="100%">
- <stop
- offset="0%"
- style="stop-color: #0a6aff; stop-opacity: 0.47"
- ></stop>
- <stop
- offset="40%"
- style="stop-color: #5cffff; stop-opacity: 1"
- ></stop>
- <stop
- offset="100%"
- style="stop-color: #0a6aff; stop-opacity: 1"
- ></stop>
- </linearGradient>
- <marker
- id="arrow"
- markerWidth="10"
- markerHeight="10"
- refX="0"
- refY="3"
- orient="auto"
- markerUnits="strokeWidth"
- >
- <path d="M0,0 L0,6 L9,3 z" fill="rgb(11,108,255)"></path>
- </marker>
- </defs>
- <path
- d="M134 86C136 86 80 85 77 208"
- fill="none"
- stroke="url(#linear)"
- stroke-opacity="1"
- marker-end="url(#arrow)"
- ></path>
- <path
- d="M136 86C138 86 212 88 204 208"
- fill="none"
- stroke="url(#linear)"
- stroke-opacity="1"
- marker-end="url(#arrow)"
- ></path>
- <path
- d="M136 84C138 84 195 84 206 116"
- fill="none"
- stroke="url(#linear)"
- stroke-opacity="1"
- marker-end="url(#arrow)"
- ></path>
- <path
- d="M134 84C136 84 81 82 58 123"
- fill="none"
- stroke="url(#linear)"
- stroke-opacity="1"
- marker-end="url(#arrow)"
- ></path>
- <path
- d="M132 86C134 86 120 68 93 67"
- fill="none"
- stroke="url(#linear)"
- stroke-opacity="1"
- marker-end="url(#arrow)"
- ></path>
- <path
- d="M134 86C136 86 132 78 134 74C136 69 150 52 150 52"
- fill="none"
- stroke="url(#linear)"
- stroke-opacity="1"
- marker-end="url(#arrow)"
- ></path>
- <path
- d="M134 85C136 85 146 65 183 65"
- fill="none"
- fill-opacity="0"
- stroke="url(#linear)"
- marker-end="url(#arrow)"
- ></path>
- </svg>
- </div>
- <div class="svgs">
- <div
- class="text"
- :class="`per${index + 1}`"
- v-for="(item, index) in arrData"
- :key="index"
- >
- <span>{{ item.name }}</span>
- <span>{{ item.number }}</span
- >人
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </template>
- <script>
- export default {
- name: `staffMix`,
- data() {
- return {
- arrData: [
- {
- name: `前端工程师`,
- number: 3,
- },
- {
- name: `后端工程师`,
- number: 5,
- },
- {
- name: `网页设计师`,
- number: 2,
- },
- {
- name: `测试工程师`,
- number: 2,
- },
- {
- name: `产品经理`,
- number: 1,
- },
- {
- name: `安卓工程师`,
- number: 1,
- },
- {
- name: `IOS工程师`,
- number: 1,
- },
- ],
- }
- },
- mounted() {},
- methods: {},
- beforeDestroy() {},
- }
- </script>
- <style lang="scss" scoped>
- .sn-container {
- left: 50px;
- top: 1978px;
- width: 432px;
- height: 400px;
- .person {
- position: absolute;
- top: 0;
- width: 100%;
- height: 100%;
- .pers {
- width: 100%;
- height: 100%;
- position: absolute;
- top: 0;
- left: 0;
- background-repeat: no-repeat;
- background-position: center center;
- &.person1 {
- background-image: url(../../assets/img/online.png);
- transform: rotateX(64deg) rotateZ(0deg);
- top: 16%;
- }
- &.person2 {
- background-image: url(../../assets/img/cir-2.png);
- animation: move 10s linear infinite;
- -webkit-animation: move 10s linear infinite;
- transform: rotateX(64deg);
- top: 16%;
- }
- &.person3 {
- background-image: url(../../assets/img/person-1.png);
- top: 5%;
- }
- }
- }
- .svgs {
- width: 270px;
- height: 260px;
- margin: auto;
- top: 0;
- position: absolute;
- right: 0;
- left: 0;
- bottom: 0;
- }
- .text {
- position: absolute;
- width: 50px;
- height: 50px;
- background-image: url(../../assets/img/cir-1.png);
- background-repeat: no-repeat;
- background-position: center center;
- color: rgb(114, 198, 230);
- text-align: center;
- span {
- &:nth-child(1) {
- display: block;
- width: 52px;
- margin-top: 10px;
- line-height: 12px;
- transform: scale(0.85);
- height: 22px;
- }
- &:nth-child(2) {
- font-size: 14px;
- font-weight: bold;
- }
- }
- &.per1 {
- top: 215px;
- left: 50px;
- }
- &.per2 {
- top: 113px;
- left: 3px;
- }
- &.per3 {
- top: 45px;
- left: 35px;
- }
- &.per4 {
- left: 120px;
- }
- &.per5 {
- top: 45px;
- left: 190px;
- }
- &.per6 {
- top: 105px;
- left: 210px;
- }
- &.per7 {
- top: 215px;
- left: 180px;
- }
- }
- }
- @-webkit-keyframes move {
- 0% {
- transform: rotateX(-64deg) rotateZ(360deg);
- }
- 100% {
- transform: rotateX(-64deg) rotateZ(0deg);
- }
- }
- @keyframes move {
- 0% {
- transform: rotateX(-64deg) rotateZ(360deg);
- }
- 100% {
- transform: rotateX(-64deg) rotateZ(0deg);
- }
- }
- </style>
|