天津投入产出系统安卓前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

612 lines
18 KiB

<template>
<view class="">
<view class="" v-for="(item, index) in formData" :key="index">
<view class="" v-if="item.Type=='1'">
<view class="flex uni-row " style=" padding-left: 10rpx; border-bottom: #9e9e9e;">
<view class=" " style="margin-top: 3rpx;">
<text class="colorRed">*</text>
<text class="num" style="font-size: 32rpx;">{{ index + 1 }}.</text>
</view>
<view class="uni-flex uni-column">
<view class="position">
点检部位 : {{ item.Position }}
</view>
<view class="content">
点检内容 : {{ item.Content }}
</view>
<view class="methond" style="margin-bottom: 10rpx;">
点检方法 : {{item.Methond}}
</view>
</view>
</view>
<view class="">
<view class="" style="margin-left: 50rpx;">
<view class="">
<text style="font-size: 32rpx; font-weight:550">点检状态</text>
<text style="font-size: 30rpx; color: #9e9e9e;">(单选)</text>
</view>
<u-radio-group v-if="isRefresh" v-model="item.SelectName" @change="radioGroupChange(item)">
<view class="uni-flex" style="width: 50%; margin-left: 0rpx;"
v-for="(radio, index) in dataList" :key="index">
<view class="uni-flex " style="margin-top: 10rpx; justify-content: flex-start;">
<u-radio :name="radio.name" @change="radioChange(radio)">
{{radio.name}}
</u-radio>
</view>
</view>
</u-radio-group>
</view>
<!-- <input class="input" disabled style="margin-left: 50rpx;" :placeholder="item.placeholder"
v-model="item.SelectName" /> -->
</view>
<view class=""
style="width: 100%;background-color: gray;height: 2rpx; margin-top: 15rpx;margin-bottom: 15rpx;" />
</view>
<view class="" v-else-if="item.Type=='2'">
<view class="flex uni-row " style=" padding-left: 10rpx; border-bottom: #9e9e9e;">
<view class=" " style="margin-top: 3rpx;">
<text class="colorRed">*</text>
<text class="num" style="font-size: 32rpx;">{{ index + 1 }}.</text>
</view>
<view class="uni-flex uni-column">
<view class="position">
点检部位 : {{ item.Position }}
</view>
<view class="content">
点检内容 : {{ item.Content }}
</view>
<view class="methond" style="margin-bottom: 10rpx;">
点检方法 : {{item.Methond}}
</view>
</view>
</view>
<view class="">
<view class="" style="margin-left: 50rpx;">
<view class="">
<text style="font-size: 32rpx; font-weight:550">点检状态</text>
<text style="font-size: 30rpx; color: #9e9e9e;">(单选)</text>
</view>
<u-radio-group v-if="isRefresh" v-model="item.SelectName" @change="radioGroupChange(item)">
<view class="uni-flex" style="width: 50%; margin-left: 0rpx;"
v-for="(radio, index) in dataInputList" :key="index">
<view class="uni-flex " style="margin-top: 10rpx; justify-content: flex-start;">
<u-radio :name="radio.name" @change="radioChange(radio)">
{{radio.name}}
</u-radio>
</view>
</view>
</u-radio-group>
</view>
<input class="input" v-if="item.putMachine.length==1" style="margin-left: 50rpx;"
:placeholder="item.putMachine[0].Name" v-model="item.SelectName" />
</view>
</view>
<view class="" v-else-if="item.Type=='3'">
<view class="flex uni-row " style="padding-left: 10rpx; border-bottom: #9e9e9e;">
<view class="" style="margin-top: 3rpx;">
<text class="colorRed">*</text>
<text class="num" style="font-size: 32rpx;">{{ index + 1 }}.</text>
</view>
<view class="uni-flex uni-column">
<view class="position">
点检部位 : {{ item.Position }}
</view>
<view class="content">
点检内容 : {{ item.Content }}
</view>
<view class="methond" style="margin-bottom: 10rpx;">
点检方法 : {{item.Methond}}
</view>
</view>
</view>
<view class="">
<view class="" style="margin-left: 50rpx;">
<view class="">
<text style="font-size: 32rpx; font-weight:550">点检状态</text>
<text style="font-size: 30rpx; color: #9e9e9e;">(单选)</text>
</view>
<u-radio-group v-if="isRefresh&&isRefreshType3" v-model="item.SelectName"
@change="radioGroupChange(item)">
<view class="uni-flex" style="width: 50%; margin-left: 0rpx;"
v-for="(radio, index) in dataInputList" :key="index">
<view class="uni-flex " style="margin-top: 10rpx; justify-content: flex-start;">
<u-radio :name="radio.name" @change="radioChange(radio)">
{{radio.name}}
</u-radio>
</view>
</view>
</u-radio-group>
</view>
<view class="" v-if="item.putMachine.length>1">
<!-- <input class="input" style="margin-left: 50rpx;" :placeholder="item.placeholder"
v-model="item.SelectName" /> -->
<view class="" style="margin-left: 50rpx;">
<text style="font-size: 32rpx; margin: 10rpx;">{{item.putMachine[0].Name}}</text>
<input class="input" @input="inputMain(item)" type="number"
:placeholder="item.putMachine[0].Name" v-model="item.putMachine[0].SelectName" />
</view>
<view class="" style="margin-left: 50rpx;">
<text style="font-size: 32rpx; margin: 10rpx;">{{item.putMachine[1].Name}}</text>
<input class="input" @input="inputMinor(item)" type="number"
:placeholder="item.putMachine[1].Name" v-model="item.putMachine[1].SelectName" />
</view>
</view>
</view>
</view>
<view class="" v-else-if="item.Type=='5'">
<view class="flex uni-row" style="padding-left: 10rpx; border-bottom: #9e9e9e;">
<view class="" style="margin-top: 3rpx;">
<text class="colorRed">*</text>
<text class="num" style="font-size: 32rpx;">{{ index + 1 }}.</text>
</view>
<view class="" style="display: flex;flex-direction: column;">
<view class="position">
{{ item.Content }}
</view>
</view>
</view>
<view class="">
<view class="" style="margin-left: 50rpx;">
<view style="font-size: 30rpx; color: #9e9e9e;">(单选)</view>
<u-radio-group v-if="isRefresh" v-model="item.SelectName" @change="radioGroupChange(item)">
<view class="uni-flex" style="width: 50%; margin-left: 0rpx;"
v-for="(radio, index) in dataClassList" :key="index">
<view class="uni-flex " style="margin-top: 10rpx; justify-content: flex-start;">
<u-radio :name="radio.name" @change="radioChange(radio)">
{{radio.name}}
</u-radio>
</view>
</view>
</u-radio-group>
</view>
<!-- <input class="input" disabled style="margin-left: 50rpx;" :placeholder="item.placeholder"
v-model="item.SelectName" /> -->
</view>
</view>
</view>
<showModal ref="comMessage"></showModal>
</view>
</template>
<script>
import showModal from '../../mycomponents/common/showModal.vue'
import {
deepCopyData
} from "@/common/basic.js"
export default {
components: {
showModal
},
props: {
formData: {
type: Array,
default: null,
},
},
data() {
return {
deviceCode: "",
deviceName: "",
class: "",
value: '',
dataList: [{
value: 1,
name: "状态良好",
},
{
value: 2,
name: "正在处理",
},
{
value: 3,
name: "状态不好或损毁",
},
{
value: 4,
name: "停机状态",
}
],
dataInputList: [{
value: 4,
name: "停机状态",
}],
dataClassList: [{
value: 1,
name: "三班",
},
{
value: 2,
name: "白班",
},
{
value: 3,
name: "二班",
}
],
testName: null,
current: 0,
isRefresh: true,
isRefreshType3: true,
};
},
methods: {
radioChange(radio) {
console.log("radioChange", radio)
},
radioGroupChange(item) {
// if(item.SelectName=!""){
// if(item.putMachine.length==2){
// item.putMachine[0].SelectName=""
// item.putMachine[1].SelectName=""
// // this.reload3()
// }
// }
console.log("radioGroupChange", item)
},
inputMain(item) {
if (item.putMachine[0].SelectName.length > 0) {
item.SelectName = ""
}
this.reload3()
},
inputMinor(item) {
if (item.putMachine[1].SelectName.length > 0) {
item.SelectName = ""
}
this.reload3()
},
submit(callBack) {
try {
for (var i = 0; i < this.formData.length; i++) {
var item = this.formData[i];
var hintIndex = i + 1
if (item.Type == 1) {
if (item.SelectName == "") {
var hint = hintIndex + ".点检内容 : " + item.Content;
throw new Error(hint)
}
} else if (item.Type == 2) {
//空值提示
if (item.SelectName == "") {
var hint = hintIndex + ".点检内容 : " + item.Content;
throw new Error(hint)
}
//如果不在选择中,输入的内容。对数值进行校验
if (!this.isExitList(item.SelectName)) {
if (!this.isWithinInterval(item.SelectName, item.putMachine[0].Limit, item
.putMachine[0]
.Floor)) {
var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.SelectName +
"】不在【" + item.putMachine[0].Limit + "】和【" + item.putMachine[0].Floor + "】之间"
throw new Error(hint)
}
}
} else if (item.Type == 3) {
if (item.SelectName == "") {
if(item.putMachine[0].SelectName==""){
var hint = hintIndex + ".点检内容 : " + item.Content;
throw new Error(hint)
}else {
if (!this.isWithinInterval(item.putMachine[0].SelectName, item.putMachine[0].Limit, item
.putMachine[0]
.Floor)) {
var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.SelectName +
"】不在【" + item.putMachine[0].Limit + "】和【" + item.putMachine[0].Floor + "】之间"
throw new Error(hint)
}
}
if(item.putMachine[1].SelectName==""){
var hint = hintIndex + ".点检内容 : " + item.Content;
throw new Error(hint)
}else {
if (!this.isWithinInterval(item.putMachine[1].SelectName, item.putMachine[1].Limit, item
.putMachine[1]
.Floor)) {
var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.SelectName +
"】不在【" + item.putMachine[1].Limit + "】和【" + item.putMachine[1].Floor + "】之间"
throw new Error(hint)
}
}
}else {if (!this.isExitList(item.SelectName)) {
if (!this.isWithinInterval(item.putMachine[0].SelectName, item.putMachine[0].Limit, item
.putMachine[0]
.Floor)) {
var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.SelectName +
"】不在【" + item.putMachine[0].Limit + "】和【" + item.putMachine[0].Floor + "】之间"
throw new Error(hint)
}
if (!this.isWithinInterval(item.putMachine[1].SelectName, item.putMachine[1].Limit, item
.putMachine[1]
.Floor)) {
var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.SelectName +
"】不在【" + item.putMachine[1].Limit + "】和【" + item.putMachine[1].Floor + "】之间"
throw new Error(hint)
}
}}
}
}
this.formData.forEach(res => {
if (res.SelectName.includes("班")) {
var value = this.dataClassList.filter(item => item.name == res.SelectName)
if (value.length > 0) {
res.SelectValue = value[0].value
} else {
res.SelectValue = ""
}
} else {
var value = this.dataList.filter(item => item.name == res.SelectName)
if (value.length > 0) {
res.SelectValue = value[0].value
} else {
res.SelectValue = res.SelectName
}
}
})
callBack(this.formData)
} catch (error) {
this.showHint("", error.message)
}
},
submitss(callBack) {
var isCheckPass = true
for (var i = 0; i < this.formData.length; i++) {
var item = this.formData[i];
var hintIndex = i + 1
if (item.Type == 1) {
if (item.SelectName == "") {
this.showHint(hintIndex + ".点检内容 : " + item.Content, item.placeholder)
isCheckPass = false;
break
}
} else if (item.Type == 2) {
} else
if (item.Type == 3) {
if (item.SelectName == "") {
this.showHint(hintIndex + ".点检内容 : " + item.Content, item.inputLow.placeholder)
isCheckPass = false;
break
} else {
if (!this.isWithinInterval(item.inputLow.name, item.inputLow.lower, item.inputLow
.upper)) {
this.showHint(hintIndex + ".点检内容 : " + item.Content, "最低压 : 输入数量【" + item.inputLow
.name +
"】不在【" + item.inputLow.lower + "】和【" + item.inputLow.upper + "】之间")
isCheckPass = false;
break
}
}
if (item.inputHigh.name == "") {
this.showHint(hintIndex + ".点检内容 : " + item.Content, item.inputHigh.placeholder)
isCheckPass = false;
break
} else {
if (!this.isWithinInterval(item.inputHigh.name, item.inputHigh.lower, item.inputHigh
.upper)) {
this.showHint(hintIndex + ".点检内容 : " + item.Content, "最高压 : 输入数量【" + item.inputHigh
.name +
"】不在【" + item.inputHigh.lower + "】和【" + item.inputHigh.upper + "】之间")
isCheckPass = false;
break
}
}
} else if (item.Type == 2) {
if (item.SelectName == "") {
this.showHint(hintIndex + ".点检内容 : " + item.Content, item.placeholder)
isCheckPass = false;
break
} else {
if (!this.isExitList(item.SelectName)) {
if (item.putMachine.length > 0) {
for (var i = 0; i < item.putMachine.length; i++) {
var temp = item.putMachine[i]
if (item.SelectName == "") {
this.showHint(hintIndex + ".点检内容 : " + item.Content, temp.Name)
isCheckPass = false;
break
}
if (!this.isWithinInterval(item.SelectName, temp.Limit, temp.Floor)) {
this.showHint(hintIndex + ".点检内容 : " + item.Content, "输入数量【" + item
.SelectName +
"】不在【" + temp.Limit + "】和【" + temp.Floor + "】之间")
isCheckPass = false;
break
}
}
} else {
if (!this.isWithinInterval(item.SelectName, item.Limit, item.Floor)) {
this.showHint(hintIndex + ".点检内容 : " + item.Content, "输入数量【" + item
.SelectName +
"】不在【" + item.Limit + "】和【" + item.Floor + "】之间")
isCheckPass = false;
break
}
}
}
}
} else if (item.type == "groupSelect") {
if (item.SelectName == "") {
this.showHint(hintIndex + ".点检内容 : " + item.Content, item.placeholder)
isCheckPass = false;
break
}
}
}
if (isCheckPass) {
this.formData.forEach(res => {
if (res.SelectName.includes("班")) {
var value = this.dataClassList.filter(item => item.name == res.SelectName)
if (value.length > 0) {
res.SelectValue = value[0].value
} else {
res.SelectValue = ""
}
} else {
var value = this.dataList.filter(item => item.name == res.SelectName)
if (value.length > 0) {
res.SelectValue = value[0].value
} else {
res.SelectValue = ""
}
}
})
callBack(this.formData)
// this.$emit("submit",this.formData)
console.log("通过", this.formData)
} else {
console.log("失败")
}
},
isWithinInterval(num, lower, upper) {
var num =Number(num);
var lower =Number(lower);
var upper =Number(upper);
if (!this.isNumber(num)) {
return true;
}
return num >= lower && num <= upper;
},
isExitList(name) {
var isExit = this.dataList.filter(res => res.name == name)
if (isExit.length == 0) {
return false
}
return true;
},
showHint(title, hint) {
// uni.showModal({
// title: title,
// Content: hint
// })
this.$refs.comMessage.showMessage("提示", hint)
},
isNumber(val) {
return !isNaN(parseFloat(val)) && isFinite(val);
},
reset() {
for (var i = 0; i < this.formData.length; i++) {
var item = this.formData[i];
if (item.type == "inputRange") {
item.inputLow.name = "";
item.inputHigh.name = ""
} else if (item.type == "inputAndSelect") {
if (item.putMachine) {
item.putMachine.name = ""
item.putMachine.value = ""
}
if (item.minor) {
item.minor.name = ""
item.minor.value = ""
}
item.SelectName = ""
item.value = ""
} else {
item.SelectName = ""
item.value = ""
}
}
// var testList =deepCopyData(this.dataList)
// this.dataList =[];
// this.dataList=testList
this.reload();
this.$emit("reset", this.formData)
console.log("重置", this.formData)
},
reload() {
this.isRefresh = false
this.isRefreshType3 = false
this.$nextTick(() => {
this.isRefresh = true
this.isRefreshType3 = true
})
},
reload3() {
this.isRefreshType3 = false
this.$nextTick(() => {
this.isRefreshType3 = true
})
}
},
};
</script>
<style lang="scss">
.colorRed {
color: red;
font-size: 30rpx;
}
.position {
font-size: 32rpx;
font-weight: bold;
}
.content {
font-size: 32rpx;
}
.methond {
font-size: 29rpx;
color: #999;
}
.input {
padding: 10rpx;
height: 100%;
text-align: left;
margin: 10rpx;
font-size: 28rpx;
color: #333;
overflow: hidden;
text-overflow: ellipsis;
outline: none;
border-radius: 10rpx;
border: 1rpx solid lightgrey;
}
</style>