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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!-- 扫描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">
<div class="quest">工单号: {{ detailsinfolist.orderCode }}</div>
<div class="details">
<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">
<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>
<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>
<div class="item1 item2" v-if="item1.standardType == 'quantify'">
<div>检查标准: {{ item1.standardName }}</div>
<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="" />
单位: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">
<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';
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;
// 详细
detailsinfo: any = {};
detailsinfolist: any = {};
detailsinfocontent: any = {};
// 模态框
isshow = false;
inputmodal = false;
isvalue = false;
ischecked = false;
radiomodal = false;
// 条码是否一样
isaccord = false;
// 设备信息
equipmentdata: any = [];
listselect: any = [
{
type: 1,
name: '符合标准',
radiovalue: null,
},
{
type: 0,
name: '未达标',
radiovalue: null,
},
];
// 设备index equipment
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 = [];
deleteimgUrlListcope: any = [];
orderNoItemList: any = {};
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;
// }
}
}
// 输入框焦点
blur(item, value, index, index1) {
console.log(item, value, index, index1);
this.radiomodal = false;
this.inputmodal = false;
if (value == null || value == '') {
this.isvalue = true;
} else {
this.isvalue = false;
}
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触发
radioGroupChange(item, value, index, index1) {
console.log(item, value, index, index1);
this.equipmentindex = [];
this.radiomodal = false;
this.inputmodal = false;
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;
}
}
async onLoad(options) {
let str = decodeURIComponent(options.listitem);
let orderNo = decodeURIComponent(options.equipmentCode);
if (str) {
this.detailsinfo = JSON.parse(str);
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() {
console.log((this as any).uUpload, 'sssss', this.equipmentindex);
console.log(this.detailsinfolist.detailList[this.equipmentindex[0]].standardList[this.equipmentindex[1]]);
if (this.radiomodal) {
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) {
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() {
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) {
let list = this.imgList;
uni.previewImage({
current: i,
urls: list,
// loop: true
});
}
chooseImg() {
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({
url: 'http://192.168.202.20:9000/prod-api/file/upload',
// url: '/dev-api/file/upload',
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) {
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',
});
return;
}
this.detailsinfolist.detailList.forEach((item) => {
if (item.standardList.length > 0) {
item.standardList.forEach((item1) => {
if (item1.standardType == 'quantify') {
if (item1.actualValue == null || item1.actualValue == '') {
// console.log(this.isvalue);
this.isvalue = true;
}
}
});
}
});
// i
if (this.isvalue) {
(this.$refs.uToast as any).show({
title: '检查标准不能为空',
type: 'default',
});
return;
}
let query = this.detailsinfolist;
await this.model.updateInspectionRecord(query);
if (this.model.SubmitCode == '200') {
(this.$refs.uToast as any).show({
title: '成功',
type: 'default',
});
setTimeout(() => {
uni.navigateBack({});
// uni.redirectTo({
// url: `/pages/equipment/Inspection/index`,
// });
}, 1000);
} else {
(this.$refs.uToast as any).show({
title: '失败',
type: 'default',
});
}
}
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;
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>