This commit is contained in:
朱文强 2024-10-24 16:26:27 +08:00
parent b6763f37aa
commit 30837f9858
25 changed files with 2326 additions and 364 deletions

View File

@ -11,13 +11,17 @@ export default {
type: String, type: String,
default: '', default: '',
}, },
componentName: {
type: String,
default: '',
},
num: { num: {
type: Number, type: Number,
default: 0, default: 0,
}, // }, //
}, },
render(h, context) { render(h, context) {
const { icon, title, num } = context.props; const { icon, title, num, componentName } = context.props;
const vnodes = []; const vnodes = [];
if (icon) { if (icon) {
@ -29,7 +33,7 @@ export default {
vnodes.push( vnodes.push(
<span slot="title" title={title}> <span slot="title" title={title}>
{title} {title}
<el-badge value={num} class="item" id="elBadge" /> <el-badge value={num} class="item" id={componentName} />
</span> </span>
); );
} else { } else {

View File

@ -1,3 +1,10 @@
<!--
* @Author: zwq
* @Date: 2023-08-17 15:10:53
* @LastEditors: zwq
* @LastEditTime: 2024-10-09 15:21:32
* @Description:
-->
<template> <template>
<div v-if="!item.hidden"> <div v-if="!item.hidden">
<template <template
@ -11,7 +18,8 @@
:index="resolvePath(onlyOneChild.path)" :index="resolvePath(onlyOneChild.path)"
:class="{ 'submenu-title-noDropdown': !isNest }"> :class="{ 'submenu-title-noDropdown': !isNest }">
<item <item
:num="message_num(onlyOneChild.meta)" :num="message_num(onlyOneChild)"
:componentName="onlyOneChild.componentName"
:icon="onlyOneChild.meta.icon || (item.meta && item.meta.icon)" :icon="onlyOneChild.meta.icon || (item.meta && item.meta.icon)"
:title="onlyOneChild.meta.title" /> :title="onlyOneChild.meta.title" />
</el-menu-item> </el-menu-item>
@ -85,7 +93,7 @@ export default {
// //
this.timer = setTimeout(this.refreshPage, timeToMidnight); this.timer = setTimeout(this.refreshPage, timeToMidnight);
}, },
refreshPage() { refreshPage(componentName) {
let remindCount = 0; let remindCount = 0;
const queryParams = { const queryParams = {
pageNo: 1, pageNo: 1,
@ -96,10 +104,12 @@ export default {
if (response.data.list.length > 0) { if (response.data.list.length > 0) {
rollTimeRemind(response.data.list[0].value).then((response) => { rollTimeRemind(response.data.list[0].value).then((response) => {
remindCount = response.length; remindCount = response.length;
console.log(componentName);
const elx = document const elx = document
.getElementById('elBadge') .getElementById(componentName)
.getElementsByClassName('el-badge__content')[0]; .getElementsByClassName('el-badge__content')[0];
console.log(elx) console.log(componentName);
console.log(elx);
elx.innerHTML = remindCount; elx.innerHTML = remindCount;
}); });
} }
@ -109,11 +119,12 @@ export default {
this.setTimer(); this.setTimer();
}, },
message_num(data) { message_num(data) {
if (data.title == '膜卷熟化时间提醒') { if (data.meta.title == '膜卷熟化时间提醒') {
console.log(data);
// //
this.refreshPage(); this.refreshPage(data.componentName);
setInterval(() => { setInterval(() => {
this.refreshPage(); this.refreshPage(data.componentName);
}, 1000 * 60 * 60 * 12); }, 1000 * 60 * 60 * 12);
let num = 0; // let num = 0; //
return num; return num;

View File

@ -122,7 +122,7 @@ export default {
}, },
getRealAlarm() { getRealAlarm() {
axios axios
.post('http://172.22.22.190/wcs-njlm/business/wcsTask/isAlarm') .post('http://172.22.22.190/wcs-njlm/business/wcsTask/isAlarm34')
.then((res) => { .then((res) => {
res.data.forEach((item, index) => { res.data.forEach((item, index) => {
if (index < 4) { if (index < 4) {

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-22 15:01:54 * @Date: 2023-08-22 15:01:54
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-10-11 16:43:48 * @LastEditTime: 2024-10-09 14:24:48
* @Description: * @Description:
--> -->
<template> <template>
@ -42,7 +42,7 @@ export default {
getDataListURL: getHistogram, getDataListURL: getHistogram,
}, },
listQuery: { listQuery: {
warehouseId: '1698950657556340737', warehouseId: '1696803324030865409',
goodName: '', goodName: '',
startTime: '', startTime: '',
endTime: '', endTime: '',
@ -81,7 +81,7 @@ export default {
barChart, barChart,
}, },
created() { created() {
this.listQuery.warehouseId = this.bId; this.listQuery.warehouseId = this.bId
this.getArr(); this.getArr();
}, },
methods: { methods: {

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-22 15:01:54 * @Date: 2023-08-22 15:01:54
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-10-13 14:45:55 * @LastEditTime: 2024-10-09 14:25:40
* @Description: * @Description:
--> -->
<template> <template>
@ -42,7 +42,7 @@ export default {
getDataListURL: getPieChart, getDataListURL: getPieChart,
}, },
listQuery: { listQuery: {
warehouseId: '1698950657556340737', warehouseId: '1696803324030865409',
startTime: '', startTime: '',
endTime: '', endTime: '',
}, },
@ -71,7 +71,7 @@ export default {
pieChart, pieChart,
}, },
created() { created() {
this.listQuery.warehouseId = this.bId; this.listQuery.warehouseId = this.bId
}, },
methods: { methods: {
// //

View File

@ -0,0 +1,427 @@
<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="200"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick" />
</base-table>
<pagination
:limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo"
:total="listQuery.total"
@pagination="getDataList" />
<base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
width="70%">
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit" />
</base-dialog>
</div>
</template>
<script>
import basicPage from '../mixins/basic-page';
import AddOrUpdate from './add-or-updata';
import { parseTime } from '../mixins/code-filter';
import {
getDeliveryPage,
restartDelivery,
pauseDelivery,
improveDelivery,
cancelDelivery,
deleteDelivery,
} from '@/api/oth/delivery';
import { getLineList } from '@/api/asrs/warehouseStorehouse';
import { getGoodSpecificationPage } from '@/api/asrs/goodSpecification';
import codeFilter from '../mixins/code-filter';
const tableProps = [
{
prop: 'deliveryCode',
label: '出库单号',
fixed: true,
},
{
prop: 'productName',
label: '货物名称',
},
{
prop: 'trayCode',
label: '托盘编码',
},
{
prop: 'needTrayNumber',
label: '所需托盘数',
width: 90,
},
{
prop: 'alreadyOutNumber',
label: '已补托盘数',
width: 90,
},
{
prop: 'status',
label: '出库单状态',
filter: codeFilter('status'),
width: 90,
},
{
prop: 'deliveryType',
label: '出库类型',
filter: codeFilter('deliveryType'),
width: 95,
},
{
prop: 'lineEdgeLibraryCode',
label: '码头位置',
},
{
prop: 'region',
label: '发货区域',
filter: codeFilter('region'),
},
{
prop: 'productQuality',
label: '货物品质',
},
{
prop: 'rollCode',
label: '膜卷号',
},
{
prop: 'trayType',
label: '托盘类型',
filter: codeFilter('trayType'),
width: 80,
},
{
prop: 'workOrder',
label: '产出工单',
},
{
prop: 'department',
label: '部门',
},
{
prop: 'applicant',
label: '申请人',
},
{
prop: 'process',
label: '工序',
},
{
prop: 'updateTime',
label: '更新时间',
filter: parseTime,
width: 150,
},
];
const regionArr = [
{ name: '一次分切区域1线', id: 1 },
{ name: '一次分拣区域', id: 2 },
{ name: '二次分切区域', id: 3 },
{ name: '二次分拣区域', id: 4 },
{ name: '手动包装区域', id: 5 },
{ name: '涂覆区域', id: 6 },
{ name: '其他', id: 7 },
{ name: '自动包装区域', id: 8 },
{ name: '一次分切区域2线', id: 9 },
{ name: '一次分切区域3线', id: 10 },
{ name: '一次分切区域4线', id: 11 },
];
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: getDeliveryPage,
deleteURL: deleteDelivery,
},
regionArr,
tableProps,
tableData: [],
tableBtn: [
{
type: 'restart',
btnName: '重启',
showParam: {
type: '&',
data: [
{
type: 'equal',
name: 'status',
value: 3,
},
],
},
},
{
type: 'pause',
btnName: '暂停',
showParam: {
type: '&',
data: [
{
type: 'unequal',
name: 'status',
value: 3,
},
],
},
},
{
type: 'improve',
btnName: '提升',
showParam: {
type: '&',
data: [
{
type: 'equal',
name: 'status',
value: 2,
},
],
},
},
{
type: 'cancel',
btnName: '取消',
},
].filter((v) => v),
formConfig: [
{
type: 'select',
label: '货物名称',
selectOptions: [],
param: 'productName',
defaultSelect: '',
filterable: true,
labelField: 'goodSpecificationName',
valueField: 'goodSpecificationName',
},
{
type: 'select',
label: '发货位置',
selectOptions: [],
param: 'lineEdgeLibraryCode',
defaultSelect: '',
filterable: true,
labelField: 'lineEdgeLibraryCode',
valueField: 'lineEdgeLibraryCode',
},
{
type: 'select',
label: '发货区域',
selectOptions: regionArr,
param: 'region',
defaultSelect: '',
filterable: true,
},
{
type: 'input',
label: '膜卷号',
placeholder: '膜卷号',
param: 'rollCode',
},
{
type: 'input',
label: '产出工单',
placeholder: '产出工单',
param: 'workOrder',
},
{
type: 'input',
label: '工序',
placeholder: '工序',
param: 'process',
},
{
type: 'input',
label: '托盘编码',
placeholder: '托盘编码',
param: 'trayCode',
},
{
type: 'input',
label: '货物品质',
placeholder: '货物品质',
param: 'quality',
},
{
type: 'button',
btnName: '搜索',
name: 'search',
color: 'primary',
},
{
type: 'separate',
},
{
type: 'button',
btnName: '新增',
name: 'add',
color: 'success',
plain: true,
},
],
};
},
components: { AddOrUpdate },
created() {
this.listQuery.warehouseId = this.bId
const params = {
pageSize: 100,
pageNo: 1,
warehouseId: this.listQuery.warehouseId,
};
getGoodSpecificationPage(params).then((response) => {
this.formConfig[0].selectOptions = response.data.list;
});
getLineList({ warehouseId: this.listQuery.warehouseId }).then(
(response) => {
this.formConfig[1].selectOptions = response.data;
}
);
},
methods: {
buttonClick(val) {
switch (val.btnName) {
case 'search':
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10;
this.listQuery.productName = val.productName;
this.listQuery.lineEdgeLibraryCode = val.lineEdgeLibraryCode || null;
this.listQuery.region = val.region || null;
this.listQuery.productQuality = val.quality || null;
this.listQuery.workOrder = val.workOrder || null;
this.listQuery.process = val.process || null;
this.listQuery.rollCode = val.rollCode || null;
this.listQuery.trayCode = val.trayCode || null;
this.getDataList();
break;
case 'add':
this.addOrEditTitle = '新增';
this.addOrUpdateVisible = true;
this.addOrUpdateHandle();
break;
default:
console.log(val);
}
},
//tableBtn
otherMethods(val) {
if (val.type === 'restart') {
this.$confirm(
`确定对出库单号:${val.data.deliveryCode}进行重启操作?`,
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
restartDelivery(val.data).then((response) => {
this.$message({
message: '重启操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getDataList();
},
});
});
})
.catch(() => {});
} else if (val.type === 'pause') {
this.$confirm(
`确定对出库单号:${val.data.deliveryCode}进行暂停操作?`,
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
pauseDelivery(val.data).then((response) => {
this.$message({
message: '暂停操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getDataList();
},
});
});
})
.catch(() => {});
} else if (val.type === 'improve') {
this.$confirm(
`确定对出库单号:${val.data.deliveryCode}进行提升操作?`,
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
improveDelivery(val.data).then((response) => {
this.$message({
message: '提升操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getDataList();
},
});
});
})
.catch(() => {});
} else {
this.$confirm(
`确定对出库单号:${val.data.deliveryCode}进行取消操作?`,
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
cancelDelivery(val.data).then((response) => {
this.$message({
message: '取消操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getDataList();
},
});
});
})
.catch(() => {});
}
},
},
};
</script>

View File

@ -0,0 +1,327 @@
<template>
<div class="app-container">
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />
<el-table
:data="tableData"
:header-cell-style="{
background: '#F2F4F9',
color: '#606266',
}"
border
v-loading="dataListLoading"
style="width: 100%"
ref="dataList">
<el-table-column type="expand">
<template slot-scope="scope">
<product :delivery-history-id="scope.row.id"></product>
</template>
</el-table-column>
<el-table-column prop="deliveryCode" label="出库单号" width="155" />
<el-table-column prop="productName" label="货物名称" />
<el-table-column prop="trayCode" label="托盘编码" />
<el-table-column prop="needTrayNumber" label="所需托盘数" width="90" />
<el-table-column prop="alreadyOutNumber" label="已补托盘数" width="90" />
<el-table-column prop="status" label="出库单状态" width="90">
<template slot-scope="scope">
<span>
{{ scope.row.status >= 0 ? status[scope.row.status] : '' }}
</span>
</template>
</el-table-column>
<el-table-column prop="deliveryType" label="出库类型" width="95">
<template slot-scope="scope">
<span>
{{
scope.row.deliveryType >= 0
? deliveryType[scope.row.deliveryType]
: ''
}}
</span>
</template>
</el-table-column>
<el-table-column prop="lineEdgeLibraryCode" label="码头位置" />
<el-table-column prop="region" label="发货区域" width="95">
<template slot-scope="scope">
<span>
{{ scope.row.region >= 0 ? region[scope.row.region] : '' }}
</span>
</template>
</el-table-column>
<el-table-column prop="productQuality" label="货物品质" width="75" />
<el-table-column prop="rollCode" label="膜卷号" />
<el-table-column prop="trayType" label="托盘类型" width="75">
<template slot-scope="scope">
<span>
{{ scope.row.trayType >= 0 ? trayType[scope.row.trayType] : '' }}
</span>
</template>
</el-table-column>
<el-table-column prop="workOrder" label="产出工单" />
<el-table-column prop="department" label="部门" />
<el-table-column prop="applicant" label="申请人" />
<el-table-column prop="process" label="工序" />
<el-table-column prop="createTime" label="创建时间" width="150">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="90">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleClick({ data: scope.row, type: 'mes' })"
v-hasPermi="['asrs:deliveryHis:mes']">
同步给mes
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
:limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo"
:total="listQuery.total"
@pagination="getDataList" />
</div>
</template>
<script>
import product from './product-mini';
import basicPage from '../mixins/basic-page';
import {
getDeliveryHisPage,
exportDeliveryHisExcel,
mesoutsync,
} from '@/api/oth/delivery';
import { getLineList } from '@/api/asrs/warehouseStorehouse';
import { getGoodSpecificationPage } from '@/api/asrs/goodSpecification';
const regionArr = [
{ name: '一次分切区域1线', id: 1 },
{ name: '一次分拣区域', id: 2 },
{ name: '二次分切区域', id: 3 },
{ name: '二次分拣区域', id: 4 },
{ name: '手动包装区域', id: 5 },
{ name: '涂覆区域', id: 6 },
{ name: '其他', id: 7 },
{ name: '自动包装区域', id: 8 },
{ name: '一次分切区域2线', id: 9 },
{ name: '一次分切区域3线', id: 10 },
{ name: '一次分切区域4线', id: 11 },
];
const region = [
'',
'一次分切区域1线',
'一次分拣区域',
'二次分切区域',
'二次分拣区域',
'手动包装区域',
'涂覆区域',
'其他',
'自动包装区域',
'一次分切区域2线',
'一次分切区域3线',
'一次分切区域4线',
];
const status = ['', '优先执行', '正常运行', '暂停', '完成', '取消'];
const deliveryType = ['', '单托盘出库', '多托盘出库', '点对点出库'];
const trayType = ['无要求', '6臂', '12臂'];
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: getDeliveryHisPage,
exportURL: exportDeliveryHisExcel,
},
status,
deliveryType,
trayType,
region,
tableData: [],
formConfig: [
{
type: 'select',
label: '货物名称',
selectOptions: [],
param: 'productName',
defaultSelect: '',
filterable: true,
labelField: 'goodSpecificationName',
valueField: 'goodSpecificationName',
},
{
type: 'select',
label: '发货位置',
selectOptions: [],
param: 'lineEdgeLibraryCode',
defaultSelect: '',
filterable: true,
labelField: 'lineEdgeLibraryCode',
valueField: 'lineEdgeLibraryCode',
},
{
type: 'select',
label: '发货区域',
selectOptions: regionArr,
param: 'region',
defaultSelect: '',
filterable: true,
},
{
type: 'input',
label: '膜卷号',
placeholder: '膜卷号',
param: 'rollCode',
},
{
type: 'input',
label: '复判等级',
placeholder: '复判等级',
param: 'epddj',
},
{
type: 'input',
label: '出库单号',
placeholder: '出库单号',
param: 'deliveryCode',
},
{
type: 'input',
label: '产出工单',
placeholder: '产出工单',
param: 'workOrder',
},
{
type: 'input',
label: '工序',
placeholder: '工序',
param: 'process',
},
{
type: 'input',
label: '托盘编码',
placeholder: '托盘编码',
param: 'trayCode',
},
{
type: 'input',
label: '货物品质',
placeholder: '货物品质',
param: 'quality',
},
{
type: 'button',
btnName: '搜索',
name: 'search',
color: 'primary',
},
{
type: this.$auth.hasPermi('asrs:deliveryHis:export') ? 'button' : '',
btnName: '导出',
name: 'export',
color: 'primary',
plain: true,
},
],
};
},
components: {
product,
},
created() {
this.listQuery.warehouseId = this.bId
const params = {
pageSize: 100,
pageNo: 1,
warehouseId: this.listQuery.warehouseId,
};
getGoodSpecificationPage(params).then((response) => {
this.formConfig[0].selectOptions = response.data.list;
});
getLineList({ warehouseId: this.listQuery.warehouseId }).then(
(response) => {
this.formConfig[1].selectOptions = response.data;
}
);
},
methods: {
buttonClick(val) {
switch (val.btnName) {
case 'search':
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10;
this.listQuery.productName = val.productName;
this.listQuery.lineEdgeLibraryCode = val.lineEdgeLibraryCode || null;
this.listQuery.region = val.region || null;
this.listQuery.productQuality = val.quality || null;
this.listQuery.workOrder = val.workOrder || null;
this.listQuery.process = val.process || null;
this.listQuery.rollCode = val.rollCode || null;
this.listQuery.epddj = val.epddj || null;
this.listQuery.trayCode = val.trayCode || null;
this.listQuery.deliveryCode = val.deliveryCode || null;
this.getDataList();
break;
case 'export':
const params = {
inventory: val.rollCode || null,
trayCode: val.trayCode || null,
deliveryCode: val.deliveryCode || null,
};
this.handleExport(params, '历史出库单导出');
break;
default:
console.log(val);
}
},
otherMethods(val) {
mesoutsync({
deliveryCode: val.data.deliveryCode,
trayCode: val.data.trayCode,
}).then(({ data }) => {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getDataList();
},
});
});
},
/** 导出按钮操作 */
handleExport(params, name) {
//
this.$modal
.confirm('是否确认 仅根据(膜卷号、出库单号和托盘编码) 条件导出!!!')
.then(() => {
this.exportLoading = true;
return this.urlOptions.exportURL(params);
})
.then((response) => {
this.$download.excel(response, name + '.xls');
this.exportLoading = false;
})
.catch(() => {});
},
},
};
</script>
<style>
.app-container .el-table .el-table__cell {
padding: 0;
height: 35px;
}
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
</style>

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2024-02-27 14:43:14 * @Date: 2024-02-27 14:43:14
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2024-04-25 16:39:35 * @LastEditTime: 2024-10-09 14:22:05
* @Description: * @Description:
--> -->
<template> <template>
@ -32,7 +32,7 @@
:popper-append-to-body="false" :popper-append-to-body="false"
placeholder="请选择位置"> placeholder="请选择位置">
<el-option <el-option
v-for="item in potArr" v-for="item in potSArr"
:key="item.id" :key="item.id"
:label="item.lineEdgeLibraryCode" :label="item.lineEdgeLibraryCode"
:value="item.id" /> :value="item.id" />
@ -66,7 +66,7 @@
:popper-append-to-body="false" :popper-append-to-body="false"
placeholder="请选择位置"> placeholder="请选择位置">
<el-option <el-option
v-for="item in potArr" v-for="item in potEArr"
:key="item.id" :key="item.id"
:label="item.lineEdgeLibraryCode" :label="item.lineEdgeLibraryCode"
:value="item.id" /> :value="item.id" />
@ -106,7 +106,8 @@ export default {
targetId: undefined, targetId: undefined,
region: undefined, region: undefined,
}, },
potArr: [], potSArr: [],
potEArr: [],
regionArr, regionArr,
SDisable: true, SDisable: true,
EDisable: true, EDisable: true,
@ -125,7 +126,7 @@ export default {
getSArr(val) { getSArr(val) {
getLineList({ region: val, warehouseId: this.warehouseId }).then( getLineList({ region: val, warehouseId: this.warehouseId }).then(
(response) => { (response) => {
this.potArr = response.data; this.potSArr = response.data;
this.SDisable = false; this.SDisable = false;
} }
); );
@ -133,7 +134,7 @@ export default {
getEArr(val) { getEArr(val) {
getLineList({ region: val, warehouseId: this.warehouseId }).then( getLineList({ region: val, warehouseId: this.warehouseId }).then(
(response) => { (response) => {
this.potArr = response.data; this.potEArr = response.data;
this.EDisable = false; this.EDisable = false;
} }
); );

View File

@ -77,7 +77,6 @@ export default {
deleteURL: deleteGoodSpecification, deleteURL: deleteGoodSpecification,
}, },
tableProps, tableProps,
bPage: true,
tableBtn: [ tableBtn: [
this.$auth.hasPermi(`asrs:good-specification:update`) this.$auth.hasPermi(`asrs:good-specification:update`)
? { ? {

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-22 15:01:54 * @Date: 2023-08-22 15:01:54
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2024-02-23 16:41:40 * @LastEditTime: 2024-10-09 10:34:59
* @Description: * @Description:
--> -->
<template> <template>
@ -53,9 +53,7 @@ export default {
barChart, barChart,
gaugeChart, gaugeChart,
}, },
created() { created() {},
this.listQuery.warehouseId = this.bId;
},
methods: { methods: {
// //
getDataList() { getDataList() {
@ -77,15 +75,16 @@ export default {
}; };
</script> </script>
<style scoped> <style lang="scss" scoped>
.chart-container { .chart-container {
min-height: calc(100vh - 120px - 8px); min-height: calc(100vh - 120px - 8px);
background-color: #f0f2f7; background-color: #f0f2f7;
} }
.chart-card { .chart-card {
min-height: calc(100vh - 120px - 8px); min-height: calc(100vh - 120px - 8px);
background-color: #fff; background-color: #fff;
border-radius: 8px;
padding: 16px; padding: 16px;
border-radius: 8px;
} }
</style> </style>

View File

@ -269,8 +269,8 @@ export default {
}, },
components: {}, components: {},
created() { created() {
this.listQuery.warehouseId = this.bId
this.setFormConfig(); this.setFormConfig();
this.listQuery.warehouseId = this.bId;
}, },
methods: { methods: {
setFormConfig() { setFormConfig() {

View File

@ -132,6 +132,18 @@ const mainTaskType = [
name: '平库移库', name: '平库移库',
id: 10, id: 10,
}, },
{
name: '盘库出库',
id: 11,
},
{
name: '盘库入库',
id: 12,
},
{
name: '盘库出库+移库',
id: 13,
},
]; ];
const mainTaskState = [ const mainTaskState = [
{ {
@ -278,9 +290,9 @@ export default {
}, },
components: {}, components: {},
created() { created() {
this.listQuery.warehouseId = this.bId
this.listQuery.mainTaskState = 5; this.listQuery.mainTaskState = 5;
this.setFormConfig(); this.setFormConfig();
this.listQuery.warehouseId = this.bId;
}, },
methods: { methods: {
setFormConfig() { setFormConfig() {

View File

@ -0,0 +1,293 @@
<template>
<div class="app-container">
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
:isFold="true"
@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 { getPage, exportExcel } from '@/api/oth/rollMessage';
const tableProps = [
{
prop: 'workOrderCode',
label: '入库单号',
width: 170,
},
{
prop: 'process',
label: '工序',
},
{
prop: 'trayCode',
label: '托盘编码',
},
{
prop: 'warehouseCode',
label: '库房编码',
},
{
prop: 'lineId',
label: '行号',
},
{
prop: 'cureTime',
label: '已熟化时间',
width: 90,
},
{
prop: 'inventory',
label: '膜卷号',
width: 167,
},
{
prop: 'locationType',
label: '货位类型',
},
{
prop: 'batchCode',
label: '批次号',
},
{
prop: 'containerCode',
label: '托盘',
},
{
prop: 'subContainerCode',
label: '悬臂',
},
{
prop: 'productCode',
label: '物料编码',
width: 120,
},
{
prop: 'description',
label: '产品名',
},
{
prop: 'planQty',
label: '数量',
},
{
prop: 'orderFrom',
label: '产出工单',
width: 100,
},
{
prop: 'finishTime',
label: '完成日期',
filter: parseTime,
width: 150,
},
{
prop: 'customerSpName',
label: '客户',
},
{
prop: 'destPoint',
label: '目的码头',
},
{
prop: 'resources',
label: '资源',
},
{
prop: 'grade',
label: '品质',
},
{
prop: 'bugCode',
label: '复判缺陷',
},
{
prop: 'gradingExplain',
label: '复判不良说明',
width: 100,
},
{
prop: 'model',
label: '型号',
},
{
prop: 'itype',
label: '物料类型',
},
{
prop: 'itypeDes',
label: '物料类型描述',
width: 100,
},
{
prop: 'customCode',
label: '客户编码',
},
{
prop: 'sfcCreateTime',
label: '膜卷生产时间',
filter: parseTime,
width: 150,
},
{
prop: 'createTime',
label: '创建时间',
filter: parseTime,
width: 150,
},
];
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: getPage,
exportURL: exportExcel,
},
tableProps,
tableData: [],
getTrayCode: undefined,
formConfig: [
{
type: 'input',
label: '托盘编码',
placeholder: '托盘编码',
param: 'code',
},
{
type: 'input',
label: '工序',
placeholder: '工序',
param: 'process',
},
{
type: 'input',
label: '膜卷号',
placeholder: '膜卷号',
param: 'rollCode',
},
{
type: 'input',
label: '产品名',
placeholder: '产品名',
param: 'productName',
},
{
type: 'input',
label: '品质',
placeholder: '品质',
param: 'grade',
},
{
type: 'input',
label: '入库单号',
placeholder: '入库单号',
param: 'workOrderCode',
},
{
type: 'datePicker',
label: '创建时间',
dateType: 'datetimerange',
format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
param: 'searchTime',
},
{
type: 'button',
btnName: '搜索',
name: 'search',
color: 'primary',
},
{
type: 'button',
btnName: '导出',
name: 'export',
color: 'primary',
plain: true,
},
],
};
},
components: {},
created() {
this.listQuery.warehouseId = this.bId
this.listQuery.trayCode = this.$route.query && this.$route.query.trayCode
this.formConfig[0].placeholder = this.listQuery.trayCode || '托盘编码'
this.getDataList();
},
methods: {
buttonClick(val) {
switch (val.btnName) {
case 'search':
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10;
this.listQuery.trayCode = val.code.trim() || null;
this.listQuery.process = val.process.trim() || null;
this.listQuery.rollCode = val.rollCode.trim() || null;
this.listQuery.productName = val.productName.trim() || null;
this.listQuery.grade = val.grade.trim() || null;
this.listQuery.workOrderCode = val.workOrderCode.trim() || null;
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null;
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : null;
this.getDataList();
break;
case 'reset':
this.$refs.searchBarForm.resetForm();
this.listQuery = {
pageSize: 10,
pageNo: 1,
total: 1,
};
this.getDataList();
break;
case 'export':
this.listQuery.trayCode = val.code || null;
this.listQuery.process = val.process || null;
this.listQuery.rollCode = val.rollCode || null;
this.listQuery.productName = val.productName || null;
this.listQuery.grade = val.grade || null;
this.listQuery.workOrderCode = val.workOrderCode || null;
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null;
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : null;
this.handleExport();
break;
default:
console.log(val);
}
},
/** 导出按钮操作 */
handleExport() {
//
this.$modal
.confirm('是否确认导出所有数据项?')
.then(() => {
this.exportLoading = true;
return this.urlOptions.exportURL(this.listQuery);
})
.then((response) => {
this.$download.excel(response, '膜卷信息.xls');
this.exportLoading = false;
})
.catch(() => {});
},
},
};
</script>

View File

@ -0,0 +1,183 @@
<!--
* @Author: zwq
* @Date: 2024-02-27 14:43:14
* @LastEditors: zwq
* @LastEditTime: 2024-10-09 14:40:07
* @Description:
-->
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />
<div v-if="containerCodeArr.length > 0">
<el-descriptions title="膜卷熟化时间信息" size="mini" border>
<el-descriptions-item label="当前设置天数">
{{ this.xDays.value }}
</el-descriptions-item>
<el-descriptions-item label="提醒数量">
{{ containerCodeArr.length }}
</el-descriptions-item>
<el-descriptions-item label="每页数量">
<el-input-number
v-model="pageSize"
:step="50"
:min="100"
size="small"
step-strictly />
</el-descriptions-item>
</el-descriptions>
<el-divider content-position="left">
以下每页上限 {{ pageSize }} 条数据
</el-divider>
<el-tabs v-model="activeName">
<el-tab-pane
v-for="i in Math.ceil(containerCodeArr.length / pageSize)"
:key="i"
:label="'第' + i + '页'"
:name="i + '页'">
<el-tag
style="margin: 5px; border: 1px solid #67c23a;cursor: pointer;"
v-for="(item, index) in containerCodeArr.slice(
(i - 1) * pageSize,
i * pageSize
)"
:key="index"
effect="plain"
@click="toRollMessagePage(item.containerCode)"
size="small">
{{ item.containerCode }}
</el-tag>
</el-tab-pane>
</el-tabs>
</div>
</div>
</template>
<script>
import { listData, updateData } from '@/api/system/dict/data';
import {
rollTimeRemind,
exportgetoverfinishtimeExcel,
} from '@/api/asrs/warehouseStorehouseGoodsSpecification';
export default {
data() {
return {
warehouseId: '1698950657556340737',
xDays: {},
containerCodeArr: [],
activeName: '1页',
pageSize: 200,
formConfig: [
{
type: 'input',
label: '设置天数',
placeholder: '设置天数',
param: 'day',
},
{
type: 'button',
btnName: '设置',
name: 'search',
color: 'primary',
},
{
type: 'button',
btnName: '导出',
name: 'export',
color: 'primary',
plain: true,
},
],
};
},
components: {},
created() {
this.init();
const queryParams = {
pageNo: 1,
pageSize: 99,
dictType: 'rollTimeRemind',
};
listData(queryParams).then((response) => {
this.formConfig[0].selectOptions = response.data.list;
if (response.data.list.length > 0) {
this.formConfig[0].placeholder = response.data.list[0].value;
this.xDays = response.data.list[0];
this.setDay();
}
});
},
methods: {
init() {},
setDay() {
this.containerCodeArr = [];
rollTimeRemind(this.xDays.value).then((response) => {
this.containerCodeArr = response;
});
},
buttonClick(val) {
switch (val.btnName) {
case 'search':
const regex = /^[1-9]\d*$/;
if (regex.test(val.day)) {
this.xDays.value = val.day;
this.setDay();
this.setDict(); //
} else {
this.$message({
message: '请输入正整数天数!',
type: 'warning',
});
}
break;
case 'export':
this.handleExport('膜卷熟化时间信息',val.day);
break;
default:
console.log(val);
}
},
/** 修改字典天数设置 */
setDict: function () {
updateData(this.xDays).then((response) => {});
},
/** 导出按钮操作 */
handleExport(name,day) {
//
this.$modal
.confirm('是否确认导出膜卷熟化时间信息')
.then(() => {
this.exportLoading = true;
return exportgetoverfinishtimeExcel(day);
})
.then((response) => {
this.$download.excel(response, name + '.xls');
this.exportLoading = false;
})
.catch(() => {});
},
/** 跳转膜卷信息页面 */
toRollMessagePage(trayCode){
this.$confirm(`是否跳转到膜卷信息页面? 托盘编码:[ ${trayCode} ]`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "success ",
})
.then(() => {
this.$router.push({
path: "rollMessage",
query:{
trayCode: trayCode
}
});
})
.catch(() => { });
}
},
};
</script>
<style lang="scss" scoped></style>

View File

@ -0,0 +1,584 @@
<!--
* @Author: zwq
* @Date: 2024-01-17 09:58:41
* @LastEditors: zwq
* @LastEditTime: 2024-10-09 10:04:32
* @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-row :gutter="20">
<el-col :span="12">
<el-divider class="divider" content-position="left">
二次分拣区
</el-divider>
<div v-for="i in 5" :key="i + 'G'">
<el-row style="margin-bottom: 10px" type="flex" class="flex-warp">
<div
class="dashboard-layout-item"
v-for="j in wareData
.filter(
(item) =>
item.agvGroundCode.substr(1, 2) == 6 - i &&
item.region === 4
)
.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 }}
<br />
<el-button
@click="lState(j.id)"
v-hasPermi="['asrs:warehouse-line-monitoring:change']"
type="text">
改变库位状态
</el-button>
<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-col>
<el-col :span="12">
<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 == 8).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 }}
<br />
<el-button
@click="lState(j.id)"
v-hasPermi="['asrs:warehouse-line-monitoring:change']"
type="text">
改变库位状态
</el-button>
<div
slot="reference"
class="hoverDiv"
:style="{
cursor:
j.lineEdgeLibraryState === 1 ? 'not-allowed' : 'pointer',
background: bgColor[j.lineEdgeLibraryState],
}"></div>
</el-popover>
</div>
</el-row>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-divider class="divider" content-position="left">
一次分拣区
</el-divider>
<div v-for="i in 7" :key="i + 'F'">
<el-row style="margin-bottom: 10px" type="flex" class="flex-warp">
<!-- <div
class="dashboard-layout-item"
style="opacity: 0"
v-if="i === 7" /> -->
<div
class="dashboard-layout-item"
v-for="j in wareData
.filter(
(item) =>
item.agvGroundCode.substr(1, 2) == 8 - 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 }}
<br />
<el-button
@click="lState(j.id)"
v-hasPermi="['asrs:warehouse-line-monitoring:change']"
type="text">
改变库位状态
</el-button>
<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-col>
<el-col :span="12">
<el-divider class="divider" content-position="left">
手动包装区
</el-divider>
<div v-for="i in 2" :key="i + 'E'">
<el-row style="margin-bottom: 10px" type="flex" class="flex-warp">
<div
class="dashboard-layout-item"
v-for="j in wareData
.filter(
(item) =>
item.agvGroundCode.substr(1, 2) == i + 1 &&
item.region === 5
)
.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 }}
<br />
<el-button
@click="lState(j.id)"
v-hasPermi="['asrs:warehouse-line-monitoring:change']"
type="text">
改变库位状态
</el-button>
<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-col>
</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 == 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 }}
<br />
<el-button
@click="lState(j.id)"
v-hasPermi="['asrs:warehouse-line-monitoring:change']"
type="text">
改变库位状态
</el-button>
<div
slot="reference"
class="hoverDiv"
:style="{
cursor:
j.lineEdgeLibraryState === 1 ? 'not-allowed' : 'pointer',
background: bgColor[j.lineEdgeLibraryState],
}"></div>
</el-popover>
</div>
<el-divider direction="vertical"></el-divider>
<div
class="dashboard-layout-item"
v-for="j in wareData.filter((item) => item.region == 9).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-divider direction="vertical"></el-divider>
<div
class="dashboard-layout-item"
v-for="j in wareData.filter((item) => item.region == 10).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-divider direction="vertical"></el-divider>
<div
class="dashboard-layout-item"
v-for="j in wareData.filter((item) => item.region == 11).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 interval"
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 }}
<br />
<el-button
@click="lState(j.id)"
v-hasPermi="['asrs:warehouse-line-monitoring:change']"
type="text">
改变库位状态
</el-button>
<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>
<div v-for="i in 4" :key="i + 'C'">
<el-row style="margin-bottom: 10px" type="flex" class="flex-warp">
<div
class="dashboard-layout-item"
v-for="j in wareData
.filter(
(item) =>
item.agvGroundCode.substr(1, 2) == i && item.region === 6
)
.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 }}
<br />
<el-button
@click="lState(j.id)"
v-hasPermi="['asrs:warehouse-line-monitoring:change']"
type="text">
改变库位状态
</el-button>
<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>
<el-dialog title="改变库位状态" :visible.sync="dialogFormVisible">
<el-form :model="form" label-width="80px">
<el-form-item label="库位名称">
<el-input v-model="form.lineEdgeLibraryCode" readonly />
</el-form-item>
<el-form-item label="库位状态">
<el-radio-group v-model="form.lineEdgeLibraryState">
<el-radio :label="0"></el-radio>
<el-radio :label="1"></el-radio>
<el-radio :label="2"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="托盘编码">
<el-input
v-model="form.trayCode"
placeholder="请输入内容"
clearable />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false"> </el-button>
<el-button type="primary" @click="changeState"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import basicPage from '../mixins/basic-page';
import {
getLineList,
getLine,
updateLine,
} from '@/api/asrs/warehouseStorehouse';
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: getLineList,
},
listQuery: {},
wareData: [],
dialogFormVisible: false,
bgColor: ['#d3d3d3', '#7362F3', '#16DC09'], //
formConfig: [
{
type: this.$auth.hasPermi('asrs:warehouse-line-monitoring:query')
? 'button'
: '',
btnName: '刷新',
name: 'search',
color: 'primary',
},
],
form: {
id: undefined,
lineEdgeLibraryState: undefined,
trayCode: '',
},
};
},
components: {},
created() {
this.listQuery.warehouseId = this.bId
},
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;
this.dataListLoading = false;
});
},
lState(id) {
getLine(id).then((response) => {
this.form = response.data;
this.dialogFormVisible = true;
});
},
changeState() {
updateLine(this.form).then((response) => {
this.$modal.msgSuccess('修改成功');
this.dialogFormVisible = false;
this.getDataList();
});
},
},
};
</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;
}
}
.interval {
&:nth-child(2n) {
margin-right: 30px;
::before {
content: '';
}
::after {
content: '';
position: absolute;
right: -15px;
top: 1px;
z-index: 1;
background-color: black;
width: 1px;
height: 12px;
}
}
}
.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>

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2024-01-17 09:58:41 * @Date: 2024-01-17 09:58:41
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2024-09-23 14:05:14 * @LastEditTime: 2024-10-09 10:01:32
* @Description: * @Description:
--> -->
<template> <template>
@ -290,7 +290,7 @@ export default {
this.getDataList(); this.getDataList();
break; break;
case 'export': case 'export':
this.handleExport(this.aId); this.handleExport(this.aId,'库位监控-A仓库');
break; break;
default: default:
console.log(val); console.log(val);

View File

@ -1,276 +0,0 @@
<!--
* @Author: zwq
* @Date: 2023-08-21 14:26:23
* @LastEditors: zwq
* @LastEditTime: 2023-10-30 15:08:33
* @Description:
-->
<template>
<div class="app-container">
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />
<div class="tips">
<el-tag effect="dark" color="#7362F3" style="border: none"></el-tag>
<el-tag effect="dark" color="#16DC09" style="border: none"></el-tag>
<el-tag effect="dark" color="#FFA08F" style="border: none"></el-tag>
</div>
<div class="mainbody">
<div v-for="i in listQuery.total" :key="i">
<el-row>
<el-col :span="24">
<el-row type="flex" class="flex-warp">
<div
class="dashboard-layout-item"
v-for="a in wareData.one.slice((i - 1) * 10, i * 10)"
:key="a.id + a.warehouseStorehouseCode"
:title="a.warehouseStorehouseName"
style="background: #fff8e8; float: left">
<div
class="dashboard-layout-item-cricle"
:style="{
background: bgColor[a.warehouseStorehouseState],
}" />
<p class="p-name">{{ a.warehouseStorehouseName }}</p>
</div>
</el-row>
<el-row type="flex" class="flex-warp">
<div
class="dashboard-layout-item"
v-for="b in wareData.two.slice((i - 1) * 10, i * 10)"
:key="b.id + b.warehouseStorehouseCode"
:title="b.warehouseStorehouseName"
style="background: #fff8e8; float: left">
<div
class="dashboard-layout-item-cricle"
:style="{
background: bgColor[b.warehouseStorehouseState],
}" />
<p class="p-name">{{ b.warehouseStorehouseName }}</p>
</div>
</el-row>
</el-col>
</el-row>
<el-divider class="divider"></el-divider>
<el-row>
<el-col :span="24">
<el-row type="flex" class="flex-warp">
<div
class="dashboard-layout-item"
v-for="c in wareData.there.slice((i - 1) * 10, i * 10)"
:key="c.id + c.warehouseStorehouseCode"
:title="c.warehouseStorehouseName"
style="background: #fff8e8; float: left">
<div
class="dashboard-layout-item-cricle"
:style="{
background: bgColor[c.warehouseStorehouseState],
}" />
<p class="p-name">{{ c.warehouseStorehouseName }}</p>
</div>
</el-row>
<el-row type="flex" class="flex-warp">
<div
class="dashboard-layout-item"
v-for="d in wareData.four.slice((i - 1) * 10, i * 10)"
:key="d.id + d.warehouseStorehouseCode"
:title="d.warehouseStorehouseName"
style="background: #fff8e8; float: left">
<div
class="dashboard-layout-item-cricle"
:style="{
background: bgColor[d.warehouseStorehouseState],
}" />
<p class="p-name">{{ d.warehouseStorehouseName }}</p>
</div>
</el-row>
</el-col>
</el-row>
</div>
</div>
</div>
</template>
<script>
import basicPage from '../mixins/basic-page';
import {
getWarehouseStorehouseList,
exportWarehouseStorehouseExcel,
} from '@/api/asrs/warehouseStorehouse';
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: getWarehouseStorehouseList,
exportURL: exportWarehouseStorehouseExcel,
},
listQuery: {
//stacker: 1,
wareLayer: 1,
total: 0,
},
wareData: {
one: [],
two: [],
there: [],
four: [],
},
bgColor: ['#16DC09', '#FFA08F', '#7362F3'],
formConfig: [
{
type: 'select',
label: '选择巷道',
selectOptions: [
{ id: 1, name: '巷道一' },
{ id: 2, name: '巷道二' },
{ id: 3, name: '巷道三' },
{ id: 4, name: '巷道四' },
],
param: 'stacker',
filterable: true,
defaultSelect: 1,
clearable: false,
},
{
type: 'select',
label: '选择层',
selectOptions: [
{ id: 1, name: '1' },
{ id: 2, name: '2' },
{ id: 3, name: '3' },
{ id: 4, name: '4' },
],
param: 'value',
filterable: true,
defaultSelect: 1,
clearable: false,
},
{
type: 'button',
btnName: '搜索',
name: 'search',
color: 'primary',
},
{
type: 'button',
btnName: '下载',
name: 'export',
plain: true,
color: 'primary',
},
],
};
},
components: {},
created() {
this.listQuery.warehouseId = this.bId;
},
methods: {
//
getDataList() {
this.dataListLoading = true;
(this.wareData = {
one: [],
two: [],
there: [],
four: [],
}),
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
response.data.forEach((a, b) => {
if (b % 4 === 0) {
this.wareData.one.push(a);
} else if (b % 4 === 1) {
this.wareData.two.push(a);
} else if (b % 4 === 2) {
this.wareData.there.push(a);
} else if (b % 4 === 3) {
this.wareData.four.push(a);
}
});
this.listQuery.total = Math.ceil(response.data.length / 40);
this.dataListLoading = false;
});
},
buttonClick(val) {
switch (val.btnName) {
case 'search':
this.listQuery.wareLayer = val.value;
this.listQuery.stacker = val.stacker;
this.getDataList();
break;
case 'export':
this.handleExport(this.bId);
break;
default:
console.log(val);
}
},
},
};
</script>
<style lang="scss" scoped>
.mainbody {
display: flex;
gap: 70px;
flex-direction: column;
}
.flex-warp {
flex-wrap: nowrap;
}
.dashboard-layout-item {
width: 100px;
text-align: center;
height: 32px;
box-shadow: 0px 3px 6px 0px rgba(166, 174, 190, 0.8);
border-radius: 2px 4px 4px 2px;
margin: 0 3px 8px 0;
display: flex;
align-items: center;
justify-content: center;
position: relative;
.dashboard-layout-item-cricle {
display: inline-block;
width: 12px;
height: 12px;
border-radius: 6px;
position: absolute;
top: 10px;
left: 3px;
}
.p-name {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin-left: 15px;
}
&:hover {
cursor: pointer;
z-index: 10;
transform: scale(1.3) translateZ(0);
}
&:nth-child(2n) {
margin-right: 30px;
}
&:first-child {
margin-left: 50px;
}
&:last-child {
margin-right: 30px;
}
}
.el-divider--horizontal {
margin: 10px 0;
}
.el-divider {
background-color: black;
}
.tips {
position: absolute;
top: 22px;
right: 120px;
}
</style>

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2024-01-17 09:58:41 * @Date: 2024-01-17 09:58:41
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2024-02-22 14:08:47 * @LastEditTime: 2024-10-09 10:02:44
* @Description: * @Description:
--> -->
<template> <template>
@ -12,12 +12,14 @@
ref="searchBarForm" ref="searchBarForm"
@headBtnClick="buttonClick" /> @headBtnClick="buttonClick" />
<div class="tips"> <div class="tips">
<el-tag <el-button
effect="dark" type="primary"
color="#16DC09" size="mini"
style="border: none"> style="margin-right: 50px"
@click="stackerBtn">
</el-tag> 巷道开关
</el-button>
<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="#d3d3d3" style="border: none"></el-tag>
<el-tag effect="dark" color="#7362F3" style="border: none"></el-tag> <el-tag effect="dark" color="#7362F3" style="border: none"></el-tag>
<el-tag effect="dark" color="#ff0000" style="border: none">不可用</el-tag> <el-tag effect="dark" color="#ff0000" style="border: none">不可用</el-tag>
@ -213,6 +215,10 @@
ref="dialogRef" ref="dialogRef"
v-if="diaVisible" v-if="diaVisible"
@refreshDataList="getDataList"></pot-dialog> @refreshDataList="getDataList"></pot-dialog>
<stacker-dialog
ref="stackerRef"
v-if="stackerVisible"
:warehouse-id="listQuery.bId"></stacker-dialog>
</div> </div>
</template> </template>
@ -223,6 +229,7 @@ import {
exportWarehouseStorehouseExcel, exportWarehouseStorehouseExcel,
} from '@/api/asrs/warehouseStorehouse'; } from '@/api/asrs/warehouseStorehouse';
import potDialog from './potDialog'; import potDialog from './potDialog';
import stackerDialog from './stackerDialog';
export default { export default {
mixins: [basicPage], mixins: [basicPage],
@ -236,6 +243,7 @@ export default {
wareLayer: 1, wareLayer: 1,
}, },
diaVisible: false, diaVisible: false,
stackerVisible: false,
wareData: [], wareData: [],
bgColor: ['#d3d3d3', '#7362F3', '#16DC09'], // bgColor: ['#d3d3d3', '#7362F3', '#16DC09'], //
formConfig: [ formConfig: [
@ -271,9 +279,10 @@ export default {
}, },
components: { components: {
potDialog, potDialog,
stackerDialog,
}, },
created() { created() {
this.listQuery.warehouseId = this.bId; this.listQuery.warehouseId = this.bId
}, },
methods: { methods: {
buttonClick(val) { buttonClick(val) {
@ -283,7 +292,7 @@ export default {
this.getDataList(); this.getDataList();
break; break;
case 'export': case 'export':
this.handleExport(this.bId); this.handleExport(this.bId,'库位监控-B仓库');
break; break;
default: default:
console.log(val); console.log(val);
@ -304,6 +313,12 @@ export default {
this.$refs.dialogRef.init(); this.$refs.dialogRef.init();
}); });
}, },
stackerBtn() {
this.stackerVisible = true;
this.$nextTick(() => {
this.$refs.stackerRef.init();
});
},
}, },
}; };
</script> </script>

View File

@ -0,0 +1,357 @@
<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="90"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick" />
</base-table>
<pagination
:limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo"
:total="listQuery.total"
@pagination="getDataList" />
<add-or-update
v-if="addOrUpdateVisible"
ref="addOrUpdate"
@refreshDataList="getDataList" />
</div>
</template>
<script>
import basicPage from '../mixins/basic-page';
import { parseTime } from '../mixins/code-filter';
import codeFilter from '../mixins/code-filter';
import { getWarehousePklbPage } from '@/api/asrs/warehousePklb';
import AddOrUpdate from './add-or-updata';
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: '状态',
filter: codeFilter('mainTaskState'),
},
{
prop: 'statepk',
label: '盘库状态',
filter: codeFilter('statepk'),
},
{
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,
},
{
name: '已处理',
id: 9,
},
];
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: getWarehousePklbPage,
},
listQuery: {
pageSize: 10,
pageNo: 1,
total: 1,
},
tableProps,
tableBtn: [
{
type: 'check',
btnName: '检查',
showParam: {
type: '&',
data: [
{
type: 'equal',
name: 'mainTaskState',
value: 5,
},
],
},
},
{
type: 'detail',
btnName: '详情',
showParam: {
type: '&',
data: [
{
type: 'equal',
name: 'mainTaskState',
value: 9,
},
],
},
},
],
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: {
AddOrUpdate,
},
created() {
this.listQuery.warehouseId = this.bId
this.setFormConfig();
},
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) {
if (val.type === 'check') {
this.addOrUpdateVisible = true;
this.addOrEditTitle = '盘货明细表';
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data, false);
});
} else if (val.type === 'detail') {
this.addOrUpdateVisible = true;
this.addOrEditTitle = '盘货明细表';
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data, true);
});
}
},
},
};
</script>

View File

@ -102,7 +102,6 @@ export default {
deleteURL: deleteWarehouseStorehouse, deleteURL: deleteWarehouseStorehouse,
}, },
tableProps, tableProps,
bPage: true,
tableBtn: [ tableBtn: [
this.$auth.hasPermi(`asrs:warehouse-storehouse:update`) this.$auth.hasPermi(`asrs:warehouse-storehouse:update`)
? { ? {
@ -163,7 +162,7 @@ export default {
AddOrUpdate, AddOrUpdate,
}, },
created() { created() {
this.listQuery.warehouseId = this.bId; this.listQuery.warehouseId = this.bId
}, },
methods: { methods: {
buttonClick(val) { buttonClick(val) {

View File

@ -36,11 +36,14 @@
<span>{{ scope.row.cacheLocation === 0 ? '否' : '是' }}</span> <span>{{ scope.row.cacheLocation === 0 ? '否' : '是' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="warehouseStorehouseState" label="库位状态" width="100"> <el-table-column
prop="warehouseStorehouseState"
label="库位状态"
width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span> <span>
{{ {{
scope.row.warehouseStorehouseState>=0 scope.row.warehouseStorehouseState >= 0
? warehouseStorehouseState[scope.row.warehouseStorehouseState] ? warehouseStorehouseState[scope.row.warehouseStorehouseState]
.name .name
: '' : ''
@ -48,7 +51,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="80"> <el-table-column label="操作" width="70">
<template v-slot="scope"> <template v-slot="scope">
<span v-if="scope.row.deactivate === 1"> <span v-if="scope.row.deactivate === 1">
<el-button <el-button
@ -146,7 +149,6 @@ export default {
tableData: [], tableData: [],
processArr, processArr,
warehouseStorehouseState, warehouseStorehouseState,
bPage: true,
formConfig: [ formConfig: [
{ {
type: 'select', type: 'select',
@ -242,7 +244,7 @@ export default {
product, product,
}, },
created() { created() {
this.listQuery.warehouseId = this.bId; this.listQuery.warehouseId = this.bId
this.setFormConfig(); this.setFormConfig();
}, },
methods: { methods: {
@ -279,10 +281,11 @@ export default {
this.listQuery.wareLayer = val.wareLayer; this.listQuery.wareLayer = val.wareLayer;
this.listQuery.trayCode = val.code; this.listQuery.trayCode = val.code;
this.listQuery.goodName = val.pname; this.listQuery.goodName = val.pname;
this.listQuery.rollCode = val.rollCode;
this.listQuery.grade = val.quality; this.listQuery.grade = val.quality;
this.listQuery.rollCode = val.rollCode;
this.listQuery.process = val.processId; this.listQuery.process = val.processId;
this.listQuery.warehouseStorehouseState = val.warehouseStorehouseStateId; this.listQuery.warehouseStorehouseState =
val.warehouseStorehouseStateId;
this.getDataList(); this.getDataList();
break; break;
case 'reset': case 'reset':
@ -313,7 +316,6 @@ export default {
this.listQuery.warehouseStorehouseState = this.listQuery.warehouseStorehouseState =
val.warehouseStorehouseStateId; val.warehouseStorehouseStateId;
this.handleExport(this.listQuery,'库位产品导出'); this.handleExport(this.listQuery,'库位产品导出');
this.handleExport();
break; break;
default: default:
console.log(val); console.log(val);

View File

@ -326,7 +326,7 @@ export default {
case 'reset': case 'reset':
this.$refs.searchBarForm.resetForm(); this.$refs.searchBarForm.resetForm();
this.listQuery = { this.listQuery = {
warehouseId: '1696803324030865409', warehouseId: this.aId,
pageSize: 10, pageSize: 10,
pageNo: 1, pageNo: 1,
total: 1, total: 1,

View File

@ -51,7 +51,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="100"> <el-table-column label="操作" width="120">
<template v-slot="scope"> <template v-slot="scope">
<span v-if="scope.row.deactivate === 1"> <span v-if="scope.row.deactivate === 1">
<el-button <el-button
@ -59,7 +59,7 @@
v-if="scope.row.warehouseStorehouseState === 0" v-if="scope.row.warehouseStorehouseState === 0"
type="text" type="text"
@click="handleClick({ data: { id: scope.row }, type: 'in' })" @click="handleClick({ data: { id: scope.row }, type: 'in' })"
v-hasPermi="['asrs:warehouse-storehouse-storageb:in']"> v-hasPermi="['asrs:warehouse-storehouse-storage:in']">
入库 入库
</el-button> </el-button>
<el-button <el-button
@ -67,9 +67,17 @@
v-if="scope.row.warehouseStorehouseState === 2" v-if="scope.row.warehouseStorehouseState === 2"
type="text" type="text"
@click="handleClick({ data: scope.row, type: 'out' })" @click="handleClick({ data: scope.row, type: 'out' })"
v-hasPermi="['asrs:warehouse-storehouse-storageb:out']"> v-hasPermi="['asrs:warehouse-storehouse-storage:out']">
出库 出库
</el-button> </el-button>
<el-button
size="mini"
v-if="scope.row.warehouseStorehouseState === 2"
type="text"
@click="handleClick({ data: scope.row, type: 'make' })"
v-hasPermi="['asrs:warehouse-storehouse-storage:out']">
盘库
</el-button>
<el-button <el-button
size="mini" size="mini"
v-if="scope.row.warehouseStorehouseState === 2" v-if="scope.row.warehouseStorehouseState === 2"
@ -173,7 +181,6 @@ export default {
tableData: [], tableData: [],
processArr, processArr,
drawerVisible: false, drawerVisible: false,
bPage: true,
warehouseStorehouseState, warehouseStorehouseState,
formConfig: [ formConfig: [
{ {
@ -273,7 +280,7 @@ export default {
outOrMove, outOrMove,
}, },
created() { created() {
this.listQuery.warehouseId = this.bId; this.listQuery.warehouseId = this.bId
this.setFormConfig(); this.setFormConfig();
}, },
methods: { methods: {
@ -305,12 +312,13 @@ export default {
case 'search': case 'search':
this.listQuery.pageNo = 1; this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10; this.listQuery.pageSize = 10;
this.listQuery.wareRow = val.wareRow;
this.listQuery.wareColumn = val.wareColumn; this.listQuery.wareColumn = val.wareColumn;
this.listQuery.wareLayer = val.wareLayer; this.listQuery.wareLayer = val.wareLayer;
this.listQuery.trayCode = val.code; this.listQuery.trayCode = val.code;
this.listQuery.goodName = val.pname; this.listQuery.goodName = val.pname;
this.listQuery.grade = val.quality;
this.listQuery.rollCode = val.rollCode; this.listQuery.rollCode = val.rollCode;
this.listQuery.grade = val.quality;
this.listQuery.process = val.processId; this.listQuery.process = val.processId;
this.listQuery.warehouseStorehouseState = this.listQuery.warehouseStorehouseState =
val.warehouseStorehouseStateId; val.warehouseStorehouseStateId;
@ -319,6 +327,7 @@ export default {
case 'reset': case 'reset':
this.$refs.searchBarForm.resetForm(); this.$refs.searchBarForm.resetForm();
this.listQuery = { this.listQuery = {
warehouseId: this.bId,
pageSize: 10, pageSize: 10,
pageNo: 1, pageNo: 1,
total: 1, total: 1,
@ -356,7 +365,13 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.drawerRef.init(val.data.id); this.$refs.drawerRef.init(val.data.id);
}); });
} else if (val.type === 'restore') { } else if (val.type === 'make') {
this.addOrUpdateVisible = true;
this.addOrEditTitle = '盘库';
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id, false,this.listQuery.warehouseId);
});
}else if (val.type === 'restore') {
const dataForm = { const dataForm = {
id: val.data.id.id, id: val.data.id.id,
deactivate: 1, deactivate: 1,

View File

@ -22,14 +22,16 @@
</el-table-column> </el-table-column>
<el-table-column prop="warehouseName" label="仓库名"></el-table-column> <el-table-column prop="warehouseName" label="仓库名"></el-table-column>
<el-table-column prop="warehouseCode" label="仓库编码"></el-table-column> <el-table-column prop="warehouseCode" label="仓库编码"></el-table-column>
<el-table-column <el-table-column prop="warehouseStorehouseName" label="库位名" />
prop="warehouseStorehouseName"
label="库位名"></el-table-column>
<el-table-column <el-table-column
prop="warehouseStorehouseCode" prop="warehouseStorehouseCode"
label="库位编码"></el-table-column> label="库位编码"></el-table-column>
<el-table-column prop="workOrderCode" label="工单编码" />
<el-table-column prop="trayCode" label="托盘编码"></el-table-column> <el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<el-table-column prop="process" label="工序"></el-table-column> <el-table-column
prop="process"
label="工序"
width="110"></el-table-column>
<el-table-column prop="createTime" label="出入库时间"> <el-table-column prop="createTime" label="出入库时间">
<template v-slot="scope"> <template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
@ -37,7 +39,8 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="warehouseStorehouseStorageState" prop="warehouseStorehouseStorageState"
label="出入库状态"> label="出入库状态"
width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span> <span>
{{ {{
@ -171,7 +174,7 @@ export default {
product, product,
}, },
created() { created() {
this.listQuery.warehouseId = this.bId; this.listQuery.warehouseId = this.bId
}, },
methods: { methods: {
buttonClick(val) { buttonClick(val) {
@ -226,4 +229,11 @@ export default {
padding: 0; padding: 0;
height: 35px; height: 35px;
} }
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
</style> </style>

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2024-05-21 14:25:27 * @Date: 2024-05-21 14:25:27
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2024-05-21 16:44:47 * @LastEditTime: 2024-10-10 14:29:56
* @Description: * @Description:
--> -->
<template> <template>
@ -133,7 +133,7 @@ export default {
}, },
getInfo() { getInfo() {
axios axios
.post('http://172.22.22.190/wcs-njlm/business/wcsTask/isAlarm') .post('http://172.22.22.190/wcs-njlm/business/wcsTask/isAlarm34')
.then((res) => { .then((res) => {
console.log('实时报警') console.log('实时报警')
console.log(res.data) console.log(res.data)