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.

624 lines
18 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="uni.navigateBack({})" />
</view>
<view class="title">故障报修</view>
<view class="right"></view>
</view>
<u-form class="form" ref="form" label-width="180rpx">
<!-- 单号 -->
<view class="single">
<view class="single-left">
<view style="width: 42px">条码:</view>
<u-search placeholder="请扫描" :focus="shouciFocus" v-model="orderNo" :show-action="false" @search="query"></u-search>
</view>
<view class="single-right">
<u-button type="primary" @click="query">查询</u-button>
</view>
<!-- <view class="single-right">-->
<!-- <u-button type="primary" @click="selscteq()">选择</u-button>-->
<!-- </view>-->
</view>
</u-form>
<view class="list listbottom" v-show="isaccord">
<div class="item-name">
<!-- <div class="quest">工单号: </div> -->
<div class="details">
<div>设备编码:{{ formdata.equipmentCode }}</div>
</div>
<div class="details">
<div>设备名称:{{ formdata.equipmentName }}</div>
</div>
<div class="details">
<div>位置:{{ formdata.equipmentLocation }}</div>
<!-- <div style="margin-left: 42px">工作中心: </div> -->
</div>
<u-form class="form listform" ref="form" label-width="140rpx">
<!-- 机台 -->
<!-- <u-form-item label="联系方式:">
<u-input v-model="formdata.orderConnection" placeholder="" type="text" />
</u-form-item> -->
<u-form-item label="故障描述:">
<jPicker sureColor="#ff0000" :moren="moren" @bindpicker="selectProductlocCode" @bindinput="selectbindinput" showKey="label" valKey="value" :val="orderDesc.value" :options="model.locList" />
</u-form-item>
<u-form-item label="故障描述补充">
<u-input v-model="formdata.attr1" placeholder="请填写故障描述补充" type="textarea" :border="true" :height="100" :auto-height="true" />
</u-form-item>
<!-- 机台 -->
<u-form-item class="listbottom1" label="故障时间:">
<u-input @click="blur()" type="select" v-model="orderBreakdownTime" />
<u-picker mode="time" :default-time="defaulttime" :params="params" v-model="showtime" @confirm="timeConfirm" :timeEnd="endTime"></u-picker>
</u-form-item>
<u-form-item label="上传图片:">
<scroll-view class="scroll-view_H" scroll-x="true" :scroll-left="scrollLeft()">
<view class="photoList photoList1">
<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>
</u-form-item>
</u-form>
</div>
</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="uni.navigateBack({})"></u-button>
</u-col>
</u-row>
</view>
<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 moment from 'moment';
//import store from '@/store';
@Component({
components: {
chooseOne,
jPicker,
},
})
export default class ChangePalletNew extends BasePage {
params: any = { year: true, month: true, day: true, hour: true, minute: true, second: true };
endTime: any = {};
model = model;
moren = '选择故障描述';
shouciFocus = true;
zaiciFocus = false;
switchListText = [
{
title: '是',
value: 0,
},
{
title: '否',
value: 1,
},
];
orderNoItemList: any = {};
productCodeList: any = {};
productCodelocList: any = {};
// remove: any = {};
// selectItem(e: any) {
// this.remove = e.pickerName;
// }
orderNo: any = '';
location: any = '';
locationStatus: any = 1;
// 照片
action: any = 'http://www.example.com/upload';
fileList: any = [];
filesArr: any = [];
imgList: any = [];
imgUrlList: any = [];
deleteimgUrlList: any = [];
deleteimgUrlListcope: any = [];
picturePath: any = 'https://cdn.uviewui.com/uview/swiper/1.jpg,https://cdn.uviewui.com/uview/swiper/2.jpg';
formdata: any = {
equipmentCode: '',
equipmentName: '',
equipmentLocation: '',
orderDesc: '',
orderBreakdownTime: '',
attr1: '',
fileList: '',
orderRepairman: '',
};
orderBreakdownTime: any = '';
isaccord = false;
showtime = false;
defaulttime: any = '';
orderDesc: any = {};
newSelect: any = {};
async onReady() {
this.defaulttime = moment().format('YYYY-MM-DD HH:mm:ss');
console.log(this.defaulttime);
// await this.model.getDictList();
//this.remove = this.model.WlList[0];
}
onShow() {
if (this.model.rowdata.length == 0) {
this.model.rowdatanull();
} else {
this.orderNo = '';
this.orderNo = this.model.rowdata[0].equipmentCode;
this.query();
console.log('111');
}
}
async query() {
this.formdata = {};
this.imgList = [];
this.orderDesc = {};
// uni.showLoading({ title: '加载中' });
// this.uni.showToast({ title: '成功' });
// this.customToast('请扫码设备编码');
if (this.orderNo == '' || this.orderNo.length == 0) {
(this.$refs.uToast as any).show({
title: '请扫码条码',
type: 'default',
});
return;
}
await this.model.queryOrderNo(this.orderNo);
//console.log('???',model.orderNoItemList)
if (model.orderNoItemList == undefined) {
this.isaccord = false;
(this.$refs.uToast as any).show({
title: '该条码未查到数据,请使用正确的条码!',
type: 'default',
});
} else {
if (this.orderNoItemList.productCode == 'EmptyPallet') {
this.isaccord = false;
(this.$refs.uToast as any).show({
title: '该条码未查到数据,请使用正确的条码!',
type: 'default',
});
return;
} else {
this.orderNoItemList = model.orderNoItemList;
this.formdata = this.orderNoItemList;
this.isaccord = true;
}
}
const equipmentTypeCode = model.orderNoItemList.equipmentTypeCode;
let params = {
attr1: equipmentTypeCode,
};
await this.model.getFaultDescriptionList(params);
}
selscteq() {
uni.navigateTo({
url: `/pages/equipment/equipmentlist?listitem=`,
});
}
generateGUID() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (Math.random() * 16) | 0,
v = c === 'x' ? r : (r & 0x3) | 0x8;
return v.toString(16);
});
}
async selectProductlocCode(e: any) {
this.orderDesc = e.pickerName;
// await this.model.getpalletDestination(params);
}
async selectbindinput(e: any) {
model.locList.push(e.pickerName);
this.orderDesc = e.pickerName;
// await this.model.getpalletDestination(params);
}
timeConfirm(e) {
this.orderBreakdownTime = e.year + '-' + e.month + '-' + e.day + ' ' + e.hour + ':' + e.minute + ':' + e.month;
this.formdata.orderBreakdownTime = this.orderBreakdownTime;
console.log(e, this.formdata.orderBreakdownTime);
}
async onsubmit() {
if (this.orderNo == '' || this.orderNo.length == 0) {
(this.$refs.uToast as any).show({
title: '请扫码设备条码',
type: 'default',
});
return;
}
if ((this.orderDesc.value == '' || this.orderDesc.value == undefined) && (this.formdata.attr1 == '' || this.formdata.attr1 == undefined)) {
(this.$refs.uToast as any).show({
title: '故障描述或补充必须填写一项',
type: 'default',
});
return;
}
// if (this.orderDesc.value == '' || this.orderDesc.value == undefined) {
// (this.$refs.uToast as any).show({
// title: '故障描述不能为空',
// type: 'default',
// });
// return;
// }
if (this.formdata.orderBreakdownTime == '' || this.formdata.orderBreakdownTime == undefined) {
(this.$refs.uToast as any).show({
title: '请输入故障时间',
type: 'default',
});
return;
}
// 获取年份、月份、日期、小时、分钟和秒
let fileList = this.imgList.join(',');
let params = {
equipmentCode: this.formdata.equipmentCode,
equipmentName: this.formdata.equipmentName,
equipmentLocation: this.formdata.equipmentLocation,
orderDesc: this.orderDesc.value ? this.orderDesc.value : this.formdata.attr1,
orderBreakdownTime: this.formdata.orderBreakdownTime,
fileList: fileList,
orderSource: '手持PDA',
orderRepairman: '',
//productionState: this.productCodeList.value,
};
console.log(params, this.formdata, this.imgUrlList);
await this.model.addRepairRecord(params);
if (model.SubmitCode.code == 200) {
(this.$refs.uToast as any).show({
title: model.SubmitCode.msg, //错误信息展示
type: 'default',
});
// this.model.getDictList();
this.isaccord = false;
this.Clear(); //清除数据
} else {
(this.$refs.uToast as any).show({
title: model.SubmitCode.msg, //错误信息展示
type: 'default',
});
}
}
blur() {
console.log(1);
this.showtime = true;
}
focus() {
console.log(2);
this.showtime = true;
}
Clear() {
this.orderNo = '';
this.formdata = {};
this.imgList = [];
this.orderDesc = {};
// this.shouciFocus = false;
this.model.empty();
// this.$nextTick(() => {
// this.shouciFocus = true;
// });
}
switchChangeFun(e) {
//console.log(e);
this.locationStatus = e.swithcSelectItem.value;
}
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;
tempFilePaths.map((item) => {
uni.uploadFile({
url: 'http://192.168.202.34:30000/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) => {
console.log(res);
uni.hideLoading();
if (!res.data) {
// this.$refs.toastRef.show({
// type:"error",
// text:"上传失败!"
// })
return;
}
let data = JSON.parse(res.data);
console.log('123dddd', data);
this.imgList = [...this.imgList, data.data.url];
//this.imgListName = [...this.imgListName,data.fileName];
// this.imgUrlList = [...this.imgUrlList, imgUrlList[index]];
//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.imgUrlList.splice(index, 1);
}
}
</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;
}
}
.form {
background-color: #fff;
padding: 40rpx;
padding-right: 10px;
border-radius: 15px 15px 15px 15px;
.u-form-item {
padding: 30rpx 0;
line-height: 35rpx;
}
.single {
width: 100%;
height: 100rpx;
display: flex;
.single-left {
width: 80%;
height: 100%;
display: flex;
view {
width: 142rpx;
height: 100%;
line-height: 100rpx;
}
}
.single-right {
button {
margin-top: 15rpx;
width: 25px;
height: 70rpx;
background-color: #fa3534;
font-size: 12px;
}
button:first-child {
margin-left: 3px;
}
}
}
.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;
}
}
}
}
.listform {
padding: 0px;
}
.list {
background-color: #ffffff;
padding: 21px;
box-sizing: border-box;
margin-top: 10px;
border-radius: 15px 15px 15px 15px;
border: rgba(121, 121, 121, 1) solid 1px;
.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;
}
}
}
.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;
}
::v-deep .yjy-switch-container .yjy-switch-item {
width: 100%;
}
::v-deep .yjy-switch-container {
width: 50%;
}
.listbottom ::v-deep .uni-input-input {
width: 94%;
padding: 5px;
}
.listbottom1 ::v-deep .uni-input-input {
border: 1px solid black;
width: 94%;
padding: 5px;
}
::v-deep .u-form-item {
padding: 6px 0;
}
::v-deep .uni-textarea-textarea {
border: 1px solid black;
width: 94%;
padding: 5px;
}
.photoList1 {
width: 220px;
overflow-y: scroll;
border: 1px solid black;
}
}
</style>