mobilize.vue 8.56 KB
<template>
	<view>
		<!-- 会员调动 -->
		<uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
			styleType="text" activeColor="#AD181F"></uni-segmented-control>

		<view class="searchbar" v-if="deptType == 6">
			<uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
				v-model="queryParams.name" placeholder="搜索调动名称" @blur="getList" @clear="getList">
			</uni-easyinput>
			<view class="invertedbtn-red" @click="goAddMobilize">+ 新建调动</view>
		</view>

		<view class="appList">
			<view class="appItem" v-for="(item,index) in list" :key="index">
				<view class="status" @click="goDetail(item)">
					<view v-if="deptType == 1">
						<text v-if="item.ztxRes == 0">审核中</text>
						<text v-if="item.ztxRes == 1" class="text-success">审核通过</text>
						<text v-if="item.ztxRes == 2" class="text-danger">审核拒绝</text>
						<text v-if="item.ztxRes == 3" class="text-warning">撤销申请</text>
					</view>

					<view v-if="deptType == 2 || deptType == 3">
						<text v-if="item.shenRes == 0" class="text-primary">审核中</text>
						<text v-if="item.shenRes == 1" class="text-success">审核通过</text>
						<text v-if="item.shenRes == 2" class="text-danger">审核拒绝</text>
						<text v-if="item.shenRes == 3" class="text-warning">撤销申请</text>
					</view>

					<view v-if="deptType == 6">
						<text v-if="item.status == 0">待提交</text>
						<text v-if="item.status == 1" class="text-primary">审核中</text>
						<text v-if="item.status == 2" class="text-warning">审核拒绝</text>
						<text v-if="item.status == 3" class="text-success">审核通过</text>
						<text v-if="item.status == 4" class="text-danger">已撤回</text>
					</view>
				</view>

				<view class="name mt0" @click="goDetail(item)">
					{{item.name}}
				</view>
				<view class="flexbox" @click="goDetail(item)" v-if="deptType == 1 || deptType == 2 || deptType == 3">
					<view class="w50">
						申请调入单位
						<view><text>{{item.targetDeptName}}</text></view>
					</view>
					<!-- 					
					<view>
						调动类型
						<view v-if="item.type == 1">
							<text class="text-danger">省外调动</text>
						</view>
						<view v-else>
							<text class="text-primary">省内调动</text>
						</view>
					</view> -->

					<view class="w50">
						会员合计
						<view>{{item.personCount}}</view>
					</view>
				</view>
				<view v-else class="pp">
					会员合计:
					<text class="text-primary">{{item.personCount}}</text>
				</view>
				<view class="func"
					v-if="(deptType == 1&&item.ztxRes == 0)||((deptType == 2 || deptType == 3)&&item.shenRes == 0)">
					<button @click="audit(item.id,'2')">拒绝</button>
					<button @click="audit(item.id,'1')">同意</button>
				</view>
				<view class="func" v-if="(deptType == 6&&(item.status == 0 || item.status == 2))">
					<button @click="del(item)">删除</button>
					<button @click="editThis(item)">编辑</button>
					<button v-if="item.status == 0 || item.status == 2" @click="handleSubmit(item)">提交审核</button>
				</view>
			</view>
		</view>



		<view class="nodata" v-if="list.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 {
		onMounted,
		ref
	} from 'vue'
	import {
		onLoad,
		onShow
	} from '@dcloudio/uni-app'
	const app = getApp();
	const queryParams = ref({
		// pageNum: 1,
		// pageSize: 10
	})
	const navs = ref(['未提交', '审核中', '审核通过', '审核拒绝'])
	const current = ref()
	const list = ref([])
	const total = ref(0)
	const deptType = ref('')
	onLoad(() => {
		if (app.globalData.isLogin) {
			init()
		} else {

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

	function init() {
		deptType.value = app.globalData.deptType
		if (deptType.value == 2 || deptType.value == 3) {
			queryParams.value.dgId = -1
			queryParams.value.shenRes = '0'
			navs.value = ['审核中', '审核通过', '审核拒绝']
		}
		if (deptType.value == 1) {
			queryParams.value.dgId = -2
			queryParams.value.ztxRes = '0'
			navs.value = ['审核中', '审核通过', '审核拒绝']
		}
		if (deptType.value == 6) {
			queryParams.value.dgId = 1
			queryParams.value.status = '0'
			navs.value = ['未提交', '审核中', '审核拒绝', '审核通过']
		}
		getList()
	}

	function onClickItem(e) {
		console.log(e)
		if (deptType.value == 2 || deptType.value == 3) {
			queryParams.value.dgId = -1
			queryParams.value.shenRes = e.currentIndex
		}
		if (deptType.value == 1) {
			queryParams.value.dgId = -2
			queryParams.value.ztxRes = e.currentIndex
		}
		if (deptType.value == 6) {
			queryParams.value.dgId = 1
			queryParams.value.status = e.currentIndex
		}
		getList()
	}

	function getList() {
		uni.showLoading({
			title: '加载中',
			mask: true
		})
		api.getMobilizelist(queryParams.value).then(res => {
			uni.hideLoading()
			list.value = res.rows
			list.value.forEach(item => {
				if (item.status == 0) {
					item.schedule = 0
				}
				if (item.status == 1 || item.status == 2) {
					if (item.shenRes == 0) {
						item.schedule = 0
					}
					if (item.shenRes == 1) {
						item.type == 1 ? item.schedule = 50 : item.schedule = 100
						if (item.ztxRes == 1) {
							item.schedule = 100
						}
					}
					if (item.shenRes == 2) {
						item.type == 1 ? item.schedule = 50 : item.schedule = 0
					}
				}
				if (item.status == 3) {
					item.schedule = 100
				}
			})
			total.value = res.total
		})
	}

	function goAddMobilize() {
		let path = `/personalVip/addMobilize`
		uni.navigateTo({
			url: path
		});
	}

	function editThis(item) {
		let path = `/personalVip/addMobilize?rangId=${item.id}`
		uni.navigateTo({
			url: path
		});
	}
	function handleSubmit(row){
		uni.showModal({
			title: '提示',
			content: `确定提交吗`,
			success: function(res) {
				if (res.confirm) {
					api.commit([row.id]).then(Response=>{
						uni.showToast({
							icon:"none",
							title:'提交成功!'
						})
						getList()
					})
				}
			}
		})
	}
	function del(row){
		uni.showModal({
			title: '提示',
			content: `确定删除吗`,
			success: function(res) {
				if (res.confirm) {
					api.delMobilize(row.id).then(Response=>{
						uni.showToast({
							icon:"none",
							title:'删除成功!'
						})
						getList()
					})
				}
			}
		})
	}
	function audit(rangeId, flag) {
		if (flag == '2') {
			// 拒绝
			// 弹出框填写理由
			uni.showModal({
				title: '请输入拒绝理由',
				editable: true,
				success: function(res) {
					if (res.confirm) {
						if (!res.content) {
							uni.showToast({
								title: '请输入拒绝理由',
								icon: 'none'
							})
						} else {
							doApproval(rangeId, flag, res.content)
						}
					}
				}
			})
		} else if (flag == '1') {
			// 二次确认
			uni.showModal({
				title: '提示',
				content: `确定审批通过吗`,
				success: function(res) {
					if (res.confirm) {
						doApproval(rangeId, flag)
					}
				}
			})
		}
	}

	function doApproval(rangeId, flag, reason) {
		var obj = {
			flag: flag,
			reason: reason || '',
			rangeIds: rangeId
		}
		console.log(obj)
		uni.showLoading({
			title: '加载中',
			mask: true
		})
		api.mobilizeAudit(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))

		let path = `/personalVip/mobilizeDetail?rangeId=${item.id}&auditLog=${auditLog}&form=${form}`
		uni.navigateTo({
			url: path
		});
	}
</script>

<style scoped lang="scss">
	.searchbar {
		display: flex;
		align-items: center;
		padding: 25rpx;
		box-sizing: border-box;

		:deep(.uni-easyinput .uni-easyinput__content) {
			border-radius: 35rpx;
			border: none;
			height: 70rpx;
		}

		:deep(.uni-easyinput__content-input) {
			font-size: 26rpx;
		}

		.invertedbtn-red {
			border-radius: 50px;
			background-color: #fff;

			font-size: 30rpx;
			padding: 10rpx 20rpx;
		}
	}

	.mt0 {
		margin-top: 0 !important;
	}

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