| | |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="flex_center titleFont" style="margin: 0rpx 20rpx 10rpx;line-height: 56rpx;"> |
| | | <view style="color: #fff;margin-right: 6rpx;">*</view> 不良数量 |
| | | <view style="margin-left: 20rpx;"> |
| | | <view class='inputClass'> |
| | | <u--input placeholder="请输入" border="surround" @change='ngqtyChange' type='number' |
| | | v-model="ngqty"> |
| | | </u--input> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <view style="display: flex;" class="titleFont"> |
| | | <view style="color: #fff;margin-right: 6rpx;">*</view> 不良原因 |
| | | </view> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view @click='badSheetClick' class="custominputClass"> |
| | | <view v-show='badSheetValue.length===0' style="color: rgb(192, 196, 204);">请选择</view> |
| | | <view v-show='badSheetValue.length!==0' class="ellipsis" style="width: 390rpx;"> |
| | | {{badSheetValue}} |
| | | </view> |
| | | <u-icon :name="!badSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <!-- <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <view style="display: flex;" class="titleFont"> |
| | | <view style="color: #fff;margin-right: 6rpx;">*</view> 收料备注 |
| | | </view> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view class='inputClass'> |
| | | <u--textarea v-model="notes" placeholder="请输入"></u--textarea> |
| | | </view> |
| | | </view> |
| | | </view> --> |
| | | |
| | | |
| | | </view> |
| | |
| | | |
| | | </view> |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | |
| | | |
| | | <view class="head marginLeft10 marginRight10" style="padding-bottom: 20rpx;"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title"> |
| | | 不良统计 |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="flex_column "> |
| | | |
| | | |
| | | <u-button type="primary" :plain="true" icon='plus-circle' text="添加" |
| | | style="width: 90%;margin: 20rpx auto;" @click="add"></u-button> |
| | | |
| | | |
| | | <view v-for='(item,index) in ngqtyArr' class="badSheetClass" :key="item.uid"> |
| | | |
| | | <view class="badNumber">{{index+1}}</view> |
| | | <u-icon name="trash" size="20" class="trash" v-if="ngqtyArr.length!==1" |
| | | @click="trashDelete(index)" color="rgb(0, 102, 255)"></u-icon> |
| | | |
| | | <view class="flex_center titleFont" style="margin: 0rpx 20rpx 10rpx;line-height: 56rpx;"> |
| | | <view style="color: #fff;margin-right: 6rpx;">*</view> 不良数量: |
| | | <view class='inputClass'> |
| | | <u--input placeholder="请输入" border="surround" :adjustPosition='false' type='number' |
| | | v-model="item.ngqty"></u--input> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <view style="display: flex;" class="titleFont"> |
| | | <view style="color: #fff;margin-right: 6rpx;">*</view> 不良原因: |
| | | </view> |
| | | <view @click='badSheetClick(item)' class="custominputClass"> |
| | | <view v-show='item.badSheetValue.length===0' style="color: rgb(192, 196, 204);">请选择 |
| | | </view> |
| | | <view v-show='item.badSheetValue.length!==0' class="ellipsis" |
| | | style="width: 390rpx;"> |
| | | {{item.badSheetValue}} |
| | | </view> |
| | | <u-icon :name="item.arrowDown?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | |
| | | <u-divider></u-divider> |
| | | |
| | | |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | |
| | | |
| | | <u-action-sheet v-if="topContent.length!==0" :actions="badSelectArr" :safeAreaInsetBottom='true' |
| | | :closeOnClickOverlay="true" :closeOnClickAction="true" @close="badSheetShow=false" :show="badSheetShow" |
| | | @select='badSheetSelect'> |
| | | <view style="min-height: 100rpx;padding: 20rpx 20rpx 30rpx 20rpx;"> |
| | | <u-checkbox-group @change="checkboxChange" size='20px' v-model="checkBoxValue" iconPlacement="right" |
| | | placement="column"> |
| | | <view v-for="(item,index) in badSelectArr"> |
| | | <u-checkbox activeColor="rgb(0, 102, 255)" labelSize='18' :key="item.code+index" |
| | | :name='item.name' :label="item.name"> |
| | | </u-checkbox> |
| | | <u-divider :key="item.code"></u-divider> |
| | | </view> |
| | | </u-checkbox-group> |
| | | </view> |
| | | </u-action-sheet> |
| | | |
| | | |
| | | |
| | | |
| | | <u-picker v-if="topContent.length!==0" :show="WXSheetShow" :columns="WXColumns" :itemHeight='55' |
| | |
| | | :closeOnClickOverlay='true' @close='userSheetShow=false' @confirm='userPickerConfirm' |
| | | @cancel='userSheetShow=false'> |
| | | </u-picker> |
| | | |
| | | |
| | | <!-- 不良原因 --> |
| | | <u-action-sheet v-if="topContent.length!==0" :actions="badSelectArr" :safeAreaInsetBottom='true' |
| | | :closeOnClickOverlay="true" :closeOnClickAction="true" @close="badSelectClose" :show="badSheetShow" |
| | | @select='badSheetSelect'> |
| | | <view style="min-height: 100rpx;"> |
| | | <u-checkbox-group @change="checkboxChange" size='20px' v-model="checkBoxValue" iconPlacement="right" |
| | | placement="column"> |
| | | <view v-for="(item,index) in badSelectArr"> |
| | | <u-checkbox activeColor="rgb(0, 102, 255)" labelSize='18' :key="item.code+index" |
| | | :name='item.name' :label="item.name"> |
| | | </u-checkbox> |
| | | </view> |
| | | </u-checkbox-group> |
| | | </view> |
| | | </u-action-sheet> |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | |
| | | badSheetValue: '', |
| | | |
| | | |
| | | ngqtyArr: [{ |
| | | uid: new Date().getTime(), |
| | | ngqty: '', |
| | | badSheetValue: '', |
| | | arrowDown: true //向下箭头 |
| | | }, |
| | | // { |
| | | // ngqty: '', |
| | | // badSheetValue: '', |
| | | // arrowDown: true //向下箭头 |
| | | // }, |
| | | ], //不良数量、不良原因数组 |
| | | |
| | | |
| | | |
| | | notes: null //备注 |
| | | |
| | | |
| | |
| | | this.init() |
| | | |
| | | |
| | | this.getMesOrderStepStart('MO-2023-09-0002_1;106') |
| | | // this.getMesOrderStepStart('MO-2023-09-0002_1;106') |
| | | |
| | | |
| | | this.handleSelectAllApi() |
| | |
| | | this.userColumns = [res.data.map(i => i.username)] |
| | | }, |
| | | |
| | | async getCustomerPermissions(val) { |
| | | const data = { |
| | | orderstepqrcode: val |
| | | } |
| | | const res = await CustomerPermissions(this.global.formatData(data)) |
| | | async getCustomerPermissions() { |
| | | |
| | | const res = await CustomerPermissions() |
| | | this.WXSheetList = res.data |
| | | this.WXColumns = [res.data.map(i => i.name)] |
| | | }, |
| | |
| | | |
| | | }); |
| | | }, |
| | | badSheetClick() { |
| | | if (!this.ngqty) { |
| | | badSheetClick(item) { |
| | | if (!item.ngqty) { |
| | | return uni.$u.toast('请先填写不良数量!') |
| | | } |
| | | item.arrowDown = !item.arrowDown |
| | | |
| | | this.checkBoxValue = item.badSheetValue.split(',') |
| | | this.badSheetShow = true |
| | | }, |
| | | |
| | |
| | | this.userSheetShow = false |
| | | }, |
| | | |
| | | ngqtyChange(val) { |
| | | if (!parseFloat(val)) { |
| | | this.badSheetValue = '' |
| | | this.checkBoxValue = '' |
| | | } |
| | | // 添加 |
| | | add() { |
| | | |
| | | // if (this.ngqtyArr.find(i => i.badSheetValue === '')) { |
| | | // return uni.$u.toast('请先完善前面不良选项!') |
| | | // } |
| | | |
| | | this.ngqtyArr.unshift({ |
| | | uid: new Date().getTime(), |
| | | ngqty: '', |
| | | badSheetValue: '', |
| | | arrowDown: true //向下箭头 |
| | | }) |
| | | |
| | | }, |
| | | |
| | | //删除 |
| | | trashDelete(index) { |
| | | this.ngqtyArr.splice(index, 1) |
| | | }, |
| | | |
| | | badSelectClose() { |
| | | let index = this.ngqtyArr.findIndex(i => !i.arrowDown) |
| | | |
| | | this.ngqtyArr[index].badSheetValue = this.checkBoxValue.join(',') |
| | | this.ngqtyArr[index].arrowDown = true |
| | | |
| | | this.checkBoxValue = [] |
| | | this.badSheetShow = false |
| | | }, |
| | | |
| | | |
| | |
| | | |
| | | let t = this.topContent[0].list.find(i => i.tp === this.WXSheetValue) |
| | | |
| | | if (!this.ngqty && (parseFloat(this.sqty) > parseFloat(t.fqty) - parseFloat(t.sqty) - parseFloat(t |
| | | .ng_qty) - parseFloat(t.laborbad_qty) - parseFloat(t.materielbad_qty))) { |
| | | if (!t) { |
| | | return uni.$u.toast('请选择可收料的供应商!') |
| | | } |
| | | |
| | | if (!this.ngqtyArr[0].ngqty && (parseFloat(this.sqty) > parseFloat(t.fqty) - parseFloat(t.sqty) - |
| | | parseFloat(t |
| | | .ng_qty) - parseFloat(t.laborbad_qty) - parseFloat(t.materielbad_qty))) { |
| | | return uni.$u.toast('收料数量不能大于该供应商的可收收料!') |
| | | } |
| | | if (this.ngqty && (parseFloat(this.sqty) + parseFloat(this.ngqty) > parseFloat(t.fqty) - parseFloat(t |
| | | |
| | | // 不良原因 |
| | | const defectlist = [] |
| | | //不良数量 |
| | | let ngqtyNumber = 0 |
| | | |
| | | this.ngqtyArr.forEach(i => { |
| | | if (i.badSheetValue.toString().length > 0) { |
| | | let codeArr = [] |
| | | ngqtyNumber += parseFloat(i.ngqty) |
| | | i.badSheetValue.split(',').forEach(j => { |
| | | codeArr.push(this.badSelectArr.find(i => i.name === j).code) |
| | | }) |
| | | defectlist.push({ |
| | | badqty: i.ngqty, |
| | | defect_code: codeArr.join(',') |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | if ((parseFloat(this.sqty) + parseFloat(ngqtyNumber) > parseFloat(t.fqty) - parseFloat(t |
| | | .sqty) - parseFloat(t.ng_qty) - parseFloat(t.laborbad_qty) - parseFloat(t.materielbad_qty))) { |
| | | return uni.$u.toast('收料数量+不良数量不能大于该供应商的可收收料!') |
| | | } |
| | | |
| | | if (this.ngqty && !this.badSheetValue) { |
| | | return uni.$u.toast('不良原因不能为空!') |
| | | } |
| | | |
| | | let badcode = [] |
| | | |
| | | if (this.badSheetValue.length > 0) { |
| | | this.badSelectArr.forEach(i => { |
| | | if (this.badSheetValue.split(',').includes(i.name)) { |
| | | badcode.push(i.code) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // const header = { |
| | | // 'Content-Type': 'application/x-www-form-urlencoded', |
| | | // 'rediskey': uni.getStorageSync('rediskey'), |
| | | // 'admin': uni.getStorageSync('usercode'), |
| | | // 'username': encodeURIComponent(uni.getStorageSync('username')), |
| | | // 'navTabId': uni.getStorageSync('usercode'), |
| | | // 'userid': uni.getStorageSync('userid'), |
| | | // 'guid': uni.getStorageSync('guid'), |
| | | // 'usertype': 'APP' |
| | | // } |
| | | |
| | | |
| | | const D = { |
| | |
| | | sqty: this.sqty, // 收料数量 |
| | | // ngqty: !this.ngqty ? 0 : this.ngqty, |
| | | remarks: this.notes, |
| | | defectlist: badcode.length > 0 ? [{ |
| | | defect_code: badcode.join(','), |
| | | badqty: this.ngqty |
| | | }] : [], |
| | | defectlist, |
| | | inbarcode: R[0].labcode, //入库条码 |
| | | } |
| | | |
| | |
| | | this.isDisabledSubmitButton = false |
| | | } |
| | | |
| | | |
| | | |
| | | // this.isDisabledSubmitButton = true |
| | | // uni.uploadFile({ |
| | | // url: this.$baseUrl + '/AppProductionManagement/SavaMesOrderStepIn', |
| | | // files: [{ |
| | | // "uri": "/" |
| | | // }], |
| | | // header: header, |
| | | // formData: data, |
| | | // success: (res) => { |
| | | // console.log(res, 77) |
| | | // uni.$u.toast('收料成功!') |
| | | |
| | | // this.WXSheetValue = '' |
| | | // this.userSheetValue = '' |
| | | // this.checkBoxValue = '' |
| | | // this.badSheetValue = '' |
| | | // this.sqty = null |
| | | // this.ngqty = null |
| | | // this.notes = null |
| | | // this.topContent = [] |
| | | |
| | | // this.isDisabledSubmitButton = false |
| | | // }, |
| | | // fail(res) { |
| | | // uni.$u.toast('收料失败!') |
| | | // this.isDisabledSubmitButton = false |
| | | // }, |
| | | // }) |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | display: block; |
| | | } |
| | | |
| | | ::v-deep .u-action-sheet { |
| | | max-height: 600rpx !important; |
| | | overflow: auto !important; |
| | | } |
| | | |
| | | ::v-deep .u-checkbox-label--right { |
| | | padding: 30rpx; |
| | | border-bottom: 1rpx solid #eee; |
| | | } |
| | | |
| | | .custominputClass { |
| | | width: 412rpx; |
| | | display: flex; |
| | |
| | | padding: 0 16rpx; |
| | | line-height: 68rpx; |
| | | } |
| | | |
| | | |
| | | .badSheetClass { |
| | | position: relative; |
| | | } |
| | | |
| | | .badNumber { |
| | | position: absolute; |
| | | top: 20rpx; |
| | | left: 20rpx; |
| | | font-size: 26rpx; |
| | | color: rgb(0, 102, 255) |
| | | } |
| | | |
| | | .trash { |
| | | position: absolute; |
| | | top: 20rpx; |
| | | right: 30rpx; |
| | | font-size: 26rpx; |
| | | } |
| | | </style> |