merge.vue 5.9 KB
<template>
	<view class="text-center whitebg">
		<view class="cardNav">
			<view @click="goBack">审核</view>
			<view class="active">合并</view>
			<view @click="goMergeUp">提交</view>
		</view>
	</view>
	<view class="hasfixedbottom">
		<view class="vipData" v-show="total>0" style="flex-wrap: wrap;">
			<view class="w50">人数合计:<text>{{ statistical.personCount }}</text></view>
			<view class="w50">新会员合计:<text>{{ statistical.newPersonCount }}</text></view>
			<view class="w50">续费合计:<text>{{ statistical.oldPersonCount }}</text></view>
			<view class="w50">年限合计:<text>{{ statistical.totalYear }}</text></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 v-if="item.auditStatus==0">
						审核中
					</text>
					<text v-if="item.auditStatus==1" class="text-success">
						审核通过
					</text>
					<text v-if="item.auditStatus==2" class="text-danger">
						审核拒绝
					</text>
					<text v-if="item.auditStatus==3" class="text-warning">
						已撤回
					</text>
				</view>

				<view class="date" v-if="item.content.commitTime">提交日期:{{item.content.commitTime}}</view>
				<view class="text-primary" v-if="item.content?.wfCode" @click="goDetail(item)">{{item.content?.wfCode}}</view>
				<view class="name" @click="goDetail(item)">{{item.content.name}}</view>
				<view class="flexbox" @click="goDetail(item)">
					<view>
						人数合计
						<view>{{item.content.personCount}}</view>
					</view>
					<view>
						新会员
						<view>{{item.content.newPersonCount}}</view>
					</view>
					<view>
						续费
						<view>{{item.content.oldPersonCount}}</view>
					</view>
					<view>
						年限
						<view>{{item.content.totalYear}}</view>
					</view>
				</view>
			</view>
		</view>


		<view class="fixedBottom" v-if="infoList.length>0">
			<button @click="handleMerge" style="width: 40%;" class="btn-red">合并</button>
			<!-- <button @click="goMergeUp" class="btn-red-kx" style="width: 40%;">合并提交 > </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
		mergeFlag: 0,
		auditStatus: '1'
	})
	const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
	const infoList = ref([])
	const batchList = ref([])
	const total = ref(0)
	const statistical = ref({})
	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() {
		statistical.value = {
			personCount: 0,
			newPersonCount: 0,
			oldPersonCount: 0,
			totalYear: 0
		}
		api.getPerVerityList(queryParams.value).then(res => {
			infoList.value = res.rows
			for (var item of infoList.value) {
				item.content = JSON.parse(item.content)

				statistical.value.personCount += (item.content.personCount * 1)
				statistical.value.newPersonCount += (item.content.newPersonCount * 1)
				statistical.value.oldPersonCount += (item.content.oldPersonCount * 1)
				statistical.value.totalYear += (item.content.totalYear * 1)
			}
			total.value = res.total
			uni.hideLoading()
		})
	}

	function goDetail(item) {
		const form = encodeURIComponent(JSON.stringify(item))
		let path = `/personalVip/auditDetail?form=${form}`
		uni.navigateTo({
			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) {
					uni.showLoading({
						title: '加载中',
						mask: true
					})
					api.mergePayMentApi({ recordIds: ids}).then(resp => {
						// uni.showToast({
						// 	title: `操作成功`
						// })
						uni.hideLoading()
						uni.showModal({
							title: '提示',
							content: `合并完成,是否进行审核数据提交?`,
							success: function(resp) {
								if (resp.confirm) {
									goMergeUp()
								}
							}
						})
						getList()
					})
				}
			}
		})

	}
	function goBack() {
		let path = `/personalVip/audit`
		uni.redirectTo({
			url: path
		});
	}
	function goMergeUp() {
		// 合并提交
		let path = `/personalVip/sheng/mergeUp`
		uni.redirectTo({
			url: path
		});
	}
</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>