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

View File

@ -2,7 +2,7 @@
# @Author: zwq
# @Date: 2023-08-17 15:10:53
# @LastEditors: zwq
# @LastEditTime: 2024-03-13 15:10:27
# @LastEditTime: 2024-04-28 11:50:59
# @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>
<div id="app">
<router-view />
@ -6,19 +13,23 @@
</template>
<script>
import ThemePicker from "@/components/ThemePicker";
import ThemePicker from '@/components/ThemePicker';
export default {
name: "App",
name: 'App',
components: { ThemePicker },
metaInfo() {
return {
title: this.$store.state.settings.dynamicTitle && this.$store.state.settings.title,
titleTemplate: title => {
return title ? `${title} - ${process.env.VUE_APP_TITLE}` : process.env.VUE_APP_TITLE
}
}
}
title:
this.$store.state.settings.dynamicTitle &&
this.$store.state.settings.title,
titleTemplate: (title) => {
return title
? `${title} - ${process.env.VUE_APP_TITLE}`
: process.env.VUE_APP_TITLE;
},
};
},
};
</script>
<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>
<div :class="classObj" class="app-wrapper" :style="{'--current-color': theme}">
<div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"/>
<div
: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" />
<div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide}" class="main-container">
<div
:class="{ hasTagsView: needTagsView, sidebarHide: sidebar.hide }"
class="main-container">
<div :class="{ 'fixed-header': fixedHeader }">
<navbar />
<tags-view v-if="needTagsView" />
</div>
<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>
<settings />
</right-panel>
@ -17,11 +37,12 @@
</template>
<script>
import RightPanel from '@/components/RightPanel'
import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components'
import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex'
import variables from '@/assets/styles/variables.scss'
import RightPanel from '@/components/RightPanel';
import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components';
import ResizeMixin from './mixin/ResizeHandler';
import { mapState } from 'vuex';
import variables from '@/assets/styles/variables.scss';
import axios from 'axios';
export default {
name: 'Layout',
@ -31,41 +52,74 @@ export default {
RightPanel,
Settings,
Sidebar,
TagsView
TagsView,
},
mixins: [ResizeMixin],
computed: {
...mapState({
theme: state => state.settings.theme,
sideTheme: state => state.settings.sideTheme,
sidebar: state => state.app.sidebar,
device: state => state.app.device,
needTagsView: state => state.settings.tagsView,
fixedHeader: state => state.settings.fixedHeader
theme: (state) => state.settings.theme,
sideTheme: (state) => state.settings.sideTheme,
sidebar: (state) => state.app.sidebar,
device: (state) => state.app.device,
needTagsView: (state) => state.settings.tagsView,
fixedHeader: (state) => state.settings.fixedHeader,
}),
classObj() {
return {
hideSidebar: !this.sidebar.opened,
openSidebar: this.sidebar.opened,
withoutAnimation: this.sidebar.withoutAnimation,
mobile: this.device === 'mobile'
}
mobile: this.device === 'mobile',
};
},
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: {
handleClickOutside() {
this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })
}
}
}
this.$store.dispatch('app/closeSideBar', { withoutAnimation: false });
},
},
};
</script>
<style lang="scss" scoped>
@import "~@/assets/styles/mixin.scss";
@import "~@/assets/styles/variables.scss";
@import '~@/assets/styles/mixin.scss';
@import '~@/assets/styles/variables.scss';
.app-wrapper {
@include clearfix;

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2023-08-22 15:01:54
* @LastEditors: zwq
* @LastEditTime: 2023-10-13 14:45:48
* @LastEditTime: 2024-05-09 11:29:53
* @Description:
-->
<template>
@ -16,7 +16,7 @@
<pieChart
title="饼状图分析"
ref="pieChart"
height="600px"
height="650px"
v-if="tableData.totalNumber"
:total-number="tableData.totalNumber"
:pie-data="tableData.list" />

View File

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

View File

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

View File

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

View File

@ -1,20 +1,9 @@
<template>
<div class="app-container">
<el-tabs v-model="activeName" @tab-click="toggleTab">
<el-tab-pane label="单托盘出库" name="one">
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@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
v-loading="dataListLoading"
:table-props="tableProps"
@ -29,23 +18,6 @@
:method-list="tableBtn"
@clickBtn="handleClick" />
</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
:limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo"
@ -115,6 +87,11 @@ const tableProps = [
prop: 'lineEdgeLibraryCode',
label: '码头位置',
},
{
prop: 'region',
label: '发货区域',
filter: codeFilter('region'),
},
{
prop: 'productQuality',
label: '货物品质',
@ -136,62 +113,8 @@ const tableProps = [
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 = [
{ name: '一次分切区域', id: 1 },
{ name: '一次分切区域1线', id: 1 },
{ name: '一次分拣区域', id: 2 },
{ name: '二次分切区域', id: 3 },
{ name: '二次分拣区域', id: 4 },
@ -199,6 +122,9 @@ const regionArr = [
{ 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],
@ -210,12 +136,7 @@ export default {
},
regionArr,
tableProps,
tableProps2,
tableData: [],
activeName: 'one',
listQuery: {
deliveryType: '1',
},
tableBtn: [
{
type: 'restart',
@ -285,34 +206,6 @@ export default {
labelField: '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',
label: '发货区域',
@ -321,6 +214,12 @@ export default {
defaultSelect: '',
filterable: true,
},
{
type: 'input',
label: '货物品质',
placeholder: '货物品质',
param: 'quality',
},
{
type: 'button',
btnName: '搜索',
@ -363,13 +262,9 @@ export default {
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10;
this.listQuery.productName = val.productName;
if (this.listQuery.deliveryType === '1') {
this.listQuery.lineEdgeLibraryCode = val.lineEdgeLibraryCode;
this.listQuery.region = null;
} else {
this.listQuery.lineEdgeLibraryCode = null;
this.listQuery.region = val.region;
}
this.listQuery.lineEdgeLibraryCode = val.lineEdgeLibraryCode || null;
this.listQuery.region = val.region || null;
this.listQuery.productQuality = val.quality || null;
this.getDataList();
break;
case 'add':
@ -381,17 +276,6 @@ export default {
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
otherMethods(val) {
if (val.type === 'restart') {

View File

@ -23,6 +23,7 @@ import basicPage from '../mixins/basic-page';
import { parseTime } from '../mixins/code-filter';
import { getDeliveryHisPage } from '@/api/oth/delivery';
import codeFilter from '../mixins/code-filter';
import { getLineList } from '@/api/asrs/warehouseStorehouse';
import { getGoodSpecificationPage } from '@/api/asrs/goodSpecification';
const tableProps = [
@ -86,9 +87,18 @@ const tableProps = [
width: 150,
},
];
const deliveryTypeArr = [
{ name: '单托盘出库', id: 1 },
{ name: '多托盘出库', id: 2 },
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],
@ -112,11 +122,27 @@ export default {
},
{
type: 'select',
label: '出库类型',
selectOptions: deliveryTypeArr,
param: 'deliveryType',
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: 'quality',
},
{
type: 'button',
@ -137,6 +163,11 @@ export default {
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) {
@ -145,7 +176,9 @@ export default {
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10;
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();
break;
default:

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2024-02-27 14:43:14
* @LastEditors: zwq
* @LastEditTime: 2024-04-22 09:10:46
* @LastEditTime: 2024-04-25 16:39:32
* @Description:
-->
<template>
@ -32,7 +32,7 @@
:popper-append-to-body="false"
placeholder="请选择位置">
<el-option
v-for="item in potArr"
v-for="item in potSArr"
:key="item.id"
:label="item.lineEdgeLibraryCode"
:value="item.id" />
@ -66,7 +66,7 @@
:popper-append-to-body="false"
placeholder="请选择位置">
<el-option
v-for="item in potArr"
v-for="item in potEArr"
:key="item.id"
:label="item.lineEdgeLibraryCode"
:value="item.id" />
@ -83,7 +83,7 @@
<script>
import { getLineList, moveLine } from '@/api/asrs/warehouseStorehouse';
const regionArr = [
{ name: '一次分切区域', id: 1 },
{ name: '一次分切区域1线', id: 1 },
{ name: '一次分拣区域', id: 2 },
{ name: '二次分切区域', id: 3 },
{ name: '二次分拣区域', id: 4 },
@ -91,6 +91,9 @@ const regionArr = [
{ name: '涂覆区域', id: 6 },
{ name: '其他', id: 7 },
{ name: '自动包装区域', id: 8 },
{ name: '一次分切区域2线', id: 9 },
{ name: '一次分切区域3线', id: 10 },
{ name: '一次分切区域4线', id: 11 },
];
export default {
data() {
@ -103,7 +106,8 @@ export default {
targetId: undefined,
region: undefined,
},
potArr: [],
potSArr: [],
potEArr: [],
regionArr,
SDisable: true,
EDisable: true,
@ -122,7 +126,7 @@ export default {
getSArr(val) {
getLineList({ region: val, warehouseId: this.warehouseId }).then(
(response) => {
this.potArr = response.data;
this.potSArr = response.data;
this.SDisable = false;
}
);
@ -130,7 +134,7 @@ export default {
getEArr(val) {
getLineList({ region: val, warehouseId: this.warehouseId }).then(
(response) => {
this.potArr = response.data;
this.potEArr = response.data;
this.EDisable = false;
}
);

View File

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

View File

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

View File

@ -2,17 +2,21 @@
* @Author: zwq
* @Date: 2023-09-22 15:36:40
* @LastEditors: zwq
* @LastEditTime: 2023-09-26 15:59:57
* @LastEditTime: 2024-05-06 11:03:59
* @Description:
-->
<template>
<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>
</template>
<script>
export default {
name: "InputArea",
name: 'InputArea',
props: {
injectData: {
type: Object,
@ -29,15 +33,19 @@ export default {
},
methods: {
changeInput() {
this.list.sType = 1
this.$emit("emitData", this.list,1);
this.list.sType = 1;
this.$emit('emitData', this.list, 1);
},
nextInput(){
this.list.sType = 3;
this.$emit('emitData', this.list, 3);
}
},
};
</script>
<style scoped>
.tableInner >>> .el-input__inner {
color: #409EFF;
color: #409eff;
border: 1px rgb(232, 231, 231) solid;
padding: 0;
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
* @Date: 2024-01-17 09:58:41
* @LastEditors: zwq
* @LastEditTime: 2024-04-01 10:43:49
* @LastEditTime: 2024-04-24 16:58:36
* @Description:
-->
<template>
@ -17,7 +17,9 @@
<el-tag effect="dark" color="#7362F3" style="border: none"></el-tag>
</div>
<div class="mainbody">
<el-divider class="divider" content-position="left">二次分拣区</el-divider>
<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
@ -25,8 +27,7 @@
v-for="j in wareData
.filter(
(item) =>
item.agvGroundCode.substr(1, 2) == 6 - i &&
item.region === 4
item.agvGroundCode.substr(1, 2) == 6 - i && item.region === 4
)
.reverse()"
:key="j.id"
@ -53,7 +54,9 @@
</div>
</el-row>
</div>
<el-divider class="divider" content-position="left">一次分拣区</el-divider>
<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
@ -65,8 +68,7 @@
v-for="j in wareData
.filter(
(item) =>
item.agvGroundCode.substr(1, 2) == 8 - i &&
item.region === 2
item.agvGroundCode.substr(1, 2) == 8 - i && item.region === 2
)
.reverse()"
:key="j.id"
@ -122,6 +124,84 @@
}"></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">
二次分切区

View File

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

View File

@ -30,13 +30,6 @@
label="库位编码"></el-table-column>
<el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<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 prop="cacheLocation" label="缓存库位" width="100">
<template slot-scope="scope">
@ -207,13 +200,19 @@ export default {
param: 'quality',
},
{
type: 'select',
type: 'input',
label: '工序',
selectOptions: processArr,
placeholder: '工序',
param: 'processId',
defaultSelect: '',
filterable: true,
},
// {
// type: 'select',
// label: '',
// selectOptions: processArr,
// param: 'processId',
// defaultSelect: '',
// filterable: true,
// },
{
type: 'select',
label: '库位状态',

View File

@ -30,11 +30,6 @@
label="库位编码"></el-table-column>
<el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<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 prop="cacheLocation" label="缓存库位" width="100">
<template slot-scope="scope">
@ -203,13 +198,19 @@ export default {
param: 'quality',
},
{
type: 'select',
type: 'input',
label: '工序',
selectOptions: processArr,
placeholder: '工序',
param: 'processId',
defaultSelect: '',
filterable: true,
},
// {
// type: 'select',
// label: '',
// selectOptions: processArr,
// param: 'processId',
// defaultSelect: '',
// filterable: true,
// },
{
type: 'select',
label: '库位状态',

View File

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

View File

@ -45,7 +45,11 @@
:style="{ width: '100%' }" />
</el-form-item>
<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>
@ -81,12 +85,8 @@ export default {
productInfo: [
{ required: true, message: '产品不能为空', trigger: 'change' },
],
number: [
{ required: true, message: '数量不能为空', trigger: 'blur' },
],
grade: [
{ required: true, message: '品质不能为空', trigger: 'change' },
],
number: [{ required: true, message: '数量不能为空', trigger: 'blur' }],
grade: [{ required: true, message: '品质不能为空', trigger: 'change' }],
},
};
},

View File

@ -30,13 +30,6 @@
label="库位编码"></el-table-column>
<el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<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 prop="cacheLocation" label="缓存库位" width="100">
<template slot-scope="scope">
@ -66,7 +59,7 @@
v-if="scope.row.warehouseStorehouseState === 0"
type="text"
@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
@ -74,7 +67,7 @@
v-if="scope.row.warehouseStorehouseState === 2"
type="text"
@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
@ -234,13 +227,19 @@ export default {
param: 'quality',
},
{
type: 'select',
type: 'input',
label: '工序',
selectOptions: processArr,
placeholder: '工序',
param: 'processId',
defaultSelect: '',
filterable: true,
},
// {
// type: 'select',
// label: '',
// selectOptions: processArr,
// param: 'processId',
// defaultSelect: '',
// filterable: true,
// },
{
type: 'select',
label: '库位状态',

View File

@ -30,13 +30,6 @@
label="库位编码"></el-table-column>
<el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<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 prop="cacheLocation" label="缓存库位" width="100">
<template slot-scope="scope">
@ -66,7 +59,7 @@
v-if="scope.row.warehouseStorehouseState === 0"
type="text"
@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
@ -74,7 +67,7 @@
v-if="scope.row.warehouseStorehouseState === 2"
type="text"
@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
@ -235,13 +228,19 @@ export default {
param: 'quality',
},
{
type: 'select',
type: 'input',
label: '工序',
selectOptions: processArr,
placeholder: '工序',
param: 'processId',
defaultSelect: '',
filterable: true,
},
// {
// type: 'select',
// label: '',
// selectOptions: processArr,
// param: 'processId',
// defaultSelect: '',
// filterable: true,
// },
{
type: 'select',
label: '库位状态',

View File

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

View File

@ -24,19 +24,12 @@
<el-table-column prop="warehouseCode" label="仓库编码"></el-table-column>
<el-table-column
prop="warehouseStorehouseName"
label="库位名"></el-table-column>
label="库位名" />
<el-table-column
prop="warehouseStorehouseCode"
label="库位编码"></el-table-column>
<el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<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 prop="createTime" label="出入库时间">
<template v-slot="scope">
@ -45,7 +38,8 @@
</el-table-column>
<el-table-column
prop="warehouseStorehouseStorageState"
label="出入库状态" width="100">
label="出入库状态"
width="100">
<template slot-scope="scope">
<span>
{{
@ -213,6 +207,7 @@ export default {
console.log(val);
}
},
},
};
</script>
@ -221,4 +216,11 @@ export default {
padding: 0;
height: 35px;
}
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
</style>

View File

@ -30,13 +30,6 @@
label="库位编码"></el-table-column>
<el-table-column prop="trayCode" label="托盘编码"></el-table-column>
<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 prop="createTime" label="出入库时间">
<template v-slot="scope">

View File

@ -61,7 +61,7 @@ export default {
text: '总数',
subtext: this.totalNumber,
top: '42%', //
left: '50%', //
left: '40%', //
textAlign: 'center', //
textStyle: {
color: 'rgba(203, 195, 195, 1)',
@ -75,60 +75,26 @@ export default {
show: true, //
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: {
bottom: '0%',
left: 'center',
type: 'scroll',
orient: 'vertical',
right: 10,
top: 20,
bottom: 20,
},
grid: {
top: 40,
left: '2%',
right: '2%',
bottom: '3%',
bottom: '0%',
containLabel: true,
},
series: [
{
name: 'pie',
type: 'pie',
radius: ['55%', '80%'],
radius: ['45%', '70%'],
center: ['40%', '50%'],
avoidLabelOverlap: true, // 线
itemStyle: {
borderRadius: 10,

View File

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

View File

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

View File

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