Blame view

src/components/fee/SelectAdminCommunity.vue 1.79 KB
10d3499d   wuxw   开发完成 admin 台账功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
  <template>
    <el-card>
      <div class="community-selector">
        <el-scrollbar style="height: 650px">
          <ul class="community-list">
            <li
              v-for="(item, index) in communitys"
              :key="index"
              class="community-item"
              :class="{ 'selected': communityId === item.communityId }"
              @click="handleSelectCommunity(item)"
            >
              {{ item.name }}
            </li>
          </ul>
        </el-scrollbar>
      </div>
    </el-card>
  </template>
  
  <script>
  import { listAdminCommunitys } from '@/api/fee/adminPayFeeDetailApi'
  
  export default {
    name: 'SelectAdminCommunity',
    data() {
      return {
        communitys: [
          { name: this.$t('adminPayFeeDetail.allCommunities'), communityId: '' }
        ],
        communityId: ''
      }
    },
    created() {
      this.loadCommunities()
    },
    methods: {
      async loadCommunities() {
        try {
          const params = {
            page: 1,
            row: 100
          }
          const { data } = await listAdminCommunitys(params)
          this.communitys = [...this.communitys, ...data]
        } catch (error) {
          this.$message.error(this.$t('adminPayFeeDetail.fetchCommunityError'))
        }
      },
      handleSelectCommunity(community) {
        this.communityId = community.communityId
        this.$emit('changeCommunity', community)
      }
    }
  }
  </script>
  
  <style lang="scss" scoped>
  .community-selector {
    .community-list {
      list-style: none;
      padding: 0;
      margin: 0;
      
      .community-item {
        padding: 12px 15px;
        cursor: pointer;
        text-align: center;
        border-bottom: 1px solid #ebeef5;
        transition: all 0.3s;
        
        &:hover {
          background-color: #f5f7fa;
        }
        
        &.selected {
          background-color: #409eff;
          color: white;
        }
      }
    }
  }
  </style>