wms_client_kate_suzhou/src/layout/locationsTable.vue
liangzhou 0841251bdd 代码更新:
1. 增加工站配置的导入功能。
2. 修复userName字段设定不正确的问题。
2024-08-12 16:38:52 +08:00

352 lines
15 KiB
Vue
Raw 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>
<div style="margin-bottom: 10px">
<el-config-provider :locale="zhCn">
<el-row>
<el-input v-model="locationIdQuery" style="width: 256px; margin-right: 10px;" placeholder="库位"
:suffix-icon="Search" />
<el-button type="primary" @click="search()">搜索</el-button>
<el-button type="warning" @click="reset()">重置</el-button>
<!-- <el-button type="success" @click="exportExcel()">导出信息</el-button> -->
</el-row>
<br />
<el-table :data="locations" stripe border v-loading="loading" class="table-class" max-height="550px"
highlight-current-row @row-click="getCurrentRow" :header-cell-style="{ 'text-align': 'center' }"
:cell-style="{ 'text-align': 'center' }">
<el-table-column width="65px" fixed="left">
<template v-slot="scope">
<el-radio :label="scope.row.locationId" v-model="locationId">&nbsp;</el-radio>
</template>
</el-table-column>
<el-table-column prop="locationId" label="库位" fixed="left" :formatter="locationFormat" min-width="180px"
show-overflow-tooltip />
<el-table-column prop="areaId" label="库区" min-width="120px" />
<el-table-column prop="equipmentId" label="设备号" min-width="120px" />
<el-table-column prop="locationType" label="库位类型" min-width="120px" />
<el-table-column prop="wRow" label="排" min-width="120px" />
<el-table-column prop="wCol" label="列" min-width="120px" />
<el-table-column prop="wLayer" label="层" min-width="120px" />
<el-table-column prop="wDepth" label="深度" min-width="120px" />
<el-table-column prop="isLock" label="锁定" :formatter="isLockFormat" min-width="120px" />
<el-table-column prop="locationStatus" label="状态" :formatter="locationStatusFormat" min-width="120px" />
<el-table-column prop="vehicleId" label="料箱" min-width="120px" show-overflow-tooltip />
<el-table-column fixed="right" label="操作" width="120px" v-if="selVehicle == null">
<template v-slot="scope">
<el-button plain type="primary" @click="editCurrentRowLocation(scope.row)">编辑</el-button>
</template>
</el-table-column>
</el-table>
<br />
<el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize" :page-sizes="[10, 25, 50]"
:small="false" :disabled="false" :background="false" :default-page-size="10"
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="search"
@current-change="search" />
<el-dialog v-model="dialogVisible" title="库位信息" width="40%" draggable :show-close="false">
<el-form ref="locationFormRef" :model="locationFormEntity" :label-position="labelPosition"
label-width="100px" style="max-width: 100%" :rules="rules" status-icon>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="库位" prop="locationId">
<el-input v-model="locationFormEntity.locationId" :formatter="locationFormat"
disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="类型" prop="locationType">
<el-input v-model="locationFormEntity.locationType" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="库区" prop="areaId">
<el-input v-model="locationFormEntity.areaId" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="设备号" prop="equipmentId">
<el-input v-model="locationFormEntity.equipmentId" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="排" prop="wRow">
<el-input v-model="locationFormEntity.wRow" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="列" prop="wCol">
<el-input v-model="locationFormEntity.wCol" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="层" prop="wLayer">
<el-input v-model="locationFormEntity.wLayer" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="深度" prop="wDepth">
<el-input v-model="locationFormEntity.wDepth" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="锁定" prop="isLock">
<el-select-v2 v-model="locationFormEntity.isLock" placeholder="请选择是否锁定"
:options="isLockOptions"></el-select-v2>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态" prop="locationStatus">
<el-select-v2 v-model="locationFormEntity.locationStatus" placeholder="请选择库位状态"
:options="locationStatusOptions"></el-select-v2>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="料箱" prop="vehicleId">
<el-input v-model="locationFormEntity.vehicleId" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="submitLocationInfo(locationFormEntity)">
确定
</el-button>
</span>
</template>
</el-dialog>
</el-config-provider>
</div>
</template>
<script setup>
import store from '@/store'
import { getLocations, updateLocation } from '@/api/location.js'
import { Search } from '@element-plus/icons-vue'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import { ElMessage } from 'element-plus'
import { ref, reactive } from 'vue'
import { locationStatusFormatter, locationFormatter } from '@/utils/formatter.js'
</script>
<script>
export default {
name: 'locationsTable',
// props: ['selVehicle'],
// emits: ['update:selVehicle'],
data() {
return {
locations: [],
currentPage: 1,
pageSize: 10,
total: 0,
locationIdQuery: '',
loading: true,
dialogVisible: false,
locationId: '',
locationFormEntity: reactive({}),
labelPosition: 'top',
locationFormRef: ref(),
rules: reactive({
locationId: [
{ required: true, message: '请输入库位号' }
],
}),
// 锁定
isLockOptions: [
{
value: 0,
label: '正常'
},
{
value: 1,
label: '锁定'
}
],
// 状态
locationStatusOptions: [
{
value: 0,
label: '空闲'
},
{
value: 1,
label: '占用'
},
]
}
},
mounted() {
this.search()
},
methods: {
search() {
this.loading = true
const tableRequest = {
pageNo: this.currentPage,
pageSize: this.pageSize,
locationId: this.locationIdQuery.trim()
}
getLocations(tableRequest).then(res => {
const tableResponse = res.data
if (tableResponse.code == 0) {
this.locations = tableResponse.returnData.lists
this.total = tableResponse.returnData.total
} else {
ElMessage.error(tableResponse.message)
}
}).catch(err => {
ElMessage.error('查询库位信息错误' + err.message)
})
this.loading = false
},
locationStatusFormat: (row, column, cellValue, index) => {
return locationStatusFormatter(cellValue)
},
locationFormat: (row, column, cellValue, index) => {
return locationFormatter(cellValue)
},
isLockFormat: (row, column, cellValue, index) => {
if (cellValue == 0) {
return '正常'
}
if (cellValue == 1) {
return '锁定'
}
},
reset() {
this.locationIdQuery = ''
this.search()
},
editCurrentRowLocation(row) {
this.locationFormEntity = {
locationId: row.locationId,
areaId: row.areaId,
equipmentId: row.equipmentId,
locationType: row.locationType,
wRow: row.wRow,
wCol: row.wCol,
wLayer: row.wLayer,
wDepth: row.wDepth,
isLock: row.isLock,
locationStatus: row.locationStatus,
vehicleId: row.vehicleId
}
this.dialogVisible = true
},
submitLocationInfo(formData) {
const request = {
locationId: formData.locationId,
areaId: formData.areaId,
equipmentId: formData.equipmentId,
locationType: formData.locationType,
wRow: formData.wRow,
wCol: formData.wCol,
wLayer: formData.wLayer,
wDepth: formData.wDepth,
isLock: formData.isLock,
locationStatus: formData.locationStatus,
vehicleId: formData.vehicleId
}
updateLocation(request).then(res => {
if (res.data.code == 0) {
this.dialogVisible = false
ElMessage({
message: '更新库位信息成功',
type: 'success',
})
this.search()
} else {
ElMessage.error(res.data.message)
}
}).catch(err => {
ElMessage.error('更新库位信息失败:' + err)
})
},
getCurrentRow(row) {
this.locationId = row.locationId
// this.$emit('update:selVehicle', row)
},
// exportExcel() {
// const request = {
// vehicleId: formData.vehicleId,
// currentLocation: formData.currentLocation,
// isEmpty: formData.isEmpty,
// vehicleStatus: formData.vehicleStatus
// }
// downloadVehicleExcel(request).then(res => {
// const link = document.createElement('a');//创建a标签
// try {
// // let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); //如果后台返回的不是blob对象类型先定义成blob对象格式该type导出为xls格式
// let blob = res.data //如果后台返回的直接是blob对象类型直接获取数据
// // let _fileName = res.headers['content-disposition'].split(';')[1].split('=')[1]; //拆解获取文件名,如果后端有给返回文件名的话
// let _fileName = "导出料箱信息" + dateFormatter(new Date) + ".xlsx"
// link.style.display = 'none'//隐藏
// // 兼容不同浏览器的URL对象
// const url = window.URL || window.webkitURL || window.moxURL
// link.href = url.createObjectURL(blob)
// link.setAttribute('download', _fileName.substring(_fileName.lastIndexOf('_') + 1))
// document.body.appendChild(link)
// link.click()
// document.body.removeChild(link)
// url.revokeObjectURL(link.href)//移除url对象
// } catch (e) {
// ElMessage({
// message: '下载文件失败:: ' + e,
// type: 'error',
// showClose: true
// })
// }
// }).catch(err => {
// ElMessage({
// message: '导出失败:: ' + err,
// type: 'error',
// showClose: true
// })
// })
// },
}
}
</script>
<style scoped>
.el-pagination {
padding-left: 5px;
}
.el-row .el-button {
width: 72px;
margin-left: 0px;
margin-right: 5px;
}
.table-class {
width: 100%;
/* font-size: 5px; */
}
.el-row .el-form-item {
width: 10% inherit;
justify-content: center;
}
.el-row .el-form-item .el-select-v2 {
width: 100% !important;
}
.el-row .el-form-item .el-input-number {
width: 100% !important;
}
.el-row .el-form-item .el-button {
margin: auto;
}
</style>