Files
rd_mes_uniapp/pages/wms/pdcIn/componentScn.vue
2025-12-18 14:11:48 +08:00

283 lines
8.0 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<uni-collapse style="width: 100%;">
<uni-forms ref="form" :modelValue="getCode" class="form">
<uni-easyinput type="text" prefixIcon="scan"
class="Number"
placeholder="请扫描销售工业条码!"
placeholderStyle="color:black"
v-model="getCode.Industry"
@iconClick="iconClick('industry')"
@confirm="getIndustry"
:focus="focusFoIndustry"
clearable
/>
<uni-collapse-item :disabled="open" :open="!open" class="uniCollapse">
<form class="form" >
<uni-table border stripe emptyText="暂无更多数据" >
<!-- 表格数据行 -->
<uni-tr>
<uni-td align="center" width="30">物料编码</uni-td>
<uni-td align="center" width="70">{{form.materialCode}}</uni-td>
</uni-tr>
<uni-tr>
<uni-td align="center" width="30">工业条码</uni-td>
<uni-td align="center" width="70">{{form.Industry}}</uni-td>
</uni-tr>
<uni-tr>
<uni-td align="center" width="30">物料名称</uni-td>
<uni-td align="center" width="70">{{form.materialName}}</uni-td>
</uni-tr>
<uni-tr>
<uni-td align="center" width="30">规格</uni-td>
<uni-td align="center" width="70">{{form.specification1}}</uni-td>
</uni-tr>
</uni-table>
<br />
<uni-easyinput type="text" prefixIcon="scan"
class="Number"
placeholder="请扫描组件二维码!"
placeholderStyle="color:black"
v-model="getCode.computed"
@iconClick="iconClick('subassembly')"
@confirm="getSubassembly"
:focus="focusComputed"
clearable
/>
<uni-table border stripe emptyText="暂无更多数据" >
<!-- 表头行 -->
<uni-tr>
<uni-th align="center" width="70">编码</uni-th>
<uni-th align="center" width="30">操作</uni-th>
</uni-tr>
<!-- 表格数据行 -->
<uni-tr v-for="(item,index) in form.list" :key="index">
<uni-td align="center">{{item.componentCode}}</uni-td>
<uni-td align="center">
<u-button @click="deleteList(item)">删除</u-button>
</uni-td>
</uni-tr>
</uni-table>
</form>
</uni-collapse-item>
</uni-forms>
</uni-collapse>
<uni-popup ref="alertDialog" type="dialog">
<uni-popup-dialog cancelText="关闭" confirmText="同意" title="通知" :content="'是否删除编码为'+item.componentCode+'的单子'" @confirm="dialogConfirm"
@close="dialogClose"></uni-popup-dialog>
</uni-popup>
<!-- 提示信息弹窗 -->
<uni-popup ref="message" type="message">
<uni-popup-message :type="msgType" :message="messageText" :duration="2000"></uni-popup-message>
</uni-popup>
</view>
</template>
<script>
import {
getMaterial,
} from "@/api/mes/material.js";
import {
getSubassembly,
insertSubassembly,
deletSubassembly
} from "@/api/mes/wmsPieceOutRecord.js"
export default {
data() {
return {
//工业条码自动聚焦
focusFoIndustry:true,
focusComputed:false,
//解析的码数据
getCode:{
//工业条码
Industry:null,
//组件
computed:null,
},
//控制明细区是否展开
open:true,
//获取到的数据
form:{
list:[{
name:1,
id:3
},{
name:2,
id:4
}]
},
//要删除的信息
item:{},
//提示信息
messageText:null,
msgType:'info'
}
},
methods: {
/**
* 扫码方法
* @param {Object} value {industry || number }
*/
iconClick(value){
const _this = this;
uni.scanCode({
// 是否只能从相机扫码,不允许从相册选择图片
onlyFromCamera:true,
// 扫码类型
scanType: ['barCode', 'qrCode'],
success: function(res) {
value === 'industry' ? _this.getIndustry(res.result) : value;
value === 'subassembly' ? _this.getSubassembly(res.result) : value;
}
})
},
/**
* 扫描工业条码
* @param {Object} pieceBarcode 解析到的条码数据
*/
async getIndustry(pieceBarcode){
const _self = this;
//判断工业条码里面是否有,号,逗号后面是九位数
_self.focusComputed = false;
if(pieceBarcode ==undefined || pieceBarcode == null|| pieceBarcode.length < 11) return
if(pieceBarcode.indexOf(',') === -1 ||pieceBarcode.split(',').length !=2 ||pieceBarcode.split(',')[1].length != 9){
this.updateMessage('error','该工业条码不符合规范')
return
}
try{
//获取物料信息
const {materialCode,materialName,specification1} = await fnGetMaterial(pieceBarcode);
//获取组件信息
const list = await this.getSubassemblyList(pieceBarcode)
//把所有信息存入form中
_self.form = Object.assign({},{materialCode,materialName,specification1,list,Industry:pieceBarcode})
_self.open = false
_self.focusComputed = true;
}catch(e){
//TODO handle the exception
_self.updateMessage('error','未查到相关数据')
_self.form = Object.assign({})
}
/**
* 通过id获取物料信息
* @param {Object} pieceBarcode 扫描的工业条码
*/
async function fnGetMaterial(pieceBarcode){
//从pieceBarcode截取逗号前面的数据用作id
const id = parseInt(pieceBarcode.split(',')[0]);
let data = [];
await getMaterial(id).then(function(res){
data = res.data
})
return data;
}
},
/**
* 扫描组件条码
* @param {Object} code
*/
async getSubassembly(componentCode){
const _self = this;
// _self.focusComputed = false;
//判断条码是否符合规范
if(componentCode === null || componentCode ==='' ||componentCode === undefined) return _self.focusComputed = true
//查询组件表是否有这个组件,没有则添加,有则结束
if(!await fnInsertSubassembly(this.form.Industry,componentCode)) {
_self.focusComputed = true
return _self.updateMessage('warn','该组件已被扫描')
}
//重新查询数据
const list = await _self.getSubassemblyList(_self.form.Industry)
//把所有信息存入form中
_self.form = Object.assign({},_self.form,{list});
_self.getCode.computed = null;
_self.focusComputed = true
/**
* 查询组件表是否有这个组件,没有则添加
* @param {Object} Industry
* @param {Object} componentCode
*/
async function fnInsertSubassembly(Industry,componentCode){
let data = false;
await insertSubassembly(Industry,componentCode).then(res=>{
data = true
})
return data
}
},
/**
* 通过工业条码查询组件信息
* @param {Object} pieceBarcode
*/
async getSubassemblyList(pieceBarcode){
let data = [];
await getSubassembly(pieceBarcode).then(res => {
data = res.data
})
return data
},
/**
* 删除明细
* @param {Object} 要删除明细的数据
*/
deleteList(item){
this.item = item
this.$refs.alertDialog.open()
},
/**
* 弹出框确认按钮
*/
async dialogConfirm(){
const _self = this;
await deletSubassembly(this.item.id).then(async res => {
this.$refs.alertDialog.close()
this.updateMessage('success','删除成功')
//重新查询数据
const list = await this.getSubassemblyList(_self.form.Industry)
//把所有信息存入form中
_self.form = Object.assign({},_self.form,{list})
})
},
/**
* 弹出框取消按钮
*/
dialogClose(){
this.updateMessage('info','取消删除')
},
/**控制提示框的类型和文字
* @param {Object} type {'info':消息,'success''成功‘,'error':'失败','warn':'警告'}
* @param {Object} text
*/
updateMessage(type,text){
this.messageText = text
this.msgType = type
this.$refs.message.open()
}
}
}
</script>
<style>
page{
padding-top: 10px;
background-color: #ffffff ;
}
</style>
<style scoped lang="scss">
.form {
width: 90%;
margin: 0 auto;
color: black;
font-size:40rpx;
}
.form text {
margin-left: 20%;
}
</style>