第一书记
This commit is contained in:
		
							
								
								
									
										217
									
								
								src/project/pingchang/AppPolice/AppPolice.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								src/project/pingchang/AppPolice/AppPolice.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,217 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="wrapper" v-if="pageShow">
 | 
			
		||||
    <div class="area">
 | 
			
		||||
      <AiAreaPicker v-model="areaId" :name.sync="areaName" :areaId="$areaId" @input="handleSelect">
 | 
			
		||||
        <div class="ai-area__wrapper">
 | 
			
		||||
          <span class="label" v-if="areaName">{{ areaName }}</span>
 | 
			
		||||
          <span v-else>请选择</span>
 | 
			
		||||
          <image src="/static/img/area-bottom.png"/>
 | 
			
		||||
        </div>
 | 
			
		||||
      </AiAreaPicker>
 | 
			
		||||
    </div>
 | 
			
		||||
    <tempate v-if="list.length">
 | 
			
		||||
      <header>
 | 
			
		||||
        <span>书记列表</span>
 | 
			
		||||
        <div class="total">
 | 
			
		||||
          共<em>{{ list.length }}</em>名书记
 | 
			
		||||
        </div>
 | 
			
		||||
      </header>
 | 
			
		||||
      <div class="list-wrap">
 | 
			
		||||
        <div class="card" v-for="(item,index) in list" :key="index">
 | 
			
		||||
          <img
 | 
			
		||||
              :src="item.picture || `https://cdn.cunwuyun.cn/AppPolice/police.png`"
 | 
			
		||||
              @click="preview(index)"
 | 
			
		||||
              alt="">
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span class="user-name">{{ item.name }}</span>
 | 
			
		||||
            <span class="state">第一书记</span>
 | 
			
		||||
            <span class="phone" @click="call(item)">{{ item.phone }}</span>
 | 
			
		||||
            <span>{{ item.areaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </tempate>
 | 
			
		||||
    <AiEmpty v-else></AiEmpty>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'AppPolice',
 | 
			
		||||
  appName: "第一书记",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      current: 1,
 | 
			
		||||
      areaId: "",
 | 
			
		||||
      list: [],
 | 
			
		||||
      areaName: '',
 | 
			
		||||
      $areaId: '',
 | 
			
		||||
      pageShow: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onLoad() {
 | 
			
		||||
    this.$loading()
 | 
			
		||||
    this.areaId = this.$areaId
 | 
			
		||||
    this.areaName = this.$areaName
 | 
			
		||||
    this.$nextTick(() => {
 | 
			
		||||
      this.getList()
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    call({phone: phoneNumber}) {
 | 
			
		||||
      uni.makePhoneCall({phoneNumber})
 | 
			
		||||
    },
 | 
			
		||||
    preview(index) {
 | 
			
		||||
      if (this.list[index]["picture"]?.startsWith("http")) {
 | 
			
		||||
        uni.previewImage({
 | 
			
		||||
          current: this.list[index]["picture"],
 | 
			
		||||
          urls: [this.list[index]["picture"]]
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleSelect() {
 | 
			
		||||
      this.$loading()
 | 
			
		||||
      this.current = 1
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.getList()
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      this.$instance.post(`/app/appvillageauxiliarypolice/list`, null, {
 | 
			
		||||
        params: {
 | 
			
		||||
          isPublic: 1,
 | 
			
		||||
          areaId: this.areaId,
 | 
			
		||||
          current: this.current
 | 
			
		||||
        }
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.list = this.current > 1 ? [...this.list, ...res.data.records] : res.data.records;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.pageShow = true
 | 
			
		||||
        this.$hideLoading()
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  onReachBottom() {
 | 
			
		||||
    this.current++;
 | 
			
		||||
    this.getList();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.wrapper {
 | 
			
		||||
  padding-top: 124px;
 | 
			
		||||
  padding-bottom: 20px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.area {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  position: fixed;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  z-index: 1;
 | 
			
		||||
  height: 124px;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  background: #4181FF;
 | 
			
		||||
  padding-left: 32px;
 | 
			
		||||
 | 
			
		||||
  .ai-area__wrapper {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
 | 
			
		||||
    span {
 | 
			
		||||
      margin-right: 16px;
 | 
			
		||||
      color: #FFFFFF;
 | 
			
		||||
      font-size: 44px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    image {
 | 
			
		||||
      width: 16px;
 | 
			
		||||
      height: 8px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
header {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  justify-content: space-between;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  padding: 32px;
 | 
			
		||||
 | 
			
		||||
  & > span {
 | 
			
		||||
    font-size: 38px;
 | 
			
		||||
    font-weight: 600;
 | 
			
		||||
    color: #333333;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .total {
 | 
			
		||||
    margin-left: auto;
 | 
			
		||||
    font-size: 28px;
 | 
			
		||||
    font-weight: 400;
 | 
			
		||||
    color: #666666;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
 | 
			
		||||
    & > em {
 | 
			
		||||
      color: #4181FF;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.list-wrap {
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  padding: 0 32px;
 | 
			
		||||
 | 
			
		||||
  .card {
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 32px;
 | 
			
		||||
    background: #FFFFFF;
 | 
			
		||||
    box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.02);
 | 
			
		||||
    border-radius: 16px;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    margin-bottom: 24px;
 | 
			
		||||
 | 
			
		||||
    & > img {
 | 
			
		||||
      width: 200px;
 | 
			
		||||
      height: 200px;
 | 
			
		||||
      border-radius: 8px;
 | 
			
		||||
      margin-right: 32px;
 | 
			
		||||
      flex-shrink: 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .right {
 | 
			
		||||
      height: 200px;
 | 
			
		||||
      flex: 1;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      flex-direction: column;
 | 
			
		||||
      font-size: 26px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #666666;
 | 
			
		||||
 | 
			
		||||
      .user-name {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        margin-bottom: 16px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .state {
 | 
			
		||||
        color: #666666;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .phone {
 | 
			
		||||
        color: #4181FF;
 | 
			
		||||
        margin: 8px 0;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
		Reference in New Issue
	
	Block a user