You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

726 lines
22 KiB
Vue

<!-- 扫描rfid,选择缓存区根据选择的缓存区查询库位勾选是否取走托盘提交托盘变更信息 -->
<template>
<view class="page-product-receipt">
<view class="header" :style="{ backgroundColor: `rgba(250, 53, 52, ${scrollTop / 100})` }">
<view class="left">
<u-icon class="icon" name="arrow-left" @click="Back()" />
</view>
<view class="title">巡检详情</view>
<view class="right"></view>
</view>
<!-- <u-tabs name="cate_name" count="cate_count" :list="list" :is-scroll="false" :current="current" @change="change"></u-tabs> -->
<view class="list">
<div class="item-name">
2 years ago
<div class="quest">工单号: {{ detailsinfolist.orderCode }}</div>
<div class="details">
2 years ago
<div>设备编码: {{ detailsinfolist.equipmentCode }}</div>
<div style="margin-left: 42px">设备名称: {{ detailsinfolist.equipmentName }}</div>
</div>
<div class="details">
<div>车间编码: {{ detailsinfolist.planWorkshop }}</div>
<div style="margin-left: 42px">车间: {{ detailsinfolist.workCenterName }}</div>
</div>
</div>
<view class="single-left">
<!-- <view>扫描设备码:</view> -->
<u-search :clearabled="false" placeholder="请扫描" @search="search(orderNo)" :focus="shouciFocus" v-model="orderNo" :show-action="false"></u-search>
<uni-icons type="scan" size="25" @click="scanCodeOne" style="color: #0b9eff; margin: auto; padding: 22rpx"></uni-icons>
<!-- <view class="single-right">
<u-button type="primary" @click="selscteq()"></u-button>
</view> -->
<!-- <uni-icons type="scan" size="35" @click="scanCodeOne" style="color: #0b9eff; margin: auto; padding: 22rpx"></uni-icons> -->
</view>
<view class="item" v-show="isaccord" v-for="(item, index) in detailsinfolist.detailList" :key="index">
2 years ago
<div class="item1">检查项: {{ item.itemName }}</div>
<div class="item1">检查方法: {{ item.itemMethod }}</div>
<div v-for="(item1, index1) in item.standardList" :key="index1">
<div class="item1 item2" v-if="item1.standardType == 'qualitative'">
<div>检查标准: {{ item1.standardName }}</div>
2 years ago
<div class="select">
<u-radio-group v-model="item1.detailReach" @change="radioGroupChange(item1, item1.detailReach, index, index1)">
<u-radio @change="radioChange" v-for="(n, indexn) in listselect" :key="indexn" :name="n.type" :disabled="n.disabled">
{{ n.name }}
</u-radio>
</u-radio-group>
</div>
</div>
2 years ago
<div class="item1 item2" v-if="item1.standardType == 'quantify'">
<div>检查标准: {{ item1.standardName }}</div>
2 years ago
<div class="input-box" id="input-box1">
实际值:
<input class="input" v-model="item1.actualValue" @focus="blur(item1, item1.actualValue, index, index1)" @change="changeinput(item1)" @input="input(item1)" type="text" name="" id="" />
2 years ago
单位:mm
</div>
</div>
</div>
</view>
</view>
<view class="bottom-bar">
<u-row class="button-bar">
<!-- 确定 -->
<u-col :span="6">
<u-button @click="onSubmit" type="primary">提交</u-button>
</u-col>
<!-- 返回 -->
<u-col :span="6">
<u-button type="error" @click="Back()"></u-button>
</u-col>
</u-row>
</view>
<u-modal v-model="isshow" class="modal" :show-cancel-button="true" :show-title="false" @cancel="cancel" @confirm="confirm">
<div class="upload-name">
<div class="name">检查标准:{{ form.item5 }}</div>
<!-- <u-upload :before-upload="beforeUpload" ref="uUpload" :fileList="fileList" @on-error='errorUpload($event)' :action="action" @on-remove="removePic($event, item)" @on-success="successUpload($event)" :deletable="true"></u-upload> -->
<scroll-view class="scroll-view_H" scroll-x="true" :scroll-left="scrollLeft()">
<view class="photoList">
2 years ago
<view class="itemBox photoBox" v-for="(img, index) in imgList" :key="index">
<view class="closeBtn" @click="deleteImg(index)">
<image class="img" src="../../../static/images/iconCloseGray.svg" mode="scaleToFill"></image>
</view>
<image class="img" :src="img" mode="aspectFit" @click="showScreenImg(index)"></image>
</view>
<view class="itemBox chooseBtn" @click="chooseImg">
<view class="inner">
<image class="img" src="../../../static/images/upload-pic-icon.svg" mode="scaleToFill"></image>
<text class="desc">添加照片</text>
</view>
</view>
</view>
</scroll-view>
</div>
</u-modal>
<u-toast ref="uToast" />
</view>
</template>
<script lang="ts">
import { Component } from 'vue-property-decorator';
import { BasePage } from '@/components/base/page';
import model from './model';
import chooseOne from '@/components/choose-one/choose-one.vue';
import jPicker from '@/components/J-Picker/jPicker.vue';
2 years ago
import { session } from '@/store/modules/session';
import model1 from '../../equipment/Repairbx/model';
const mpaasScanModule: any = uni.requireNativePlugin('Mpaas-Scan-Module');
//import store from '@/store';
@Component({
components: {
chooseOne,
jPicker,
},
})
export default class ChangePalletNew extends BasePage {
model = model;
model1 = model1;
list: any = [
{
cate_name: '今日任务',
},
{
cate_name: '巡检记录',
},
];
current: any = 0;
shouciFocus = true;
// 详细
2 years ago
detailsinfo: any = {};
detailsinfolist: any = {};
detailsinfocontent: any = {};
// 模态框
isshow = false;
inputmodal = false;
2 years ago
isvalue = false;
ischecked = false;
radiomodal = false;
2 years ago
// 条码是否一样
isaccord = false;
// 设备信息
2 years ago
equipmentdata: any = [];
listselect: any = [
{
type: 1,
2 years ago
name: '符合标准',
radiovalue: null,
},
{
type: 0,
2 years ago
name: '未达标',
radiovalue: null,
},
];
// 设备index equipment
2 years ago
equipmentindex: any = [];
orderNo: any = '';
location: any = '';
locationStatus: any = 1;
form: any = {};
// 照片
action: any = 'http://www.example.com/upload';
fileList: any = [];
filesArr: any = [];
imgList: any = [];
deleteimgUrlList: any = [];
2 years ago
deleteimgUrlListcope: any = [];
orderNoItemList: any = {};
2 years ago
picturePath: any = 'https://cdn.uviewui.com/uview/swiper/1.jpg,https://cdn.uviewui.com/uview/swiper/2.jpg';
async onReady() {
//await this.model.getpalletLocation();
//this.remove = this.model.WlList[0];
console.log(this.model1.rowdata, '727sssss2727');
}
// 选择设备
onShow() {
if (this.model1.rowdata.length == 0) {
this.model1.rowdatanull();
} else {
// this.orderNo = this.detailsinfolist.equipmentCode;
// console.log(this.model1.rowdata, '7272727');
// if (this.model1.rowdata[0].equipmentCode == this.detailsinfolist.equipmentCode) {
// this.orderNo = this.model1.rowdata[0].equipmentCode;
// this.isaccord = true;
// } else {
// (this.$refs.uToast as any).show({
// title: '失败请选择正确设备',
// type: 'default',
// });
// this.isaccord = false;
// }
}
}
// 输入框焦点
2 years ago
blur(item, value, index, index1) {
console.log(item, value, index, index1);
this.radiomodal = false;
this.inputmodal = false;
2 years ago
if (value == null || value == '') {
this.isvalue = true;
} else {
this.isvalue = false;
2 years ago
}
if (value > item.detailUpLimit || value < item.detailDownLimit) {
this.equipmentindex = [];
this.equipmentindex.push(index);
this.equipmentindex.push(index1);
if (item.picturePath != null) {
this.imgList = JSON.parse(JSON.stringify(item.picturePath));
this.imgList = this.imgList.split(',');
} else {
this.imgList = [];
}
this.inputmodal = true;
this.isshow = true;
this.form = item;
}
}
changeinput(e) {
console.log(e);
}
Back() {
uni.redirectTo({
url: `/pages/equipment/Inspection/index`,
});
}
input(e) {
console.log(e);
}
//单选
radioChange(e) {
console.log(e, '11111');
}
//选择
selscteq() {
if (this.detailsinfolist.equipmentCode) {
uni.navigateTo({
url: `/pages/equipment/equipmentlist?listitem=`,
});
} else {
(this.$refs.uToast as any).show({
title: '请等待页面加载完整',
type: 'default',
});
}
}
// 选中任一radio时由radio-group触发
2 years ago
radioGroupChange(item, value, index, index1) {
console.log(item, value, index, index1);
this.equipmentindex = [];
this.radiomodal = false;
this.inputmodal = false;
2 years ago
this.equipmentindex.push(index);
this.equipmentindex.push(index1);
if (item.picturePath != null) {
this.imgList = JSON.parse(JSON.stringify(item.picturePath));
this.imgList = this.imgList.split(',');
} else {
this.imgList = [];
}
if (value == 0) {
this.isshow = true;
this.radiomodal = true;
this.form = item;
}
}
2 years ago
async onLoad(options) {
let str = decodeURIComponent(options.listitem);
let orderNo = decodeURIComponent(options.equipmentCode);
if (str) {
this.detailsinfo = JSON.parse(str);
2 years ago
let query = {
orderCode: this.detailsinfo.orderCode,
};
await this.model.getInspectionOrderInfo(query);
this.detailsinfolist = this.model.OrderInfList;
if (orderNo != 'null') {
this.orderNo = orderNo;
this.search(this.orderNo);
}
}
}
created() {
this.onLoad;
}
change(index) {
this.current = index;
}
//模态框图片上传
confirm() {
2 years ago
console.log((this as any).uUpload, 'sssss', this.equipmentindex);
console.log(this.detailsinfolist.detailList[this.equipmentindex[0]].standardList[this.equipmentindex[1]]);
if (this.radiomodal) {
2 years ago
if (this.imgList.length == 0) {
this.detailsinfolist.detailList[this.equipmentindex[0]].standardList[this.equipmentindex[1]].picturePath = null;
} else {
this.imgList = this.imgList.join(',');
this.detailsinfolist.detailList[this.equipmentindex[0]].standardList[this.equipmentindex[1]].picturePath = this.imgList;
console.log(this.detailsinfolist.detailList[this.equipmentindex[0]].standardList[this.equipmentindex[1]], this.imgList);
}
} else if (this.inputmodal) {
2 years ago
if (this.imgList.length == 0) {
this.detailsinfolist.detailList[this.equipmentindex[0]].standardList[this.equipmentindex[1]].picturePath = null;
} else {
this.imgList = this.imgList.join(',');
this.detailsinfolist.detailList[this.equipmentindex[0]].standardList[this.equipmentindex[1]].picturePath = this.imgList;
console.log(this.detailsinfolist.detailList[this.equipmentindex[0]].standardList[this.equipmentindex[1]], this.imgList);
}
}
}
cancel() {
2 years ago
this.isshow = false;
if (this.detailsinfolist.detailList[this.equipmentindex[0]].standardList[this.equipmentindex[1]].picturePath == null) {
this.imgList = [];
} else {
this.imgList = this.detailsinfolist.detailList[this.equipmentindex[0]].standardList[this.equipmentindex[1]].picturePath;
this.imgList = this.imgList.split(',');
}
}
scrollLeft() {
return 222 * (this.imgList.length + 1);
}
showScreenImg(i) {
2 years ago
let list = this.imgList;
uni.previewImage({
current: i,
urls: list,
// loop: true
});
}
chooseImg() {
2 years ago
uni.chooseImage({
count: 9, //默认9
// sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'],
success: (res) => {
// uni.showLoading();
//console.log('/////',res);
let tempFilePaths: any = res.tempFilePaths;
// (this.$refs.uToast as any).show({
// title: '成功',
// type: 'success',
// });
// uni.navigateBack({});
// } else {
// (this.$refs.uToast as any).show({
// title: '失败',
// type: 'error',
// });
tempFilePaths.map((item) => {
uni.uploadFile({
2 years ago
url: 'http://192.168.202.20:9000/prod-api/file/upload',
// url: '/dev-api/file/upload',
2 years ago
fileType: 'image',
filePath: item,
header: {
Authorization: 'Bearer ' + session.user?.access_token,
// 'cosmo-env-sitecode': this.$store.state.siteCode
},
name: 'file',
// formData: {
// materialCode: this.materialObj.materialCode,
// },
success: (res) => {
uni.hideLoading();
if (!res.data) {
// this.$refs.toastRef.show({
// type:"error",
// text:res.msg
// })
return;
}
let data = JSON.parse(res.data);
this.imgList = [...this.imgList, data.data.url];
//this.imgListName = [...this.imgListName,data.fileName];
//this.picUrls = this.imgList.join(",");
//this.picNames = this.imgListName.join(",");
uni.hideLoading();
},
fail: (err) => {
console.log(err);
// this.$refs.toastRef.show({
// type:"error",
// text:"上传失败!"
// })
uni.hideLoading();
},
});
});
},
});
}
deleteImg(index) {
2 years ago
this.imgList = JSON.parse(JSON.stringify(this.detailsinfolist.detailList[this.equipmentindex[0]].standardList[this.equipmentindex[1]].picturePath));
this.imgList = this.imgList.split(',');
this.imgList.splice(index, 1);
}
scanCodeOne() {
mpaasScanModule.mpaasScan(
{
// 扫码识别类型参数可多选qrCode、barCode
// 如不设置,默认识别所有扫码类型,可能有些许影响识别效率
scanType: ['qrCode', 'barCode'],
// 是否隐藏相册默认false不隐藏
hideAlbum: false,
},
(ret) => {
// uni.showModal({
// title: '扫码结果',
// // 返回值中,有三个参数 resp_code、resp_message、resp_result
// // resp_code 表示返回结果值10用户取消11其他错误1000成功
// // resp_message 表示返回结果信息
// // resp_result 表示扫码结果,只有成功才会有返回
// content: JSON.stringify(ret),
// showCancel: false,
// confirmText: '确定',
// });
if (ret.resp_message == 'success') {
this.orderNo = ret.resp_result;
this.search(this.orderNo);
// uni.navigateTo({
// url: `/pages/quality/Materialinspection/web?listitem=` + encodeURIComponent(ret.resp_result),
// });
} else {
this.customToast(ret.resp_result);
}
},
);
}
async onSubmit() {
if (this.orderNo == '' || this.orderNo.length == 0) {
// this.customToast('请扫码设备编码');
(this.$refs.uToast as any).show({
title: '请扫码设备编码',
type: 'default',
});
2 years ago
return;
}
this.detailsinfolist.detailList.forEach((item) => {
2 years ago
if (item.standardList.length > 0) {
item.standardList.forEach((item1) => {
if (item1.standardType == 'quantify') {
if (item1.actualValue == null || item1.actualValue == '') {
2 years ago
// console.log(this.isvalue);
this.isvalue = true;
}
}
});
}
});
// i
2 years ago
if (this.isvalue) {
(this.$refs.uToast as any).show({
title: '检查标准不能为空',
type: 'default',
});
return;
}
let query = this.detailsinfolist;
2 years ago
await this.model.updateInspectionRecord(query);
if (this.model.SubmitCode == '200') {
(this.$refs.uToast as any).show({
title: '成功',
type: 'default',
2 years ago
});
setTimeout(() => {
// uni.navigateBack({});
uni.redirectTo({
url: `/pages/equipment/Inspection/index`,
});
}, 1000);
2 years ago
} else {
(this.$refs.uToast as any).show({
title: '失败',
type: 'default',
2 years ago
});
}
}
search(value) {
if (value == this.detailsinfolist.equipmentCode) {
this.isaccord = true;
} else {
(this.$refs.uToast as any).show({
title: '失败请扫码正确条码',
type: 'default',
});
this.isaccord = false;
}
}
}
</script>
<style lang="scss" scoped>
.page-product-receipt {
background: #f2f2f2 linear-gradient(0deg, #f2f2f2 0%, #f8262c 51%, #d9001b 100%) no-repeat;
background-size: 100% 600rpx;
padding: 118rpx 30rpx 162rpx;
min-height: 100%;
.header {
position: fixed;
top: 0rpx;
left: 0;
right: 0;
z-index: 99;
display: flex;
height: 120rpx;
line-height: 88rpx;
color: #fff;
font-size: 34rpx;
font-weight: 500;
text-align: center;
padding: 45rpx 0rpx 0rpx;
.title {
flex: 3;
}
.left,
.right {
flex: 1;
}
.icon {
display: flex;
justify-content: center;
align-items: center;
width: 88rpx;
height: 88rpx;
}
}
.list {
margin-top: 15px;
width: 367px;
border-radius: 5px;
border: rgba(121, 121, 121, 1) solid 1px;
background-color: #ffffff;
padding: 7px 8px 7px 12px;
box-sizing: border-box;
.item-name {
.quest {
// width: 367px;
// border-radius: 5px;
// border: rgba(121, 121, 121, 1) solid 1px;
// background-color: #ffffff;
padding: 7px 8px 7px 12px;
box-sizing: border-box;
text-align: center;
font-size: 18px;
font-weight: 600;
color: black;
}
.details {
display: flex;
font-size: 16px;
font-weight: 600;
// justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
}
.single-left {
display: flex;
// align-items: center;
// justify-content: space-around;
text-align: center;
margin-top: 12px;
margin-bottom: 20px;
border: 1px solid #eee;
}
.item {
margin-top: 15px;
width: 344px;
border-radius: 5px;
border: rgba(121, 121, 121, 1) solid 1px;
background-color: #ffffff;
padding: 7px 8px 7px 8px;
box-sizing: border-box;
.item1 {
margin-bottom: 3px;
white-space: 1px;
2 years ago
font-size: 15px;
font-weight: 600;
}
.item2 {
display: flex;
align-content: center;
justify-content: space-between;
.select {
font-size: 15px;
font-weight: 400;
display: flex;
// margin-left: 19px;
}
.input-box {
font-size: 13px;
font-weight: 400;
display: flex;
align-content: center;
margin-top: 2px;
.input {
font-size: 12px;
width: 65px;
padding: 1px 8px;
height: 20px;
box-sizing: border-box;
border: 1px solid #b6b6b6;
margin-left: 6px;
display: inline-block;
margin-right: 6px;
border-radius: 4px;
position: relative;
}
}
}
}
}
.bottom-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 99;
background: #ffffff;
box-shadow: 0 1rpx 20rpx 0 rgba(128, 128, 128, 0.2);
padding: 20rpx;
}
.modal {
.upload-name {
padding: 10px 20px;
.name {
font-size: 17px;
font-weight: 600;
}
}
.photoList {
display: flex;
padding-top: 12rpx;
.chooseBtn {
width: 202rpx;
height: 202rpx;
background: #fafafa;
border-radius: 12rpx;
border: 2rpx dashed #e2e2e2;
display: flex;
justify-content: center;
align-items: center;
.inner {
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.desc {
font-size: 28rpx;
font-weight: 400;
color: #24252a;
line-height: 40rpx;
}
.img {
width: 50rpx;
height: 50rpx;
margin-bottom: 6rpx;
}
}
.photoBox {
width: 202rpx;
height: 202rpx;
background: #fafafa;
border-radius: 12rpx;
position: relative;
.closeBtn {
position: absolute;
top: -12rpx;
right: -12rpx;
z-index: 2;
width: 36rpx;
height: 36rpx;
.img {
width: 36rpx;
height: 36rpx;
}
}
.img {
width: 202rpx;
height: 202rpx;
border-radius: 12rpx;
}
}
.itemBox {
flex: 0 0 202rpx;
margin-right: 20rpx;
&:last-child {
margin-right: 0;
}
}
}
}
::v-deep .yjy-switch-container .yjy-switch-item {
width: 100%;
}
::v-deep .yjy-switch-container {
width: 50%;
}
::v-deep .u-radio__label {
font-size: 13px;
}
::v-deep #input-box1 .u-input__input {
width: 50px;
max-height: 15px;
font-size: 13px;
}
// width: 240px;
// overflow-y: scroll;
}
</style>