子卷装箱

This commit is contained in:
2024-08-01 18:40:06 +08:00
parent 0001fb5c8f
commit 14b8a6f92a
7 changed files with 421 additions and 3 deletions

View File

@@ -47,6 +47,17 @@ uni-button:after {
background-color: #D7592F ;
border: 1rpx solid #D7592F ;
}
.icon_minus-filled {
display: inline-block;
color: #fff;
width: 42rpx;
height: 42rpx;
background-color: #4e6ef2;
font-size: 28rpx;
line-height: 38rpx;
border: 1rpx solid #4e6ef2;
border-radius: 8rpx;
}
.icon_back {
font-size: 52rpx;
line-height: 52rpx;
@@ -125,6 +136,11 @@ uni-button:after {
padding: 0 14rpx;
border-radius: 0;
}
.zd_wrapper-2 {
width: 100%;
background-color: #fff;
padding: 14rpx 14rpx 0 14rpx;
}
.filter_item {
display: flex;
align-items: center;
@@ -381,6 +397,14 @@ uni-button[disabled]:not([type]) {
.pophide {
transform: translateY(100%);
}
.popshow1 {
top: 50%;
transform: translateY(-50%);
}
.pophide1 {
top: 100%;
transform: translateY(0%);
}
.msg_wrapper {
position: fixed;
top: auto;
@@ -412,6 +436,9 @@ uni-button[disabled]:not([type]) {
margin-bottom: 86rpx;
overflow-y: scroll;
}
.msg_content_1 {
height: calc(100% - 116rpx)
}
.msg_box {
width: 100%;
}
@@ -425,6 +452,9 @@ uni-button[disabled]:not([type]) {
background: #000;
z-index: 300;
}
.msg_mask_1 {
z-index: 310;
}
.msg_btns {
width: 100%;
max-width: 300px;
@@ -463,4 +493,37 @@ uni-button[disabled]:not([type]) {
font-weight: 700;
color: #ff6a00;
margin-top: 30rpx;
}
.msg_modal {
position: fixed;
z-index: 311;
width: 80%;
left: 10%;
background-color: #fff;
text-align: center;
border-radius: 3px;
overflow: hidden;
padding: 30rpx;
}
.msg_tip {
font-size: 32rpx;
line-height: 32rpx;
font-weight: 700;
color: #333;
margin-bottom: 30rpx;
text-align: center;
}
.msg_p1 {
font-size: 26rpx;
line-height: 30rpx;
color: #323232;
text-align: left;
margin-bottom: 16rpx;
}
.msg_p2 {
font-size: 28rpx;
line-height: 30rpx;
color: #ff6a00;
text-align: left;
margin-bottom: 16rpx;
}

View File

@@ -136,4 +136,10 @@ input[type="button"], input[type="submit"], input[type="search"], input[type="re
}
.mgr20 {
margin-right: 20rpx;
}
.pdb110 {
padding-bottom: 110rpx;
}
.pdt26 {
padding-top: 26rpx !important;
}

View File

@@ -487,6 +487,14 @@
}
}
,{
"path" : "pages/SecondPhase/slitting/ZjContainer",
"style" :
{
"navigationStyle": "custom"
}
}
],
"globalStyle": {
// "pageOrientation": "landscape",

View File

@@ -0,0 +1,276 @@
<template>
<view class="zd_container">
<!-- <nav-bar title="子卷装箱"></nav-bar> -->
<nav-bar :title="title"></nav-bar>
<view class="zd_content">
<view class="zd_wrapper">
<view class="filter_item">
<view class="filter_label_wraper">
<span class="filter_label">子卷号</span>
</view>
<view class="filter_input_wraper">
<search-box v-model="val1" @handleChange="handleChange" />
</view>
</view>
</view>
<view class="zd_wrapper grid-wraper">
<view class="slide_new">
<table>
<thead>
<tr>
<th>选择</th>
<th class="th_2">订单号</th>
<th>客户名称</th>
<th>子卷号</th>
<th>子卷规格</th>
<th>子卷重量</th>
<th>子管重量</th>
<th>木箱料号</th>
</tr>
</thead>
<tbody>
<tr v-for="(e, i) in dataList" :key="i">
<td><span class="iconfont icon_minus-filled" @click="toCheck(e, i)">&minus;</span></td>
<td class="td_2">{{e.sale_order_name}}</td>
<td>{{e.customer_description}}</td>
<td>{{e.container_name}}</td>
<td>{{e.paper_tube_description}}</td>
<td>{{e.paper_weight}}</td>
<td>{{e.box_weight}}</td>
<td>{{e.package_box_sn}}</td>
</tr>
</tbody>
</table>
</view>
</view>
</view>
<view class="zd-row submitbar">
<button class="zd-col-6 btn-submit btn-default letter-30" @tap="clearUp">清空</button>
<button class="zd-col-15 btn-submit btn-success letter-30" :class="{'btn-info': !dataList.length}" @tap="toSure">组盘</button>
</view>
<view class="msg_wrapper" :class="show ? 'popshow' : 'pophide'">
<view class="pop-line"></view>
<view class="zd_wrapper-2">
<view class="zd-row filter_item">
<view :class="!disabled ? 'zd-col-18' : 'zd-col-24'">
<input type="text" placeholder="输入关键字搜索" class="filter_input" :class="{'filter_input_disabled': disabled}" :disabled="disabled" v-model="val2">
</view>
<view v-show="!disabled" class="zd-col-5"><button class="btn-submit btn-success" @tap="_queryBoxSpec">查询</button></view>
</view>
</view>
<view class="msg_content msg_content_1 pdb110">
<view class="zd_wrapper grid-wraper">
<view class="slide_new">
<table>
<thead>
<tr>
<th>木箱规格</th>
<th>物料名称</th>
<th>木箱长度</th>
<th>木箱宽度</th>
<th>木箱高度</th>
<th>木箱库存数</th>
<th>最大装卷数</th>
</tr>
</thead>
<tbody>
<tr v-for="(e, i) in popData" :key="'pop' + i" @click="popCheck(e)" :class="{'checked': e.material_code === pkId}">
<td>{{e.material_code}}</td>
<td>{{e.material_name}}</td>
<td>{{e.box_length}}</td>
<td>{{e.box_width}}</td>
<td>{{e.box_high}}</td>
<td>{{e.ivt_num}}</td>
<td>{{e.num}}</td>
</tr>
</tbody>
</table>
</view>
</view>
</view>
<view class="zd-row submitbar">
<button class="zd-col-6 btn-submit btn-success letter-30" @tap.stop="show = false">取消</button>
<button class="zd-col-15 btn-submit btn-success letter-30" :class="{'btn-info': !pkId}" :disabled="disabled1" @tap="popSure">确定</button>
</view>
</view>
<view v-if="show" class="msg_mask"></view>
<view class="msg_modal" :class="modalShow ? 'popshow1' : 'pophide1'">
<view class="msg_tip">提示</view>
<view class="zd_content pdt26">
<view class="msg_p1">请仔细核对子卷与木箱规格是否匹配</view>
<view class="msg_p2">木箱规格为{{this.pkObj.material_name}},</view>
<view class="msg_p2">子卷规格为{{this.current.paper_tube_description}},</view>
<view class="msg_p1">击确定后将立即生成空木箱出库任务无法更改</view>
</view>
<view class="zd-row submitbar">
<button class="zd-col-6 btn-submit btn-success letter-30" @tap.stop="modalShow = false">取消</button>
<button class="zd-col-15 btn-submit btn-success letter-30" @tap="modalSure">确定</button>
</view>
</view>
<view v-if="modalShow" class="msg_mask msg_mask_1"></view>
<up-top ref="UT" :scrollTop="top"></up-top>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import UpTop from '@/components/upTop.vue'
import {queryContainerNameBySaleOrder, queryBoxSpec, updateEntityList} from '@/utils/getData3.js'
export default {
components: {
NavBar,
SearchBox,
UpTop
},
data() {
return {
title: '',
top: 0,
val1: '',
dataList: [],
popData: [],
show: false,
disabled: false,
val2: '',
pkId: '',
pkObj: {},
paper: '',
modalShow: false,
disabled1: false
};
},
computed: {
current () {
let res = {paper_tube_description: '', sale_order_name: ''}
if (this.dataList.length > 0) {
res = this.dataList[0]
}
return res
}
},
onPageScroll(e) {
this.$refs.UT.topData(e.scrollTop)
},
onLoad (options) {
this.title = options.title
},
methods: {
handleChange (e) {
this._queryContainerNameBySaleOrder(e)
},
async _queryContainerNameBySaleOrder (e) {
let res = await queryContainerNameBySaleOrder(e)
if (res.content.length) {
if (res.content[0].paper_tube_description === '') {
uni.showToast({
title: '未查询到该子卷规格信息,请检查子卷的分切计划信息!',
icon: 'none',
duration: 5000
})
return
}
if (this.dataList.length >= 1 && res.content[0].paper_tube_description !== this.current.paper_tube_description) {
uni.showToast({
title: `扫描的规格为:${res.content[0].paper_tube_description},与上一个子卷规格不一致,请检查!`,
icon: 'none',
duration: 5000
})
return
}
if (this.dataList.length >= 1 && res.content[0].sale_order_name !== this.current.sale_order_name) {
uni.showToast({
title: `扫描的订单号为:${res.content[0].sale_order_name},上一个订单号不一致,请检查!`,
icon: 'none',
duration: 5000
})
return
}
if (this.dataList.length >= 1 && res.content[0].status !== '99') {
uni.showToast({
title: `该子卷已分配,请检查!`,
icon: 'none'
})
return
}
let flag = false
this.dataList.map(el => {
if (el.container_name === res.content[0].container_name) {
flag = true
}
})
if (flag) {
uni.showToast({
title: `该子卷已存在,请检查!`,
icon: 'none'
})
return
}
this.dataList = [...this.dataList, ...res.content]
}
},
toCheck (e, i) {
this.dataList.splice(i, 1)
},
toSure () {
let code = ''
for (let i = 0; i < this.dataList.length; i++) {
if (this.dataList[i].box_type !== '') {
code = this.dataList[i].box_type
break
}
}
this.disabled = code !== ''
this.val2 = code
this._queryBoxSpec()
},
async _queryBoxSpec () {
let res = await queryBoxSpec(this.val2)
if (res.code === 200) {
this.popData = [...res.content]
this.show = true
}
},
clearUp () {
this.val1 = ''
this.dataList = []
this.disabled = false
this.disabled1 = false
this.show = false
this.modalShow = false
},
popCheck (e) {
this.pkId = this.pkId === e.material_code ? '' : e.material_code
this.pkObj = this.pkId === e.material_code ? e : {}
},
async _updateEntityList () {
this.disabled1 = true
try {
let res = await updateEntityList(this.pkId, this.dataList)
uni.showToast({
title: '操作成功!',
icon: 'none'
})
this.clearUp()
} catch (e) {
this.disabled1 = false
}
},
popSure () {
if (this.dataList.length > this.pkObj.num) {
uni.showToast({
title: '子卷数量超过木箱的最大装卷数!',
icon: 'none',
duration: 5000
})
return
}
this.modalShow = true
},
modalSure () {
this._updateEntityList()
this.modalShow = false
}
}
}
</script>

View File

@@ -245,3 +245,19 @@ export const AGVPass = (code) => request({
url:'api/pda/feeding/AGVPass',
data: {point_code: code}
})
/**
* 子卷装箱
*/
export const queryContainerNameBySaleOrder = (code) => request({
url:'api/pdmBiSubpackagerelation/queryContainerNameBySaleOrder',
data: {type: '1', container_name: code}
})
export const queryBoxSpec = (code) => request({
method: 'GET',
url:'api/pdmBiSubpackagerelation/queryBoxSpec',
data: {page: '0', size: '200', sort: 'material_name%2Cdesc', search: code}
})
export const updateEntityList = (checked, arr) => request({
url:'api/pdmBiSubpackagerelation/updateEntityList',
data: {checked: checked, tableMater: arr}
})

View File

@@ -87,7 +87,8 @@ export const allAuthority = () => {
{menu_id: '8', title: '气胀轴库维护', path: '/pages/SecondPhase/slitting/ShaftSave'},
{menu_id: '8', title: '分切子卷维护', path: '/pages/SecondPhase/slitting/ZjSave'},
{menu_id: '8', title: '备货区管理', path: '/pages/SecondPhase/slitting/StockingArea'},
{menu_id: '8', title: 'AGV放行', path: '/pages/SecondPhase/slitting/AGVPass'}
{menu_id: '8', title: 'AGV放行', path: '/pages/SecondPhase/slitting/AGVPass'},
{menu_id: '8', title: '子卷装箱', path: '/pages/SecondPhase/slitting/ZjContainer'}
]},
{menu_id: '6', path: 'RF04', title: '点位管理', sonTree: [
{menu_id: '1', title: '点位管理', path: '/pages/SecondPhase/point/PointManage'},
@@ -127,7 +128,7 @@ export const authority = () => {
{title: '空木箱入库',sonTree: [{title: '空木箱入库'}]},
{title: '发货区',sonTree: [{title: '发货区解绑'}]},
{title: '生产管理',sonTree: [{title: '生箔生产进度'},{title: '生箔工序'},{title: '烘烤工序'},{title: '表处工序'},{title: '人工烘烤'},{title: '子卷质检'}]},
{title: '分切管理', sonTree: [{title: '分切上料'},{title: '分切下料'},{title: '空轴套管'},{title: '空轴配送'},{title: '空轴进站'},{title: '子卷出站'},{title: '穿拔轴初始化'},{title: '纸管绑定'},{title: '分切暂存下料'},{title: '分切暂存清除'},{title: '气胀轴库维护'}, {title: '分切子卷维护'}, {title: '备货区管理'}, {title: 'AGV放行'}]},
{title: '分切管理', sonTree: [{title: '分切上料'},{title: '分切下料'},{title: '空轴套管'},{title: '空轴配送'},{title: '空轴进站'},{title: '子卷出站'},{title: '穿拔轴初始化'},{title: '纸管绑定'},{title: '分切暂存下料'},{title: '分切暂存清除'},{title: '气胀轴库维护'}, {title: '分切子卷维护'}, {title: '备货区管理'}, {title: 'AGV放行'}, {title: '子卷装箱'}]},
{title: '点位管理', sonTree: [{title: '点位管理'},{title: '异常出库解锁'}]},
{title: '成品入库', sonTree: [{title: '退货口入库'},{title: '异常口入库'},{title: '木箱称重'}]}
]
@@ -174,4 +175,50 @@ export const queryProductArea = () => {
data: [{text: '物料一', value: '001'}, {text: '物料a', value: '002'}, {text: '物料b', value: '003'}]
}
return res
}
export const queryContainerNameBySaleOrder = () => {
let res = {
"totalElements": 1,
"content": [
{
"workorder_id": "1597797877562871810",
"package_box_sn": null,
"quanlity_in_box": null,
"box_weight": 210.000000,
"sale_order_name": "100000011-100",
"customer_name": "10000252",
"customer_description": "惠州市禾腾能源科技有限公司",
"container_name": "A1522210281605B1",
"status": "99",
"box_type": "",
"sap_pcsn": "AA20000251",
"box_group": "0",
"paper_tube_description": " 璃纤维及其制品|FRP管|6英寸|25|1300",
"paper_weight": "22",
"weight": "2"
}
],
"code": 200,
"msg": "查询成功"
}
return res
}
export const queryBoxSpec = () => {
let res = {
"totalElements": 1,
"content": [
{
"box_high": "730",
"ivt_num": 3,
"num": "4",
"box_width": "676",
"material_name": "木制包装容器及板材|木箱|1300|1|6|1376*676*730",
"box_length": "1376",
"material_code": "441510009000470"
}
],
"code": 200,
"msg": "查询成功"
}
return res
}

View File

@@ -50,6 +50,7 @@ const request = (params) => {
// }
})
.then(res => { // 成功
uni.hideLoading();
if (res.length === 1) {
uni.showModal({
content: 'request:fail',
@@ -120,10 +121,11 @@ const request = (params) => {
}
})
.catch(err => { // 错误
uni.hideLoading();
reject(err)
})
.finally(() => {
uni.hideLoading();
// uni.hideLoading();
})
})
}