This commit is contained in:
朱文强 2024-05-11 15:21:48 +08:00
parent 5cdd141dc4
commit cf2a5a7861
31 changed files with 860 additions and 490 deletions

View File

@ -2,7 +2,7 @@
# @Author: zwq # @Author: zwq
# @Date: 2023-08-17 15:10:53 # @Date: 2023-08-17 15:10:53
# @LastEditors: zwq # @LastEditors: zwq
# @LastEditTime: 2024-02-26 08:44:27 # @LastEditTime: 2024-05-11 15:03:43
# @Description: # @Description:
### ###
# 开发环境配置 # 开发环境配置
@ -12,9 +12,9 @@ ENV = 'development'
VUE_APP_TITLE = 南京锂膜管理系统 VUE_APP_TITLE = 南京锂膜管理系统
# 南京锂膜管理系统/开发环境 # 南京锂膜管理系统/开发环境
# VUE_APP_BASE_API = 'http://192.168.1.118:48080' # VUE_APP_BASE_API = 'http://192.168.1.118:48081'
VUE_APP_BASE_API = 'http://192.168.0.31:48081' # VUE_APP_BASE_API = 'http://192.168.0.31:48081'
# VUE_APP_BASE_API = 'http://192.168.1.26:48080' VUE_APP_BASE_API = 'http://192.168.1.20:48081'
# 路由懒加载 # 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true VUE_CLI_BABEL_TRANSPILE_MODULES = true

View File

@ -2,7 +2,7 @@
# @Author: zwq # @Author: zwq
# @Date: 2023-08-17 15:10:53 # @Date: 2023-08-17 15:10:53
# @LastEditors: zwq # @LastEditors: zwq
# @LastEditTime: 2024-03-13 15:10:27 # @LastEditTime: 2024-04-28 11:50:59
# @Description: # @Description:
### ###
# 生产环境配置 # 生产环境配置

View File

@ -1,3 +1,10 @@
<!--
* @Author: zwq
* @Date: 2023-08-17 15:10:52
* @LastEditors: zwq
* @LastEditTime: 2024-04-29 14:12:16
* @Description:
-->
<template> <template>
<div id="app"> <div id="app">
<router-view /> <router-view />
@ -6,19 +13,23 @@
</template> </template>
<script> <script>
import ThemePicker from "@/components/ThemePicker"; import ThemePicker from '@/components/ThemePicker';
export default { export default {
name: "App", name: 'App',
components: { ThemePicker }, components: { ThemePicker },
metaInfo() { metaInfo() {
return { return {
title: this.$store.state.settings.dynamicTitle && this.$store.state.settings.title, title:
titleTemplate: title => { this.$store.state.settings.dynamicTitle &&
return title ? `${title} - ${process.env.VUE_APP_TITLE}` : process.env.VUE_APP_TITLE this.$store.state.settings.title,
} titleTemplate: (title) => {
} return title
} ? `${title} - ${process.env.VUE_APP_TITLE}`
: process.env.VUE_APP_TITLE;
},
};
},
}; };
</script> </script>
<style scoped> <style scoped>

View File

@ -0,0 +1,25 @@
/*
* @Author: zwq
* @Date: 2024-05-10 10:02:43
* @LastEditors: zwq
* @LastEditTime: 2024-05-10 10:15:45
* @Description:
*/
import request from '@/utils/request'
// 获得分页
export function getPage(query) {
return request({
url: '/asrs/warehouse-storehouse-goods-specification/rollMessagePage',
method: 'get',
params: query
})
}
// 导出Excel
export function exportExcel(query) {
return request({
url: '/asrs/warehouse-storehouse-goods-specification/exportRollMessage',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,14 +1,34 @@
<template> <template>
<div :class="classObj" class="app-wrapper" :style="{'--current-color': theme}"> <div
<div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"/> :class="classObj"
class="app-wrapper"
:style="{ '--current-color': theme }">
<div
v-if="device === 'mobile' && sidebar.opened"
class="drawer-bg"
@click="handleClickOutside" />
<sidebar v-if="!sidebar.hide" class="sidebar-container" /> <sidebar v-if="!sidebar.hide" class="sidebar-container" />
<div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide}" class="main-container"> <div
<div :class="{'fixed-header':fixedHeader}"> :class="{ hasTagsView: needTagsView, sidebarHide: sidebar.hide }"
class="main-container">
<div :class="{ 'fixed-header': fixedHeader }">
<navbar /> <navbar />
<tags-view v-if="needTagsView" /> <tags-view v-if="needTagsView" />
</div> </div>
<app-main /> <app-main />
<div class="main-footer" style="color: #C7C7C7; user-select: none; font-size: 14px; letter-spacing: 1px; height: 30px; display: grid; place-content: center;">&copy; 中建材智能自动化研究院有限公司</div> <div
class="main-footer"
style="
color: #c7c7c7;
user-select: none;
font-size: 14px;
letter-spacing: 1px;
height: 30px;
display: grid;
place-content: center;
">
&copy; 中建材智能自动化研究院有限公司
</div>
<right-panel> <right-panel>
<settings /> <settings />
</right-panel> </right-panel>
@ -17,11 +37,12 @@
</template> </template>
<script> <script>
import RightPanel from '@/components/RightPanel' import RightPanel from '@/components/RightPanel';
import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components' import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components';
import ResizeMixin from './mixin/ResizeHandler' import ResizeMixin from './mixin/ResizeHandler';
import { mapState } from 'vuex' import { mapState } from 'vuex';
import variables from '@/assets/styles/variables.scss' import variables from '@/assets/styles/variables.scss';
import axios from 'axios';
export default { export default {
name: 'Layout', name: 'Layout',
@ -31,41 +52,74 @@ export default {
RightPanel, RightPanel,
Settings, Settings,
Sidebar, Sidebar,
TagsView TagsView,
}, },
mixins: [ResizeMixin], mixins: [ResizeMixin],
computed: { computed: {
...mapState({ ...mapState({
theme: state => state.settings.theme, theme: (state) => state.settings.theme,
sideTheme: state => state.settings.sideTheme, sideTheme: (state) => state.settings.sideTheme,
sidebar: state => state.app.sidebar, sidebar: (state) => state.app.sidebar,
device: state => state.app.device, device: (state) => state.app.device,
needTagsView: state => state.settings.tagsView, needTagsView: (state) => state.settings.tagsView,
fixedHeader: state => state.settings.fixedHeader fixedHeader: (state) => state.settings.fixedHeader,
}), }),
classObj() { classObj() {
return { return {
hideSidebar: !this.sidebar.opened, hideSidebar: !this.sidebar.opened,
openSidebar: this.sidebar.opened, openSidebar: this.sidebar.opened,
withoutAnimation: this.sidebar.withoutAnimation, withoutAnimation: this.sidebar.withoutAnimation,
mobile: this.device === 'mobile' mobile: this.device === 'mobile',
} };
}, },
variables() { variables() {
return variables; return variables;
},
},
data() {
return {
instance: {
closed: true,
}, //
};
},
created() {
axios
.post('http://172.22.22.190/wcs-njlm/business/wcsTask/isonline')
.then((res) => {
if (res.code === 500) {
this.$notify({
title: '设备异常',
message: res.msg,
type: 'warning',
duration: 0,
});
} else {
console.log('通讯正常');
} }
})
.catch((error) => {
console.error('There was an error!', error);
this.$notify({
title: '通知',
message: '设备不在线,请稍后重试',
type: 'warning',
duration: 0,
});
});
}, },
methods: { methods: {
handleClickOutside() { handleClickOutside() {
this.$store.dispatch('app/closeSideBar', { withoutAnimation: false }) this.$store.dispatch('app/closeSideBar', { withoutAnimation: false });
} },
} },
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "~@/assets/styles/mixin.scss"; @import '~@/assets/styles/mixin.scss';
@import "~@/assets/styles/variables.scss"; @import '~@/assets/styles/variables.scss';
.app-wrapper { .app-wrapper {
@include clearfix; @include clearfix;

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:48 * @LastEditTime: 2024-05-09 11:29:53
* @Description: * @Description:
--> -->
<template> <template>
@ -16,7 +16,7 @@
<pieChart <pieChart
title="饼状图分析" title="饼状图分析"
ref="pieChart" ref="pieChart"
height="600px" height="650px"
v-if="tableData.totalNumber" v-if="tableData.totalNumber"
:total-number="tableData.totalNumber" :total-number="tableData.totalNumber"
:pie-data="tableData.list" /> :pie-data="tableData.list" />

View File

@ -16,7 +16,7 @@
<pieChart <pieChart
title="饼状图分析" title="饼状图分析"
ref="pieChart" ref="pieChart"
height="600px" height="650px"
v-if="tableData.totalNumber" v-if="tableData.totalNumber"
:total-number="tableData.totalNumber" :total-number="tableData.totalNumber"
:pie-data="tableData.list" /> :pie-data="tableData.list" />

View File

@ -61,7 +61,7 @@ export default {
text: '总数', text: '总数',
subtext: this.totalNumber, subtext: this.totalNumber,
top: '42%', // top: '42%', //
left: '50%', // left: '40%', //
textAlign: 'center', // textAlign: 'center', //
textStyle: { textStyle: {
color: 'rgba(203, 195, 195, 1)', color: 'rgba(203, 195, 195, 1)',
@ -76,21 +76,25 @@ export default {
formatter: '产品: {b}<br/>数量: {c}<br/>占比: {d}%', formatter: '产品: {b}<br/>数量: {c}<br/>占比: {d}%',
}, },
legend: { legend: {
bottom: '0%', type: 'scroll',
left: 'center', orient: 'vertical',
right: 10,
top: 20,
bottom: 20,
}, },
grid: { grid: {
top: 40, top: 40,
left: '2%', left: '2%',
right: '2%', right: '2%',
bottom: '3%', bottom: '0%',
containLabel: true, containLabel: true,
}, },
series: [ series: [
{ {
name: 'pie', name: 'pie',
type: 'pie', type: 'pie',
radius: ['55%', '80%'], radius: ['45%', '70%'],
center: ['40%', '50%'],
avoidLabelOverlap: true, // 线 avoidLabelOverlap: true, // 线
itemStyle: { itemStyle: {
borderRadius: 10, borderRadius: 10,

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2024-04-17 14:13:36 * @LastEditTime: 2024-05-09 09:33:08
* @Description: * @Description:
--> -->
<template> <template>
@ -24,7 +24,11 @@
filterable filterable
style="display: inline-block" style="display: inline-block"
@change="setShowTrayType" @change="setShowTrayType"
placeholder="请选择货物名称"> placeholder="请选择货物名称"
remote
:remote-method="remoteMethod"
value-key="id"
:loading="loading">
<el-option <el-option
v-for="item in productArr" v-for="item in productArr"
:key="item.id" :key="item.id"
@ -132,7 +136,7 @@ import { getLineList } from '@/api/asrs/warehouseStorehouse';
import { getGoodSpecificationPage } from '@/api/asrs/goodSpecification'; import { getGoodSpecificationPage } from '@/api/asrs/goodSpecification';
const regionArr = [ const regionArr = [
{ name: '一次分切区域', id: 1 }, { name: '一次分切区域1线', id: 1 },
{ name: '一次分拣区域', id: 2 }, { name: '一次分拣区域', id: 2 },
{ name: '二次分切区域', id: 3 }, { name: '二次分切区域', id: 3 },
{ name: '二次分拣区域', id: 4 }, { name: '二次分拣区域', id: 4 },
@ -140,6 +144,9 @@ const regionArr = [
{ name: '涂覆区域', id: 6 }, { name: '涂覆区域', id: 6 },
{ name: '其他', id: 7 }, { name: '其他', id: 7 },
{ name: '自动包装区域', id: 8 }, { name: '自动包装区域', id: 8 },
{ name: '一次分切区域2线', id: 9 },
{ name: '一次分切区域3线', id: 10 },
{ name: '一次分切区域4线', id: 11 },
]; ];
export default { export default {
mixins: [basicAdd], mixins: [basicAdd],
@ -175,6 +182,7 @@ export default {
{ id: 1, name: '6臂' }, { id: 1, name: '6臂' },
{ id: 2, name: '12臂' }, { id: 2, name: '12臂' },
], ],
loading: false,
dataRule: { dataRule: {
deliveryCode: [ deliveryCode: [
{ required: true, message: '出库单号不能为空', trigger: 'blur' }, { required: true, message: '出库单号不能为空', trigger: 'blur' },
@ -205,14 +213,23 @@ export default {
getLineList({ warehouseId: this.aId }).then((response) => { getLineList({ warehouseId: this.aId }).then((response) => {
this.potArr = response.data; this.potArr = response.data;
}); });
},
remoteMethod(query) {
if (query !== '') {
this.loading = true;
const params = { const params = {
pageSize: 100, pageSize: 100,
pageNo: 1, pageNo: 1,
warehouseId: this.aId, goodSpecificationName: query,
// warehouseId: this.warehouseId,
}; };
getGoodSpecificationPage(params).then((response) => { getGoodSpecificationPage(params).then((response) => {
this.loading = false;
this.productArr = response.data.list; this.productArr = response.data.list;
}); });
} else {
this.productArr = [];
}
}, },
setNeedTrayNumber(val) { setNeedTrayNumber(val) {
if (val === 1) { if (val === 1) {

View File

@ -1,20 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-tabs v-model="activeName" @tab-click="toggleTab">
<el-tab-pane label="单托盘出库" name="one">
<search-bar <search-bar
:formConfigs="formConfig" :formConfigs="formConfig"
ref="searchBarForm" ref="searchBarForm"
@headBtnClick="buttonClick" /> @headBtnClick="buttonClick" />
</el-tab-pane>
<el-tab-pane label="多托盘出库" name="more">
<search-bar
:formConfigs="formConfig2"
ref="searchBarForm2"
@headBtnClick="buttonClick" />
</el-tab-pane>
</el-tabs>
<div v-if="activeName === 'one'">
<base-table <base-table
v-loading="dataListLoading" v-loading="dataListLoading"
:table-props="tableProps" :table-props="tableProps"
@ -29,23 +18,6 @@
:method-list="tableBtn" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
</div>
<div v-if="activeName === 'more'">
<base-table
v-loading="dataListLoading"
:table-props="tableProps2"
: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>
</div>
<pagination <pagination
:limit.sync="listQuery.pageSize" :limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo" :page.sync="listQuery.pageNo"
@ -115,6 +87,11 @@ const tableProps = [
prop: 'lineEdgeLibraryCode', prop: 'lineEdgeLibraryCode',
label: '码头位置', label: '码头位置',
}, },
{
prop: 'region',
label: '发货区域',
filter: codeFilter('region'),
},
{ {
prop: 'productQuality', prop: 'productQuality',
label: '货物品质', label: '货物品质',
@ -136,62 +113,8 @@ const tableProps = [
width: 150, width: 150,
}, },
]; ];
const tableProps2 = [
{
prop: 'deliveryCode',
label: '出库单号',
fixed: true,
},
{
prop: 'productName',
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: 'region',
label: '发货区域',
filter: codeFilter('region'),
},
{
prop: 'productQuality',
label: '货物品质',
},
{
prop: 'trayType',
label: '托盘类型',
filter: codeFilter('trayType'),
width: 80,
},
{
prop: 'updateTime',
label: '更新时间',
filter: parseTime,
width: 150,
},
];
const regionArr = [ const regionArr = [
{ name: '一次分切区域', id: 1 }, { name: '一次分切区域1线', id: 1 },
{ name: '一次分拣区域', id: 2 }, { name: '一次分拣区域', id: 2 },
{ name: '二次分切区域', id: 3 }, { name: '二次分切区域', id: 3 },
{ name: '二次分拣区域', id: 4 }, { name: '二次分拣区域', id: 4 },
@ -199,6 +122,9 @@ const regionArr = [
{ name: '涂覆区域', id: 6 }, { name: '涂覆区域', id: 6 },
{ name: '其他', id: 7 }, { name: '其他', id: 7 },
{ name: '自动包装区域', id: 8 }, { name: '自动包装区域', id: 8 },
{ name: '一次分切区域2线', id: 9 },
{ name: '一次分切区域3线', id: 10 },
{ name: '一次分切区域4线', id: 11 },
]; ];
export default { export default {
mixins: [basicPage], mixins: [basicPage],
@ -210,12 +136,7 @@ export default {
}, },
regionArr, regionArr,
tableProps, tableProps,
tableProps2,
tableData: [], tableData: [],
activeName: 'one',
listQuery: {
deliveryType: '1',
},
tableBtn: [ tableBtn: [
{ {
type: 'restart', type: 'restart',
@ -285,34 +206,6 @@ export default {
labelField: 'lineEdgeLibraryCode', labelField: 'lineEdgeLibraryCode',
valueField: 'lineEdgeLibraryCode', valueField: 'lineEdgeLibraryCode',
}, },
{
type: 'button',
btnName: '搜索',
name: 'search',
color: 'primary',
},
{
type: 'separate',
},
{
type: 'button',
btnName: '新增',
name: 'add',
color: 'success',
plain: true,
},
],
formConfig2: [
{
type: 'select',
label: '货物名称',
selectOptions: [],
param: 'productName',
defaultSelect: '',
filterable: true,
labelField: 'goodSpecificationName',
valueField: 'goodSpecificationName',
},
{ {
type: 'select', type: 'select',
label: '发货区域', label: '发货区域',
@ -321,6 +214,12 @@ export default {
defaultSelect: '', defaultSelect: '',
filterable: true, filterable: true,
}, },
{
type: 'input',
label: '货物品质',
placeholder: '货物品质',
param: 'quality',
},
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '搜索',
@ -363,13 +262,9 @@ export default {
this.listQuery.pageNo = 1; this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10; this.listQuery.pageSize = 10;
this.listQuery.productName = val.productName; this.listQuery.productName = val.productName;
if (this.listQuery.deliveryType === '1') { this.listQuery.lineEdgeLibraryCode = val.lineEdgeLibraryCode || null;
this.listQuery.lineEdgeLibraryCode = val.lineEdgeLibraryCode; this.listQuery.region = val.region || null;
this.listQuery.region = null; this.listQuery.productQuality = val.quality || null;
} else {
this.listQuery.lineEdgeLibraryCode = null;
this.listQuery.region = val.region;
}
this.getDataList(); this.getDataList();
break; break;
case 'add': case 'add':
@ -381,17 +276,6 @@ export default {
console.log(val); console.log(val);
} }
}, },
toggleTab() {
if (this.activeName === 'one') {
this.listQuery.deliveryType = '1';
this.listQuery.region = null;
} else {
this.listQuery.deliveryType = '2';
this.listQuery.lineEdgeLibraryCode = null;
}
this.listQuery.pageNo = 1;
this.getDataList();
},
//tableBtn //tableBtn
otherMethods(val) { otherMethods(val) {
if (val.type === 'restart') { if (val.type === 'restart') {

View File

@ -23,6 +23,7 @@ import basicPage from '../mixins/basic-page';
import { parseTime } from '../mixins/code-filter'; import { parseTime } from '../mixins/code-filter';
import { getDeliveryHisPage } from '@/api/oth/delivery'; import { getDeliveryHisPage } from '@/api/oth/delivery';
import codeFilter from '../mixins/code-filter'; import codeFilter from '../mixins/code-filter';
import { getLineList } from '@/api/asrs/warehouseStorehouse';
import { getGoodSpecificationPage } from '@/api/asrs/goodSpecification'; import { getGoodSpecificationPage } from '@/api/asrs/goodSpecification';
const tableProps = [ const tableProps = [
@ -86,9 +87,18 @@ const tableProps = [
width: 150, width: 150,
}, },
]; ];
const deliveryTypeArr = [ const regionArr = [
{ name: '单托盘出库', id: 1 }, { name: '一次分切区域1线', id: 1 },
{ name: '多托盘出库', id: 2 }, { 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 { export default {
mixins: [basicPage], mixins: [basicPage],
@ -112,11 +122,27 @@ export default {
}, },
{ {
type: 'select', type: 'select',
label: '出库类型', label: '发货位置',
selectOptions: deliveryTypeArr, selectOptions: [],
param: 'deliveryType', param: 'lineEdgeLibraryCode',
defaultSelect: '', defaultSelect: '',
filterable: true, filterable: true,
labelField: 'lineEdgeLibraryCode',
valueField: 'lineEdgeLibraryCode',
},
{
type: 'select',
label: '发货区域',
selectOptions: regionArr,
param: 'region',
defaultSelect: '',
filterable: true,
},
{
type: 'input',
label: '货物品质',
placeholder: '货物品质',
param: 'quality',
}, },
{ {
type: 'button', type: 'button',
@ -137,6 +163,11 @@ export default {
getGoodSpecificationPage(params).then((response) => { getGoodSpecificationPage(params).then((response) => {
this.formConfig[0].selectOptions = response.data.list; this.formConfig[0].selectOptions = response.data.list;
}); });
getLineList({ warehouseId: this.listQuery.warehouseId }).then(
(response) => {
this.formConfig[1].selectOptions = response.data;
}
);
}, },
methods: { methods: {
buttonClick(val) { buttonClick(val) {
@ -145,7 +176,9 @@ export default {
this.listQuery.pageNo = 1; this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10; this.listQuery.pageSize = 10;
this.listQuery.productName = val.productName; this.listQuery.productName = val.productName;
this.listQuery.deliveryType = val.deliveryType; this.listQuery.lineEdgeLibraryCode = val.lineEdgeLibraryCode || null;
this.listQuery.region = val.region || null;
this.listQuery.productQuality = val.quality || null;
this.getDataList(); this.getDataList();
break; break;
default: default:

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-22 09:10:46 * @LastEditTime: 2024-04-25 16:39:32
* @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" />
@ -83,7 +83,7 @@
<script> <script>
import { getLineList, moveLine } from '@/api/asrs/warehouseStorehouse'; import { getLineList, moveLine } from '@/api/asrs/warehouseStorehouse';
const regionArr = [ const regionArr = [
{ name: '一次分切区域', id: 1 }, { name: '一次分切区域1线', id: 1 },
{ name: '一次分拣区域', id: 2 }, { name: '一次分拣区域', id: 2 },
{ name: '二次分切区域', id: 3 }, { name: '二次分切区域', id: 3 },
{ name: '二次分拣区域', id: 4 }, { name: '二次分拣区域', id: 4 },
@ -91,6 +91,9 @@ const regionArr = [
{ name: '涂覆区域', id: 6 }, { name: '涂覆区域', id: 6 },
{ name: '其他', id: 7 }, { name: '其他', id: 7 },
{ name: '自动包装区域', id: 8 }, { name: '自动包装区域', id: 8 },
{ name: '一次分切区域2线', id: 9 },
{ name: '一次分切区域3线', id: 10 },
{ name: '一次分切区域4线', id: 11 },
]; ];
export default { export default {
data() { data() {
@ -103,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,
@ -122,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;
} }
); );
@ -130,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

@ -2,20 +2,15 @@
* @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-22 09:10:59 * @LastEditTime: 2024-04-25 16:39:35
* @Description: * @Description:
--> -->
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="box-card"> <div class="box-card">
<div class="tip"> <div class="tip">码头起点</div>
码头起点
</div>
<el-form :inline="true" :model="startData" label-width="100px"> <el-form :inline="true" :model="startData" label-width="100px">
<el-form-item <el-form-item label="选择区域" class="drawer" prop="region">
label="选择区域"
class="drawer"
prop="region">
<el-select <el-select
v-model="startData.region" v-model="startData.region"
style="width: 100%" style="width: 100%"
@ -29,10 +24,7 @@
:value="item.id" /> :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="选择位置" class="drawer" prop="targetId">
label="选择位置"
class="drawer"
prop="targetId">
<el-select <el-select
v-model="startData.targetId" v-model="startData.targetId"
:disabled="SDisable" :disabled="SDisable"
@ -47,15 +39,12 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-divider style="margin-bottom:36px"><i class="el-icon-bottom"></i></el-divider> <el-divider style="margin-bottom: 36px">
<div class="tipe"> <i class="el-icon-bottom"></i>
码头终点 </el-divider>
</div> <div class="tipe">码头终点</div>
<el-form :inline="true" :model="endData" label-width="100px"> <el-form :inline="true" :model="endData" label-width="100px">
<el-form-item <el-form-item label="选择区域" class="drawer" prop="region">
label="选择区域"
class="drawer"
prop="region">
<el-select <el-select
v-model="endData.region" v-model="endData.region"
style="width: 100%" style="width: 100%"
@ -69,10 +58,7 @@
:value="item.id" /> :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="选择位置" class="drawer" prop="targetId">
label="选择位置"
class="drawer"
prop="targetId">
<el-select <el-select
v-model="endData.targetId" v-model="endData.targetId"
:disabled="EDisable" :disabled="EDisable"
@ -97,7 +83,7 @@
<script> <script>
import { getLineList, moveLine } from '@/api/asrs/warehouseStorehouse'; import { getLineList, moveLine } from '@/api/asrs/warehouseStorehouse';
const regionArr = [ const regionArr = [
{ name: '一次分切区域', id: 1 }, { name: '一次分切区域1线', id: 1 },
{ name: '一次分拣区域', id: 2 }, { name: '一次分拣区域', id: 2 },
{ name: '二次分切区域', id: 3 }, { name: '二次分切区域', id: 3 },
{ name: '二次分拣区域', id: 4 }, { name: '二次分拣区域', id: 4 },
@ -105,6 +91,9 @@ const regionArr = [
{ name: '涂覆区域', id: 6 }, { name: '涂覆区域', id: 6 },
{ name: '其他', id: 7 }, { name: '其他', id: 7 },
{ name: '自动包装区域', id: 8 }, { name: '自动包装区域', id: 8 },
{ name: '一次分切区域2线', id: 9 },
{ name: '一次分切区域3线', id: 10 },
{ name: '一次分切区域4线', id: 11 },
]; ];
export default { export default {
data() { data() {
@ -134,16 +123,20 @@ export default {
this.EDisable = true; this.EDisable = true;
}, },
getSArr(val) { getSArr(val) {
getLineList({ region: val,'warehouseId':this.warehouseId }).then((response) => { getLineList({ region: val, warehouseId: this.warehouseId }).then(
(response) => {
this.potArr = response.data; this.potArr = response.data;
this.SDisable = false; this.SDisable = false;
}); }
);
}, },
getEArr(val) { getEArr(val) {
getLineList({ region: val,'warehouseId':this.warehouseId }).then((response) => { getLineList({ region: val, warehouseId: this.warehouseId }).then(
(response) => {
this.potArr = response.data; this.potArr = response.data;
this.EDisable = false; this.EDisable = false;
}); }
);
}, },
move() { move() {
if (this.startData.targetId && this.endData.targetId) { if (this.startData.targetId && this.endData.targetId) {
@ -176,17 +169,17 @@ export default {
box-shadow: 0px 0px 5px 2px gray; box-shadow: 0px 0px 5px 2px gray;
position: relative; position: relative;
} }
.tip{ .tip {
position:absolute; position: absolute;
top: 20px; top: 20px;
left: 100px; left: 100px;
color: #409EFF; color: #409eff;
} }
.tipe{ .tipe {
position:absolute; position: absolute;
top: 150px; top: 150px;
left: 100px; left: 100px;
color: #409EFF; color: #409eff;
} }
.el-divider--horizontal { .el-divider--horizontal {
margin-bottom: 48px; margin-bottom: 48px;

View File

@ -2,7 +2,7 @@
/* /*
* @Date: 2020-12-29 16:49:28 * @Date: 2020-12-29 16:49:28
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2024-04-17 09:24:05 * @LastEditTime: 2024-04-25 16:39:43
* @FilePath: \basic-admin\src\filters\basicData\index.js * @FilePath: \basic-admin\src\filters\basicData\index.js
* @Description: * @Description:
*/ */
@ -51,6 +51,7 @@ const table = {
taskSource: { taskSource: {
1: 'mes下发', 1: 'mes下发',
2: 'wms手动', 2: 'wms手动',
3: '自动包装线',
}, },
cancellation: { cancellation: {
1: '否', 1: '否',
@ -72,7 +73,7 @@ const table = {
5: '取消', 5: '取消',
}, },
region: { region: {
1: '一次分切区域', 1: '一次分切区域1线',
2: '一次分拣区域', 2: '一次分拣区域',
3: '二次分切区域', 3: '二次分切区域',
4: '二次分拣区域', 4: '二次分拣区域',
@ -80,6 +81,9 @@ const table = {
6: '涂覆区域', 6: '涂覆区域',
7: '其他', 7: '其他',
8: '自动包装区域', 8: '自动包装区域',
9: '一次分切区域2线',
10: '一次分切区域3线',
11: '一次分切区域4线',
}, },
deliveryType: { deliveryType: {
1: '单托盘出库', 1: '单托盘出库',

View File

@ -2,17 +2,21 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-09-22 15:36:40 * @Date: 2023-09-22 15:36:40
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-09-26 15:59:57 * @LastEditTime: 2024-05-06 11:03:59
* @Description: * @Description:
--> -->
<template> <template>
<div class="tableInner"> <div class="tableInner">
<el-input v-model="list[itemProp]" @blur="changeInput" /> <el-input
v-model="list[itemProp]"
:id="'inputFocus'+injectData._pageIndex"
@blur="changeInput"
@keyup.enter.native="nextInput" />
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: "InputArea", name: 'InputArea',
props: { props: {
injectData: { injectData: {
type: Object, type: Object,
@ -29,15 +33,19 @@ export default {
}, },
methods: { methods: {
changeInput() { changeInput() {
this.list.sType = 1 this.list.sType = 1;
this.$emit("emitData", this.list,1); this.$emit('emitData', this.list, 1);
}, },
nextInput(){
this.list.sType = 3;
this.$emit('emitData', this.list, 3);
}
}, },
}; };
</script> </script>
<style scoped> <style scoped>
.tableInner >>> .el-input__inner { .tableInner >>> .el-input__inner {
color: #409EFF; color: #409eff;
border: 1px rgb(232, 231, 231) solid; border: 1px rgb(232, 231, 231) solid;
padding: 0; padding: 0;
text-align: center; text-align: center;

View File

@ -0,0 +1,272 @@
<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: [],
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: 'button',
btnName: '搜索',
name: 'search',
color: 'primary',
},
{
type: 'button',
btnName: '导出',
name: 'export',
color: 'primary',
plain: true,
},
],
};
},
components: {},
created() {},
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.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.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

@ -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-04-01 10:43:49 * @LastEditTime: 2024-04-24 16:58:36
* @Description: * @Description:
--> -->
<template> <template>
@ -17,16 +17,17 @@
<el-tag effect="dark" color="#7362F3" style="border: none"></el-tag> <el-tag effect="dark" color="#7362F3" style="border: none"></el-tag>
</div> </div>
<div class="mainbody"> <div class="mainbody">
<el-divider class="divider" content-position="left">二次分拣区</el-divider> <el-divider class="divider" content-position="left">
<div v-for="i in 5" :key="i+'G'"> 二次分拣区
</el-divider>
<div v-for="i in 5" :key="i + 'G'">
<el-row style="margin-bottom: 10px" type="flex" class="flex-warp"> <el-row style="margin-bottom: 10px" type="flex" class="flex-warp">
<div <div
class="dashboard-layout-item" class="dashboard-layout-item"
v-for="j in wareData v-for="j in wareData
.filter( .filter(
(item) => (item) =>
item.agvGroundCode.substr(1, 2) == 6 - i && item.agvGroundCode.substr(1, 2) == 6 - i && item.region === 4
item.region === 4
) )
.reverse()" .reverse()"
:key="j.id" :key="j.id"
@ -53,8 +54,10 @@
</div> </div>
</el-row> </el-row>
</div> </div>
<el-divider class="divider" content-position="left">一次分拣区</el-divider> <el-divider class="divider" content-position="left">
<div v-for="i in 7" :key="i+'F'"> 一次分拣区
</el-divider>
<div v-for="i in 7" :key="i + 'F'">
<el-row style="margin-bottom: 10px" type="flex" class="flex-warp"> <el-row style="margin-bottom: 10px" type="flex" class="flex-warp">
<div <div
class="dashboard-layout-item" class="dashboard-layout-item"
@ -65,8 +68,7 @@
v-for="j in wareData v-for="j in wareData
.filter( .filter(
(item) => (item) =>
item.agvGroundCode.substr(1, 2) == 8 - i && item.agvGroundCode.substr(1, 2) == 8 - i && item.region === 2
item.region === 2
) )
.reverse()" .reverse()"
:key="j.id" :key="j.id"
@ -122,6 +124,84 @@
}"></div> }"></div>
</el-popover> </el-popover>
</div> </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-row>
<el-divider class="divider" content-position="left"> <el-divider class="divider" content-position="left">
二次分切区 二次分切区

View File

@ -49,7 +49,7 @@
v-model="dataForm.number" v-model="dataForm.number"
:step="1" :step="1"
:min="1" :min="1"
:max="12"></el-input-number> step-strictly></el-input-number>
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@ -30,13 +30,6 @@
label="库位编码"></el-table-column> label="库位编码"></el-table-column>
<el-table-column prop="trayCode" label="托盘编码"></el-table-column> <el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<el-table-column prop="process" label="工序" width="110"> <el-table-column prop="process" label="工序" width="110">
<template slot-scope="scope">
<span>
{{
scope.row.process >= 0 ? processArr[scope.row.process].name : ''
}}
</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="cacheLocation" label="缓存库位" width="100"> <el-table-column prop="cacheLocation" label="缓存库位" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
@ -207,13 +200,19 @@ export default {
param: 'quality', param: 'quality',
}, },
{ {
type: 'select', type: 'input',
label: '工序', label: '工序',
selectOptions: processArr, placeholder: '工序',
param: 'processId', param: 'processId',
defaultSelect: '',
filterable: true,
}, },
// {
// type: 'select',
// label: '',
// selectOptions: processArr,
// param: 'processId',
// defaultSelect: '',
// filterable: true,
// },
{ {
type: 'select', type: 'select',
label: '库位状态', label: '库位状态',

View File

@ -30,11 +30,6 @@
label="库位编码"></el-table-column> label="库位编码"></el-table-column>
<el-table-column prop="trayCode" label="托盘编码"></el-table-column> <el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<el-table-column prop="process" label="工序" width="110"> <el-table-column prop="process" label="工序" width="110">
<template slot-scope="scope">
<span>
{{ scope.row.process>=0 ? processArr[scope.row.process].name : '' }}
</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="cacheLocation" label="缓存库位" width="100"> <el-table-column prop="cacheLocation" label="缓存库位" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
@ -203,13 +198,19 @@ export default {
param: 'quality', param: 'quality',
}, },
{ {
type: 'select', type: 'input',
label: '工序', label: '工序',
selectOptions: processArr, placeholder: '工序',
param: 'processId', param: 'processId',
defaultSelect: '',
filterable: true,
}, },
// {
// type: 'select',
// label: '',
// selectOptions: processArr,
// param: 'processId',
// defaultSelect: '',
// filterable: true,
// },
{ {
type: 'select', type: 'select',
label: '库位状态', label: '库位状态',

View File

@ -15,8 +15,7 @@
:model="dataForm" :model="dataForm"
:rules="dataRule" :rules="dataRule"
label-width="100px" label-width="100px"
label-position="top" label-position="top">
@keyup.enter.native="dataFormSubmit">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="8"> <el-col :span="8">
<el-form-item label="库位编码" prop="warehouseStorehouseCode"> <el-form-item label="库位编码" prop="warehouseStorehouseCode">
@ -39,6 +38,8 @@
<el-input <el-input
v-model="dataForm.trayCode" v-model="dataForm.trayCode"
@input="$forceUpdate()" @input="$forceUpdate()"
@keyup.enter.native="nextTInput"
ref="input"
placeholder="请输入托盘编码" /> placeholder="请输入托盘编码" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -221,7 +222,7 @@ const processArr = [
}, },
]; ];
const regionArr = [ const regionArr = [
{ name: '一次分切区域', id: 1 }, { name: '一次分切区域1线', id: 1 },
{ name: '一次分拣区域', id: 2 }, { name: '一次分拣区域', id: 2 },
{ name: '二次分切区域', id: 3 }, { name: '二次分切区域', id: 3 },
{ name: '二次分拣区域', id: 4 }, { name: '二次分拣区域', id: 4 },
@ -229,6 +230,9 @@ const regionArr = [
{ name: '涂覆区域', id: 6 }, { name: '涂覆区域', id: 6 },
{ name: '其他', id: 7 }, { name: '其他', id: 7 },
{ name: '自动包装区域', id: 8 }, { name: '自动包装区域', id: 8 },
{ name: '一次分切区域2线', id: 9 },
{ name: '一次分切区域3线', id: 10 },
{ name: '一次分切区域4线', id: 11 },
]; ];
export default { export default {
components: { productAttrAdd, SmallTitle }, components: { productAttrAdd, SmallTitle },
@ -285,9 +289,9 @@ export default {
}, },
init(val) { init(val) {
this.isloading = false; this.isloading = false;
this.potDisable = true this.potDisable = true;
this.updata = val; this.updata = val;
this.warehouseId = val.warehouseId this.warehouseId = val.warehouseId;
this.dataForm.id = val.id; this.dataForm.id = val.id;
this.dataForm.warehouseStorehouseName = val.warehouseStorehouseName; this.dataForm.warehouseStorehouseName = val.warehouseStorehouseName;
this.dataForm.warehouseStorehouseCode = val.warehouseStorehouseCode; this.dataForm.warehouseStorehouseCode = val.warehouseStorehouseCode;
@ -300,6 +304,7 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs['dataForm'].resetFields(); this.$refs['dataForm'].resetFields();
this.$refs.input.focus();
if (this.dataForm.id) { if (this.dataForm.id) {
// //
// //
@ -308,10 +313,12 @@ export default {
}); });
}, },
getPotArr(val) { getPotArr(val) {
getLineList({ 'region': val,'warehouseId':this.warehouseId }).then((response) => { getLineList({ region: val, warehouseId: this.warehouseId }).then(
(response) => {
this.potArr = response.data; this.potArr = response.data;
this.potDisable = false; this.potDisable = false;
}); }
);
}, },
getList() { getList() {
@ -326,6 +333,11 @@ export default {
this.listQuery.total = response.data.total; this.listQuery.total = response.data.total;
}); });
}, },
nextTInput() {
if (this.productAttributeList.length > 0) {
document.getElementById('inputFocus1').focus();
}
},
inputChange(data) { inputChange(data) {
switch (data.sType) { switch (data.sType) {
case 1: case 1:
@ -338,6 +350,13 @@ export default {
this.productAttributeList[data._pageIndex - 1][data.prop + 'Name'] = this.productAttributeList[data._pageIndex - 1][data.prop + 'Name'] =
data.string ? data.string.split('+')[1] : ''; data.string ? data.string.split('+')[1] : '';
break; break;
case 3:
if (data._pageIndex < this.productAttributeList.length) {
document
.getElementById('inputFocus' + (data._pageIndex + 1))
.focus();
}
break;
default: default:
console.log(val); console.log(val);
} }

View File

@ -45,7 +45,11 @@
:style="{ width: '100%' }" /> :style="{ width: '100%' }" />
</el-form-item> </el-form-item>
<el-form-item label="数量" prop="number"> <el-form-item label="数量" prop="number">
<el-input-number v-model="dataForm.number" :step="1" :min="1" :max="12"></el-input-number> <el-input-number
v-model="dataForm.number"
:step="1"
:min="1"
step-strictly></el-input-number>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -81,12 +85,8 @@ export default {
productInfo: [ productInfo: [
{ required: true, message: '产品不能为空', trigger: 'change' }, { required: true, message: '产品不能为空', trigger: 'change' },
], ],
number: [ number: [{ required: true, message: '数量不能为空', trigger: 'blur' }],
{ required: true, message: '数量不能为空', trigger: 'blur' }, grade: [{ required: true, message: '品质不能为空', trigger: 'change' }],
],
grade: [
{ required: true, message: '品质不能为空', trigger: 'change' },
],
}, },
}; };
}, },

View File

@ -30,13 +30,6 @@
label="库位编码"></el-table-column> label="库位编码"></el-table-column>
<el-table-column prop="trayCode" label="托盘编码"></el-table-column> <el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<el-table-column prop="process" label="工序" width="110"> <el-table-column prop="process" label="工序" width="110">
<template slot-scope="scope">
<span>
{{
scope.row.process >= 0 ? processArr[scope.row.process].name : ''
}}
</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="cacheLocation" label="缓存库位" width="100"> <el-table-column prop="cacheLocation" label="缓存库位" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
@ -66,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-storage:update']"> v-hasPermi="['asrs:warehouse-storehouse-storage:in']">
入库 入库
</el-button> </el-button>
<el-button <el-button
@ -74,7 +67,7 @@
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-storage:update']"> v-hasPermi="['asrs:warehouse-storehouse-storage:out']">
出库 出库
</el-button> </el-button>
<el-button <el-button
@ -234,13 +227,19 @@ export default {
param: 'quality', param: 'quality',
}, },
{ {
type: 'select', type: 'input',
label: '工序', label: '工序',
selectOptions: processArr, placeholder: '工序',
param: 'processId', param: 'processId',
defaultSelect: '',
filterable: true,
}, },
// {
// type: 'select',
// label: '',
// selectOptions: processArr,
// param: 'processId',
// defaultSelect: '',
// filterable: true,
// },
{ {
type: 'select', type: 'select',
label: '库位状态', label: '库位状态',

View File

@ -30,13 +30,6 @@
label="库位编码"></el-table-column> label="库位编码"></el-table-column>
<el-table-column prop="trayCode" label="托盘编码"></el-table-column> <el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<el-table-column prop="process" label="工序" width="110"> <el-table-column prop="process" label="工序" width="110">
<template slot-scope="scope">
<span>
{{
scope.row.process >= 0 ? processArr[scope.row.process].name : ''
}}
</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="cacheLocation" label="缓存库位" width="100"> <el-table-column prop="cacheLocation" label="缓存库位" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
@ -66,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-storage:update']"> v-hasPermi="['asrs:warehouse-storehouse-storageb:in']">
入库 入库
</el-button> </el-button>
<el-button <el-button
@ -74,7 +67,7 @@
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-storage:update']"> v-hasPermi="['asrs:warehouse-storehouse-storageb:out']">
出库 出库
</el-button> </el-button>
<el-button <el-button
@ -235,13 +228,19 @@ export default {
param: 'quality', param: 'quality',
}, },
{ {
type: 'select', type: 'input',
label: '工序', label: '工序',
selectOptions: processArr, placeholder: '工序',
param: 'processId', param: 'processId',
defaultSelect: '',
filterable: true,
}, },
// {
// type: 'select',
// label: '',
// selectOptions: processArr,
// param: 'processId',
// defaultSelect: '',
// filterable: true,
// },
{ {
type: 'select', type: 'select',
label: '库位状态', label: '库位状态',

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2024-04-22 09:09:01 * @LastEditTime: 2024-04-25 16:39:52
* @Description: * @Description:
--> -->
<template> <template>
@ -109,7 +109,7 @@ const potArr3 = [
{ label: '4层', id: 4 }, { label: '4层', id: 4 },
]; ];
const regionArr = [ const regionArr = [
{ name: '一次分切区域', id: 1 }, { name: '一次分切区域1线', id: 1 },
{ name: '一次分拣区域', id: 2 }, { name: '一次分拣区域', id: 2 },
{ name: '二次分切区域', id: 3 }, { name: '二次分切区域', id: 3 },
{ name: '二次分拣区域', id: 4 }, { name: '二次分拣区域', id: 4 },
@ -117,6 +117,9 @@ const regionArr = [
{ name: '涂覆区域', id: 6 }, { name: '涂覆区域', id: 6 },
{ name: '其他', id: 7 }, { name: '其他', id: 7 },
{ name: '自动包装区域', id: 8 }, { name: '自动包装区域', id: 8 },
{ name: '一次分切区域2线', id: 9 },
{ name: '一次分切区域3线', id: 10 },
{ name: '一次分切区域4线', id: 11 },
]; ];
export default { export default {
mixins: [basicAdd], mixins: [basicAdd],

View File

@ -24,19 +24,12 @@
<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" prop="warehouseStorehouseName"
label="库位名"></el-table-column> label="库位名" />
<el-table-column <el-table-column
prop="warehouseStorehouseCode" prop="warehouseStorehouseCode"
label="库位编码"></el-table-column> label="库位编码"></el-table-column>
<el-table-column prop="trayCode" label="托盘编码"></el-table-column> <el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<el-table-column prop="process" label="工序" width="110"> <el-table-column prop="process" label="工序" width="110">
<template slot-scope="scope">
<span>
{{
scope.row.process >= 0 ? processArr[scope.row.process].name : ''
}}
</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="出入库时间"> <el-table-column prop="createTime" label="出入库时间">
<template v-slot="scope"> <template v-slot="scope">
@ -45,7 +38,8 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="warehouseStorehouseStorageState" prop="warehouseStorehouseStorageState"
label="出入库状态" width="100"> label="出入库状态"
width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span> <span>
{{ {{
@ -186,7 +180,7 @@ export default {
this.listQuery.warehouseStorehouseName = val.name; this.listQuery.warehouseStorehouseName = val.name;
this.listQuery.warehouseStorehouseCode = val.kcode; this.listQuery.warehouseStorehouseCode = val.kcode;
this.listQuery.trayCode = val.tcode; this.listQuery.trayCode = val.tcode;
this.listQuery.warehouseStorehouseStorageState =val.state; this.listQuery.warehouseStorehouseStorageState = val.state;
this.listQuery.createTime = val.searchTime; this.listQuery.createTime = val.searchTime;
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; this.listQuery.startTime = val.searchTime ? val.searchTime[0] : '';
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; this.listQuery.endTime = val.searchTime ? val.searchTime[1] : '';
@ -213,6 +207,7 @@ export default {
console.log(val); console.log(val);
} }
}, },
}, },
}; };
</script> </script>
@ -221,4 +216,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

@ -30,13 +30,6 @@
label="库位编码"></el-table-column> label="库位编码"></el-table-column>
<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 prop="process" label="工序">
<template slot-scope="scope">
<span>
{{
scope.row.process >= 0 ? processArr[scope.row.process].name : ''
}}
</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="出入库时间"> <el-table-column prop="createTime" label="出入库时间">
<template v-slot="scope"> <template v-slot="scope">

View File

@ -61,7 +61,7 @@ export default {
text: '总数', text: '总数',
subtext: this.totalNumber, subtext: this.totalNumber,
top: '42%', // top: '42%', //
left: '50%', // left: '40%', //
textAlign: 'center', // textAlign: 'center', //
textStyle: { textStyle: {
color: 'rgba(203, 195, 195, 1)', color: 'rgba(203, 195, 195, 1)',
@ -75,60 +75,26 @@ export default {
show: true, // show: true, //
formatter: '产品: {b}<br/>数量: {c}<br/>占比: {d}%', formatter: '产品: {b}<br/>数量: {c}<br/>占比: {d}%',
}, },
// legend: {
// orient: 'vartical',
// top: 'center',
// left: 'right',
// icon: 'circle',
// itemGap: 16, //
// textStyle: {
// //
// fontSize: 24, // legend
// color: '#828282',
// rich: {
// oneone: {
// width: 50,
// color: '#000000',
// fontSize: 12,
// fontWeight: 'bolder',
// },
// twotwo: {
// width: 35,
// color: '#333',
// fontSize: 12,
// },
// threethree: {
// width: 20,
// color: '#959595',
// fontSize: 12,
// },
// },
// },
// formatter: (name) => {
// var target = this.pieData.find((item) => {
// return item.name === name;
// }).number;
// var v = ((target / this.totalNumber) * 100).toFixed(2);
// return `{oneone|${name}} {twotwo|${target}} {threethree|${v}%}`;
// },
// },
legend: { legend: {
bottom: '0%', type: 'scroll',
left: 'center', orient: 'vertical',
right: 10,
top: 20,
bottom: 20,
}, },
grid: { grid: {
top: 40, top: 40,
left: '2%', left: '2%',
right: '2%', right: '2%',
bottom: '3%', bottom: '0%',
containLabel: true, containLabel: true,
}, },
series: [ series: [
{ {
name: 'pie', name: 'pie',
type: 'pie', type: 'pie',
radius: ['55%', '80%'], radius: ['45%', '70%'],
center: ['40%', '50%'],
avoidLabelOverlap: true, // 线 avoidLabelOverlap: true, // 线
itemStyle: { itemStyle: {
borderRadius: 10, borderRadius: 10,

View File

@ -15,7 +15,7 @@
<el-col :span="23"> <el-col :span="23">
<pieChart <pieChart
ref="pieChart" ref="pieChart"
height="600px" height="650px"
v-if="tableData.totalNumber" v-if="tableData.totalNumber"
:total-number="tableData.totalNumber" :total-number="tableData.totalNumber"
:pie-data="tableData.list" /> :pie-data="tableData.list" />

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-17 15:10:53 * @Date: 2023-08-17 15:10:53
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-10-10 11:00:56 * @LastEditTime: 2024-04-29 14:23:14
* @Description: * @Description:
--> -->
<template> <template>

View File

@ -197,8 +197,8 @@ export default {
mobileCodeTimer: 0, mobileCodeTimer: 0,
loginForm: { loginForm: {
loginType: 'uname', loginType: 'uname',
username: 'admin', username: '',
password: 'admin123', password: '',
captchaVerification: '', captchaVerification: '',
mobile: '', mobile: '',
mobileCode: '', mobileCode: '',