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
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>
|