scoreApproval.vue 4.81 KB
<template>
	<view>
		<uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
			styleType="text" activeColor="#AD181F"></uni-segmented-control>

		<!-- 段位考试审核 -->
		<view class="appList">
			<view class="appItem" v-for="item in infoList" :key="item.recordId">
				<view @click="goDetail(item)">
					<view class="status">
						<text :class="{
              'text-primary':item.auditStatus=='0',
              'text-success':item.auditStatus=='1',
              'text-danger':item.auditStatus=='2',
              'text-warning':item.auditStatus=='3'
            }">{{ item.statusStr }}</text>
					</view>

					<view class="date" v-if="item.status!='0'&&item.submitTime">
						<uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
						提交时间:{{item.submitTime}}
					</view>
					<view class="text-primary">{{item.examCode}}</view>
					<view class="name mt10"><text class="dot"></text>{{item.name}}</view>
					<view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}
					</view>
					<view class="flexbox">
						<view>
							申请日期
							<view>{{item.applyTime.substring(0, 10)}}</view>
						</view>
						<view>
							考段考生数
							<view>{{item.totalNum}}</view>
						</view>
						<view>
							总金额
							<view>
								<text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text>
							</view>
						</view>
					</view>
				</view>
				<view class="func" v-if="item.auditStatus=='0'">
					<button @click="audit(item,'2')">拒绝</button>
					<button @click="audit(item,'1')">同意</button>
				</view>
			</view>
		</view>
		<view class="nodata" v-if="infoList.length==0">
			<image mode="aspectFit" src="/static/nodata.png"></image>
			<text>暂无数据</text>
		</view>
	</view>
</template>

<script setup>
	import * as examApi from '@/common/api_exam.js'
	import _ from 'underscore'
	import {
		ref
	} from 'vue'
	import {
		onLoad,
		onShow
	} from '@dcloudio/uni-app'

	const app = getApp();
	const queryParams = ref({
		status: '0',
		rankStatus: '1'
	})
	const current = ref()
	const navs = ref(['审核中', '审核通过', '审核拒绝'])
	const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
	const deptType = ref('')
	const infoList = ref([])
	const total = ref(0)

	onLoad((options) => {
		queryParams.value.type = options.type
		if (options.type == 2) {
			uni.setNavigationBarTitle({
				title: '段位考试审核'
			})
		}
		if (options.type == 3) {
			uni.setNavigationBarTitle({
				title: '越段考试审核'
			})
		}
	})

	onShow(() => {
		if (app.globalData.isLogin) {
			init()
		} else {
			app.firstLoadCallback = () => {
				init()
			};
		}
	})

	function init() {
		uni.showLoading({
			title: '加载中'
		})
		deptType.value = app.globalData.deptType
		getList()
	}

	function onClickItem(e) {
		uni.showLoading({
			title: '加载中'
		})
		queryParams.value.status = e.currentIndex
		getList()
	}

	function getList() {
		examApi.getVerityList(queryParams.value).then(res => {
			uni.hideLoading()
			const list = []
			_.each(res.rows, r => {
				const item = JSON.parse(r.content)
				item.recordId = r.recordId
				item.auditStatus = r.auditStatus
				item.submitStatus = r.submitStatus
				item.distributeTime = r.distributeTime
				item.statusStr = statusArr[r.auditStatus]
				item.sourceData = r
				item.scoreStatus = r.scoreStatus
				item.status = r.status
				item.isView = r.isView
				item.payStatus = r.payStatus
				item.rankStatus = r.rankStatus
				item.processCentBar = r.processCentBar
				list.push(item)
			})

			infoList.value = list
			total.value = res.total
		})
	}

	function audit(item, flag) {
		console.log(item.sourceData)
		var obj = {
			flag: flag,
			reason: null,
			id: item.recordId
		}

		if (flag == '2') {
			// 拒绝
			// 弹出框填写理由
			uni.showModal({
				title: '请输入拒绝理由',
				editable: true,
				success: function(res) {
					if (res.confirm) {
						if (!res.content) {
							uni.showToast({
								title: '请输入拒绝理由',
								icon: 'none'
							})
						} else {
							obj.reason = res.content
							doApproval(obj)
						}
					}
				}
			})
		} else if (flag == '1') {
			// 二次确认
			uni.showModal({
				title: '提示',
				content: `确定审批通过吗`,
				success: function(res) {
					if (res.confirm) {
						doApproval(obj)
					}
				}
			})
		}
	}

	function doApproval(obj) {
		uni.showLoading({
			title: '加载中',
			mask: true
		})
		examApi.doMergeFlows(obj).then((res) => {
			uni.hideLoading()
			uni.showToast({
				title: '操作成功',
				icon: 'none'
			})
			getList()
		})
	}

	function goDetail(item) {
		let path = `/pages/rank/applyDetail?examId=${item.examId}`
		uni.navigateTo({
			url: path
		});
	}
</script>

<style lang="scss" scoped>

</style>