|  | @@ -0,0 +1,293 @@
 | 
											
												
													
														|  | 
 |  | +<template>
 | 
											
												
													
														|  | 
 |  | +	<view class="page-wrap">
 | 
											
												
													
														|  | 
 |  | +		<view class="search-wrap">
 | 
											
												
													
														|  | 
 |  | +			<uni-search-bar class="search" @confirm="search" v-model="keywords" @clear="search"></uni-search-bar>
 | 
											
												
													
														|  | 
 |  | +			<uni-data-select class="select"   v-model="reportingTypeId" :localdata="types" placeholder="请选择类别" @change="search"></uni-data-select>
 | 
											
												
													
														|  | 
 |  | +		</view>
 | 
											
												
													
														|  | 
 |  | +		<view class="addbt" @click="handle({type:'add'})">
 | 
											
												
													
														|  | 
 |  | +			<view class="word">事件上报</view>
 | 
											
												
													
														|  | 
 |  | +		</view>
 | 
											
												
													
														|  | 
 |  | +		<view class="pageMain">
 | 
											
												
													
														|  | 
 |  | +			<uni-swipe-action class="item-action-box">
 | 
											
												
													
														|  | 
 |  | +				<uni-card padding="10px 0" margin="5px 0" v-for="item in items" :key="item.reportingId">
 | 
											
												
													
														|  | 
 |  | +					<uni-swipe-action-item class="item-action" :auto-close="true">
 | 
											
												
													
														|  | 
 |  | +						<template v-slot:right>
 | 
											
												
													
														|  | 
 |  | +							<view class="slot-button">
 | 
											
												
													
														|  | 
 |  | +								<view class="bt edit" @click="handle({type:'edit',item})"><text class="slot-button-text">编辑</text></view>
 | 
											
												
													
														|  | 
 |  | +								<view class="bt del" @click="handle({type:'del',item})"><text class="slot-button-text">删除</text></view>
 | 
											
												
													
														|  | 
 |  | +							</view>
 | 
											
												
													
														|  | 
 |  | +						</template>
 | 
											
												
													
														|  | 
 |  | +						<view class="item" @click="handle({type:'detail',item})">
 | 
											
												
													
														|  | 
 |  | +							<view class="title">
 | 
											
												
													
														|  | 
 |  | +								<view class="name">{{item.reportingSubject}}</view>									
 | 
											
												
													
														|  | 
 |  | +							</view>
 | 
											
												
													
														|  | 
 |  | +							<view class="tagbox">								
 | 
											
												
													
														|  | 
 |  | +								<uni-tag :text="item.reportingTypeTitle" custom-style="background-color: #ecf5ff; border-color: #d9ecff; color: #409eff;"></uni-tag>								
 | 
											
												
													
														|  | 
 |  | +							</view>
 | 
											
												
													
														|  | 
 |  | +							<view class="icon-item">
 | 
											
												
													
														|  | 
 |  | +								<image class="icon" src="/static/images/time.png" mode="widthFix"></image>
 | 
											
												
													
														|  | 
 |  | +								<text class="word">{{item.reportingTime}}</text>
 | 
											
												
													
														|  | 
 |  | +							</view>	
 | 
											
												
													
														|  | 
 |  | +							<view class="icon-item">
 | 
											
												
													
														|  | 
 |  | +								<image class="icon" src="/static/images/admin_icon.png" mode="widthFix"></image>
 | 
											
												
													
														|  | 
 |  | +								<text class="word">{{item.reportingGroupName}}</text>
 | 
											
												
													
														|  | 
 |  | +							</view>	
 | 
											
												
													
														|  | 
 |  | +						</view>
 | 
											
												
													
														|  | 
 |  | +					</uni-swipe-action-item>
 | 
											
												
													
														|  | 
 |  | +				</uni-card>
 | 
											
												
													
														|  | 
 |  | +			</uni-swipe-action>
 | 
											
												
													
														|  | 
 |  | +		</view>
 | 
											
												
													
														|  | 
 |  | +		<Detail ref="detail"></Detail>
 | 
											
												
													
														|  | 
 |  | +		<Edit ref="edit" @success="search"></Edit>	
 | 
											
												
													
														|  | 
 |  | +		<Report ref="report" @success="search"></Report>			
 | 
											
												
													
														|  | 
 |  | +	</view>
 | 
											
												
													
														|  | 
 |  | +</template>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +<script>
 | 
											
												
													
														|  | 
 |  | +	import reportingApi from '@/api/reporting.js'
 | 
											
												
													
														|  | 
 |  | +	import Report from './components/Report.vue'
 | 
											
												
													
														|  | 
 |  | +	import Detail from './components/Detail.vue'
 | 
											
												
													
														|  | 
 |  | +	import Edit from './components/Edit.vue'	
 | 
											
												
													
														|  | 
 |  | +	export default {
 | 
											
												
													
														|  | 
 |  | +		components:{
 | 
											
												
													
														|  | 
 |  | +			Report,
 | 
											
												
													
														|  | 
 |  | +			Detail,
 | 
											
												
													
														|  | 
 |  | +			Edit
 | 
											
												
													
														|  | 
 |  | +		},
 | 
											
												
													
														|  | 
 |  | +		computed:{
 | 
											
												
													
														|  | 
 |  | +			types(){
 | 
											
												
													
														|  | 
 |  | +				return this.reportingTypes.map(item=>{
 | 
											
												
													
														|  | 
 |  | +					return{
 | 
											
												
													
														|  | 
 |  | +						...item,
 | 
											
												
													
														|  | 
 |  | +						value:item.reportingTypeId,
 | 
											
												
													
														|  | 
 |  | +						text:item.reportingTypeTitle
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +				})
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +		},
 | 
											
												
													
														|  | 
 |  | +		data() {
 | 
											
												
													
														|  | 
 |  | +			return {
 | 
											
												
													
														|  | 
 |  | +				items:[],
 | 
											
												
													
														|  | 
 |  | +				reportingTypes:uni.getStorageSync('reportingTypes')||[],
 | 
											
												
													
														|  | 
 |  | +				page:1,	
 | 
											
												
													
														|  | 
 |  | +				limit:10,
 | 
											
												
													
														|  | 
 |  | +				total:0,	
 | 
											
												
													
														|  | 
 |  | +				keywords:""	,
 | 
											
												
													
														|  | 
 |  | +				reportingTypeId:undefined
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +		},
 | 
											
												
													
														|  | 
 |  | +		onShow() {
 | 
											
												
													
														|  | 
 |  | +			this.init()
 | 
											
												
													
														|  | 
 |  | +			this.getData()
 | 
											
												
													
														|  | 
 |  | +		},
 | 
											
												
													
														|  | 
 |  | +		methods: {
 | 
											
												
													
														|  | 
 |  | +			init(){
 | 
											
												
													
														|  | 
 |  | +				if(!uni.getStorageSync('reportingTypes')){
 | 
											
												
													
														|  | 
 |  | +					reportingApi.getTypeByList().then((res)=>{
 | 
											
												
													
														|  | 
 |  | +						uni.setStorageSync('reportingTypes',res.data)
 | 
											
												
													
														|  | 
 |  | +						this.reportingTypes=res.data
 | 
											
												
													
														|  | 
 |  | +					})
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +			},
 | 
											
												
													
														|  | 
 |  | +			search(){
 | 
											
												
													
														|  | 
 |  | +				this.resetFilter()
 | 
											
												
													
														|  | 
 |  | +				this.getData()
 | 
											
												
													
														|  | 
 |  | +			},
 | 
											
												
													
														|  | 
 |  | +			getData(){
 | 
											
												
													
														|  | 
 |  | +				const items=JSON.parse(JSON.stringify(this.items))
 | 
											
												
													
														|  | 
 |  | +				let params={
 | 
											
												
													
														|  | 
 |  | +					page:this.page,
 | 
											
												
													
														|  | 
 |  | +					limit:this.limit,
 | 
											
												
													
														|  | 
 |  | +					keywords:this.keywords,
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +				if(this.reportingTypeId){params.reportingTypeId=this.reportingTypeId}
 | 
											
												
													
														|  | 
 |  | +				reportingApi.getByPage(params).then((res)=>{
 | 
											
												
													
														|  | 
 |  | +					this.items=items.concat(res.data)
 | 
											
												
													
														|  | 
 |  | +					this.total=res.total
 | 
											
												
													
														|  | 
 |  | +				})
 | 
											
												
													
														|  | 
 |  | +			},
 | 
											
												
													
														|  | 
 |  | +			handle({type,item}){
 | 
											
												
													
														|  | 
 |  | +				const self=this;
 | 
											
												
													
														|  | 
 |  | +				if(type==='del'){
 | 
											
												
													
														|  | 
 |  | +					uni.showModal({
 | 
											
												
													
														|  | 
 |  | +						title: '提示',
 | 
											
												
													
														|  | 
 |  | +						content: '是否确定删除',
 | 
											
												
													
														|  | 
 |  | +						success: function (res) {
 | 
											
												
													
														|  | 
 |  | +							if (res.confirm) {
 | 
											
												
													
														|  | 
 |  | +								reportingApi.deleteById(item.reportingId).then(()=>{
 | 
											
												
													
														|  | 
 |  | +									uni.showToast({
 | 
											
												
													
														|  | 
 |  | +										title:'删除成功!',
 | 
											
												
													
														|  | 
 |  | +										icon:'none'
 | 
											
												
													
														|  | 
 |  | +									})
 | 
											
												
													
														|  | 
 |  | +									self.resetFilter()
 | 
											
												
													
														|  | 
 |  | +									self.getData()
 | 
											
												
													
														|  | 
 |  | +								})
 | 
											
												
													
														|  | 
 |  | +					
 | 
											
												
													
														|  | 
 |  | +							}
 | 
											
												
													
														|  | 
 |  | +						}
 | 
											
												
													
														|  | 
 |  | +					});
 | 
											
												
													
														|  | 
 |  | +				}else{
 | 
											
												
													
														|  | 
 |  | +					if(type==='detail'){
 | 
											
												
													
														|  | 
 |  | +						this.$refs.detail.show(item)
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +					if(type==='edit'){
 | 
											
												
													
														|  | 
 |  | +						this.$refs.edit.show({type:"edit",item})
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +					if(type==='add'){
 | 
											
												
													
														|  | 
 |  | +						this.$refs.report.show()
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +			},
 | 
											
												
													
														|  | 
 |  | +			resetFilter(){
 | 
											
												
													
														|  | 
 |  | +				this.page = 1
 | 
											
												
													
														|  | 
 |  | +				this.limit = 10
 | 
											
												
													
														|  | 
 |  | +				this.total = 0
 | 
											
												
													
														|  | 
 |  | +				this.items=[]
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +		},
 | 
											
												
													
														|  | 
 |  | +		onReachBottom() {
 | 
											
												
													
														|  | 
 |  | +			if(this.total>this.limit*this.page){
 | 
											
												
													
														|  | 
 |  | +				this.page++
 | 
											
												
													
														|  | 
 |  | +				this.getData()				
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +</script>
 | 
											
												
													
														|  | 
 |  | +<style lang="scss" scoped>
 | 
											
												
													
														|  | 
 |  | +.page-wrap{
 | 
											
												
													
														|  | 
 |  | +	padding:0 20rpx;
 | 
											
												
													
														|  | 
 |  | +	.search-wrap{
 | 
											
												
													
														|  | 
 |  | +		margin: 5px 0;
 | 
											
												
													
														|  | 
 |  | +		padding: 0 5px;
 | 
											
												
													
														|  | 
 |  | +		box-shadow: 0px 0px 3px 1px rgba(0, 0, 0, 0.08);
 | 
											
												
													
														|  | 
 |  | +		display: flex;
 | 
											
												
													
														|  | 
 |  | +		justify-content: space-between;
 | 
											
												
													
														|  | 
 |  | +		align-items: center;
 | 
											
												
													
														|  | 
 |  | +		flex-wrap: wrap;
 | 
											
												
													
														|  | 
 |  | +		background-color: #fff;
 | 
											
												
													
														|  | 
 |  | +		.search{
 | 
											
												
													
														|  | 
 |  | +			flex: 1;
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		.select{
 | 
											
												
													
														|  | 
 |  | +			width: 240rpx;
 | 
											
												
													
														|  | 
 |  | +			margin-top: 10rpx;
 | 
											
												
													
														|  | 
 |  | +			flex-shrink: 0;
 | 
											
												
													
														|  | 
 |  | +			margin-left: 10rpx;
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	.addbt{
 | 
											
												
													
														|  | 
 |  | +		width: 100rpx;
 | 
											
												
													
														|  | 
 |  | +		height: 100rpx;
 | 
											
												
													
														|  | 
 |  | +		border-radius: 50%;
 | 
											
												
													
														|  | 
 |  | +		color: #fff;
 | 
											
												
													
														|  | 
 |  | +		background-color: rgba(64,158,255,0.7);			
 | 
											
												
													
														|  | 
 |  | +		box-shadow:0 0 10rpx rgba(0,0,0,0.4);
 | 
											
												
													
														|  | 
 |  | +		position: fixed;
 | 
											
												
													
														|  | 
 |  | +		right: 10rpx;
 | 
											
												
													
														|  | 
 |  | +		bottom: 20%;
 | 
											
												
													
														|  | 
 |  | +		z-index: 99;
 | 
											
												
													
														|  | 
 |  | +		text-align: center;
 | 
											
												
													
														|  | 
 |  | +		display: flex;
 | 
											
												
													
														|  | 
 |  | +		justify-content: center;
 | 
											
												
													
														|  | 
 |  | +		align-items: center;
 | 
											
												
													
														|  | 
 |  | +		.word{
 | 
											
												
													
														|  | 
 |  | +			width: 80rpx;
 | 
											
												
													
														|  | 
 |  | +			height: 80rpx;
 | 
											
												
													
														|  | 
 |  | +			border-radius: 50%;
 | 
											
												
													
														|  | 
 |  | +			margin: 5rpx auto;
 | 
											
												
													
														|  | 
 |  | +			font-size: 28rpx;
 | 
											
												
													
														|  | 
 |  | +			letter-spacing: 2px;
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	.pageMain{
 | 
											
												
													
														|  | 
 |  | +		margin-top: 20rpx;
 | 
											
												
													
														|  | 
 |  | +		background-color: #f5f5f5;
 | 
											
												
													
														|  | 
 |  | +		padding-bottom: 50rpx;
 | 
											
												
													
														|  | 
 |  | +		.item{
 | 
											
												
													
														|  | 
 |  | +			.title{
 | 
											
												
													
														|  | 
 |  | +				display: flex;
 | 
											
												
													
														|  | 
 |  | +				justify-content: space-between;
 | 
											
												
													
														|  | 
 |  | +				align-items: center;
 | 
											
												
													
														|  | 
 |  | +				.name{
 | 
											
												
													
														|  | 
 |  | +					font-size: 36rpx;
 | 
											
												
													
														|  | 
 |  | +					color: #222222;
 | 
											
												
													
														|  | 
 |  | +					font-weight: 500;
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +				.num{
 | 
											
												
													
														|  | 
 |  | +					font-size: 32rpx;
 | 
											
												
													
														|  | 
 |  | +					color: #424242;
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			.tagbox{
 | 
											
												
													
														|  | 
 |  | +				font-size: 24rpx;
 | 
											
												
													
														|  | 
 |  | +				color: #666666;
 | 
											
												
													
														|  | 
 |  | +				padding: 14rpx 0;
 | 
											
												
													
														|  | 
 |  | +				display: flex;
 | 
											
												
													
														|  | 
 |  | +				justify-content: space-between;
 | 
											
												
													
														|  | 
 |  | +				align-items: center;
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			.location{
 | 
											
												
													
														|  | 
 |  | +				display: flex;
 | 
											
												
													
														|  | 
 |  | +				align-items: center;
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			.bottom{
 | 
											
												
													
														|  | 
 |  | +				.time{
 | 
											
												
													
														|  | 
 |  | +					font-size: 24rpx;
 | 
											
												
													
														|  | 
 |  | +					color: #666666;
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			image{
 | 
											
												
													
														|  | 
 |  | +				&.icon{
 | 
											
												
													
														|  | 
 |  | +					width: 30rpx;
 | 
											
												
													
														|  | 
 |  | +					height: 30rpx;
 | 
											
												
													
														|  | 
 |  | +					display: block;
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			.item-row{
 | 
											
												
													
														|  | 
 |  | +				display: flex;
 | 
											
												
													
														|  | 
 |  | +				align-items: center;
 | 
											
												
													
														|  | 
 |  | +				padding-top: 14rpx;
 | 
											
												
													
														|  | 
 |  | +				&.space-between{
 | 
											
												
													
														|  | 
 |  | +					justify-content: space-between;
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			.icon-item{
 | 
											
												
													
														|  | 
 |  | +				display: flex;
 | 
											
												
													
														|  | 
 |  | +				align-items: center;
 | 
											
												
													
														|  | 
 |  | +				.word{
 | 
											
												
													
														|  | 
 |  | +					margin-left: 8rpx;
 | 
											
												
													
														|  | 
 |  | +					font-size: 24rpx;
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		.slot-button{
 | 
											
												
													
														|  | 
 |  | +			width: 400rpx;
 | 
											
												
													
														|  | 
 |  | +			height: 100%;
 | 
											
												
													
														|  | 
 |  | +			display: flex;
 | 
											
												
													
														|  | 
 |  | +			flex-direction: row;
 | 
											
												
													
														|  | 
 |  | +			justify-content: center;
 | 
											
												
													
														|  | 
 |  | +			align-items: center;
 | 
											
												
													
														|  | 
 |  | +			color: #fff;
 | 
											
												
													
														|  | 
 |  | +			padding-left: 10px;
 | 
											
												
													
														|  | 
 |  | +			.bt{
 | 
											
												
													
														|  | 
 |  | +				width: 50%;
 | 
											
												
													
														|  | 
 |  | +				height: 100%;
 | 
											
												
													
														|  | 
 |  | +				font-size: 30rpx;
 | 
											
												
													
														|  | 
 |  | +				box-sizing: border-box;
 | 
											
												
													
														|  | 
 |  | +				display: flex;
 | 
											
												
													
														|  | 
 |  | +				justify-content: center;
 | 
											
												
													
														|  | 
 |  | +				align-items: center;
 | 
											
												
													
														|  | 
 |  | +				&.edit{
 | 
											
												
													
														|  | 
 |  | +				    background-color:#007aff;
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +				&.del{
 | 
											
												
													
														|  | 
 |  | +					background-color:#F56C6C;
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +				&.detail{
 | 
											
												
													
														|  | 
 |  | +					background-color: #e6a23c;
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +</style>
 |