merge.vue 5.03 KB
<template>
	<view class="hasfixedbottom">
		<view class="text-center whitebg">
			<view class="cardNav">
				<view @click="goApproval">审核</view>
				<view class="active">合并</view>
				<view @click="goMergeUp">提交</view>
			</view>
		</view>
		<view class="appList">
			<view class="appItem" v-for="(item,index) in infoList" :key="index">
				<view @click="checkThis(item)" class="iconbox">
					<image class="icon" v-if="item.checked"  :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" />
					<image class="icon" v-else  :src="config.baseUrl_api+'/fs/static/member/dx.png'" />
				</view>
				<view class="status" @click="goDetail(item)">
					<text :class="{
                '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.applyTime">上报日期:{{item.applyTime?.slice(0,10)}}</view>
				<view class="text-primary" v-if="item.examCode">{{item.examCode}}</view>
				<view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
				<view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
				<view class="flexbox" @click="goDetail(item)">
					<view>
						上报单位
						<view>{{item.memberName}}</view>
					</view>
					<view>
						考级考官
						<view>{{item.examinerNames}}</view>
					</view>
					<view>
						考级考生数
						<view>{{item.totalNum}}</view>
					</view>
				</view>
			</view>
		</view>


		<view class="fixedBottom" v-if="infoList.length>0">
			<button @click="handleMerge" style="width: 40%;" class="btn-red">合并</button>
		</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 api from '@/common/api.js'
	import config from '@/config.js'
	import _ from 'underscore'
	import {
		onMounted,
		ref
	} from 'vue'
	import {
		onLoad,
		onShow
	} from '@dcloudio/uni-app'
	const app = getApp();
	const queryParams = ref({
		// pageNum: 1,
		// pageSize: 10
		status: '1',
		mergeFlag: '0',
		type: '1'
	})
	const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
	const infoList = ref([])
	const batchList = ref([])
	const total = ref(0)
	const totalCost = ref(0)
	const deptType = ref('')
	onLoad(() => {

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

			app.firstLoadCallback = () => {
				init()
			};
		}
	})

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


	function getList() {
		totalCost.value = 0
		api.getVerityList(queryParams.value).then(res => {
			const list = []
			_.each(res.rows, r => {
				const item = JSON.parse(r.content)
				item.recordId = r.recordId
				item.auditStatus = r.auditStatus
				item.isView = r.isView
				item.submitStatus = r.submitStatus
				item.distributeTime = r.distributeTime
				item.statusStr = statusArr[r.auditStatus]
				item.remark = r.remark
				item.cuLevels = r.cuLevels
				item.sourceData = r
				item.auditProcess = r.auditProcess
				item.checked = false
				console.log(item)
				list.push(item)
				totalCost.value += (item.totalAmount * 1)
			})
			infoList.value = list
			total.value = res.total
			uni.hideLoading()
		})
	}

	function goDetail(item) {
		if (item.status != '0') {
			let path = `/level/applyDetail?examId=${item.examId}`
			uni.navigateTo({
				url: path
			});
		} else {
			return
		}

	}
	function goApproval(){
		let path = `/level/approval`
		uni.redirectTo({
			url: path
		});
	}
	function goMergeUp(){
		// 合并提交
		let path = `/level/mergeUp`
		uni.redirectTo({
			url: path
		});
	}
	function checkThis(item) {
		if (item.checked) {
			item.checked = false
		} else {
			item.checked = true
		}
	}
	var ids = []

	function handleMerge() {
		batchList.value = []
		ids = []
		for (var n of infoList.value) {
			if (n.checked) {
				batchList.value.push(n)
				ids.push(n.recordId)
			}
		}
		if (batchList.value.length == 0) {
			uni.showToast({
				title: `请选择至少一条数据`,
				icon: 'none'
			})
			return
		}
		const mergeFlag = batchList.value.some(item => {
			if (item.auditStatus != '1') {
				return uni.showToast({
					title: `${item.examCode}审核未通过,无法合并`,
					icon: 'none'
				})
			}
		})
		uni.showModal({
			title: '提示',
			content: `确认合并已选中的数据?`,
			success: function(res) {
				if (res.confirm) {
					api.mergeRecords({
						body: ids.join(),
						type: queryParams.value.type
					}).then(res => {
						uni.showToast({
							title: `操作成功`
						})
						getList()
					})
				}
			}
		})

	}
</script>


<style scoped lang="scss">
	.mt0 {
		margin-top: 0 !important;
	}
	.appList .appItem{padding: 30rpx 30rpx 30rpx 120rpx;}
	.appList .appItem .name {
		width: 80%;
		word-break: break-all;
	}

	.icon {
		width: 60rpx;
		height: 60rpx;
		margin-right: 16rpx;
	}
</style>