check_rating.vue 6.3 KB
<template>
	<view class="check_rating">
		<view class="tel_index_bg"></view>
		<view class="check_rating-main">
			<type-filtering :option="option" :current="current" @change="typeChange"></type-filtering>
			<view class="check_rating-main-b">
				<view class="check_rating-main-1" v-if="current !== EVALUATIONTYPE.POPULATION">
					<public-selector keyName="name" placeholder="请选择" :value="from.search" :columns="columns" @change="changeSelector"></public-selector>
				</view>
				<view class="check_rating-main-1" v-else>
					<view class="score">
						<view class="score-l">学院总体评分</view>
						<view class="score-r">
							{{ score }}
						</view>
					</view>
				</view>
				<view class="check_rating-main-2">
					<scroll-view :scroll-y="true"  :class="{'list-h': true, 'list-h2': current === EVALUATIONTYPE.POPULATION}"  @scrolltolower="getData">
						<view v-if="dataList.length">
							<list-item :type="current" :info="item" v-for="item in dataList" :key="item.id"></list-item>
						</view>
						<u-empty v-else mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png" ></u-empty>
					</scroll-view>
				</view>
			</view>
		</view>	
	</view>
</template>

<script>
	import TypeFiltering from './components/TypeFiltering/index.vue'
	import { EVALUATIONTYPE } from "./emit.js"
	import public_selector from "@/components/public_selector/public_selector"
	import ListItem from "./components/ListItem/index.vue"
	export default {
		components: {
			TypeFiltering,
			publicSelector: public_selector,
			ListItem
		},
		data() {
			return {
				EVALUATIONTYPE,
				current: EVALUATIONTYPE.LECTURER,
				option: [
					{
						lable: '讲师评分',
						value: EVALUATIONTYPE.LECTURER
					},
					{
						lable: '班主任评分',
						value: EVALUATIONTYPE.HEADMASTER
					},
					{
						lable: '综合办老师评分',
						value: EVALUATIONTYPE.COMPREHENSIVEOFFICE
					},
					{
						lable: '助教老师评分',
						value: EVALUATIONTYPE.ASSISTANTTEACHER
					},
					{
						lable: '面试老师评分',
						value: EVALUATIONTYPE.INTERVIEWTEACHER
					},
					{
						lable: '学院负责人评分',
						value: EVALUATIONTYPE.COLLEGE
					},
					{
						lable: '学院总体评分',
						value: EVALUATIONTYPE.POPULATION
					}
				],
				columns: [
					[]
				],
				from: {
					search: {}
				},
				dataList: [],
				total: 0,
				page: 1,
				score: 0
			};
		},
		mounted() {
			this.getData()
			this.getColumns()
		},
		methods: {
			typeChange(e) {
				this.current = e
				this.page = 1
				this.total = 0
				this.dataList = []
				this.from.search = {}
				this.getData()
				this.getColumns()
			},
			getColumns() {
				if(this.current === EVALUATIONTYPE.POPULATION) {
					return
				}
				var datas = {}
				var jkurl = '/admin/lecturer_list'
				let lable = 'title'
				if(this.current === EVALUATIONTYPE.HEADMASTER) {
					jkurl = '/admin/teacher_list'
					lable = 'nick'
				} else if (this.current === EVALUATIONTYPE.COMPREHENSIVEOFFICE) {
					jkurl = '/admin/office_list'
					lable = 'title'
				} else if (this.current === EVALUATIONTYPE.ASSISTANTTEACHER) {
					jkurl = '/admin/assistant_list'
					lable = 'nick'
				} else if (this.current === EVALUATIONTYPE.INTERVIEWTEACHER) {
					jkurl = '/admin/hr_list'
					lable = 'nick'
				} else if (this.current === EVALUATIONTYPE.COLLEGE) {
					jkurl = '/admin/manager_list'
					lable = 'nick'
				}
				this.$service.P_post(jkurl, datas).then(res => {
					let result = res.data
					result = result.map(item => {
						return {
							...item,
							name: item[lable]
						}
					})
					console.log('result======>', result)
					this.columns = [result]
					
				})
			},
			getData() {
				var datas = {
					pid: this.from.search.id || '',
					page: this.page,
					limit: 10
				}
				var jkurl = '/admin/content'
				if(this.current === EVALUATIONTYPE.HEADMASTER) {
					jkurl = '/admin/content_teacher'
				} else if (this.current === EVALUATIONTYPE.COMPREHENSIVEOFFICE) {
					jkurl = '/admin/content_office'
				} else if (this.current === EVALUATIONTYPE.ASSISTANTTEACHER) {
					jkurl = '/admin/content_assistant'
				} else if (this.current === EVALUATIONTYPE.INTERVIEWTEACHER) {
					jkurl = '/admin/content_hr'
				} else if (this.current === EVALUATIONTYPE.COLLEGE) {
					jkurl = '/admin/content_manager'
				} else if (this.current === EVALUATIONTYPE.POPULATION) {
					jkurl = '/admin/content_school'
				}
				this.$service.P_post(jkurl, datas).then(res => {
					console.log('res============>', res)
					if(this.current === EVALUATIONTYPE.POPULATION) {
						this.total = res.data.list.total
					} else {
						this.total = res.data.total
					}
					
					this.score = res.data.score
					if(this.dataList.length < this.total) {
						if(this.page === 1) {
							if(this.current === EVALUATIONTYPE.POPULATION) {
								this.dataList = res.data.list.data
							} else {
								this.dataList = res.data.data
							}
						} else {
							this.dataList.push(...this.dataList)
						}
						this.page++
					}
					console.log('dataList====>', this.dataList)
				})
			},
			changeSelector(e) {
				this.from.search = e.value[0]
				this.page = 1
				this.total = 0
				this.dataList = []
				this.getData()
			}
		}
	}
</script>

<style lang="scss">
.check_rating{
	.tel_index_bg{
		position: absolute;
		top: 0;
		z-index: 1;
		width: 100%;
		min-height: 220rpx;
		background: linear-gradient(0deg, #f8f8f8 0%, #ffffff 25%, #5D9DFD 60%, #428EFE 70%, #2D81FF 100%);
	}
	.check_rating-main{
		position: relative;
		z-index: 1;
		.check_rating-main-b{
			padding: 15rpx 25rpx;
			.check_rating-main-1{
				margin-top: 30rpx;
				.score{
					height: 168rpx;
					border-radius: 15rpx;
					display: flex;
					justify-content: space-between;
					align-items: center;
					background: linear-gradient(0deg, #FDF8E5 0%, #FFFFFF 86%);
					padding: 0 30rpx;
					.score-l{
						font-size: 32rpx;
						color: #3D4054;
					}
					.score-r{
						background-image: url("@/static/images/admin/icon18.png");
						height: 100%;
						width: 189rpx;
						background-size: 100% 100%;
						display: flex;
						justify-content: center;
						align-items: center;
						font-size: 46rpx;
						font-weight: bold;
						color: #fff;
					}
				}
			}
			.check_rating-main-2{
				margin-top: 30rpx;
				.list-h{
					height: calc(100vh - 292rpx);
				}
				.list-h2{
					height: calc(100vh - 380rpx);
				}
			}
		}
	}
}
</style>