349 lines
10 KiB
Vue
Raw Normal View History

2022-06-08 15:48:09 +08:00
<template>
<view class="fullHeight">
<headers :showBack="true">
<view class="headerName">
样品录入
</view>
</headers>
<scroll-view scroll-y="true" class="pageContent bgWhite">
<view class="formBox">
<form @submit="formSubmit">
<view class="uni-form-item">
<view class="uni-form-label">
<text class="star">*</text>设备
</view>
<view class="uni-form-input">
<picker @change="bindPickerChange3" :value="devIndex" :range="devList" range-key="laboratoryName">
<view class="uni-input uni-select" v-if="devList.length>0">{{devList[devIndex].laboratoryName}}
<image class="icon-down" src="../../../../static/icon-down-black.png" mode=""></image>
</view>
<view class="uni-input uni-select cl" v-else>
请选择 <image class="icon-down" src="../../../../static/icon-down-black.png" mode=""></image>
</view>
</picker>
</view>
</view>
<view class="uni-form-item">
<view class="uni-form-label">
<text class="star">*</text>样品类型
</view>
<view class="uni-form-input">
<picker @change="bindPickerChange2" :value="sampleTypeIndex" :range="sampleTypeList" range-key="sampleTypeName">
<view class="uni-input" v-if="sampleTypeIndex!=null">{{sampleTypeList[sampleTypeIndex].sampleTypeName}}
<image class="icon-down" src="../../../../static/icon-down-black.png" mode=""></image></view>
<view class="uni-input uni-select cl" v-else>
请选择 <image class="icon-down" src="../../../../static/icon-down-black.png" mode=""></image>
</view>
</picker>
</view>
</view>
<view class="uni-form-item">
<view class="uni-form-label">
<text class="star">*</text>养护周期()
</view>
<view class="uni-form-input">
<input disabled class="uni-input disabled" placeholder-class="cl" name="curingPeriod" v-model="form.curingPeriod" type="number" />
</view>
</view>
<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="sampleNo" v-model="form.sampleNo" placeholder="请输入/扫描"/>
<button type="default" class="floatBtn" @click="scanCodeFn()">扫描</button>
</view>
</view>
<view class="uni-form-item">
<view class="uni-form-label">
<text class="star">*</text>成型时间
</view>
<view class="uni-form-input">
<picker class="datePickerBox datePickerBox1" mode="date" :value="date" :start="startDate" @change="bindDateChange">
<view class="uni-input cl" v-if="!date">选择日期</view>
<view class="uni-input " v-else>{{date}}</view>
</picker>
<picker class="datePickerBox datePickerBox2" mode="time" :value="time" start="00:00" end="23:59" @change="bindTimeChange">
<view class="uni-input cl" v-if="!time">选择时间</view>
<view class="uni-input" v-else>{{time}}</view>
</picker>
</picker>
</view>
</view>
<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="sampleNum" v-model="form.sampleNum" placeholder="请输入" type="number" />
</view>
</view>
<view class="uni-form-item">
<view class="uni-form-label">
<text class="star">*</text>存放位置
</view>
<view class="uni-form-input">
<picker @change="bindPickerChange" :value="locationIndex" :range="locationData" range-key="locationName">
<view class="uni-input uni-select cl" v-if="locationIndex==null">
请选择 <image class="icon-down" src="../../../../static/icon-down-black.png" mode=""></image>
</view>
<view class="uni-input uni-select" v-else>{{locationData[locationIndex].locationName}}<image class="icon-down" src="../../../../static/icon-down-black.png" mode=""></image></view>
</picker>
</view>
</view>
<view class="uni-form-item">
<view class="uni-form-label">
到期通知人
</view>
<view class="uni-form-input">
<button type="default" class="selectBtn" size="mini" @click="goSelectFn">选择人员 (已选{{selectPersonList.length}})</button>
</view>
</view>
<button form-type="submit" type="primary" class="btn submitBtn big">保存</button>
</form>
</view>
</scroll-view>
</view>
</template>
<script>
import headers from "../../../../components/headers/headers.vue"
import {GetDateStr} from "../../../../static/js/util.js"
export default {
components:{headers},
data() {
return {
form:{
curingPeriod: "",
devSn: "",
formingTime: "",
locationId: "",
sampleNo: "",
sampleNum: "",
sampleTypeId: "",
projectSn: '',
secondLocationId:''
},
projectDetail:{},
date:'',
time:'',
locationData:[],
locationDataPicker:[],
locationIndex:null,
sampleTypeList:[],
sampleTypeIndex: null,
devList:[],
devIndex:0,
selectPersonList:[]
};
},
computed: {
startDate() {
return GetDateStr(0,'-');
}
},
mounted(){
this.projectDetail=JSON.parse(uni.getStorageSync('projectDetail'))
this.getTypeData()
this.loadDevList()
},
onShow() {
if(uni.getStorageSync('person')){
var person = uni.getStorageSync('person')
if(person.indexOf(',')!=-1){
this.selectPersonList=person.split(',')
}else{
this.selectPersonList=[person]
}
}
},
methods:{
//获取类型列表
getTypeData(){
var that = this
this.sendRequest({
url: "xmgl/standardSampleType/list",
data: {projectSn:this.projectDetail.projectSn},
method: "POST",
success(res){
that.sampleTypeList=res.result
}
})
},
// 获取存放位置数据
getLocationData(){
var that = this
this.sendRequest({
url: "xmgl/standardLocation/selectChildrenLocationList",
data: {projectSn:this.projectDetail.projectSn,devSn:this.devList[this.devIndex].devSn},
method: "POST",
success(res){
that.locationData=res.result
}
})
},
// 获取设备列表
loadDevList(){
var that = this
this.sendRequest({
url: "xmgl/standardDev/list",
data: {projectSn: this.projectDetail.projectSn},
method: "POST",
success(res){
that.devList = res.result
if(that.devList.length>0){
that.getLocationData()
// that.isHasVideo()
}
}
})
},
bindPickerChange3: function(e) {
console.log('picker发送选择改变携带值为', e.target.value)
this.devIndex = e.target.value
this.getLocationData()
},
bindPickerChange2: function(e) {
console.log('picker发送选择改变携带值为', e.target.value)
this.sampleTypeIndex = e.target.value
this.form.curingPeriod=this.sampleTypeList[this.sampleTypeIndex].sampleCuringPeriod
},
bindPickerChange: function(e) {
console.log('picker发送选择改变携带值为', e.target.value)
this.locationIndex = e.target.value
},
bindDateChange: function(e) {
this.date = e.target.value
},
bindTimeChange: function(e) {
this.time = e.target.value
},
formSubmit(e){
console.log(e)
var params = e.detail.value
if(this.devIndex==null){
uni.showToast({
title:'请选择设备',
icon:'none'
})
return false;
}
if(this.sampleTypeIndex==null){
uni.showToast({
title:'请选择样品类型',
icon:'none'
})
return false;
}
if(params.curingPeriod==''){
uni.showToast({
title:'请填写养护周期',
icon:'none'
})
return false;
}
if(params.sampleNo==''){
uni.showToast({
title:'请填写样品编号',
icon:'none'
})
return false;
}
if(this.date==''||this.time==''){
uni.showToast({
title:'请选择成型时间',
icon:'none'
})
return false;
}
if(params.sampleNum==''){
uni.showToast({
title:'请填写样品数量',
icon:'none'
})
return false;
}
if(this.locationIndex.length==0||this.locationIndex==null){
uni.showToast({
title:'请选择存放位置',
icon:'none'
})
return false;
}
params.devSn=this.devList[this.devIndex].devSn
params.projectSn = this.projectDetail.projectSn
params.formingTime = this.date + ' ' + this.time
params.secondLocationId = this.locationData[this.locationIndex].parentId
params.locationId = this.locationData[this.locationIndex].id
params.sampleTypeId=this.sampleTypeList[this.sampleTypeIndex].id
params.expireNotice=this.selectPersonList.join(',')
this.sendRequest({
url: "xmgl/standardSampleRecord/add",
data: params,
method: "POST",
success(res){
uni.showToast({
title:'保存成功!'
})
uni.removeStorageSync('person')
setTimeout(()=>{
uni.navigateBack({
})
},800)
}
})
},
goSelectFn(){
uni.navigateTo({
url:'../../selectPerson/selectPerson'
})
},
scanCodeFn(){
// 允许从相机和相册扫码
var that = this
uni.scanCode({
// onlyFromCamera: true,
success: function (res) {
console.log('条码类型:' + res.scanType);
console.log('条码内容:' + res.result);
that.form.sampleNo=res.result
}
});
}
}
}
</script>
<style lang="scss" scoped>
.datePickerBox{
float: left;
}
.datePickerBox1{
width: calc(58% - 5px);
margin-right: 5px;
}
.datePickerBox2{
width: 42%;
}
.selectBtn{
border-radius: 20px;
border: 1px solid #372D66;
color: #372D66;
height: 35px;
line-height: 35px;
font-size: 15px;
padding: 0 15px;
}
.submitBtn{
margin-top: 40px;
}
</style>