| | |
| | | "version" : "1.0", |
| | | "configurations" : [ |
| | | { |
| | | "playground" : "custom", |
| | | "playground" : "standard", |
| | | "type" : "uni-app:app-android" |
| | | }, |
| | | { |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="holdon"> |
| | | <image class="ball" :style="'left:'+(moveX == 0 & x>0? x:moveX)+'px;top:'+(moveY == 0 & y>0? y:moveY)+'px'" |
| | | @touchstart="drag_start" @touchmove.prevent="drag_hmove" :src="image" mode="aspectFill"> |
| | | </image> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props: { |
| | | x: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | y: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | image: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | start: [0, 0], |
| | | moveY: 0, |
| | | moveX: 0 |
| | | } |
| | | }, |
| | | methods: { |
| | | drag_start(event) { |
| | | this.start[0] = event.touches[0].clientX - event.target.offsetLeft; |
| | | this.start[1] = event.touches[0].clientY - event.target.offsetTop; |
| | | }, |
| | | drag_hmove(event) { |
| | | let tag = event.touches; |
| | | this.moveX = tag[0].clientX - this.start[0]; |
| | | this.moveY = tag[0].clientY - this.start[1]; |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="less"> |
| | | .holdon { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ball { |
| | | // width: 70upx; |
| | | // height: 70upx; |
| | | // background: linear-gradient(to bottom, #F8F8FF, #87CEFA); |
| | | // border-radius: 50%; |
| | | // box-shadow: 0 0 15upx #87CEFA; |
| | | // color: #fff; |
| | | // font-size: 30upx; |
| | | |
| | | width: 70px; |
| | | height: 70px; |
| | | border-radius: 50%; |
| | | margin: auto; |
| | | background: url('@/static/img/scan.png') no-repeat; |
| | | box-shadow: #436df5 0px 0px 20px; |
| | | background-size: 100% 100%; |
| | | |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | position: fixed !important; |
| | | z-index: 1000000; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/scgl/scbg2", |
| | | "style": { |
| | | "navigationBarTitleText": "ç产æ¥å·¥", |
| | | "navigationStyle": "custom", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/wwgl/wxfl", |
| | | "style": { |
| | | "navigationBarTitleText": "å¤ååæ", |
| | |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/wwgl/wxfl2", |
| | | "style": { |
| | | "navigationBarTitleText": "å¤ååæ", |
| | | "navigationStyle": "custom", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/wwgl/wxsl", |
| | | "style": { |
| | | "navigationBarTitleText": "å¤åæ¶æ", |
| | |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/wwgl/wxsl2", |
| | | "style": { |
| | | "navigationBarTitleText": "å¤åæ¶æ", |
| | | "navigationStyle": "custom", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/znfx/scfx", |
| | | "style": { |
| | | "navigationBarTitleText": "ç产åæ", |
| | |
| | | <page-nav title="ç产æ¥å·¥"></page-nav> |
| | | |
| | | |
| | | <view v-show="topContent.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">è¯·æ«æä»»å¡æ¡ç </div> |
| | | </div> |
| | | <view class="flex_center" style="margin: 20rpx;"> |
| | | |
| | | <!-- #ifdef H5 --> |
| | | <u--input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" :placeholder="placeholder" |
| | | style="width:100%;background-color: #fff;border-radius: 40rpx;" border="surround" suffixIcon="scan" |
| | | suffixIconStyle="color: #909399;font-size: 22px;" v-model="inputBoxValue" |
| | | @change="confirmInputBoxValue"> |
| | | <template slot="suffix"> |
| | | <u-icon name="scan" color="#909399" size="24" @click="scanClick"></u-icon> |
| | | </template> |
| | | </u--input> |
| | | <!-- #endif --> |
| | | |
| | | <!-- #ifdef APP-PLUS --> |
| | | <u-input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" :placeholder="placeholder" |
| | | style="width:100%;background-color: #fff;border-radius: 40rpx;" border="surround" suffixIcon="scan" |
| | | suffixIconStyle="color: #909399;font-size: 22px;" v-model="inputBoxValue" |
| | | @change="confirmInputBoxValue"> |
| | | <template slot="suffix"> |
| | | <u-icon name="scan" color="#909399" size="24" @click="scanClick"></u-icon> |
| | | </template> |
| | | </u-input> |
| | | <!-- #endif --> |
| | | |
| | | <view class="flex_center marginLeft20" @click="popupShow=true"> |
| | | <u--text size='16' color='#909399' text="çé"></u--text> |
| | | <u--image :showLoading="true" src="../../static/img/sift.png" width="20px" height="20px"></u--image> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-show="topContent.length!==0"> |
| | | <view class="mainContent" :style="{maxHeight:'1260rpx',overflow: 'scroll'}"> |
| | | |
| | | <!-- æ¥å·¥ä¿¡æ¯ --> |
| | | <u-gap height="5" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style="padding-bottom: 10rpx;"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title"> |
| | | æ¥å·¥ä¿¡æ¯ |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="marginTop20 marginLeft20 marginRight20 flex_between"> |
| | | <u-radio-group class="flex_column"> |
| | | |
| | | <view class="marginBottom20 " v-for="(item,index) in topContent" :key="item.wo_code"> |
| | | |
| | | <view class="flex_between"> |
| | | <view style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>å·¥åç¼å·ï¼</view> |
| | | <view>产åç¼ç ï¼</view> |
| | | <view>产ååç§°ï¼</view> |
| | | <view>产åè§æ ¼ï¼</view> |
| | | <view>å½åå·¥åºï¼</view> |
| | | <view>任塿°éï¼</view> |
| | | <view>æªæ¥/å·²æ¥ï¼</view> |
| | | <view>ä¸éå·¥åºï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{item.wo_code}}</view> |
| | | <view>{{item.partnumber}}</view> |
| | | <view>{{item.partname}}</view> |
| | | <view>{{item.partspec.toString().length===0?'/':item.partspec}}</view> |
| | | <view>{{item.stepname}}</view> |
| | | <view>{{item.planqty}}</view> |
| | | <view>{{item.noreportqty}}/{{item.reportqty}}</view> |
| | | <view>{{item.nextstepname?item.nextstepname:'/'}}</view> |
| | | </view> |
| | | </view> |
| | | <u-alert :title="alertTitle" type="info"></u-alert> |
| | | |
| | | |
| | | </view> |
| | | <!-- æå 颿¿ --> |
| | | <!-- <u-collapse @change="change" @close="close" @open="open"> --> |
| | | <!-- @change="collapseChange" --> |
| | | <u-collapse style="max-height: 590px;overflow: auto;"> |
| | | <!-- :value='parseFloat(item.ordergoodqty)+"/"+parseFloat(item.orderqty)' --> |
| | | <u-collapse-item style="position: relative;" :title="item.ordercode" :name='item.ordercode' |
| | | :value='parseFloat(item.ordergoodqty)+"/"+parseFloat(item.orderqty)' |
| | | :label="item.children.length===0?'æªæ´¾å':''" :disabled='item.children.length===0' |
| | | v-for="item in collapseArr" :key="item.ordercode"> |
| | | |
| | | </view> |
| | | |
| | | </u-radio-group> |
| | | </view> |
| | | <view style="position: absolute;width: 200rpx;left: 30rpx;top:34px;font-size: 24rpx;color: #999;"> |
| | | {{item.partname}} {{item.partspec}} |
| | | </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 style="position: absolute;width: 26%;left: 44%;top:16px;"> --> |
| | | <view style="position: absolute;width: 120px;left: 44%;top:16px;color:#0659ff" |
| | | @click="progressClick(item.ordercode)"> |
| | | <!-- {{item.partname}}{{item.partspec}} --> |
| | | <u-line-progress :percentage="parseFloat((item.ordergoodqty*100/item.orderqty).toFixed(2))" |
| | | inactiveColor="#d1d6f5" height="10" activeColor="#0659ff"></u-line-progress> |
| | | </view> |
| | | |
| | | <!-- <view style="position: absolute;width: 100px;right: 33px; top:13px; "> |
| | | <view class="" style="display: flex;justify-content: flex-end;"> |
| | | <view style="color: #0659ff;"> |
| | | {{parseFloat(item.ordergoodqty)}} |
| | | </view> |
| | | <view> |
| | | /{{ parseFloat(item.orderqty)}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | --> |
| | | |
| | | |
| | | <view v-if="radiovalue==='ç产工å'" style="margin:0 0 5px"> |
| | | <view class="flex_column"> |
| | | |
| | | <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> |
| | | <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> |
| | | </u-radio-group> |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产åç¼ç ï¼</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partcode}}</view> |
| | | </view> |
| | | |
| | | |
| | | <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 @click='userGroupSheetClick' class="custominputClass"> |
| | | <view v-show='userGroupSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='userGroupSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{userGroupSheetValue}} |
| | | </view> |
| | | <u-icon :name="!userGroupSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产ååç§°ï¼</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partname}}</view> |
| | | </view> |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产åè§æ ¼ï¼</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partspec?item.partspec:'/'}} |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <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 @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> |
| | | |
| | | |
| | | <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='epqSheetClick' class="custominputClass"> |
| | | |
| | | <view v-show='eqpSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='eqpSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{eqpSheetValue}} |
| | | </view> |
| | | |
| | | <u-icon :name="!eqpSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <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="请è¾å
¥" :adjustPosition='false' border="surround" type='number' |
| | | v-model="reportqty"> |
| | | </u--input> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <!-- {{item.children}} --> |
| | | <!-- <u--text class="u-collapse-content"> --> |
| | | <u-steps :current="-1" inactiveColor='#0659FF' direction="column"> |
| | | <view v-for="(it,ind) in item.children" :key="item.ordercode+it.name+ind" |
| | | @click="gotoPage(item.ordercode,it.code)" style="display: flex;align-items: center;"> |
| | | |
| | | |
| | | <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"> |
| | | ä¸è¯ç»è®¡ |
| | | <u-steps-item :title="it.code+'/'+it.name+it.spec"></u-steps-item> |
| | | <view class="" style="width: 100px;"> |
| | | <u-line-progress :percentage="parseFloat((it.goodqty*100/it.planqty).toFixed(2))" |
| | | inactiveColor="#d1d6f5" height="10" activeColor="#0659ff"></u-line-progress> |
| | | </view> |
| | | <view style="width: 30%;text-align: right;"> |
| | | <view class="" style="display: flex;justify-content: flex-end;"> |
| | | <view style="color: #0659ff;"> |
| | | {{parseFloat(it.goodqty)}} |
| | | </view> |
| | | <view> |
| | | /{{ parseFloat(it.planqty)}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="flex_column "> |
| | | |
| | | </u-steps> |
| | | <!-- </u--text> --> |
| | | |
| | | |
| | | <u-button type="primary" :plain="true" icon='plus-circle' text="æ·»å " |
| | | style="width: 90%;margin: 20rpx auto;" @click="add"></u-button> |
| | | </u-collapse-item> |
| | | |
| | | </u-collapse> |
| | | |
| | | |
| | | <view v-for='(item,index) in ngqtyArr' class="badSheetClass" :key="item.uid"> |
| | | <!-- å¼¹åºå± --> |
| | | <!-- closeIconPos='top-left' closeOnClickOverlay closeable='true' --> |
| | | <u-popup :show="popupShow" mode="right" @close="popupClose" @open="popupOpen"> |
| | | <view style="margin: 120px 10px 20px;" class="flex_column"> |
| | | |
| | | <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 style="display: flex;"> |
| | | <view> |
| | | åæ®ç±»åï¼ |
| | | </view> |
| | | |
| | | <u-radio-group v-model="radiovalue" placement="column" @change="groupChange" |
| | | style="margin-top: 4px;"> |
| | | <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist" |
| | | :key="index+item.name" :label="item.name" iconSize='16' labelSize='16' :name="item.name"> |
| | | |
| | | </u-radio> |
| | | </u-radio-group> |
| | | </view> --> |
| | | |
| | | <view style="margin-top: 20px;display: flex;align-items: center;"> |
| | | |
| | | <view class=""> |
| | | 产åä¿¡æ¯ï¼ |
| | | </view> |
| | | <view class=""> |
| | | <u-button :hairline="true" shape="circle" icon="map" :plain="true" |
| | | style="width: 100px;height: 26px;" type="primary" text="éæ©äº§å" @click="chosePart"></u-button> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <view style="display: flex;flex-wrap: wrap;"> |
| | | <u-tag style="width:220rpx;" :text="item.name" v-for="item in tagArr" :key="item.code" |
| | | :closable="true" :show="item.close" @close="tagClose(item)"></u-tag> |
| | | </view> |
| | | |
| | | |
| | | |
| | | <!-- <view class="head" style="margin-top: 10px;"> |
| | | <view class="head_block" style="height: 80rpx; display: flex;justify-content: space-around;"> |
| | | <u-button :plain='today' style="width: 70px;height: 25px;" @click="dateChange('today')" |
| | | type="primary" shape="circle" text="仿¥"> |
| | | </u-button> |
| | | <u-button :plain='month' style="width: 70px;height: 25px;" @click="dateChange('month')" |
| | | type="primary" shape="circle" text="æ¬æ"> |
| | | </u-button> |
| | | <u-button :plain='custom' style="width: 70px;height: 25px;" @click="dateChange('custom')" |
| | | type="primary" shape="circle" text="èªå®ä¹"></u-button> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-if="!custom" class="flex_column" |
| | | style="display: flex;justify-content: space-around;width: 100%;"> |
| | | <view class="" style="display: flex;justify-content: space-evenly;width: 100%;"> |
| | | <view class="titleFont">å¼å§æ¥æ</view> |
| | | <view class="titleFont">~</view> |
| | | <view class="titleFont">ç»ææ¥æ</view> |
| | | </view> |
| | | |
| | | <u-button type="info" icon='calendar' iconColor="#0659FF" size="" @click="calendarClick" |
| | | :text="calendarRange"> |
| | | </u-button> |
| | | </view> --> |
| | | |
| | | <!-- <uni-calendar ref="calendar" :range='true' :insert="false" @confirm="calendarConfirm" /> --> |
| | | |
| | | </view> |
| | | </u-popup> |
| | | |
| | | |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | |
| | | |
| | | |
| | | |
| | | <u-button size="large" :loading="isDisabledSubmitButton" loadingText="æ£å¨æäº¤,请ç¨ç..." type="primary" |
| | | @click="submit" text="æ¥å·¥"> |
| | | </u-button> |
| | | |
| | | |
| | | <!-- ç产çç» --> |
| | | <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-picker v-if="topContent.length!==0" :show="eqpSheetShow" :columns="eqpColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='eqpSheetShow=false' @confirm='eqpPickerConfirm' |
| | | @cancel='eqpSheetShow=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> |
| | | |
| | | |
| | | <!-- æ¥å·¥äººå --> |
| | | <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> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | |
| | | |
| | | <!-- <view v-show="topContent.length!==0" style="position: absolute; bottom: 210rpx;right: 20rpx;"> |
| | | <div class="scanImg2" @click="topScanClick"></div> |
| | | </div> |
| | | </view> --> |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <!-- <view |
| | | 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> --> |
| | | |
| | | <!-- <scan-code></scan-code> --> |
| | | |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <view @click="scan2"> |
| | | <drag-ball :x='300' :y="600"></drag-ball> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepStart, |
| | | PersonPermissions, |
| | | EqpPermissionsPlus, |
| | | GroupsPermissions, |
| | | GroupsPersonPermissions, |
| | | DefectPermissions, |
| | | SavaMesOrderStepReport, |
| | | LabelBarCode |
| | | ProductionScheduleKanban |
| | | } from '../../config/api.js'; |
| | | // import scanCode from '@/components/scan-code/scan-code.vue' |
| | | export default { |
| | | // components: { |
| | | // scanCode |
| | | // }, |
| | | onLoad(option) { |
| | | // const _this = this |
| | | // uni.$off('scancodedate') // æ¯æ¬¡è¿æ¥å
ç§»é¤å
¨å±èªå®ä¹äºä»¶çå¬å¨ |
| | | // uni.$on('scancodedate', function(content) { |
| | | // console.log("æ«æå°çå
容为:", content) |
| | | // // _this.getMesOrderStepStart(content) |
| | | const _this = this |
| | | uni.$off('scancodedate') // æ¯æ¬¡è¿æ¥å
ç§»é¤å
¨å±èªå®ä¹äºä»¶çå¬å¨ |
| | | uni.$on('scancodedate', function(content) { |
| | | console.log("æ«æå°çå
容为:", content) |
| | | _this.getCheckScanDeviceQrCodeData(content) |
| | | }) |
| | | |
| | | // if (_this.topContent.find(i => i.wo_code + ';' + i.stepcode === content)) { |
| | | // _this.$u.toast('æ¤æ¡ç å·²æ«æï¼å·²å¨å表ä¸ï¼') |
| | | // } else { |
| | | // _this.getMesOrderStepStart(content) |
| | | // } |
| | | // }) |
| | | |
| | | console.log(option, 8) |
| | | }, |
| | | |
| | | onPullDownRefresh() { |
| | |
| | | |
| | | data() { |
| | | return { |
| | | topRightMessageCount: 0, |
| | | isDisabledSubmitButton: false, |
| | | |
| | | formData: {}, |
| | | |
| | | reckway: '个人', //计件æ¹å¼ group代表æ¯çç» person 代表æ¯ä¸ªäºº |
| | | userGroupSheetValue: '', //ç产çç»ä¸æéä¸çå¼ |
| | | eqpSheetValue: '', //设å¤åç§°ä¸æéä¸çå¼ |
| | | userGroupSheetList: [], //ç产çç»ä¸ææ°ç» |
| | | eqpSheetList: [], //设å¤åç§°ä¸ææ°ç» |
| | | userGroupSheetShow: false, //䏿å表æ¯å¦å±å¼ |
| | | eqpSheetShow: false, |
| | | topContent: [ |
| | | // { |
| | | // nextstepcode: "GX005", |
| | | // nextstepname: "å
¥åº", |
| | | // noputqty: 0, |
| | | // noreportqty: 100, |
| | | // partname: "8504å
æº", |
| | | // partnumber: "302", |
| | | // partspec: "/", |
| | | // planqty: 100, |
| | | // reportqty: 0, |
| | | // seq: "1", |
| | | // startqty: 100, |
| | | // stepcode: "GX001", |
| | | // stepdesc: "", |
| | | // stepname: "颿", |
| | | // wo_code: "MO-2022-11-0035_1", |
| | | // }, |
| | | topRightMessageCount: '', |
| | | inputBoxValue: '', |
| | | alertTitle: '', |
| | | popupShow: false, //å¼¹åºå±æ¯å¦æ¾ç¤º |
| | | collapseArr: [ //æå 颿¿æ°æ® |
| | | ], |
| | | collapseArrAll: [], //ææ |
| | | placeholder: '请è¾å
¥å·¥åä¿¡æ¯', |
| | | radiovalue: 'ç产工å', //åæ®ç±»å |
| | | // SOï¼éå®è®¢å MOï¼ç产订å POï¼ç产工å |
| | | radiolist: [{ |
| | | name: 'éå®è®¢å' |
| | | }, |
| | | { |
| | | name: 'ç产订å' |
| | | }, |
| | | { |
| | | name: 'ç产工å' |
| | | }, |
| | | ], |
| | | |
| | | reportqty: '', //æ¥å·¥æ°é |
| | | today: true, |
| | | month: false, |
| | | custom: true, |
| | | |
| | | ngqty: '', //ä¸è¯æ°é |
| | | // calendarRange: new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | // 10), //ç³»ç»å½åæ¥æ |
| | | calendarRange: new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10), //å½ææ¥æ |
| | | |
| | | ngqtyArr: [{ |
| | | uid: new Date().getTime(), |
| | | ngqty: '', |
| | | badSheetValue: '', |
| | | arrowDown: true //åä¸ç®å¤´ |
| | | }, |
| | | |
| | | |
| | | tagArr: [ |
| | | // { |
| | | // ngqty: '', |
| | | // badSheetValue: '', |
| | | // arrowDown: true //åä¸ç®å¤´ |
| | | // close: true, |
| | | // name: 'çµæ± å
', |
| | | // code: '1002' |
| | | // }, { |
| | | // close: true, |
| | | // name: 'çµè', |
| | | // code: '1003' |
| | | // }, { |
| | | // close: true, |
| | | // name: '8054å
æº', |
| | | // code: '1004' |
| | | // }, { |
| | | // close: true, |
| | | // name: 'G71674å²éæª', |
| | | // code: '1005' |
| | | // }, { |
| | | // close: true, |
| | | // name: '8051å
æº', |
| | | // code: '1006' |
| | | // }, |
| | | ], //ä¸è¯æ°éãä¸è¯åå æ°ç» |
| | | ], //å·²éä¸çäº§åæ ç¾ |
| | | |
| | | |
| | | |
| | | |
| | | badSelectArr: [], //ä¸è¯åå 䏿æ°ç» |
| | | badSheetValue: '', //ä¸è¯åå éä¸å¼ |
| | | badSheetShow: false, |
| | | checkBoxValue: [], //ä¸è¯åå æ¾ç¤ºå¼ |
| | | operSheetValue: '', //æä½äººåéä¸å¼ |
| | | operSheetShow: false, |
| | | operSheetList: [], //æä½äººåæ°ç» |
| | | userArr: [], //æ¥å·¥äººåä¿¡æ¯æ°ç» |
| | | |
| | | |
| | | userSelectValue: '', //䏿éé¡¹å¼ |
| | | userSelectArrAll: [], //ææäººå䏿æ°ç» |
| | | userSelectArr: [ |
| | | // { |
| | | // value: '1001', |
| | | // text: 'å°ç¾1' |
| | | // }, |
| | | ], //人å䏿æ°ç» |
| | | userGroupColumns: [], // |
| | | eqpColumns: [], // |
| | | operColumns: [], // |
| | | isAsyncChange: false, |
| | | |
| | | userCheckBoxValue: [], |
| | | userSheetShow: false |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | mounted() { |
| | | this.init() |
| | | |
| | | // this.getMesOrderStepStart('MO-2024-01-0004_1;102') |
| | | |
| | | this.getSellectAllApi() |
| | | this.getProductionScheduleKanban() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | async getSellectAllApi() { |
| | | await this.getGroupsPermissions() //è·åç产çç» |
| | | await this.getEqpPermissionsPlus() //è·å设å¤åç§° |
| | | await this.getDefectPermissions() //è·å缺é·ä¸æ |
| | | await this.getPersonPermissions() //è·åæä½äººå |
| | | }, |
| | | gotoPage(p1, p2) { |
| | | let orderstep = null |
| | | |
| | | |
| | | //è·åç产çç» |
| | | async getGroupsPermissions(wkshopcode) { |
| | | |
| | | const res = await GroupsPermissions() |
| | | if (res.code === '200') { |
| | | // æ°ç»å¯¹è±¡ æ¿æ¢å¯¹è±¡é®å |
| | | this.userGroupSheetList = res.data.map(({ |
| | | usergroupcode, |
| | | usergroupname |
| | | }) => ({ |
| | | code: usergroupcode, |
| | | name: usergroupname |
| | | })) |
| | | |
| | | this.userGroupColumns = [this.userGroupSheetList.map(i => i.name)] |
| | | if (p1) { |
| | | orderstep = p1 + ';' + p2 |
| | | } else { |
| | | orderstep = '' |
| | | } |
| | | }, |
| | | // è·å设å¤åç§° |
| | | async getEqpPermissionsPlus() { |
| | | const res = await EqpPermissionsPlus() |
| | | if (res.code === '200') { |
| | | this.eqpSheetList = res.data |
| | | this.eqpColumns = [this.eqpSheetList.map(i => i.name)] |
| | | } |
| | | }, |
| | | // è·åä¸è¯åå |
| | | async getDefectPermissions(orderstepqrcode) { |
| | | const res = await DefectPermissions() |
| | | if (res.code === '200') { |
| | | this.badSelectArr = res.data |
| | | } |
| | | }, |
| | | // è·åæ¥å·¥äººå |
| | | async getPersonPermissions() { |
| | | const res = await PersonPermissions() |
| | | if (res.code === '200') { |
| | | // this.operSheetList = res.data |
| | | this.operSheetList = res.data.map(({ |
| | | usercode, |
| | | username |
| | | }) => ({ |
| | | code: usercode, |
| | | name: username |
| | | })) |
| | | this.operColumns = [this.operSheetList.map(i => i.name)] |
| | | this.userSelectArrAll = this.operSheetList |
| | | } |
| | | }, |
| | | // æ ¹æ®ç产çç»è·å人å |
| | | async getGroupsPersonPermissions(groupcode) { |
| | | |
| | | const res = await GroupsPersonPermissions({ |
| | | groupcode |
| | | |
| | | uni.navigateTo({ |
| | | url: './scbg2?orderstep=' + orderstep |
| | | }) |
| | | if (res.code === '200') { |
| | | this.userCheckBoxValue = [] |
| | | }, |
| | | |
| | | if (res.data[0].usercode_list && res.data[0].usercode_list.length > 0) { |
| | | this.userSelectArrAll.forEach(i => { |
| | | getCheckboxValue(val) { |
| | | this.tagArr = [] |
| | | val.forEach(i => { |
| | | this.tagArr.push({ |
| | | close: true, |
| | | name: i.split('/')[1].trim(), |
| | | code: i.split('/')[0].trim() |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | if (res.data[0].usercode_list.split(',').includes(i.code)) { |
| | | this.userCheckBoxValue.push(i.name) |
| | | } |
| | | |
| | | }) |
| | | |
| | | } |
| | | |
| | | this.operSheetValue = this.userCheckBoxValue.join(',') |
| | | |
| | | |
| | | // æ¥å£è·å |
| | | async getProductionScheduleKanban() { |
| | | let ordertype = '' // SOï¼éå®è®¢å MOï¼ç产订å POï¼ç产工å |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥å·¥åä¿¡æ¯' |
| | | ordertype = 'PO' |
| | | break |
| | | case 'ç产订å': |
| | | this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥ç产订åä¿¡æ¯' |
| | | ordertype = 'MO' |
| | | break |
| | | case 'éå®è®¢å': |
| | | this.alertTitle = 'éå®è®¢åæ°éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥éå®è®¢åä¿¡æ¯' |
| | | ordertype = 'SO' |
| | | break |
| | | } |
| | | }, |
| | | |
| | | |
| | | |
| | | userSheetSelect() { |
| | | |
| | | }, |
| | | userCheckboxChange(val) { |
| | | this.userCheckBoxValue = val.join(',') |
| | | }, |
| | | |
| | | //è·åå¼å·¥ä¿¡æ¯ |
| | | async getMesOrderStepStart(orderstepqrcode) { |
| | | const data = { |
| | | OperType: 'ZZ', |
| | | SelectType: '', |
| | | wocode: orderstepqrcode ? orderstepqrcode.split(';')[0] : '', |
| | | stepcode: orderstepqrcode ? orderstepqrcode.split(';')[1] : '' |
| | | ordertype, |
| | | partcode: this.tagArr.map(i => i.code).join(','), |
| | | Ratetime: this.calendarRange, |
| | | |
| | | } |
| | | const res = await MesOrderStepStart(this.global.formatData(data)) |
| | | if (res.code === '200' && res.count === 1) { |
| | | this.formData = res.data |
| | | this.topContent.unshift(res.data) |
| | | } else if (res.code === '200' && res.count !== 1) { |
| | | this.$u.toast('æ¤å·¥åºå·²æ¥å·¥ï¼') |
| | | } |
| | | const { |
| | | data: res |
| | | } = await ProductionScheduleKanban(data) |
| | | |
| | | this.collapseArr = res |
| | | this.collapseArrAll = res |
| | | this.alertTitle = this.alertTitle.split('/')[0] + this.collapseArr.length + this.alertTitle.split('/')[ |
| | | 1] |
| | | |
| | | }, |
| | | // æ«ç äºä»¶ |
| | | |
| | | |
| | | //è¾å
¥æ¡å车确认äºä»¶ |
| | | confirmInputBoxValue(val) { |
| | | this.collapseArr = this.collapseArrAll.filter((p) => { |
| | | return p.ordercode.indexOf(val) !== -1 |
| | | }) |
| | | |
| | | |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | break |
| | | case 'ç产订å': |
| | | this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | break |
| | | case 'éå®è®¢å': |
| | | this.alertTitle = 'éå®è®¢åæ°éï¼å
±/个ï¼' |
| | | break |
| | | } |
| | | this.alertTitle = this.alertTitle.split('/')[0] + this.collapseArr.length + this.alertTitle.split('/')[ |
| | | 1] |
| | | |
| | | }, |
| | | |
| | | // ç¹å»æ«ç |
| | | scanClick() { |
| | | this.topScanClick() |
| | | }, |
| | | |
| | | // æ«ç æ¡ç¹å» |
| | | topScanClick() { |
| | | let that = this; |
| | | |
| | |
| | | success: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | that.scanContent = res.result; |
| | | |
| | | if (that.topContent.find(i => i.wo_code + ';' + i.stepcode === res.result)) { |
| | | that.$u.toast('æ¤æ¡ç å·²æ«æï¼å·²å¨å表ä¸ï¼') |
| | | } else { |
| | | that.getMesOrderStepStart(res.result) |
| | | } |
| | | that.getCheckScanDeviceQrCodeData(that.scanContent); |
| | | }, |
| | | complete: function(res) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | scan2() { |
| | | let that = this; |
| | | |
| | | uni.scanCode({ |
| | | onlyFromCamera: true, |
| | | // scanType: ['barCode', 'qrCode'], |
| | | scanType: ['qrCode'], |
| | | success: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | // that.scanContent = res.result; |
| | | |
| | | uni.navigateTo({ |
| | | url: './scbg2?orderstep=' + res.result |
| | | }) |
| | | |
| | | }, |
| | | complete: function(res) { |
| | |
| | | }); |
| | | }, |
| | | |
| | | async submit() { |
| | | // ä¸ååç产æ¥å·¥æäº¤ |
| | | getCheckScanDeviceQrCodeData(code) { |
| | | this.inputBoxValue = code |
| | | this.confirmInputBoxValue(this.inputBoxValue) |
| | | }, |
| | | |
| | | if (this.reckway === 'çç»' && this.userGroupSheetValue === "") { |
| | | return uni.$u.toast('ç产çç»ä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | if (this.reckway === '个人' && this.operSheetValue === "") { |
| | | return uni.$u.toast('æ¥å·¥äººåä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | if (this.eqpSheetValue === "") { |
| | | return uni.$u.toast('设å¤åç§°ä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | if (this.reportqty === "") { |
| | | return uni.$u.toast('æ¥å·¥æ°éä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | if (this.reckway === 'çç»' && this.operSheetValue.length === 0) { |
| | | return uni.$u.toast('æ¥å·¥äººåä¿¡æ¯ä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | // å¼¹åºå±æ¶èµ· |
| | | popupClose() { |
| | | this.getProductionScheduleKanban() |
| | | this.popupShow = false |
| | | }, |
| | | |
| | | let badcode = [] |
| | | // å¼¹åºå±å¼¹åº |
| | | popupOpen() { |
| | | |
| | | if (this.badSheetValue.length > 0) { |
| | | this.badSelectArr.forEach(i => { |
| | | if (this.badSheetValue.split(',').includes(i.name)) { |
| | | badcode.push(i.code) |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | let reportuser = [] |
| | | // éæ©äº§å |
| | | chosePart() { |
| | | let arr = [] |
| | | this.tagArr.forEach(i => { |
| | | arr.push(i.code + '/' + i.name) |
| | | }) |
| | | uni.navigateTo({ |
| | | url: '../znfx/chda?param=' + JSON.stringify(arr) |
| | | }); |
| | | }, |
| | | |
| | | 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(',') |
| | | }) |
| | | // tagæ ç¾å
³é |
| | | tagClose(val) { |
| | | this.tagArr.forEach((i, j) => { |
| | | if (i.code === val.code) { |
| | | i.close = false |
| | | this.tagArr.splice(j, 1) |
| | | } |
| | | }) |
| | | |
| | | |
| | | if (parseFloat(this.reportqty) + parseFloat(ngqtyNumber) > parseFloat(this.topContent[0] |
| | | .noreportqty)) { |
| | | return uni.$u.toast('æ¥å·¥æ°éå ä¸è¯æ°éä¸è½å¤§äºæªæ¥æ°éï¼') |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | 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 = { |
| | | 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 : '', // çç»ç¼ç |
| | | 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(JSON.parse(JSON.stringify(data)), 7777) |
| | | this.isDisabledSubmitButton = true |
| | | 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.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) { |
| | | this.userGroupSheetValue = val.name |
| | | this.userGroupSheetShow = false |
| | | }, |
| | | userGroupSheetClick() { |
| | | this.userGroupSheetShow = true |
| | | }, |
| | | eqpSheetSelect(val) { |
| | | this.eqpSheetValue = val.name |
| | | this.eqpSheetShow = false |
| | | }, |
| | | epqSheetClick() { |
| | | this.eqpSheetShow = true |
| | | }, |
| | | badSheetSelect(val) { |
| | | // console.log(val,9999999) |
| | | }, |
| | | 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) |
| | | // æ¶é´èå´åæ¢ |
| | | dateChange(val) { |
| | | if (val === 'today') { |
| | | this.today = false |
| | | this.month = true |
| | | this.custom = true |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | 10) |
| | | } else if (val === 'month') { |
| | | this.today = true |
| | | this.month = false |
| | | this.custom = true |
| | | |
| | | this.ngqtyArr[index].badSheetValue = this.checkBoxValue.join(',') |
| | | this.ngqtyArr[index].arrowDown = true |
| | | this.calendarRange = new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10) |
| | | |
| | | this.checkBoxValue = [] |
| | | this.badSheetShow = false |
| | | }, |
| | | |
| | | checkboxChange(val) { |
| | | this.badSheetValue = val.join(',') |
| | | }, |
| | | operSheetClick() { |
| | | if (this.reckway === '个人') { |
| | | this.operSheetShow = true |
| | | } |
| | | |
| | | if (this.reckway === 'çç»') { |
| | | this.userSheetShow = true |
| | | } else if (val === 'custom') { |
| | | this.today = true |
| | | this.month = true |
| | | this.custom = false |
| | | this.calendarRange = new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10) |
| | | } |
| | | }, |
| | | //å鿡弿¹åæ¶ |
| | | radioGroupChange(val) { |
| | | this.userGroupSheetValue = '' |
| | | this.operSheetValue = '' |
| | | |
| | | // æ¥åæ¶é´ç¹å» |
| | | calendarClick() { |
| | | this.$refs.calendar.open(); |
| | | }, |
| | | |
| | | // æ·»å |
| | | add() { |
| | | |
| | | if (this.ngqtyArr.find(i => i.badSheetValue === '')) { |
| | | return uni.$u.toast('请å
å®ååé¢ä¸è¯é项ï¼') |
| | | // æ¥åç¡®å®äºä»¶ç¹å» |
| | | calendarConfirm(val) { |
| | | if (val.range.before < val.range.after) { |
| | | this.calendarRange = val.range.before + '~' + val.range.after |
| | | } else { |
| | | this.calendarRange = val.range.after + '~' + val.range.before |
| | | } |
| | | |
| | | this.ngqtyArr.unshift({ |
| | | uid: new Date().getTime(), |
| | | ngqty: '', |
| | | badSheetValue: '', |
| | | arrowDown: true //åä¸ç®å¤´ |
| | | }) |
| | | |
| | | }, |
| | | |
| | | //å é¤ |
| | | trashDelete(index) { |
| | | console.log(index) |
| | | this.ngqtyArr.splice(index, 1) |
| | | |
| | | if (val.range.before === '') { |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + val.range.after |
| | | } |
| | | if (val.range.after === '') { |
| | | this.calendarRange = val.range.before + '~' + new Date().toISOString().slice(0, 10) |
| | | } |
| | | if (val.range.before === '' && val.range.after === '') { |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | 10) |
| | | } |
| | | // this.getData() |
| | | }, |
| | | |
| | | |
| | | userChange(val) { |
| | | this.userSelectValue = val |
| | | // åéæé®åæ¢ |
| | | groupChange(val) { |
| | | console.log(val) |
| | | }, |
| | | userGroupPickerConfirm(val) { |
| | | console.log(val, 11) |
| | | this.getGroupsPersonPermissions(this.userGroupSheetList.find(i => i.name === val.value[0]).code) |
| | | this.userGroupSheetValue = val.value[0] |
| | | this.userGroupSheetShow = false |
| | | }, |
| | | eqpPickerConfirm(val) { |
| | | this.eqpSheetValue = val.value[0] |
| | | this.eqpSheetShow = false |
| | | }, |
| | | operPickerConfirm(val) { |
| | | this.operSheetValue = val.value[0] |
| | | this.operSheetShow = false |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | display: block; |
| | | } |
| | | |
| | | .custominputClass { |
| | | width: 412rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | border: 3rpx #eff0f1 solid; |
| | | border-radius: 10rpx; |
| | | padding: 0 16rpx; |
| | | ::v-deep .u-alert__text--info--light { |
| | | margin-bottom: 0; |
| | | font-size: 32rpx !important; |
| | | padding-left: 10rpx; |
| | | color: #212121 !important; |
| | | font-weight: lighter; |
| | | } |
| | | |
| | | ::v-deep .u-alert--info--light { |
| | | background-color: rgba(255, 255, 255, 0.7); |
| | | } |
| | | |
| | | ::v-deep .u-steps-item__wrapper { |
| | | background-color: #eee; |
| | | } |
| | | |
| | | ::v-deep .u-steps-item__line--column { |
| | | display: none; |
| | | } |
| | | |
| | | ::v-deep .u-slide-right-enter-active { |
| | | width: 70%; |
| | | } |
| | | |
| | | ::v-deep .uicon-calendar { |
| | | font-size: 36rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-cell__title-text { |
| | | font-size: 28rpx; |
| | | color: #212121; |
| | | } |
| | | |
| | | ::v-deep .u-cell__value { |
| | | font-size: 28rpx; |
| | | // color: transparent; |
| | | color: #212121; |
| | | |
| | | } |
| | | |
| | | .ellipsis { |
| | | text-overflow: ellipsis; |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | ::v-deep .u-cell__label { |
| | | margin-top: 0; |
| | | line-height: 12px; |
| | | } |
| | | |
| | | .scanImg2 { |
| | | width: 70px; |
| | | height: 70px; |
| | | border-radius: 50%; |
| | | margin: auto; |
| | | background: url('@/static/img/scan.png') no-repeat; |
| | | box-shadow: #436df5 0px 0px 20px; |
| | | background-size: 100% 100%; |
| | | ::v-deep .uicon-arrow-right { |
| | | font-size: 14px !important; |
| | | color: #212121 !important; |
| | | } |
| | | |
| | | ::v-deep .addClass .uicon-plus-circle { |
| | | font-size: 50rpx !important; |
| | | margin-right: 20rpx !important; |
| | | ::v-deep .u-line-progress__text { |
| | | // margin-right: -20px; |
| | | // color: #212121; |
| | | // width: 100px; |
| | | // margin-top: 10px; |
| | | display: none; |
| | | |
| | | } |
| | | |
| | | ::v-deep .addClass .u-button__text { |
| | | font-size: 46rpx !important; |
| | | ::v-deep .u-text__value--content { |
| | | font-size: 12px !important; |
| | | } |
| | | |
| | | |
| | | ::v-deep .u-modal__content { |
| | | padding-bottom: 260rpx; |
| | | margin-bottom: 100rpx; |
| | | ::v-deep .u-tag__close { |
| | | background: #436df5 !important; |
| | | } |
| | | |
| | | ::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; |
| | | } |
| | | |
| | | |
| | | |
| | | .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; |
| | | ::v-deep .u-cell__body { |
| | | padding-bottom: 40rpx; |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <page-nav title="ç产æ¥å·¥"></page-nav> |
| | | |
| | | |
| | | <view v-show="topContent.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">è¯·æ«æä»»å¡æ¡ç </div> |
| | | </div> |
| | | </view> |
| | | |
| | | <view v-show="topContent.length!==0"> |
| | | <view class="mainContent" :style="{maxHeight:'1260rpx',overflow: 'scroll'}"> |
| | | |
| | | <!-- æ¥å·¥ä¿¡æ¯ --> |
| | | <u-gap height="5" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style="padding-bottom: 10rpx;"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title"> |
| | | æ¥å·¥ä¿¡æ¯ |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="marginTop20 marginLeft20 marginRight20 flex_between"> |
| | | <u-radio-group class="flex_column"> |
| | | |
| | | <view class="marginBottom20 " v-for="(item,index) in topContent" :key="item.wo_code"> |
| | | |
| | | <view class="flex_between"> |
| | | <view style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>å·¥åç¼å·ï¼</view> |
| | | <view>产åç¼ç ï¼</view> |
| | | <view>产ååç§°ï¼</view> |
| | | <view>产åè§æ ¼ï¼</view> |
| | | <view>å½åå·¥åºï¼</view> |
| | | <view>任塿°éï¼</view> |
| | | <view>æªæ¥/å·²æ¥ï¼</view> |
| | | <view>ä¸éå·¥åºï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{item.wo_code}}</view> |
| | | <view>{{item.partnumber}}</view> |
| | | <view>{{item.partname}}</view> |
| | | <view>{{item.partspec.toString().length===0?'/':item.partspec}}</view> |
| | | <view>{{item.stepname}}</view> |
| | | <view>{{item.planqty}}</view> |
| | | <view>{{item.noreportqty}}/{{item.reportqty}}</view> |
| | | <view>{{item.nextstepname?item.nextstepname:'/'}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | </u-radio-group> |
| | | </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"> |
| | | |
| | | <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> |
| | | <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> |
| | | </u-radio-group> |
| | | </view> |
| | | |
| | | |
| | | <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 @click='userGroupSheetClick' class="custominputClass"> |
| | | <view v-show='userGroupSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='userGroupSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{userGroupSheetValue}} |
| | | </view> |
| | | <u-icon :name="!userGroupSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <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 @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> |
| | | |
| | | |
| | | <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='epqSheetClick' class="custominputClass"> |
| | | |
| | | <view v-show='eqpSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='eqpSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{eqpSheetValue}} |
| | | </view> |
| | | |
| | | <u-icon :name="!eqpSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <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="请è¾å
¥" :adjustPosition='false' border="surround" type='number' |
| | | v-model="reportqty"> |
| | | </u--input> |
| | | </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-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | |
| | | |
| | | |
| | | |
| | | <u-button size="large" :loading="isDisabledSubmitButton" loadingText="æ£å¨æäº¤,请ç¨ç..." type="primary" |
| | | @click="submit" text="æ¥å·¥"> |
| | | </u-button> |
| | | |
| | | |
| | | <!-- ç产çç» --> |
| | | <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-picker v-if="topContent.length!==0" :show="eqpSheetShow" :columns="eqpColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='eqpSheetShow=false' @confirm='eqpPickerConfirm' |
| | | @cancel='eqpSheetShow=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> |
| | | |
| | | |
| | | <!-- æ¥å·¥äººå --> |
| | | <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> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | |
| | | |
| | | <!-- <view v-show="topContent.length!==0" style="position: absolute; bottom: 210rpx;right: 20rpx;"> |
| | | <div class="scanImg2" @click="topScanClick"></div> |
| | | </div> |
| | | </view> --> |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <!-- <view |
| | | 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> --> |
| | | |
| | | <!-- <scan-code></scan-code> --> |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepStart, |
| | | PersonPermissions, |
| | | EqpPermissionsPlus, |
| | | GroupsPermissions, |
| | | GroupsPersonPermissions, |
| | | DefectPermissions, |
| | | SavaMesOrderStepReport, |
| | | LabelBarCode |
| | | } from '../../config/api.js'; |
| | | // import scanCode from '@/components/scan-code/scan-code.vue' |
| | | export default { |
| | | // components: { |
| | | // scanCode |
| | | // }, |
| | | onLoad(option) { |
| | | if (option.orderstep) { |
| | | this.fromType = '1' |
| | | this.getMesOrderStepStart(option.orderstep) |
| | | } else { |
| | | this.fromType = '2' |
| | | } |
| | | |
| | | // const _this = this |
| | | // uni.$off('scancodedate') // æ¯æ¬¡è¿æ¥å
ç§»é¤å
¨å±èªå®ä¹äºä»¶çå¬å¨ |
| | | // uni.$on('scancodedate', function(content) { |
| | | // console.log("æ«æå°çå
容为:", content) |
| | | // // _this.getMesOrderStepStart(content) |
| | | |
| | | // if (_this.topContent.find(i => i.wo_code + ';' + i.stepcode === content)) { |
| | | // _this.$u.toast('æ¤æ¡ç å·²æ«æï¼å·²å¨å表ä¸ï¼') |
| | | // } else { |
| | | // _this.getMesOrderStepStart(content) |
| | | // } |
| | | // }) |
| | | }, |
| | | |
| | | onPullDownRefresh() { |
| | | setTimeout(() => { |
| | | this.init(() => { |
| | | uni.stopPullDownRefresh(); |
| | | }) |
| | | }, 1000); |
| | | }, |
| | | |
| | | data() { |
| | | return { |
| | | topRightMessageCount: 0, |
| | | isDisabledSubmitButton: false, |
| | | |
| | | formData: {}, |
| | | |
| | | reckway: '个人', //计件æ¹å¼ group代表æ¯çç» person 代表æ¯ä¸ªäºº |
| | | userGroupSheetValue: '', //ç产çç»ä¸æéä¸çå¼ |
| | | eqpSheetValue: '', //设å¤åç§°ä¸æéä¸çå¼ |
| | | userGroupSheetList: [], //ç产çç»ä¸ææ°ç» |
| | | eqpSheetList: [], //设å¤åç§°ä¸ææ°ç» |
| | | userGroupSheetShow: false, //䏿å表æ¯å¦å±å¼ |
| | | eqpSheetShow: false, |
| | | topContent: [ |
| | | // { |
| | | // nextstepcode: "GX005", |
| | | // nextstepname: "å
¥åº", |
| | | // noputqty: 0, |
| | | // noreportqty: 100, |
| | | // partname: "8504å
æº", |
| | | // partnumber: "302", |
| | | // partspec: "/", |
| | | // planqty: 100, |
| | | // reportqty: 0, |
| | | // seq: "1", |
| | | // startqty: 100, |
| | | // stepcode: "GX001", |
| | | // stepdesc: "", |
| | | // stepname: "颿", |
| | | // wo_code: "MO-2022-11-0035_1", |
| | | // }, |
| | | ], |
| | | |
| | | reportqty: '', //æ¥å·¥æ°é |
| | | |
| | | ngqty: '', //ä¸è¯æ°é |
| | | |
| | | ngqtyArr: [{ |
| | | uid: new Date().getTime(), |
| | | ngqty: '', |
| | | badSheetValue: '', |
| | | arrowDown: true //åä¸ç®å¤´ |
| | | }, |
| | | // { |
| | | // ngqty: '', |
| | | // badSheetValue: '', |
| | | // arrowDown: true //åä¸ç®å¤´ |
| | | // }, |
| | | ], //ä¸è¯æ°éãä¸è¯åå æ°ç» |
| | | |
| | | |
| | | |
| | | |
| | | badSelectArr: [], //ä¸è¯åå 䏿æ°ç» |
| | | badSheetValue: '', //ä¸è¯åå éä¸å¼ |
| | | badSheetShow: false, |
| | | checkBoxValue: [], //ä¸è¯åå æ¾ç¤ºå¼ |
| | | operSheetValue: '', //æä½äººåéä¸å¼ |
| | | operSheetShow: false, |
| | | operSheetList: [], //æä½äººåæ°ç» |
| | | userArr: [], //æ¥å·¥äººåä¿¡æ¯æ°ç» |
| | | |
| | | |
| | | userSelectValue: '', //䏿éé¡¹å¼ |
| | | userSelectArrAll: [], //ææäººå䏿æ°ç» |
| | | userSelectArr: [ |
| | | // { |
| | | // value: '1001', |
| | | // text: 'å°ç¾1' |
| | | // }, |
| | | ], //人å䏿æ°ç» |
| | | userGroupColumns: [], // |
| | | eqpColumns: [], // |
| | | operColumns: [], // |
| | | isAsyncChange: false, |
| | | |
| | | userCheckBoxValue: [], |
| | | userSheetShow: false, |
| | | |
| | | fromType: '1', //æ¥æºäºåªé æ¯é¡µé¢1è¿æ¯2 |
| | | } |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | mounted() { |
| | | this.init() |
| | | |
| | | // this.getMesOrderStepStart('MO-2024-01-0004_1;102') |
| | | |
| | | this.getSellectAllApi() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | async getSellectAllApi() { |
| | | await this.getGroupsPermissions() //è·åç产çç» |
| | | await this.getEqpPermissionsPlus() //è·å设å¤åç§° |
| | | await this.getDefectPermissions() //è·å缺é·ä¸æ |
| | | await this.getPersonPermissions() //è·åæä½äººå |
| | | }, |
| | | |
| | | |
| | | //è·åç产çç» |
| | | async getGroupsPermissions(wkshopcode) { |
| | | |
| | | const res = await GroupsPermissions() |
| | | if (res.code === '200') { |
| | | // æ°ç»å¯¹è±¡ æ¿æ¢å¯¹è±¡é®å |
| | | this.userGroupSheetList = res.data.map(({ |
| | | usergroupcode, |
| | | usergroupname |
| | | }) => ({ |
| | | code: usergroupcode, |
| | | name: usergroupname |
| | | })) |
| | | |
| | | this.userGroupColumns = [this.userGroupSheetList.map(i => i.name)] |
| | | } |
| | | }, |
| | | // è·å设å¤åç§° |
| | | async getEqpPermissionsPlus() { |
| | | const res = await EqpPermissionsPlus() |
| | | if (res.code === '200') { |
| | | this.eqpSheetList = res.data |
| | | this.eqpColumns = [this.eqpSheetList.map(i => i.name)] |
| | | } |
| | | }, |
| | | // è·åä¸è¯åå |
| | | async getDefectPermissions(orderstepqrcode) { |
| | | const res = await DefectPermissions() |
| | | if (res.code === '200') { |
| | | this.badSelectArr = res.data |
| | | } |
| | | }, |
| | | // è·åæ¥å·¥äººå |
| | | async getPersonPermissions() { |
| | | const res = await PersonPermissions() |
| | | if (res.code === '200') { |
| | | // this.operSheetList = res.data |
| | | this.operSheetList = res.data.map(({ |
| | | usercode, |
| | | username |
| | | }) => ({ |
| | | code: usercode, |
| | | name: username |
| | | })) |
| | | this.operColumns = [this.operSheetList.map(i => i.name)] |
| | | this.userSelectArrAll = this.operSheetList |
| | | } |
| | | }, |
| | | // æ ¹æ®ç产çç»è·å人å |
| | | async getGroupsPersonPermissions(groupcode) { |
| | | |
| | | const res = await GroupsPersonPermissions({ |
| | | groupcode |
| | | }) |
| | | if (res.code === '200') { |
| | | 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(',') |
| | | |
| | | |
| | | } |
| | | }, |
| | | |
| | | |
| | | |
| | | userSheetSelect() { |
| | | |
| | | }, |
| | | userCheckboxChange(val) { |
| | | this.userCheckBoxValue = val.join(',') |
| | | }, |
| | | |
| | | //è·åå¼å·¥ä¿¡æ¯ |
| | | async getMesOrderStepStart(orderstepqrcode) { |
| | | const data = { |
| | | OperType: 'ZZ', |
| | | SelectType: '', |
| | | wocode: orderstepqrcode ? orderstepqrcode.split(';')[0] : '', |
| | | stepcode: orderstepqrcode ? orderstepqrcode.split(';')[1] : '' |
| | | |
| | | } |
| | | const res = await MesOrderStepStart(this.global.formatData(data)) |
| | | if (res.code === '200' && res.count === 1) { |
| | | this.formData = res.data |
| | | this.topContent.unshift(res.data) |
| | | } else if (res.code === '200' && res.count !== 1) { |
| | | this.$u.toast('æ¤å·¥åºå·²æ¥å·¥ï¼') |
| | | } |
| | | |
| | | }, |
| | | // æ«ç äºä»¶ |
| | | topScanClick() { |
| | | let that = this; |
| | | |
| | | uni.scanCode({ |
| | | onlyFromCamera: true, |
| | | // scanType: ['barCode', 'qrCode'], |
| | | scanType: ['qrCode'], |
| | | success: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | |
| | | if (that.topContent.find(i => i.wo_code + ';' + i.stepcode === res.result)) { |
| | | that.$u.toast('æ¤æ¡ç å·²æ«æï¼å·²å¨å表ä¸ï¼') |
| | | } else { |
| | | that.getMesOrderStepStart(res.result) |
| | | } |
| | | |
| | | }, |
| | | complete: function(res) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | async submit() { |
| | | // ä¸ååç产æ¥å·¥æäº¤ |
| | | |
| | | if (this.reckway === 'çç»' && this.userGroupSheetValue === "") { |
| | | return uni.$u.toast('ç产çç»ä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | if (this.reckway === '个人' && this.operSheetValue === "") { |
| | | return uni.$u.toast('æ¥å·¥äººåä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | if (this.eqpSheetValue === "") { |
| | | return uni.$u.toast('设å¤åç§°ä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | if (this.reportqty === "") { |
| | | return uni.$u.toast('æ¥å·¥æ°éä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | if (this.reckway === 'çç»' && this.operSheetValue.length === 0) { |
| | | 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) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | 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('æ¥å·¥æ°éå ä¸è¯æ°éä¸è½å¤§äºæªæ¥æ°éï¼') |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | 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 = { |
| | | 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 : '', // çç»ç¼ç |
| | | 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(JSON.parse(JSON.stringify(data)), 7777) |
| | | this.isDisabledSubmitButton = true |
| | | 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.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 |
| | | |
| | | |
| | | if (this.fromType === '1') { |
| | | let pages = getCurrentPages(); // 页é¢éå |
| | | let beforePage = pages[pages.length - 2]; //ä¸ä¸ä¸ªé¡µé¢ |
| | | beforePage.$vm.getProductionScheduleKanban() |
| | | |
| | | uni.navigateBack() |
| | | } |
| | | |
| | | |
| | | this.isDisabledSubmitButton = false |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | }, |
| | | userGroupSheetSelect(val) { |
| | | this.userGroupSheetValue = val.name |
| | | this.userGroupSheetShow = false |
| | | }, |
| | | userGroupSheetClick() { |
| | | this.userGroupSheetShow = true |
| | | }, |
| | | eqpSheetSelect(val) { |
| | | this.eqpSheetValue = val.name |
| | | this.eqpSheetShow = false |
| | | }, |
| | | epqSheetClick() { |
| | | this.eqpSheetShow = true |
| | | }, |
| | | badSheetSelect(val) { |
| | | // console.log(val,9999999) |
| | | }, |
| | | 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(',') |
| | | }, |
| | | operSheetClick() { |
| | | if (this.reckway === '个人') { |
| | | this.operSheetShow = true |
| | | } |
| | | |
| | | if (this.reckway === 'çç»') { |
| | | this.userSheetShow = true |
| | | } |
| | | }, |
| | | //å鿡弿¹åæ¶ |
| | | radioGroupChange(val) { |
| | | this.userGroupSheetValue = '' |
| | | this.operSheetValue = '' |
| | | }, |
| | | |
| | | // æ·»å |
| | | 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) { |
| | | console.log(index) |
| | | this.ngqtyArr.splice(index, 1) |
| | | |
| | | }, |
| | | |
| | | |
| | | userChange(val) { |
| | | this.userSelectValue = val |
| | | }, |
| | | userGroupPickerConfirm(val) { |
| | | console.log(val, 11) |
| | | this.getGroupsPersonPermissions(this.userGroupSheetList.find(i => i.name === val.value[0]).code) |
| | | this.userGroupSheetValue = val.value[0] |
| | | this.userGroupSheetShow = false |
| | | }, |
| | | eqpPickerConfirm(val) { |
| | | this.eqpSheetValue = val.value[0] |
| | | this.eqpSheetShow = false |
| | | }, |
| | | operPickerConfirm(val) { |
| | | this.operSheetValue = val.value[0] |
| | | this.operSheetShow = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import url('@/style/global.css'); |
| | | |
| | | ::v-deep .uicon-arrow-left>span { |
| | | display: block; |
| | | } |
| | | |
| | | .custominputClass { |
| | | width: 412rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | border: 3rpx #eff0f1 solid; |
| | | border-radius: 10rpx; |
| | | padding: 0 16rpx; |
| | | |
| | | } |
| | | |
| | | .ellipsis { |
| | | text-overflow: ellipsis; |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | .scanImg2 { |
| | | width: 70px; |
| | | height: 70px; |
| | | border-radius: 50%; |
| | | margin: auto; |
| | | background: url('@/static/img/scan.png') no-repeat; |
| | | box-shadow: #436df5 0px 0px 20px; |
| | | background-size: 100% 100%; |
| | | } |
| | | |
| | | ::v-deep .addClass .uicon-plus-circle { |
| | | font-size: 50rpx !important; |
| | | margin-right: 20rpx !important; |
| | | } |
| | | |
| | | ::v-deep .addClass .u-button__text { |
| | | font-size: 46rpx !important; |
| | | } |
| | | |
| | | |
| | | ::v-deep .u-modal__content { |
| | | padding-bottom: 260rpx; |
| | | margin-bottom: 100rpx; |
| | | } |
| | | |
| | | ::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; |
| | | } |
| | | |
| | | |
| | | |
| | | .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> |
| | |
| | | <template> |
| | | <view> |
| | | <page-nav title="å§å¤åæ"></page-nav> |
| | | <page-nav title="å¤ååæ"></page-nav> |
| | | |
| | | |
| | | <view v-show="topContent.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">æ«æä»»å¡æ¡ç </div> |
| | | </div> |
| | | <view class="flex_center" style="margin: 20rpx;"> |
| | | |
| | | <!-- #ifdef H5 --> |
| | | <u--input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" :placeholder="placeholder" |
| | | style="width:100%;background-color: #fff;border-radius: 40rpx;" border="surround" suffixIcon="scan" |
| | | suffixIconStyle="color: #909399;font-size: 22px;" v-model="inputBoxValue" |
| | | @change="confirmInputBoxValue"> |
| | | <template slot="suffix"> |
| | | <u-icon name="scan" color="#909399" size="24" @click="scanClick"></u-icon> |
| | | </template> |
| | | </u--input> |
| | | <!-- #endif --> |
| | | |
| | | <!-- #ifdef APP-PLUS --> |
| | | <u-input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" :placeholder="placeholder" |
| | | style="width:100%;background-color: #fff;border-radius: 40rpx;" border="surround" suffixIcon="scan" |
| | | suffixIconStyle="color: #909399;font-size: 22px;" v-model="inputBoxValue" |
| | | @change="confirmInputBoxValue"> |
| | | <template slot="suffix"> |
| | | <u-icon name="scan" color="#909399" size="24" @click="scanClick"></u-icon> |
| | | </template> |
| | | </u-input> |
| | | <!-- #endif --> |
| | | |
| | | <view class="flex_center marginLeft20" @click="popupShow=true"> |
| | | <u--text size='16' color='#909399' text="çé"></u--text> |
| | | <u--image :showLoading="true" src="../../static/img/sift.png" width="20px" height="20px"></u--image> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-show="topContent.length!==0" class="mainContent"> |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | åæä¿¡æ¯ |
| | | |
| | | <u-alert :title="alertTitle" type="info"></u-alert> |
| | | |
| | | |
| | | <!-- æå 颿¿ --> |
| | | <!-- <u-collapse @change="change" @close="close" @open="open"> --> |
| | | <!-- @change="collapseChange" --> |
| | | <u-collapse style="max-height: 590px;overflow: auto;"> |
| | | <!-- :value='parseFloat(item.ordergoodqty)+"/"+parseFloat(item.orderqty)' --> |
| | | <u-collapse-item style="position: relative;" :title="item.ordercode" :name='item.ordercode' |
| | | :value='parseFloat(item.ordergoodqty)+"/"+parseFloat(item.orderqty)' |
| | | :label="item.children.length===0?'æªæ´¾å':''" :disabled='item.children.length===0' |
| | | v-for="item in collapseArr" :key="item.ordercode"> |
| | | |
| | | |
| | | <view style="position: absolute;width: 200rpx;left: 30rpx;top:34px;font-size: 24rpx;color: #999;"> |
| | | {{item.partname}} {{item.partspec}} |
| | | </view> |
| | | |
| | | <!-- <view style="position: absolute;width: 26%;left: 44%;top:16px;"> --> |
| | | <view style="position: absolute;width: 120px;left: 44%;top:16px;color:#0659ff" |
| | | @click="progressClick(item.ordercode)"> |
| | | <!-- {{item.partname}}{{item.partspec}} --> |
| | | <u-line-progress :percentage="parseFloat((item.ordergoodqty*100/item.orderqty).toFixed(2))" |
| | | inactiveColor="#d1d6f5" height="10" activeColor="#0659ff"></u-line-progress> |
| | | </view> |
| | | |
| | | <!-- <view style="position: absolute;width: 100px;right: 33px; top:13px; "> |
| | | <view class="" style="display: flex;justify-content: flex-end;"> |
| | | <view style="color: #0659ff;"> |
| | | {{parseFloat(item.ordergoodqty)}} |
| | | </view> |
| | | <view> |
| | | /{{ parseFloat(item.orderqty)}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | --> |
| | | |
| | | <view class="marginLeft20 marginRight20" style="height: 360rpx;" v-if="topContent.length!==0"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <!-- v-for="item in purchorderArr" --> |
| | | <view class="flex_column titleFont"> |
| | | <view>å·¥åç¼å·ï¼</view> |
| | | <view>产åç¼ç ï¼</view> |
| | | <view>产ååç§°ï¼</view> |
| | | <view>产åè§æ ¼ï¼</view> |
| | | <view>å½åå·¥åºï¼</view> |
| | | <view>任塿°éï¼</view> |
| | | <view>æªå/å·²åï¼</view> |
| | | |
| | | <view v-if="radiovalue==='ç产工å'" style="margin:0 0 5px"> |
| | | <view class="flex_column"> |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产åç¼ç ï¼</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partcode}}</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{topContent[0].wo_code}}</view> |
| | | <view>{{topContent[0].partnumber}}</view> |
| | | <view>{{topContent[0].partname}}</view> |
| | | <view>{{topContent[0].partspec?topContent[0].partspec:'/'}}</view> |
| | | <view>{{topContent[0].stepname}}</view> |
| | | <view>{{topContent[0].planqty}}</view> |
| | | <view>{{topContent[0].startqty+'/'+topContent[0].reportqty}}</view> |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产ååç§°ï¼</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partname}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block" style="justify-content: flex-start;height: 70rpx;padding-bottom: 10rpx;"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | å¤å便¹ |
| | | </view> |
| | | </view> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view @click='WXSheetClick' class="custominputClass"> |
| | | <view v-show='WXSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='WXSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{WXSheetValue}} |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产åè§æ ¼ï¼</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partspec?item.partspec:'/'}} |
| | | </view> |
| | | <u-icon :name="!WXSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block" style="justify-content: flex-start;height: 70rpx;padding-bottom: 10rpx;"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | å¤å人å |
| | | <!-- {{item.children}} --> |
| | | <!-- <u--text class="u-collapse-content"> --> |
| | | <u-steps :current="-1" inactiveColor='#0659FF' direction="column"> |
| | | <view v-for="(it,ind) in item.children" :key="item.ordercode+it.name+ind" |
| | | @click="gotoPage(item.ordercode,it.code)" style="display: flex;align-items: center;"> |
| | | |
| | | <u-steps-item :title="it.code+'/'+it.name+it.spec"></u-steps-item> |
| | | <view class="" style="width: 100px;"> |
| | | <u-line-progress :percentage="parseFloat((it.goodqty*100/it.planqty).toFixed(2))" |
| | | inactiveColor="#d1d6f5" height="10" activeColor="#0659ff"></u-line-progress> |
| | | </view> |
| | | </view> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view @click='userSheetClick' class="custominputClass"> |
| | | <view v-show='userSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='userSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{userSheetValue}} |
| | | <view style="width: 30%;text-align: right;"> |
| | | <view class="" style="display: flex;justify-content: flex-end;"> |
| | | <view style="color: #0659ff;"> |
| | | {{parseFloat(it.goodqty)}} |
| | | </view> |
| | | <view> |
| | | /{{ parseFloat(it.planqty)}} |
| | | </view> |
| | | </view> |
| | | <u-icon :name="!userSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | |
| | | </u-steps> |
| | | <!-- </u--text> --> |
| | | |
| | | |
| | | </u-collapse-item> |
| | | |
| | | </u-collapse> |
| | | |
| | | |
| | | <!-- å¼¹åºå± --> |
| | | <!-- closeIconPos='top-left' closeOnClickOverlay closeable='true' --> |
| | | <u-popup :show="popupShow" mode="right" @close="popupClose" @open="popupOpen"> |
| | | <view style="margin: 120px 10px 20px;" class="flex_column"> |
| | | |
| | | <!-- <view style="display: flex;"> |
| | | <view> |
| | | åæ®ç±»åï¼ |
| | | </view> |
| | | |
| | | <u-radio-group v-model="radiovalue" placement="column" @change="groupChange" |
| | | style="margin-top: 4px;"> |
| | | <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist" |
| | | :key="index+item.name" :label="item.name" iconSize='16' labelSize='16' :name="item.name"> |
| | | |
| | | </u-radio> |
| | | </u-radio-group> |
| | | </view> --> |
| | | |
| | | <view style="margin-top: 20px;display: flex;align-items: center;"> |
| | | |
| | | <view class=""> |
| | | 产åä¿¡æ¯ï¼ |
| | | </view> |
| | | <view class=""> |
| | | <u-button :hairline="true" shape="circle" icon="map" :plain="true" |
| | | style="width: 100px;height: 26px;" type="primary" text="éæ©äº§å" @click="chosePart"></u-button> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <view style="display: flex;flex-wrap: wrap;"> |
| | | <u-tag style="width:220rpx;" :text="item.name" v-for="item in tagArr" :key="item.code" |
| | | :closable="true" :show="item.close" @close="tagClose(item)"></u-tag> |
| | | </view> |
| | | |
| | | |
| | | |
| | | <!-- <view class="head" style="margin-top: 10px;"> |
| | | <view class="head_block" style="height: 80rpx; display: flex;justify-content: space-around;"> |
| | | <u-button :plain='today' style="width: 70px;height: 25px;" @click="dateChange('today')" |
| | | type="primary" shape="circle" text="仿¥"> |
| | | </u-button> |
| | | <u-button :plain='month' style="width: 70px;height: 25px;" @click="dateChange('month')" |
| | | type="primary" shape="circle" text="æ¬æ"> |
| | | </u-button> |
| | | <u-button :plain='custom' style="width: 70px;height: 25px;" @click="dateChange('custom')" |
| | | type="primary" shape="circle" text="èªå®ä¹"></u-button> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block" style="justify-content: flex-start;height: 70rpx;padding-bottom: 10rpx;"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | åææ°é |
| | | </view> |
| | | <view v-if="!custom" class="flex_column" |
| | | style="display: flex;justify-content: space-around;width: 100%;"> |
| | | <view class="" style="display: flex;justify-content: space-evenly;width: 100%;"> |
| | | <view class="titleFont">å¼å§æ¥æ</view> |
| | | <view class="titleFont">~</view> |
| | | <view class="titleFont">ç»ææ¥æ</view> |
| | | </view> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view class='inputClass'> |
| | | <u--input placeholder="请è¾å
¥" border="surround" type='number' v-model="fqty"> |
| | | </u--input> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | <u-button type="info" icon='calendar' iconColor="#0659FF" size="" @click="calendarClick" |
| | | :text="calendarRange"> |
| | | </u-button> |
| | | </view> --> |
| | | |
| | | <!-- <uni-calendar ref="calendar" :range='true' :insert="false" @confirm="calendarConfirm" /> --> |
| | | |
| | | </view> |
| | | </u-popup> |
| | | |
| | | |
| | | |
| | | <u-picker v-if="topContent.length!==0" :show="WXSheetShow" :columns="WXColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='WXSheetShow=false' @confirm='WXPickerConfirm' |
| | | @cancel='WXSheetShow=false'> |
| | | </u-picker> |
| | | |
| | | |
| | | <u-picker v-if="topContent.length!==0" :show="userSheetShow" :columns="userColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='userSheetShow=false' @confirm='userPickerConfirm' |
| | | @cancel='userSheetShow=false'> |
| | | </u-picker> |
| | | |
| | | |
| | | </view> |
| | | |
| | | <u-button size="large" v-show="topContent.length!==0" :loading="isDisabledSubmitButton" |
| | | loadingText="æ£å¨æäº¤,请ç¨ç..." type="primary" @click="submit" text="åæ"> |
| | | </u-button> |
| | | |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <!-- <view v-show="topContent.length!==0&&!WXSheetShow&&!userSheetShow" @click="topScanClick"> |
| | | <drag-ball :x='$DeviceInformation.screenWidth*0.8' :y="$DeviceInformation.screenHeight*0.7"></drag-ball> |
| | | </view> --> |
| | | |
| | | <!-- <scan-code></scan-code> --> |
| | | |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <view @click="scan2"> |
| | | <drag-ball :x='300' :y="600"></drag-ball> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepStart, |
| | | CustomerPermissions, |
| | | PersonPermissions, |
| | | SavaMesOrderStepOut |
| | | ProductionScheduleKanban |
| | | } from '../../config/api.js'; |
| | | // import scanCode from '@/components/scan-code/scan-code.vue' |
| | | |
| | | export default { |
| | | onLoad(option) { |
| | | const _this = this |
| | | uni.$off('scancodedate') // æ¯æ¬¡è¿æ¥å
ç§»é¤å
¨å±èªå®ä¹äºä»¶çå¬å¨ |
| | | uni.$on('scancodedate', function(content) { |
| | | console.log("æ«æå°çå
容为:", content) |
| | | _this.getCheckScanDeviceQrCodeData(content) |
| | | }) |
| | | |
| | | |
| | | console.log(option, 8) |
| | | }, |
| | | |
| | | onPullDownRefresh() { |
| | |
| | | data() { |
| | | return { |
| | | topRightMessageCount: '', |
| | | inputBoxValue: '', |
| | | alertTitle: '', |
| | | popupShow: false, //å¼¹åºå±æ¯å¦æ¾ç¤º |
| | | collapseArr: [ //æå 颿¿æ°æ® |
| | | ], |
| | | collapseArrAll: [], //ææ |
| | | placeholder: '请è¾å
¥å·¥åä¿¡æ¯', |
| | | radiovalue: 'ç产工å', //åæ®ç±»å |
| | | // SOï¼éå®è®¢å MOï¼ç产订å POï¼ç产工å |
| | | radiolist: [{ |
| | | name: 'éå®è®¢å' |
| | | }, |
| | | { |
| | | name: 'ç产订å' |
| | | }, |
| | | { |
| | | name: 'ç产工å' |
| | | }, |
| | | ], |
| | | |
| | | isDisabledSubmitButton: false, |
| | | today: true, |
| | | month: false, |
| | | custom: true, |
| | | |
| | | topContent: [], |
| | | // { |
| | | // "wo_code": "MO-2023-06-0003_1", |
| | | // "partnumber": "308", |
| | | // "partname": "çµæ± å
", |
| | | // "partspec": "", |
| | | // "seq": "2", |
| | | // "stepcode": "ZSStep03", |
| | | // "stepname": "廿¯åº", |
| | | // "nextstepcode": "ZSStep06", |
| | | // "nextstepname": "å
è£
2", |
| | | // "stepdesc": "", |
| | | // "wkshopcode": "ZS001", |
| | | // "wkshopname": "注å¡è½¦é´", |
| | | // "planqty": 50.00, |
| | | // "startqty": 29.00, |
| | | // "noreportqty": 29.00, |
| | | // "reportqty": 21.00, |
| | | // "noputqty": 0.0, |
| | | // "list": null |
| | | // }, //æ«æä»»å¡æ¡ç æå¸¦åºæ¥çå
容 |
| | | |
| | | WXSheetValue: '', |
| | | WXSheetShow: false, //䏿å表æ¯å¦å±å¼ |
| | | WXColumns: [], |
| | | WXSheetList: [], |
| | | // calendarRange: new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | // 10), //ç³»ç»å½åæ¥æ |
| | | calendarRange: new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10), //å½ææ¥æ |
| | | |
| | | |
| | | userSheetValue: '', |
| | | userSheetShow: false, |
| | | userColumns: [], |
| | | userSheetList: [], |
| | | |
| | | fqty: null, |
| | | |
| | | |
| | | tagArr: [ |
| | | // { |
| | | // close: true, |
| | | // name: 'çµæ± å
', |
| | | // code: '1002' |
| | | // }, { |
| | | // close: true, |
| | | // name: 'çµè', |
| | | // code: '1003' |
| | | // }, { |
| | | // close: true, |
| | | // name: '8054å
æº', |
| | | // code: '1004' |
| | | // }, { |
| | | // close: true, |
| | | // name: 'G71674å²éæª', |
| | | // code: '1005' |
| | | // }, { |
| | | // close: true, |
| | | // name: '8051å
æº', |
| | | // code: '1006' |
| | | // }, |
| | | ], //å·²éä¸çäº§åæ ç¾ |
| | | |
| | | |
| | | } |
| | |
| | | mounted() { |
| | | this.init() |
| | | |
| | | |
| | | // this.getMesOrderStepStart('MO-2023-09-0002_1;106') |
| | | |
| | | this.handleSelectAllApi() |
| | | |
| | | |
| | | this.getProductionScheduleKanban() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | gotoPage(p1, p2) { |
| | | let orderstep = null |
| | | |
| | | async handleSelectAllApi() { |
| | | await this.getCustomerPermissions() |
| | | await this.getPersonPermissions() |
| | | }, |
| | | |
| | | |
| | | async getPersonPermissions(val) { |
| | | const data = { |
| | | usercode: val |
| | | } |
| | | const res = await PersonPermissions(this.global.formatData(data)) |
| | | this.userSheetList = res.data |
| | | this.userColumns = [res.data.map(i => i.username)] |
| | | }, |
| | | |
| | | async getCustomerPermissions(val) { |
| | | const data = { |
| | | orderstepqrcode: val |
| | | } |
| | | const res = await CustomerPermissions(this.global.formatData(data)) |
| | | this.WXSheetList = res.data |
| | | this.WXColumns = [res.data.map(i => i.name)] |
| | | }, |
| | | |
| | | async getMesOrderStepStart(val) { |
| | | const data = { |
| | | OperType: 'WX', |
| | | SelectType: 'OUT', |
| | | wocode: val ? val.split(';')[0] : '', |
| | | stepcode: val ? val.split(';')[1] : '' |
| | | } |
| | | |
| | | const res = await MesOrderStepStart(this.global.formatData(data)) |
| | | console.log(res, 3) |
| | | |
| | | if (res.code === '200') { |
| | | this.WXSheetValue = '' |
| | | this.userSheetValue = '' |
| | | this.fqty = null |
| | | this.topContent = [] |
| | | this.topContent.push(res.data) |
| | | if (p1) { |
| | | orderstep = p1 + ';' + p2 |
| | | } else { |
| | | orderstep = '' |
| | | } |
| | | |
| | | |
| | | |
| | | uni.navigateTo({ |
| | | url: './wxfl2?orderstep=' + orderstep |
| | | }) |
| | | }, |
| | | |
| | | // 任塿¡ç çæ«ç æ¡ç¹å» |
| | | topScanClick() { |
| | | scan2() { |
| | | let that = this; |
| | | |
| | | uni.scanCode({ |
| | |
| | | success: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | // that.scanContent = res.result; |
| | | |
| | | that.getMesOrderStepStart(res.result) |
| | | uni.navigateTo({ |
| | | url: './wxfl2?orderstep=' + res.result |
| | | }) |
| | | |
| | | }, |
| | | complete: function(res) { |
| | |
| | | }); |
| | | }, |
| | | |
| | | |
| | | WXSheetClick() { |
| | | this.WXSheetShow = true |
| | | getCheckboxValue(val) { |
| | | this.tagArr = [] |
| | | val.forEach(i => { |
| | | this.tagArr.push({ |
| | | close: true, |
| | | name: i.split('/')[1].trim(), |
| | | code: i.split('/')[0].trim() |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | WXPickerConfirm(val) { |
| | | this.WXSheetValue = val.value[0] |
| | | this.WXSheetShow = false |
| | | }, |
| | | |
| | | userSheetClick() { |
| | | this.userSheetShow = true |
| | | }, |
| | | |
| | | userPickerConfirm(val) { |
| | | this.userSheetValue = val.value[0] |
| | | this.userSheetShow = false |
| | | }, |
| | | |
| | | |
| | | async submit() { |
| | | |
| | | if (!this.WXSheetValue) { |
| | | return uni.$u.toast('å¤å便¹ä¸è½ä¸ºç©ºï¼') |
| | | // æ¥å£è·å |
| | | async getProductionScheduleKanban() { |
| | | let ordertype = '' // SOï¼éå®è®¢å MOï¼ç产订å POï¼ç产工å |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥å·¥åä¿¡æ¯' |
| | | ordertype = 'PO' |
| | | break |
| | | case 'ç产订å': |
| | | this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥ç产订åä¿¡æ¯' |
| | | ordertype = 'MO' |
| | | break |
| | | case 'éå®è®¢å': |
| | | this.alertTitle = 'éå®è®¢åæ°éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥éå®è®¢åä¿¡æ¯' |
| | | ordertype = 'SO' |
| | | break |
| | | } |
| | | |
| | | if (!this.userSheetValue) { |
| | | return uni.$u.toast('å¤å人åä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | if (!this.fqty) { |
| | | return uni.$u.toast('åææ°éä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | if (parseFloat(this.fqty) > parseFloat(this.topContent[0].startqty)) { |
| | | return uni.$u.toast('åææ°éä¸è½å¤§äºæªåæ°éï¼') |
| | | } |
| | | |
| | | // 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 data = { |
| | | mesordercode: this.topContent[0].wo_code, // å·¥åç¼å· |
| | | partcode: this.topContent[0].partnumber, // 产åç¼ç |
| | | stepseq: this.topContent[0].seq, // å·¥åºåºå· |
| | | stepcode: this.topContent[0].stepcode, // å·¥åºç¼ç |
| | | wxcode: this.WXSheetList.find(i => i.name === this.WXSheetValue).code, // å¤åä¾åºåç¼ç |
| | | outuser: this.userSheetList.find(i => i.username === this.userSheetValue).usercode, // åæäººå |
| | | taskqty: this.topContent[0].planqty, // 任塿°é |
| | | fqty: this.fqty // åææ°é |
| | | ordertype, |
| | | partcode: this.tagArr.map(i => i.code).join(','), |
| | | Ratetime: this.calendarRange, |
| | | |
| | | } |
| | | const { |
| | | data: res |
| | | } = await ProductionScheduleKanban(data) |
| | | |
| | | this.collapseArr = res |
| | | this.collapseArrAll = res |
| | | this.alertTitle = this.alertTitle.split('/')[0] + this.collapseArr.length + this.alertTitle.split('/')[ |
| | | 1] |
| | | |
| | | }, |
| | | |
| | | |
| | | //è¾å
¥æ¡å车确认äºä»¶ |
| | | confirmInputBoxValue(val) { |
| | | this.collapseArr = this.collapseArrAll.filter((p) => { |
| | | return p.ordercode.indexOf(val) !== -1 |
| | | }) |
| | | |
| | | |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | break |
| | | case 'ç产订å': |
| | | this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | break |
| | | case 'éå®è®¢å': |
| | | this.alertTitle = 'éå®è®¢åæ°éï¼å
±/个ï¼' |
| | | break |
| | | } |
| | | this.alertTitle = this.alertTitle.split('/')[0] + this.collapseArr.length + this.alertTitle.split('/')[ |
| | | 1] |
| | | |
| | | }, |
| | | |
| | | // ç¹å»æ«ç |
| | | scanClick() { |
| | | this.topScanClick() |
| | | }, |
| | | |
| | | // æ«ç æ¡ç¹å» |
| | | topScanClick() { |
| | | let that = this; |
| | | |
| | | uni.scanCode({ |
| | | onlyFromCamera: true, |
| | | // scanType: ['barCode', 'qrCode'], |
| | | scanType: ['qrCode'], |
| | | success: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | that.scanContent = res.result; |
| | | |
| | | that.getCheckScanDeviceQrCodeData(that.scanContent); |
| | | }, |
| | | complete: function(res) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | getCheckScanDeviceQrCodeData(code) { |
| | | this.inputBoxValue = code |
| | | this.confirmInputBoxValue(this.inputBoxValue) |
| | | }, |
| | | |
| | | |
| | | // å¼¹åºå±æ¶èµ· |
| | | popupClose() { |
| | | this.getProductionScheduleKanban() |
| | | this.popupShow = false |
| | | }, |
| | | |
| | | // å¼¹åºå±å¼¹åº |
| | | popupOpen() { |
| | | |
| | | }, |
| | | |
| | | // éæ©äº§å |
| | | chosePart() { |
| | | let arr = [] |
| | | this.tagArr.forEach(i => { |
| | | arr.push(i.code + '/' + i.name) |
| | | }) |
| | | uni.navigateTo({ |
| | | url: '../znfx/chda?param=' + JSON.stringify(arr) |
| | | }); |
| | | }, |
| | | |
| | | // tagæ ç¾å
³é |
| | | tagClose(val) { |
| | | this.tagArr.forEach((i, j) => { |
| | | if (i.code === val.code) { |
| | | i.close = false |
| | | this.tagArr.splice(j, 1) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // æ¶é´èå´åæ¢ |
| | | dateChange(val) { |
| | | if (val === 'today') { |
| | | this.today = false |
| | | this.month = true |
| | | this.custom = true |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | 10) |
| | | } else if (val === 'month') { |
| | | this.today = true |
| | | this.month = false |
| | | this.custom = true |
| | | |
| | | this.calendarRange = new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10) |
| | | |
| | | } else if (val === 'custom') { |
| | | this.today = true |
| | | this.month = true |
| | | this.custom = false |
| | | this.calendarRange = new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10) |
| | | } |
| | | }, |
| | | |
| | | // æ¥åæ¶é´ç¹å» |
| | | calendarClick() { |
| | | this.$refs.calendar.open(); |
| | | }, |
| | | |
| | | // æ¥åç¡®å®äºä»¶ç¹å» |
| | | calendarConfirm(val) { |
| | | if (val.range.before < val.range.after) { |
| | | this.calendarRange = val.range.before + '~' + val.range.after |
| | | } else { |
| | | this.calendarRange = val.range.after + '~' + val.range.before |
| | | } |
| | | |
| | | console.log(JSON.stringify(data), 6) |
| | | |
| | | this.isDisabledSubmitButton = true |
| | | const res = await SavaMesOrderStepOut(data) |
| | | if (res.code === '200') { |
| | | uni.$u.toast('åææåï¼') |
| | | |
| | | this.WXSheetValue = '' |
| | | this.userSheetValue = '' |
| | | this.fqty = null |
| | | this.topContent = [] |
| | | |
| | | this.isDisabledSubmitButton = false |
| | | if (val.range.before === '') { |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + val.range.after |
| | | } |
| | | if (val.range.after === '') { |
| | | this.calendarRange = val.range.before + '~' + new Date().toISOString().slice(0, 10) |
| | | } |
| | | if (val.range.before === '' && val.range.after === '') { |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | 10) |
| | | } |
| | | // this.getData() |
| | | }, |
| | | |
| | | // this.isDisabledSubmitButton = true |
| | | // uni.uploadFile({ |
| | | // url: this.$baseUrl + '/AppProductionManagement/SavaMesOrderStepOut', |
| | | // files: [{ |
| | | // "uri": "/" |
| | | // }], |
| | | // header: header, |
| | | // formData: data, |
| | | // success: (res) => { |
| | | // uni.$u.toast('åææåï¼') |
| | | |
| | | // this.WXSheetValue = '' |
| | | // this.userSheetValue = '' |
| | | // this.fqty = null |
| | | // this.topContent = [] |
| | | |
| | | // this.isDisabledSubmitButton = false |
| | | // }, |
| | | // fail(res) { |
| | | // uni.$u.toast('åæå¤±è´¥ï¼') |
| | | // this.isDisabledSubmitButton = false |
| | | // }, |
| | | // }) |
| | | // åéæé®åæ¢ |
| | | groupChange(val) { |
| | | console.log(val) |
| | | }, |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | display: block; |
| | | } |
| | | |
| | | .custominputClass { |
| | | width: 412rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | border: 3rpx #eff0f1 solid; |
| | | border-radius: 10rpx; |
| | | padding: 0 16rpx; |
| | | line-height: 68rpx; |
| | | ::v-deep .u-alert__text--info--light { |
| | | margin-bottom: 0; |
| | | font-size: 32rpx !important; |
| | | padding-left: 10rpx; |
| | | color: #212121 !important; |
| | | font-weight: lighter; |
| | | } |
| | | |
| | | ::v-deep .u-alert--info--light { |
| | | background-color: rgba(255, 255, 255, 0.7); |
| | | } |
| | | |
| | | ::v-deep .u-steps-item__wrapper { |
| | | background-color: #eee; |
| | | } |
| | | |
| | | ::v-deep .u-steps-item__line--column { |
| | | display: none; |
| | | } |
| | | |
| | | ::v-deep .u-slide-right-enter-active { |
| | | width: 70%; |
| | | } |
| | | |
| | | ::v-deep .uicon-calendar { |
| | | font-size: 36rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-cell__title-text { |
| | | font-size: 28rpx; |
| | | color: #212121; |
| | | } |
| | | |
| | | ::v-deep .u-cell__value { |
| | | font-size: 28rpx; |
| | | // color: transparent; |
| | | color: #212121; |
| | | |
| | | } |
| | | |
| | | ::v-deep .u-cell__label { |
| | | margin-top: 0; |
| | | line-height: 12px; |
| | | } |
| | | |
| | | ::v-deep .uicon-arrow-right { |
| | | font-size: 14px !important; |
| | | color: #212121 !important; |
| | | } |
| | | |
| | | ::v-deep .u-line-progress__text { |
| | | // margin-right: -20px; |
| | | // color: #212121; |
| | | // width: 100px; |
| | | // margin-top: 10px; |
| | | display: none; |
| | | |
| | | } |
| | | |
| | | ::v-deep .u-text__value--content { |
| | | font-size: 12px !important; |
| | | } |
| | | |
| | | ::v-deep .u-tag__close { |
| | | background: #436df5 !important; |
| | | } |
| | | |
| | | ::v-deep .u-cell__body { |
| | | padding-bottom: 40rpx; |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <page-nav title="å§å¤åæ"></page-nav> |
| | | |
| | | |
| | | <view v-show="topContent.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">æ«æä»»å¡æ¡ç </div> |
| | | </div> |
| | | </view> |
| | | |
| | | <view v-show="topContent.length!==0" class="mainContent"> |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | åæä¿¡æ¯ |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="marginLeft20 marginRight20" style="height: 360rpx;" v-if="topContent.length!==0"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <!-- v-for="item in purchorderArr" --> |
| | | <view class="flex_column titleFont"> |
| | | <view>å·¥åç¼å·ï¼</view> |
| | | <view>产åç¼ç ï¼</view> |
| | | <view>产ååç§°ï¼</view> |
| | | <view>产åè§æ ¼ï¼</view> |
| | | <view>å½åå·¥åºï¼</view> |
| | | <view>任塿°éï¼</view> |
| | | <view>æªå/å·²åï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{topContent[0].wo_code}}</view> |
| | | <view>{{topContent[0].partnumber}}</view> |
| | | <view>{{topContent[0].partname}}</view> |
| | | <view>{{topContent[0].partspec?topContent[0].partspec:'/'}}</view> |
| | | <view>{{topContent[0].stepname}}</view> |
| | | <view>{{topContent[0].planqty}}</view> |
| | | <view>{{topContent[0].startqty+'/'+topContent[0].reportqty}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block" style="justify-content: flex-start;height: 70rpx;padding-bottom: 10rpx;"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | å¤å便¹ |
| | | </view> |
| | | </view> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view @click='WXSheetClick' class="custominputClass"> |
| | | <view v-show='WXSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='WXSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{WXSheetValue}} |
| | | </view> |
| | | <u-icon :name="!WXSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block" style="justify-content: flex-start;height: 70rpx;padding-bottom: 10rpx;"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | å¤å人å |
| | | </view> |
| | | </view> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view @click='userSheetClick' class="custominputClass"> |
| | | <view v-show='userSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='userSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{userSheetValue}} |
| | | </view> |
| | | <u-icon :name="!userSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block" style="justify-content: flex-start;height: 70rpx;padding-bottom: 10rpx;"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | åææ°é |
| | | </view> |
| | | </view> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view class='inputClass'> |
| | | <u--input placeholder="请è¾å
¥" border="surround" type='number' v-model="fqty"> |
| | | </u--input> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | <u-picker v-if="topContent.length!==0" :show="WXSheetShow" :columns="WXColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='WXSheetShow=false' @confirm='WXPickerConfirm' |
| | | @cancel='WXSheetShow=false'> |
| | | </u-picker> |
| | | |
| | | |
| | | <u-picker v-if="topContent.length!==0" :show="userSheetShow" :columns="userColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='userSheetShow=false' @confirm='userPickerConfirm' |
| | | @cancel='userSheetShow=false'> |
| | | </u-picker> |
| | | |
| | | |
| | | </view> |
| | | |
| | | <u-button size="large" v-show="topContent.length!==0" :loading="isDisabledSubmitButton" |
| | | loadingText="æ£å¨æäº¤,请ç¨ç..." type="primary" @click="submit" text="åæ"> |
| | | </u-button> |
| | | |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <!-- <view v-show="topContent.length!==0&&!WXSheetShow&&!userSheetShow" @click="topScanClick"> |
| | | <drag-ball :x='$DeviceInformation.screenWidth*0.8' :y="$DeviceInformation.screenHeight*0.7"></drag-ball> |
| | | </view> --> |
| | | |
| | | <!-- <scan-code></scan-code> --> |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepStart, |
| | | CustomerPermissions, |
| | | PersonPermissions, |
| | | SavaMesOrderStepOut |
| | | } from '../../config/api.js'; |
| | | // import scanCode from '@/components/scan-code/scan-code.vue' |
| | | |
| | | export default { |
| | | onLoad(option) { |
| | | if (option.orderstep) { |
| | | this.fromType = '1' |
| | | this.getMesOrderStepStart(option.orderstep) |
| | | } else { |
| | | this.fromType = '2' |
| | | } |
| | | }, |
| | | |
| | | onPullDownRefresh() { |
| | | setTimeout(() => { |
| | | this.init(() => { |
| | | uni.stopPullDownRefresh(); |
| | | }) |
| | | }, 1000); |
| | | }, |
| | | |
| | | data() { |
| | | return { |
| | | topRightMessageCount: '', |
| | | |
| | | isDisabledSubmitButton: false, |
| | | |
| | | topContent: [], |
| | | // { |
| | | // "wo_code": "MO-2023-06-0003_1", |
| | | // "partnumber": "308", |
| | | // "partname": "çµæ± å
", |
| | | // "partspec": "", |
| | | // "seq": "2", |
| | | // "stepcode": "ZSStep03", |
| | | // "stepname": "廿¯åº", |
| | | // "nextstepcode": "ZSStep06", |
| | | // "nextstepname": "å
è£
2", |
| | | // "stepdesc": "", |
| | | // "wkshopcode": "ZS001", |
| | | // "wkshopname": "注å¡è½¦é´", |
| | | // "planqty": 50.00, |
| | | // "startqty": 29.00, |
| | | // "noreportqty": 29.00, |
| | | // "reportqty": 21.00, |
| | | // "noputqty": 0.0, |
| | | // "list": null |
| | | // }, //æ«æä»»å¡æ¡ç æå¸¦åºæ¥çå
容 |
| | | |
| | | WXSheetValue: '', |
| | | WXSheetShow: false, //䏿å表æ¯å¦å±å¼ |
| | | WXColumns: [], |
| | | WXSheetList: [], |
| | | |
| | | |
| | | userSheetValue: '', |
| | | userSheetShow: false, |
| | | userColumns: [], |
| | | userSheetList: [], |
| | | |
| | | fqty: null, |
| | | |
| | | fromType: '1', |
| | | |
| | | |
| | | |
| | | } |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | mounted() { |
| | | this.init() |
| | | |
| | | |
| | | // this.getMesOrderStepStart('MO-2023-09-0002_1;106') |
| | | |
| | | this.handleSelectAllApi() |
| | | |
| | | |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | |
| | | async handleSelectAllApi() { |
| | | await this.getCustomerPermissions() |
| | | await this.getPersonPermissions() |
| | | }, |
| | | |
| | | |
| | | async getPersonPermissions(val) { |
| | | const data = { |
| | | usercode: val |
| | | } |
| | | const res = await PersonPermissions(this.global.formatData(data)) |
| | | this.userSheetList = res.data |
| | | this.userColumns = [res.data.map(i => i.username)] |
| | | }, |
| | | |
| | | async getCustomerPermissions(val) { |
| | | const data = { |
| | | orderstepqrcode: val |
| | | } |
| | | const res = await CustomerPermissions(this.global.formatData(data)) |
| | | this.WXSheetList = res.data |
| | | this.WXColumns = [res.data.map(i => i.name)] |
| | | }, |
| | | |
| | | async getMesOrderStepStart(val) { |
| | | const data = { |
| | | OperType: 'WX', |
| | | SelectType: 'OUT', |
| | | wocode: val ? val.split(';')[0] : '', |
| | | stepcode: val ? val.split(';')[1] : '' |
| | | } |
| | | |
| | | const res = await MesOrderStepStart(this.global.formatData(data)) |
| | | console.log(res, 3) |
| | | |
| | | if (res.code === '200') { |
| | | this.WXSheetValue = '' |
| | | this.userSheetValue = '' |
| | | this.fqty = null |
| | | this.topContent = [] |
| | | this.topContent.push(res.data) |
| | | } |
| | | |
| | | |
| | | |
| | | }, |
| | | |
| | | // 任塿¡ç çæ«ç æ¡ç¹å» |
| | | topScanClick() { |
| | | let that = this; |
| | | |
| | | uni.scanCode({ |
| | | onlyFromCamera: true, |
| | | // scanType: ['barCode', 'qrCode'], |
| | | scanType: ['qrCode'], |
| | | success: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | |
| | | that.getMesOrderStepStart(res.result) |
| | | |
| | | }, |
| | | complete: function(res) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | |
| | | WXSheetClick() { |
| | | this.WXSheetShow = true |
| | | }, |
| | | |
| | | WXPickerConfirm(val) { |
| | | this.WXSheetValue = val.value[0] |
| | | this.WXSheetShow = false |
| | | }, |
| | | |
| | | userSheetClick() { |
| | | this.userSheetShow = true |
| | | }, |
| | | |
| | | userPickerConfirm(val) { |
| | | this.userSheetValue = val.value[0] |
| | | this.userSheetShow = false |
| | | }, |
| | | |
| | | |
| | | async submit() { |
| | | |
| | | if (!this.WXSheetValue) { |
| | | return uni.$u.toast('å¤å便¹ä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | if (!this.userSheetValue) { |
| | | return uni.$u.toast('å¤å人åä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | if (!this.fqty) { |
| | | return uni.$u.toast('åææ°éä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | if (parseFloat(this.fqty) > parseFloat(this.topContent[0].startqty)) { |
| | | return uni.$u.toast('åææ°éä¸è½å¤§äºæªåæ°éï¼') |
| | | } |
| | | |
| | | // 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 data = { |
| | | mesordercode: this.topContent[0].wo_code, // å·¥åç¼å· |
| | | partcode: this.topContent[0].partnumber, // 产åç¼ç |
| | | stepseq: this.topContent[0].seq, // å·¥åºåºå· |
| | | stepcode: this.topContent[0].stepcode, // å·¥åºç¼ç |
| | | wxcode: this.WXSheetList.find(i => i.name === this.WXSheetValue).code, // å¤åä¾åºåç¼ç |
| | | outuser: this.userSheetList.find(i => i.username === this.userSheetValue).usercode, // åæäººå |
| | | taskqty: this.topContent[0].planqty, // 任塿°é |
| | | fqty: this.fqty // åææ°é |
| | | } |
| | | |
| | | console.log(JSON.stringify(data), 6) |
| | | |
| | | this.isDisabledSubmitButton = true |
| | | const res = await SavaMesOrderStepOut(data) |
| | | if (res.code === '200') { |
| | | uni.$u.toast('åææåï¼') |
| | | |
| | | this.WXSheetValue = '' |
| | | this.userSheetValue = '' |
| | | this.fqty = null |
| | | this.topContent = [] |
| | | |
| | | if (this.fromType === '1') { |
| | | let pages = getCurrentPages(); // 页é¢éå |
| | | let beforePage = pages[pages.length - 2]; //ä¸ä¸ä¸ªé¡µé¢ |
| | | beforePage.$vm.getProductionScheduleKanban() |
| | | |
| | | uni.navigateBack() |
| | | } |
| | | |
| | | this.isDisabledSubmitButton = false |
| | | } |
| | | |
| | | // this.isDisabledSubmitButton = true |
| | | // uni.uploadFile({ |
| | | // url: this.$baseUrl + '/AppProductionManagement/SavaMesOrderStepOut', |
| | | // files: [{ |
| | | // "uri": "/" |
| | | // }], |
| | | // header: header, |
| | | // formData: data, |
| | | // success: (res) => { |
| | | // uni.$u.toast('åææåï¼') |
| | | |
| | | // this.WXSheetValue = '' |
| | | // this.userSheetValue = '' |
| | | // this.fqty = null |
| | | // this.topContent = [] |
| | | |
| | | // this.isDisabledSubmitButton = false |
| | | // }, |
| | | // fail(res) { |
| | | // uni.$u.toast('åæå¤±è´¥ï¼') |
| | | // this.isDisabledSubmitButton = false |
| | | // }, |
| | | // }) |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import url('@/style/global.css'); |
| | | |
| | | ::v-deep .uicon-arrow-left>span { |
| | | display: block; |
| | | } |
| | | |
| | | .custominputClass { |
| | | width: 412rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | border: 3rpx #eff0f1 solid; |
| | | border-radius: 10rpx; |
| | | padding: 0 16rpx; |
| | | line-height: 68rpx; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <view> |
| | | <page-nav title="å§å¤æ¶æ"></page-nav> |
| | | <page-nav title="å¤åæ¶æ"></page-nav> |
| | | |
| | | |
| | | <view v-show="topContent.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">æ«æä»»å¡æ¡ç </div> |
| | | </div> |
| | | <view class="flex_center" style="margin: 20rpx;"> |
| | | |
| | | <!-- #ifdef H5 --> |
| | | <u--input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" :placeholder="placeholder" |
| | | style="width:100%;background-color: #fff;border-radius: 40rpx;" border="surround" suffixIcon="scan" |
| | | suffixIconStyle="color: #909399;font-size: 22px;" v-model="inputBoxValue" |
| | | @change="confirmInputBoxValue"> |
| | | <template slot="suffix"> |
| | | <u-icon name="scan" color="#909399" size="24" @click="scanClick"></u-icon> |
| | | </template> |
| | | </u--input> |
| | | <!-- #endif --> |
| | | |
| | | <!-- #ifdef APP-PLUS --> |
| | | <u-input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" :placeholder="placeholder" |
| | | style="width:100%;background-color: #fff;border-radius: 40rpx;" border="surround" suffixIcon="scan" |
| | | suffixIconStyle="color: #909399;font-size: 22px;" v-model="inputBoxValue" |
| | | @change="confirmInputBoxValue"> |
| | | <template slot="suffix"> |
| | | <u-icon name="scan" color="#909399" size="24" @click="scanClick"></u-icon> |
| | | </template> |
| | | </u-input> |
| | | <!-- #endif --> |
| | | |
| | | <view class="flex_center marginLeft20" @click="popupShow=true"> |
| | | <u--text size='16' color='#909399' text="çé"></u--text> |
| | | <u--image :showLoading="true" src="../../static/img/sift.png" width="20px" height="20px"></u--image> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-show="topContent.length!==0" class="mainContent"> |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | æ¶æä¿¡æ¯ |
| | | |
| | | <u-alert :title="alertTitle" type="info"></u-alert> |
| | | |
| | | |
| | | <!-- æå 颿¿ --> |
| | | <!-- <u-collapse @change="change" @close="close" @open="open"> --> |
| | | <!-- @change="collapseChange" --> |
| | | <u-collapse style="max-height: 590px;overflow: auto;"> |
| | | <!-- :value='parseFloat(item.ordergoodqty)+"/"+parseFloat(item.orderqty)' --> |
| | | <u-collapse-item style="position: relative;" :title="item.ordercode" :name='item.ordercode' |
| | | :value='parseFloat(item.ordergoodqty)+"/"+parseFloat(item.orderqty)' |
| | | :label="item.children.length===0?'æªæ´¾å':''" :disabled='item.children.length===0' |
| | | v-for="item in collapseArr" :key="item.ordercode"> |
| | | |
| | | |
| | | <view style="position: absolute;width: 200rpx;left: 30rpx;top:34px;font-size: 24rpx;color: #999;"> |
| | | {{item.partname}} {{item.partspec}} |
| | | </view> |
| | | |
| | | <!-- <view style="position: absolute;width: 26%;left: 44%;top:16px;"> --> |
| | | <view style="position: absolute;width: 120px;left: 44%;top:16px;color:#0659ff" |
| | | @click="progressClick(item.ordercode)"> |
| | | <!-- {{item.partname}}{{item.partspec}} --> |
| | | <u-line-progress :percentage="parseFloat((item.ordergoodqty*100/item.orderqty).toFixed(2))" |
| | | inactiveColor="#d1d6f5" height="10" activeColor="#0659ff"></u-line-progress> |
| | | </view> |
| | | |
| | | <!-- <view style="position: absolute;width: 100px;right: 33px; top:13px; "> |
| | | <view class="" style="display: flex;justify-content: flex-end;"> |
| | | <view style="color: #0659ff;"> |
| | | {{parseFloat(item.ordergoodqty)}} |
| | | </view> |
| | | <view> |
| | | /{{ parseFloat(item.orderqty)}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | --> |
| | | |
| | | |
| | | <view v-if="radiovalue==='ç产工å'" style="margin:0 0 5px"> |
| | | <view class="flex_column"> |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产åç¼ç ï¼</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partcode}}</view> |
| | | </view> |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产ååç§°ï¼</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partname}}</view> |
| | | </view> |
| | | <view style="display:flex"> |
| | | <view class="titleFont" style="font-size: 14px;">产åè§æ ¼ï¼</view> |
| | | <view class="contentFont" style="font-size: 14px;">{{item.partspec?item.partspec:'/'}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="marginLeft20 marginRight20" style="height: 410rpx;" v-if="topContent.length!==0"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <!-- v-for="item in purchorderArr" --> |
| | | <view class="flex_column titleFont"> |
| | | <view>å·¥åç¼å·ï¼</view> |
| | | <view>产åç¼ç ï¼</view> |
| | | <view>产ååç§°ï¼</view> |
| | | <view>产åè§æ ¼ï¼</view> |
| | | <view>å½åå·¥åºï¼</view> |
| | | <view>任塿°éï¼</view> |
| | | <view>æªæ¶/å·²æ¶ï¼</view> |
| | | <view>ä¸éå·¥åºï¼</view> |
| | | |
| | | <!-- {{item.children}} --> |
| | | <!-- <u--text class="u-collapse-content"> --> |
| | | <u-steps :current="-1" inactiveColor='#0659FF' direction="column"> |
| | | <view v-for="(it,ind) in item.children" :key="item.ordercode+it.name+ind" |
| | | @click="gotoPage(item.ordercode,it.code)" style="display: flex;align-items: center;"> |
| | | |
| | | <u-steps-item :title="it.code+'/'+it.name+it.spec"></u-steps-item> |
| | | <view class="" style="width: 100px;"> |
| | | <u-line-progress :percentage="parseFloat((it.goodqty*100/it.planqty).toFixed(2))" |
| | | inactiveColor="#d1d6f5" height="10" activeColor="#0659ff"></u-line-progress> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{topContent[0].wo_code}}</view> |
| | | <view>{{topContent[0].partnumber}}</view> |
| | | <view>{{topContent[0].partname}}</view> |
| | | <view>{{topContent[0].partspec?topContent[0].partspec:'/'}}</view> |
| | | <view>{{topContent[0].stepname}}</view> |
| | | <view>{{topContent[0].planqty}}</view> |
| | | <view>{{topContent[0].startqty+'/'+topContent[0].reportqty}}</view> |
| | | <view>{{topContent[0].nextstepname?topContent[0].nextstepname:'/'}}</view> |
| | | <view style="width: 30%;text-align: right;"> |
| | | <view class="" style="display: flex;justify-content: flex-end;"> |
| | | <view style="color: #0659ff;"> |
| | | {{parseFloat(it.goodqty)}} |
| | | </view> |
| | | <view> |
| | | /{{ parseFloat(it.planqty)}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </u-steps> |
| | | <!-- </u--text> --> |
| | | |
| | | |
| | | </u-collapse-item> |
| | | |
| | | </u-collapse> |
| | | |
| | | |
| | | <!-- å¼¹åºå± --> |
| | | <!-- closeIconPos='top-left' closeOnClickOverlay closeable='true' --> |
| | | <u-popup :show="popupShow" mode="right" @close="popupClose" @open="popupOpen"> |
| | | <view style="margin: 120px 10px 20px;" class="flex_column"> |
| | | |
| | | <!-- <view style="display: flex;"> |
| | | <view> |
| | | åæ®ç±»åï¼ |
| | | </view> |
| | | |
| | | <u-radio-group v-model="radiovalue" placement="column" @change="groupChange" |
| | | style="margin-top: 4px;"> |
| | | <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist" |
| | | :key="index+item.name" :label="item.name" iconSize='16' labelSize='16' :name="item.name"> |
| | | |
| | | </u-radio> |
| | | </u-radio-group> |
| | | </view> --> |
| | | |
| | | <view style="margin-top: 20px;display: flex;align-items: center;"> |
| | | |
| | | <view class=""> |
| | | 产åä¿¡æ¯ï¼ |
| | | </view> |
| | | <view class=""> |
| | | <u-button :hairline="true" shape="circle" icon="map" :plain="true" |
| | | style="width: 100px;height: 26px;" type="primary" text="éæ©äº§å" @click="chosePart"></u-button> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <view style="display: flex;flex-wrap: wrap;"> |
| | | <u-tag style="width:220rpx;" :text="item.name" v-for="item in tagArr" :key="item.code" |
| | | :closable="true" :show="item.close" @close="tagClose(item)"></u-tag> |
| | | </view> |
| | | |
| | | |
| | | |
| | | <!-- <view class="head" style="margin-top: 10px;"> |
| | | <view class="head_block" style="height: 80rpx; display: flex;justify-content: space-around;"> |
| | | <u-button :plain='today' style="width: 70px;height: 25px;" @click="dateChange('today')" |
| | | type="primary" shape="circle" text="仿¥"> |
| | | </u-button> |
| | | <u-button :plain='month' style="width: 70px;height: 25px;" @click="dateChange('month')" |
| | | type="primary" shape="circle" text="æ¬æ"> |
| | | </u-button> |
| | | <u-button :plain='custom' style="width: 70px;height: 25px;" @click="dateChange('custom')" |
| | | type="primary" shape="circle" text="èªå®ä¹"></u-button> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-if="!custom" class="flex_column" |
| | | style="display: flex;justify-content: space-around;width: 100%;"> |
| | | <view class="" style="display: flex;justify-content: space-evenly;width: 100%;"> |
| | | <view class="titleFont">å¼å§æ¥æ</view> |
| | | <view class="titleFont">~</view> |
| | | <view class="titleFont">ç»ææ¥æ</view> |
| | | </view> |
| | | |
| | | <u-button type="info" icon='calendar' iconColor="#0659FF" size="" @click="calendarClick" |
| | | :text="calendarRange"> |
| | | </u-button> |
| | | </view> --> |
| | | |
| | | <!-- <uni-calendar ref="calendar" :range='true' :insert="false" @confirm="calendarConfirm" /> --> |
| | | |
| | | </view> |
| | | </u-popup> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | æ¶ææä½ |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="flex_column"> |
| | | |
| | | <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> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view @click='WXSheetClick' class="custominputClass"> |
| | | <view v-show='WXSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='WXSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{WXSheetValue}} |
| | | </view> |
| | | <u-icon :name="!WXSheetShow?'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: red;margin-right: 6rpx;">*</view> æ¶æäººå |
| | | </view> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view @click='userSheetClick' class="custominputClass"> |
| | | <view v-show='userSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='userSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{userSheetValue}} |
| | | </view> |
| | | <u-icon :name="!userSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <view class="flex_center titleFont" style="margin: 0rpx 20rpx 10rpx;line-height: 56rpx;"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> æ¶ææ°é |
| | | <view style="margin-left: 20rpx;"> |
| | | <view class='inputClass'> |
| | | <u--input placeholder="请è¾å
¥" border="surround" type='number' v-model="sqty"> |
| | | </u--input> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" v-if="topContent.length!==0"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | 坿¶æä¾åºå |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="flex_column marginLeft20 marginRight20 marginBottom20 titleFont"> |
| | | <view v-for='(i,index) in topContent[0].list' |
| | | v-if="parseFloat(i.fqty) - parseFloat(i.sqty) - parseFloat(i.ng_qty) - parseFloat(i.laborbad_qty)- parseFloat(i.materielbad_qty)>0" |
| | | style="display: flex;"> |
| | | <view>{{index+1}}</view> |
| | | <view class="ellipsis" style="width: 400rpx;margin: 0 30rpx;">{{i.tp}}</view> |
| | | <view> |
| | | {{ parseFloat(i.fqty) - parseFloat(i.sqty) - parseFloat(i.ng_qty) - parseFloat(i.laborbad_qty)- parseFloat(i.materielbad_qty)}} |
| | | </view> |
| | | <!-- <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-picker v-if="topContent.length!==0" :show="WXSheetShow" :columns="WXColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='WXSheetShow=false' @confirm='WXPickerConfirm' |
| | | @cancel='WXSheetShow=false'> |
| | | </u-picker> |
| | | |
| | | |
| | | <u-picker v-if="topContent.length!==0" :show="userSheetShow" :columns="userColumns" :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> |
| | | |
| | | <u-button size="large" v-show="topContent.length!==0" :loading="isDisabledSubmitButton" |
| | | loadingText="æ£å¨æäº¤,请ç¨ç..." type="primary" @click="submit" text="æ¶æ"> |
| | | </u-button> |
| | | |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <!-- <view v-show="topContent.length!==0&&!WXSheetShow&&!userSheetShow&&!badSheetShow" @click="topScanClick"> |
| | | <drag-ball :x='$DeviceInformation.screenWidth*0.8' :y="$DeviceInformation.screenHeight*0.7"></drag-ball> |
| | | </view> --> |
| | | |
| | | <!-- <scan-code></scan-code> --> |
| | | |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <view @click="scan2"> |
| | | <drag-ball :x='300' :y="600"></drag-ball> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepStart, |
| | | CustomerPermissions, |
| | | PersonPermissions, |
| | | DefectPermissions, |
| | | SavaMesOrderStepIn, |
| | | LabelBarCode |
| | | ProductionScheduleKanban |
| | | } from '../../config/api.js'; |
| | | // import scanCode from '@/components/scan-code/scan-code.vue' |
| | | |
| | | export default { |
| | | onLoad(option) { |
| | | const _this = this |
| | | uni.$off('scancodedate') // æ¯æ¬¡è¿æ¥å
ç§»é¤å
¨å±èªå®ä¹äºä»¶çå¬å¨ |
| | | uni.$on('scancodedate', function(content) { |
| | | console.log("æ«æå°çå
容为:", content) |
| | | _this.getCheckScanDeviceQrCodeData(content) |
| | | }) |
| | | |
| | | |
| | | console.log(option, 8) |
| | | }, |
| | | |
| | | onPullDownRefresh() { |
| | |
| | | data() { |
| | | return { |
| | | topRightMessageCount: '', |
| | | |
| | | isDisabledSubmitButton: false, |
| | | |
| | | topContent: [], |
| | | // { |
| | | // "wo_code": "MO-2023-06-0003_1", |
| | | // "partnumber": "308", |
| | | // "partname": "çµæ± å
", |
| | | // "partspec": "", |
| | | // "seq": "2", |
| | | // "stepcode": "ZSStep03", |
| | | // "stepname": "廿¯åº", |
| | | // "nextstepcode": "ZSStep06", |
| | | // "nextstepname": "å
è£
2", |
| | | // "stepdesc": "", |
| | | // "wkshopcode": "ZS001", |
| | | // "wkshopname": "注å¡è½¦é´", |
| | | // "planqty": 50.00, |
| | | // "startqty": 29.00, |
| | | // "noreportqty": 29.00, |
| | | // "reportqty": 21.00, |
| | | // "noputqty": 0.0, |
| | | // "list": null |
| | | // }, //æ«æä»»å¡æ¡ç æå¸¦åºæ¥çå
容 |
| | | |
| | | WXSheetValue: '', |
| | | WXSheetShow: false, //䏿å表æ¯å¦å±å¼ |
| | | WXColumns: [], |
| | | WXSheetList: [], |
| | | |
| | | |
| | | userSheetValue: '', |
| | | userSheetShow: false, |
| | | userColumns: [], |
| | | userSheetList: [], |
| | | |
| | | sqty: null, |
| | | ngqty: null, |
| | | |
| | | |
| | | badSelectArr: [], |
| | | checkBoxValue: '', |
| | | badSheetShow: false, |
| | | badSheetValue: '', |
| | | |
| | | |
| | | ngqtyArr: [{ |
| | | uid: new Date().getTime(), |
| | | ngqty: '', |
| | | badSheetValue: '', |
| | | arrowDown: true //åä¸ç®å¤´ |
| | | inputBoxValue: '', |
| | | alertTitle: '', |
| | | popupShow: false, //å¼¹åºå±æ¯å¦æ¾ç¤º |
| | | collapseArr: [ //æå 颿¿æ°æ® |
| | | ], |
| | | collapseArrAll: [], //ææ |
| | | placeholder: '请è¾å
¥å·¥åä¿¡æ¯', |
| | | radiovalue: 'ç产工å', //åæ®ç±»å |
| | | // SOï¼éå®è®¢å MOï¼ç产订å POï¼ç产工å |
| | | radiolist: [{ |
| | | name: 'éå®è®¢å' |
| | | }, |
| | | { |
| | | name: 'ç产订å' |
| | | }, |
| | | { |
| | | name: 'ç产工å' |
| | | }, |
| | | ], |
| | | |
| | | today: true, |
| | | month: false, |
| | | custom: true, |
| | | |
| | | // calendarRange: new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | // 10), //ç³»ç»å½åæ¥æ |
| | | calendarRange: new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10), //å½ææ¥æ |
| | | |
| | | |
| | | |
| | | tagArr: [ |
| | | // { |
| | | // ngqty: '', |
| | | // badSheetValue: '', |
| | | // arrowDown: true //åä¸ç®å¤´ |
| | | // close: true, |
| | | // name: 'çµæ± å
', |
| | | // code: '1002' |
| | | // }, { |
| | | // close: true, |
| | | // name: 'çµè', |
| | | // code: '1003' |
| | | // }, { |
| | | // close: true, |
| | | // name: '8054å
æº', |
| | | // code: '1004' |
| | | // }, { |
| | | // close: true, |
| | | // name: 'G71674å²éæª', |
| | | // code: '1005' |
| | | // }, { |
| | | // close: true, |
| | | // name: '8051å
æº', |
| | | // code: '1006' |
| | | // }, |
| | | ], //ä¸è¯æ°éãä¸è¯åå æ°ç» |
| | | |
| | | |
| | | |
| | | notes: null //夿³¨ |
| | | |
| | | |
| | | ], //å·²éä¸çäº§åæ ç¾ |
| | | |
| | | |
| | | } |
| | |
| | | mounted() { |
| | | this.init() |
| | | |
| | | |
| | | // this.getMesOrderStepStart('MO-2023-09-0002_1;106') |
| | | |
| | | |
| | | this.handleSelectAllApi() |
| | | this.getProductionScheduleKanban() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | async handleSelectAllApi() { |
| | | await this.getCustomerPermissions() |
| | | await this.getPersonPermissions() |
| | | await this.getDefectPermissions() |
| | | }, |
| | | |
| | | async getPersonPermissions(val) { |
| | | const data = { |
| | | usercode: val |
| | | } |
| | | const res = await PersonPermissions(this.global.formatData(data)) |
| | | this.userSheetList = res.data |
| | | this.userColumns = [res.data.map(i => i.username)] |
| | | }, |
| | | |
| | | async getCustomerPermissions() { |
| | | |
| | | const res = await CustomerPermissions() |
| | | this.WXSheetList = res.data |
| | | this.WXColumns = [res.data.map(i => i.name)] |
| | | }, |
| | | // è·åä¸è¯åå |
| | | async getDefectPermissions() { |
| | | const res = await DefectPermissions() |
| | | if (res.code === '200') { |
| | | this.badSelectArr = res.data |
| | | } |
| | | }, |
| | | |
| | | |
| | | async getMesOrderStepStart(val) { |
| | | const data = { |
| | | OperType: 'WX', |
| | | SelectType: 'IN', |
| | | wocode: val ? val.split(';')[0] : '', |
| | | stepcode: val ? val.split(';')[1] : '' |
| | | gotoPage(p1, p2) { |
| | | let orderstep = null |
| | | if (p1) { |
| | | orderstep = p1 + ';' + p2 |
| | | } else { |
| | | orderstep = '' |
| | | } |
| | | |
| | | const res = await MesOrderStepStart(this.global.formatData(data)) |
| | | console.log(res, 3) |
| | | |
| | | if (res.code === '200') { |
| | | // this.getCustomerPermissions(val) |
| | | // this.getMesOrderSelectUser(val) |
| | | // this.getDefectPermissions(val) |
| | | this.WXSheetValue = '' |
| | | this.userSheetValue = '' |
| | | this.checkBoxValue = '' |
| | | this.badSheetValue = '' |
| | | this.sqty = null |
| | | this.ngqty = null |
| | | this.notes = null |
| | | this.topContent = [] |
| | | this.topContent.push(res.data) |
| | | } |
| | | // console.log(this.topContent,6) |
| | | |
| | | uni.navigateTo({ |
| | | url: './wxsl2?orderstep=' + orderstep |
| | | }) |
| | | }, |
| | | |
| | | // 任塿¡ç çæ«ç æ¡ç¹å» |
| | | topScanClick() { |
| | | scan2() { |
| | | let that = this; |
| | | |
| | | uni.scanCode({ |
| | |
| | | success: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | // that.scanContent = res.result; |
| | | |
| | | that.getMesOrderStepStart(res.result) |
| | | uni.navigateTo({ |
| | | url: './wxsl2?orderstep=' + res.result |
| | | }) |
| | | |
| | | }, |
| | | complete: function(res) { |
| | |
| | | |
| | | }); |
| | | }, |
| | | badSheetClick(item) { |
| | | if (!item.ngqty) { |
| | | return uni.$u.toast('请å
å¡«åä¸è¯æ°éï¼') |
| | | } |
| | | item.arrowDown = !item.arrowDown |
| | | |
| | | this.checkBoxValue = item.badSheetValue.split(',') |
| | | this.badSheetShow = true |
| | | }, |
| | | |
| | | badSheetSelect(val) { |
| | | console.log('æ§è¡äºï¼') |
| | | }, |
| | | checkboxChange(val) { |
| | | this.badSheetValue = val.join(',') |
| | | }, |
| | | |
| | | |
| | | WXSheetClick() { |
| | | this.WXSheetShow = true |
| | | }, |
| | | |
| | | WXPickerConfirm(val) { |
| | | this.WXSheetValue = val.value[0] |
| | | this.WXSheetShow = false |
| | | }, |
| | | |
| | | userSheetClick() { |
| | | this.userSheetShow = true |
| | | }, |
| | | |
| | | userPickerConfirm(val) { |
| | | this.userSheetValue = val.value[0] |
| | | this.userSheetShow = false |
| | | }, |
| | | |
| | | // æ·»å |
| | | add() { |
| | | |
| | | // if (this.ngqtyArr.find(i => i.badSheetValue === '')) { |
| | | // return uni.$u.toast('请å
å®ååé¢ä¸è¯é项ï¼') |
| | | // } |
| | | |
| | | this.ngqtyArr.unshift({ |
| | | uid: new Date().getTime(), |
| | | ngqty: '', |
| | | badSheetValue: '', |
| | | arrowDown: true //åä¸ç®å¤´ |
| | | getCheckboxValue(val) { |
| | | this.tagArr = [] |
| | | val.forEach(i => { |
| | | this.tagArr.push({ |
| | | close: true, |
| | | name: i.split('/')[1].trim(), |
| | | code: i.split('/')[0].trim() |
| | | }) |
| | | }) |
| | | |
| | | }, |
| | | |
| | | //å é¤ |
| | | 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 |
| | | }, |
| | | |
| | | |
| | | async submit() { |
| | | |
| | | if (!this.WXSheetValue) { |
| | | return uni.$u.toast('å¤å便¹ä¸è½ä¸ºç©ºï¼') |
| | | // æ¥å£è·å |
| | | async getProductionScheduleKanban() { |
| | | let ordertype = '' // SOï¼éå®è®¢å MOï¼ç产订å POï¼ç产工å |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥å·¥åä¿¡æ¯' |
| | | ordertype = 'PO' |
| | | break |
| | | case 'ç产订å': |
| | | this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥ç产订åä¿¡æ¯' |
| | | ordertype = 'MO' |
| | | break |
| | | case 'éå®è®¢å': |
| | | this.alertTitle = 'éå®è®¢åæ°éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥éå®è®¢åä¿¡æ¯' |
| | | ordertype = 'SO' |
| | | break |
| | | } |
| | | |
| | | if (!this.userSheetValue) { |
| | | return uni.$u.toast('æ¶æäººåä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | if (!this.sqty) { |
| | | return uni.$u.toast('æ¶ææ°éä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | let t = this.topContent[0].list.find(i => i.tp === this.WXSheetValue) |
| | | |
| | | 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('æ¶ææ°éä¸è½å¤§äºè¯¥ä¾åºåç坿¶æ¶æï¼') |
| | | } |
| | | |
| | | // ä¸è¯åå |
| | | 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('æ¶ææ°é+ä¸è¯æ°éä¸è½å¤§äºè¯¥ä¾åºåç坿¶æ¶æï¼') |
| | | } |
| | | |
| | | |
| | | const D = { |
| | | rightcode: '0601', |
| | | partcode: this.topContent[0].partnumber, |
| | | qty: parseFloat(this.sqty), |
| | | onelabqty: parseFloat(this.sqty) |
| | | } |
| | | const { |
| | | data: R |
| | | } = await LabelBarCode(D) |
| | | |
| | | |
| | | const data = { |
| | | mesordercode: this.topContent[0].wo_code, // å·¥åç¼å· |
| | | partcode: this.topContent[0].partnumber, // 产åç¼ç |
| | | stepseq: this.topContent[0].seq, // å·¥åºåºå· |
| | | stepcode: this.topContent[0].stepcode, // å·¥åºç¼ç |
| | | wxcode: this.WXSheetList.find(i => i.name === this.WXSheetValue).code, // å¤åä¾åºåç¼ç |
| | | inuser: this.userSheetList.find(i => i.username === this.userSheetValue).usercode, // åæäººå |
| | | taskqty: this.topContent[0].planqty, // 任塿°é |
| | | sqty: this.sqty, // æ¶ææ°é |
| | | // ngqty: !this.ngqty ? 0 : this.ngqty, |
| | | remarks: this.notes, |
| | | defectlist, |
| | | inbarcode: R[0].labcode, //å
¥åºæ¡ç |
| | | ordertype, |
| | | partcode: this.tagArr.map(i => i.code).join(','), |
| | | Ratetime: this.calendarRange, |
| | | |
| | | } |
| | | const { |
| | | data: res |
| | | } = await ProductionScheduleKanban(data) |
| | | |
| | | this.collapseArr = res |
| | | this.collapseArrAll = res |
| | | this.alertTitle = this.alertTitle.split('/')[0] + this.collapseArr.length + this.alertTitle.split('/')[ |
| | | 1] |
| | | |
| | | }, |
| | | |
| | | |
| | | //è¾å
¥æ¡å车确认äºä»¶ |
| | | confirmInputBoxValue(val) { |
| | | this.collapseArr = this.collapseArrAll.filter((p) => { |
| | | return p.ordercode.indexOf(val) !== -1 |
| | | }) |
| | | |
| | | |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | break |
| | | case 'ç产订å': |
| | | this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | break |
| | | case 'éå®è®¢å': |
| | | this.alertTitle = 'éå®è®¢åæ°éï¼å
±/个ï¼' |
| | | break |
| | | } |
| | | this.alertTitle = this.alertTitle.split('/')[0] + this.collapseArr.length + this.alertTitle.split('/')[ |
| | | 1] |
| | | |
| | | }, |
| | | |
| | | // ç¹å»æ«ç |
| | | scanClick() { |
| | | this.topScanClick() |
| | | }, |
| | | |
| | | // æ«ç æ¡ç¹å» |
| | | topScanClick() { |
| | | let that = this; |
| | | |
| | | uni.scanCode({ |
| | | onlyFromCamera: true, |
| | | // scanType: ['barCode', 'qrCode'], |
| | | scanType: ['qrCode'], |
| | | success: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | that.scanContent = res.result; |
| | | |
| | | that.getCheckScanDeviceQrCodeData(that.scanContent); |
| | | }, |
| | | complete: function(res) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | getCheckScanDeviceQrCodeData(code) { |
| | | this.inputBoxValue = code |
| | | this.confirmInputBoxValue(this.inputBoxValue) |
| | | }, |
| | | |
| | | |
| | | // å¼¹åºå±æ¶èµ· |
| | | popupClose() { |
| | | this.getProductionScheduleKanban() |
| | | this.popupShow = false |
| | | }, |
| | | |
| | | // å¼¹åºå±å¼¹åº |
| | | popupOpen() { |
| | | |
| | | }, |
| | | |
| | | // éæ©äº§å |
| | | chosePart() { |
| | | let arr = [] |
| | | this.tagArr.forEach(i => { |
| | | arr.push(i.code + '/' + i.name) |
| | | }) |
| | | uni.navigateTo({ |
| | | url: '../znfx/chda?param=' + JSON.stringify(arr) |
| | | }); |
| | | }, |
| | | |
| | | // tagæ ç¾å
³é |
| | | tagClose(val) { |
| | | this.tagArr.forEach((i, j) => { |
| | | if (i.code === val.code) { |
| | | i.close = false |
| | | this.tagArr.splice(j, 1) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // æ¶é´èå´åæ¢ |
| | | dateChange(val) { |
| | | if (val === 'today') { |
| | | this.today = false |
| | | this.month = true |
| | | this.custom = true |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | 10) |
| | | } else if (val === 'month') { |
| | | this.today = true |
| | | this.month = false |
| | | this.custom = true |
| | | |
| | | this.calendarRange = new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10) |
| | | |
| | | } else if (val === 'custom') { |
| | | this.today = true |
| | | this.month = true |
| | | this.custom = false |
| | | this.calendarRange = new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart( |
| | | 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10) |
| | | } |
| | | }, |
| | | |
| | | // æ¥åæ¶é´ç¹å» |
| | | calendarClick() { |
| | | this.$refs.calendar.open(); |
| | | }, |
| | | |
| | | // æ¥åç¡®å®äºä»¶ç¹å» |
| | | calendarConfirm(val) { |
| | | if (val.range.before < val.range.after) { |
| | | this.calendarRange = val.range.before + '~' + val.range.after |
| | | } else { |
| | | this.calendarRange = val.range.after + '~' + val.range.before |
| | | } |
| | | |
| | | console.log(JSON.parse(JSON.stringify(data)), 6) |
| | | |
| | | this.isDisabledSubmitButton = true |
| | | const res = await SavaMesOrderStepIn(data) |
| | | |
| | | if (res.code === '200') { |
| | | 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 |
| | | if (val.range.before === '') { |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + val.range.after |
| | | } |
| | | if (val.range.after === '') { |
| | | this.calendarRange = val.range.before + '~' + new Date().toISOString().slice(0, 10) |
| | | } |
| | | if (val.range.before === '' && val.range.after === '') { |
| | | this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0, |
| | | 10) |
| | | } |
| | | // this.getData() |
| | | }, |
| | | |
| | | } |
| | | |
| | | // åéæé®åæ¢ |
| | | groupChange(val) { |
| | | console.log(val) |
| | | }, |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | display: block; |
| | | } |
| | | |
| | | ::v-deep .u-action-sheet { |
| | | max-height: 600rpx !important; |
| | | overflow: auto !important; |
| | | ::v-deep .u-alert__text--info--light { |
| | | margin-bottom: 0; |
| | | font-size: 32rpx !important; |
| | | padding-left: 10rpx; |
| | | color: #212121 !important; |
| | | font-weight: lighter; |
| | | } |
| | | |
| | | ::v-deep .u-checkbox-label--right { |
| | | padding: 30rpx; |
| | | border-bottom: 1rpx solid #eee; |
| | | ::v-deep .u-alert--info--light { |
| | | background-color: rgba(255, 255, 255, 0.7); |
| | | } |
| | | |
| | | .custominputClass { |
| | | width: 412rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | border: 3rpx #eff0f1 solid; |
| | | border-radius: 10rpx; |
| | | padding: 0 16rpx; |
| | | line-height: 68rpx; |
| | | ::v-deep .u-steps-item__wrapper { |
| | | background-color: #eee; |
| | | } |
| | | |
| | | |
| | | .badSheetClass { |
| | | position: relative; |
| | | ::v-deep .u-steps-item__line--column { |
| | | display: none; |
| | | } |
| | | |
| | | .badNumber { |
| | | position: absolute; |
| | | top: 20rpx; |
| | | left: 20rpx; |
| | | font-size: 26rpx; |
| | | color: rgb(0, 102, 255) |
| | | ::v-deep .u-slide-right-enter-active { |
| | | width: 70%; |
| | | } |
| | | |
| | | .trash { |
| | | position: absolute; |
| | | top: 20rpx; |
| | | right: 30rpx; |
| | | font-size: 26rpx; |
| | | ::v-deep .uicon-calendar { |
| | | font-size: 36rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-cell__title-text { |
| | | font-size: 28rpx; |
| | | color: #212121; |
| | | } |
| | | |
| | | ::v-deep .u-cell__value { |
| | | font-size: 28rpx; |
| | | // color: transparent; |
| | | color: #212121; |
| | | |
| | | } |
| | | |
| | | ::v-deep .u-cell__label { |
| | | margin-top: 0; |
| | | line-height: 12px; |
| | | } |
| | | |
| | | ::v-deep .uicon-arrow-right { |
| | | font-size: 14px !important; |
| | | color: #212121 !important; |
| | | } |
| | | |
| | | ::v-deep .u-line-progress__text { |
| | | // margin-right: -20px; |
| | | // color: #212121; |
| | | // width: 100px; |
| | | // margin-top: 10px; |
| | | display: none; |
| | | |
| | | } |
| | | |
| | | ::v-deep .u-text__value--content { |
| | | font-size: 12px !important; |
| | | } |
| | | |
| | | ::v-deep .u-tag__close { |
| | | background: #436df5 !important; |
| | | } |
| | | |
| | | ::v-deep .u-cell__body { |
| | | padding-bottom: 40rpx; |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <page-nav title="å§å¤æ¶æ"></page-nav> |
| | | |
| | | |
| | | <view v-show="topContent.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">æ«æä»»å¡æ¡ç </div> |
| | | </div> |
| | | </view> |
| | | |
| | | <view v-show="topContent.length!==0" class="mainContent"> |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | æ¶æä¿¡æ¯ |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="marginLeft20 marginRight20" style="height: 410rpx;" v-if="topContent.length!==0"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <!-- v-for="item in purchorderArr" --> |
| | | <view class="flex_column titleFont"> |
| | | <view>å·¥åç¼å·ï¼</view> |
| | | <view>产åç¼ç ï¼</view> |
| | | <view>产ååç§°ï¼</view> |
| | | <view>产åè§æ ¼ï¼</view> |
| | | <view>å½åå·¥åºï¼</view> |
| | | <view>任塿°éï¼</view> |
| | | <view>æªæ¶/å·²æ¶ï¼</view> |
| | | <view>ä¸éå·¥åºï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{topContent[0].wo_code}}</view> |
| | | <view>{{topContent[0].partnumber}}</view> |
| | | <view>{{topContent[0].partname}}</view> |
| | | <view>{{topContent[0].partspec?topContent[0].partspec:'/'}}</view> |
| | | <view>{{topContent[0].stepname}}</view> |
| | | <view>{{topContent[0].planqty}}</view> |
| | | <view>{{topContent[0].startqty+'/'+topContent[0].reportqty}}</view> |
| | | <view>{{topContent[0].nextstepname?topContent[0].nextstepname:'/'}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | æ¶ææä½ |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="flex_column"> |
| | | |
| | | <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> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view @click='WXSheetClick' class="custominputClass"> |
| | | <view v-show='WXSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='WXSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{WXSheetValue}} |
| | | </view> |
| | | <u-icon :name="!WXSheetShow?'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: red;margin-right: 6rpx;">*</view> æ¶æäººå |
| | | </view> |
| | | <view style="margin-left: 20rpx;"> |
| | | <view @click='userSheetClick' class="custominputClass"> |
| | | <view v-show='userSheetValue===""' style="color: rgb(192, 196, 204);">è¯·éæ©</view> |
| | | <view v-show='userSheetValue!==""' class="ellipsis" style="width: 390rpx;"> |
| | | {{userSheetValue}} |
| | | </view> |
| | | <u-icon :name="!userSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <view class="flex_center titleFont" style="margin: 0rpx 20rpx 10rpx;line-height: 56rpx;"> |
| | | <view style="color: red;margin-right: 6rpx;">*</view> æ¶ææ°é |
| | | <view style="margin-left: 20rpx;"> |
| | | <view class='inputClass'> |
| | | <u--input placeholder="请è¾å
¥" border="surround" type='number' v-model="sqty"> |
| | | </u--input> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" v-if="topContent.length!==0"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | 坿¶æä¾åºå |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="flex_column marginLeft20 marginRight20 marginBottom20 titleFont"> |
| | | <view v-for='(i,index) in topContent[0].list' |
| | | v-if="parseFloat(i.fqty) - parseFloat(i.sqty) - parseFloat(i.ng_qty) - parseFloat(i.laborbad_qty)- parseFloat(i.materielbad_qty)>0" |
| | | style="display: flex;"> |
| | | <view>{{index+1}}</view> |
| | | <view class="ellipsis" style="width: 400rpx;margin: 0 30rpx;">{{i.tp}}</view> |
| | | <view> |
| | | {{ parseFloat(i.fqty) - parseFloat(i.sqty) - parseFloat(i.ng_qty) - parseFloat(i.laborbad_qty)- parseFloat(i.materielbad_qty)}} |
| | | </view> |
| | | <!-- <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-picker v-if="topContent.length!==0" :show="WXSheetShow" :columns="WXColumns" :itemHeight='55' |
| | | :closeOnClickOverlay='true' @close='WXSheetShow=false' @confirm='WXPickerConfirm' |
| | | @cancel='WXSheetShow=false'> |
| | | </u-picker> |
| | | |
| | | |
| | | <u-picker v-if="topContent.length!==0" :show="userSheetShow" :columns="userColumns" :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> |
| | | |
| | | <u-button size="large" v-show="topContent.length!==0" :loading="isDisabledSubmitButton" |
| | | loadingText="æ£å¨æäº¤,请ç¨ç..." type="primary" @click="submit" text="æ¶æ"> |
| | | </u-button> |
| | | |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <!-- <view v-show="topContent.length!==0&&!WXSheetShow&&!userSheetShow&&!badSheetShow" @click="topScanClick"> |
| | | <drag-ball :x='$DeviceInformation.screenWidth*0.8' :y="$DeviceInformation.screenHeight*0.7"></drag-ball> |
| | | </view> --> |
| | | |
| | | <!-- <scan-code></scan-code> --> |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepStart, |
| | | CustomerPermissions, |
| | | PersonPermissions, |
| | | DefectPermissions, |
| | | SavaMesOrderStepIn, |
| | | LabelBarCode |
| | | } from '../../config/api.js'; |
| | | // import scanCode from '@/components/scan-code/scan-code.vue' |
| | | |
| | | export default { |
| | | onLoad(option) { |
| | | if (option.orderstep) { |
| | | this.fromType = '1' |
| | | this.getMesOrderStepStart(option.orderstep) |
| | | } else { |
| | | this.fromType = '2' |
| | | } |
| | | }, |
| | | |
| | | onPullDownRefresh() { |
| | | setTimeout(() => { |
| | | this.init(() => { |
| | | uni.stopPullDownRefresh(); |
| | | }) |
| | | }, 1000); |
| | | }, |
| | | |
| | | data() { |
| | | return { |
| | | topRightMessageCount: '', |
| | | |
| | | isDisabledSubmitButton: false, |
| | | |
| | | topContent: [], |
| | | // { |
| | | // "wo_code": "MO-2023-06-0003_1", |
| | | // "partnumber": "308", |
| | | // "partname": "çµæ± å
", |
| | | // "partspec": "", |
| | | // "seq": "2", |
| | | // "stepcode": "ZSStep03", |
| | | // "stepname": "廿¯åº", |
| | | // "nextstepcode": "ZSStep06", |
| | | // "nextstepname": "å
è£
2", |
| | | // "stepdesc": "", |
| | | // "wkshopcode": "ZS001", |
| | | // "wkshopname": "注å¡è½¦é´", |
| | | // "planqty": 50.00, |
| | | // "startqty": 29.00, |
| | | // "noreportqty": 29.00, |
| | | // "reportqty": 21.00, |
| | | // "noputqty": 0.0, |
| | | // "list": null |
| | | // }, //æ«æä»»å¡æ¡ç æå¸¦åºæ¥çå
容 |
| | | |
| | | WXSheetValue: '', |
| | | WXSheetShow: false, //䏿å表æ¯å¦å±å¼ |
| | | WXColumns: [], |
| | | WXSheetList: [], |
| | | |
| | | |
| | | userSheetValue: '', |
| | | userSheetShow: false, |
| | | userColumns: [], |
| | | userSheetList: [], |
| | | |
| | | sqty: null, |
| | | ngqty: null, |
| | | |
| | | |
| | | badSelectArr: [], |
| | | checkBoxValue: '', |
| | | badSheetShow: false, |
| | | badSheetValue: '', |
| | | |
| | | |
| | | ngqtyArr: [{ |
| | | uid: new Date().getTime(), |
| | | ngqty: '', |
| | | badSheetValue: '', |
| | | arrowDown: true //åä¸ç®å¤´ |
| | | }, |
| | | // { |
| | | // ngqty: '', |
| | | // badSheetValue: '', |
| | | // arrowDown: true //åä¸ç®å¤´ |
| | | // }, |
| | | ], //ä¸è¯æ°éãä¸è¯åå æ°ç» |
| | | |
| | | |
| | | |
| | | notes: null, //夿³¨ |
| | | |
| | | fromType: '1' |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | mounted() { |
| | | this.init() |
| | | |
| | | |
| | | // this.getMesOrderStepStart('MO-2023-09-0002_1;106') |
| | | |
| | | |
| | | this.handleSelectAllApi() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | async handleSelectAllApi() { |
| | | await this.getCustomerPermissions() |
| | | await this.getPersonPermissions() |
| | | await this.getDefectPermissions() |
| | | }, |
| | | |
| | | async getPersonPermissions(val) { |
| | | const data = { |
| | | usercode: val |
| | | } |
| | | const res = await PersonPermissions(this.global.formatData(data)) |
| | | this.userSheetList = res.data |
| | | this.userColumns = [res.data.map(i => i.username)] |
| | | }, |
| | | |
| | | async getCustomerPermissions() { |
| | | |
| | | const res = await CustomerPermissions() |
| | | this.WXSheetList = res.data |
| | | this.WXColumns = [res.data.map(i => i.name)] |
| | | }, |
| | | // è·åä¸è¯åå |
| | | async getDefectPermissions() { |
| | | const res = await DefectPermissions() |
| | | if (res.code === '200') { |
| | | this.badSelectArr = res.data |
| | | } |
| | | }, |
| | | |
| | | |
| | | async getMesOrderStepStart(val) { |
| | | const data = { |
| | | OperType: 'WX', |
| | | SelectType: 'IN', |
| | | wocode: val ? val.split(';')[0] : '', |
| | | stepcode: val ? val.split(';')[1] : '' |
| | | } |
| | | |
| | | const res = await MesOrderStepStart(this.global.formatData(data)) |
| | | console.log(res, 3) |
| | | |
| | | if (res.code === '200') { |
| | | // this.getCustomerPermissions(val) |
| | | // this.getMesOrderSelectUser(val) |
| | | // this.getDefectPermissions(val) |
| | | this.WXSheetValue = '' |
| | | this.userSheetValue = '' |
| | | this.checkBoxValue = '' |
| | | this.badSheetValue = '' |
| | | this.sqty = null |
| | | this.ngqty = null |
| | | this.notes = null |
| | | this.topContent = [] |
| | | this.topContent.push(res.data) |
| | | } |
| | | // console.log(this.topContent,6) |
| | | |
| | | }, |
| | | |
| | | // 任塿¡ç çæ«ç æ¡ç¹å» |
| | | topScanClick() { |
| | | let that = this; |
| | | |
| | | uni.scanCode({ |
| | | onlyFromCamera: true, |
| | | // scanType: ['barCode', 'qrCode'], |
| | | scanType: ['qrCode'], |
| | | success: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | |
| | | that.getMesOrderStepStart(res.result) |
| | | |
| | | }, |
| | | complete: function(res) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | badSheetClick(item) { |
| | | if (!item.ngqty) { |
| | | return uni.$u.toast('请å
å¡«åä¸è¯æ°éï¼') |
| | | } |
| | | item.arrowDown = !item.arrowDown |
| | | |
| | | this.checkBoxValue = item.badSheetValue.split(',') |
| | | this.badSheetShow = true |
| | | }, |
| | | |
| | | badSheetSelect(val) { |
| | | console.log('æ§è¡äºï¼') |
| | | }, |
| | | checkboxChange(val) { |
| | | this.badSheetValue = val.join(',') |
| | | }, |
| | | |
| | | |
| | | WXSheetClick() { |
| | | this.WXSheetShow = true |
| | | }, |
| | | |
| | | WXPickerConfirm(val) { |
| | | this.WXSheetValue = val.value[0] |
| | | this.WXSheetShow = false |
| | | }, |
| | | |
| | | userSheetClick() { |
| | | this.userSheetShow = true |
| | | }, |
| | | |
| | | userPickerConfirm(val) { |
| | | this.userSheetValue = val.value[0] |
| | | this.userSheetShow = false |
| | | }, |
| | | |
| | | // æ·»å |
| | | 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 |
| | | }, |
| | | |
| | | |
| | | async submit() { |
| | | |
| | | if (!this.WXSheetValue) { |
| | | return uni.$u.toast('å¤å便¹ä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | if (!this.userSheetValue) { |
| | | return uni.$u.toast('æ¶æäººåä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | if (!this.sqty) { |
| | | return uni.$u.toast('æ¶ææ°éä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | let t = this.topContent[0].list.find(i => i.tp === this.WXSheetValue) |
| | | |
| | | 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('æ¶ææ°éä¸è½å¤§äºè¯¥ä¾åºåç坿¶æ¶æï¼') |
| | | } |
| | | |
| | | // ä¸è¯åå |
| | | 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('æ¶ææ°é+ä¸è¯æ°éä¸è½å¤§äºè¯¥ä¾åºåç坿¶æ¶æï¼') |
| | | } |
| | | |
| | | |
| | | const D = { |
| | | rightcode: '0601', |
| | | partcode: this.topContent[0].partnumber, |
| | | qty: parseFloat(this.sqty), |
| | | onelabqty: parseFloat(this.sqty) |
| | | } |
| | | const { |
| | | data: R |
| | | } = await LabelBarCode(D) |
| | | |
| | | |
| | | const data = { |
| | | mesordercode: this.topContent[0].wo_code, // å·¥åç¼å· |
| | | partcode: this.topContent[0].partnumber, // 产åç¼ç |
| | | stepseq: this.topContent[0].seq, // å·¥åºåºå· |
| | | stepcode: this.topContent[0].stepcode, // å·¥åºç¼ç |
| | | wxcode: this.WXSheetList.find(i => i.name === this.WXSheetValue).code, // å¤åä¾åºåç¼ç |
| | | inuser: this.userSheetList.find(i => i.username === this.userSheetValue).usercode, // åæäººå |
| | | taskqty: this.topContent[0].planqty, // 任塿°é |
| | | sqty: this.sqty, // æ¶ææ°é |
| | | // ngqty: !this.ngqty ? 0 : this.ngqty, |
| | | remarks: this.notes, |
| | | defectlist, |
| | | inbarcode: R[0].labcode, //å
¥åºæ¡ç |
| | | } |
| | | |
| | | console.log(JSON.parse(JSON.stringify(data)), 6) |
| | | |
| | | this.isDisabledSubmitButton = true |
| | | const res = await SavaMesOrderStepIn(data) |
| | | |
| | | if (res.code === '200') { |
| | | uni.$u.toast('æ¶ææåï¼') |
| | | |
| | | this.WXSheetValue = '' |
| | | this.userSheetValue = '' |
| | | this.checkBoxValue = '' |
| | | this.badSheetValue = '' |
| | | this.sqty = null |
| | | this.ngqty = null |
| | | this.notes = null |
| | | this.topContent = [] |
| | | |
| | | |
| | | if (this.fromType === '1') { |
| | | let pages = getCurrentPages(); // 页é¢éå |
| | | let beforePage = pages[pages.length - 2]; //ä¸ä¸ä¸ªé¡µé¢ |
| | | beforePage.$vm.getProductionScheduleKanban() |
| | | |
| | | uni.navigateBack() |
| | | } |
| | | |
| | | this.isDisabledSubmitButton = false |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import url('@/style/global.css'); |
| | | |
| | | ::v-deep .uicon-arrow-left>span { |
| | | 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; |
| | | justify-content: space-between; |
| | | border: 3rpx #eff0f1 solid; |
| | | border-radius: 10rpx; |
| | | 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> |
| | |
| | | |
| | | <view style="max-height: 540px;overflow: auto;"> |
| | | <u-checkbox-group v-model="checkboxValue" iconPlacement="right" placement="column" @change="checkboxChange"> |
| | | <u-checkbox :key="item.code.trim()+'/'+item.name" |
| | | :label="item.code.trim()+'/'+item.name" :labelSize='16' :size='16' |
| | | :borderBottom='true' v-for="item in collapseArr" :name="item.code+'/'+item.name"> |
| | | <u-checkbox :key="item.code.trim()+'/'+item.name" :label="item.code.trim()+'/'+item.name" |
| | | :labelSize='16' :size='16' :borderBottom='true' v-for="item in collapseArr" |
| | | :name="item.code+'/'+item.name"> |
| | | </u-checkbox> |
| | | </u-checkbox-group> |
| | | </view> |
| | |
| | | inputBoxValue: '', |
| | | alertTitle: '', |
| | | |
| | | collapseArrAll: [], |
| | | collapseArr: [], |
| | | checkboxValue: [], |
| | | |
| | |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | |
| | | |
| | | //è¾å
¥æ¡å车确认äºä»¶ |
| | | confirmInputBoxValue(val) { |
| | | console.log('确认', val) |
| | | this.getInventoryTreePermissions(val) |
| | | // this.getInventoryTreePermissions(val) |
| | | this.collapseArr = this.collapseArrAll.filter((p) => { |
| | | return p.code.indexOf(val) !== -1 |
| | | }) |
| | | |
| | | }, |
| | | |
| | |
| | | |
| | | const { |
| | | data: res |
| | | } = await InventoryTreePermissions(param === undefined ? '' : param) |
| | | } = await InventoryTreePermissions() |
| | | |
| | | this.collapseArrAll = res |
| | | this.collapseArr = res |
| | | this.alertTitle = '产åï¼å
±' + res.length + '个ï¼' |
| | | }, |
| | |
| | | :label="item.children.length===0?'æªæ´¾å':''" :disabled='item.children.length===0' |
| | | v-for="item in collapseArr" :key="item.ordercode"> |
| | | |
| | | |
| | | <view style="position: absolute;width: 200rpx;left: 30rpx;top:34px;font-size: 24rpx;color: #999;"> |
| | | {{item.partname}} {{item.partspec}} |
| | | </view> |
| | | |
| | | <!-- <view style="position: absolute;width: 26%;left: 44%;top:16px;"> --> |
| | | <view style="position: absolute;width: 100px;left: 44%;top:16px;" |
| | | <view style="position: absolute;width: 120px;left: 44%;top:16px;color:#0659ff" |
| | | @click="progressClick(item.ordercode)"> |
| | | <!-- {{item.partname}}{{item.partspec}} --> |
| | | <u-line-progress :percentage="parseFloat((item.ordergoodqty*100/item.orderqty).toFixed(2))" |
| | | inactiveColor="#d1d6f5" height="10" activeColor="#0659ff"></u-line-progress> |
| | | </view> |
| | |
| | | ::v-deep .u-tag__close { |
| | | background: #436df5 !important; |
| | | } |
| | | |
| | | ::v-deep .u-cell__body { |
| | | padding-bottom: 40rpx; |
| | | } |
| | | </style> |