|
|
@@ -1,205 +1,107 @@
|
|
|
<template>
|
|
|
|
|
|
<view>
|
|
|
- <view class="title_box rx-bc">
|
|
|
- <view class="name">内包装</view>
|
|
|
- </view>
|
|
|
-
|
|
|
- <view class="material ">
|
|
|
-
|
|
|
- <view class="content_table">
|
|
|
- <view class="item">
|
|
|
- <view class="lable rx-cc">包装总数</view>
|
|
|
- <view class="content content_num">
|
|
|
- <input class="uni-input" v-model="formedNumLast" type='digit'></input>
|
|
|
- <view class="unit">{{objData.unit}}</view>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
-
|
|
|
- <view class="item rx-sc">
|
|
|
- <view class="rx ww55 ">
|
|
|
- <view class="lable lable150 rx-cc ">内包装单元</view>
|
|
|
- <view class="content content_num">
|
|
|
- <input class="uni-input" v-model="quantity"></input>
|
|
|
-
|
|
|
- </view>
|
|
|
- </view>
|
|
|
-
|
|
|
- <view class="rx ww45">
|
|
|
- <view class="rx-cc ww80">
|
|
|
- <view style="max-width: 100rpx; font-size: 24rpx;">{{objData.unit}}</view>/
|
|
|
- </view>
|
|
|
- <view class="content rx-sc">
|
|
|
- <zxz-uni-data-select :localdata="unitList" v-model="unit" dataValue='Key' format='{Value}'
|
|
|
- dataKey="Key" filterable :clear='false'></zxz-uni-data-select>
|
|
|
-
|
|
|
- <view class="penalize" @click="handleSplit">确认</view>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
-
|
|
|
- </view>
|
|
|
-
|
|
|
- </view>
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- <view class="content_table2" v-if='splitList.length'>
|
|
|
- <view class="head row rx-sc">
|
|
|
- <view class="item ww10">序号</view>
|
|
|
- <view class="item ww30">数量</view>
|
|
|
- <view class="item ww50">条码</view>
|
|
|
- <view class="item ww10"></view>
|
|
|
- </view>
|
|
|
-
|
|
|
- <view class="table">
|
|
|
- <u-list @scrolltolower="scrolltolower" class="z_list">
|
|
|
- <view class="tr row rx-sc" v-for="(it, idx) in splitList" :key='idx'>
|
|
|
- <view class="item ww10 rx-cc ">{{ it.computeSize }}</view>
|
|
|
- <view class="item ww30 content_num rx-sc">
|
|
|
- <input class="uni-input" v-model="it.quantity" type="digit"></input>
|
|
|
- <view style="width: 260rpx; font-size: 22rpx;"> {{objData.unit}}/ {{it.unit}}</view>
|
|
|
- </view>
|
|
|
- <view class="item ww50">
|
|
|
- {{ it.code }}
|
|
|
- </view>
|
|
|
- <view class="item ww10 rx-cc" v-if="!it.parentId" @click="handleCheck( idx, it)">
|
|
|
- <image class="check" v-if='it.check' src='@/static/check.png'>
|
|
|
- </image>
|
|
|
- <image class="check" v-if=' !it.check' src='@/static/check_no.png'>
|
|
|
- </image>
|
|
|
- </view>
|
|
|
-
|
|
|
- </view>
|
|
|
-
|
|
|
- </u-list>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- </view>
|
|
|
|
|
|
|
|
|
<view class="material ">
|
|
|
-
|
|
|
<view class="title_box rx-bc">
|
|
|
<view class="name">外包装</view>
|
|
|
</view>
|
|
|
|
|
|
|
|
|
- <view class="content_table2" v-if='temporaryList.length'>
|
|
|
+ <!-- 外包装 列表-->
|
|
|
+ <view class="content_table2" v-if="objData.packingReportList.length> 0">
|
|
|
<view class="head row rx-sc">
|
|
|
<view class="item ww10">序号</view>
|
|
|
<view class="item ww30">数量</view>
|
|
|
<view class="item ww50">条码</view>
|
|
|
- <view class="item ww10"></view>
|
|
|
+ <view class="item ww10 selectAll" @click="handOneCheck">{{ oneCheck ? '取消' : '全选'}}</view>
|
|
|
</view>
|
|
|
|
|
|
<view class="table">
|
|
|
-
|
|
|
- <view class="tr row rx-sc" v-for="(it, idx) in temporaryList" :key='idx'>
|
|
|
+ <view class="tr row rx-sc " v-for="(it, idx) in objData.packingReportList" :key='idx' @click="handleCheck(idx, it)">
|
|
|
<view class="item ww10 rx-cc ">{{ idx + 1 }}</view>
|
|
|
<view class="item ww30 content_num rx-sc">
|
|
|
- <input class="uni-input" v-model="it.quantity" disabled type="digit"></input>
|
|
|
- <view style="width: 260rpx; font-size: 22rpx;"> {{objData.unit}}/ {{it.unit}}</view>
|
|
|
+ {{it.packingNum}} / {{ it.unit }} {{it.quantity}}/ {{ it.childList[0].unit }}
|
|
|
</view>
|
|
|
+
|
|
|
<view class="item ww50">
|
|
|
{{ it.code }}
|
|
|
</view>
|
|
|
- <view class="item ww10 rx-cc">
|
|
|
- <uni-icons custom-prefix="iconfont" type="icon-shanchu" size="20"
|
|
|
- color="#fa3534"></uni-icons>
|
|
|
+ <view class="item ww10 rx-cc" >
|
|
|
+ <image class="check" v-if='it.check' src='@/static/check.png'>
|
|
|
+ </image>
|
|
|
+ <image class="check" v-if=' !it.check' src='@/static/check_no.png'>
|
|
|
+ </image>
|
|
|
</view>
|
|
|
|
|
|
-
|
|
|
</view>
|
|
|
|
|
|
- <view class="tr row rx-sc">
|
|
|
- <view class="item ww10 rx-cc ">合并</view>
|
|
|
- <view class="item ww90 rx-sc">
|
|
|
- 总共{{temporaryCount}} {{objData.unit}} / {{this.temporaryNum}} {{unit}}
|
|
|
- --打包成 1
|
|
|
- <zxz-uni-data-select :localdata="unitList" v-model="packUnit" dataValue='Key'
|
|
|
- format='{Value}' dataKey="Key" filterable :clear='false'></zxz-uni-data-select>
|
|
|
|
|
|
- <view class="penalize" @click="handlePack">打包</view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ </view>
|
|
|
|
|
|
- </view>
|
|
|
|
|
|
|
|
|
- </view>
|
|
|
|
|
|
+ </view>
|
|
|
|
|
|
|
|
|
- </view>
|
|
|
- </view>
|
|
|
|
|
|
+ <view class="material ">
|
|
|
|
|
|
+ <view class="title_box rx-bc">
|
|
|
+ <view class="name">内包装</view>
|
|
|
+ </view>
|
|
|
|
|
|
|
|
|
- <!-- 外包装 列表-->
|
|
|
- <view class="content_table2" v-if='packTwoList.length > 0'>
|
|
|
+ <view class="content_table2" v-if='objData.packingReportMarginList.length'>
|
|
|
<view class="head row rx-sc">
|
|
|
<view class="item ww10">序号</view>
|
|
|
<view class="item ww30">数量</view>
|
|
|
-
|
|
|
<view class="item ww50">条码</view>
|
|
|
- <view class="item ww10"></view>
|
|
|
+ <view class="item ww10 selectAll" @click="handTwoCheck">{{ twoCheck ? '取消' : '全选'}}</view>
|
|
|
</view>
|
|
|
|
|
|
<view class="table">
|
|
|
- <view class="tr row rx-sc " v-for="(it, idx) in packTwoList" :key='idx'>
|
|
|
- <view class="item ww10 rx-cc ">{{ idx + 1 }}</view>
|
|
|
- <view class="item ww30 content_num rx-sc">
|
|
|
- {{ it.quantity}} {{ objData.unit }} / {{it.unit}}
|
|
|
- </view>
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- <view class="item ww50">
|
|
|
- {{ it.code }}
|
|
|
- </view>
|
|
|
- <view class="item ww10 rx-cc">
|
|
|
+ <u-list @scrolltolower="scrolltolower" class="z_list">
|
|
|
+ <view class="tr row rx-sc" v-for="(it, idx) in objData.packingReportMarginList" :key='idx' @click="handleCheckTwo(idx, it)">
|
|
|
+ <view class="item ww10 rx-cc ">{{ it.computeSize }}</view>
|
|
|
+ <view class="item ww30 content_num rx-sc">
|
|
|
+ <view>{{ it.quantity }}/ {{it.unit}} </view>
|
|
|
+ </view>
|
|
|
+ <view class="item ww50">
|
|
|
+ {{ it.code }}
|
|
|
+ </view>
|
|
|
+ <view class="item ww10 rx-cc" >
|
|
|
+ <image class="check" v-if='it.check' src='@/static/check.png'>
|
|
|
+ </image>
|
|
|
+ <image class="check" v-if=' !it.check' src='@/static/check_no.png'>
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
-
|
|
|
- </view>
|
|
|
-
|
|
|
-
|
|
|
+ </u-list>
|
|
|
</view>
|
|
|
-
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
+ </view>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- </view>
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|
|
|
|
|
|
</view>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import {
|
|
|
- getByCode
|
|
|
- } from '@/api/pda/common.js'
|
|
|
- import {
|
|
|
- packingReport,
|
|
|
- getPackingReport,
|
|
|
-
|
|
|
- packingReportRepeat,
|
|
|
- getPackingReportRepeat
|
|
|
- } from '@/api/pda/workOrder.js'
|
|
|
export default {
|
|
|
props: {
|
|
|
objData: {
|
|
|
@@ -207,237 +109,74 @@
|
|
|
default: () => {}
|
|
|
},
|
|
|
|
|
|
- taskId: {
|
|
|
- type: String,
|
|
|
- default: ''
|
|
|
- },
|
|
|
-
|
|
|
- workOrderId: {
|
|
|
- type: String,
|
|
|
- default: ''
|
|
|
- }
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- formedNumLast: 0,
|
|
|
-
|
|
|
- quantity: '',
|
|
|
- unit: '',
|
|
|
-
|
|
|
- unitList: [],
|
|
|
-
|
|
|
- splitList: [],
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- packUnit: null,
|
|
|
- temporaryNum: 0,
|
|
|
- temporaryCount: 0,
|
|
|
- temporaryList: [],
|
|
|
- packTwoList: []
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ oneCheck: false,
|
|
|
+ twoCheck: false,
|
|
|
|
|
|
|
|
|
}
|
|
|
},
|
|
|
|
|
|
created() {
|
|
|
- this.formedNumLast = this.objData.formedNumLast
|
|
|
- this.byCode(),
|
|
|
+
|
|
|
|
|
|
- this.getPackingDetails()
|
|
|
- this.getPackingDetailsTwo()
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
- byCode() {
|
|
|
- getByCode('packing_unit').then(res => {
|
|
|
-
|
|
|
- this.unitList = []
|
|
|
-
|
|
|
- res.forEach((obj, index) => {
|
|
|
- for (let key in obj) {
|
|
|
- if (obj.hasOwnProperty(key)) { // 确保key是对象自身的属性
|
|
|
-
|
|
|
- this.unitList.push({
|
|
|
- Key: `${key}`,
|
|
|
- Value: ` ${obj[key]}`
|
|
|
- })
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
-
|
|
|
- getPackingDetails() {
|
|
|
- let param = {
|
|
|
- workOrderId: this.workOrderId,
|
|
|
- taskId: this.taskId,
|
|
|
- tier: 1
|
|
|
- }
|
|
|
-
|
|
|
- getPackingReport(param).then(res => {
|
|
|
-
|
|
|
- this.splitList = res.detailList
|
|
|
- this.formedNumLast = res.totalQuantity
|
|
|
- this.quantity = res.quantity
|
|
|
- this.unit = res.unit
|
|
|
-
|
|
|
-
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
|
|
|
|
|
|
- handleSplit() {
|
|
|
-
|
|
|
- if (this.splitList.length) {
|
|
|
- uni.showToast({
|
|
|
- title: '产品已分包',
|
|
|
- icon: 'none'
|
|
|
+ handOneCheck() {
|
|
|
+
|
|
|
+ if (this.oneCheck) {
|
|
|
+ this.oneCheck = false
|
|
|
+ this.objData.packingReportList.forEach(e => {
|
|
|
+ e.check = false
|
|
|
})
|
|
|
- return false
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- if (!this.formedNumLast) {
|
|
|
- uni.showToast({
|
|
|
- title: '包装总数数量不能为空',
|
|
|
- icon: 'none'
|
|
|
+ } else {
|
|
|
+ this.oneCheck = true
|
|
|
+ this.objData.packingReportList.forEach(e => {
|
|
|
+ e.check = true
|
|
|
})
|
|
|
- return false
|
|
|
- }
|
|
|
-
|
|
|
- if (!this.quantity) {
|
|
|
- uni.showToast({
|
|
|
- title: '内包装单元数量不能为空',
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return false
|
|
|
- }
|
|
|
-
|
|
|
- if (!this.unit) {
|
|
|
- uni.showToast({
|
|
|
- title: '请选择包装单位',
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- return false
|
|
|
- }
|
|
|
-
|
|
|
- let param = {
|
|
|
- totalQuantity: this.objData.formedNumLast,
|
|
|
- quantity: this.quantity,
|
|
|
- unit: this.unit,
|
|
|
- workOrderId: this.workOrderId,
|
|
|
- taskId: this.taskId,
|
|
|
- tier: 1
|
|
|
}
|
|
|
- packingReport(param).then(res => {
|
|
|
- this.splitList = res.map(m => {
|
|
|
-
|
|
|
- return {
|
|
|
- check: false,
|
|
|
- ...m
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
- this.getPackingDetails()
|
|
|
- })
|
|
|
-
|
|
|
-
|
|
|
+ this.$forceUpdate()
|
|
|
},
|
|
|
|
|
|
handleCheck(idx, it) {
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- if (it.quantity <= 0) {
|
|
|
- uni.showToast({
|
|
|
- icon: 'none',
|
|
|
- title: '数量为空不能勾选'
|
|
|
+ this.$set(this.objData.packingReportList[idx], 'check', !it.check)
|
|
|
+ this.$forceUpdate()
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ handTwoCheck() {
|
|
|
+ if (this.twoCheck) {
|
|
|
+ this.twoCheck = false
|
|
|
+ this.objData.packingReportMarginList.forEach(e => {
|
|
|
+ e.check = false
|
|
|
})
|
|
|
-
|
|
|
- return false
|
|
|
- }
|
|
|
- this.$set(this.splitList[idx], 'check', !it.check)
|
|
|
-
|
|
|
- this.temporaryList = []
|
|
|
-
|
|
|
-
|
|
|
- this.temporaryList = this.splitList.filter(e => {
|
|
|
- return e.check
|
|
|
- })
|
|
|
- this.temporaryNum = 0
|
|
|
- this.temporaryCount = 0
|
|
|
- if (this.temporaryList.length > 0) {
|
|
|
- this.temporaryList.forEach(e => {
|
|
|
- this.temporaryNum = this.temporaryNum + 1
|
|
|
- this.temporaryCount = this.temporaryCount + Number(e.quantity)
|
|
|
+ } else {
|
|
|
+ this.twoCheck = true
|
|
|
+ this.objData.packingReportMarginList.forEach(e => {
|
|
|
+ e.check = true
|
|
|
})
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+ this.$forceUpdate()
|
|
|
},
|
|
|
-
|
|
|
- getPackingDetailsTwo() {
|
|
|
- let param = {
|
|
|
- totalQuantity: this.objData.formedNumLast,
|
|
|
- quantity: this.quantity,
|
|
|
- unit: this.unit,
|
|
|
- workOrderId: this.workOrderId,
|
|
|
- taskId: this.taskId,
|
|
|
- tier: 2,
|
|
|
-
|
|
|
- }
|
|
|
- getPackingReportRepeat(param).then(res => {
|
|
|
- this.packTwoList = res.detailList
|
|
|
- })
|
|
|
+ handleCheckTwo(idx, it) {
|
|
|
+ this.$set(this.objData.packingReportMarginList[idx], 'check', !it.check)
|
|
|
+ this.$forceUpdate()
|
|
|
},
|
|
|
|
|
|
- handlePack() {
|
|
|
- let param = {
|
|
|
- detailList: this.temporaryList,
|
|
|
- quantity: this.temporaryCount,
|
|
|
- totalQuantity: this.formedNumLast,
|
|
|
- unit: this.packUnit,
|
|
|
- taskId: this.taskId,
|
|
|
- workOrderId: this.workOrderId,
|
|
|
- tier: 2
|
|
|
- }
|
|
|
|
|
|
- packingReportRepeat(param).then(res => {
|
|
|
- this.temporaryList = []
|
|
|
- this.getPackingDetails()
|
|
|
- this.getPackingDetailsTwo()
|
|
|
- })
|
|
|
- },
|
|
|
+
|
|
|
|
|
|
|
|
|
scrolltolower() {
|
|
|
|
|
|
},
|
|
|
|
|
|
- getData() {
|
|
|
- let _packingReportMarginList = []
|
|
|
-
|
|
|
- _packingReportMarginList = this.splitList.filter(e => {
|
|
|
- return !e.parentId
|
|
|
- })
|
|
|
|
|
|
- let packInfo = {
|
|
|
- packingReportList: this.packTwoList,
|
|
|
- packingReportMarginList: _packingReportMarginList,
|
|
|
- formedNumLast: this.formedNumLast
|
|
|
- }
|
|
|
- return packInfo
|
|
|
- },
|
|
|
},
|
|
|
}
|
|
|
</script>
|
|
|
@@ -474,81 +213,6 @@
|
|
|
margin-top: 10rpx;
|
|
|
|
|
|
|
|
|
-
|
|
|
- .content_table {
|
|
|
- width: 100%;
|
|
|
- border: 2rpx solid $border-color;
|
|
|
-
|
|
|
- .item {
|
|
|
- display: flex;
|
|
|
- border-bottom: 2rpx solid $border-color;
|
|
|
-
|
|
|
-
|
|
|
- .lable {
|
|
|
- width: 132rpx;
|
|
|
- text-align: center;
|
|
|
- background-color: #F7F9FA;
|
|
|
- font-size: 26rpx;
|
|
|
- border-right: 2rpx solid $border-color;
|
|
|
- flex-shrink: 0;
|
|
|
- }
|
|
|
-
|
|
|
- .lable220 {
|
|
|
- width: 220rpx !important;
|
|
|
- font-size: 24rpx;
|
|
|
- }
|
|
|
-
|
|
|
- .lable150 {
|
|
|
- width: 156rpx !important;
|
|
|
- font-size: 24rpx;
|
|
|
- }
|
|
|
-
|
|
|
- .ww80 {
|
|
|
- width: 80rpx;
|
|
|
- }
|
|
|
-
|
|
|
- .content {
|
|
|
- width: 518rpx;
|
|
|
- min-height: 64rpx;
|
|
|
- font-size: 28rpx;
|
|
|
- line-height: 28rpx;
|
|
|
- font-style: normal;
|
|
|
- font-weight: 400;
|
|
|
- // padding: 18rpx 8rpx;
|
|
|
- box-sizing: border-box;
|
|
|
- word-wrap: break-word;
|
|
|
- flex-grow: 1 !important;
|
|
|
-
|
|
|
-
|
|
|
- .unit {
|
|
|
- padding: 0 4rpx;
|
|
|
- font-size: 24rpx;
|
|
|
- color: #404446;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- &:last-child {
|
|
|
- border-bottom: none;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- .ww55 {
|
|
|
- width: 55%;
|
|
|
- }
|
|
|
-
|
|
|
- .ww45 {
|
|
|
- width: 45%;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -613,6 +277,11 @@
|
|
|
border-right: 2rpx solid #E3E5E5;
|
|
|
box-sizing: border-box;
|
|
|
}
|
|
|
+
|
|
|
+ .selectAll {
|
|
|
+ color: $theme-color;
|
|
|
+ font-size: 24rpx;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -673,6 +342,6 @@
|
|
|
}
|
|
|
|
|
|
.z_list {
|
|
|
- max-height: 500rpx;
|
|
|
+ max-height: 300rpx;
|
|
|
}
|
|
|
</style>
|