| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <template>
- <div
- class="job-member-list-container"
- @mouseenter="animate = false"
- @mouseleave="animate = true"
- >
- <div
- class="job-member-list start-animte"
- :class="{
- 'stop-animte': !animate
- }"
- >
- <div
- class="job-member-item"
- v-for="(item, index) in [...firstGroup, ...firstGroup]"
- :key="index"
- @click="linkToUser(item.uid)"
- >
- <div class="job-member-info">
- <img class="job-member-avatar" :src="item.icon_url" />
- <div class="job-member-name">
- <span class="job-member-name-text">{{ item.nickname }}</span>
- <level-tag :level="item.freework_level" />
- </div>
- </div>
- <div class="job-member-tips">
- {{item.timeText}}成功接单
- </div>
- </div>
- </div>
- <div
- class="job-member-list start-animte"
- :class="{
- 'stop-animte': !animate
- }"
- >
- <div
- class="job-member-item"
- v-for="(item, index) in [...secondGroup, ...secondGroup]"
- :key="index"
- @click="linkToUser(item.uid)"
- >
- <div class="job-member-info">
- <img class="job-member-avatar" :src="item.icon_url" />
- <div class="job-member-name">
- <span class="job-member-name-text">{{ item.nickname }}</span>
- <level-tag :level="item.freework_level" />
- </div>
- </div>
- <div class="job-member-tips">
- {{item.timeText}}成功接单
- </div>
- </div>
- </div>
- <div class="bg_left"></div>
- <div class="bg_right"></div>
- </div>
- </template>
- <script>
- // 接单,已认证
- import LevelTag from "@/components/level-tag.vue";
- import moment from "moment";
- export default {
- components: {
- LevelTag
- },
- data() {
- return {
- jobMemberList: [],
- firstGroup: [],
- secondGroup: [],
- animate: true
- };
- },
- created() {
- this.fetchData();
- },
- methods: {
- async fetchData() {
- let res = await this.$axios.$post("/uapi/cert/cert_user_list");
- if (res.status === 1) {
- res.data.list = res.data.list.map((item) => {
- return {
- ...item,
- timeText:moment(item.created_at*1000).format("MM月DD日HH时mm分")
- }
- })
- this.jobMemberList = [...res.data.list];
- let len = res.data.list.length;
- if (len == 0) {
- this.firstGroup = [];
- this.secondGroup = [];
- }
- if (len == 1) {
- this.firstGroup = [res.data.list[0]];
- this.secondGroup = [];
- }
- if (len > 1) {
- let mid = Math.floor(len / 2);
- this.firstGroup = res.data.list.slice(0, mid);
- this.secondGroup = res.data.list.slice(mid);
- }
- } else {
- this.jobMemberList = [];
- }
- },
- linkToUser(uid){
- location.href = `/wo/${uid}`;
- }
- }
- };
- </script>
- <style scoped lang="scss">
- .job-member-list-container {
- overflow: hidden;
- width: 100%;
- position: relative;
- }
- .job-member-list {
- padding-top: 15px;
- padding-bottom: 15px;
- font-size: 0;
- display: flex;
- flex-wrap: nowrap;
- width: fit-content;
- // position:absolute;
- }
- .job-member-item {
- width: 256px;
- height: 122px;
- background: #ffffff;
- box-shadow: 0px 0px 15px 0px rgba(95, 109, 141, 0.16);
- border-radius: 15px;
- border: 1px solid #ebeced;
- margin-left: 9px;
- margin-right: 9px;
- box-sizing: border-box;
- padding-left: 22px;
- padding-top: 22px;
- cursor: pointer;
- }
- .job-member-info {
- display: flex;
- align-items: center;
- }
- .job-member-avatar {
- width: 40px;
- height: 40px;
- border-radius: 100%;
- }
- .job-member-name {
- font-size: 18px;
- font-family: PingFangSC-Medium, PingFang SC;
- font-weight: 500;
- color: #0b121a;
- line-height: 25px;
- margin-left: 10px;
- display: flex;
- align-items: center;
- }
- .job-member-name-text {
- margin-right: 6px;
- max-width: 120px;
- overflow: hidden;
- display: inline-block;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .job-member-tips {
- margin-top: 16px;
- font-size: 14px;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #4b5d73;
- line-height: 20px;
- }
- .job-member-list:nth-child(2) {
- margin-left: -137px;
- }
- @-webkit-keyframes move {
- from {
- -webkit-transform: translateX(0);
- transform: translateX(0);
- }
- to {
- -webkit-transform: translateX(-1644px);
- transform: translateX(-1644px);
- }
- }
- @keyframes move {
- from {
- -webkit-transform: translateX(0);
- transform: translateX(0);
- }
- to {
- -webkit-transform: translateX(-1644px);
- transform: translateX(-1644px);
- }
- }
- .start-animte {
- -webkit-animation-name: move;
- animation-name: move;
- -webkit-animation-timing-function: linear;
- animation-timing-function: linear;
- -webkit-animation-duration: 30s;
- animation-duration: 30s;
- -webkit-animation-iteration-count: infinite;
- animation-iteration-count: infinite;
- }
- .stop-animte {
- -webkit-animation-play-state: paused;
- animation-play-state: paused;
- }
- .bg_left {
- position: absolute;
- left: 0;
- top: 0;
- width: 150px;
- height: 392px;
- background: -webkit-linear-gradient(left, #fff 0, rgba(255, 255, 255, 0) 100%);
- background: linear-gradient(90deg, #fff 0, rgba(255, 255, 255, 0) 100%)
- }
- .bg_right {
- position: absolute;
- top: 0;
- right: 0;
- width: 150px;
- height: 392px;
- background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0, #fff 100%);
- background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0, #fff 100%)
- }
- </style>
|