mergeUp.vue 5.81 KB
<template>
	<view>
		<view class="text-center whitebg">
			<view class="cardNav">
				<view @click="goApproval">审核</view>
				<view @click="goMerge">合并</view>
				<view class="active">提交</view>
			</view>
		</view>
		<!--  级位合并提交 -->
		<uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
			styleType="text" activeColor="#AD181F"></uni-segmented-control>
		<view v-show="total>0" class="vipData">
			<view>费用合计:<text>{{ statistical.totalCost?.toFixed(2) }}</text></view>
			<view>考试人数合计:<text>{{ statistical.totalNum }}</text></view>
		</view>
		<view class="appList">
			<view class="appItem" v-for="(item,index) in infoList" :key="index">
				<view class="status" @click="goDetail(item)">
					<view :class="{
                'text-success':item.status=='1',
                'text-danger':item.status=='2',
                'text-warning':item.status=='3'
              }">
						{{ item.auditStatus=='100'?'待提交':statusArr[item.status] }}
					</view>
				</view>
				<view class="date" v-if="item.handleDate">{{item.handleDate}}</view>
				<view v-if="item.flowCode" class="text-primary">{{item.flowCode}}</view>
				<view class="name mt0" @click="goDetail(item)">{{item.mergeName}}</view>
				<view class="flexbox" @click="goDetail(item)">
					<view>
						考试人数
						<view>{{item.totalNum}}</view>
					</view>
					<view>
						合并日期
						<view>{{item.mergeTime.slice(0,16)}}</view>
					</view>
					<view>
						总金额
						<view>¥{{item.totalAmount}}</view>
					</view>
				</view>

				<view class="func" v-if="item.auditStatus == 100">
					<button @click="handleAudit(item)">提交</button>
					<button @click="handleCancel(item)">取消合并</button>
				</view>
				<view class="func" v-if="(item.isView=='1' && item.auditStatus=='1') || item.payStatus=='3'">
					<button @click="handleBack(item)">撤回</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 api from '@/common/api.js'
	import config from '@/config.js'
	import _ from 'underscore'
	import {
		ref
	} from 'vue'
	import {
		onLoad
	} from '@dcloudio/uni-app'
	const app = getApp();
	const queryParams = ref({
		// pageNum: 1,
		// pageSize: 10,
		status: '100',
		type: '1'
	})
	const navs = ref(['待提交', '审核中', '审核通过', '审核拒绝'])
	const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
	const current = ref()
	const list = ref([])
	const infoList = ref([])
	const statistical = ref({})
	const total = ref(0)
	const deptType = ref('')
	const userType = ref('')
	onLoad(() => {
		if (app.globalData.isLogin) {
			init()
		} else {

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

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

	function onClickItem(e) {
		console.log(e)
		switch (e.currentIndex) {
			case 0:
				queryParams.value.status = 100
				break;
			case 1:
				queryParams.value.status = 0
				break;
			case 2:
				queryParams.value.status = 1
				break;
			case 3:
				queryParams.value.status = 2
				break;
		}
		getList()
	}

	function getList() {
		uni.showLoading({
			title: '加载中'
		})
		statistical.value = {
			totalCost: 0,
			totalNum: 0
		}
		api.getVerityMergeList(queryParams.value).then(response => {
			uni.hideLoading()
			const list = []
			_.each(response.rows, r => {
				const item = JSON.parse(r.remark)
				item.recordId = r.recordId
				item.auditStatus = r.auditStatus
				item.status = r.status
				item.isView = r.isView
				item.payStatus = r.payStatus
				item.sourceData = r
				item.auditProcess = r.auditProcess
				item.handleDate = r.handleDate
				list.push(item)

				statistical.value.totalCost += (item.totalAmount * 1)
				statistical.value.totalNum += (item.totalNum * 1)

			})
			infoList.value = list
			total.value = response.total
		})
	}
	function handleBack(row){
		uni.showModal({
			title: '请输入撤回理由',
			editable: true,
			success: function(res) {
				if (res.confirm) {
					if (!res.content) {
						uni.showToast({
							title: '请输入撤回理由',
							icon: 'none'
						})
					} else {
						var obj = {
						        flag: '2',
						        reason: res.content,
						        recordId: row.recordId
						}
						api.doVerityBack(obj).then(rr=>{
							uni.showToast({
								title: '操作成功',
								icon: 'none'
							})
							getList()
						})
					}
				}
			}
		})
	}
	function handleCancel(item) {
		uni.showModal({
			title: '提示',
			content: `确定取消合并${item.mergeName}?`,
			success: function(res) {
				if (res.confirm) {
					api.cancelMerge(item.recordId).then(res => {
						uni.showToast({
							title: `操作成功!`
						})
						getList()
					})
				}
			}
		})
	}

	function handleAudit(item) {
		uni.showModal({
			title: '提示',
			content: `确定提交${item.mergeName}?`,
			success: function(res) {
				if (res.confirm) {
					api.doMergeFlows({
						id: item.recordId,
						flag: '1',
						type: queryParams.value.type
					}).then(res => {
						uni.showToast({
							title: `操作成功!`
						})
						getList()
					})
				}
			}
		})
	}

	function goDetail(item) {
		const form = JSON.stringify(item)
		// 查看
		let path = `/level/mergeUpDetail?form=${form}&type=1`
		uni.navigateTo({
			url: path
		});

	}

	function goApproval() {
		let path = `/level/approval`
		uni.redirectTo({
			url: path
		});
	}

	function goMerge() {
		let path = `/level/merge`
		uni.redirectTo({
			url: path
		});
	}
</script>

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

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