Commit f650796b authored by YuY's avatar YuY

Merge remote-tracking branch 'origin/project2024-3-5' into project2024-3-5

# Conflicts:
#	src/views/equipment/inventoryManagement/index.vue
parents e6d9b6f7 524d1990
...@@ -63,6 +63,16 @@ export function uploadFalseFile(params) { ...@@ -63,6 +63,16 @@ export function uploadFalseFile(params) {
}) })
} }
// 下载用户导入模板
export function importTemplate(params) {
return request({
url: '/wbwarehouse-test/importTemplate',
method: 'get',
responseType: 'blob',
params
})
}
// 查询设备列表 // 查询设备列表
export function listdevice(query) { export function listdevice(query) {
return request({ return request({
......
...@@ -235,7 +235,8 @@ import { ...@@ -235,7 +235,8 @@ import {
updatadevice_t, updatadevice_t,
exportWarehouse, exportWarehouse,
importExcel, importExcel,
uploadFalseFile uploadFalseFile,
importTemplate
} from '@/api/magnagement' } from '@/api/magnagement'
import { resetForm } from '@/utils/common' import { resetForm } from '@/utils/common'
...@@ -451,6 +452,21 @@ export default { ...@@ -451,6 +452,21 @@ export default {
this.upload.title = '库存信息导入' this.upload.title = '库存信息导入'
this.upload.open = true this.upload.open = true
}, },
/** 下载模板操作 */
importTemplate() {
importTemplate().then(response => {
const blob = new Blob([response])
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)// 创建下载的链接
downloadElement.href = href
downloadElement.download = '库存导入模板' + '.xls' // 下载后文件名
document.body.appendChild(downloadElement)
downloadElement.click()// 点击下载
document.body.removeChild(downloadElement)// 下载完成移除元素
window.URL.revokeObjectURL(href)// 释放掉blob对象
// this.download(response.msg);
})
},
// 文件上传中处理 // 文件上传中处理
handleFileUploadProgress(event, file, fileList) { handleFileUploadProgress(event, file, fileList) {
...@@ -496,7 +512,6 @@ export default { ...@@ -496,7 +512,6 @@ export default {
downloadElement.click() // 点击下载 downloadElement.click() // 点击下载
document.body.removeChild(downloadElement) // 下载完成移除元素 document.body.removeChild(downloadElement) // 下载完成移除元素
window.URL.revokeObjectURL(href) // 释放掉blob对象 window.URL.revokeObjectURL(href) // 释放掉blob对象
// 导入成功后关闭弹出框
this.importLoading = false this.importLoading = false
this.upload.open = false this.upload.open = false
}) })
......
...@@ -4,28 +4,44 @@ ...@@ -4,28 +4,44 @@
<span style="color:#333;font-weight: 700;font-size: 16px;">设备入库</span> <span style="color:#333;font-weight: 700;font-size: 16px;">设备入库</span>
</div> </div>
<div class="form"> <div class="form">
<el-form ref="form" :model="form" label-width="80px"> <el-form ref="form" :model="form" :rules="rule" label-width="80px">
<el-row :gutter="40" style="padding-left: 8.6%;"> <el-row :gutter="40" style="padding-left: 8.6%;">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="pn:" prop="pn"> <el-form-item label="pn:" prop="pn">
<el-input ref="input1" v-model="form.pn" placeholder="请输入pn" class="input" :maxlength="100" <el-input
@keyup.enter.native="handelTab(1,$event)"/> ref="input1"
v-model="form.pn"
placeholder="请输入pn"
class="input"
:maxlength="100"
@keyup.enter.native="handelTab(1,$event)"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="lot:" style="flex-basis: 50%;" prop="lot"> <el-form-item label="lot:" style="flex-basis: 50%;" prop="lot">
<el-input ref="input2" v-model="form.lot" placeholder="请输入lot" <el-input
class="input" :maxlength="100" ref="input2"
@keyup.enter.native="handelTab(2,$event)"/> v-model="form.lot"
placeholder="请输入lot"
class="input"
:maxlength="100"
@keyup.enter.native="handelTab(2,$event)"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="40" style="padding-left: 8.6%;"> <el-row :gutter="40" style="padding-left: 8.6%;">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="厚度:" style="flex-basis: 50%;" prop="phd"> <el-form-item label="厚度:" style="flex-basis: 50%;" prop="phd">
<el-input ref="input3" v-model="form.phd" placeholder="请输入厚度" <el-input
class="input" :maxlength="10" ref="input3"
@keyup.enter.native="handelTab(3,$event)"/> v-model="form.phd"
placeholder="请输入厚度"
class="input"
:maxlength="10"
@keyup.enter.native="handelTab(3,$event)"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -38,7 +54,7 @@ ...@@ -38,7 +54,7 @@
</div> </div>
<div class="table"> <div class="table">
<el-table border :data="tableData" :gutter="40"> <el-table border :data="tableData" :gutter="40">
<el-table-column type="index" label="序号" width="50px"/> <el-table-column type="index" label="序号" width="50px" />
<el-table-column label="pn" prop="businessId"> <el-table-column label="pn" prop="businessId">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.pn || '-' }} {{ scope.row.pn || '-' }}
...@@ -79,14 +95,22 @@ ...@@ -79,14 +95,22 @@
<el-row style="padding-left: 8.6%; padding-top: 1.5%"> <el-row style="padding-left: 8.6%; padding-top: 1.5%">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="位置:" style="flex-basis: 50%;" prop="plocation"> <el-form-item label="位置:" style="flex-basis: 50%;" prop="plocation">
<el-input v-model="form.plocation" placeholder="请输入位置" :style="{ width: '400px', height: '30px' }" <el-input
:maxlength="100"/> v-model="form.plocation"
placeholder="请输入位置"
:style="{ width: '400px', height: '30px' }"
:maxlength="100"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="寿命:" style="flex-basis: 50%;" prop="psm"> <el-form-item label="寿命:" style="flex-basis: 50%;" prop="psm">
<el-input v-model="form.psm" placeholder="请输入寿命" :style="{ width: '400px', height: '30px' }" <el-input
:maxlength="9"/> v-model="form.psm"
placeholder="请输入寿命"
:style="{ width: '400px', height: '30px' }"
:maxlength="9"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -106,7 +130,7 @@ ...@@ -106,7 +130,7 @@
</div> </div>
</template> </template>
<script> <script>
import {addBatch} from "@/api/magnagement"; import { addBatch } from '@/api/magnagement'
export default { export default {
data() { data() {
...@@ -121,80 +145,121 @@ export default { ...@@ -121,80 +145,121 @@ export default {
pstatus: 0, pstatus: 0,
psm: undefined psm: undefined
}, },
tableData: [] rule: {
pn: [
{ required: true, message: '请输入pn', trigger: 'blur' },
{ pattern: /^[^[\uD800-\uDFFF]+$/, message: '不能包含表情符号', trigger: 'change' },
{ max: 100, message: '输入长度不能超过100个字符', trigger: 'change' }
],
lot: [
{ required: true, message: '请输入lot', trigger: 'blur' },
{ pattern: /^[^[\uD800-\uDFFF]+$/, message: '不能包含表情符号', trigger: 'change' },
{ max: 100, message: '输入长度不能超过100个字符', trigger: 'change' }
],
plocation: [
{ required: true, message: '请输入位置', trigger: 'blur' },
{ pattern: /^[^[\uD800-\uDFFF]+$/, message: '不能包含表情符号', trigger: 'change' },
{ max: 100, message: '输入长度不能超过100个字符', trigger: 'change' }
],
psm: [
{ required: true, message: '请输入寿命', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '请输入正整数', trigger: 'blur' }
]
},
tableData: [],
/* 判断路由器跳转前是否有数据*/
existForm: false,
existTableData: false
}
},
// 路由跳转储存页面数据
beforeRouteLeave(to, from, next) {
sessionStorage.setItem('inComeForm', JSON.stringify(this.form))
sessionStorage.setItem('inComeTableData', JSON.stringify(this.tableData))
next()
},
created() {
sessionStorage.getItem('inComeForm') ? this.existForm = true : this.existForm = false
sessionStorage.getItem('inComeTableData') ? this.existTableData = true : this.existTableData = false
if (this.existForm) {
this.form = JSON.parse(sessionStorage.getItem('inComeForm'))
}
if (this.existTableData) {
this.tableData = JSON.parse(sessionStorage.getItem('inComeTableData'))
} }
}, },
methods: { methods: {
handleConfirm() { handleConfirm() {
this.flag = false this.flag = false
const {pn, lot, phd} = this.form
if(!pn&&!lot){ const { pn, lot } = this.form
this.$message.warning('pn或lot不能为空'); if (!pn && !lot) {
return; this.$message.warning('pn或lot不能为空')
return
} }
if(this.form.index !==undefined){ if (this.form.index !== undefined) {
this.editRow() this.editRow()
}else{ } else {
this.addRow() this.addRow()
} }
}, },
addRow(){ addRow() {
console.log("添加") console.log('添加')
const { pn, lot, phd } = this.form; const { pn, lot, phd } = this.form
// 重复的下标 // 重复的下标
const duplicateIndex = this.tableData.findIndex(item => item.pn === pn); const duplicateIndex = this.tableData.findIndex(item => item.pn === pn)
if (duplicateIndex !== -1) { if (duplicateIndex !== -1) {
this.$message.warning(`与第 ${duplicateIndex + 1} 条pn值重复`); this.$message.warning(`与第 ${duplicateIndex + 1} 条pn值重复`)
} else if (phd % 1 !== 0) { } else if (phd % 1 !== 0) {
this.$message.warning('厚度要为整数'); this.$message.warning('厚度要为整数')
} else { } else {
this.tableData.push({ pn, lot, phd }); this.tableData.push({ pn, lot, phd })
this.resetForm(); this.resetForm()
} }
}, },
editRow(){ editRow() {
console.log("编辑") console.log('编辑')
const { pn, lot, phd, index } = this.form; const { pn, lot, phd, index } = this.form
const duplicateIndex = this.tableData.findIndex((item, i) => i !== index && item.pn === pn); const duplicateIndex = this.tableData.findIndex((item, i) => i !== index && item.pn === pn)
if (duplicateIndex !== -1) { if (duplicateIndex !== -1) {
this.$message.warning(`与第 ${duplicateIndex + 1} 条pn值重复`); this.$message.warning(`与第 ${duplicateIndex + 1} 条pn值重复`)
} else if (phd % 1 !== 0) { } else if (phd % 1 !== 0) {
this.$message.warning('厚度要为整数'); this.$message.warning('厚度要为整数')
} else { } else {
this.updateTableRow(index, pn, lot, phd); this.updateTableRow(index, pn, lot, phd)
} }
this.resetForm(); this.resetForm()
}, },
updateTableRow(index, pn, lot, phd) { updateTableRow(index, pn, lot, phd) {
this.tableData[index].pn = pn; this.tableData[index].pn = pn
this.tableData[index].lot = lot; this.tableData[index].lot = lot
this.tableData[index].phd = phd; this.tableData[index].phd = phd
}, },
resetForm() { resetForm() {
this.form.pn = ''; this.form.pn = ''
this.form.lot = ''; this.form.lot = ''
this.form.phd = ''; this.form.phd = ''
this.form.index = undefined; this.form.index = undefined
}, },
handleUpdate(row){ handleUpdate(row) {
// 将点击的行数据填充到表单中 // 将点击的行数据填充到表单中
this.form = { ...row }; this.form = { ...row }
this.tableData.forEach((item,index)=>{ this.tableData.forEach((item, index) => {
if(item.pn===row.pn){ if (item.pn === row.pn) {
this.form.index=index; this.form.index = index
} }
}) })
}, },
handleDelete(row){ handleDelete(row) {
this.tableData=this.tableData.filter(item=>item !== row) this.tableData = this.tableData.filter(item => item !== row)
}, },
submitForm(){ submitForm() {
if(!this.form.plocation){ if (!this.form.plocation) {
this.$message.warning('位置不能为空!'); this.$message.warning('位置不能为空!')
} }
if(this.tableData.length===0){ if (this.tableData.length === 0) {
this.$message.warning('表格数据不能为空!'); this.$message.warning('表格数据不能为空!')
} }
this.tableData.forEach(item => { this.tableData.forEach(item => {
item.psm = this.form.psm item.psm = this.form.psm
...@@ -210,7 +275,7 @@ export default { ...@@ -210,7 +275,7 @@ export default {
} }
}) })
}, },
resetQuery(){ resetQuery() {
this.form = { this.form = {
pn: '', pn: '',
lot: '', lot: '',
......
...@@ -840,6 +840,7 @@ export default { ...@@ -840,6 +840,7 @@ export default {
downloadElement.click()// 点击下载 downloadElement.click()// 点击下载
document.body.removeChild(downloadElement)// 下载完成移除元素 document.body.removeChild(downloadElement)// 下载完成移除元素
window.URL.revokeObjectURL(href)// 释放掉blob对象 window.URL.revokeObjectURL(href)// 释放掉blob对象
// this.download(response.msg);
}) })
}) })
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment