183 lines
7.3 KiB
Vue
183 lines
7.3 KiB
Vue
<template>
|
||
<div style="margin-bottom: 10px">
|
||
<el-config-provider :locale="zhCn">
|
||
<el-row style="align-items: center;">
|
||
<!-- <span>选择库区:</span>
|
||
<el-select v-model="areaId" placeholder="请选择库区" style="width: 120px;" @change="getAllLocations">
|
||
<el-option label="3楼库区" :value='1' />
|
||
<el-option label="2楼库区" :value='2' />
|
||
</el-select> -->
|
||
<span style="margin-left: 5px;">状态说明:</span>
|
||
<el-button color="green">空闲</el-button>
|
||
<el-button color="red">占用</el-button>
|
||
<el-button color="yellow">锁定</el-button>
|
||
<el-button color="#00BFFF" style="margin: 0 0 0 auto;" @click="getAllLocations">刷新</el-button>
|
||
</el-row>
|
||
<hr style="border: 1px solid #ff0000" />
|
||
<div>
|
||
<el-scrollbar max-height="760px">
|
||
<div v-for="currentRowLocation in allLocations">
|
||
<span>第{{ currentRowLocation.row }}排</span>
|
||
<div class="row" v-for="currentLayerLocation in currentRowLocation.currentLayerLocations">
|
||
<div class="col" v-for="currentColLocation in currentLayerLocation.currentColLocations">
|
||
<el-button :color="getLocationStatus(currentColLocation)"
|
||
@click="showDialog(currentColLocation)">
|
||
<span style="font-size: 15px;">{{ currentColLocation.queue }}排{{ currentColLocation.line}}列{{ currentColLocation.layer}}层</span>
|
||
</el-button>
|
||
</div>
|
||
</div>
|
||
<hr style="border: 1px solid #000000" />
|
||
</div>
|
||
</el-scrollbar>
|
||
<el-dialog v-model="dialogVisible" :title="currentLocationTitle" width="30%" draggable :show-close="false">
|
||
<el-form :model="location">
|
||
<el-form-item label="占用/解除占用库位" :label-width="140">
|
||
<el-select v-model="location.locationStatus" placeholder="库位是否占用" style="width: 70%;">
|
||
<el-option label="空闲" :value='0' />
|
||
<el-option label="占用" :value='1' />
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="锁定/解锁库位" :label-width="140">
|
||
<el-select v-model="location.isLock" placeholder="库位是否锁定" style="width: 70%;">
|
||
<el-option label="解锁" :value='0' />
|
||
<el-option label="锁定" :value='1' />
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="载具" :label-width="140">
|
||
<el-input v-model="location.vehicleId" style="width: 70%;" />
|
||
</el-form-item>
|
||
</el-form>
|
||
<template #footer>
|
||
<span class="dialog-footer">
|
||
<el-button @click="dialogVisible = false">取消</el-button>
|
||
<el-button type="primary" @click="submitLocationStatus()">
|
||
确定
|
||
</el-button>
|
||
</span>
|
||
</template>
|
||
</el-dialog>
|
||
</div>
|
||
</el-config-provider>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup>
|
||
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
|
||
import { getLocations, updateLocation } from '@/api/location.js'
|
||
import { ElMessage, ElLoading } from 'element-plus'
|
||
import { reactive } from 'vue'
|
||
</script>
|
||
<script>
|
||
export default {
|
||
name: 'location',
|
||
data() {
|
||
return {
|
||
dialogVisible: false,
|
||
currentSelectedLocation: {},
|
||
allLocations: [],
|
||
location: reactive({
|
||
locationStatus: '',
|
||
isLock: '',
|
||
vehicleId: ''
|
||
}),
|
||
currentLocationTitle: '',
|
||
areaId: 1
|
||
}
|
||
},
|
||
mounted() {
|
||
this.getAllLocations()
|
||
},
|
||
methods: {
|
||
getLocationStatus: (currentColLocation) => {
|
||
if (currentColLocation.isLock === 1) {
|
||
return 'yellow'
|
||
}
|
||
if (currentColLocation.locationStatus === 1) {
|
||
return 'red'
|
||
}
|
||
return 'green'
|
||
},
|
||
getAllLocations() {
|
||
const loading = ElLoading.service({
|
||
lock: true,
|
||
text: 'Loading',
|
||
background: 'rgba(0, 0, 0, 0.7)',
|
||
})
|
||
const data = { areaId: this.areaId }
|
||
getLocations(data).then(res => {
|
||
loading.close()
|
||
if (res.data.code == 0) {
|
||
console.log(res.data.returnData)
|
||
this.allLocations = res.data.returnData
|
||
} else {
|
||
ElMessage.error(res.data.message)
|
||
}
|
||
}).catch(err => {
|
||
loading.close()
|
||
ElMessage.error('查询库位失败!')
|
||
})
|
||
},
|
||
showDialog(currentColLocation) {
|
||
this.dialogVisible = true
|
||
this.currentSelectedLocation = currentColLocation
|
||
this.setCurrentLocationTitle()
|
||
this.location.locationStatus = this.currentSelectedLocation.locationStatus
|
||
this.location.isLock = this.currentSelectedLocation.isLock
|
||
this.location.vehicleId = this.currentSelectedLocation.vehicleId
|
||
},
|
||
submitLocationStatus() {
|
||
const loading = ElLoading.service({
|
||
lock: true,
|
||
text: 'Loading',
|
||
background: 'rgba(0, 0, 0, 0.7)',
|
||
})
|
||
this.currentSelectedLocation.locationStatus = this.location.locationStatus
|
||
this.currentSelectedLocation.isLock = this.location.isLock
|
||
this.currentSelectedLocation.vehicleId = this.location.vehicleId
|
||
updateLocation(this.currentSelectedLocation).then(res => {
|
||
if (res.data.code == 0) {
|
||
loading.close()
|
||
this.dialogVisible = false
|
||
ElMessage({
|
||
message: '更新库位信息成功!',
|
||
type: 'success',
|
||
})
|
||
this.getAllLocations()
|
||
} else {
|
||
ElMessage.error(res.data.message)
|
||
}
|
||
}).catch(err => {
|
||
loading.close()
|
||
ElMessage.error('更新库位信息失败')
|
||
})
|
||
},
|
||
setCurrentLocationTitle() {
|
||
this.currentLocationTitle = '当前选择库位:' + this.currentSelectedLocation.queue + '排' + this.currentSelectedLocation.line + '列' + this.currentSelectedLocation.layer + '层'
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped>
|
||
.el-pagination {
|
||
padding-left: 5px;
|
||
}
|
||
|
||
.row {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
margin: 5px;
|
||
}
|
||
|
||
.col {
|
||
/* width: 100px; */
|
||
/* height: 40px; */
|
||
padding: 1px;
|
||
margin: 1px;
|
||
}
|
||
|
||
.col .el-button {
|
||
width: 100px;
|
||
height: 50px;
|
||
}
|
||
</style> |