@@ -2,7 +2,7 @@ | |||
# @Author: zwq | |||
# @Date: 2023-08-17 15:10:53 | |||
# @LastEditors: zwq | |||
# @LastEditTime: 2023-11-02 10:02:06 | |||
# @LastEditTime: 2024-02-26 08:44:27 | |||
# @Description: | |||
### | |||
# 开发环境配置 | |||
@@ -12,7 +12,7 @@ ENV = 'development' | |||
VUE_APP_TITLE = 南京锂膜管理系统 | |||
# 南京锂膜管理系统/开发环境 | |||
# VUE_APP_BASE_API = 'http://192.168.1.23:48080' | |||
# VUE_APP_BASE_API = 'http://192.168.1.118:48080' | |||
VUE_APP_BASE_API = 'http://192.168.0.31:48081' | |||
# VUE_APP_BASE_API = 'http://192.168.1.26:48080' | |||
@@ -2,7 +2,7 @@ | |||
# @Author: zwq | |||
# @Date: 2023-08-17 15:10:53 | |||
# @LastEditors: zwq | |||
# @LastEditTime: 2024-01-15 14:08:52 | |||
# @LastEditTime: 2024-03-13 15:10:27 | |||
# @Description: | |||
### | |||
# 生产环境配置 | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:31:37 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2024-01-29 16:59:17 | |||
* @LastEditTime: 2024-03-13 15:04:28 | |||
* @Description: | |||
*/ | |||
import request from '@/utils/request' | |||
@@ -109,6 +109,14 @@ export function getLineList(query) { | |||
params: query | |||
}) | |||
} | |||
// 码头移库 | |||
export function moveLine(query) { | |||
return request({ | |||
url: '/asrs/line-edge-library/move', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 导出立库库位 Excel | |||
export function exportWarehouseStorehouseExcel(query) { | |||
return request({ | |||
@@ -52,3 +52,11 @@ export function exportMainTaskExcel(query) { | |||
responseType: 'blob' | |||
}) | |||
} | |||
// 重补空托盘 | |||
export function Radd(id) { | |||
return request({ | |||
url: '/asrs/job-main-task/reoutemptytray?id=' + id, | |||
method: 'get' | |||
}) | |||
} |
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-09-07 14:01:29 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-07 14:17:19 | |||
* @LastEditTime: 2024-03-13 14:57:37 | |||
* @Description: | |||
*/ | |||
import request from '@/utils/request' | |||
@@ -113,6 +113,13 @@ export default { | |||
data: nameArr, | |||
axisLabel: { | |||
color: '#979797', | |||
interval:0, | |||
formatter: function (value) { | |||
let valueTxt = ''; if (value.length > 4) { valueTxt = value.substring(0, 4) + '...'; } else { | |||
valueTxt = value; | |||
} | |||
return valueTxt; | |||
} | |||
}, | |||
axisLine: { | |||
lineStyle: { | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-06-01 10:47:42 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-10-12 16:32:00 | |||
* @LastEditTime: 2024-02-23 16:56:33 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -48,7 +48,7 @@ export default { | |||
this.chart = null; | |||
}, | |||
methods: { | |||
initChart(occupancyData) { | |||
initChart(occupancyData,val) { | |||
this.chart = echarts.init(this.$el, 'macarons'); | |||
this.chart.setOption({ | |||
@@ -165,7 +165,7 @@ export default { | |||
offsetCenter: [0, '20%'], | |||
valueAnimation: true, | |||
formatter: function (value) { | |||
return '{side| }{value|' + value + '%}{side1| }'; | |||
return '{side| }{value|' + value + '%}{side1| }'+'\n\n{val|已使用库位数量:'+val+'}'; | |||
}, | |||
rich: { | |||
value: { | |||
@@ -173,6 +173,10 @@ export default { | |||
color: '#0B58FF', | |||
padding: [0, 20, 0, 20], | |||
}, | |||
val: { | |||
fontSize: 18, | |||
color: '#0B58FF', | |||
}, | |||
side: { | |||
width: 35, | |||
height: 5, | |||
@@ -0,0 +1,183 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2024-02-27 14:43:14 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2024-03-13 15:08:49 | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="app-container"> | |||
<div class="box-card"> | |||
<div class="tip">码头起点</div> | |||
<el-form :inline="true" :model="startData" label-width="100px"> | |||
<el-form-item label="选择区域" class="drawer" prop="region"> | |||
<el-select | |||
v-model="startData.region" | |||
style="width: 100%" | |||
@change="getSArr" | |||
:popper-append-to-body="false" | |||
placeholder="请选择区域"> | |||
<el-option | |||
v-for="item in regionArr" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id" /> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="选择位置" class="drawer" prop="targetId"> | |||
<el-select | |||
v-model="startData.targetId" | |||
:disabled="SDisable" | |||
style="width: 100%" | |||
:popper-append-to-body="false" | |||
placeholder="请选择位置"> | |||
<el-option | |||
v-for="item in potArr" | |||
:key="item.id" | |||
:label="item.lineEdgeLibraryCode" | |||
:value="item.id" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-form> | |||
<el-divider style="margin-bottom: 36px"> | |||
<i class="el-icon-bottom"></i> | |||
</el-divider> | |||
<div class="tipe">码头终点</div> | |||
<el-form :inline="true" :model="endData" label-width="100px"> | |||
<el-form-item label="选择区域" class="drawer" prop="region"> | |||
<el-select | |||
v-model="endData.region" | |||
style="width: 100%" | |||
@change="getEArr" | |||
:popper-append-to-body="false" | |||
placeholder="请选择区域"> | |||
<el-option | |||
v-for="item in regionArr" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id" /> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="选择位置" class="drawer" prop="targetId"> | |||
<el-select | |||
v-model="endData.targetId" | |||
:disabled="EDisable" | |||
style="width: 100%" | |||
:popper-append-to-body="false" | |||
placeholder="请选择位置"> | |||
<el-option | |||
v-for="item in potArr" | |||
:key="item.id" | |||
:label="item.lineEdgeLibraryCode" | |||
:value="item.id" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-form> | |||
<el-button type="primary" style="float: left" @click="move()"> | |||
转移 | |||
</el-button> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import { getLineList, moveLine } from '@/api/asrs/warehouseStorehouse'; | |||
const regionArr = [ | |||
{ name: '一次分切区域', id: 1 }, | |||
{ name: '一次分拣区域', id: 2 }, | |||
{ name: '二次分切区域', id: 3 }, | |||
{ name: '二次分拣区域', id: 4 }, | |||
{ name: '包装区域', id: 5 }, | |||
{ name: '涂覆区域', id: 6 }, | |||
{ name: '其他', id: 7 }, | |||
]; | |||
export default { | |||
data() { | |||
return { | |||
startData: { | |||
targetId: undefined, | |||
region: undefined, | |||
}, | |||
endData: { | |||
targetId: undefined, | |||
region: undefined, | |||
}, | |||
potArr: [], | |||
regionArr, | |||
SDisable: true, | |||
EDisable: true, | |||
warehouseId: '1696803324030865409', | |||
}; | |||
}, | |||
components: {}, | |||
created() { | |||
this.init(); | |||
}, | |||
methods: { | |||
init() { | |||
this.SDisable = true; | |||
this.EDisable = true; | |||
}, | |||
getSArr(val) { | |||
getLineList({ region: val, warehouseId: this.warehouseId }).then( | |||
(response) => { | |||
this.potArr = response.data; | |||
this.SDisable = false; | |||
} | |||
); | |||
}, | |||
getEArr(val) { | |||
getLineList({ region: val, warehouseId: this.warehouseId }).then( | |||
(response) => { | |||
this.potArr = response.data; | |||
this.EDisable = false; | |||
} | |||
); | |||
}, | |||
move() { | |||
if (this.startData.targetId && this.endData.targetId) { | |||
moveLine({ | |||
sourceId: this.startData.targetId, | |||
targetId: this.endData.targetId, | |||
}).then((response) => { | |||
this.$message({ | |||
message: '操作成功', | |||
type: 'success', | |||
duration: 1500, | |||
}); | |||
}); | |||
} else { | |||
this.$message({ | |||
message: '请选择起终点!', | |||
type: 'warning', | |||
}); | |||
} | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.box-card { | |||
padding: 50px; | |||
margin: 20px; | |||
text-align: center; | |||
box-shadow: 0px 0px 5px 2px gray; | |||
position: relative; | |||
} | |||
.tip { | |||
position: absolute; | |||
top: 20px; | |||
left: 100px; | |||
color: #409eff; | |||
} | |||
.tipe { | |||
position: absolute; | |||
top: 150px; | |||
left: 100px; | |||
color: #409eff; | |||
} | |||
.el-divider--horizontal { | |||
margin-bottom: 48px; | |||
} | |||
</style> |
@@ -0,0 +1,193 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2024-02-27 14:43:14 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2024-03-13 15:09:44 | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="app-container"> | |||
<div class="box-card"> | |||
<div class="tip"> | |||
码头起点 | |||
</div> | |||
<el-form :inline="true" :model="startData" label-width="100px"> | |||
<el-form-item | |||
label="选择区域" | |||
class="drawer" | |||
prop="region"> | |||
<el-select | |||
v-model="startData.region" | |||
style="width: 100%" | |||
@change="getSArr" | |||
:popper-append-to-body="false" | |||
placeholder="请选择区域"> | |||
<el-option | |||
v-for="item in regionArr" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id" /> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item | |||
label="选择位置" | |||
class="drawer" | |||
prop="targetId"> | |||
<el-select | |||
v-model="startData.targetId" | |||
:disabled="SDisable" | |||
style="width: 100%" | |||
:popper-append-to-body="false" | |||
placeholder="请选择位置"> | |||
<el-option | |||
v-for="item in potArr" | |||
:key="item.id" | |||
:label="item.lineEdgeLibraryCode" | |||
:value="item.id" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-form> | |||
<el-divider style="margin-bottom:36px"><i class="el-icon-bottom"></i></el-divider> | |||
<div class="tipe"> | |||
码头终点 | |||
</div> | |||
<el-form :inline="true" :model="endData" label-width="100px"> | |||
<el-form-item | |||
label="选择区域" | |||
class="drawer" | |||
prop="region"> | |||
<el-select | |||
v-model="endData.region" | |||
style="width: 100%" | |||
@change="getEArr" | |||
:popper-append-to-body="false" | |||
placeholder="请选择区域"> | |||
<el-option | |||
v-for="item in regionArr" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id" /> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item | |||
label="选择位置" | |||
class="drawer" | |||
prop="targetId"> | |||
<el-select | |||
v-model="endData.targetId" | |||
:disabled="EDisable" | |||
style="width: 100%" | |||
:popper-append-to-body="false" | |||
placeholder="请选择位置"> | |||
<el-option | |||
v-for="item in potArr" | |||
:key="item.id" | |||
:label="item.lineEdgeLibraryCode" | |||
:value="item.id" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-form> | |||
<el-button type="primary" style="float: left" @click="move()"> | |||
转移 | |||
</el-button> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import { getLineList, moveLine } from '@/api/asrs/warehouseStorehouse'; | |||
const regionArr = [ | |||
{ name: '一次分切区域', id: 1 }, | |||
{ name: '一次分拣区域', id: 2 }, | |||
{ name: '二次分切区域', id: 3 }, | |||
{ name: '二次分拣区域', id: 4 }, | |||
{ name: '包装区域', id: 5 }, | |||
{ name: '涂覆区域', id: 6 }, | |||
{ name: '其他', id: 7 }, | |||
]; | |||
export default { | |||
data() { | |||
return { | |||
startData: { | |||
targetId: undefined, | |||
region: undefined, | |||
}, | |||
endData: { | |||
targetId: undefined, | |||
region: undefined, | |||
}, | |||
potArr: [], | |||
regionArr, | |||
SDisable: true, | |||
EDisable: true, | |||
warehouseId: '1698950657556340737', | |||
}; | |||
}, | |||
components: {}, | |||
created() { | |||
this.init(); | |||
}, | |||
methods: { | |||
init() { | |||
this.SDisable = true; | |||
this.EDisable = true; | |||
}, | |||
getSArr(val) { | |||
getLineList({ region: val,'warehouseId':this.warehouseId }).then((response) => { | |||
this.potArr = response.data; | |||
this.SDisable = false; | |||
}); | |||
}, | |||
getEArr(val) { | |||
getLineList({ region: val,'warehouseId':this.warehouseId }).then((response) => { | |||
this.potArr = response.data; | |||
this.EDisable = false; | |||
}); | |||
}, | |||
move() { | |||
if (this.startData.targetId && this.endData.targetId) { | |||
moveLine({ | |||
sourceId: this.startData.targetId, | |||
targetId: this.endData.targetId, | |||
}).then((response) => { | |||
this.$message({ | |||
message: '操作成功', | |||
type: 'success', | |||
duration: 1500, | |||
}); | |||
}); | |||
} else { | |||
this.$message({ | |||
message: '请选择起终点!', | |||
type: 'warning', | |||
}); | |||
} | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.box-card { | |||
padding: 50px; | |||
margin: 20px; | |||
text-align: center; | |||
box-shadow: 0px 0px 5px 2px gray; | |||
position: relative; | |||
} | |||
.tip{ | |||
position:absolute; | |||
top: 20px; | |||
left: 100px; | |||
color: #409EFF; | |||
} | |||
.tipe{ | |||
position:absolute; | |||
top: 150px; | |||
left: 100px; | |||
color: #409EFF; | |||
} | |||
.el-divider--horizontal { | |||
margin-bottom: 48px; | |||
} | |||
</style> |
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:54 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-10-31 11:20:46 | |||
* @LastEditTime: 2024-02-23 16:41:15 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -58,10 +58,10 @@ export default { | |||
// 获取数据列表 | |||
getDataList() { | |||
this.urlOptions.occupancyURL(this.aId).then((response) => { | |||
this.occupancyData = response.data.toFixed(2); | |||
this.occupancyData = response.data[0].toFixed(2); | |||
const num = mul(this.occupancyData, 100); | |||
this.$nextTick(() => { | |||
this.$refs.gaugeChart.initChart(num); | |||
this.$refs.gaugeChart.initChart(num,response.data[1]); | |||
}); | |||
}); | |||
this.urlOptions.allURL(this.aId).then((response) => { | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:54 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-10-31 11:22:35 | |||
* @LastEditTime: 2024-02-23 16:41:40 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -60,10 +60,10 @@ export default { | |||
// 获取数据列表 | |||
getDataList() { | |||
this.urlOptions.occupancyURL(this.bId).then((response) => { | |||
this.occupancyData = response.data.toFixed(2); | |||
this.occupancyData = response.data[0].toFixed(2); | |||
const num = mul(this.occupancyData, 100); | |||
this.$nextTick(() => { | |||
this.$refs.gaugeChart.initChart(num); | |||
this.$refs.gaugeChart.initChart(num,response.data[1]); | |||
}); | |||
}); | |||
this.urlOptions.allURL(this.bId).then((response) => { | |||
@@ -67,15 +67,17 @@ const tableProps = [ | |||
label: 'agv', | |||
}, | |||
{ | |||
prop: 'agvPoint', | |||
label: 'AGV起终点', | |||
subcomponent: point, | |||
prop: 'agvStartPoint', | |||
label: 'AGV起点', | |||
}, | |||
{ | |||
prop: 'agvEndPoint', | |||
label: 'AGV终点', | |||
}, | |||
{ | |||
prop: 'mainTaskState', | |||
label: '状态', | |||
filter: codeFilter('mainTaskState'), | |||
width:110 | |||
subcomponent: point | |||
}, | |||
{ | |||
prop: 'taskSource', | |||
@@ -104,9 +106,33 @@ const mainTaskType = [ | |||
id: 3, | |||
}, | |||
{ | |||
name: '出库带移库', | |||
name: '出库+移库', | |||
id: 4, | |||
}, | |||
{ | |||
name: '不带agv入库', | |||
id: 5, | |||
}, | |||
{ | |||
name: '不带agv出库', | |||
id: 6, | |||
}, | |||
{ | |||
name: '入库+6臂空托盘出库', | |||
id: 7, | |||
}, | |||
{ | |||
name: '不带agv出库+移库', | |||
id: 8, | |||
}, | |||
{ | |||
name: '入库+12臂空托盘出库', | |||
id: 9, | |||
}, | |||
{ | |||
name: '平库移库', | |||
id: 10, | |||
}, | |||
]; | |||
const mainTaskState = [ | |||
{ | |||
@@ -141,6 +167,10 @@ const mainTaskState = [ | |||
name: '传输线运行中', | |||
id: 7, | |||
}, | |||
{ | |||
name: '暂时无空托盘', | |||
id: 8, | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
@@ -257,6 +287,7 @@ export default { | |||
case 'reset': | |||
this.$refs.searchBarForm.resetForm(); | |||
this.listQuery = { | |||
warehouseId: '1696803324030865409', | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
@@ -0,0 +1,324 @@ | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:isFold="true" | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<base-table | |||
v-loading="dataListLoading" | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="tableData"> | |||
<method-btn | |||
v-if="tableBtn.length" | |||
slot="handleBtn" | |||
:width="80" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
</base-table> | |||
<pagination | |||
:limit.sync="listQuery.pageSize" | |||
:page.sync="listQuery.pageNo" | |||
:total="listQuery.total" | |||
@pagination="getDataList" /> | |||
</div> | |||
</template> | |||
<script> | |||
import basicPage from '../mixins/basic-page'; | |||
import { parseTime } from '../mixins/code-filter'; | |||
import codeFilter from '../mixins/code-filter'; | |||
import { getMainTaskPage, deleteMainTask } from '@/api/oth/mainTask'; | |||
import point from './point'; | |||
const tableProps = [ | |||
{ | |||
prop: 'mainTaskCode', | |||
label: '任务编码', | |||
}, | |||
{ | |||
prop: 'inOutWarehouseName', | |||
label: '出入移库库位', | |||
}, | |||
{ | |||
prop: 'relocationWarehouseName', | |||
label: '移库终点库位', | |||
}, | |||
{ | |||
prop: 'mainTaskType', | |||
label: '任务类型', | |||
filter: codeFilter('mainTaskType'), | |||
width:100 | |||
}, | |||
{ | |||
prop: 'stacker', | |||
label: '堆垛机', | |||
width:110 | |||
}, | |||
{ | |||
prop: 'barCode', | |||
label: '托盘编码', | |||
}, | |||
{ | |||
prop: 'agv', | |||
label: 'agv', | |||
}, | |||
{ | |||
prop: 'agvStartPoint', | |||
label: 'AGV起点', | |||
}, | |||
{ | |||
prop: 'agvEndPoint', | |||
label: 'AGV终点', | |||
}, | |||
{ | |||
prop: 'mainTaskState', | |||
label: '状态', | |||
subcomponent: point | |||
}, | |||
{ | |||
prop: 'taskSource', | |||
label: '任务来源', | |||
filter: codeFilter('taskSource'), | |||
width:100 | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '创建时间', | |||
filter: parseTime, | |||
width:150 | |||
}, | |||
]; | |||
const mainTaskType = [ | |||
{ | |||
name: '入库', | |||
id: 1, | |||
}, | |||
{ | |||
name: '出库', | |||
id: 2, | |||
}, | |||
{ | |||
name: '移库', | |||
id: 3, | |||
}, | |||
{ | |||
name: '出库+移库', | |||
id: 4, | |||
}, | |||
{ | |||
name: '不带agv入库', | |||
id: 5, | |||
}, | |||
{ | |||
name: '不带agv出库', | |||
id: 6, | |||
}, | |||
{ | |||
name: '入库+6臂空托盘出库', | |||
id: 7, | |||
}, | |||
{ | |||
name: '不带agv出库+移库', | |||
id: 8, | |||
}, | |||
{ | |||
name: '入库+12臂空托盘出库', | |||
id: 9, | |||
}, | |||
{ | |||
name: '平库移库', | |||
id: 10, | |||
}, | |||
]; | |||
const mainTaskState = [ | |||
{ | |||
name: '开始', | |||
id: 0, | |||
}, | |||
{ | |||
name: '已发送agv', | |||
id: 1, | |||
}, | |||
{ | |||
name: 'agv运行中', | |||
id: 2, | |||
}, | |||
{ | |||
name: '已发送堆垛机', | |||
id: 3, | |||
}, | |||
{ | |||
name: '堆垛机运行中', | |||
id: 4, | |||
}, | |||
{ | |||
name: '完成', | |||
id: 5, | |||
}, | |||
{ | |||
name: '已发送传输线', | |||
id: 6, | |||
}, | |||
{ | |||
name: '传输线运行中', | |||
id: 7, | |||
}, | |||
{ | |||
name: '暂时无空托盘', | |||
id: 8, | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getMainTaskPage, | |||
deleteURL: deleteMainTask, | |||
}, | |||
listQuery: { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
}, | |||
tableProps, | |||
tableBtn: [ | |||
// { | |||
// type: 'canlce', | |||
// btnName: '取消', | |||
// }, | |||
], | |||
tableData: [], | |||
formConfig: [ | |||
{ | |||
type: 'input', | |||
label: '任务编码', | |||
placeholder: '任务编码', | |||
param: 'code', | |||
}, | |||
{ | |||
type: 'select', | |||
label: '任务类型', | |||
selectOptions: mainTaskType, | |||
param: 'taskType', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'input', | |||
label: '托盘编码', | |||
placeholder: '托盘编码', | |||
param: 'tcode', | |||
}, | |||
{ | |||
type: 'select', | |||
label: '状态', | |||
selectOptions: mainTaskState, | |||
param: 'status', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'select', | |||
label: 'agv', | |||
selectOptions: [], | |||
param: 'agv', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'datePicker', | |||
label: '选择日期', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd HH:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
param: 'searchTime', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '搜索', | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '重置', | |||
name: 'reset', | |||
}, | |||
], | |||
}; | |||
}, | |||
components: {}, | |||
created() { | |||
this.setFormConfig(); | |||
this.listQuery.warehouseId = this.bId; | |||
}, | |||
methods: { | |||
setFormConfig() { | |||
for (let i = 1; i <= 16; i++) { | |||
const obj = { | |||
id: i, | |||
name: i, | |||
}; | |||
this.formConfig[4].selectOptions.push(obj); | |||
} | |||
}, | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
this.listQuery.pageNo = 1; | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.mainTaskCode = val.code; | |||
this.listQuery.mainTaskType = val.taskType; | |||
this.listQuery.barCode = val.tcode; | |||
this.listQuery.mainTaskState = val.status; | |||
this.listQuery.agv = val.agv; | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
this.$refs.searchBarForm.resetForm(); | |||
this.listQuery = { | |||
warehouseId: '1698950657556340737', | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
}; | |||
this.getDataList(); | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
otherMethods(val){ | |||
this.$confirm(`确定对${'[任务编码=' + val.data.mainTaskCode + ']'}进行取消操作?`, "提示", { | |||
confirmButtonText: "确定", | |||
cancelButtonText: "取消", | |||
type: "warning", | |||
}) | |||
.then(() => { | |||
this.urlOptions.deleteURL(val.data.id).then(({ data }) => { | |||
this.$message({ | |||
message: "操作成功", | |||
type: "success", | |||
duration: 1500, | |||
onClose: () => { | |||
this.getDataList(); | |||
}, | |||
}); | |||
}); | |||
}) | |||
.catch(() => { }); | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -1,32 +1,54 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-09-22 15:36:40 | |||
* @Date: 2024-01-17 15:16:28 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-26 15:59:57 | |||
* @LastEditTime: 2024-03-13 15:02:49 | |||
* @Description: | |||
--> | |||
<template> | |||
<div> | |||
{{ injectData.mainTaskType===1? injectData.agvStartPoint:injectData.agvEndPoint}} | |||
</div> | |||
<div> | |||
{{ mainTaskState[injectData.mainTaskState] }} | |||
<el-button v-if="injectData.mainTaskState===8" type="text" size="mini" @click="Radd()">重补</el-button> | |||
</div> | |||
</template> | |||
<script> | |||
import { Radd } from '@/api/oth/mainTask'; | |||
const mainTaskState = { | |||
0: '开始', | |||
1: '已发送agv', | |||
2: 'agv运行中', | |||
3: '已发送堆垛机', | |||
4: '堆垛机运行中', | |||
5: '完成', | |||
6: '已发送传输线', | |||
7: '传输线运行中', | |||
8: '暂时无空托盘', | |||
}; | |||
export default { | |||
name: "point", | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}), | |||
}, | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData, | |||
}; | |||
}, | |||
methods: { | |||
}, | |||
name: 'point', | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}), | |||
}, | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData, | |||
mainTaskState, | |||
}; | |||
}, | |||
methods: { | |||
Radd() { | |||
Radd(this.injectData.id).then((response) => { | |||
this.$message({ | |||
message: '操作成功', | |||
type: 'success', | |||
duration: 1500, | |||
}); | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
</style> | |||
<style scoped></style> |
@@ -60,15 +60,17 @@ const tableProps = [ | |||
label: 'agv', | |||
}, | |||
{ | |||
prop: 'agvPoint', | |||
label: 'AGV起终点', | |||
subcomponent: point, | |||
prop: 'agvStartPoint', | |||
label: 'AGV起点', | |||
}, | |||
{ | |||
prop: 'agvEndPoint', | |||
label: 'AGV终点', | |||
}, | |||
{ | |||
prop: 'mainTaskState', | |||
label: '状态', | |||
filter: codeFilter('mainTaskState'), | |||
width:110 | |||
subcomponent: point | |||
}, | |||
{ | |||
prop: 'taskSource', | |||
@@ -103,9 +105,33 @@ const mainTaskType = [ | |||
id: 3, | |||
}, | |||
{ | |||
name: '出库带移库', | |||
name: '出库+移库', | |||
id: 4, | |||
}, | |||
{ | |||
name: '不带agv入库', | |||
id: 5, | |||
}, | |||
{ | |||
name: '不带agv出库', | |||
id: 6, | |||
}, | |||
{ | |||
name: '入库+6臂空托盘出库', | |||
id: 7, | |||
}, | |||
{ | |||
name: '不带agv出库+移库', | |||
id: 8, | |||
}, | |||
{ | |||
name: '入库+12臂空托盘出库', | |||
id: 9, | |||
}, | |||
{ | |||
name: '平库移库', | |||
id: 10, | |||
}, | |||
]; | |||
const mainTaskState = [ | |||
{ | |||
@@ -132,6 +158,18 @@ const mainTaskState = [ | |||
name: '完成', | |||
id: 5, | |||
}, | |||
{ | |||
name: '已发送传输线', | |||
id: 6, | |||
}, | |||
{ | |||
name: '传输线运行中', | |||
id: 7, | |||
}, | |||
{ | |||
name: '暂时无空托盘', | |||
id: 8, | |||
}, | |||
]; | |||
const stackerArr = [ | |||
{ | |||
@@ -265,6 +303,7 @@ export default { | |||
case 'reset': | |||
this.$refs.searchBarForm.resetForm(); | |||
this.listQuery = { | |||
warehouseId: '1696803324030865409', | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
@@ -0,0 +1,321 @@ | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:isFold="true" | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<base-table | |||
v-loading="dataListLoading" | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="tableData"> | |||
</base-table> | |||
<pagination | |||
:limit.sync="listQuery.pageSize" | |||
:page.sync="listQuery.pageNo" | |||
:total="listQuery.total" | |||
@pagination="getDataList" /> | |||
</div> | |||
</template> | |||
<script> | |||
import basicPage from '../mixins/basic-page'; | |||
import { parseTime } from '../mixins/code-filter'; | |||
import codeFilter from '../mixins/code-filter'; | |||
import { getMainTaskHistoryPage } from '@/api/oth/mainTaskHistory'; | |||
import point from './point'; | |||
const tableProps = [ | |||
{ | |||
prop: 'mainTaskCode', | |||
label: '任务编码', | |||
}, | |||
{ | |||
prop: 'inOutWarehouseName', | |||
label: '出入移库库位', | |||
}, | |||
{ | |||
prop: 'relocationWarehouseName', | |||
label: '移库终点库位', | |||
}, | |||
{ | |||
prop: 'mainTaskType', | |||
label: '任务类型', | |||
filter: codeFilter('mainTaskType'), | |||
width:100 | |||
}, | |||
{ | |||
prop: 'stacker', | |||
label: '堆垛机', | |||
width:110 | |||
}, | |||
{ | |||
prop: 'barCode', | |||
label: '托盘编码', | |||
}, | |||
{ | |||
prop: 'agv', | |||
label: 'agv', | |||
}, | |||
{ | |||
prop: 'agvStartPoint', | |||
label: 'AGV起点', | |||
}, | |||
{ | |||
prop: 'agvEndPoint', | |||
label: 'AGV终点', | |||
}, | |||
{ | |||
prop: 'mainTaskState', | |||
label: '状态', | |||
subcomponent: point | |||
}, | |||
{ | |||
prop: 'taskSource', | |||
label: '任务来源', | |||
filter: codeFilter('taskSource'), | |||
width:100 | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '创建时间', | |||
filter: parseTime, | |||
width:150 | |||
}, | |||
{ | |||
prop: 'cancellation', | |||
label: '是否取消', | |||
filter: codeFilter('cancellation'), | |||
width:90 | |||
}, | |||
]; | |||
const mainTaskType = [ | |||
{ | |||
name: '入库', | |||
id: 1, | |||
}, | |||
{ | |||
name: '出库', | |||
id: 2, | |||
}, | |||
{ | |||
name: '移库', | |||
id: 3, | |||
}, | |||
{ | |||
name: '出库+移库', | |||
id: 4, | |||
}, | |||
{ | |||
name: '不带agv入库', | |||
id: 5, | |||
}, | |||
{ | |||
name: '不带agv出库', | |||
id: 6, | |||
}, | |||
{ | |||
name: '入库+6臂空托盘出库', | |||
id: 7, | |||
}, | |||
{ | |||
name: '不带agv出库+移库', | |||
id: 8, | |||
}, | |||
{ | |||
name: '入库+12臂空托盘出库', | |||
id: 9, | |||
}, | |||
{ | |||
name: '平库移库', | |||
id: 10, | |||
}, | |||
]; | |||
const mainTaskState = [ | |||
{ | |||
name: '开始', | |||
id: 0, | |||
}, | |||
{ | |||
name: '已发送agv', | |||
id: 1, | |||
}, | |||
{ | |||
name: 'agv运行中', | |||
id: 2, | |||
}, | |||
{ | |||
name: '已发送堆垛机', | |||
id: 3, | |||
}, | |||
{ | |||
name: '堆垛机运行中', | |||
id: 4, | |||
}, | |||
{ | |||
name: '完成', | |||
id: 5, | |||
}, | |||
{ | |||
name: '已发送传输线', | |||
id: 6, | |||
}, | |||
{ | |||
name: '传输线运行中', | |||
id: 7, | |||
}, | |||
{ | |||
name: '暂时无空托盘', | |||
id: 8, | |||
}, | |||
]; | |||
const stackerArr = [ | |||
{ | |||
name: '1', | |||
id: 1, | |||
}, | |||
{ | |||
name: '2', | |||
id: 2, | |||
}, | |||
{ | |||
name: '3', | |||
id: 3, | |||
}, | |||
{ | |||
name: '4', | |||
id: 4, | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getMainTaskHistoryPage, | |||
}, | |||
tableProps, | |||
tableData: [], | |||
formConfig: [ | |||
{ | |||
type: 'input', | |||
label: '任务编码', | |||
placeholder: '任务编码', | |||
param: 'code', | |||
}, | |||
{ | |||
type: 'select', | |||
label: '任务类型', | |||
selectOptions: mainTaskType, | |||
param: 'taskType', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'input', | |||
label: '托盘编码', | |||
placeholder: '托盘编码', | |||
param: 'tcode', | |||
}, | |||
// { | |||
// type: 'select', | |||
// label: '状态', | |||
// selectOptions: mainTaskState, | |||
// param: 'status', | |||
// defaultSelect: '', | |||
// filterable: true, | |||
// }, | |||
{ | |||
type: 'select', | |||
label: '堆垛机', | |||
selectOptions: stackerArr, | |||
param: 'stacker', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'select', | |||
label: 'agv', | |||
selectOptions: [], | |||
param: 'agv', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'datePicker', | |||
label: '选择日期', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd HH:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
param: 'searchTime', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '搜索', | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '重置', | |||
name: 'reset', | |||
}, | |||
], | |||
}; | |||
}, | |||
components: {}, | |||
created() { | |||
this.listQuery.mainTaskState = 5; | |||
this.setFormConfig(); | |||
this.listQuery.warehouseId = this.bId; | |||
}, | |||
methods: { | |||
setFormConfig() { | |||
for (let i = 1; i <= 16; i++) { | |||
const obj = { | |||
id: i, | |||
name: i, | |||
}; | |||
this.formConfig[4].selectOptions.push(obj); | |||
} | |||
}, | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
this.listQuery.pageNo = 1; | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.mainTaskCode = val.code; | |||
this.listQuery.mainTaskType = val.taskType; | |||
this.listQuery.barCode = val.tcode; | |||
// this.listQuery.mainTaskState = val.status; | |||
this.listQuery.mainTaskState = 5; | |||
this.listQuery.stacker = val.stacker; | |||
this.listQuery.agv = val.agv; | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
this.$refs.searchBarForm.resetForm(); | |||
this.listQuery = { | |||
warehouseId: '1698950657556340737', | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
mainTaskState : 5 | |||
}; | |||
this.getDataList(); | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -1,32 +1,54 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-09-22 15:36:40 | |||
* @Date: 2024-01-17 15:16:28 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-26 15:59:57 | |||
* @LastEditTime: 2024-03-13 15:03:09 | |||
* @Description: | |||
--> | |||
<template> | |||
<div> | |||
{{ injectData.mainTaskType===1? injectData.agvStartPoint:injectData.agvEndPoint}} | |||
</div> | |||
<div> | |||
{{ mainTaskState[injectData.mainTaskState] }} | |||
<el-button v-if="injectData.mainTaskState===8" type="text" size="mini" @click="Radd()">重补</el-button> | |||
</div> | |||
</template> | |||
<script> | |||
import { Radd } from '@/api/oth/mainTask'; | |||
const mainTaskState = { | |||
0: '开始', | |||
1: '已发送agv', | |||
2: 'agv运行中', | |||
3: '已发送堆垛机', | |||
4: '堆垛机运行中', | |||
5: '完成', | |||
6: '已发送传输线', | |||
7: '传输线运行中', | |||
8: '暂时无空托盘', | |||
}; | |||
export default { | |||
name: "point", | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}), | |||
}, | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData, | |||
}; | |||
}, | |||
methods: { | |||
}, | |||
name: 'point', | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}), | |||
}, | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData, | |||
mainTaskState, | |||
}; | |||
}, | |||
methods: { | |||
Radd() { | |||
Radd(this.injectData.id).then((response) => { | |||
this.$message({ | |||
message: '操作成功', | |||
type: 'success', | |||
duration: 1500, | |||
}); | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
</style> | |||
<style scoped></style> |
@@ -2,7 +2,7 @@ | |||
/* | |||
* @Date: 2020-12-29 16:49:28 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2024-01-19 13:50:00 | |||
* @LastEditTime: 2024-03-13 14:22:22 | |||
* @FilePath: \basic-admin\src\filters\basicData\index.js | |||
* @Description: | |||
*/ | |||
@@ -29,7 +29,13 @@ const table = { | |||
1: '入库', | |||
2: '出库', | |||
3: '移库', | |||
4: '出库带移库', | |||
4: '出库+移库', | |||
5: '不带agv入库', | |||
6: '不带agv出库', | |||
7: '入库+6臂空托盘出库', | |||
8: '不带agv出库+移库', | |||
9: '入库+12臂空托盘出库', | |||
10: '平库移库', | |||
}, | |||
mainTaskState:{ | |||
0: '开始', | |||
@@ -40,6 +46,7 @@ const table = { | |||
5: '完成', | |||
6: '已发送传输线', | |||
7: '传输线运行中', | |||
8: '暂时无空托盘', | |||
}, | |||
taskSource: { | |||
1: 'mes下发', | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-24 14:47:58 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-10-25 14:08:18 | |||
* @LastEditTime: 2024-02-22 16:48:44 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -37,8 +37,8 @@ const tableProps = [ | |||
label: '产品名', | |||
}, | |||
{ | |||
prop: 'goodSpecificationCode', | |||
label: '产品编码', | |||
prop: 'rollCode', | |||
label: '膜卷编码', | |||
}, | |||
{ | |||
prop: 'specification', | |||
@@ -0,0 +1,218 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2024-01-17 09:58:41 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2024-03-14 14:53:29 | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<div class="tips"> | |||
<el-tag effect="dark" color="#16DC09" style="border: none">满</el-tag> | |||
<el-tag effect="dark" color="#d3d3d3" style="border: none">空</el-tag> | |||
<el-tag effect="dark" color="#7362F3" style="border: none">锁</el-tag> | |||
</div> | |||
<div class="mainbody"> | |||
<el-divider class="divider" content-position="left">分拣区</el-divider> | |||
<div v-for="i in 12" :key="i"> | |||
<el-row style="margin-bottom: 10px" type="flex" class="flex-warp"> | |||
<div | |||
class="dashboard-layout-item" | |||
style="opacity: 0" | |||
v-if="i === 12" /> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="j in wareData | |||
.filter( | |||
(item) => | |||
item.agvGroundCode.substr(0, 2) == 13 - i && item.region === 2 | |||
) | |||
.reverse()" | |||
:key="j.id" | |||
:title="j.lineEdgeLibraryCode"> | |||
<el-popover | |||
placement="top-start" | |||
:title="j.lineEdgeLibraryCode" | |||
width="200" | |||
trigger="hover"> | |||
<div class="point"/>托盘编码: {{ j.trayCode }}<br/> | |||
<div class="point"/>Agv地码: {{ j.agvGroundCode }} | |||
<div | |||
slot="reference" | |||
class="hoverDiv" | |||
:style="{ | |||
cursor: | |||
j.lineEdgeLibraryState === 1 ? 'not-allowed' : 'pointer', | |||
background: bgColor[j.lineEdgeLibraryState], | |||
}"></div> | |||
</el-popover> | |||
</div> | |||
</el-row> | |||
</div> | |||
<el-divider class="divider" content-position="left"> | |||
一次分切区 | |||
</el-divider> | |||
<el-row style="margin-bottom: 10px" type="flex" class="flex-warp"> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="j in wareData.filter((item) => item.region == 1).reverse()" | |||
:key="j.id" | |||
:title="j.lineEdgeLibraryCode"> | |||
<el-popover | |||
placement="top-start" | |||
:title="j.lineEdgeLibraryCode" | |||
width="200" | |||
trigger="hover"> | |||
<div class="point"/>托盘编码: {{ j.trayCode }}<br/> | |||
<div class="point"/>Agv地码: {{ j.agvGroundCode }} | |||
<div | |||
slot="reference" | |||
class="hoverDiv" | |||
:style="{ | |||
cursor: | |||
j.lineEdgeLibraryState === 1 ? 'not-allowed' : 'pointer', | |||
background: bgColor[j.lineEdgeLibraryState], | |||
}"></div> | |||
</el-popover> | |||
</div> | |||
</el-row> | |||
<el-divider class="divider" content-position="left"> | |||
二次分切区 | |||
</el-divider> | |||
<el-row style="margin-bottom: 10px" type="flex" class="flex-warp"> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="j in wareData.filter((item) => item.region == 3).reverse()" | |||
:key="j.id" | |||
:title="j.lineEdgeLibraryCode"> | |||
<el-popover | |||
placement="top-start" | |||
:title="j.lineEdgeLibraryCode" | |||
width="200" | |||
trigger="hover"> | |||
<div class="point"/>托盘编码: {{ j.trayCode }}<br/> | |||
<div class="point"/>Agv地码: {{ j.agvGroundCode }} | |||
<div | |||
slot="reference" | |||
class="hoverDiv" | |||
:style="{ | |||
cursor: | |||
j.lineEdgeLibraryState === 1 ? 'not-allowed' : 'pointer', | |||
background: bgColor[j.lineEdgeLibraryState], | |||
}"></div> | |||
</el-popover> | |||
</div> | |||
</el-row> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import basicPage from '../mixins/basic-page'; | |||
import { getLineList } from '@/api/asrs/warehouseStorehouse'; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getLineList, | |||
}, | |||
listQuery: {}, | |||
wareData: [], | |||
bgColor: ['#d3d3d3', '#7362F3', '#16DC09'], //空,锁,满 | |||
formConfig: [ | |||
{ | |||
type: 'button', | |||
btnName: '刷新', | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
], | |||
}; | |||
}, | |||
components: {}, | |||
created() {}, | |||
methods: { | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
this.getDataList(); | |||
break; | |||
case 'export': | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
// 获取数据列表 | |||
getDataList() { | |||
this.dataListLoading = true; | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
this.wareData = response.data; | |||
console.log(this.wareData); | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.mainbody { | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: space-around; | |||
min-width: 80vw; | |||
border-radius: 5px; | |||
} | |||
.flex-warp { | |||
flex-wrap: nowrap; | |||
} | |||
.dashboard-layout-item { | |||
width: 30px; | |||
height: 30px; | |||
background-color: #d3d3d3; | |||
border-radius: 2px; | |||
margin: 0 6px 6px 0; | |||
position: relative; | |||
&:first-child { | |||
margin-left: 40px; | |||
} | |||
&:last-child { | |||
margin-right: 30px; | |||
} | |||
} | |||
.hoverDiv { | |||
width: 100%; | |||
height: 30px; | |||
&:hover { | |||
border: 1px #000000 dashed; | |||
transform: scale(1.3); | |||
} | |||
} | |||
.el-divider--horizontal { | |||
margin-top: 10px; | |||
} | |||
.el-divider { | |||
background-color: black; | |||
} | |||
.tips { | |||
position: absolute; | |||
top: 22px; | |||
right: 120px; | |||
} | |||
.point{ | |||
width: 5px; | |||
height: 5px; | |||
border-radius: 50%; | |||
background-color: #409EFF; | |||
float: left; | |||
margin-top: 7px; | |||
margin-right: 5px; | |||
} | |||
</style> |
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:55 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2024-02-22 11:20:04 | |||
* @LastEditTime: 2024-02-22 16:47:31 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -131,10 +131,6 @@ const tableProps = [ | |||
prop: 'goodSpecificationName', | |||
label: '产品名', | |||
}, | |||
{ | |||
prop: 'goodSpecificationCode', | |||
label: '产品编码', | |||
}, | |||
{ | |||
prop: 'specification', | |||
label: '产品规格', | |||
@@ -145,7 +141,6 @@ const tableProps = [ | |||
prop: 'rollCode', | |||
label: '膜卷编码', | |||
subcomponent: inputArea, | |||
width: 100, | |||
}, | |||
{ | |||
prop: 'number', | |||
@@ -203,6 +203,12 @@ export default { | |||
placeholder: '托盘编码', | |||
param: 'code', | |||
}, | |||
{ | |||
type: 'input', | |||
label: '膜卷编码', | |||
placeholder: '膜卷编码', | |||
param: 'rollCode', | |||
}, | |||
{ | |||
type: 'input', | |||
label: '产品名', | |||
@@ -293,6 +299,7 @@ export default { | |||
this.listQuery.trayCode = val.code; | |||
this.listQuery.goodName = val.pname; | |||
this.listQuery.quality = val.quality; | |||
this.listQuery.rollCode = val.rollCode; | |||
this.listQuery.process = val.processId; | |||
this.listQuery.warehouseStorehouseState = | |||
val.warehouseStorehouseStateId; | |||
@@ -198,6 +198,12 @@ export default { | |||
placeholder: '托盘编码', | |||
param: 'code', | |||
}, | |||
{ | |||
type: 'input', | |||
label: '膜卷编码', | |||
placeholder: '膜卷编码', | |||
param: 'rollCode', | |||
}, | |||
{ | |||
type: 'input', | |||
label: '产品名', | |||
@@ -288,6 +294,7 @@ export default { | |||
this.listQuery.wareLayer = val.wareLayer; | |||
this.listQuery.trayCode = val.code; | |||
this.listQuery.goodName = val.pname; | |||
this.listQuery.rollCode = val.rollCode; | |||
this.listQuery.quality = val.quality; | |||
this.listQuery.process = val.processId; | |||
this.listQuery.warehouseStorehouseState = val.warehouseStorehouseStateId; | |||
@@ -34,8 +34,6 @@ | |||
placeholder="请输入库位名" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="8"> | |||
<el-form-item label="托盘编码" prop="trayCode"> | |||
<el-input | |||
@@ -44,11 +42,30 @@ | |||
placeholder="请输入托盘编码" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="8"> | |||
<el-form-item label="选择起点区域" prop="region"> | |||
<el-select | |||
v-model="dataForm.region" | |||
style="width: 100%" | |||
@change="getPotArr" | |||
:popper-append-to-body="false" | |||
placeholder="请选择区域"> | |||
<el-option | |||
v-for="item in regionArr" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="8"> | |||
<el-form-item label="选择起点位置" prop="startInfo"> | |||
<el-select | |||
v-model="dataForm.startInfo" | |||
style="width: 100%" | |||
:disabled="potDisable" | |||
@change="$forceUpdate()" | |||
placeholder="请选择起点位置"> | |||
<el-option | |||
@@ -125,7 +142,7 @@ | |||
<product-attr-add | |||
v-if="addOrUpdateVisible" | |||
ref="addOrUpdate" | |||
:warehouse-id="dataForm.warehouseId" | |||
:warehouse-id="warehouseId" | |||
@refreshDataList="addList" /> | |||
</el-drawer> | |||
</template> | |||
@@ -154,10 +171,6 @@ const tableProps = [ | |||
prop: 'goodSpecificationName', | |||
label: '产品名', | |||
}, | |||
{ | |||
prop: 'goodSpecificationCode', | |||
label: '产品编码', | |||
}, | |||
{ | |||
prop: 'specification', | |||
label: '产品规格', | |||
@@ -168,7 +181,6 @@ const tableProps = [ | |||
prop: 'rollCode', | |||
label: '膜卷编码', | |||
subcomponent: inputArea, | |||
width: 100, | |||
}, | |||
{ | |||
prop: 'number', | |||
@@ -210,6 +222,15 @@ const processArr = [ | |||
id: 4, | |||
}, | |||
]; | |||
const regionArr = [ | |||
{ name: '一次分切区域', id: 1 }, | |||
{ name: '一次分拣区域', id: 2 }, | |||
{ name: '二次分切区域', id: 3 }, | |||
{ name: '二次分拣区域', id: 4 }, | |||
{ name: '包装区域', id: 5 }, | |||
{ name: '涂覆区域', id: 6 }, | |||
{ name: '其他', id: 7 }, | |||
]; | |||
export default { | |||
components: { productAttrAdd, SmallTitle }, | |||
data() { | |||
@@ -222,14 +243,18 @@ export default { | |||
addButtonShow: '新增', | |||
processArr, | |||
potArr: [], | |||
regionArr, | |||
potDisable: true, | |||
dataForm: { | |||
id: null, | |||
region: undefined, | |||
warehouseStorehouseName: '', | |||
warehouseStorehouseCode: '', | |||
process: '', | |||
trayCode: '', | |||
startInfo: '', | |||
}, | |||
warehouseId: null, | |||
isloading: false, | |||
updata: {}, | |||
listQuery: { | |||
@@ -261,18 +286,18 @@ export default { | |||
}, | |||
init(val) { | |||
this.isloading = false; | |||
this.potDisable = true | |||
this.updata = val; | |||
this.warehouseId = val.warehouseId | |||
this.dataForm.id = val.id; | |||
this.dataForm.warehouseStorehouseName = val.warehouseStorehouseName; | |||
this.dataForm.warehouseStorehouseCode = val.warehouseStorehouseCode; | |||
this.dataForm.process = val.process; | |||
this.dataForm.trayCode = val.trayCode; | |||
this.dataForm.startInfo = ''; | |||
this.dataForm.region = null; | |||
this.initData(); | |||
this.visible = true; | |||
getLineList().then((response) => { | |||
this.potArr = response.data; | |||
}); | |||
this.$nextTick(() => { | |||
this.$refs['dataForm'].resetFields(); | |||
@@ -283,6 +308,12 @@ export default { | |||
} | |||
}); | |||
}, | |||
getPotArr(val) { | |||
getLineList({ 'region': val,'warehouseId':this.warehouseId }).then((response) => { | |||
this.potArr = response.data; | |||
this.potDisable = false; | |||
}); | |||
}, | |||
getList() { | |||
// 获取产品的属性列表 | |||
@@ -382,7 +413,9 @@ export default { | |||
data.productInfo.number = 1; | |||
data.productInfo.quality = data.quality; | |||
for (let i = 0; i < data.number; i++) { | |||
this.productAttributeList.push(JSON.parse(JSON.stringify(data.productInfo))); | |||
this.productAttributeList.push( | |||
JSON.parse(JSON.stringify(data.productInfo)) | |||
); | |||
} | |||
}, | |||
goback() { | |||
@@ -229,6 +229,12 @@ export default { | |||
placeholder: '托盘编码', | |||
param: 'code', | |||
}, | |||
{ | |||
type: 'input', | |||
label: '膜卷编码', | |||
placeholder: '膜卷编码', | |||
param: 'rollCode', | |||
}, | |||
{ | |||
type: 'input', | |||
label: '产品名', | |||
@@ -319,6 +325,7 @@ export default { | |||
this.listQuery.wareLayer = val.wareLayer; | |||
this.listQuery.trayCode = val.code; | |||
this.listQuery.goodName = val.pname; | |||
this.listQuery.rollCode = val.rollCode; | |||
this.listQuery.quality = val.quality; | |||
this.listQuery.process = val.processId; | |||
this.listQuery.warehouseStorehouseState = | |||
@@ -353,7 +360,7 @@ export default { | |||
this.addOrUpdateVisible = true; | |||
this.addOrEditTitle = '出库'; | |||
this.$nextTick(() => { | |||
this.$refs.addOrUpdate.init(val.data.id, 0); | |||
this.$refs.addOrUpdate.init(val.data.id, 0,this.listQuery.warehouseId); | |||
}); | |||
} else if (val.type === 'move') { | |||
this.addOrUpdateVisible = true; | |||
@@ -230,6 +230,12 @@ export default { | |||
placeholder: '托盘编码', | |||
param: 'code', | |||
}, | |||
{ | |||
type: 'input', | |||
label: '膜卷编码', | |||
placeholder: '膜卷编码', | |||
param: 'rollCode', | |||
}, | |||
{ | |||
type: 'input', | |||
label: '产品名', | |||
@@ -321,6 +327,7 @@ export default { | |||
this.listQuery.trayCode = val.code; | |||
this.listQuery.goodName = val.pname; | |||
this.listQuery.quality = val.quality; | |||
this.listQuery.rollCode = val.rollCode; | |||
this.listQuery.process = val.processId; | |||
this.listQuery.warehouseStorehouseState = | |||
val.warehouseStorehouseStateId; | |||
@@ -353,7 +360,7 @@ export default { | |||
this.addOrUpdateVisible = true; | |||
this.addOrEditTitle = '出库'; | |||
this.$nextTick(() => { | |||
this.$refs.addOrUpdate.init(val.data.id, 0); | |||
this.$refs.addOrUpdate.init(val.data.id, 0,this.listQuery.warehouseId); | |||
}); | |||
} else if (val.type === 'move') { | |||
this.addOrUpdateVisible = true; | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2021-11-18 14:16:25 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2024-01-16 16:27:06 | |||
* @LastEditTime: 2024-02-27 15:22:13 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -15,11 +15,33 @@ | |||
<el-form-item | |||
v-if="!type" | |||
label-width="150px" | |||
label="选择出库到货位置" | |||
label="选择到货区域" | |||
class="drawer" | |||
prop="region"> | |||
<el-select | |||
v-model="dataForm.region" | |||
style="width: 100%" | |||
@change="getOutArr" | |||
:popper-append-to-body="false" | |||
placeholder="请选择区域"> | |||
<el-option | |||
v-for="item in regionArr" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id" /> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item | |||
v-if="!type" | |||
label-width="150px" | |||
label="选择到货位置" | |||
class="drawer" | |||
prop="targetId"> | |||
<el-select | |||
v-model="dataForm.targetId" | |||
:disabled="outDisable" | |||
style="width: 100%" | |||
:popper-append-to-body="false" | |||
placeholder="请选择位置"> | |||
<el-option | |||
v-for="item in potArr" | |||
@@ -86,6 +108,15 @@ const potArr3 = [ | |||
{ label: '3层', id: 3 }, | |||
{ label: '4层', id: 4 }, | |||
]; | |||
const regionArr = [ | |||
{ name: '一次分切区域', id: 1 }, | |||
{ name: '一次分拣区域', id: 2 }, | |||
{ name: '二次分切区域', id: 3 }, | |||
{ name: '二次分拣区域', id: 4 }, | |||
{ name: '包装区域', id: 5 }, | |||
{ name: '涂覆区域', id: 6 }, | |||
{ name: '其他', id: 7 }, | |||
]; | |||
export default { | |||
mixins: [basicAdd], | |||
data() { | |||
@@ -95,6 +126,7 @@ export default { | |||
dataForm: { | |||
sourceId: undefined, | |||
targetId: undefined, | |||
region: undefined, | |||
wareRow: undefined, | |||
wareColumn: undefined, | |||
wareLayer: undefined, | |||
@@ -106,11 +138,16 @@ export default { | |||
potArr1: [], | |||
potArr2: [], | |||
potArr3, | |||
regionArr, | |||
type: 0, | |||
isloading: false, | |||
outDisable: true, // | |||
dataRule: { | |||
region: [ | |||
{ required: true, message: '区域不能为空', trigger: 'change' }, | |||
], | |||
targetId: [ | |||
{ required: true, message: '位置不能为空', trigger: 'blur' }, | |||
{ required: true, message: '位置不能为空', trigger: 'change' }, | |||
], | |||
wareRow: [{ required: true, message: '排不能为空', trigger: 'blur' }], | |||
wareColumn: [ | |||
@@ -126,7 +163,9 @@ export default { | |||
this.dataForm.sourceId = id || ''; | |||
this.warehouseId = wId || null; | |||
this.dataForm.targetId = null; | |||
this.dataForm.region = null | |||
this.type = type; | |||
this.outDisable = true | |||
this.visible = true; | |||
this.$nextTick(() => { | |||
this.$refs['dataForm'].resetFields(); | |||
@@ -149,9 +188,6 @@ export default { | |||
} | |||
return; | |||
} | |||
getLineList().then((response) => { | |||
this.potArr = response.data; | |||
}); | |||
getWarehouseStorehouse(id).then((response) => { | |||
this.wareInfo = response.data; | |||
}); | |||
@@ -166,6 +202,12 @@ export default { | |||
}); | |||
}); | |||
}, | |||
getOutArr(val){ | |||
getLineList({'region':val,'warehouseId':this.warehouseId}).then((response) => { | |||
this.potArr = response.data; | |||
this.outDisable = false | |||
}); | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
if (!this.isloading) { | |||
@@ -221,3 +263,9 @@ export default { | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.drawer >>> .el-select-dropdown__item { | |||
font-size: 20px; | |||
} | |||
</style> |