pplist.vue 4.22 KB
<template>
  <div>
    <div class="box">
      <el-breadcrumb class="mt20 mb20" :separator-icon="ArrowRight">
        <el-breadcrumb-item :to="{ path: '/' }">
          <el-icon>
            <HomeFilled />
          </el-icon>
          首页
        </el-breadcrumb-item>
        <el-breadcrumb-item :to="{path:'/vip/index'}">会员之家</el-breadcrumb-item>
        <el-breadcrumb-item v-if="query.kind == 1">教练员</el-breadcrumb-item>
        <el-breadcrumb-item v-if="query.kind == 2">裁判员</el-breadcrumb-item>
        <el-breadcrumb-item v-if="query.kind == 3">考官</el-breadcrumb-item>
      </el-breadcrumb>

      <div class="mb20 mt20">
        <el-row class="topNews newsimgcover" :gutter="20">
          <el-col :span="4">
            <el-card :body-style="{padding:0}">
              <ul class="meunUl">
                <li v-for="r in regionsList" :key="r.id" :class="{'active':r.id==currRegion.id}" @click="changePv(r)">{{ r.cityName }}
                  <el-tag round type="info">{{ r.count }}</el-tag>
                </li>
              </ul>
            </el-card>
          </el-col>
          <el-col :span="20">
            <div class="searchbb">
              <div class="text-muted">
                <el-icon><LocationInformation /></el-icon>
                {{ currRegion?.cityName }}
              </div>
              <el-form style="width: 300px;display: inline-block">
                <el-form-item>
                  <el-input
                    v-model="query.name"
                    placeholder="输入关键字"
                    :suffix-icon="Search" @keyup.enter="getList"
                  />
                </el-form-item>
              </el-form>
            </div>
            <el-row :gutter="30">
              <el-col v-for="n in examSiteList" :key="n.memId" :lg="4" :sm="24" :md="6">
                <div class="item">
                  <div class="imgbox">
                    <img :src="fillImgUrl(n.pictures?.split(',')[0])">
                  </div>
                  <h2 class="esp">{{ n.name }}</h2>
                </div>
              </el-col>
            </el-row>
            <div>
              <el-empty v-if="total == 0" description="暂无数据" />
              <div v-else class="pc-page-box">
                <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList" />
              </div>
            </div>
          </el-col>
        </el-row>
      </div>
    </div>
  </div>
</template>

<script setup>
import { ArrowRight, Search } from '@element-plus/icons-vue'
import { onMounted, ref } from 'vue'
import { getExamRegionsList, getExamSiteList } from '@/apiPc/common'
import _ from 'lodash'
import { useRoute } from 'vue-router'
const route = useRoute()
const regionsList = ref([])
const currRegion = ref(null)
const examSiteList = ref([])
const total = ref(0)
const query = ref({
  pageSize: 15,
  pageNum: 1,
  provinceId: null,
  name: null
})

onMounted(() => {
  var val = route.params.id
  judeId(val)
  getRegionsList().then(getList)
})
const judeId = (val) => {
  console.log(val)
  if (val == 1) {
    query.value.kind = 1
  } else if (val == 2) {
    query.value.kind = 2
  } else if (val == 3) {
    query.value.kind = 3
  }
  console.log(query.value.kind)
}
const getRegionsList = () => {
  return getExamRegionsList().then((res) => {
    const sum = _.sumBy(res.data, (d) => d.count)
    res.data.unshift({
      id: null,
      cityName: '全国',
      count: sum
    })
    regionsList.value = res.data
    currRegion.value = res.data[0]
  })
}
const getList = () => {
  query.value.provinceId = currRegion.value.id
  getExamSiteList(query.value).then(res => {
    examSiteList.value = res.rows
    total.value = res.total
  })
}
const changePv = (r) => {
  currRegion.value = r
  getList()
}
</script>

<style scoped lang="scss">
.newsimgcover .item .imgbox{aspect-ratio: 2/3;}
.searchbb{display: flex;align-items: center;justify-content: space-between}
.meunUl{
  li{display: flex;justify-content: space-between;cursor: pointer;padding: 0 15px;
    line-height: 50px;align-items: center;border-bottom: 1px solid #eee;
    &:hover{background: #eee;}
    &.active{border-left: 2px solid var(--el-color-primary);
      color: var(--el-color-primary)}
  }
}
</style>