| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="tl"> |
| | | <workOrderInfo :orederMessage="info" /> |
| | | <div class="tl_title"> |
| | | <div class="tl_title_left"> |
| | | <div class="tl_title_left_x"></div> |
| | | <span>ææä¿¡æ¯</span> |
| | | <!-- <span>{{total == 0 ? '' : total}}{{formList[formList.length - 1].dw ? formList[formList.length - 1].dw : ''}}</span> --> |
| | | <!-- <span>{{total == 0 ? '' : total}}{{formList[formList.length - 1].dw ? formList[formList.length - 1].dw : ''}}</span> --> |
| | | </div> |
| | | <div class="tl_title_right" @click="add"> |
| | | <image src="../../static/gongdan_ic_shoudong@2x.png" class="add-img" mode=""></image> |
| | | <span>å¢å ææ</span> |
| | | </div> |
| | | </div> |
| | | <u-swipe-action> |
| | | <u-swipe-action-item v-for="(item, index) in materialList" :key="index" :options="options" |
| | | @click="deleItem(index)"> |
| | | <div class="tl_list"> |
| | | <div class="tl_list_item" @click="open1(index)"> |
| | | <div class="tl_list_item_label">éæ©ç©æ</div> |
| | | <div class="tl_list_item_go" v-if="!item.materialName"> |
| | | <span>ç¹å»è·³è½¬å°ç©æå表</span> |
| | | <u-icon name="arrow-right"></u-icon> |
| | | </div> |
| | | <div class="tl_list_item_wl" v-else> |
| | | <div class="tl_list_item_wl_top"> |
| | | <span>{{ item.materialName }}</span> |
| | | <span> | {{ item.materialCode }}</span> |
| | | </div> |
| | | <div class="tl_list_item_wl_bottom"> |
| | | <span class="green" v-if="item.qualityType == 0">åæ ¼</span> |
| | | <span class="yellow" v-else-if="item.qualityType == 1">ä¸è¯</span> |
| | | <span class="red" v-else-if="item.qualityType == 2">æ¥åº</span> |
| | | <span>{{ item.procedureName ? ` / ${item.procedureName}` : ' / -' }}</span> |
| | | <span>{{ item.locationName ? ` / ${item.locationName}` : ' / -' }}</span> |
| | | <span>{{ item.batch ? ` / ${item.batch}` : ' / -' }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="tl_list_item"> |
| | | <div class="tl_list_item_label">æææ°é{{ item.unitAttribute }}</div> |
| | | <div class="tl_list_item_go"> |
| | | <input type="text" @blur="changeNumber(item.num, index, item.unitAttribute)" |
| | | v-model="item.num" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </u-swipe-action-item> |
| | | </u-swipe-action> |
| | | <view class="" style="height: 88rpx;"></view> |
| | | <u-safe-bottom></u-safe-bottom> |
| | | <div class="tl_footer"> |
| | | <button class="tl_footer_submit" v-preventReClick @click="submit">æäº¤</button> |
| | | </div> |
| | | <SelectMaterial ref="selectMaterial" @selectAction="getValue" /> |
| | | <!-- <SelectMultipleMaterial ref="selectMultipleMaterial" @selected="getMaterails"/> --> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import workOrderInfo from '@/components/workOrderInfo.vue' |
| | | import SelectMaterial from '@/components/selectMaterial.vue' |
| | | // import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue' |
| | | import { |
| | | queryById, |
| | | createMaterial, |
| | | createMaterialStandard |
| | | } from '@/util/api/WorkOrderAPI' |
| | | import { |
| | | positiveInteger, |
| | | number |
| | | } from '@/common/config' |
| | | export default { |
| | | components: { |
| | | workOrderInfo, |
| | | SelectMaterial, |
| | | // SelectMultipleMaterial |
| | | }, |
| | | data() { |
| | | return { |
| | | deviceId: '', |
| | | workorderId: '', |
| | | // formList: [{ |
| | | // id: Date.now(), |
| | | // toolingTypeId: '', // å·¥è£
ç±»å |
| | | // toolingTypeName: '', // å·¥è£
ç±»ååç§° |
| | | // workClothesId: '', // å·¥è£
|
| | | // workClothesName: '', // å·¥è£
åç§° |
| | | // num: '', // æ°é |
| | | // attribute: '', // å·¥è£
屿§ |
| | | // attributeType: '', // å·¥è£
屿§ç±»å |
| | | // dw: '', // ç©æåä½ |
| | | // unitAttribute: '' |
| | | // }], |
| | | info: {}, |
| | | materialList: [{ |
| | | id: '', |
| | | materialName: '', |
| | | materialCode: '', |
| | | qualityType: '', |
| | | procedureName: '', |
| | | locationName: '', |
| | | batch: '', |
| | | num: '', |
| | | unitAttribute: '' |
| | | }], |
| | | options: [{ |
| | | text: 'å é¤', |
| | | style: { |
| | | backgroundColor: 'red', |
| | | } |
| | | }], |
| | | }; |
| | | }, |
| | | onLoad(obj) { |
| | | this.workorderId = obj.id |
| | | queryById(this.workorderId) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.info = res.data |
| | | this.deviceId = res.data.pgmodel.id |
| | | } |
| | | }) |
| | | }, |
| | | methods: { |
| | | open1(index) { |
| | | // this.$refs.selectMaterial.open({}) |
| | | this.index = index |
| | | this.$refs.selectMaterial.open({ |
| | | workorderId: this.workorderId, |
| | | deviceId: this.deviceId |
| | | }) |
| | | }, |
| | | deleItem(index) { |
| | | if (this.materialList.length === 1) { |
| | | uni.$u.toast('è³å°ä¿ç䏿¡ææä¿¡æ¯') |
| | | return |
| | | } |
| | | this.materialList.splice(index, 1) |
| | | }, |
| | | add() { |
| | | this.total += 1 |
| | | this.materialList.unshift({ |
| | | id: '', |
| | | materialName: '', |
| | | materialCode: '', |
| | | qualityType: '', |
| | | procedureName: '', |
| | | locationName: '', |
| | | batch: '', |
| | | num: '', |
| | | unitAttribute: '' |
| | | }) |
| | | }, |
| | | changeNumber(num, index, unitAttribute) { |
| | | if (unitAttribute === 0 && num !== '') { |
| | | if (!positiveInteger.test(num)) { |
| | | uni.$u.toast({ |
| | | message: 'åªè½è¾å
¥æ£æ´æ°' |
| | | }) |
| | | this.materialList[index].num = '' |
| | | } |
| | | } else if (unitAttribute === 1 && num !== '') { |
| | | if (!number.test(num)) { |
| | | uni.$u.toast({ |
| | | message: 'åªè½è¾å
¥æ£æ´æ°æå°æ°ï¼æå¤åä½ï¼' |
| | | }) |
| | | this.materialList[index].num = '' |
| | | } |
| | | } |
| | | if (num <= 0) { |
| | | uni.$u.toast({ |
| | | message: 'æææ°éä¸è½å°äºçäº0' |
| | | }) |
| | | this.materialList[index].num = '' |
| | | } |
| | | }, |
| | | getValue(item) { |
| | | for (let i = 0; i < this.materialList.length; i++) { |
| | | if (item.id === this.materialList[i].id) { |
| | | uni.$u.toast({ |
| | | message: 'ä¸è½éå¤éæ©ç¸åç©æ' |
| | | }) |
| | | return |
| | | } |
| | | } |
| | | this.materialList[this.index].id = item.id |
| | | this.materialList[this.index].materialName = item.materialName |
| | | this.materialList[this.index].num = item.num |
| | | this.materialList[this.index].batch = item.batch |
| | | this.materialList[this.index].locationName = item.locationName |
| | | this.materialList[this.index].materialCode = item.materialCode |
| | | this.materialList[this.index].procedureName = item.procedureName |
| | | this.materialList[this.index].qualityType = item.qualityType |
| | | this.materialList[this.index].unitAttribute = item.unitAttribute |
| | | }, |
| | | submit() { |
| | | let temp = this.materialList.findIndex(item => !item.id || !item.num) |
| | | if (temp != -1) { |
| | | uni.$u.toast(`请å
å®å第${temp + 1}æ¡ææä¿¡æ¯`) |
| | | return |
| | | } |
| | | let total = this.materialList.reduce((accumulator, currentValue) => accumulator + Number(currentValue.num), |
| | | 0) |
| | | console.log(total); |
| | | if (this.info.bomType != 1 && this.info.hasBom != 1) { |
| | | if (total > this.info.planNum) { |
| | | uni.$u.toast(`æææ°éä¸è½å¤§äºè®¡åæ°é`) |
| | | return |
| | | } |
| | | } |
| | | let recordList = this.materialList.map(item => { |
| | | return { |
| | | wstockId: item.id, |
| | | num: item.num |
| | | } |
| | | }) |
| | | createMaterialStandard({ |
| | | id: this.workorderId, |
| | | recordList |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | // Toast.success({ message: 'æææå', duration: 2000, forbidClick: true }) |
| | | // setTimeout(() => { |
| | | // router.go(-1) |
| | | // }, 2000) |
| | | uni.$u.toast(`æææå`) |
| | | uni.$emit('addMaterial') |
| | | uni.navigateBack() |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | .tl { |
| | | width: 100%; |
| | | height: 100%; |
| | | position: absolute; |
| | | background: #F7F7F7; |
| | | |
| | | .tl_title { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | padding: 30rpx; |
| | | |
| | | .tl_title_left { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .tl_title_left_x { |
| | | width: 8rpx; |
| | | height: 30rpx; |
| | | background: $nav-color; |
| | | border-radius: 2rpx; |
| | | margin-right: 12rpx; |
| | | } |
| | | |
| | | span { |
| | | font-size: 32rpx; |
| | | font-weight: 500; |
| | | color: #222222; |
| | | |
| | | &:nth-child(3) { |
| | | font-size: 28rpx; |
| | | font-weight: 500; |
| | | color: $nav-color; |
| | | margin-left: 10rpx; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .tl_title_right { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .add-img { |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | margin-right: 12rpx; |
| | | } |
| | | |
| | | span { |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | // color: $nav-color; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .tl_list { |
| | | display: flex; |
| | | flex-direction: column; |
| | | background: white; |
| | | padding: 0 30rpx; |
| | | margin-bottom: 20rpx; |
| | | |
| | | .tl_list_item { |
| | | min-height: 98rpx; |
| | | // padding: 20rpx 0; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | border-bottom: 1rpx solid #E5E5E5; |
| | | |
| | | &:last-child { |
| | | border: none !important; |
| | | } |
| | | |
| | | .tl_list_item_label { |
| | | font-size: 30rpx; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | |
| | | .tl_list_item_wl { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: end; |
| | | |
| | | .tl_list_item_wl_top { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | span { |
| | | font-size: 28rpx; |
| | | color: #222222; |
| | | } |
| | | } |
| | | |
| | | .tl_list_item_wl_bottom { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | span { |
| | | font-size: 28rpx; |
| | | color: #222222; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .tl_list_item_go { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | input { |
| | | text-align: right; |
| | | width: 180rpx; |
| | | height: 60rpx; |
| | | border-radius: 8rpx; |
| | | border: 1rpx solid #E5E5E5; |
| | | padding: 0 30rpx; |
| | | box-sizing: border-box; |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | } |
| | | |
| | | span { |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #999999; |
| | | margin-right: 10rpx; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .tl_zw { |
| | | height: 160rpx; |
| | | } |
| | | |
| | | .tl_footer { |
| | | width: 100%; |
| | | position: fixed; |
| | | bottom: 0; |
| | | padding: 0 30rpx calc(env(safe-area-inset-bottom) + 20rpx); |
| | | box-sizing: border-box; |
| | | z-index: 999; |
| | | background-color: #fff; |
| | | |
| | | .tl_footer_submit { |
| | | width: 690rpx; |
| | | height: 88rpx; |
| | | border: none; |
| | | background: #4275FC; |
| | | box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08); |
| | | border-radius: 8rpx; |
| | | font-size: 30rpx; |
| | | font-weight: 500; |
| | | color: #FFFFFF; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | } |
| | | </style> |