| | |
| | | </view> |
| | | |
| | | <view v-show="topContent.length!==0"> |
| | | <view class="mainContent" :style="{maxHeight:'1200rpx',overflow: 'scroll'}"> |
| | | <view class="mainContent" :style="{maxHeight:'1260rpx',overflow: 'scroll'}"> |
| | | |
| | | <!-- 报工信息 --> |
| | | <u-gap height="15" bgColor="#eff0f1"></u-gap> |
| | | <u-gap height="5" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style="padding-bottom: 10rpx;"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | |
| | | </view> |
| | | |
| | | <!-- 报工操作 --> |
| | | <u-gap height="15" bgColor="#eff0f1"></u-gap> |
| | | <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 style="display: flex;" class="titleFont"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> 计件方式: |
| | | </view> |
| | | <u-radio-group v-model="reckway"> |
| | | <u-radio-group v-model="reckway" @change='radioGroupChange'> |
| | | <u-radio shape="circle" label="班组" name="班组" labelSize="16"></u-radio> |
| | | <u-radio shape="circle" label="个人" style="margin-left: 20rpx;" name="个人" labelSize="16"> |
| | | </u-radio> |
| | |
| | | </view> |
| | | |
| | | |
| | | <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;" |
| | | v-if="reckway==='个人'"> |
| | | <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <!-- v-if="reckway==='个人'" --> |
| | | <view style="display: flex;" class="titleFont"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> 报工人员: |
| | | </view> |
| | |
| | | |
| | | <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <view style="display: flex;" class="titleFont"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> 设备名称: |
| | | <view style="color: #fff;margin-right: 6rpx;">*</view> 设备名称: |
| | | </view> |
| | | <view @click='epqSheetClick' class="custominputClass"> |
| | | |
| | |
| | | <view class="flex_center titleFont" style="margin: 0rpx 20rpx 10rpx;line-height: 56rpx;"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> 报工数量: |
| | | <view class='inputClass'> |
| | | <u--input placeholder="请输入" border="surround" type='number' v-model="reportqty"> |
| | | <u--input placeholder="请输入" :adjustPosition='false' border="surround" type='number' |
| | | v-model="reportqty"> |
| | | </u--input> |
| | | </view> |
| | | </view> |
| | | |
| | | <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" @change='ngqtyChange' type='number' |
| | | v-model="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' 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 class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;"> |
| | | <view style="display: flex;"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> 操作人员: |
| | | </view> |
| | | <view @click='operSheetClick' class="custominputClass"> |
| | | <view v-show='operSheetValue===""' style="color: rgb(192, 196, 204);">请选择</view> |
| | | <view v-show='operSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{operSheetValue}} |
| | | </view> |
| | | |
| | | <u-icon :name="!operSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> --> |
| | | |
| | | |
| | | <!-- 可能上拉显示 要换成下拉显示 --> |
| | | <!-- <uni-section style="width: 100%;" title=''> |
| | | <uni-data-select v-model="operSheetValue" :clear='false' emptyText :localdata="operSheetList"> |
| | | </uni-data-select> |
| | | </uni-section> |
| | | --> |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 报工人员信息 --> |
| | | <u-gap height="15" v-if="reckway==='班组'" bgColor="#eff0f1"></u-gap> |
| | | <view class="head marginLeft10 marginRight10" v-if="reckway==='班组'"> |
| | | |
| | | <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> |
| | | |
| | | <u-button type="primary" icon='plus-circle' plain |
| | | style="height: 100rpx;width: 98%;margin-top: 10rpx;" @click="addUser" class='addClass' |
| | | text="添加"> |
| | | </u-button> |
| | | |
| | | <view class="flex_between titleFont" style="margin: 20rpx 40rpx 30rpx;"> |
| | | <view>序号</view> |
| | | <view :style="{width:'200rpx'}">人员名称</view> |
| | | <view style="width: 184rpx;">分配比例(%)</view> |
| | | <view>操作</view> |
| | | </view> |
| | | <view class="flex_column "> |
| | | |
| | | |
| | | <view class="flex_column marginLeft20 marginRight20" :key="item.usercode" |
| | | v-for="(item,index) in userArr"> |
| | | <view class="flex_between marginLeft20 marginRight20 contentFont"> |
| | | <view style="width: 60rpx;text-align: center;">{{(index+1)}}</view> |
| | | <view style="width: 200rpx;text-align: center;">{{item.username}}</view> |
| | | <view style="width: 240rpx; text-align: center;color: rgb(41, 121, 255);"> |
| | | <u-number-box @focus='isAsyncChange=true' @blur='isAsyncChange=false' |
| | | :key="item.usercode" :asyncChange='isAsyncChange' step="0.01" :name='item.usercode' |
| | | @change='numberBoxChange' decimal-length="2" :value="item.ratio" inputWidth='110'> |
| | | </u-number-box> |
| | | <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-icon @click="deleteUser(item)" style="width: 50rpx;text-align: center;" name="trash" |
| | | min='0' max='100' color="#2979ff" size="24"> |
| | | </u-icon> |
| | | <u-divider></u-divider> |
| | | |
| | | |
| | | </view> |
| | | <u-divider></u-divider> |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | |
| | | <u-gap height="20" bgColor="#eff0f1"></u-gap> |
| | | |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | |
| | | |
| | | |
| | | |
| | | <u-button size="large" :loading="isDisabledSubmitButton" loadingText="正在提交,请稍等..." type="primary" |
| | | @click="submit" text="报工"> |
| | | </u-button> |
| | | |
| | | <!-- <u-action-sheet :actions="userGroupSheetList" :safeAreaInsetBottom='true' :closeOnClickOverlay="true" |
| | | :closeOnClickAction="true" @close="userGroupSheetShow=false" :show="userGroupSheetShow" |
| | | @select='userGroupSheetSelect'> |
| | | </u-action-sheet> --> |
| | | |
| | | <!-- 生产班组 --> |
| | | <u-picker v-if="topContent.length!==0" :show="userGroupSheetShow" :columns="userGroupColumns" |
| | | :itemHeight='55' :closeOnClickOverlay='true' @close='userGroupSheetShow=false' |
| | | @confirm='userGroupPickerConfirm' @cancel='userGroupSheetShow=false'> |
| | | </u-picker> |
| | | <!-- <u-action-sheet :actions="eqpSheetList" :safeAreaInsetBottom='true' :closeOnClickOverlay="true" |
| | | :closeOnClickAction="true" @close="eqpSheetShow=false" :show="eqpSheetShow" @select='eqpSheetSelect'> |
| | | </u-action-sheet> --> |
| | | |
| | | <!-- 设备名称 --> |
| | | <u-picker v-if="topContent.length!==0" :show="eqpSheetShow" :columns="eqpColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='eqpSheetShow=false' @confirm='eqpPickerConfirm' |
| | | @cancel='eqpSheetShow=false'> |
| | |
| | | |
| | | |
| | | |
| | | <!-- 不良原因 --> |
| | | <u-action-sheet v-if="topContent.length!==0" :actions="badSelectArr" :safeAreaInsetBottom='true' |
| | | :closeOnClickOverlay="true" :closeOnClickAction="true" @close="badSheetShow=false" :show="badSheetShow" |
| | | :closeOnClickOverlay="true" :closeOnClickAction="true" @close="badSelectClose" :show="badSheetShow" |
| | | @select='badSheetSelect'> |
| | | <view style="min-height: 100rpx;padding: 20rpx 20rpx 30rpx 20rpx;"> |
| | | <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" :name='item.name' |
| | | :label="item.name"> |
| | | <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-action-sheet :actions="operSheetList" :safeAreaInsetBottom='true' :closeOnClickOverlay="true" |
| | | :closeOnClickAction="true" @close="operSheetShow=false" :show="operSheetShow" @select='operSheetSelect'> |
| | | </u-action-sheet> --> |
| | | <!-- 报工人员 --> |
| | | <u-action-sheet v-if="topContent.length!==0" :actions="userSelectArrAll" :safeAreaInsetBottom='true' |
| | | :closeOnClickOverlay="true" :closeOnClickAction="true" @close="userSheetShow=false" |
| | | :show="userSheetShow" @select='userSheetSelect'> |
| | | <view style="min-height: 100rpx;padding: 20rpx 20rpx 30rpx 20rpx;"> |
| | | <u-checkbox-group @change="userCheckboxChange" size='20px' v-model="userCheckBoxValue" |
| | | iconPlacement="right" placement="column"> |
| | | <view v-for="(item,index) in userSelectArrAll"> |
| | | <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> |
| | | |
| | | <!-- 报工人员 --> |
| | | <u-picker v-if="topContent.length!==0" :show="operSheetShow" :columns="operColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='operSheetShow=false' @confirm='operPickerConfirm' |
| | | @cancel='operSheetShow=false'> |
| | | </u-picker> |
| | | |
| | | |
| | | <u-modal v-if="topContent.length!==0" :show="modalShow" :showCancelButton='true' cancelText='取消' |
| | | @close="modalShow=false" :closeOnClickOverlay="true" style=" " @cancel="modalCancel" |
| | | @confirm="modalConfirm" title="报工人员" :content='modalContent'> |
| | | |
| | | <uni-section style="width: 100%;" title=''> |
| | | <uni-data-select v-model="userSelectValue" :clear='false' emptyText :localdata="userSelectArr" |
| | | @change="userChange"> |
| | | </uni-data-select> |
| | | </uni-section> |
| | | |
| | | </u-modal> |
| | | |
| | | |
| | | </view> |
| | |
| | | |
| | | <!-- 悬浮球 --> |
| | | <!-- <view |
| | | v-show="topContent.length!==0&&!modalShow&&!userGroupSheetShow&&!eqpSheetShow&&!operSheetShow&&!badSheetShow" |
| | | v-show="topContent.length!==0&&!userGroupSheetShow&&!eqpSheetShow&&!operSheetShow&&!badSheetShow" |
| | | @click="topScanClick"> |
| | | <drag-ball :x='$DeviceInformation.screenWidth*0.8' :y="$DeviceInformation.screenHeight*0.7"></drag-ball> |
| | | </view> --> |
| | |
| | | EqpPermissionsPlus, |
| | | GroupsPermissions, |
| | | GroupsPersonPermissions, |
| | | DefectPermissions |
| | | DefectPermissions, |
| | | SavaMesOrderStepReport, |
| | | LabelBarCode |
| | | } from '../../config/api.js'; |
| | | // import scanCode from '@/components/scan-code/scan-code.vue' |
| | | export default { |
| | |
| | | ], |
| | | |
| | | reportqty: '', //报工数量 |
| | | |
| | | ngqty: '', //不良数量 |
| | | |
| | | ngqtyArr: [{ |
| | | uid: new Date().getTime(), |
| | | ngqty: '', |
| | | badSheetValue: '', |
| | | arrowDown: true //向下箭头 |
| | | }, |
| | | // { |
| | | // ngqty: '', |
| | | // badSheetValue: '', |
| | | // arrowDown: true //向下箭头 |
| | | // }, |
| | | ], //不良数量、不良原因数组 |
| | | |
| | | |
| | | |
| | | |
| | | badSelectArr: [], //不良原因下拉数组 |
| | | badSheetValue: '', //不良原因选中值 |
| | | badSheetShow: false, |
| | |
| | | operSheetShow: false, |
| | | operSheetList: [], //操作人员数组 |
| | | userArr: [], //报工人员信息数组 |
| | | modalShow: false, |
| | | modalContent: '', //模态框数 |
| | | |
| | | |
| | | userSelectValue: '', //下拉选项值 |
| | | userSelectArrAll: [], //所有人员下拉数组 |
| | | userSelectArr: [ |
| | |
| | | userGroupColumns: [], // |
| | | eqpColumns: [], // |
| | | operColumns: [], // |
| | | isAsyncChange: false |
| | | isAsyncChange: false, |
| | | |
| | | userCheckBoxValue: [], |
| | | userSheetShow: false |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | mounted() { |
| | | this.init() |
| | | |
| | | // this.getMesOrderStepStart('MO-2024-01-0004_1;102') |
| | | |
| | | this.getMesOrderStepStart('SGPO20231110_1;101') |
| | | this.getGroupsPermissions() //获取生产班组 |
| | | this.getEqpPermissionsPlus() //获取设备名称 |
| | | this.getDefectPermissions() //获取缺陷下拉 |
| | | this.getPersonPermissions() //获取操作人员 |
| | | // this.getGroupsPersonPermissions('BZ001') //根据班组获取人员 |
| | | this.getSellectAllApi() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | async getSellectAllApi() { |
| | | await this.getGroupsPermissions() //获取生产班组 |
| | | await this.getEqpPermissionsPlus() //获取设备名称 |
| | | await this.getDefectPermissions() //获取缺陷下拉 |
| | | await this.getPersonPermissions() //获取操作人员 |
| | | }, |
| | | |
| | | |
| | | //获取生产班组 |
| | | async getGroupsPermissions(wkshopcode) { |
| | |
| | | this.badSelectArr = res.data |
| | | } |
| | | }, |
| | | // 获取操作人员 |
| | | // 获取报工人员 |
| | | async getPersonPermissions() { |
| | | const res = await PersonPermissions() |
| | | if (res.code === '200') { |
| | |
| | | } |
| | | }, |
| | | // 根据生产班组获取人员 |
| | | async getGroupsPersonPermissions(usergroupcode) { |
| | | const res = await GroupsPersonPermissions() |
| | | async getGroupsPersonPermissions(groupcode) { |
| | | |
| | | const res = await GroupsPersonPermissions({ |
| | | groupcode |
| | | }) |
| | | if (res.code === '200') { |
| | | this.userArr = res.data |
| | | this.calculatedValue() |
| | | this.userCheckBoxValue = [] |
| | | |
| | | if (res.data[0].usercode_list && res.data[0].usercode_list.length > 0) { |
| | | this.userSelectArrAll.forEach(i => { |
| | | |
| | | if (res.data[0].usercode_list.split(',').includes(i.code)) { |
| | | this.userCheckBoxValue.push(i.name) |
| | | } |
| | | |
| | | }) |
| | | |
| | | } |
| | | |
| | | this.operSheetValue = this.userCheckBoxValue.join(',') |
| | | |
| | | |
| | | } |
| | | }, |
| | | // 计算分配比例的值 |
| | | calculatedValue() { |
| | | const total = 100; |
| | | let value = 0 |
| | | this.userArr.forEach(item => { |
| | | item.ratio = parseFloat((100 / this.userArr.length).toFixed(2)) |
| | | value += item.ratio |
| | | }) |
| | | if (Math.round(value * 100) / 100 !== total) { |
| | | this.userArr[this.userArr.length - 1].ratio = parseFloat((this.userArr[this.userArr.length - 1].ratio + |
| | | (total - value)).toFixed(2)) |
| | | } |
| | | |
| | | |
| | | |
| | | userSheetSelect() { |
| | | |
| | | }, |
| | | userCheckboxChange(val) { |
| | | this.userCheckBoxValue = val.join(',') |
| | | }, |
| | | |
| | | //获取开工信息 |
| | |
| | | if (res.code === '200' && res.count === 1) { |
| | | this.formData = res.data |
| | | this.topContent.unshift(res.data) |
| | | // this.getGroupsPermissions(res.data.wkshopcode) |
| | | // let o = res.data.wo_code + ';' + res.data.stepcode |
| | | // this.getEqpPermissionsPlus(o) |
| | | // this.getDefectPermissions(o) |
| | | // this.getPersonPermissions() |
| | | |
| | | } else if (res.code === '200' && res.count !== 1) { |
| | | this.$u.toast('此工序已报工!') |
| | | } |
| | |
| | | |
| | | }); |
| | | }, |
| | | // 步进器值改变时 |
| | | numberBoxChange(val) { |
| | | this.userArr.find(i => i.usercode === val.name).ratio = parseFloat(val.value).toFixed(2) |
| | | }, |
| | | |
| | | ngqtyChange(val) { |
| | | if (!parseFloat(val)) { |
| | | this.badSheetValue = '' |
| | | this.checkBoxValue = '' |
| | | } |
| | | }, |
| | | |
| | | async submit() { |
| | | // 下午写生产报工提交 |
| | | |
| | | if (this.reckway === '班组' && this.userGroupSheetValue === "") { |
| | | return uni.$u.toast('生产班组不能为空!') |
| | |
| | | return uni.$u.toast('报工数量不能为空!') |
| | | } |
| | | |
| | | if (this.reckway === '班组' && this.userArr.length === 0) { |
| | | if (this.reckway === '班组' && this.operSheetValue.length === 0) { |
| | | return uni.$u.toast('报工人员信息不能为空!') |
| | | } |
| | | |
| | | if (this.reckway === '班组') { |
| | | let sum = 0 |
| | | this.userArr.forEach(item => { |
| | | console.log(item.ratio, 'item.ratio') |
| | | sum += parseFloat(item.ratio) |
| | | }) |
| | | sum = parseFloat(sum) |
| | | console.log(sum, 'sum44') |
| | | if (Math.round(sum * 100) / 100 !== 100) { |
| | | return uni.$u.toast('分配比例总和必须为100!') |
| | | } |
| | | } |
| | | |
| | | |
| | | const header = { |
| | | // 'Content-Type': 'multipart/form-data', |
| | | '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' |
| | | } |
| | | |
| | | let badcode = [] |
| | | |
| | | |
| | | if (this.badSheetValue.length > 0) { |
| | | this.badSelectArr.forEach(i => { |
| | |
| | | }) |
| | | } |
| | | |
| | | if (this.ngqty !== '') { |
| | | if (badcode.length === 0) { |
| | | return uni.$u.toast('不良原因未选择!') |
| | | let reportuser = [] |
| | | |
| | | if (this.operSheetValue.length > 0) { |
| | | this.userSelectArrAll.forEach(i => { |
| | | if (this.operSheetValue.split(',').includes(i.name)) { |
| | | reportuser.push(i.code) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // 不良原因 |
| | | 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.reportqty) + parseFloat(ngqtyNumber) > parseFloat(this.topContent[0] |
| | | .noreportqty)) { |
| | | return uni.$u.toast('报工数量加不良数量不能大于未报数量!') |
| | | } |
| | | |
| | | |
| | | |
| | | let reportuser = '' |
| | | |
| | | // if (this.$company === 'A') { |
| | | // reportuser = this.reckway === '班组' ? JSON.stringify(this.userArr) : JSON.stringify([{ |
| | | // usercode: this.operSheetValue, |
| | | // ratio: 100 |
| | | // }]) |
| | | // } else { |
| | | reportuser = this.userArr.map(i => i.usercode).join(';') //报工人员 |
| | | // } |
| | | const D = { |
| | | rightcode: '0601', |
| | | partcode: this.topContent[0].partnumber, |
| | | qty: parseFloat(this.reportqty), |
| | | onelabqty: parseFloat(this.reportqty) |
| | | } |
| | | const { |
| | | data: R |
| | | } = await LabelBarCode(D) |
| | | |
| | | |
| | | const data = { |
| | | admin: uni.getStorageSync('usercode'), |
| | | mesordercode: this.formData.wo_code, // 工单编号 |
| | | partcode: this.formData.partnumber, // 产品编码 |
| | | stepseq: this.formData.seq, // 工序序号 |
| | | stepcode: this.formData.stepcode, // 工序编码 |
| | | eqpcode: this.eqpSheetList.find(i => i.name === this.eqpSheetValue).code, // 设备编码 |
| | | taskqty: this.formData.planqty, // 任务数量 |
| | | startqty: this.formData.reportqty, // 开工数量 |
| | | mesordercode: this.topContent[0].wo_code, |
| | | partcode: this.topContent[0].partnumber, |
| | | stepseq: this.topContent[0].seq, |
| | | stepcode: this.topContent[0].stepcode, |
| | | stepprice: this.topContent[0].stepprice, |
| | | |
| | | eqpcode: this.eqpSheetList.find(i => i.name === this.eqpSheetValue).code, |
| | | |
| | | reckway: this.reckway === '班组' ? 'group' : 'person', |
| | | |
| | | usergroupcode: this.userGroupSheetValue ? this.userGroupSheetList.find(i => i.name === this |
| | | .userGroupSheetValue).code : '', // 班组编码 |
| | | reportqty: parseFloat(this.reportqty), // 报工数量 |
| | | // reportuser: this.userArr.map(i => i.usercode).join(';'), //报工人员 |
| | | reportuser, |
| | | |
| | | //报工人员 |
| | | remarks: '', // 备注 |
| | | reckway: this.reckway === '班组' ? 'group' : 'person', // |
| | | ngqty: this.ngqty === '' ? 0 : this.ngqty, //不良数量 |
| | | badcode: badcode.join(';'), //不良原因 |
| | | |
| | | inbarcode: '', //扫码入库 |
| | | reportuser: this.reckway === '班组' ? reportuser.join(',') : this.userSelectArrAll.find(i => i |
| | | .name === this.operSheetValue).code, |
| | | taskqty: this.topContent[0].planqty, |
| | | startqty: parseFloat(this.reportqty), |
| | | reportqty: parseFloat(this.reportqty), |
| | | inbarcode: R[0].labcode, //入库条码 |
| | | defectlist, |
| | | // defectlist: badcode.length > 0 ? [{ |
| | | // defect_code: badcode.join(','), |
| | | // badqty: this.ngqty |
| | | // }] : [], |
| | | remarks: '' |
| | | } |
| | | |
| | | console.log(data, 7777) |
| | | |
| | | // console.log(JSON.parse(JSON.stringify(data)), 7777) |
| | | this.isDisabledSubmitButton = true |
| | | uni.uploadFile({ |
| | | url: this.$baseUrl + '/AppProductionManagement/SavaMesOrderStepReport', |
| | | files: [{ |
| | | "uri": "/" |
| | | }], |
| | | header: header, |
| | | formData: data, |
| | | success: (res) => { |
| | | uni.$u.toast('报工成功!') |
| | | this.topContent = [] |
| | | this.formData = {} |
| | | this.reportqty = '' |
| | | this.ngqty = '' |
| | | this.reckway = '个人' |
| | | this.userGroupSheetValue = '' |
| | | this.eqpSheetValue = '' |
| | | this.userGroupSheetList = [] |
| | | this.eqpSheetList = [] |
| | | this.badSelectArr = [] |
| | | this.badSheetValue = [] |
| | | this.checkBoxValue = [] |
| | | this.operSheetValue = '' |
| | | this.operSheetList = [] |
| | | this.userArr = [] |
| | | this.userSelectValue = '' |
| | | this.userSelectArrAll = [] |
| | | this.userSelectArr = [] |
| | | this.userGroupColumns = [] |
| | | this.eqpColumns = [] |
| | | this.operColumns = [] |
| | | const res = await SavaMesOrderStepReport(data) |
| | | if (res.code === '200') { |
| | | uni.$u.toast('报工成功!') |
| | | this.topContent = [] |
| | | this.formData = {} |
| | | this.reportqty = '' |
| | | // this.ngqty = '' |
| | | this.reckway = '个人' |
| | | this.userGroupSheetValue = '' |
| | | this.eqpSheetValue = '' |
| | | |
| | | |
| | | this.isDisabledSubmitButton = false |
| | | }, |
| | | fail(res) { |
| | | uni.$u.toast('报工失败!') |
| | | this.isDisabledSubmitButton = false |
| | | }, |
| | | }) |
| | | this.ngqtyArr = [{ |
| | | uid: new Date().getTime(), |
| | | ngqty: '', |
| | | badSheetValue: '', |
| | | arrowDown: true //向下箭头 |
| | | }] |
| | | |
| | | // this.userGroupSheetList = [] |
| | | // this.eqpSheetList = [] |
| | | // this.badSelectArr = [] |
| | | this.badSheetValue = [] |
| | | this.checkBoxValue = [] |
| | | this.operSheetValue = '' |
| | | // this.operSheetList = [] |
| | | // this.userArr = [] |
| | | this.userSelectValue = '' |
| | | // this.userSelectArrAll = [] |
| | | // this.userSelectArr = [] |
| | | // this.userGroupColumns = [] |
| | | // this.eqpColumns = [] |
| | | // this.operColumns = [] |
| | | |
| | | this.userCheckBoxValue = [] |
| | | this.userSheetShow = false |
| | | |
| | | |
| | | this.isDisabledSubmitButton = false |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | }, |
| | | userGroupSheetSelect(val) { |
| | |
| | | badSheetSelect(val) { |
| | | // console.log(val,9999999) |
| | | }, |
| | | 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 |
| | | }, |
| | | |
| | | 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 |
| | | }, |
| | | |
| | | checkboxChange(val) { |
| | | this.badSheetValue = val.join(',') |
| | | console.log(this.badSheetValue, 5); |
| | | }, |
| | | operSheetClick() { |
| | | this.operSheetShow = true |
| | | if (this.reckway === '个人') { |
| | | this.operSheetShow = true |
| | | } |
| | | |
| | | if (this.reckway === '班组') { |
| | | this.userSheetShow = true |
| | | } |
| | | }, |
| | | operSheetSelect(val) { |
| | | this.operSheetValue = val.name |
| | | this.operSheetShow = false |
| | | //单选框值改变时 |
| | | radioGroupChange(val) { |
| | | this.userGroupSheetValue = '' |
| | | this.operSheetValue = '' |
| | | }, |
| | | // 添加人员按钮 |
| | | addUser() { |
| | | this.userSelectArr = [] |
| | | this.userSelectArrAll.forEach(i => { |
| | | if (!this.userArr.map(j => j.usercode).includes(i.code)) { |
| | | this.userSelectArr.push({ |
| | | value: i.code, |
| | | text: i.name |
| | | }) |
| | | } |
| | | |
| | | // 添加 |
| | | add() { |
| | | |
| | | if (this.ngqtyArr.find(i => i.badSheetValue === '')) { |
| | | return uni.$u.toast('请先完善前面不良选项!') |
| | | } |
| | | |
| | | this.ngqtyArr.unshift({ |
| | | uid: new Date().getTime(), |
| | | ngqty: '', |
| | | badSheetValue: '', |
| | | arrowDown: true //向下箭头 |
| | | }) |
| | | this.modalShow = true |
| | | |
| | | }, |
| | | // 删除人员按钮 |
| | | deleteUser(item) { |
| | | this.userArr = this.userArr.filter(i => i.usercode !== item.usercode) |
| | | this.calculatedValue() |
| | | |
| | | //删除 |
| | | trashDelete(index) { |
| | | console.log(index) |
| | | this.ngqtyArr.splice(index, 1) |
| | | |
| | | }, |
| | | // 模态框取消按钮 |
| | | modalCancel() { |
| | | this.modalShow = false |
| | | this.userSelectValue = '' |
| | | }, |
| | | // 模态框确认按钮 |
| | | modalConfirm() { |
| | | if (this.userSelectValue) { |
| | | this.userArr.unshift({ |
| | | usercode: this.userSelectValue, |
| | | username: this.userSelectArrAll.find(i => i.code === this.userSelectValue).name |
| | | }) |
| | | this.userSelectValue = '' |
| | | } else { |
| | | uni.$u.toast('请选择报工人员!') |
| | | } |
| | | this.modalShow = false |
| | | this.calculatedValue() |
| | | }, |
| | | |
| | | |
| | | userChange(val) { |
| | | this.userSelectValue = val |
| | | }, |
| | |
| | | overflow: auto !important; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__minus { |
| | | height: 50rpx !important; |
| | | ::v-deep .u-checkbox-label--right { |
| | | padding: 30rpx; |
| | | border-bottom: 1rpx solid #eee; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__input { |
| | | height: 50rpx !important; |
| | | |
| | | |
| | | .badSheetClass { |
| | | position: relative; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__plus { |
| | | height: 50rpx !important; |
| | | .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> |