| | |
| | | export const AppDailyWageReportSearch = (data, config = {}) => http.get( |
| | | '/AppPersonal/DailyWageReportSearch', { |
| | | params: data |
| | | }) |
| | | |
| | | |
| | | //App已派åå·¥åçç©æ |
| | | export const DistrInventory = (data, config = {}) => http.get( |
| | | '/AppProduct/DistrInventory', { |
| | | params: data |
| | | }) |
| | | |
| | | |
| | | //Appæ¥çåæ®åå·¥èºä¿¡æ¯ |
| | | export const ProductOrderSearch = (data, config = {}) => http.get( |
| | | '/AppProduct/ProductOrderSearch', { |
| | | params: data |
| | | }) |
| | |
| | | "style": { |
| | | "navigationBarTitleText": "ç产æ¥å·¥", |
| | | "navigationStyle": "custom", |
| | | "enablePullDownRefresh": false |
| | | "enablePullDownRefresh": true |
| | | } |
| | | }, |
| | | { |
| | |
| | | "navigationBarTitleText": "ç产æ¥å·¥", |
| | | "navigationStyle": "custom", |
| | | "enablePullDownRefresh": false |
| | | |
| | | } |
| | | }, |
| | | { |
| | |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/zlgl/sjjy1", |
| | | "style": { |
| | | "navigationBarTitleText": "馿£æ£éª", |
| | | "navigationStyle": "custom", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/zlgl/sjjy2", |
| | | "style": { |
| | | "navigationBarTitleText": "馿£æ£éª", |
| | |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/zlgl/xjjy1", |
| | | "style": { |
| | | "navigationBarTitleText": "å·¡æ£æ£éª", |
| | | "navigationStyle": "custom", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/zlgl/xjjy2", |
| | | "style": { |
| | | "navigationBarTitleText": "å·¡æ£æ£éª", |
| | |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/zlgl/wgjy1", |
| | | "style": { |
| | | "navigationBarTitleText": "å®å·¥æ£éª", |
| | | "navigationStyle": "custom", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/zlgl/wgjy2", |
| | | "style": { |
| | | "navigationBarTitleText": "å®å·¥æ£éª", |
| | |
| | | AppUpgrade().then(res => { |
| | | this.isShow = res.data[0].version !== this.$appVersion |
| | | if (res.data[0].version !== this.$appVersion) { // 说æä¸ææ°çæ¬ä¸å¹é
|
| | | this.downloadUrl = this.$baseUrl.substring(0, 25) + '/APK/JLAPP.apk' |
| | | this.downloadUrl = this.$baseUrl.substring(0, 25) + '/APK/YBAPP.apk' |
| | | } |
| | | }) |
| | | |
| | |
| | | <!-- @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' |
| | | v-if='item.children.length!==0' :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"> |
| | | <scroll-view scroll-y :style="{height: 590 + 'px'}" @scrolltolower="loadMore"> |
| | | <u-collapse-item style="position: relative;" :title="item.ordercode" :name='item.ordercode' |
| | | v-if='item.children.length!==0' :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;left: 30rpx;top:34px;font-size: 24rpx;color: #999;"> |
| | | {{item.partname}} {{item.partspec}} |
| | | </view> |
| | | <view style="position: absolute;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: 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 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 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 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> |
| | | </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> --> |
| | | <u-steps-item :title="it.code+'/'+it.name"></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 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> |
| | | |
| | | </u-steps> |
| | | <!-- </u--text> --> |
| | | |
| | | <!-- {{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> --> |
| | | <u-steps-item :title="it.code+'/'+it.name"></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> |
| | | |
| | | </u-steps> |
| | | <!-- </u--text> --> |
| | | |
| | | |
| | | </u-collapse-item> |
| | | |
| | | </u-collapse-item> |
| | | </scroll-view> |
| | | </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> |
| | | åæ®ç±»åï¼ |
| | |
| | | |
| | | </u-radio> |
| | | </u-radio-group> |
| | | </view> --> |
| | | </view> |
| | | |
| | | <u--input :placeholder="'请è¾å
¥'+placeholder2" style="border: 1rpx solid #eee;" :clearable='true' |
| | | v-model="order"></u--input> |
| | | |
| | | |
| | | <view style="margin-top: 20px;display: flex;align-items: center;"> |
| | | |
| | |
| | | |
| | | </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 class="head" style="margin-top: 10px;"> |
| | | <!-- <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 :plain='custom' style="width: 70px;height: 25px;" @click="dateChange('custom')" |
| | | type="primary" shape="circle" text="èªå®ä¹"></u-button> |
| | | </view> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <view v-if="!custom" class="flex_column" |
| | | <!-- <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> |
| | |
| | | </u-button> |
| | | </view> |
| | | |
| | | <uni-calendar ref="calendar" :range='true' :insert="false" @confirm="calendarConfirm" /> |
| | | <uni-calendar ref="calendar" :range='true' :insert="false" @confirm="calendarConfirm" /> --> |
| | | |
| | | </view> |
| | | </u-popup> |
| | |
| | | |
| | | <script> |
| | | import { |
| | | ProductionScheduleKanban |
| | | ProductOrderSearch |
| | | } from '../../config/api.js'; |
| | | export default { |
| | | onLoad(option) { |
| | |
| | | // code: '1006' |
| | | // }, |
| | | ], //å·²éä¸çäº§åæ ç¾ |
| | | |
| | | order: '', //åå· |
| | | placeholder2: 'ç产订å' |
| | | |
| | | } |
| | | }, |
| | | // çå¬ä¸æå·æ°å¨ä½ï¼UniApp åççå½å¨æï¼ |
| | | onPullDownRefresh() { |
| | | let that = this |
| | | uni.startPullDownRefresh({ |
| | | success() { |
| | | that.getProductOrderSearch() |
| | | uni.showToast({ |
| | | title: "䏿巿°", |
| | | icon: 'none' |
| | | }) |
| | | }, |
| | | complete() { |
| | | uni.stopPullDownRefresh() |
| | | } |
| | | }) |
| | | }, |
| | | created() { |
| | | |
| | |
| | | mounted() { |
| | | this.init() |
| | | |
| | | this.getProductionScheduleKanban() |
| | | this.getProductOrderSearch() |
| | | }, |
| | | methods: { |
| | | init() { |
| | |
| | | }, |
| | | |
| | | // æ¥å£è·å |
| | | async getProductionScheduleKanban() { |
| | | async getProductOrderSearch() { |
| | | let ordertype = '' // SOï¼éå®è®¢å MOï¼ç产订å POï¼ç产工å |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | |
| | | ordertype = 'PO' |
| | | break |
| | | case 'ç产订å': |
| | | this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | // this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥ç产订åä¿¡æ¯' |
| | | ordertype = 'MO' |
| | | break |
| | | case 'éå®è®¢å': |
| | | this.alertTitle = 'éå®è®¢åæ°éï¼å
±/个ï¼' |
| | | // this.alertTitle = 'éå®è®¢åæ°éï¼å
±/个ï¼' |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥éå®è®¢åä¿¡æ¯' |
| | | ordertype = 'SO' |
| | | break |
| | |
| | | const data = { |
| | | ordertype, |
| | | partcode: this.tagArr.map(i => i.code).join(','), |
| | | Ratetime: this.calendarRange, |
| | | ordercode: this.order, |
| | | Ratetime: '', |
| | | // Ratetime: this.calendarRange, |
| | | |
| | | } |
| | | const { |
| | | data: res |
| | | } = await ProductionScheduleKanban(data) |
| | | } = await ProductOrderSearch(data) |
| | | |
| | | this.collapseArr = res |
| | | this.collapseArrAll = res |
| | |
| | | 1] |
| | | |
| | | }, |
| | | loadMore() { |
| | | |
| | | }, |
| | | |
| | | //è¾å
¥æ¡å车确认äºä»¶ |
| | | confirmInputBoxValue(val) { |
| | |
| | | |
| | | // å¼¹åºå±æ¶èµ· |
| | | popupClose() { |
| | | this.getProductionScheduleKanban() |
| | | this.getProductOrderSearch() |
| | | this.popupShow = false |
| | | }, |
| | | |
| | |
| | | // åéæé®åæ¢ |
| | | groupChange(val) { |
| | | console.log(val) |
| | | this.placeholder2 = val |
| | | }, |
| | | |
| | | |
| | |
| | | <view> |
| | | <page-nav title="馿£æ£éª"></page-nav> |
| | | |
| | | <view v-if="processArr.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">æ«æå·¥åºä»»å¡ç </div> |
| | | </div> |
| | | </view> |
| | | |
| | | <view class="flex_center" style="margin: 20rpx;"> |
| | | |
| | | <view v-if="processArr.length!==0" class="mainContent" style="height: 1340rpx;overflow: auto"> |
| | | <view> |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style="height: 386rpx;overflow: auto;"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | å·¥åä¿¡æ¯ |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- #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 --> |
| | | |
| | | <view class="marginLeft20 marginRight20"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>åæ®ç¼å·ï¼</view> |
| | | <view>ç©æç¼ç ï¼</view> |
| | | <view>ç©æåç§°ï¼</view> |
| | | <view>ç©æè§æ ¼ï¼</view> |
| | | <view>å·¥åºç¼ç ï¼</view> |
| | | <view>å·¥åºåç§°ï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.wo_code}}</view> |
| | | <view>{{processObj.partcode}}</view> |
| | | <view>{{processObj.partname}}</view> |
| | | <view>{{processObj.partspec?processObj.partspec:'/'}}</view> |
| | | <view>{{processObj.stepcode}}</view> |
| | | <view>{{processObj.stepname}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- #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 --> |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | |
| | | <view class="head" style="height: 290rpx;overflow: auto;"> |
| | | <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"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>æ¹æ¡åç§°ï¼</view> |
| | | <view>æ½æ ·æ¹å¼ï¼</view> |
| | | <view>æ¥å·¥æ°éï¼</view> |
| | | <view>æ ·æ¬æ°éï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.checkstandname}}</view> |
| | | <view>{{processObj.sampmethod==='FIXED'?'åºæ¶æ½æ£':'æ¯ä¾æ½æ£'}}</view> |
| | | <view>{{processObj.good_qty}}</view> |
| | | |
| | | |
| | | <u-number-box inputWidth='50' v-model="processObj.sampscare" min='1' |
| | | :max='processObj.good_qty' class="contentFont" |
| | | @change="samplesChange"></u-number-box> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style=""> |
| | | <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="marginBottom20 marginTop10" |
| | | style="display: flex;justify-content: space-around;align-items: center;"> |
| | | <u-button type="primary" :disabled="checkNumber===1" @click="preTo" |
| | | style="width: 160rpx;height: 60rpx;" plain text="ä¸ä¸ä»¶"></u-button> |
| | | <view style="">{{checkNumber}}/{{processObj.sampscare}}</view> |
| | | <u-button type="primary" |
| | | :disabled="checkNumber===processObj.sampscare||processArr%processArr.filter(i=>i.isPlain!=='').length===0" |
| | | @click="nextTo" style="width: 160rpx;height: 60rpx; " plain text="ä¸ä¸ä»¶"></u-button> |
| | | </view> |
| | | |
| | | <u-gap height="6" style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | |
| | | <view class="marginLeft20 marginRight20 marginTop20" style="margin-bottom: 132rpx;"> |
| | | <view class="marginBottom20 flex_column" v-for="(item,index) in processArr" |
| | | v-if="item.checkNumber===checkNumber" :key="item.name+index+checkNumber"> |
| | | |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="titleFont">{{item.name}}</view> |
| | | |
| | | <view class="contentFont" v-if="item.numberjudge==='N'" |
| | | style="display: flex;width: 280rpx;"> |
| | | |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' @click="item.isPlain=false;$forceUpdate()" |
| | | text="ä¸åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="flex_column titleFont"> |
| | | <view v-if="item.standvalue">æ åå¼</view> |
| | | <view v-if="item.uppervalue">ä¸éå¼</view> |
| | | <view v-if="item.lowervalue">ä¸éå¼</view> |
| | | </view> |
| | | <view class="flex_column titleFont marginRight20"> |
| | | <view v-if="item.standvalue">{{item.standvalue}}</view> |
| | | <view v-if="item.uppervalue">{{item.uppervalue}}</view> |
| | | <view v-if="item.lowervalue">{{item.lowervalue}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="titleFont marginLeft20 marginRight20"> |
| | | <view v-if="item.stepcheckitem_desc">æè¿° {{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 marginTop10 marginBottom20"> |
| | | <view class="titleFont " style="display: flex;align-items: center;" |
| | | v-if="item.numberjudge==='Y'"> |
| | | <view class="titleFont marginRight20"> |
| | | 宿µå¼ |
| | | </view> |
| | | |
| | | <view class="inputClass " style="width:40%;"> |
| | | <u--input style="" :adjustPosition='false' placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.real_value" @change='val=>realValueBlur(val,item)'></u--input> |
| | | </view> |
| | | |
| | | <view style="display: flex;width: 280rpx;margin-left: 12rpx;"> |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" |
| | | :disabled="item.required==='Y'&&!item.real_value" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' |
| | | :disabled="item.required==='Y'&&!item.real_value" |
| | | @click="item.isPlain=false;$forceUpdate()" text="ä¸åæ ¼"></u-button> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <!-- <view class=" marginLeft20 marginRight20 marginTop10"> |
| | | <view class="titleFont"> æè¿°ï¼{{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | <view class=" marginLeft20 marginRight20 marginTop10 marginBottom20" |
| | | style="display: flex;align-items: center;"> |
| | | <view class="contentFont"> 夿³¨ï¼</view> |
| | | <view class="inputClass " style=""> |
| | | <u--input style="" placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.stepcheckitem_remark"></u--input> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <u-gap height="6" |
| | | v-if="(index+1)%processArr.map(i=>i.checkNumber===1).filter(i=>i).length!==0" |
| | | style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | <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 class="footer" v-if="processArr.length!==0"> |
| | | <u-button v-if="processArr.length!==0" type="primary" size='large' |
| | | :disabled="!(processArr.filter(i=>i.isPlain==='').length===0)" :hairline="true" @click="navigateTo" |
| | | text="ä¸ä¸æ¥"></u-button> |
| | | |
| | | <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)' --> |
| | | <scroll-view scroll-y :style="{height: 590 + 'px'}" @scrolltolower="loadMore"> |
| | | <u-collapse-item style="position: relative;" :title="item.ordercode" :name='item.ordercode' |
| | | v-if='item.children.length!==0' :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;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> |
| | | |
| | | |
| | | <!-- {{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> --> |
| | | <u-steps-item :title="it.code+'/'+it.name"></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> |
| | | |
| | | </u-steps> |
| | | <!-- </u--text> --> |
| | | |
| | | |
| | | </u-collapse-item> |
| | | </scroll-view> |
| | | </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> |
| | | |
| | | <u--input :placeholder="'请è¾å
¥'+placeholder2" style="border: 1rpx solid #eee;" :clearable='true' |
| | | v-model="order"></u--input> |
| | | |
| | | |
| | | <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> |
| | | |
| | | |
| | | <!-- <scan-code></scan-code> --> |
| | | |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <view @click="scan2"> |
| | | <drag-ball :x='300' :y="600"></drag-ball> |
| | | </view> |
| | | |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepCheckSearch, |
| | | MesOrderStepCheckItemList |
| | | ProductOrderSearch |
| | | } from '../../config/api.js'; |
| | | |
| | | 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: 'ç产工å' |
| | | }, |
| | | ], |
| | | |
| | | processObj: { |
| | | // wocode: '', |
| | | // partcode: '', |
| | | // partname: '', |
| | | // partspec: '', |
| | | // stepcode: '', |
| | | // stepname: '', |
| | | // checkstandcode: '', |
| | | // checkstandname: '', |
| | | // check_type: '', |
| | | // sampmethod: '', // FIXED(åºæ¶æ½æ£) SCARE(æ¯ä¾æ½æ£) |
| | | // sampscare: '', |
| | | // qualitystatus: '', |
| | | // good_qty: '', // æçæ¥å·¥æ°é |
| | | // sampleqty: '', |
| | | // goodqty: '', // åæ ¼æ°é |
| | | // ngqty: '', // ä¸è¯æ°é |
| | | }, //å·¥åºæ£éªå¯¹è±¡ |
| | | processArr: [], //å·¥åºæ£éªæ°ç» |
| | | 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), //å½ææ¥æ |
| | | |
| | | |
| | | checkNumber: 1, //æ£éªé¡¹ç®ä¸çæ£éªæ°é ç°å¨å¤äºç¬¬å 个 |
| | | |
| | | 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' |
| | | // }, |
| | | ], //å·²éä¸çäº§åæ ç¾ |
| | | order: '', //åå· |
| | | placeholder2: 'ç产订å' |
| | | |
| | | } |
| | | }, |
| | | // çå¬ä¸æå·æ°å¨ä½ï¼UniApp åççå½å¨æï¼ |
| | | onPullDownRefresh() { |
| | | let that = this |
| | | uni.startPullDownRefresh({ |
| | | success() { |
| | | that.getProductOrderSearch() |
| | | uni.showToast({ |
| | | title: "䏿巿°", |
| | | icon: 'none' |
| | | }) |
| | | }, |
| | | complete() { |
| | | uni.stopPullDownRefresh() |
| | | } |
| | | }) |
| | | }, |
| | | created() { |
| | | |
| | |
| | | mounted() { |
| | | this.init() |
| | | |
| | | // this.getStepCheckSearch('MO-2024-01-0004_2;101') |
| | | |
| | | this.getProductOrderSearch() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | gotoPage(p1, p2) { |
| | | let orderstep = null |
| | | |
| | | async getStepCheckSearch(orderstepqrcode) { |
| | | console.log('æ§è¡äº') |
| | | // æ£éªæ¹å¼FirstCheckï¼é¦æ£ï¼ PatroCheck(å·¡æ£) EndCheck(å®å·¥æ£) |
| | | const data = { |
| | | // 'MO-2023-05-0003_1;Step06' |
| | | orderstepqrcode, |
| | | checktype: 'FirstCheck', |
| | | // stu_torgcode: uni.getStorageSync('stu_torgcode') |
| | | } |
| | | // const res = await MesOrderStepCheckSearch(this.global.formatData(data)) |
| | | const res = await MesOrderStepCheckSearch(data) |
| | | |
| | | |
| | | if (res.code === '200') { |
| | | this.processObj = { |
| | | wo_code: res.data.labcont[0].wo_code, |
| | | partcode: res.data.labcont[0].partcode, |
| | | partname: res.data.labcont[0].partname, |
| | | partspec: res.data.labcont[0].partspec, |
| | | stepcode: res.data.labcont[0].stepcode, |
| | | stepname: res.data.labcont[0].stepname, |
| | | good_qty: res.data.labcont[0].good_qty, |
| | | checkstandcode: res.data.chekstand[0].checkstandcode, |
| | | checkstandname: res.data.chekstand[0].checkstandname, |
| | | sampmethod: res.data.chekstand[0].sampmethod, |
| | | sampscare: res.data.chekstand[0].sampmethod === 'FIXED' ? res.data.chekstand[0].sampscare : |
| | | Math.ceil(res.data.labcont[0].good_qty * res.data.chekstand[0].sampscare / 100) |
| | | } |
| | | |
| | | this.processObj.sampscare = this.processObj.sampscare <= this.processObj.good_qty ? this.processObj |
| | | .sampscare : this.processObj.good_qty |
| | | |
| | | |
| | | await this.getStepCheckItemList(this.processObj.checkstandcode) |
| | | |
| | | } |
| | | }, |
| | | |
| | | async getStepCheckItemList(checkstandcode) { |
| | | const data = { |
| | | checkstandcode |
| | | } |
| | | const res = await MesOrderStepCheckItemList(data) |
| | | |
| | | this.processArr = [] |
| | | |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | res.data.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i + 1, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: j.real_value, |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | |
| | | }, |
| | | |
| | | // æ ·æ¬æ°é弿¹åæ¶ |
| | | samplesChange(val) { |
| | | |
| | | console.log(val.value) |
| | | const t = this.processArr.filter(i => i.checkNumber === 1) |
| | | let len = this.processArr.length / t.length |
| | | |
| | | // ä»¶æ°åå°æ¶ |
| | | if (val.value < this.processArr.length / t.length) { |
| | | this.processArr.reverse() |
| | | const a = this.processArr.splice(0, t.length * (len - val.value)) |
| | | this.processArr.reverse() |
| | | if (this.checkNumber > val.value) { |
| | | this.checkNumber = val.value |
| | | } |
| | | } |
| | | |
| | | |
| | | // ä»¶æ°å夿¶ |
| | | if (val.value > this.processArr.length / t.length) { |
| | | |
| | | for (var i = val.value; i > len; i--) { |
| | | t.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: '', |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | this.processArr.sort((a, b) => a.checkNumber - b.checkNumber) |
| | | |
| | | } |
| | | |
| | | // console.log(this.processArr, 1) |
| | | // console.log(this.processArr.length, 1) |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // ä¸ä¸ä»¶ |
| | | preTo() { |
| | | if (this.checkNumber > 1) { |
| | | this.checkNumber-- |
| | | } |
| | | }, |
| | | |
| | | //ä¸ä¸ä»¶ |
| | | nextTo() { |
| | | if (this.checkNumber < this.processObj.sampscare) { |
| | | this.checkNumber++ |
| | | } |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // 宿µå¼è¾å
¥æ¶å¤±ç¦ç¶æ |
| | | realValueBlur(val, item) { |
| | | console.log(val === '', item) |
| | | |
| | | |
| | | if (val.value !== '') { |
| | | if (item.numberjudge === 'Y') { //妿éè¦è¿è¡æ°å¼å¤æ |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue === '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) === parseFloat(item.standvalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue !== '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue) && parseFloat(val) <= |
| | | parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue === '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) <= parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue !== '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | if (val === '') { |
| | | item.isPlain = '' |
| | | } |
| | | // this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | |
| | | // ä¸ä¸æ¥ |
| | | navigateTo() { |
| | | // 计ç®OKå¼ |
| | | let goodqty = 0; |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | let flag = this.processArr.filter(j => j.checkNumber === i + 1).every(j => j.isPlain) |
| | | if (flag) { |
| | | goodqty++ |
| | | } |
| | | if (p1) { |
| | | orderstep = p1 + ';' + p2 |
| | | } else { |
| | | orderstep = '' |
| | | } |
| | | |
| | | |
| | | uni.navigateTo({ |
| | | url: './sjjy2?processObj=' + JSON.stringify(this.processObj) + |
| | | '&processArr=' + JSON.stringify(this.processArr) + '&goodqty=' + goodqty |
| | | }); |
| | | url: './sjjy1?orderstep=' + orderstep |
| | | }) |
| | | }, |
| | | |
| | | getCheckboxValue(val) { |
| | | this.tagArr = [] |
| | | val.forEach(i => { |
| | | this.tagArr.push({ |
| | | close: true, |
| | | name: i.split('/')[1].trim(), |
| | | code: i.split('/')[0].trim() |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | // æ¥å£è·å |
| | | async getProductOrderSearch() { |
| | | let ordertype = '' // SOï¼éå®è®¢å MOï¼ç产订å POï¼ç产工å |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥å·¥åä¿¡æ¯' |
| | | ordertype = 'PO' |
| | | break |
| | | case 'ç产订å': |
| | | // this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥ç产订åä¿¡æ¯' |
| | | ordertype = 'MO' |
| | | break |
| | | case 'éå®è®¢å': |
| | | // this.alertTitle = 'éå®è®¢åæ°éï¼å
±/个ï¼' |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥éå®è®¢åä¿¡æ¯' |
| | | ordertype = 'SO' |
| | | break |
| | | } |
| | | |
| | | |
| | | const data = { |
| | | ordertype, |
| | | partcode: this.tagArr.map(i => i.code).join(','), |
| | | ordercode: this.order, |
| | | Ratetime: '', |
| | | // Ratetime: this.calendarRange, |
| | | |
| | | } |
| | | const { |
| | | data: res |
| | | } = await ProductOrderSearch(data) |
| | | |
| | | this.collapseArr = res |
| | | this.collapseArrAll = res |
| | | this.alertTitle = this.alertTitle.split('/')[0] + this.collapseArr.length + this.alertTitle.split('/')[ |
| | | 1] |
| | | |
| | | }, |
| | | loadMore() { |
| | | |
| | | }, |
| | | |
| | | // æ«ç |
| | | //è¾å
¥æ¡å车确认äºä»¶ |
| | | confirmInputBoxValue(val) { |
| | | this.collapseArr = this.collapseArrAll.filter((p) => { |
| | | return p.ordercode.indexOf(val) !== -1 |
| | | }) |
| | | |
| | | |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | break |
| | | case 'ç产订å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | // this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | break |
| | | case 'éå®è®¢å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | // 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.getStepCheckSearch(res.result) |
| | | // that.scanContent = res.result; |
| | | // let flag = false |
| | | // that.processArr.forEach(item => { |
| | | // if (item.hbarcode === res.result) { |
| | | // flag = true |
| | | // } |
| | | // }) |
| | | // if (flag) { |
| | | // that.$u.toast('æ¤æ¡ç å·²æ«æï¼å·²å¨å表ä¸ï¼') |
| | | // } else { |
| | | // //å¤çæ«ç äºä»¶ |
| | | // // that.getStepCheckSearch(that.scanContent); |
| | | // } |
| | | that.scanContent = res.result; |
| | | |
| | | that.getCheckScanDeviceQrCodeData(that.scanContent); |
| | | }, |
| | | complete: function(res) { |
| | | |
| | |
| | | }); |
| | | }, |
| | | |
| | | fromSubmitData() { |
| | | this.processObj = {} |
| | | this.processArr = [] |
| | | this.checkNumber = 1 |
| | | } |
| | | 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) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | getCheckScanDeviceQrCodeData(code) { |
| | | this.inputBoxValue = code |
| | | this.confirmInputBoxValue(this.inputBoxValue) |
| | | }, |
| | | |
| | | |
| | | // å¼¹åºå±æ¶èµ· |
| | | popupClose() { |
| | | this.getProductOrderSearch() |
| | | 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 |
| | | } |
| | | |
| | | 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) |
| | | this.placeholder2 = val |
| | | }, |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | display: block; |
| | | } |
| | | |
| | | ::v-deep .u-input { |
| | | padding: 6rpx 18rpx !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-number-box__minus { |
| | | height: 50rpx !important; |
| | | ::v-deep .u-alert--info--light { |
| | | background-color: rgba(255, 255, 255, 0.7); |
| | | } |
| | | |
| | | ::v-deep .u-number-box__input { |
| | | height: 50rpx !important; |
| | | ::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-number-box__plus { |
| | | height: 50rpx !important; |
| | | ::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-if="processArr.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">æ«æå·¥åºä»»å¡ç </div> |
| | | </div> |
| | | </view> |
| | | |
| | | |
| | | <view v-if="processArr.length!==0" class="mainContent" style="height: 1340rpx;overflow: auto"> |
| | | <view> |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style="height: 386rpx;overflow: auto;"> |
| | | <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"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>åæ®ç¼å·ï¼</view> |
| | | <view>ç©æç¼ç ï¼</view> |
| | | <view>ç©æåç§°ï¼</view> |
| | | <view>ç©æè§æ ¼ï¼</view> |
| | | <view>å·¥åºç¼ç ï¼</view> |
| | | <view>å·¥åºåç§°ï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.wo_code}}</view> |
| | | <view>{{processObj.partcode}}</view> |
| | | <view>{{processObj.partname}}</view> |
| | | <view>{{processObj.partspec?processObj.partspec:'/'}}</view> |
| | | <view>{{processObj.stepcode}}</view> |
| | | <view>{{processObj.stepname}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | |
| | | <view class="head" style="height: 290rpx;overflow: auto;"> |
| | | <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"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>æ¹æ¡åç§°ï¼</view> |
| | | <view>æ½æ ·æ¹å¼ï¼</view> |
| | | <view>æ¥å·¥æ°éï¼</view> |
| | | <view>æ ·æ¬æ°éï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.checkstandname}}</view> |
| | | <view>{{processObj.sampmethod==='FIXED'?'åºæ¶æ½æ£':'æ¯ä¾æ½æ£'}}</view> |
| | | <view>{{processObj.good_qty}}</view> |
| | | |
| | | |
| | | <u-number-box inputWidth='50' v-model="processObj.sampscare" min='1' |
| | | :max='processObj.good_qty' class="contentFont" |
| | | @change="samplesChange"></u-number-box> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style=""> |
| | | <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="marginBottom20 marginTop10" |
| | | style="display: flex;justify-content: space-around;align-items: center;"> |
| | | <u-button type="primary" :disabled="checkNumber===1" @click="preTo" |
| | | style="width: 160rpx;height: 60rpx;" plain text="ä¸ä¸ä»¶"></u-button> |
| | | <view style="">{{checkNumber}}/{{processObj.sampscare}}</view> |
| | | <u-button type="primary" |
| | | :disabled="checkNumber===processObj.sampscare||processArr%processArr.filter(i=>i.isPlain!=='').length===0" |
| | | @click="nextTo" style="width: 160rpx;height: 60rpx; " plain text="ä¸ä¸ä»¶"></u-button> |
| | | </view> |
| | | |
| | | <u-gap height="6" style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | |
| | | <view class="marginLeft20 marginRight20 marginTop20" style="margin-bottom: 132rpx;"> |
| | | <view class="marginBottom20 flex_column" v-for="(item,index) in processArr" |
| | | v-if="item.checkNumber===checkNumber" :key="item.name+index+checkNumber"> |
| | | |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="titleFont">{{item.name}}</view> |
| | | |
| | | <view class="contentFont" v-if="item.numberjudge==='N'" |
| | | style="display: flex;width: 280rpx;"> |
| | | |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' @click="item.isPlain=false;$forceUpdate()" |
| | | text="ä¸åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="flex_column titleFont"> |
| | | <view v-if="item.standvalue">æ åå¼</view> |
| | | <view v-if="item.uppervalue">ä¸éå¼</view> |
| | | <view v-if="item.lowervalue">ä¸éå¼</view> |
| | | </view> |
| | | <view class="flex_column titleFont marginRight20"> |
| | | <view v-if="item.standvalue">{{item.standvalue}}</view> |
| | | <view v-if="item.uppervalue">{{item.uppervalue}}</view> |
| | | <view v-if="item.lowervalue">{{item.lowervalue}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="titleFont marginLeft20 marginRight20"> |
| | | <view v-if="item.stepcheckitem_desc">æè¿° {{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 marginTop10 marginBottom20"> |
| | | <view class="titleFont " style="display: flex;align-items: center;" |
| | | v-if="item.numberjudge==='Y'"> |
| | | <view class="titleFont marginRight20"> |
| | | 宿µå¼ |
| | | </view> |
| | | |
| | | <view class="inputClass " style="width:40%;"> |
| | | <u--input style="" :adjustPosition='false' placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.real_value" @change='val=>realValueBlur(val,item)'></u--input> |
| | | </view> |
| | | |
| | | <view style="display: flex;width: 280rpx;margin-left: 12rpx;"> |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" |
| | | :disabled="item.required==='Y'&&!item.real_value" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' |
| | | :disabled="item.required==='Y'&&!item.real_value" |
| | | @click="item.isPlain=false;$forceUpdate()" text="ä¸åæ ¼"></u-button> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <!-- <view class=" marginLeft20 marginRight20 marginTop10"> |
| | | <view class="titleFont"> æè¿°ï¼{{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | <view class=" marginLeft20 marginRight20 marginTop10 marginBottom20" |
| | | style="display: flex;align-items: center;"> |
| | | <view class="contentFont"> 夿³¨ï¼</view> |
| | | <view class="inputClass " style=""> |
| | | <u--input style="" placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.stepcheckitem_remark"></u--input> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <u-gap height="6" |
| | | v-if="(index+1)%processArr.map(i=>i.checkNumber===1).filter(i=>i).length!==0" |
| | | style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="footer" v-if="processArr.length!==0"> |
| | | <u-button v-if="processArr.length!==0" type="primary" size='large' |
| | | :disabled="!(processArr.filter(i=>i.isPlain==='').length===0)" :hairline="true" @click="navigateTo" |
| | | text="ä¸ä¸æ¥"></u-button> |
| | | </view> |
| | | |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepCheckSearch, |
| | | MesOrderStepCheckItemList |
| | | } from '../../config/api.js'; |
| | | |
| | | export default { |
| | | onLoad(option) { |
| | | this.getStepCheckSearch(option.orderstep) |
| | | }, |
| | | |
| | | onPullDownRefresh() { |
| | | setTimeout(() => { |
| | | this.init(() => { |
| | | uni.stopPullDownRefresh(); |
| | | }) |
| | | }, 1000); |
| | | }, |
| | | |
| | | data() { |
| | | return { |
| | | |
| | | processObj: { |
| | | // wocode: '', |
| | | // partcode: '', |
| | | // partname: '', |
| | | // partspec: '', |
| | | // stepcode: '', |
| | | // stepname: '', |
| | | // checkstandcode: '', |
| | | // checkstandname: '', |
| | | // check_type: '', |
| | | // sampmethod: '', // FIXED(åºæ¶æ½æ£) SCARE(æ¯ä¾æ½æ£) |
| | | // sampscare: '', |
| | | // qualitystatus: '', |
| | | // good_qty: '', // æçæ¥å·¥æ°é |
| | | // sampleqty: '', |
| | | // goodqty: '', // åæ ¼æ°é |
| | | // ngqty: '', // ä¸è¯æ°é |
| | | }, //å·¥åºæ£éªå¯¹è±¡ |
| | | processArr: [], //å·¥åºæ£éªæ°ç» |
| | | |
| | | |
| | | checkNumber: 1, //æ£éªé¡¹ç®ä¸çæ£éªæ°é ç°å¨å¤äºç¬¬å 个 |
| | | } |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | mounted() { |
| | | this.init() |
| | | |
| | | // this.getStepCheckSearch('MO-2025-10-0008_1;001') |
| | | |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | |
| | | async getStepCheckSearch(orderstepqrcode) { |
| | | console.log('æ§è¡äº') |
| | | // æ£éªæ¹å¼FirstCheckï¼é¦æ£ï¼ PatroCheck(å·¡æ£) EndCheck(å®å·¥æ£) |
| | | const data = { |
| | | // 'MO-2023-05-0003_1;Step06' |
| | | orderstepqrcode, |
| | | checktype: 'FirstCheck', |
| | | // stu_torgcode: uni.getStorageSync('stu_torgcode') |
| | | } |
| | | // const res = await MesOrderStepCheckSearch(this.global.formatData(data)) |
| | | const res = await MesOrderStepCheckSearch(data) |
| | | |
| | | |
| | | if (res.code === '200') { |
| | | this.processObj = { |
| | | wo_code: res.data.labcont[0].wo_code, |
| | | partcode: res.data.labcont[0].partcode, |
| | | partname: res.data.labcont[0].partname, |
| | | partspec: res.data.labcont[0].partspec, |
| | | stepcode: res.data.labcont[0].stepcode, |
| | | stepname: res.data.labcont[0].stepname, |
| | | good_qty: res.data.labcont[0].good_qty, |
| | | checkstandcode: res.data.chekstand[0].checkstandcode, |
| | | checkstandname: res.data.chekstand[0].checkstandname, |
| | | sampmethod: res.data.chekstand[0].sampmethod, |
| | | sampscare: res.data.chekstand[0].sampmethod === 'FIXED' ? res.data.chekstand[0].sampscare : |
| | | Math.ceil(res.data.labcont[0].good_qty * res.data.chekstand[0].sampscare / 100) |
| | | } |
| | | |
| | | this.processObj.sampscare = this.processObj.sampscare <= this.processObj.good_qty ? this.processObj |
| | | .sampscare : this.processObj.good_qty |
| | | |
| | | |
| | | await this.getStepCheckItemList(this.processObj.checkstandcode) |
| | | |
| | | } else { |
| | | setTimeout(() => { |
| | | uni.navigateBack({ |
| | | delta: 1, //è¿å屿°ï¼1åä¸é¡µ |
| | | }) |
| | | }, 1000) |
| | | } |
| | | }, |
| | | |
| | | async getStepCheckItemList(checkstandcode) { |
| | | const data = { |
| | | checkstandcode |
| | | } |
| | | const res = await MesOrderStepCheckItemList(data) |
| | | |
| | | this.processArr = [] |
| | | |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | res.data.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i + 1, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: j.real_value, |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | |
| | | }, |
| | | |
| | | // æ ·æ¬æ°é弿¹åæ¶ |
| | | samplesChange(val) { |
| | | |
| | | console.log(val.value) |
| | | const t = this.processArr.filter(i => i.checkNumber === 1) |
| | | let len = this.processArr.length / t.length |
| | | |
| | | // ä»¶æ°åå°æ¶ |
| | | if (val.value < this.processArr.length / t.length) { |
| | | this.processArr.reverse() |
| | | const a = this.processArr.splice(0, t.length * (len - val.value)) |
| | | this.processArr.reverse() |
| | | if (this.checkNumber > val.value) { |
| | | this.checkNumber = val.value |
| | | } |
| | | } |
| | | |
| | | |
| | | // ä»¶æ°å夿¶ |
| | | if (val.value > this.processArr.length / t.length) { |
| | | |
| | | for (var i = val.value; i > len; i--) { |
| | | t.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: '', |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | this.processArr.sort((a, b) => a.checkNumber - b.checkNumber) |
| | | |
| | | } |
| | | |
| | | // console.log(this.processArr, 1) |
| | | // console.log(this.processArr.length, 1) |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // ä¸ä¸ä»¶ |
| | | preTo() { |
| | | if (this.checkNumber > 1) { |
| | | this.checkNumber-- |
| | | } |
| | | }, |
| | | |
| | | //ä¸ä¸ä»¶ |
| | | nextTo() { |
| | | if (this.checkNumber < this.processObj.sampscare) { |
| | | this.checkNumber++ |
| | | } |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // 宿µå¼è¾å
¥æ¶å¤±ç¦ç¶æ |
| | | realValueBlur(val, item) { |
| | | console.log(val === '', item) |
| | | |
| | | |
| | | if (val.value !== '') { |
| | | if (item.numberjudge === 'Y') { //妿éè¦è¿è¡æ°å¼å¤æ |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue === '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) === parseFloat(item.standvalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue !== '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue) && parseFloat(val) <= |
| | | parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue === '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) <= parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue !== '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | if (val === '') { |
| | | item.isPlain = '' |
| | | } |
| | | // this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | |
| | | // ä¸ä¸æ¥ |
| | | navigateTo() { |
| | | // 计ç®OKå¼ |
| | | let goodqty = 0; |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | let flag = this.processArr.filter(j => j.checkNumber === i + 1).every(j => j.isPlain) |
| | | if (flag) { |
| | | goodqty++ |
| | | } |
| | | } |
| | | |
| | | |
| | | uni.navigateTo({ |
| | | url: './sjjy2?processObj=' + JSON.stringify(this.processObj) + |
| | | '&processArr=' + JSON.stringify(this.processArr) + '&goodqty=' + goodqty |
| | | }); |
| | | |
| | | |
| | | }, |
| | | |
| | | // æ«ç |
| | | 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.getStepCheckSearch(res.result) |
| | | // that.scanContent = res.result; |
| | | // let flag = false |
| | | // that.processArr.forEach(item => { |
| | | // if (item.hbarcode === res.result) { |
| | | // flag = true |
| | | // } |
| | | // }) |
| | | // if (flag) { |
| | | // that.$u.toast('æ¤æ¡ç å·²æ«æï¼å·²å¨å表ä¸ï¼') |
| | | // } else { |
| | | // //å¤çæ«ç äºä»¶ |
| | | // // that.getStepCheckSearch(that.scanContent); |
| | | // } |
| | | }, |
| | | complete: function(res) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | fromSubmitData() { |
| | | this.processObj = {} |
| | | this.processArr = [] |
| | | this.checkNumber = 1 |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import url('@/style/global.css'); |
| | | |
| | | ::v-deep .uicon-arrow-left>span { |
| | | display: block; |
| | | } |
| | | |
| | | ::v-deep .u-input { |
| | | padding: 6rpx 18rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__minus { |
| | | height: 50rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__input { |
| | | height: 50rpx !important; |
| | | |
| | | } |
| | | |
| | | ::v-deep .u-number-box__plus { |
| | | height: 50rpx !important; |
| | | } |
| | | </style> |
| | |
| | | |
| | | |
| | | setTimeout(() => { |
| | | let prevPage = getCurrentPages()[getCurrentPages().length - 2]; // ä¸ä¸é¡µé¢å®ä¾ |
| | | prevPage.$vm.fromSubmitData() // è°ç¨ä¸ä¸é¡µ å®ä¹çæ¹æ³ |
| | | // let prevPage = getCurrentPages()[getCurrentPages().length - 2]; // ä¸ä¸é¡µé¢å®ä¾ |
| | | // prevPage.$vm.fromSubmitData() // è°ç¨ä¸ä¸é¡µ å®ä¹çæ¹æ³ |
| | | uni.navigateBack({ |
| | | delta: 1, //è¿å屿°ï¼1åä¸é¡µ |
| | | delta: 2, //è¿å屿°ï¼1åä¸é¡µ |
| | | }) |
| | | }, 1000) |
| | | |
| | |
| | | <view> |
| | | <page-nav title="å®å·¥æ£éª"></page-nav> |
| | | |
| | | <view v-if="processArr.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">æ«æå·¥åºä»»å¡ç </div> |
| | | </div> |
| | | </view> |
| | | |
| | | <view class="flex_center" style="margin: 20rpx;"> |
| | | |
| | | <view v-if="processArr.length!==0" class="mainContent" style="height: 1340rpx;overflow: auto"> |
| | | <view> |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style="height: 386rpx;overflow: auto;"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | å·¥åä¿¡æ¯ |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- #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 --> |
| | | |
| | | <view class="marginLeft20 marginRight20"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>åæ®ç¼å·ï¼</view> |
| | | <view>ç©æç¼ç ï¼</view> |
| | | <view>ç©æåç§°ï¼</view> |
| | | <view>ç©æè§æ ¼ï¼</view> |
| | | <view>å·¥åºç¼ç ï¼</view> |
| | | <view>å·¥åºåç§°ï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.wo_code}}</view> |
| | | <view>{{processObj.partcode}}</view> |
| | | <view>{{processObj.partname}}</view> |
| | | <view>{{processObj.partspec?processObj.partspec:'/'}}</view> |
| | | <view>{{processObj.stepcode}}</view> |
| | | <view>{{processObj.stepname}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- #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 --> |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | |
| | | <view class="head" style="height: 290rpx;overflow: auto;"> |
| | | <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"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>æ¹æ¡åç§°ï¼</view> |
| | | <view>æ½æ ·æ¹å¼ï¼</view> |
| | | <view>æ¥å·¥æ°éï¼</view> |
| | | <view>æ ·æ¬æ°éï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.checkstandname}}</view> |
| | | <view>{{processObj.sampmethod==='FIXED'?'åºæ¶æ½æ£':'æ¯ä¾æ½æ£'}}</view> |
| | | <view>{{processObj.good_qty}}</view> |
| | | |
| | | |
| | | <u-number-box inputWidth='50' v-model="processObj.sampscare" min='1' |
| | | :max='processObj.good_qty' class="contentFont" |
| | | @change="samplesChange"></u-number-box> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style=""> |
| | | <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="marginBottom20 marginTop10" |
| | | style="display: flex;justify-content: space-around;align-items: center;"> |
| | | <u-button type="primary" :disabled="checkNumber===1" @click="preTo" |
| | | style="width: 160rpx;height: 60rpx;" plain text="ä¸ä¸ä»¶"></u-button> |
| | | <view style="">{{checkNumber}}/{{processObj.sampscare}}</view> |
| | | <u-button type="primary" |
| | | :disabled="checkNumber===processObj.sampscare||processArr%processArr.filter(i=>i.isPlain!=='').length===0" |
| | | @click="nextTo" style="width: 160rpx;height: 60rpx; " plain text="ä¸ä¸ä»¶"></u-button> |
| | | </view> |
| | | |
| | | <u-gap height="6" style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | |
| | | <view class="marginLeft20 marginRight20 marginTop20" style="margin-bottom: 132rpx;"> |
| | | <view class="marginBottom20 flex_column" v-for="(item,index) in processArr" |
| | | v-if="item.checkNumber===checkNumber" :key="item.name+index+checkNumber"> |
| | | |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="titleFont">{{item.name}}</view> |
| | | |
| | | <view class="contentFont" v-if="item.numberjudge==='N'" |
| | | style="display: flex;width: 280rpx;"> |
| | | |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' @click="item.isPlain=false;$forceUpdate()" |
| | | text="ä¸åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="flex_column titleFont"> |
| | | <view v-if="item.standvalue">æ åå¼</view> |
| | | <view v-if="item.uppervalue">ä¸éå¼</view> |
| | | <view v-if="item.lowervalue">ä¸éå¼</view> |
| | | </view> |
| | | <view class="flex_column titleFont marginRight20"> |
| | | <view v-if="item.standvalue">{{item.standvalue}}</view> |
| | | <view v-if="item.uppervalue">{{item.uppervalue}}</view> |
| | | <view v-if="item.lowervalue">{{item.lowervalue}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="titleFont marginLeft20 marginRight20"> |
| | | <view v-if="item.stepcheckitem_desc">æè¿° {{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 marginTop10 marginBottom20"> |
| | | <view class="titleFont " style="display: flex;align-items: center;" |
| | | v-if="item.numberjudge==='Y'"> |
| | | <view class="titleFont marginRight20"> |
| | | 宿µå¼ |
| | | </view> |
| | | |
| | | <view class="inputClass " style="width:40%;"> |
| | | <u--input style="" :adjustPosition='false' placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.real_value" @change='val=>realValueBlur(val,item)'></u--input> |
| | | </view> |
| | | |
| | | <view style="display: flex;width: 280rpx;margin-left: 12rpx;"> |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" |
| | | :disabled="item.required==='Y'&&!item.real_value" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' |
| | | :disabled="item.required==='Y'&&!item.real_value" |
| | | @click="item.isPlain=false;$forceUpdate()" text="ä¸åæ ¼"></u-button> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <!-- <view class=" marginLeft20 marginRight20 marginTop10"> |
| | | <view class="titleFont"> æè¿°ï¼{{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | <view class=" marginLeft20 marginRight20 marginTop10 marginBottom20" |
| | | style="display: flex;align-items: center;"> |
| | | <view class="contentFont"> 夿³¨ï¼</view> |
| | | <view class="inputClass " style=""> |
| | | <u--input style="" placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.stepcheckitem_remark"></u--input> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <u-gap height="6" |
| | | v-if="(index+1)%processArr.map(i=>i.checkNumber===1).filter(i=>i).length!==0" |
| | | style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | <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 class="footer" v-if="processArr.length!==0"> |
| | | <u-button v-if="processArr.length!==0" type="primary" size='large' |
| | | :disabled="!(processArr.filter(i=>i.isPlain==='').length===0)" :hairline="true" @click="navigateTo" |
| | | text="ä¸ä¸æ¥"></u-button> |
| | | |
| | | <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)' --> |
| | | <scroll-view scroll-y :style="{height: 590 + 'px'}" @scrolltolower="loadMore"> |
| | | <u-collapse-item style="position: relative;" :title="item.ordercode" :name='item.ordercode' |
| | | v-if='item.children.length!==0' :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;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> |
| | | |
| | | |
| | | <!-- {{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> --> |
| | | <u-steps-item :title="it.code+'/'+it.name"></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> |
| | | |
| | | </u-steps> |
| | | <!-- </u--text> --> |
| | | |
| | | |
| | | </u-collapse-item> |
| | | </scroll-view> |
| | | </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> |
| | | |
| | | <u--input :placeholder="'请è¾å
¥'+placeholder2" style="border: 1rpx solid #eee;" :clearable='true' |
| | | v-model="order"></u--input> |
| | | |
| | | |
| | | <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> |
| | | |
| | | |
| | | <!-- <scan-code></scan-code> --> |
| | | |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <view @click="scan2"> |
| | | <drag-ball :x='300' :y="600"></drag-ball> |
| | | </view> |
| | | |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepCheckSearch, |
| | | MesOrderStepCheckItemList |
| | | ProductOrderSearch |
| | | } from '../../config/api.js'; |
| | | |
| | | 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: 'ç产工å' |
| | | }, |
| | | ], |
| | | |
| | | processObj: { |
| | | // wocode: '', |
| | | // partcode: '', |
| | | // partname: '', |
| | | // partspec: '', |
| | | // stepcode: '', |
| | | // stepname: '', |
| | | // checkstandcode: '', |
| | | // checkstandname: '', |
| | | // check_type: '', |
| | | // sampmethod: '', // FIXED(åºæ¶æ½æ£) SCARE(æ¯ä¾æ½æ£) |
| | | // sampscare: '', |
| | | // qualitystatus: '', |
| | | // good_qty: '', // æçæ¥å·¥æ°é |
| | | // sampleqty: '', |
| | | // goodqty: '', // åæ ¼æ°é |
| | | // ngqty: '', // ä¸è¯æ°é |
| | | }, //å·¥åºæ£éªå¯¹è±¡ |
| | | processArr: [], //å·¥åºæ£éªæ°ç» |
| | | 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), //å½ææ¥æ |
| | | |
| | | |
| | | checkNumber: 1, //æ£éªé¡¹ç®ä¸çæ£éªæ°é ç°å¨å¤äºç¬¬å 个 |
| | | |
| | | 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' |
| | | // }, |
| | | ], //å·²éä¸çäº§åæ ç¾ |
| | | order: '', //åå· |
| | | placeholder2: 'ç产订å' |
| | | |
| | | } |
| | | }, |
| | | // çå¬ä¸æå·æ°å¨ä½ï¼UniApp åççå½å¨æï¼ |
| | | onPullDownRefresh() { |
| | | let that = this |
| | | uni.startPullDownRefresh({ |
| | | success() { |
| | | that.getProductOrderSearch() |
| | | uni.showToast({ |
| | | title: "䏿巿°", |
| | | icon: 'none' |
| | | }) |
| | | }, |
| | | complete() { |
| | | uni.stopPullDownRefresh() |
| | | } |
| | | }) |
| | | }, |
| | | created() { |
| | | |
| | |
| | | mounted() { |
| | | this.init() |
| | | |
| | | // this.getStepCheckSearch('MO-2024-01-0004_2;101') |
| | | |
| | | this.getProductOrderSearch() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | gotoPage(p1, p2) { |
| | | let orderstep = null |
| | | |
| | | async getStepCheckSearch(orderstepqrcode) { |
| | | console.log('æ§è¡äº') |
| | | // æ£éªæ¹å¼FirstCheckï¼é¦æ£ï¼ PatroCheck(å·¡æ£) EndCheck(å®å·¥æ£) |
| | | const data = { |
| | | // 'MO-2023-05-0003_1;Step06' |
| | | orderstepqrcode, |
| | | checktype: 'EndCheck', |
| | | // stu_torgcode: uni.getStorageSync('stu_torgcode') |
| | | } |
| | | // const res = await MesOrderStepCheckSearch(this.global.formatData(data)) |
| | | const res = await MesOrderStepCheckSearch(data) |
| | | |
| | | |
| | | if (res.code === '200') { |
| | | this.processObj = { |
| | | wo_code: res.data.labcont[0].wo_code, |
| | | partcode: res.data.labcont[0].partcode, |
| | | partname: res.data.labcont[0].partname, |
| | | partspec: res.data.labcont[0].partspec, |
| | | stepcode: res.data.labcont[0].stepcode, |
| | | stepname: res.data.labcont[0].stepname, |
| | | good_qty: res.data.labcont[0].good_qty, |
| | | checkstandcode: res.data.chekstand[0].checkstandcode, |
| | | checkstandname: res.data.chekstand[0].checkstandname, |
| | | sampmethod: res.data.chekstand[0].sampmethod, |
| | | sampscare: res.data.chekstand[0].sampmethod === 'FIXED' ? res.data.chekstand[0].sampscare : |
| | | Math.ceil(res.data.labcont[0].good_qty * res.data.chekstand[0].sampscare / 100) |
| | | } |
| | | |
| | | this.processObj.sampscare = this.processObj.sampscare <= this.processObj.good_qty ? this.processObj |
| | | .sampscare : this.processObj.good_qty |
| | | |
| | | |
| | | await this.getStepCheckItemList(this.processObj.checkstandcode) |
| | | |
| | | } |
| | | }, |
| | | |
| | | async getStepCheckItemList(checkstandcode) { |
| | | const data = { |
| | | checkstandcode |
| | | } |
| | | const res = await MesOrderStepCheckItemList(data) |
| | | |
| | | this.processArr = [] |
| | | |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | res.data.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i + 1, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: j.real_value, |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | |
| | | }, |
| | | |
| | | // æ ·æ¬æ°é弿¹åæ¶ |
| | | samplesChange(val) { |
| | | |
| | | console.log(val.value) |
| | | const t = this.processArr.filter(i => i.checkNumber === 1) |
| | | let len = this.processArr.length / t.length |
| | | |
| | | // ä»¶æ°åå°æ¶ |
| | | if (val.value < this.processArr.length / t.length) { |
| | | this.processArr.reverse() |
| | | const a = this.processArr.splice(0, t.length * (len - val.value)) |
| | | this.processArr.reverse() |
| | | if (this.checkNumber > val.value) { |
| | | this.checkNumber = val.value |
| | | } |
| | | } |
| | | |
| | | |
| | | // ä»¶æ°å夿¶ |
| | | if (val.value > this.processArr.length / t.length) { |
| | | |
| | | for (var i = val.value; i > len; i--) { |
| | | t.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: '', |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | this.processArr.sort((a, b) => a.checkNumber - b.checkNumber) |
| | | |
| | | } |
| | | |
| | | // console.log(this.processArr, 1) |
| | | // console.log(this.processArr.length, 1) |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // ä¸ä¸ä»¶ |
| | | preTo() { |
| | | if (this.checkNumber > 1) { |
| | | this.checkNumber-- |
| | | } |
| | | }, |
| | | |
| | | //ä¸ä¸ä»¶ |
| | | nextTo() { |
| | | if (this.checkNumber < this.processObj.sampscare) { |
| | | this.checkNumber++ |
| | | } |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // 宿µå¼è¾å
¥æ¶å¤±ç¦ç¶æ |
| | | realValueBlur(val, item) { |
| | | console.log(val === '', item) |
| | | |
| | | |
| | | if (val.value !== '') { |
| | | if (item.numberjudge === 'Y') { //妿éè¦è¿è¡æ°å¼å¤æ |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue === '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) === parseFloat(item.standvalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue !== '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue) && parseFloat(val) <= |
| | | parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue === '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) <= parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue !== '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | if (val === '') { |
| | | item.isPlain = '' |
| | | } |
| | | // this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | |
| | | // ä¸ä¸æ¥ |
| | | navigateTo() { |
| | | // 计ç®OKå¼ |
| | | let goodqty = 0; |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | let flag = this.processArr.filter(j => j.checkNumber === i + 1).every(j => j.isPlain) |
| | | if (flag) { |
| | | goodqty++ |
| | | } |
| | | if (p1) { |
| | | orderstep = p1 + ';' + p2 |
| | | } else { |
| | | orderstep = '' |
| | | } |
| | | |
| | | |
| | | uni.navigateTo({ |
| | | url: './wgjy2?processObj=' + JSON.stringify(this.processObj) + |
| | | '&processArr=' + JSON.stringify(this.processArr) + '&goodqty=' + goodqty |
| | | }); |
| | | url: './wgjy1?orderstep=' + orderstep |
| | | }) |
| | | }, |
| | | |
| | | getCheckboxValue(val) { |
| | | this.tagArr = [] |
| | | val.forEach(i => { |
| | | this.tagArr.push({ |
| | | close: true, |
| | | name: i.split('/')[1].trim(), |
| | | code: i.split('/')[0].trim() |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | // æ¥å£è·å |
| | | async getProductOrderSearch() { |
| | | let ordertype = '' // SOï¼éå®è®¢å MOï¼ç产订å POï¼ç产工å |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥å·¥åä¿¡æ¯' |
| | | ordertype = 'PO' |
| | | break |
| | | case 'ç产订å': |
| | | // this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥ç产订åä¿¡æ¯' |
| | | ordertype = 'MO' |
| | | break |
| | | case 'éå®è®¢å': |
| | | // this.alertTitle = 'éå®è®¢åæ°éï¼å
±/个ï¼' |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥éå®è®¢åä¿¡æ¯' |
| | | ordertype = 'SO' |
| | | break |
| | | } |
| | | |
| | | |
| | | const data = { |
| | | ordertype, |
| | | partcode: this.tagArr.map(i => i.code).join(','), |
| | | ordercode: this.order, |
| | | Ratetime: '', |
| | | // Ratetime: this.calendarRange, |
| | | |
| | | } |
| | | const { |
| | | data: res |
| | | } = await ProductOrderSearch(data) |
| | | |
| | | this.collapseArr = res |
| | | this.collapseArrAll = res |
| | | this.alertTitle = this.alertTitle.split('/')[0] + this.collapseArr.length + this.alertTitle.split('/')[ |
| | | 1] |
| | | |
| | | }, |
| | | loadMore() { |
| | | |
| | | }, |
| | | |
| | | // æ«ç |
| | | //è¾å
¥æ¡å车确认äºä»¶ |
| | | confirmInputBoxValue(val) { |
| | | this.collapseArr = this.collapseArrAll.filter((p) => { |
| | | return p.ordercode.indexOf(val) !== -1 |
| | | }) |
| | | |
| | | |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | break |
| | | case 'ç产订å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | // this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | break |
| | | case 'éå®è®¢å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | // 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.getStepCheckSearch(res.result) |
| | | // that.scanContent = res.result; |
| | | // let flag = false |
| | | // that.processArr.forEach(item => { |
| | | // if (item.hbarcode === res.result) { |
| | | // flag = true |
| | | // } |
| | | // }) |
| | | // if (flag) { |
| | | // that.$u.toast('æ¤æ¡ç å·²æ«æï¼å·²å¨å表ä¸ï¼') |
| | | // } else { |
| | | // //å¤çæ«ç äºä»¶ |
| | | // // that.getStepCheckSearch(that.scanContent); |
| | | // } |
| | | that.scanContent = res.result; |
| | | |
| | | that.getCheckScanDeviceQrCodeData(that.scanContent); |
| | | }, |
| | | complete: function(res) { |
| | | |
| | |
| | | }); |
| | | }, |
| | | |
| | | fromSubmitData() { |
| | | this.processObj = {} |
| | | this.processArr = [] |
| | | this.checkNumber = 1 |
| | | } |
| | | 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) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | getCheckScanDeviceQrCodeData(code) { |
| | | this.inputBoxValue = code |
| | | this.confirmInputBoxValue(this.inputBoxValue) |
| | | }, |
| | | |
| | | |
| | | // å¼¹åºå±æ¶èµ· |
| | | popupClose() { |
| | | this.getProductOrderSearch() |
| | | 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 |
| | | } |
| | | |
| | | 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) |
| | | this.placeholder2 = val |
| | | }, |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | display: block; |
| | | } |
| | | |
| | | ::v-deep .u-input { |
| | | padding: 6rpx 18rpx !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-number-box__minus { |
| | | height: 50rpx !important; |
| | | ::v-deep .u-alert--info--light { |
| | | background-color: rgba(255, 255, 255, 0.7); |
| | | } |
| | | |
| | | ::v-deep .u-number-box__input { |
| | | height: 50rpx !important; |
| | | ::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-number-box__plus { |
| | | height: 50rpx !important; |
| | | ::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-if="processArr.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">æ«æå·¥åºä»»å¡ç </div> |
| | | </div> |
| | | </view> |
| | | |
| | | |
| | | <view v-if="processArr.length!==0" class="mainContent" style="height: 1340rpx;overflow: auto"> |
| | | <view> |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style="height: 386rpx;overflow: auto;"> |
| | | <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"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>åæ®ç¼å·ï¼</view> |
| | | <view>ç©æç¼ç ï¼</view> |
| | | <view>ç©æåç§°ï¼</view> |
| | | <view>ç©æè§æ ¼ï¼</view> |
| | | <view>å·¥åºç¼ç ï¼</view> |
| | | <view>å·¥åºåç§°ï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.wo_code}}</view> |
| | | <view>{{processObj.partcode}}</view> |
| | | <view>{{processObj.partname}}</view> |
| | | <view>{{processObj.partspec?processObj.partspec:'/'}}</view> |
| | | <view>{{processObj.stepcode}}</view> |
| | | <view>{{processObj.stepname}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | |
| | | <view class="head" style="height: 290rpx;overflow: auto;"> |
| | | <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"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>æ¹æ¡åç§°ï¼</view> |
| | | <view>æ½æ ·æ¹å¼ï¼</view> |
| | | <view>æ¥å·¥æ°éï¼</view> |
| | | <view>æ ·æ¬æ°éï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.checkstandname}}</view> |
| | | <view>{{processObj.sampmethod==='FIXED'?'åºæ¶æ½æ£':'æ¯ä¾æ½æ£'}}</view> |
| | | <view>{{processObj.good_qty}}</view> |
| | | |
| | | |
| | | <u-number-box inputWidth='50' v-model="processObj.sampscare" min='1' |
| | | :max='processObj.good_qty' class="contentFont" |
| | | @change="samplesChange"></u-number-box> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style=""> |
| | | <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="marginBottom20 marginTop10" |
| | | style="display: flex;justify-content: space-around;align-items: center;"> |
| | | <u-button type="primary" :disabled="checkNumber===1" @click="preTo" |
| | | style="width: 160rpx;height: 60rpx;" plain text="ä¸ä¸ä»¶"></u-button> |
| | | <view style="">{{checkNumber}}/{{processObj.sampscare}}</view> |
| | | <u-button type="primary" |
| | | :disabled="checkNumber===processObj.sampscare||processArr%processArr.filter(i=>i.isPlain!=='').length===0" |
| | | @click="nextTo" style="width: 160rpx;height: 60rpx; " plain text="ä¸ä¸ä»¶"></u-button> |
| | | </view> |
| | | |
| | | <u-gap height="6" style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | |
| | | <view class="marginLeft20 marginRight20 marginTop20" style="margin-bottom: 132rpx;"> |
| | | <view class="marginBottom20 flex_column" v-for="(item,index) in processArr" |
| | | v-if="item.checkNumber===checkNumber" :key="item.name+index+checkNumber"> |
| | | |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="titleFont">{{item.name}}</view> |
| | | |
| | | <view class="contentFont" v-if="item.numberjudge==='N'" |
| | | style="display: flex;width: 280rpx;"> |
| | | |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' @click="item.isPlain=false;$forceUpdate()" |
| | | text="ä¸åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="flex_column titleFont"> |
| | | <view v-if="item.standvalue">æ åå¼</view> |
| | | <view v-if="item.uppervalue">ä¸éå¼</view> |
| | | <view v-if="item.lowervalue">ä¸éå¼</view> |
| | | </view> |
| | | <view class="flex_column titleFont marginRight20"> |
| | | <view v-if="item.standvalue">{{item.standvalue}}</view> |
| | | <view v-if="item.uppervalue">{{item.uppervalue}}</view> |
| | | <view v-if="item.lowervalue">{{item.lowervalue}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="titleFont marginLeft20 marginRight20"> |
| | | <view v-if="item.stepcheckitem_desc">æè¿° {{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 marginTop10 marginBottom20"> |
| | | <view class="titleFont " style="display: flex;align-items: center;" |
| | | v-if="item.numberjudge==='Y'"> |
| | | <view class="titleFont marginRight20"> |
| | | 宿µå¼ |
| | | </view> |
| | | |
| | | <view class="inputClass " style="width:40%;"> |
| | | <u--input style="" :adjustPosition='false' placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.real_value" @change='val=>realValueBlur(val,item)'></u--input> |
| | | </view> |
| | | |
| | | <view style="display: flex;width: 280rpx;margin-left: 12rpx;"> |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" |
| | | :disabled="item.required==='Y'&&!item.real_value" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' |
| | | :disabled="item.required==='Y'&&!item.real_value" |
| | | @click="item.isPlain=false;$forceUpdate()" text="ä¸åæ ¼"></u-button> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <!-- <view class=" marginLeft20 marginRight20 marginTop10"> |
| | | <view class="titleFont"> æè¿°ï¼{{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | <view class=" marginLeft20 marginRight20 marginTop10 marginBottom20" |
| | | style="display: flex;align-items: center;"> |
| | | <view class="contentFont"> 夿³¨ï¼</view> |
| | | <view class="inputClass " style=""> |
| | | <u--input style="" placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.stepcheckitem_remark"></u--input> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <u-gap height="6" |
| | | v-if="(index+1)%processArr.map(i=>i.checkNumber===1).filter(i=>i).length!==0" |
| | | style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="footer" v-if="processArr.length!==0"> |
| | | <u-button v-if="processArr.length!==0" type="primary" size='large' |
| | | :disabled="!(processArr.filter(i=>i.isPlain==='').length===0)" :hairline="true" @click="navigateTo" |
| | | text="ä¸ä¸æ¥"></u-button> |
| | | </view> |
| | | |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepCheckSearch, |
| | | MesOrderStepCheckItemList |
| | | } from '../../config/api.js'; |
| | | |
| | | export default { |
| | | onLoad(option) { |
| | | this.getStepCheckSearch(option.orderstep) |
| | | }, |
| | | |
| | | onPullDownRefresh() { |
| | | setTimeout(() => { |
| | | this.init(() => { |
| | | uni.stopPullDownRefresh(); |
| | | }) |
| | | }, 1000); |
| | | }, |
| | | |
| | | data() { |
| | | return { |
| | | |
| | | processObj: { |
| | | // wocode: '', |
| | | // partcode: '', |
| | | // partname: '', |
| | | // partspec: '', |
| | | // stepcode: '', |
| | | // stepname: '', |
| | | // checkstandcode: '', |
| | | // checkstandname: '', |
| | | // check_type: '', |
| | | // sampmethod: '', // FIXED(åºæ¶æ½æ£) SCARE(æ¯ä¾æ½æ£) |
| | | // sampscare: '', |
| | | // qualitystatus: '', |
| | | // good_qty: '', // æçæ¥å·¥æ°é |
| | | // sampleqty: '', |
| | | // goodqty: '', // åæ ¼æ°é |
| | | // ngqty: '', // ä¸è¯æ°é |
| | | }, //å·¥åºæ£éªå¯¹è±¡ |
| | | processArr: [], //å·¥åºæ£éªæ°ç» |
| | | |
| | | |
| | | checkNumber: 1, //æ£éªé¡¹ç®ä¸çæ£éªæ°é ç°å¨å¤äºç¬¬å 个 |
| | | } |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | mounted() { |
| | | this.init() |
| | | |
| | | // this.getStepCheckSearch('MO-2024-01-0004_2;101') |
| | | |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | |
| | | async getStepCheckSearch(orderstepqrcode) { |
| | | console.log('æ§è¡äº') |
| | | // æ£éªæ¹å¼FirstCheckï¼é¦æ£ï¼ PatroCheck(å·¡æ£) EndCheck(å®å·¥æ£) |
| | | const data = { |
| | | // 'MO-2023-05-0003_1;Step06' |
| | | orderstepqrcode, |
| | | checktype: 'EndCheck', |
| | | // stu_torgcode: uni.getStorageSync('stu_torgcode') |
| | | } |
| | | // const res = await MesOrderStepCheckSearch(this.global.formatData(data)) |
| | | const res = await MesOrderStepCheckSearch(data) |
| | | |
| | | |
| | | if (res.code === '200') { |
| | | this.processObj = { |
| | | wo_code: res.data.labcont[0].wo_code, |
| | | partcode: res.data.labcont[0].partcode, |
| | | partname: res.data.labcont[0].partname, |
| | | partspec: res.data.labcont[0].partspec, |
| | | stepcode: res.data.labcont[0].stepcode, |
| | | stepname: res.data.labcont[0].stepname, |
| | | good_qty: res.data.labcont[0].good_qty, |
| | | checkstandcode: res.data.chekstand[0].checkstandcode, |
| | | checkstandname: res.data.chekstand[0].checkstandname, |
| | | sampmethod: res.data.chekstand[0].sampmethod, |
| | | sampscare: res.data.chekstand[0].sampmethod === 'FIXED' ? res.data.chekstand[0].sampscare : |
| | | Math.ceil(res.data.labcont[0].good_qty * res.data.chekstand[0].sampscare / 100) |
| | | } |
| | | |
| | | this.processObj.sampscare = this.processObj.sampscare <= this.processObj.good_qty ? this.processObj |
| | | .sampscare : this.processObj.good_qty |
| | | |
| | | |
| | | await this.getStepCheckItemList(this.processObj.checkstandcode) |
| | | |
| | | } else { |
| | | setTimeout(() => { |
| | | uni.navigateBack({ |
| | | delta: 1, //è¿å屿°ï¼1åä¸é¡µ |
| | | }) |
| | | }, 1000) |
| | | } |
| | | }, |
| | | |
| | | async getStepCheckItemList(checkstandcode) { |
| | | const data = { |
| | | checkstandcode |
| | | } |
| | | const res = await MesOrderStepCheckItemList(data) |
| | | |
| | | this.processArr = [] |
| | | |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | res.data.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i + 1, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: j.real_value, |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | |
| | | }, |
| | | |
| | | // æ ·æ¬æ°é弿¹åæ¶ |
| | | samplesChange(val) { |
| | | |
| | | console.log(val.value) |
| | | const t = this.processArr.filter(i => i.checkNumber === 1) |
| | | let len = this.processArr.length / t.length |
| | | |
| | | // ä»¶æ°åå°æ¶ |
| | | if (val.value < this.processArr.length / t.length) { |
| | | this.processArr.reverse() |
| | | const a = this.processArr.splice(0, t.length * (len - val.value)) |
| | | this.processArr.reverse() |
| | | if (this.checkNumber > val.value) { |
| | | this.checkNumber = val.value |
| | | } |
| | | } |
| | | |
| | | |
| | | // ä»¶æ°å夿¶ |
| | | if (val.value > this.processArr.length / t.length) { |
| | | |
| | | for (var i = val.value; i > len; i--) { |
| | | t.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: '', |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | this.processArr.sort((a, b) => a.checkNumber - b.checkNumber) |
| | | |
| | | } |
| | | |
| | | // console.log(this.processArr, 1) |
| | | // console.log(this.processArr.length, 1) |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // ä¸ä¸ä»¶ |
| | | preTo() { |
| | | if (this.checkNumber > 1) { |
| | | this.checkNumber-- |
| | | } |
| | | }, |
| | | |
| | | //ä¸ä¸ä»¶ |
| | | nextTo() { |
| | | if (this.checkNumber < this.processObj.sampscare) { |
| | | this.checkNumber++ |
| | | } |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // 宿µå¼è¾å
¥æ¶å¤±ç¦ç¶æ |
| | | realValueBlur(val, item) { |
| | | console.log(val === '', item) |
| | | |
| | | |
| | | if (val.value !== '') { |
| | | if (item.numberjudge === 'Y') { //妿éè¦è¿è¡æ°å¼å¤æ |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue === '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) === parseFloat(item.standvalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue !== '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue) && parseFloat(val) <= |
| | | parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue === '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) <= parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue !== '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | if (val === '') { |
| | | item.isPlain = '' |
| | | } |
| | | // this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | |
| | | // ä¸ä¸æ¥ |
| | | navigateTo() { |
| | | // 计ç®OKå¼ |
| | | let goodqty = 0; |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | let flag = this.processArr.filter(j => j.checkNumber === i + 1).every(j => j.isPlain) |
| | | if (flag) { |
| | | goodqty++ |
| | | } |
| | | } |
| | | |
| | | |
| | | uni.navigateTo({ |
| | | url: './wgjy2?processObj=' + JSON.stringify(this.processObj) + |
| | | '&processArr=' + JSON.stringify(this.processArr) + '&goodqty=' + goodqty |
| | | }); |
| | | |
| | | |
| | | }, |
| | | |
| | | // æ«ç |
| | | 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.getStepCheckSearch(res.result) |
| | | // that.scanContent = res.result; |
| | | // let flag = false |
| | | // that.processArr.forEach(item => { |
| | | // if (item.hbarcode === res.result) { |
| | | // flag = true |
| | | // } |
| | | // }) |
| | | // if (flag) { |
| | | // that.$u.toast('æ¤æ¡ç å·²æ«æï¼å·²å¨å表ä¸ï¼') |
| | | // } else { |
| | | // //å¤çæ«ç äºä»¶ |
| | | // // that.getStepCheckSearch(that.scanContent); |
| | | // } |
| | | }, |
| | | complete: function(res) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | fromSubmitData() { |
| | | this.processObj = {} |
| | | this.processArr = [] |
| | | this.checkNumber = 1 |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import url('@/style/global.css'); |
| | | |
| | | ::v-deep .uicon-arrow-left>span { |
| | | display: block; |
| | | } |
| | | |
| | | ::v-deep .u-input { |
| | | padding: 6rpx 18rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__minus { |
| | | height: 50rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__input { |
| | | height: 50rpx !important; |
| | | |
| | | } |
| | | |
| | | ::v-deep .u-number-box__plus { |
| | | height: 50rpx !important; |
| | | } |
| | | </style> |
| | |
| | | |
| | | |
| | | setTimeout(() => { |
| | | let prevPage = getCurrentPages()[getCurrentPages().length - 2]; // ä¸ä¸é¡µé¢å®ä¾ |
| | | prevPage.$vm.fromSubmitData() // è°ç¨ä¸ä¸é¡µ å®ä¹çæ¹æ³ |
| | | // let prevPage = getCurrentPages()[getCurrentPages().length - 2]; // ä¸ä¸é¡µé¢å®ä¾ |
| | | // prevPage.$vm.fromSubmitData() // è°ç¨ä¸ä¸é¡µ å®ä¹çæ¹æ³ |
| | | uni.navigateBack({ |
| | | delta: 1, //è¿å屿°ï¼1åä¸é¡µ |
| | | delta: 2, //è¿å屿°ï¼1åä¸é¡µ |
| | | }) |
| | | }, 1000) |
| | | |
| | |
| | | <view> |
| | | <page-nav title="å·¡æ£æ£éª"></page-nav> |
| | | |
| | | <view v-if="processArr.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">æ«æå·¥åºä»»å¡ç </div> |
| | | </div> |
| | | </view> |
| | | |
| | | <view class="flex_center" style="margin: 20rpx;"> |
| | | |
| | | <view v-if="processArr.length!==0" class="mainContent" style="height: 1340rpx;overflow: auto"> |
| | | <view> |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style="height: 386rpx;overflow: auto;"> |
| | | <view class="head_block"> |
| | | <view class="head_left"> |
| | | <view class="head_bar"></view> |
| | | <view class="head_title" style="font-weight: bolder;"> |
| | | å·¥åä¿¡æ¯ |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- #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 --> |
| | | |
| | | <view class="marginLeft20 marginRight20"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>åæ®ç¼å·ï¼</view> |
| | | <view>ç©æç¼ç ï¼</view> |
| | | <view>ç©æåç§°ï¼</view> |
| | | <view>ç©æè§æ ¼ï¼</view> |
| | | <view>å·¥åºç¼ç ï¼</view> |
| | | <view>å·¥åºåç§°ï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.wo_code}}</view> |
| | | <view>{{processObj.partcode}}</view> |
| | | <view>{{processObj.partname}}</view> |
| | | <view>{{processObj.partspec?processObj.partspec:'/'}}</view> |
| | | <view>{{processObj.stepcode}}</view> |
| | | <view>{{processObj.stepname}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- #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 --> |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | |
| | | <view class="head" style="height: 290rpx;overflow: auto;"> |
| | | <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"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>æ¹æ¡åç§°ï¼</view> |
| | | <view>æ½æ ·æ¹å¼ï¼</view> |
| | | <view>æ¥å·¥æ°éï¼</view> |
| | | <view>æ ·æ¬æ°éï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.checkstandname}}</view> |
| | | <view>{{processObj.sampmethod==='FIXED'?'åºæ¶æ½æ£':'æ¯ä¾æ½æ£'}}</view> |
| | | <view>{{processObj.good_qty}}</view> |
| | | |
| | | |
| | | <u-number-box inputWidth='50' v-model="processObj.sampscare" min='1' |
| | | :max='processObj.good_qty' class="contentFont" |
| | | @change="samplesChange"></u-number-box> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style=""> |
| | | <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="marginBottom20 marginTop10" |
| | | style="display: flex;justify-content: space-around;align-items: center;"> |
| | | <u-button type="primary" :disabled="checkNumber===1" @click="preTo" |
| | | style="width: 160rpx;height: 60rpx;" plain text="ä¸ä¸ä»¶"></u-button> |
| | | <view style="">{{checkNumber}}/{{processObj.sampscare}}</view> |
| | | <u-button type="primary" |
| | | :disabled="checkNumber===processObj.sampscare||processArr%processArr.filter(i=>i.isPlain!=='').length===0" |
| | | @click="nextTo" style="width: 160rpx;height: 60rpx; " plain text="ä¸ä¸ä»¶"></u-button> |
| | | </view> |
| | | |
| | | <u-gap height="6" style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | |
| | | <view class="marginLeft20 marginRight20 marginTop20" style="margin-bottom: 132rpx;"> |
| | | <view class="marginBottom20 flex_column" v-for="(item,index) in processArr" |
| | | v-if="item.checkNumber===checkNumber" :key="item.name+index+checkNumber"> |
| | | |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="titleFont">{{item.name}}</view> |
| | | |
| | | <view class="contentFont" v-if="item.numberjudge==='N'" |
| | | style="display: flex;width: 280rpx;"> |
| | | |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' @click="item.isPlain=false;$forceUpdate()" |
| | | text="ä¸åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="flex_column titleFont"> |
| | | <view v-if="item.standvalue">æ åå¼</view> |
| | | <view v-if="item.uppervalue">ä¸éå¼</view> |
| | | <view v-if="item.lowervalue">ä¸éå¼</view> |
| | | </view> |
| | | <view class="flex_column titleFont marginRight20"> |
| | | <view v-if="item.standvalue">{{item.standvalue}}</view> |
| | | <view v-if="item.uppervalue">{{item.uppervalue}}</view> |
| | | <view v-if="item.lowervalue">{{item.lowervalue}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="titleFont marginLeft20 marginRight20"> |
| | | <view v-if="item.stepcheckitem_desc">æè¿° {{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 marginTop10 marginBottom20"> |
| | | <view class="titleFont " style="display: flex;align-items: center;" |
| | | v-if="item.numberjudge==='Y'"> |
| | | <view class="titleFont marginRight20"> |
| | | 宿µå¼ |
| | | </view> |
| | | |
| | | <view class="inputClass " style="width:40%;"> |
| | | <u--input style="" :adjustPosition='false' placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.real_value" @change='val=>realValueBlur(val,item)'></u--input> |
| | | </view> |
| | | |
| | | <view style="display: flex;width: 280rpx;margin-left: 12rpx;"> |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" |
| | | :disabled="item.required==='Y'&&!item.real_value" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' |
| | | :disabled="item.required==='Y'&&!item.real_value" |
| | | @click="item.isPlain=false;$forceUpdate()" text="ä¸åæ ¼"></u-button> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <!-- <view class=" marginLeft20 marginRight20 marginTop10"> |
| | | <view class="titleFont"> æè¿°ï¼{{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | <view class=" marginLeft20 marginRight20 marginTop10 marginBottom20" |
| | | style="display: flex;align-items: center;"> |
| | | <view class="contentFont"> 夿³¨ï¼</view> |
| | | <view class="inputClass " style=""> |
| | | <u--input style="" placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.stepcheckitem_remark"></u--input> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <u-gap height="6" |
| | | v-if="(index+1)%processArr.map(i=>i.checkNumber===1).filter(i=>i).length!==0" |
| | | style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | <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 class="footer" v-if="processArr.length!==0"> |
| | | <u-button v-if="processArr.length!==0" type="primary" size='large' |
| | | :disabled="!(processArr.filter(i=>i.isPlain==='').length===0)" :hairline="true" @click="navigateTo" |
| | | text="ä¸ä¸æ¥"></u-button> |
| | | |
| | | <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)' --> |
| | | <scroll-view scroll-y :style="{height: 590 + 'px'}" @scrolltolower="loadMore"> |
| | | <u-collapse-item style="position: relative;" :title="item.ordercode" :name='item.ordercode' |
| | | v-if='item.children.length!==0' :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;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> |
| | | |
| | | |
| | | <!-- {{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> --> |
| | | <u-steps-item :title="it.code+'/'+it.name"></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> |
| | | |
| | | </u-steps> |
| | | <!-- </u--text> --> |
| | | |
| | | |
| | | </u-collapse-item> |
| | | </scroll-view> |
| | | </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> |
| | | |
| | | <u--input :placeholder="'请è¾å
¥'+placeholder2" style="border: 1rpx solid #eee;" :clearable='true' |
| | | v-model="order"></u--input> |
| | | |
| | | |
| | | <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> |
| | | |
| | | |
| | | <!-- <scan-code></scan-code> --> |
| | | |
| | | |
| | | <!-- æ¬æµ®ç --> |
| | | <view @click="scan2"> |
| | | <drag-ball :x='300' :y="600"></drag-ball> |
| | | </view> |
| | | |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepCheckSearch, |
| | | MesOrderStepCheckItemList |
| | | ProductOrderSearch |
| | | } from '../../config/api.js'; |
| | | |
| | | 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: 'ç产工å' |
| | | }, |
| | | ], |
| | | |
| | | processObj: { |
| | | // wocode: '', |
| | | // partcode: '', |
| | | // partname: '', |
| | | // partspec: '', |
| | | // stepcode: '', |
| | | // stepname: '', |
| | | // checkstandcode: '', |
| | | // checkstandname: '', |
| | | // check_type: '', |
| | | // sampmethod: '', // FIXED(åºæ¶æ½æ£) SCARE(æ¯ä¾æ½æ£) |
| | | // sampscare: '', |
| | | // qualitystatus: '', |
| | | // good_qty: '', // æçæ¥å·¥æ°é |
| | | // sampleqty: '', |
| | | // goodqty: '', // åæ ¼æ°é |
| | | // ngqty: '', // ä¸è¯æ°é |
| | | }, //å·¥åºæ£éªå¯¹è±¡ |
| | | processArr: [], //å·¥åºæ£éªæ°ç» |
| | | 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), //å½ææ¥æ |
| | | |
| | | |
| | | checkNumber: 1, //æ£éªé¡¹ç®ä¸çæ£éªæ°é ç°å¨å¤äºç¬¬å 个 |
| | | |
| | | 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' |
| | | // }, |
| | | ], //å·²éä¸çäº§åæ ç¾ |
| | | order: '', //åå· |
| | | placeholder2: 'ç产订å' |
| | | |
| | | } |
| | | }, |
| | | // çå¬ä¸æå·æ°å¨ä½ï¼UniApp åççå½å¨æï¼ |
| | | onPullDownRefresh() { |
| | | let that = this |
| | | uni.startPullDownRefresh({ |
| | | success() { |
| | | that.getProductOrderSearch() |
| | | uni.showToast({ |
| | | title: "䏿巿°", |
| | | icon: 'none' |
| | | }) |
| | | }, |
| | | complete() { |
| | | uni.stopPullDownRefresh() |
| | | } |
| | | }) |
| | | }, |
| | | created() { |
| | | |
| | |
| | | mounted() { |
| | | this.init() |
| | | |
| | | // this.getStepCheckSearch('MO-2024-01-0004_2;101') |
| | | |
| | | this.getProductOrderSearch() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | gotoPage(p1, p2) { |
| | | let orderstep = null |
| | | |
| | | async getStepCheckSearch(orderstepqrcode) { |
| | | console.log('æ§è¡äº') |
| | | // æ£éªæ¹å¼FirstCheckï¼é¦æ£ï¼ PatroCheck(å·¡æ£) EndCheck(å®å·¥æ£) |
| | | const data = { |
| | | // 'MO-2023-05-0003_1;Step06' |
| | | orderstepqrcode, |
| | | checktype: 'PatroCheck', |
| | | // stu_torgcode: uni.getStorageSync('stu_torgcode') |
| | | } |
| | | // const res = await MesOrderStepCheckSearch(this.global.formatData(data)) |
| | | const res = await MesOrderStepCheckSearch(data) |
| | | |
| | | |
| | | if (res.code === '200') { |
| | | this.processObj = { |
| | | wo_code: res.data.labcont[0].wo_code, |
| | | partcode: res.data.labcont[0].partcode, |
| | | partname: res.data.labcont[0].partname, |
| | | partspec: res.data.labcont[0].partspec, |
| | | stepcode: res.data.labcont[0].stepcode, |
| | | stepname: res.data.labcont[0].stepname, |
| | | good_qty: res.data.labcont[0].good_qty, |
| | | checkstandcode: res.data.chekstand[0].checkstandcode, |
| | | checkstandname: res.data.chekstand[0].checkstandname, |
| | | sampmethod: res.data.chekstand[0].sampmethod, |
| | | sampscare: res.data.chekstand[0].sampmethod === 'FIXED' ? res.data.chekstand[0].sampscare : |
| | | Math.ceil(res.data.labcont[0].good_qty * res.data.chekstand[0].sampscare / 100) |
| | | } |
| | | |
| | | this.processObj.sampscare = this.processObj.sampscare <= this.processObj.good_qty ? this.processObj |
| | | .sampscare : this.processObj.good_qty |
| | | |
| | | |
| | | await this.getStepCheckItemList(this.processObj.checkstandcode) |
| | | |
| | | } |
| | | }, |
| | | |
| | | async getStepCheckItemList(checkstandcode) { |
| | | const data = { |
| | | checkstandcode |
| | | } |
| | | const res = await MesOrderStepCheckItemList(data) |
| | | |
| | | this.processArr = [] |
| | | |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | res.data.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i + 1, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: j.real_value, |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | |
| | | }, |
| | | |
| | | // æ ·æ¬æ°é弿¹åæ¶ |
| | | samplesChange(val) { |
| | | |
| | | console.log(val.value) |
| | | const t = this.processArr.filter(i => i.checkNumber === 1) |
| | | let len = this.processArr.length / t.length |
| | | |
| | | // ä»¶æ°åå°æ¶ |
| | | if (val.value < this.processArr.length / t.length) { |
| | | this.processArr.reverse() |
| | | const a = this.processArr.splice(0, t.length * (len - val.value)) |
| | | this.processArr.reverse() |
| | | if (this.checkNumber > val.value) { |
| | | this.checkNumber = val.value |
| | | } |
| | | } |
| | | |
| | | |
| | | // ä»¶æ°å夿¶ |
| | | if (val.value > this.processArr.length / t.length) { |
| | | |
| | | for (var i = val.value; i > len; i--) { |
| | | t.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: '', |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | this.processArr.sort((a, b) => a.checkNumber - b.checkNumber) |
| | | |
| | | } |
| | | |
| | | // console.log(this.processArr, 1) |
| | | // console.log(this.processArr.length, 1) |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // ä¸ä¸ä»¶ |
| | | preTo() { |
| | | if (this.checkNumber > 1) { |
| | | this.checkNumber-- |
| | | } |
| | | }, |
| | | |
| | | //ä¸ä¸ä»¶ |
| | | nextTo() { |
| | | if (this.checkNumber < this.processObj.sampscare) { |
| | | this.checkNumber++ |
| | | } |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // 宿µå¼è¾å
¥æ¶å¤±ç¦ç¶æ |
| | | realValueBlur(val, item) { |
| | | console.log(val === '', item) |
| | | |
| | | |
| | | if (val.value !== '') { |
| | | if (item.numberjudge === 'Y') { //妿éè¦è¿è¡æ°å¼å¤æ |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue === '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) === parseFloat(item.standvalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue !== '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue) && parseFloat(val) <= |
| | | parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue === '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) <= parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue !== '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | if (val === '') { |
| | | item.isPlain = '' |
| | | } |
| | | // this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | |
| | | // ä¸ä¸æ¥ |
| | | navigateTo() { |
| | | // 计ç®OKå¼ |
| | | let goodqty = 0; |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | let flag = this.processArr.filter(j => j.checkNumber === i + 1).every(j => j.isPlain) |
| | | if (flag) { |
| | | goodqty++ |
| | | } |
| | | if (p1) { |
| | | orderstep = p1 + ';' + p2 |
| | | } else { |
| | | orderstep = '' |
| | | } |
| | | |
| | | |
| | | uni.navigateTo({ |
| | | url: './xjjy2?processObj=' + JSON.stringify(this.processObj) + |
| | | '&processArr=' + JSON.stringify(this.processArr) + '&goodqty=' + goodqty |
| | | }); |
| | | url: './xjjy1?orderstep=' + orderstep |
| | | }) |
| | | }, |
| | | |
| | | getCheckboxValue(val) { |
| | | this.tagArr = [] |
| | | val.forEach(i => { |
| | | this.tagArr.push({ |
| | | close: true, |
| | | name: i.split('/')[1].trim(), |
| | | code: i.split('/')[0].trim() |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | // æ¥å£è·å |
| | | async getProductOrderSearch() { |
| | | let ordertype = '' // SOï¼éå®è®¢å MOï¼ç产订å POï¼ç产工å |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥å·¥åä¿¡æ¯' |
| | | ordertype = 'PO' |
| | | break |
| | | case 'ç产订å': |
| | | // this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥ç产订åä¿¡æ¯' |
| | | ordertype = 'MO' |
| | | break |
| | | case 'éå®è®¢å': |
| | | // this.alertTitle = 'éå®è®¢åæ°éï¼å
±/个ï¼' |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | this.placeholder = '请è¾å
¥éå®è®¢åä¿¡æ¯' |
| | | ordertype = 'SO' |
| | | break |
| | | } |
| | | |
| | | |
| | | const data = { |
| | | ordertype, |
| | | partcode: this.tagArr.map(i => i.code).join(','), |
| | | ordercode: this.order, |
| | | Ratetime: '', |
| | | // Ratetime: this.calendarRange, |
| | | |
| | | } |
| | | const { |
| | | data: res |
| | | } = await ProductOrderSearch(data) |
| | | |
| | | this.collapseArr = res |
| | | this.collapseArrAll = res |
| | | this.alertTitle = this.alertTitle.split('/')[0] + this.collapseArr.length + this.alertTitle.split('/')[ |
| | | 1] |
| | | |
| | | }, |
| | | loadMore() { |
| | | |
| | | }, |
| | | |
| | | // æ«ç |
| | | //è¾å
¥æ¡å车确认äºä»¶ |
| | | confirmInputBoxValue(val) { |
| | | this.collapseArr = this.collapseArrAll.filter((p) => { |
| | | return p.ordercode.indexOf(val) !== -1 |
| | | }) |
| | | |
| | | |
| | | switch (this.radiovalue) { |
| | | case 'ç产工å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | break |
| | | case 'ç产订å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | // this.alertTitle = 'çäº§è®¢åæ°éï¼å
±/个ï¼' |
| | | break |
| | | case 'éå®è®¢å': |
| | | this.alertTitle = '工忰éï¼å
±/个ï¼' |
| | | // 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.getStepCheckSearch(res.result) |
| | | // that.scanContent = res.result; |
| | | // let flag = false |
| | | // that.processArr.forEach(item => { |
| | | // if (item.hbarcode === res.result) { |
| | | // flag = true |
| | | // } |
| | | // }) |
| | | // if (flag) { |
| | | // that.$u.toast('æ¤æ¡ç å·²æ«æï¼å·²å¨å表ä¸ï¼') |
| | | // } else { |
| | | // //å¤çæ«ç äºä»¶ |
| | | // // that.getStepCheckSearch(that.scanContent); |
| | | // } |
| | | that.scanContent = res.result; |
| | | |
| | | that.getCheckScanDeviceQrCodeData(that.scanContent); |
| | | }, |
| | | complete: function(res) { |
| | | |
| | |
| | | }); |
| | | }, |
| | | |
| | | fromSubmitData() { |
| | | this.processObj = {} |
| | | this.processArr = [] |
| | | this.checkNumber = 1 |
| | | } |
| | | 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) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | getCheckScanDeviceQrCodeData(code) { |
| | | this.inputBoxValue = code |
| | | this.confirmInputBoxValue(this.inputBoxValue) |
| | | }, |
| | | |
| | | |
| | | // å¼¹åºå±æ¶èµ· |
| | | popupClose() { |
| | | this.getProductOrderSearch() |
| | | 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 |
| | | } |
| | | |
| | | 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) |
| | | this.placeholder2 = val |
| | | }, |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | display: block; |
| | | } |
| | | |
| | | ::v-deep .u-input { |
| | | padding: 6rpx 18rpx !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-number-box__minus { |
| | | height: 50rpx !important; |
| | | ::v-deep .u-alert--info--light { |
| | | background-color: rgba(255, 255, 255, 0.7); |
| | | } |
| | | |
| | | ::v-deep .u-number-box__input { |
| | | height: 50rpx !important; |
| | | ::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-number-box__plus { |
| | | height: 50rpx !important; |
| | | ::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-if="processArr.length===0"> |
| | | <div class="sacnBody"> |
| | | <div class="scanImg" @click="topScanClick"></div> |
| | | <div class="scanText">æ«æå·¥åºä»»å¡ç </div> |
| | | </div> |
| | | </view> |
| | | |
| | | |
| | | <view v-if="processArr.length!==0" class="mainContent" style="height: 1340rpx;overflow: auto"> |
| | | <view> |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style="height: 386rpx;overflow: auto;"> |
| | | <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"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>åæ®ç¼å·ï¼</view> |
| | | <view>ç©æç¼ç ï¼</view> |
| | | <view>ç©æåç§°ï¼</view> |
| | | <view>ç©æè§æ ¼ï¼</view> |
| | | <view>å·¥åºç¼ç ï¼</view> |
| | | <view>å·¥åºåç§°ï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.wo_code}}</view> |
| | | <view>{{processObj.partcode}}</view> |
| | | <view>{{processObj.partname}}</view> |
| | | <view>{{processObj.partspec?processObj.partspec:'/'}}</view> |
| | | <view>{{processObj.stepcode}}</view> |
| | | <view>{{processObj.stepname}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | |
| | | <view class="head" style="height: 290rpx;overflow: auto;"> |
| | | <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"> |
| | | <view class="marginBottom20" style="display: flex;"> |
| | | <view class="flex_column titleFont"> |
| | | <view>æ¹æ¡åç§°ï¼</view> |
| | | <view>æ½æ ·æ¹å¼ï¼</view> |
| | | <view>æ¥å·¥æ°éï¼</view> |
| | | <view>æ ·æ¬æ°éï¼</view> |
| | | </view> |
| | | <view class="flex_column contentFont"> |
| | | <view>{{processObj.checkstandname}}</view> |
| | | <view>{{processObj.sampmethod==='FIXED'?'åºæ¶æ½æ£':'æ¯ä¾æ½æ£'}}</view> |
| | | <view>{{processObj.good_qty}}</view> |
| | | |
| | | |
| | | <u-number-box inputWidth='50' v-model="processObj.sampscare" min='1' |
| | | :max='processObj.good_qty' class="contentFont" |
| | | @change="samplesChange"></u-number-box> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <u-gap height="10" bgColor="#eff0f1"></u-gap> |
| | | <view class="head" style=""> |
| | | <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="marginBottom20 marginTop10" |
| | | style="display: flex;justify-content: space-around;align-items: center;"> |
| | | <u-button type="primary" :disabled="checkNumber===1" @click="preTo" |
| | | style="width: 160rpx;height: 60rpx;" plain text="ä¸ä¸ä»¶"></u-button> |
| | | <view style="">{{checkNumber}}/{{processObj.sampscare}}</view> |
| | | <u-button type="primary" |
| | | :disabled="checkNumber===processObj.sampscare||processArr%processArr.filter(i=>i.isPlain!=='').length===0" |
| | | @click="nextTo" style="width: 160rpx;height: 60rpx; " plain text="ä¸ä¸ä»¶"></u-button> |
| | | </view> |
| | | |
| | | <u-gap height="6" style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | |
| | | <view class="marginLeft20 marginRight20 marginTop20" style="margin-bottom: 132rpx;"> |
| | | <view class="marginBottom20 flex_column" v-for="(item,index) in processArr" |
| | | v-if="item.checkNumber===checkNumber" :key="item.name+index+checkNumber"> |
| | | |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="titleFont">{{item.name}}</view> |
| | | |
| | | <view class="contentFont" v-if="item.numberjudge==='N'" |
| | | style="display: flex;width: 280rpx;"> |
| | | |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' @click="item.isPlain=false;$forceUpdate()" |
| | | text="ä¸åæ ¼"></u-button> |
| | | <!-- :disabled="item.required==='Y'&&!item.real_value" --> |
| | | |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 "> |
| | | <view class="flex_column titleFont"> |
| | | <view v-if="item.standvalue">æ åå¼</view> |
| | | <view v-if="item.uppervalue">ä¸éå¼</view> |
| | | <view v-if="item.lowervalue">ä¸éå¼</view> |
| | | </view> |
| | | <view class="flex_column titleFont marginRight20"> |
| | | <view v-if="item.standvalue">{{item.standvalue}}</view> |
| | | <view v-if="item.uppervalue">{{item.uppervalue}}</view> |
| | | <view v-if="item.lowervalue">{{item.lowervalue}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="titleFont marginLeft20 marginRight20"> |
| | | <view v-if="item.stepcheckitem_desc">æè¿° {{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | |
| | | <view class="flex_between marginLeft20 marginTop10 marginBottom20"> |
| | | <view class="titleFont " style="display: flex;align-items: center;" |
| | | v-if="item.numberjudge==='Y'"> |
| | | <view class="titleFont marginRight20"> |
| | | 宿µå¼ |
| | | </view> |
| | | |
| | | <view class="inputClass " style="width:40%;"> |
| | | <u--input style="" :adjustPosition='false' placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.real_value" @change='val=>realValueBlur(val,item)'></u--input> |
| | | </view> |
| | | |
| | | <view style="display: flex;width: 280rpx;margin-left: 12rpx;"> |
| | | <u-button type="success" style="width: 130rpx;margin-left: 10%;height: 56rpx;" |
| | | shape="circle" @click="item.isPlain=true;$forceUpdate()" |
| | | :disabled="item.required==='Y'&&!item.real_value" :plain='!item.isPlain' |
| | | text="åæ ¼"></u-button> |
| | | |
| | | |
| | | <u-button type="warning" style="width: 130rpx;margin-left: 4%;height: 56rpx;" |
| | | shape="circle" :plain='item.isPlain' |
| | | :disabled="item.required==='Y'&&!item.real_value" |
| | | @click="item.isPlain=false;$forceUpdate()" text="ä¸åæ ¼"></u-button> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <!-- <view class=" marginLeft20 marginRight20 marginTop10"> |
| | | <view class="titleFont"> æè¿°ï¼{{item.stepcheckitem_desc}}</view> |
| | | </view> |
| | | <view class=" marginLeft20 marginRight20 marginTop10 marginBottom20" |
| | | style="display: flex;align-items: center;"> |
| | | <view class="contentFont"> 夿³¨ï¼</view> |
| | | <view class="inputClass " style=""> |
| | | <u--input style="" placeholder="请è¾å
¥" border="surround" |
| | | v-model="item.stepcheckitem_remark"></u--input> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <u-gap height="6" |
| | | v-if="(index+1)%processArr.map(i=>i.checkNumber===1).filter(i=>i).length!==0" |
| | | style="width: 96%;margin-left: 2%;" bgColor="#eff0f1"></u-gap> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="footer" v-if="processArr.length!==0"> |
| | | <u-button v-if="processArr.length!==0" type="primary" size='large' |
| | | :disabled="!(processArr.filter(i=>i.isPlain==='').length===0)" :hairline="true" @click="navigateTo" |
| | | text="ä¸ä¸æ¥"></u-button> |
| | | </view> |
| | | |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | MesOrderStepCheckSearch, |
| | | MesOrderStepCheckItemList |
| | | } from '../../config/api.js'; |
| | | |
| | | export default { |
| | | onLoad(option) { |
| | | this.getStepCheckSearch(option.orderstep) |
| | | }, |
| | | |
| | | onPullDownRefresh() { |
| | | setTimeout(() => { |
| | | this.init(() => { |
| | | uni.stopPullDownRefresh(); |
| | | }) |
| | | }, 1000); |
| | | }, |
| | | |
| | | data() { |
| | | return { |
| | | |
| | | processObj: { |
| | | // wocode: '', |
| | | // partcode: '', |
| | | // partname: '', |
| | | // partspec: '', |
| | | // stepcode: '', |
| | | // stepname: '', |
| | | // checkstandcode: '', |
| | | // checkstandname: '', |
| | | // check_type: '', |
| | | // sampmethod: '', // FIXED(åºæ¶æ½æ£) SCARE(æ¯ä¾æ½æ£) |
| | | // sampscare: '', |
| | | // qualitystatus: '', |
| | | // good_qty: '', // æçæ¥å·¥æ°é |
| | | // sampleqty: '', |
| | | // goodqty: '', // åæ ¼æ°é |
| | | // ngqty: '', // ä¸è¯æ°é |
| | | }, //å·¥åºæ£éªå¯¹è±¡ |
| | | processArr: [], //å·¥åºæ£éªæ°ç» |
| | | |
| | | |
| | | checkNumber: 1, //æ£éªé¡¹ç®ä¸çæ£éªæ°é ç°å¨å¤äºç¬¬å 个 |
| | | } |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | mounted() { |
| | | this.init() |
| | | |
| | | // this.getStepCheckSearch('MO-2024-01-0004_2;101') |
| | | |
| | | }, |
| | | methods: { |
| | | init() { |
| | | uni.stopPullDownRefresh(); |
| | | }, |
| | | |
| | | async getStepCheckSearch(orderstepqrcode) { |
| | | console.log('æ§è¡äº') |
| | | // æ£éªæ¹å¼FirstCheckï¼é¦æ£ï¼ PatroCheck(å·¡æ£) EndCheck(å®å·¥æ£) |
| | | const data = { |
| | | // 'MO-2023-05-0003_1;Step06' |
| | | orderstepqrcode, |
| | | checktype: 'PatroCheck', |
| | | // stu_torgcode: uni.getStorageSync('stu_torgcode') |
| | | } |
| | | // const res = await MesOrderStepCheckSearch(this.global.formatData(data)) |
| | | const res = await MesOrderStepCheckSearch(data) |
| | | |
| | | |
| | | if (res.code === '200') { |
| | | this.processObj = { |
| | | wo_code: res.data.labcont[0].wo_code, |
| | | partcode: res.data.labcont[0].partcode, |
| | | partname: res.data.labcont[0].partname, |
| | | partspec: res.data.labcont[0].partspec, |
| | | stepcode: res.data.labcont[0].stepcode, |
| | | stepname: res.data.labcont[0].stepname, |
| | | good_qty: res.data.labcont[0].good_qty, |
| | | checkstandcode: res.data.chekstand[0].checkstandcode, |
| | | checkstandname: res.data.chekstand[0].checkstandname, |
| | | sampmethod: res.data.chekstand[0].sampmethod, |
| | | sampscare: res.data.chekstand[0].sampmethod === 'FIXED' ? res.data.chekstand[0].sampscare : |
| | | Math.ceil(res.data.labcont[0].good_qty * res.data.chekstand[0].sampscare / 100) |
| | | } |
| | | |
| | | this.processObj.sampscare = this.processObj.sampscare <= this.processObj.good_qty ? this.processObj |
| | | .sampscare : this.processObj.good_qty |
| | | |
| | | |
| | | await this.getStepCheckItemList(this.processObj.checkstandcode) |
| | | |
| | | } else { |
| | | setTimeout(() => { |
| | | uni.navigateBack({ |
| | | delta: 1, //è¿å屿°ï¼1åä¸é¡µ |
| | | }) |
| | | }, 1000) |
| | | } |
| | | }, |
| | | |
| | | async getStepCheckItemList(checkstandcode) { |
| | | const data = { |
| | | checkstandcode |
| | | } |
| | | const res = await MesOrderStepCheckItemList(data) |
| | | |
| | | this.processArr = [] |
| | | |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | res.data.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i + 1, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: j.real_value, |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | |
| | | }, |
| | | |
| | | // æ ·æ¬æ°é弿¹åæ¶ |
| | | samplesChange(val) { |
| | | |
| | | console.log(val.value) |
| | | const t = this.processArr.filter(i => i.checkNumber === 1) |
| | | let len = this.processArr.length / t.length |
| | | |
| | | // ä»¶æ°åå°æ¶ |
| | | if (val.value < this.processArr.length / t.length) { |
| | | this.processArr.reverse() |
| | | const a = this.processArr.splice(0, t.length * (len - val.value)) |
| | | this.processArr.reverse() |
| | | if (this.checkNumber > val.value) { |
| | | this.checkNumber = val.value |
| | | } |
| | | } |
| | | |
| | | |
| | | // ä»¶æ°å夿¶ |
| | | if (val.value > this.processArr.length / t.length) { |
| | | |
| | | for (var i = val.value; i > len; i--) { |
| | | t.forEach(j => { |
| | | this.processArr.push({ |
| | | checkNumber: i, |
| | | stepcheckitem_seq: j.stepcheckitem_seq, |
| | | name: j.name, |
| | | code: j.code, |
| | | standvalue: j.standvalue, |
| | | lowervalue: j.lowervalue, |
| | | uppervalue: j.uppervalue, |
| | | real_value: '', |
| | | unit: j.unit, |
| | | stepcheckitem_desc: j.stepcheckitem_desc, |
| | | stepcheckitem_remark: '', |
| | | isPlain: '', |
| | | required: j.required, //æ¯å¦å¿
å¡« |
| | | numberjudge: j.numberjudge, //æ°å¼å¤æ |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | this.processArr.sort((a, b) => a.checkNumber - b.checkNumber) |
| | | |
| | | } |
| | | |
| | | // console.log(this.processArr, 1) |
| | | // console.log(this.processArr.length, 1) |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // ä¸ä¸ä»¶ |
| | | preTo() { |
| | | if (this.checkNumber > 1) { |
| | | this.checkNumber-- |
| | | } |
| | | }, |
| | | |
| | | //ä¸ä¸ä»¶ |
| | | nextTo() { |
| | | if (this.checkNumber < this.processObj.sampscare) { |
| | | this.checkNumber++ |
| | | } |
| | | this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | // 宿µå¼è¾å
¥æ¶å¤±ç¦ç¶æ |
| | | realValueBlur(val, item) { |
| | | console.log(val === '', item) |
| | | |
| | | |
| | | if (val.value !== '') { |
| | | if (item.numberjudge === 'Y') { //妿éè¦è¿è¡æ°å¼å¤æ |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue === '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) === parseFloat(item.standvalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue !== '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue) && parseFloat(val) <= |
| | | parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | |
| | | if (item.uppervalue !== '' && item.lowervalue === '') { //ä¸éå¼ä¸ä¸ºç©ºï¼ä¸éå¼ä¸ºç©º |
| | | if (parseFloat(val) <= parseFloat(item.uppervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | if (item.uppervalue === '' && item.lowervalue !== '') { //ä¸éå¼ä¸ºç©ºï¼ä¸éå¼ä¸ä¸ºç©º |
| | | if (parseFloat(val) >= parseFloat(item.lowervalue)) { |
| | | item.isPlain = true |
| | | } else { |
| | | item.isPlain = false |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | if (val === '') { |
| | | item.isPlain = '' |
| | | } |
| | | // this.$forceUpdate() |
| | | }, |
| | | |
| | | |
| | | |
| | | // ä¸ä¸æ¥ |
| | | navigateTo() { |
| | | // 计ç®OKå¼ |
| | | let goodqty = 0; |
| | | for (var i = 0; i < this.processObj.sampscare; i++) { |
| | | let flag = this.processArr.filter(j => j.checkNumber === i + 1).every(j => j.isPlain) |
| | | if (flag) { |
| | | goodqty++ |
| | | } |
| | | } |
| | | |
| | | |
| | | uni.navigateTo({ |
| | | url: './xjjy2?processObj=' + JSON.stringify(this.processObj) + |
| | | '&processArr=' + JSON.stringify(this.processArr) + '&goodqty=' + goodqty |
| | | }); |
| | | |
| | | |
| | | }, |
| | | |
| | | // æ«ç |
| | | 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.getStepCheckSearch(res.result) |
| | | // that.scanContent = res.result; |
| | | // let flag = false |
| | | // that.processArr.forEach(item => { |
| | | // if (item.hbarcode === res.result) { |
| | | // flag = true |
| | | // } |
| | | // }) |
| | | // if (flag) { |
| | | // that.$u.toast('æ¤æ¡ç å·²æ«æï¼å·²å¨å表ä¸ï¼') |
| | | // } else { |
| | | // //å¤çæ«ç äºä»¶ |
| | | // // that.getStepCheckSearch(that.scanContent); |
| | | // } |
| | | }, |
| | | complete: function(res) { |
| | | |
| | | }, |
| | | fail: function(res) { |
| | | console.log('æ¡ç ç±»åï¼' + res.scanType); |
| | | console.log('æ¡ç å
容ï¼' + res.result); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | |
| | | fromSubmitData() { |
| | | this.processObj = {} |
| | | this.processArr = [] |
| | | this.checkNumber = 1 |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import url('@/style/global.css'); |
| | | |
| | | ::v-deep .uicon-arrow-left>span { |
| | | display: block; |
| | | } |
| | | |
| | | ::v-deep .u-input { |
| | | padding: 6rpx 18rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__minus { |
| | | height: 50rpx !important; |
| | | } |
| | | |
| | | ::v-deep .u-number-box__input { |
| | | height: 50rpx !important; |
| | | |
| | | } |
| | | |
| | | ::v-deep .u-number-box__plus { |
| | | height: 50rpx !important; |
| | | } |
| | | </style> |
| | |
| | | |
| | | |
| | | setTimeout(() => { |
| | | let prevPage = getCurrentPages()[getCurrentPages().length - 2]; // ä¸ä¸é¡µé¢å®ä¾ |
| | | prevPage.$vm.fromSubmitData() // è°ç¨ä¸ä¸é¡µ å®ä¹çæ¹æ³ |
| | | // let prevPage = getCurrentPages()[getCurrentPages().length - 2]; // ä¸ä¸é¡µé¢å®ä¾ |
| | | // prevPage.$vm.fromSubmitData() // è°ç¨ä¸ä¸é¡µ å®ä¹çæ¹æ³ |
| | | uni.navigateBack({ |
| | | delta: 1, //è¿å屿°ï¼1åä¸é¡µ |
| | | delta: 2, //è¿å屿°ï¼1åä¸é¡µ |
| | | }) |
| | | }, 1000) |
| | | |
| | |
| | | |
| | | <script> |
| | | import { |
| | | InventoryTreePermissions |
| | | DistrInventory |
| | | } from '../../config/api.js'; |
| | | export default { |
| | | onLoad(option) { |
| | | App.watch(this.getTopRightMessageCountIsChange, 'topRightMessageCountIsChange') |
| | | |
| | | console.log(option, 66) |
| | | |
| | | this.checkboxValue = JSON.parse(option.param) |
| | | |
| | | console.log(this.checkboxValue) |
| | | }, |
| | | |
| | | onPullDownRefresh() { |
| | |
| | | mounted() { |
| | | this.init() |
| | | |
| | | this.getInventoryTreePermissions() |
| | | this.getDistrInventory() |
| | | }, |
| | | methods: { |
| | | init() { |
| | |
| | | //è¾å
¥æ¡å车确认äºä»¶ |
| | | confirmInputBoxValue(val) { |
| | | console.log('确认', val) |
| | | // this.getInventoryTreePermissions(val) |
| | | // this.getDistrInventory(val) |
| | | this.collapseArr = this.collapseArrAll.filter((p) => { |
| | | return p.code.indexOf(val) !== -1 |
| | | }) |
| | | |
| | | }, |
| | | |
| | | async getInventoryTreePermissions(param) { |
| | | async getDistrInventory(param) { |
| | | |
| | | const { |
| | | data: res |
| | | } = await InventoryTreePermissions() |
| | | } = await DistrInventory() |
| | | |
| | | this.collapseArrAll = res |
| | | this.collapseArr = res |