|
|
@ -1,41 +1,66 @@ |
|
|
<template> |
|
|
<template> |
|
|
<div class="customer-css"> |
|
|
<div class="customer-css"> |
|
|
<el-dialog :title="titleCon" v-drag v-bind="$attrs" v-on="$listeners" |
|
|
<el-dialog :title="titleCon" v-drag v-bind="$attrs" v-on="$listeners" |
|
|
width="200px" style="height: 580px;" class="customer-dialog"> |
|
|
|
|
|
<el-container style="height: 105px;"> |
|
|
|
|
|
<el-form :inline="true" label-position="top" label-width="80px"> |
|
|
|
|
|
<!-- 材料卷号和BOM序号 --> |
|
|
|
|
|
<el-row> |
|
|
|
|
|
<el-col :span="16"> |
|
|
|
|
|
<el-form-item :label=labels.rmRollNo> |
|
|
|
|
|
<el-input ref="scanRmRollNo" @keyup.native="recordTime" |
|
|
|
|
|
@keyup.enter.native="checkRmRollNo" |
|
|
|
|
|
v-model="pageData.scanRmRollNo" |
|
|
|
|
|
style="width: 120px"> |
|
|
|
|
|
</el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
</el-row> |
|
|
|
|
|
<el-row> |
|
|
|
|
|
|
|
|
width="520px" class="material-dialog"> |
|
|
|
|
|
<div class="material-content"> |
|
|
|
|
|
<el-form ref="materialForm" :model="pageData" label-position="top" label-width="100px"> |
|
|
|
|
|
<!-- 材料卷号和BOM序号在同一行 --> |
|
|
|
|
|
<el-row :gutter="15"> |
|
|
<el-col :span="16"> |
|
|
<el-col :span="16"> |
|
|
<el-form-item :label=labels.bomItemNo> |
|
|
|
|
|
<el-select v-model="pageData.bomItemNo" :disabled="selectFlag" style="width: 120px"> |
|
|
|
|
|
|
|
|
<el-form-item :label="labels.rmRollNo" class="form-item-enhanced"> |
|
|
|
|
|
<el-input |
|
|
|
|
|
ref="scanRmRollNo" |
|
|
|
|
|
v-model="pageData.scanRmRollNo" |
|
|
|
|
|
@keyup.native="recordTime" |
|
|
|
|
|
@keyup.enter.native="checkRmRollNo" |
|
|
|
|
|
placeholder="请扫描或输入材料卷号" |
|
|
|
|
|
size="large" |
|
|
|
|
|
clearable> |
|
|
|
|
|
</el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
<el-col :span="8"> |
|
|
|
|
|
<el-form-item :label="labels.bomItemNo" class="form-item-enhanced"> |
|
|
|
|
|
<el-select |
|
|
|
|
|
v-model="pageData.bomItemNo" |
|
|
|
|
|
:disabled="selectFlag" |
|
|
|
|
|
placeholder="请选择" |
|
|
|
|
|
size="large" |
|
|
|
|
|
style="width: 100%"> |
|
|
<el-option |
|
|
<el-option |
|
|
v-for="(item, index) in bomList" |
|
|
v-for="(item, index) in bomList" |
|
|
:key="index" |
|
|
:key="index" |
|
|
:label="item.itemNo" |
|
|
|
|
|
|
|
|
:label="`${item.itemNo}`" |
|
|
:value="item.itemNo"> |
|
|
:value="item.itemNo"> |
|
|
</el-option> |
|
|
</el-option> |
|
|
</el-select> |
|
|
</el-select> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-col> |
|
|
</el-col> |
|
|
</el-row> |
|
|
</el-row> |
|
|
</el-form> |
|
|
|
|
|
</el-container> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 物料信息显示区域 --> |
|
|
|
|
|
<div v-if="materialInfo.partNo" class="material-info-card"> |
|
|
|
|
|
<div class="info-header"> |
|
|
|
|
|
<i class="el-icon-document"></i> |
|
|
|
|
|
<span>物料信息</span> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="info-content"> |
|
|
|
|
|
<div class="info-row"> |
|
|
|
|
|
<label class="info-label">物料编码:</label> |
|
|
|
|
|
<span class="info-value">{{ materialInfo.partNo }}</span> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="info-row"> |
|
|
|
|
|
<label class="info-label">物料名称:</label> |
|
|
|
|
|
<span class="info-value">{{ materialInfo.partDesc || '暂无' }}</span> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<span slot="footer" class="dialog-footer"> |
|
|
<span slot="footer" class="dialog-footer"> |
|
|
<el-button type="primary" @click="feedingMaterialRollFun">{{ buttons.confirmButton }}</el-button> |
|
|
|
|
|
<el-button type="primary" @click="closeDialog">{{buttons.closeButton}}</el-button> |
|
|
|
|
|
<!-- <el-button v-if="showDefault" @click="saveMultiLanguage()" type="primary">多语言设置</el-button>--> |
|
|
|
|
|
|
|
|
<el-button type="primary" @click="feedingMaterialRollFun" icon="el-icon-check">{{ buttons.confirmButton }}</el-button> |
|
|
|
|
|
<el-button @click="closeDialog" icon="el-icon-close">{{ buttons.closeButton }}</el-button> |
|
|
</span> |
|
|
</span> |
|
|
</el-dialog> |
|
|
</el-dialog> |
|
|
</div> |
|
|
</div> |
|
|
@ -65,10 +90,14 @@ var functionId = 'C10000013'; |
|
|
export default { |
|
|
export default { |
|
|
data() { |
|
|
data() { |
|
|
return { |
|
|
return { |
|
|
titleCon: '材料', |
|
|
|
|
|
|
|
|
titleCon: '材料上机', |
|
|
showDefault: false, |
|
|
showDefault: false, |
|
|
sfdcTimeList: [], |
|
|
sfdcTimeList: [], |
|
|
selectFlag: true, |
|
|
selectFlag: true, |
|
|
|
|
|
materialInfo: { |
|
|
|
|
|
partNo: '', |
|
|
|
|
|
partDesc: '' |
|
|
|
|
|
}, |
|
|
scheduleData: { |
|
|
scheduleData: { |
|
|
site: this.$store.state.user.site, |
|
|
site: this.$store.state.user.site, |
|
|
username: this.$store.state.user.name, |
|
|
username: this.$store.state.user.name, |
|
|
@ -145,9 +174,9 @@ export default { |
|
|
objectType: 'button' |
|
|
objectType: 'button' |
|
|
}, |
|
|
}, |
|
|
labels: { |
|
|
labels: { |
|
|
titleCon: '材料', |
|
|
|
|
|
rmRollNo: '材料卷号:', |
|
|
|
|
|
bomItemNo: 'BOM序号:', |
|
|
|
|
|
|
|
|
titleCon: '材料上机', |
|
|
|
|
|
rmRollNo: '材料卷号', |
|
|
|
|
|
bomItemNo: 'BOM序号', |
|
|
pleaseScanEnter: '请扫码输入!', |
|
|
pleaseScanEnter: '请扫码输入!', |
|
|
materialRollCantBeNull: '材料卷号不能为空!', |
|
|
materialRollCantBeNull: '材料卷号不能为空!', |
|
|
pleaseScanMaterialRollNo: '请扫描材料卷号!', |
|
|
pleaseScanMaterialRollNo: '请扫描材料卷号!', |
|
|
@ -156,19 +185,19 @@ export default { |
|
|
labelsList: [ |
|
|
labelsList: [ |
|
|
{ |
|
|
{ |
|
|
functionId: functionId, |
|
|
functionId: functionId, |
|
|
languageValue: '材料', |
|
|
|
|
|
|
|
|
languageValue: '材料上机', |
|
|
objectId: 'titleCon', |
|
|
objectId: 'titleCon', |
|
|
objectType: 'label', |
|
|
objectType: 'label', |
|
|
tableId: '*' |
|
|
tableId: '*' |
|
|
}, { |
|
|
}, { |
|
|
functionId: functionId, |
|
|
functionId: functionId, |
|
|
languageValue: '材料卷号:', |
|
|
|
|
|
|
|
|
languageValue: '材料卷号', |
|
|
objectId: 'rmRollNo', |
|
|
objectId: 'rmRollNo', |
|
|
objectType: 'label', |
|
|
objectType: 'label', |
|
|
tableId: '*' |
|
|
tableId: '*' |
|
|
}, { |
|
|
}, { |
|
|
functionId: functionId, |
|
|
functionId: functionId, |
|
|
languageValue: 'BOM序号:', |
|
|
|
|
|
|
|
|
languageValue: 'BOM序号', |
|
|
objectId: 'bomItemNo', |
|
|
objectId: 'bomItemNo', |
|
|
objectType: 'label', |
|
|
objectType: 'label', |
|
|
tableId: '*' |
|
|
tableId: '*' |
|
|
@ -224,6 +253,13 @@ export default { |
|
|
this.pageData.bomItemNo = ''; |
|
|
this.pageData.bomItemNo = ''; |
|
|
this.pageData.histSeqNo = -1; |
|
|
this.pageData.histSeqNo = -1; |
|
|
this.pageData.operatorId = operatorData.operatorId; |
|
|
this.pageData.operatorId = operatorData.operatorId; |
|
|
|
|
|
|
|
|
|
|
|
// 重置物料信息 |
|
|
|
|
|
this.materialInfo = { |
|
|
|
|
|
partNo: '', |
|
|
|
|
|
partDesc: '' |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
//判断是否启用多语言 |
|
|
//判断是否启用多语言 |
|
|
// this.getMultiLanguageList(); //刷新多语言的信息 |
|
|
// this.getMultiLanguageList(); //刷新多语言的信息 |
|
|
//自动获取焦点 |
|
|
//自动获取焦点 |
|
|
@ -257,13 +293,13 @@ export default { |
|
|
|
|
|
|
|
|
/*检查材料卷号的数据*/ |
|
|
/*检查材料卷号的数据*/ |
|
|
checkRmRollNo() { |
|
|
checkRmRollNo() { |
|
|
//首先判断时间是否超过100毫秒 |
|
|
|
|
|
let len = this.timeArray.length; |
|
|
|
|
|
let timeDiff = this.timeArray[len - 1] - this.timeArray[0]; |
|
|
|
|
|
//判断时间是否在范围之内 |
|
|
|
|
|
if(timeDiff > 1000){ |
|
|
|
|
|
this.$message.error(this.labels.pleaseScanEnter); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// //首先判断时间是否超过100毫秒 |
|
|
|
|
|
// let len = this.timeArray.length; |
|
|
|
|
|
// let timeDiff = this.timeArray[len - 1] - this.timeArray[0]; |
|
|
|
|
|
// //判断时间是否在范围之内 |
|
|
|
|
|
// if(timeDiff > 1000){ |
|
|
|
|
|
// this.$message.error(this.labels.pleaseScanEnter); |
|
|
|
|
|
// } |
|
|
//判断null和空字符串 |
|
|
//判断null和空字符串 |
|
|
if (this.pageData.scanRmRollNo == null || this.pageData.scanRmRollNo == '') { |
|
|
if (this.pageData.scanRmRollNo == null || this.pageData.scanRmRollNo == '') { |
|
|
this.$message.error(this.labels.materialRollCantBeNull); |
|
|
this.$message.error(this.labels.materialRollCantBeNull); |
|
|
@ -281,9 +317,23 @@ export default { |
|
|
//判断是否成功 |
|
|
//判断是否成功 |
|
|
if(data.code == 500){ |
|
|
if(data.code == 500){ |
|
|
this.$message.error(data.msg); |
|
|
this.$message.error(data.msg); |
|
|
|
|
|
// 清空物料信息 |
|
|
|
|
|
this.materialInfo = { |
|
|
|
|
|
partNo: '', |
|
|
|
|
|
partDesc: '' |
|
|
|
|
|
}; |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
this.bomList = data.rows; |
|
|
|
|
|
|
|
|
this.bomList = data.rows; |
|
|
|
|
|
|
|
|
|
|
|
// 如果有返回数据,显示物料信息 |
|
|
|
|
|
if(this.bomList.length > 0) { |
|
|
|
|
|
this.materialInfo = { |
|
|
|
|
|
partNo: this.bomList[0].partNo || '', |
|
|
|
|
|
partDesc: this.bomList[0].partDesc || '' |
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//首先判断行号是否只有一行 |
|
|
//首先判断行号是否只有一行 |
|
|
if(this.bomList.length == 1){ |
|
|
if(this.bomList.length == 1){ |
|
|
//禁用下拉框 |
|
|
//禁用下拉框 |
|
|
@ -367,6 +417,214 @@ export default { |
|
|
</script> |
|
|
</script> |
|
|
|
|
|
|
|
|
<style scoped lang="scss"> |
|
|
<style scoped lang="scss"> |
|
|
|
|
|
// 材料上机对话框样式优化 |
|
|
|
|
|
.material-dialog { |
|
|
|
|
|
::v-deep .el-dialog { |
|
|
|
|
|
border-radius: 8px; |
|
|
|
|
|
overflow: hidden; |
|
|
|
|
|
|
|
|
|
|
|
.el-dialog__header { |
|
|
|
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
|
|
|
|
padding: 18px 20px; |
|
|
|
|
|
|
|
|
|
|
|
.el-dialog__title { |
|
|
|
|
|
color: #fff; |
|
|
|
|
|
font-size: 16px; |
|
|
|
|
|
font-weight: 600; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.el-dialog__headerbtn { |
|
|
|
|
|
.el-dialog__close { |
|
|
|
|
|
color: #fff; |
|
|
|
|
|
font-size: 18px; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
|
color: #f0f0f0; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.el-dialog__body { |
|
|
|
|
|
padding: 25px; |
|
|
|
|
|
background-color: #f8f9fa; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.el-dialog__footer { |
|
|
|
|
|
padding: 15px 20px; |
|
|
|
|
|
background-color: #fff; |
|
|
|
|
|
border-top: 1px solid #e9ecef; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.material-content { |
|
|
|
|
|
.form-item-enhanced { |
|
|
|
|
|
margin-bottom: 20px; |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-form-item__label { |
|
|
|
|
|
color: #495057; |
|
|
|
|
|
font-weight: 500; |
|
|
|
|
|
font-size: 14px; |
|
|
|
|
|
margin-bottom: 8px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-input__inner { |
|
|
|
|
|
border-radius: 6px; |
|
|
|
|
|
border: 1px solid #dee2e6; |
|
|
|
|
|
transition: all 0.3s; |
|
|
|
|
|
height: 42px; |
|
|
|
|
|
line-height: 42px; |
|
|
|
|
|
font-size: 15px; |
|
|
|
|
|
|
|
|
|
|
|
&:focus { |
|
|
|
|
|
border-color: #667eea; |
|
|
|
|
|
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-input__prefix, |
|
|
|
|
|
::v-deep .el-input__suffix { |
|
|
|
|
|
line-height: 42px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-input__icon { |
|
|
|
|
|
line-height: 42px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-input-group__append { |
|
|
|
|
|
background-color: #667eea; |
|
|
|
|
|
color: #fff; |
|
|
|
|
|
border: none; |
|
|
|
|
|
border-radius: 0 6px 6px 0; |
|
|
|
|
|
transition: all 0.3s; |
|
|
|
|
|
height: 42px; |
|
|
|
|
|
line-height: 42px; |
|
|
|
|
|
padding: 0 15px; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
|
background-color: #5568d3; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
i { |
|
|
|
|
|
font-size: 18px; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Select 选择器样式 |
|
|
|
|
|
::v-deep .el-select { |
|
|
|
|
|
.el-input__inner { |
|
|
|
|
|
height: 42px; |
|
|
|
|
|
line-height: 42px; |
|
|
|
|
|
font-size: 15px; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 物料信息卡片样式 |
|
|
|
|
|
.material-info-card { |
|
|
|
|
|
background: linear-gradient(135deg, #667eea15 0%, #764ba215 100%); |
|
|
|
|
|
border-radius: 8px; |
|
|
|
|
|
padding: 16px; |
|
|
|
|
|
margin-bottom: 20px; |
|
|
|
|
|
border: 1px solid #e3e8f0; |
|
|
|
|
|
box-shadow: 0 2px 8px rgba(102, 126, 234, 0.08); |
|
|
|
|
|
animation: fadeInDown 0.5s ease-out; |
|
|
|
|
|
|
|
|
|
|
|
.info-header { |
|
|
|
|
|
display: flex; |
|
|
|
|
|
align-items: center; |
|
|
|
|
|
margin-bottom: 12px; |
|
|
|
|
|
padding-bottom: 10px; |
|
|
|
|
|
border-bottom: 1px solid #dee2e6; |
|
|
|
|
|
|
|
|
|
|
|
i { |
|
|
|
|
|
font-size: 18px; |
|
|
|
|
|
color: #667eea; |
|
|
|
|
|
margin-right: 8px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
span { |
|
|
|
|
|
font-size: 14px; |
|
|
|
|
|
font-weight: 600; |
|
|
|
|
|
color: #495057; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.info-content { |
|
|
|
|
|
.info-row { |
|
|
|
|
|
display: flex; |
|
|
|
|
|
align-items: center; |
|
|
|
|
|
margin-bottom: 8px; |
|
|
|
|
|
|
|
|
|
|
|
&:last-child { |
|
|
|
|
|
margin-bottom: 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.info-label { |
|
|
|
|
|
font-size: 13px; |
|
|
|
|
|
color: #6c757d; |
|
|
|
|
|
min-width: 90px; |
|
|
|
|
|
font-weight: 500; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.info-value { |
|
|
|
|
|
font-size: 13px; |
|
|
|
|
|
color: #212529; |
|
|
|
|
|
font-weight: 600; |
|
|
|
|
|
flex: 1; |
|
|
|
|
|
padding: 4px 10px; |
|
|
|
|
|
background-color: rgba(255, 255, 255, 0.8); |
|
|
|
|
|
border-radius: 4px; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 底部按钮样式 |
|
|
|
|
|
.dialog-footer { |
|
|
|
|
|
display: flex; |
|
|
|
|
|
justify-content: center; |
|
|
|
|
|
gap: 10px; |
|
|
|
|
|
|
|
|
|
|
|
.el-button { |
|
|
|
|
|
border-radius: 6px; |
|
|
|
|
|
padding: 10px 24px; |
|
|
|
|
|
font-size: 14px; |
|
|
|
|
|
transition: all 0.3s; |
|
|
|
|
|
|
|
|
|
|
|
&:not(.el-button--primary) { |
|
|
|
|
|
border-color: #dee2e6; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
|
color: #667eea; |
|
|
|
|
|
border-color: #667eea; |
|
|
|
|
|
background-color: rgba(102, 126, 234, 0.05); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.el-button--primary { |
|
|
|
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
|
|
|
|
border: none; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
|
background: linear-gradient(135deg, #5568d3 0%, #65408d 100%); |
|
|
|
|
|
box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 动画效果 |
|
|
|
|
|
@keyframes fadeInDown { |
|
|
|
|
|
from { |
|
|
|
|
|
opacity: 0; |
|
|
|
|
|
transform: translateY(-10px); |
|
|
|
|
|
} |
|
|
|
|
|
to { |
|
|
|
|
|
opacity: 1; |
|
|
|
|
|
transform: translateY(0); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
</style> |
|
|
</style> |