283 lines
8.0 KiB
Vue
283 lines
8.0 KiB
Vue
<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> |