444 lines
12 KiB
Vue
444 lines
12 KiB
Vue
<template>
|
||
<view class="fullHeight bgWhite">
|
||
<headers :showBack="true" class="fixedHeaderBox">
|
||
<view class="headerName">
|
||
{{titleList[searchForm.opType-1]}}
|
||
</view>
|
||
</headers>
|
||
<view class="fixedHeaderPageContent" :style="{ 'padding-top': (statusBarHeight+52) + 'px' }">
|
||
|
||
|
||
<!-- <scroll-view scroll-y="true" class="pageContent" :refresher-triggered="triggered" @refresherrefresh="onRefresh" @refresherrestore="onRestore" @scrolltolower="loadMore" refresher-enabled="true" @refresherabort="onAbort" :refresher-threshold="50" scroll-with-animation="true" > -->
|
||
<view v-for="(item,index) in list" :key="index" class="listBox" :class="(searchForm.opType==1||searchForm.opType==6)?'listBox2':item.operateType==1?'grey':''">
|
||
<view class="item" style="color: rgba(72, 141, 236, 1);font-size: 13px;" v-show="searchForm.opType==6">
|
||
<text class="label" style="color: rgba(72, 141, 236, 1);font-size: 15px;">养护超期提醒:</text> {{item.createTime}}
|
||
</view>
|
||
<view class="item">
|
||
<text class="label">试块编号:</text> {{item.sampleNo}}
|
||
</view>
|
||
<view class="item">
|
||
<text class="label">样品类型:</text> {{item.sampleTypeName}}
|
||
</view>
|
||
<view class="item">
|
||
<text class="label">成型时间:</text> {{item.formingTime}}
|
||
</view>
|
||
<view class="item">
|
||
<text class="label">入室时间:</text> {{item.addTime?item.addTime:item.sampleAddTime}}
|
||
</view>
|
||
<view class="item">
|
||
<text class="label">养护周期:</text> {{item.curingPeriod}} 天
|
||
</view>
|
||
<view class="item" v-show="searchForm.opType!=6">
|
||
<text class="label">样品数量:</text> {{item.sampleNum}}
|
||
</view>
|
||
<view class="item" v-show="item.inspectionNo">
|
||
<text class="label">送检编号:</text> {{item.inspectionNo}}
|
||
</view>
|
||
<view class="item" v-show="item.inspectionTime">
|
||
<text class="label">送检时间:</text> {{item.inspectionTime}}
|
||
</view>
|
||
<view class="operateBox" v-show="searchForm.opType==2">
|
||
<view class="leftBtn" @click="operateFn(item,1)">
|
||
作废
|
||
</view>
|
||
<view class="rightBtn" @click="sendToCheck(item)">
|
||
送检
|
||
</view>
|
||
</view>
|
||
<view class="operateBox" v-show="searchForm.opType==3">
|
||
<view class="leftBtn" @click="checkFn(item,2)">
|
||
检验不合格
|
||
</view>
|
||
<view class="rightBtn" @click="checkFn(item,1)">
|
||
检验合格
|
||
</view>
|
||
</view>
|
||
<view class="operateBtn" v-show="searchForm.opType==1" @click="operateFn(item,1)">
|
||
作<br>废
|
||
</view>
|
||
<view class="operateBtn" v-show="searchForm.opType==6" @click="deleteFn(item)">
|
||
删<br>除
|
||
</view>
|
||
<view class="statusBox" v-show="searchForm.opType==4||searchForm.opType==5">
|
||
<image src="/static/markRoomImg/buhegei.png" class="statusImg" v-show="item.qualifiedType==2"></image>
|
||
<image src="/static/markRoomImg/hegei.png" class="statusImg" v-show="item.qualifiedType==1"></image>
|
||
<image src="/static/markRoomImg/zuofei.png" class="statusImg" v-show="item.operateType==1"></image>
|
||
</view>
|
||
</view>
|
||
<view class="placeholderBox" v-show="list.length==0">
|
||
<image src="/static/noData.png" class="noDataImg"></image>
|
||
<view class="text">
|
||
暂无数据
|
||
</view>
|
||
</view>
|
||
|
||
<!-- </scroll-view> -->
|
||
</view>
|
||
<view class="loadMoreBox" v-if="isLoadMore">
|
||
<uni-load-more :status="loadStatus" iconType="auto"></uni-load-more>
|
||
</view>
|
||
<dialogs ref="dialogs">
|
||
<!-- <template v-slot:title>
|
||
{{isAdd?'添加':'编辑'}}
|
||
</template> -->
|
||
<template v-slot:content>
|
||
<view class="formBox2">
|
||
<form @submit="formSubmit">
|
||
<view class="uni-form-item">
|
||
<view class="uni-form-label">
|
||
<text class="star">*</text>送检编号
|
||
</view>
|
||
<view class="uni-form-input">
|
||
<input class="uni-input" placeholder-class="cl" name="inspectionNo" v-model="form.inspectionNo" placeholder="请输入" />
|
||
</view>
|
||
</view>
|
||
<view class="uni-form-item">
|
||
<view class="uni-form-label">
|
||
<text class="star">*</text>送检时间
|
||
</view>
|
||
<view class="uni-form-input" style="overflow: hidden;">
|
||
<picker class="datePickerBox datePickerBox1" mode="date" :value="form.date" @change="bindDateChange">
|
||
<view class="uni-input cl" v-if="!form.date">选择日期</view>
|
||
<view class="uni-input " v-else>{{form.date}}</view>
|
||
</picker>
|
||
<picker class="datePickerBox datePickerBox2" mode="time" :value="form.time" start="00:00" end="23:59" @change="bindTimeChange">
|
||
<view class="uni-input cl" v-if="!form.time">选择时间</view>
|
||
<view class="uni-input" v-else>{{form.time}}</view>
|
||
</picker>
|
||
</picker>
|
||
</view>
|
||
</view>
|
||
<button form-type="submit" type="primary" class="btn submitBtn">送检</button>
|
||
<view class="closeBtn" @click="closeDialogFn">
|
||
关闭
|
||
</view>
|
||
</form>
|
||
</view>
|
||
</template>
|
||
|
||
</dialogs>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import headers from "../../../../components/headers/headers.vue"
|
||
import uniLoadMore from "../../../../components/uni-load-more/uni-load-more.vue"
|
||
import dialogs from "../../../../components/dialog/dialog.vue"
|
||
export default {
|
||
components:{headers,dialogs,uniLoadMore},
|
||
data() {
|
||
return {
|
||
list:[],
|
||
titleList:['养护中','到期样品','送检中样品','历史养护台账','历史送检台账','超期提醒'],
|
||
searchForm:{
|
||
opType:1,
|
||
devSn:'',
|
||
endTime:'',
|
||
pageNo:1,
|
||
pageSize: 5,
|
||
projectSn:'',
|
||
startTime:''
|
||
},
|
||
loadStatus:'more',//加载样式:more-加载前样式,loading-加载中样式,nomore-没有数据样式
|
||
isLoadMore:false, //是否加载中
|
||
form:{
|
||
inspectionNo:'',
|
||
date:'',time:''
|
||
},
|
||
itemId:'',
|
||
// triggered: false,
|
||
// _freshing: false,
|
||
// isLoading:true,//加载中
|
||
// totalSize:0,
|
||
statusBarHeight:0
|
||
};
|
||
},
|
||
onLoad(options) {
|
||
this.statusBarHeight=uni.getStorageSync('systemInfo').statusBarHeight
|
||
this.searchForm.projectSn = JSON.parse(uni.getStorageSync('projectDetail')).projectSn
|
||
this.searchForm.opType=parseInt(options.opType)
|
||
this.searchForm.devSn=options.devSn
|
||
this.loadData()
|
||
// this._freshing = false;
|
||
// setTimeout(() => {
|
||
// this.triggered = true;//触发onRefresh来加载自己的数据,如果不用这种方式,不要在此改变triggered的值
|
||
// this.loadData()
|
||
// }, 1000)
|
||
},
|
||
|
||
onReachBottom() {
|
||
if(!this.isLoadMore){ //此处判断,上锁,防止重复请求
|
||
this.isLoadMore=true
|
||
this.searchForm.pageNo+=1
|
||
this.loadData()
|
||
}
|
||
},
|
||
onPullDownRefresh() {
|
||
this.searchForm.pageNo=1
|
||
this.list=[]
|
||
this.loadData()
|
||
},
|
||
mounted() {
|
||
|
||
},
|
||
methods:{
|
||
// async loadMore(){
|
||
// console.log('loadMore')
|
||
// if(this.totalSize == this.list.length || this.isLoading){
|
||
// return
|
||
// }
|
||
// this.searchForm.pageNo += 1
|
||
// await this.loadData()
|
||
// },
|
||
// // 自定义下拉刷新控件被下拉
|
||
// async onPulling(e) {
|
||
// console.log('onPulling')
|
||
// this.triggered = true; // 需要重置
|
||
|
||
// },
|
||
|
||
// // 自定义下拉刷新被触发
|
||
// async onRefresh() {
|
||
// console.log('onRefresh')
|
||
// if (this._freshing) return;
|
||
// this._freshing = true;
|
||
// if (!this.triggered) this.triggered = true; //界面下拉触发,triggered可能不是true,要设为true
|
||
// const isRefresh = true
|
||
|
||
// this.triggered = false;
|
||
// this._freshing = false;
|
||
// this.searchForm.pageNo == 1
|
||
// this.list=[]
|
||
// await this.loadData(isRefresh)
|
||
// },
|
||
// // 自定义下拉刷新被复位
|
||
// onRestore() {
|
||
// console.log('onRestore')
|
||
// this.triggered = false; // 需要重置
|
||
// },
|
||
// // 自定义下拉刷新被中止
|
||
// onAbort() {
|
||
// console.log('onAbort')
|
||
// this.triggered = false;
|
||
// },
|
||
bindDateChange: function(e) {
|
||
this.form.date = e.target.value
|
||
},
|
||
bindTimeChange: function(e) {
|
||
this.form.time = e.target.value
|
||
},
|
||
closeDialogFn(){
|
||
this.$refs.dialogs.hideFn()
|
||
},
|
||
checkFn(item,qualifiedType){
|
||
var params = {};
|
||
params.qualifiedType = qualifiedType
|
||
params.id=item.id
|
||
this.editFn(params)
|
||
},
|
||
sendToCheck(item){
|
||
this.form={
|
||
inspectionNo:'',
|
||
date:'',time:''
|
||
}
|
||
this.itemId=item.id
|
||
this.$refs.dialogs.showFn()
|
||
},
|
||
formSubmit(e){
|
||
if(this.form.inspectionNo==''){
|
||
uni.showToast({
|
||
title:'请输入送检编号',
|
||
icon:'none'
|
||
})
|
||
return false
|
||
}
|
||
if(this.form.date==''||this.form.time==''){
|
||
uni.showToast({
|
||
title:'请选择送检时间',
|
||
icon:'none'
|
||
})
|
||
return false
|
||
}
|
||
var params={id:this.itemId}
|
||
params.inspectionNo=this.form.inspectionNo
|
||
params.inspectionTime=this.form.date+' '+this.form.time
|
||
params.operateType=2
|
||
this.editFn(params)
|
||
},
|
||
operateFn(item,operateType){
|
||
var params = {};
|
||
params.operateType = operateType
|
||
params.id=item.id
|
||
this.editFn(params)
|
||
},
|
||
editFn(params){
|
||
var that = this
|
||
this.sendRequest({
|
||
url: "xmgl/standardSampleRecord/edit",
|
||
data: params,
|
||
method: "POST",
|
||
success(res){
|
||
uni.showToast({
|
||
title:'操作成功!'
|
||
})
|
||
that.closeDialogFn()
|
||
that.list=[]
|
||
that.loadData()
|
||
}
|
||
})
|
||
},
|
||
deleteFn(item){
|
||
var that = this
|
||
this.sendRequest({
|
||
url: "xmgl/standardSampleNotice/delete",
|
||
data: {id:item.id+''},
|
||
method: "DELETE",
|
||
header:{
|
||
'content-type': "application/x-www-form-urlencoded"
|
||
},
|
||
success(res){
|
||
uni.showToast({
|
||
title:'操作成功!'
|
||
})
|
||
that.list=[]
|
||
that.loadData()
|
||
}
|
||
})
|
||
},
|
||
loadData(){
|
||
console.log('loadData')
|
||
this.isLoading=true
|
||
var that = this
|
||
var url = "xmgl/standardSampleRecord/selectStandardSamplePageList"
|
||
if(this.searchForm.opType==6){
|
||
url = "xmgl/standardSampleNotice/selectStandardSampleNoticePageList"
|
||
}
|
||
// that.loadStatus='loading'
|
||
this.sendRequest({
|
||
url: url,
|
||
data: this.searchForm,
|
||
method: "POST",
|
||
success(res){
|
||
// that.isLoading=false
|
||
// that.totalSize=res.result.total
|
||
that.list=that.list.concat(res.result.records)
|
||
if(res.result.records.length<that.searchForm.pageSize){ //判断接口返回数据量小于请求数据量,则表示此为最后一页
|
||
that.isLoadMore=true
|
||
that.loadStatus='nomore'
|
||
}else{
|
||
that.isLoadMore=false
|
||
// that.loadStatus='more'
|
||
}
|
||
uni.stopPullDownRefresh()
|
||
console.log('that.isLoadMore',that.isLoadMore)
|
||
},
|
||
error(res){
|
||
// uni.showToast({title:res.data.msg,icon:'none'})
|
||
that.isLoadMore=false
|
||
that.isLoading=false
|
||
// that.loadStatus='more'
|
||
if(that.searchForm.pageNo>1){
|
||
that.searchForm.pageNo-=1
|
||
}
|
||
}
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
// .fixedHeaderPageContent{
|
||
// position: relative;
|
||
// }
|
||
.listBox{
|
||
box-shadow: 0px 2px 16px 0px rgba(212, 220, 236, 0.69);
|
||
padding: 15px;
|
||
font-size: 14px;
|
||
font-weight: 400;
|
||
color: #2A2B5B;
|
||
position: relative;
|
||
border-radius: 10px;
|
||
margin: 10px 15px 10px;
|
||
.item{
|
||
margin-bottom: 5px;
|
||
}
|
||
.label{
|
||
color: rgba(55, 45, 102, 0.6);
|
||
}
|
||
&.grey{
|
||
.item{
|
||
opacity: 0.4;
|
||
}
|
||
}
|
||
}
|
||
.listBox2{
|
||
width: calc(100% - 90px);
|
||
}
|
||
.statusBox{
|
||
position: absolute;
|
||
right: 10px;
|
||
top: 10px;
|
||
.statusImg{
|
||
width: 76px;
|
||
height: 52px;
|
||
}
|
||
}
|
||
.operateBox{
|
||
border-top: 1px solid rgba(42, 43, 91, 0.1);
|
||
padding-top: 15px;
|
||
margin-top: 15px;
|
||
text-align: center;
|
||
.leftBtn,.rightBtn{
|
||
width: 130px;
|
||
height: 31px;
|
||
border-radius: 20px;
|
||
font-size: 14px;
|
||
line-height: 31px;
|
||
}
|
||
.leftBtn{
|
||
color: rgba(42, 43, 91, 1);
|
||
border: 1px solid rgba(42, 43, 91, 0.4);
|
||
margin-right: 13px;
|
||
display: inline-block;
|
||
vertical-align: top;
|
||
}
|
||
.rightBtn{
|
||
background-color: rgba(43, 141, 243, 1);
|
||
color: white;
|
||
display: inline-block;
|
||
vertical-align: top;
|
||
}
|
||
}
|
||
.operateBtn{
|
||
width: 30px;
|
||
position: absolute;
|
||
right: -30px;
|
||
background-color: RGBA(207, 209, 211, 1);
|
||
top: 10px;
|
||
border-top-right-radius: 10px;
|
||
border-bottom-right-radius: 10px;
|
||
height: calc(100% - 20px);
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
color: white;
|
||
}
|
||
.closeBtn{
|
||
font-size: 15px;
|
||
color: rgba(42, 43, 91, 0.5);
|
||
padding: 10px 0;
|
||
text-align: center;
|
||
}
|
||
.datePickerBox{
|
||
float: left;
|
||
}
|
||
.datePickerBox1{
|
||
width: calc(58% - 0px);
|
||
// margin-right: 5px;
|
||
}
|
||
.datePickerBox2{
|
||
width: 42%;
|
||
}
|
||
</style>
|