组织换届
This commit is contained in:
		
							
								
								
									
										215
									
								
								src/project/pingchang/AppOrganizational/AppOrganizational.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								src/project/pingchang/AppOrganizational/AppOrganizational.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,215 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <view class="page" :class="tabIndex == 1 ? 'bg-369' : 'bg-fff'">
 | 
			
		||||
    <div class="detail-top">
 | 
			
		||||
      <p>{{ dataInfo.organizationName || '-' }}</p>
 | 
			
		||||
      <div>成立时间:{{ formatTime(dataInfo.createOrganizationTime) || '-' }}</div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="line-bg"></div>
 | 
			
		||||
    <div class="select-tab">
 | 
			
		||||
      <div :class="tabIndex == 0 ? 'tab-active' : ''" @click="tabClick(0)">当前届次</div>
 | 
			
		||||
      <div :class="tabIndex == 1 ? 'tab-active' : ''" @click="tabClick(1)">历史届次</div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="organization-detail" v-if="!tabIndex">
 | 
			
		||||
      <p>当前届次:{{ dataInfo.sessionTime || '-' }}</p>
 | 
			
		||||
      <p>本届换届时间:{{ dataInfo.changeTime || '-' }}</p>
 | 
			
		||||
      <p>换届类型:{{ $dict.getLabel('organizationChangeType', dataInfo.type) || '-' }}</p>
 | 
			
		||||
      <p class="padd-b32">下届换届时间:{{ dataInfo.nextChangeTime || '-' }}</p>
 | 
			
		||||
 | 
			
		||||
      <p class="fw500">本届任职</p>
 | 
			
		||||
      <div style="margin-bottom: 40px;">
 | 
			
		||||
        <p v-for="(item, index) in dataInfo.serveList" :key="index">{{ item.position }}:{{ item.name }}</p>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <p class="fw500">本届候选人</p>
 | 
			
		||||
      <p v-for="(item, index) in dataInfo.candidateList" :key="index">{{ item.position }}:{{ item.name }}</p>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="history-list" v-if="historyList.length && tabIndex">
 | 
			
		||||
      <div class="item" v-for="(item, index) in historyList" :key="index" @click="toDetail(item.id)">
 | 
			
		||||
        <div class="item-top">
 | 
			
		||||
          <image src="https://cdn.cunwuyun.cn/img/organizationalchange-icon.png"/>
 | 
			
		||||
          届次:{{ item.sessionTime }}
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="item-date">换届时间:{{ item.changeTime }}</div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <AiEmpty  v-if="!historyList.length && tabIndex"/>
 | 
			
		||||
  </view>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import {mapState} from 'vuex'
 | 
			
		||||
export default {
 | 
			
		||||
  name:"AppOrganizational",
 | 
			
		||||
  appName: "组织换届",
 | 
			
		||||
  computed: {
 | 
			
		||||
    ...mapState(['user']),
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      tabIndex: 0,
 | 
			
		||||
      historyList: [],
 | 
			
		||||
      dataInfo: {}
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  onLoad(options) {
 | 
			
		||||
    uni.setNavigationBarColor({
 | 
			
		||||
      frontColor: "#ffffff",
 | 
			
		||||
      backgroundColor: "#e60012",
 | 
			
		||||
    })
 | 
			
		||||
    this.$dict.load('organizationChangeType').then(() => {
 | 
			
		||||
      this.getDetail()
 | 
			
		||||
      this.getHistory()
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getDetail() {
 | 
			
		||||
      this.$instance.post(`/app/apporganizationchangeconfig/queryDetailByOrganizationIdFromApplet`, null, {
 | 
			
		||||
        params: {organizationId: this.user.partyOrgId}
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        this.dataInfo = res.data
 | 
			
		||||
      }).catch(err => {
 | 
			
		||||
        this.$toast(err)
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getHistory() {
 | 
			
		||||
      this.$instance.post(`/app/apporganizationgeneralelection/list-forwx?organizationId=${this.user.partyId}`).then(res => {
 | 
			
		||||
        if (res && res.data) {
 | 
			
		||||
          this.historyList = res.data
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    tabClick(index) {
 | 
			
		||||
      this.tabIndex = index
 | 
			
		||||
    },
 | 
			
		||||
    toDetail(id) {
 | 
			
		||||
      uni.navigateTo({
 | 
			
		||||
        url: `./detail?id=${id}`
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    user() {
 | 
			
		||||
      return uni.getStorageSync("userInfo")
 | 
			
		||||
    },
 | 
			
		||||
    formatTime() {
 | 
			
		||||
      return function (time) {
 | 
			
		||||
        return time && time.substring(0, 10);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
.page {
 | 
			
		||||
  .detail-top {
 | 
			
		||||
    padding: 32px;
 | 
			
		||||
    background-color: #E60012;
 | 
			
		||||
    color: #fff;
 | 
			
		||||
 | 
			
		||||
    p {
 | 
			
		||||
      line-height: 64px;
 | 
			
		||||
      font-size: 40px;
 | 
			
		||||
      font-family: PingFangSC-Medium, PingFang SC;
 | 
			
		||||
      font-weight: 500;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    div {
 | 
			
		||||
      line-height: 40px;
 | 
			
		||||
      font-size: 28px;
 | 
			
		||||
      margin-top: 16px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .line-bg {
 | 
			
		||||
    height: 8px;
 | 
			
		||||
    background-color: #F3F6F9;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .select-tab {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    line-height: 96px;
 | 
			
		||||
    background-color: #fff;
 | 
			
		||||
 | 
			
		||||
    div {
 | 
			
		||||
      flex: 1;
 | 
			
		||||
      border-bottom: 2px solid #D8DDE6;
 | 
			
		||||
      font-size: 28px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      color: #999;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .tab-active {
 | 
			
		||||
      color: #F26C77;
 | 
			
		||||
      border-bottom: 4px solid #E60012;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .organization-detail {
 | 
			
		||||
    padding: 48px 32px 0;
 | 
			
		||||
 | 
			
		||||
    p {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      color: #666;
 | 
			
		||||
      line-height: 48px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .padd-b32 {
 | 
			
		||||
      padding-bottom: 40px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .fw500 {
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      font-family: PingFangSC-Medium, PingFang SC;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .history-list {
 | 
			
		||||
    padding: 16px 32px;
 | 
			
		||||
 | 
			
		||||
    .item {
 | 
			
		||||
      width: 686px;
 | 
			
		||||
      background: #fff;
 | 
			
		||||
      box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.02);
 | 
			
		||||
      border-radius: 8px;
 | 
			
		||||
      margin-bottom: 32px;
 | 
			
		||||
      display: flex;
 | 
			
		||||
 | 
			
		||||
      .item-top {
 | 
			
		||||
        width: 622px;
 | 
			
		||||
        height: 108px;
 | 
			
		||||
        line-height: 106px;
 | 
			
		||||
        margin-left: 16px;
 | 
			
		||||
        color: #333;
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        flex: 1;
 | 
			
		||||
 | 
			
		||||
        image {
 | 
			
		||||
          width: 40px;
 | 
			
		||||
          height: 40px;
 | 
			
		||||
          margin: 0 20px 0 16px;
 | 
			
		||||
          vertical-align: middle;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .item-date {
 | 
			
		||||
        line-height: 106px;
 | 
			
		||||
        padding-right: 32px;
 | 
			
		||||
        flex: 1;
 | 
			
		||||
        color: #999;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        text-align: right;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.bg-fff {
 | 
			
		||||
  background-color: #fff;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.bg-369 {
 | 
			
		||||
  background-color: #F3F6F9 !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										62
									
								
								src/project/pingchang/AppOrganizational/detail.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								src/project/pingchang/AppOrganizational/detail.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <view class="page">
 | 
			
		||||
    <div class="line-bg"></div>
 | 
			
		||||
    <div class="organization-detail">
 | 
			
		||||
      <p>当前届次:{{dataInfo.sessionTime || '-'}}</p>
 | 
			
		||||
      <p>换届时间:{{dataInfo.changeTime || '-'}}</p>
 | 
			
		||||
      <p class="fw500">该届任职</p>
 | 
			
		||||
      <div style="margin-bottom: 40rpx;">
 | 
			
		||||
        <p v-for="(item, index) in dataInfo.serveList" :key="index">{{item.position}}:{{item.name}}</p>
 | 
			
		||||
      </div>
 | 
			
		||||
      <p class="fw500">该届候选人</p>
 | 
			
		||||
      <p v-for="(item, index) in dataInfo.candidateList" :key="index">{{item.position}}:{{item.name}}</p>
 | 
			
		||||
    </div>
 | 
			
		||||
  </view>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      id: '',
 | 
			
		||||
      dataInfo: {}
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  onLoad(options){
 | 
			
		||||
    this.$dict.load('organizationChangeType')
 | 
			
		||||
    this.id = options.id
 | 
			
		||||
    this.getDetail()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getDetail() {
 | 
			
		||||
      this.$instance.post(`/app/apporganizationgeneralelection/queryDetailById-forwx?id=${this.id}`).then( res => {
 | 
			
		||||
        this.dataInfo = res.data
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scope>
 | 
			
		||||
 
 | 
			
		||||
.page {
 | 
			
		||||
    background-color: #fff;
 | 
			
		||||
    .line-bg{
 | 
			
		||||
      height: 20rpx;
 | 
			
		||||
      background-color: #F3F6F9;
 | 
			
		||||
    }
 | 
			
		||||
  .organization-detail{
 | 
			
		||||
    padding: 20rpx 32rpx 0;
 | 
			
		||||
    p{
 | 
			
		||||
      font-size: 32rpx;
 | 
			
		||||
      color: #666;
 | 
			
		||||
      line-height: 48rpx;
 | 
			
		||||
    }
 | 
			
		||||
    .padd-b32{
 | 
			
		||||
      padding-bottom: 40rpx;
 | 
			
		||||
    }
 | 
			
		||||
    .fw500{
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      font-family:PingFangSC-Medium,PingFang SC;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
		Reference in New Issue
	
	Block a user