applyList.vue 9.85 KB
<template>
	<view>
		<view class="text-center whitebg" v-if="userType=='2'">
			<view class="cardNav">
				<view class="active">审核</view>
				<view @click="goMerge">合并</view>
				<view @click="goMergeUp">提交</view>
			</view>
		</view>
		<!--  团队会员审核 -->
		<uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
			styleType="text" activeColor="#AD181F"></uni-segmented-control>
		<view class="appList">
			<view class="vipData" v-if="userType == '1'" v-show="totalCost>0">
				<view>费用合计:
					<text>¥{{ totalCost.toFixed(2) }}</text>
				</view>
			</view>

			<view class="appItem" v-for="(item,index) in list" :key="index">
				<view class="status" @click="goDetail(item)">
					<text v-if="item.auditStatus == 0" class="text-primary">审核中</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">
					<uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
					{{item.content.commitTime}} 提交
				</view>
				<view class="text-primary" @click="goDetail(item)" v-if="item.content?.wfCode">{{item.content?.wfCode}}
				</view>
				<view class="name w100 mt0" @click="goDetail(item)">
					<!-- <text class="dot"></text> -->
					{{item.content.certName}}
				</view>
				<view class="flexbox" @click="goDetail(item)">
					<view v-if="userType == '3'">
						所属省份
						<view>{{item.content.province}}</view>
					</view>
					<view v-if="userType == '2'">
						所属一级
						<view>{{item.content.firstDeptName}}</view>
					</view>
					<view v-if="userType == '2'">
						所属二级
						<view>{{item.content.secondDeptName}}</view>
					</view>

					<view v-if="deptType == 1">
						会员/新会员/年限
						<view>{{item.content.allCount}}/<text
								class="text-danger">{{item.content.newCount}}</text>/{{item.content.renewYear}}
						</view>
					</view>
					<view v-else>
						年限
						<view>{{item.content.renewYear}}</view>
					</view>
					<view v-if="deptType == 1">
						费用合计
						<view> ¥{{ (item?.content?.allFee*1).toFixed(2) }}</view>
					</view>
					<view v-if="deptType == 1" @click.stop="viewSettleFile(item.doc)">
						缴费状态
						<view>
							<text v-if="item.doc?.settleFlag==0" class="text-warning">已结算</text> 
							<text v-if="item.doc?.settleFlag==1&&item.doc.payFlag==0" class="text-success">已上传</text> 
							<text v-if="item.doc?.settleFlag==1&&item.doc.payFlag==1" class="text-danger">未上传</text> 
						</view>
					</view>
				</view>
				<view class="func" v-if="(userType == '1'&&item.auditStatus == 0)">
					<button @click="audit(item.recordId,'0')">拒绝</button>
					<button @click="audit(item.recordId,'1')">同意</button>
				</view>
				<!-- 中跆协 -->
				<view class="func" v-if="(userType == '1'&&item.auditStatus == 1&&item.canTui==1)">
					<button @click="sendBack(item)">撤回</button>
				</view>
				<!-- 市 -->
				<view class="func" v-if="userType == '3'">
					<button @click="goGroupInfo(item)">机构资料</button>
					<button v-if="item.auditStatus == 1&&item.isView==1&&item.content.allCount > 0"
						@click="sendBack(item)">撤回</button>
					<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'0')">拒绝</button>
					<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'1')">同意</button>

				</view>
				<!-- 省 -->
				<view class="func" v-if="userType == '2'">
					<button @click="goGroupInfo(item)">机构资料</button>
					<button v-if="item.auditStatus == 1" @click="sendBack(item)">撤回</button>
					<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'0')">拒绝</button>
					<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'1')">同意</button>
				</view>
			</view>
		</view>

		<view class="nodata" v-if="list.length==0">
			<image mode="aspectFit" src="/static/nodata.png"></image>
			<text>暂无数据</text>
		</view>
		<!-- 		<view v-if="userType=='2'" class="block-btn-box">
			<button @click="goMerge" class="btn-red-kx">前往合并 > </button>
		</view> -->
	</view>
</template>

<script setup>
	import * as api from '@/common/api.js'
	import config from '@/config.js'
	import {
		onMounted,
		ref
	} from 'vue'
	import {
		onLoad
	} from '@dcloudio/uni-app'
	const app = getApp();
	const queryParams = ref({
		// pageNum: 1,
		// pageSize: 10
		auditStatus: '0'
	})
	const navs = ref(['审核中', '审核通过', '审核拒绝', '撤回'])
	const current = ref()
	const list = ref([])
	const total = ref(0)
	const deptType = ref('')
	const userType = ref('')
	const totalCost = ref(0)
	onLoad(() => {
		if (app.globalData.isLogin) {
			init()
		} else {

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

	function init() {
		deptType.value = app.globalData.deptType
		userType.value = app.globalData.userType
		// console.log(userType.value)
		getList()
	}

	function onClickItem(e) {
		console.log(e)
		queryParams.value.auditStatus = e.currentIndex
		getList()
	}

	function getList() {
		uni.showLoading({
			title: '加载中',
			mask: true
		})
		if (deptType.value == 2 || deptType.value == 3) {
			// 省
			queryParams.value.mergeFlag = 0
		} else if (deptType.value == 1) {
			queryParams.value.noEmpty = 1
		} else if (deptType.value == 4 || deptType.value == 5) {
			queryParams.value.noEmpty = 1
		}
		totalCost.value = 0
		api.getGroupList(queryParams.value).then(res => {
			uni.hideLoading()
			list.value = res.rows
			list.value.forEach(item => {
				item.content = JSON.parse(item.content)
				if(item.doc){
					item.doc = JSON.parse(item.doc)
				}
				totalCost.value = totalCost.value + (item.content.allFee * 1)
			})
			total.value = res.total
		})
	}

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

	function doApproval(recordId, flag, reason) {
		var obj = {
			flag: flag,
			reason: reason || '',
			recordIds: []
		}
		obj.recordIds.push(recordId)
		console.log(obj)
		uni.showLoading({
			title: '加载中',
			mask: true
		})
		api.groupAudit(obj).then((res) => {
			uni.hideLoading()
			uni.showToast({
				title: '操作成功',
				icon: 'none'
			})
			getList()
		})
	}

	function goDetail(item) {
		const auditLog = encodeURIComponent(JSON.stringify(item.auditLog))
		const form = encodeURIComponent(JSON.stringify(item))

		if (userType.value == '1') {
			// 查看
			let path = `/group/apply/mergeUpDetail?form=${form}`
			uni.navigateTo({
				url: path
			});
		} else if (userType.value == '2' || userType.value == '3') {
			// 审核记录
			let path = `/group/apply/record?certId=${item.content.certId}`
			uni.navigateTo({
				url: path
			});
		}
	}

	function goMerge() {
		let path = `/group/apply/merge`
		uni.redirectTo({
			url: path
		});
	}

	function goMergeUp() {
		let path = `/group/apply/mergeUp`
		uni.redirectTo({
			url: path
		});
	}

	function sendBack(row) {
		uni.showModal({
			title: '提示',
			content: `确定撤回${row.content.certName}吗`,
			success: function(res) {
				if (res.confirm) {
					api.certifiedwithDraw({
						recordId: row.recordId,
						reason: row.reason
					}).then(res => {
						uni.showToast({
							title: '操作成功',
							icon: 'none'
						})
						getList()
					})

				}
			}
		})
	}

	function goGroupInfo(row) {
		uni.navigateTo({
			url: `/group/groupInfo?memId=${row.content?.memId}`
		})
	}
	
	function viewSettleFile(doc){
		let url
		if(doc.payEvidence){
			url = JSON.parse(doc.payEvidence)[0].url || null
			console.log(url)
			if(url){showImg(url)}
		}
	}
	function showImg(n) {
		var str = ''
		if(n.indexOf('http')==-1){
			str = config.baseUrl_api + n
		} else {
			str = n
		}
		
		if (n.indexOf('png') > -1 || n.indexOf('jpg') > -1 || n.indexOf(
				'jpeg') > -1) {
			uni.previewImage({
				urls: [str],
				success: function(res) {
					console.log('success', res)
				},
				fail: function(res) {
					console.log('fail', res)
				},
				complete: function(res) {
					console.log('complete', res)
				}
			})
		} else {
			goWebView(str)
		}
	}
	function goWebView(url) {
		url = url.replace("http://", "https://")
		uni.showLoading({
			title: '下载中'
		});
		uni.downloadFile({
			url: url,
			success: function(res) {
				uni.hideLoading();
				var filePath = res.tempFilePath;
				uni.showLoading({
					title: '正在打开'
				});
				uni.openDocument({
					filePath: filePath,
					showMenu: true,
					success: function(res) {
						uni.hideLoading();
					},
					fail: function(err) {
						uni.hideLoading();
						uni.showToast({
							title: err,
							icon: 'none',
							duration: 2000
						});
					}
				});
			},
			fail: function(error) {
				uni.hideLoading();
				uni.showToast({
					title: `下载失败`,
					icon: 'none',
					duration: 2000
				});
			}
		});
	}
</script>

<style scoped>
	.mt0 {
		margin-top: 0 !important;
	}

	.appList .appItem .name {
		width: 80%;
		word-break: break-all;
	}
</style>