更新
This commit is contained in:
parent
78796203f6
commit
d51328c836
6
.env.dev
6
.env.dev
@ -2,7 +2,7 @@
|
||||
# @Author: zwq
|
||||
# @Date: 2023-08-17 15:10:53
|
||||
# @LastEditors: zwq
|
||||
# @LastEditTime: 2023-10-07 13:46:53
|
||||
# @LastEditTime: 2023-10-11 13:40:44
|
||||
# @Description:
|
||||
###
|
||||
# 开发环境配置
|
||||
@ -12,8 +12,8 @@ ENV = 'development'
|
||||
VUE_APP_TITLE = 南京锂膜管理系统
|
||||
|
||||
# 南京锂膜管理系统/开发环境
|
||||
VUE_APP_BASE_API = 'http://192.168.1.23:48080'
|
||||
# VUE_APP_BASE_API = 'http://192.168.0.31:48081'
|
||||
# VUE_APP_BASE_API = 'http://192.168.1.23:48080'
|
||||
VUE_APP_BASE_API = 'http://192.168.0.31:48081'
|
||||
|
||||
# 路由懒加载
|
||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-22 15:31:37
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-07 16:04:12
|
||||
* @LastEditTime: 2023-10-11 10:02:27
|
||||
* @Description:
|
||||
*/
|
||||
import request from '@/utils/request'
|
||||
@ -77,6 +77,14 @@ export function getWarehouseStorehouseList(query) {
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 获得线边库列表
|
||||
export function getLineList(query) {
|
||||
return request({
|
||||
url: '/asrs/line-edge-library/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 导出立库库位 Excel
|
||||
export function exportWarehouseStorehouseExcel(query) {
|
||||
return request({
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-09-06 14:31:37
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-10 15:09:23
|
||||
* @LastEditTime: 2023-10-12 14:05:55
|
||||
* @Description:
|
||||
*/
|
||||
import request from '@/utils/request'
|
||||
@ -85,7 +85,7 @@ export function getCode() {
|
||||
// 获得立库库位列表
|
||||
export function getWarehouseStorehouseList(query) {
|
||||
return request({
|
||||
url: '/asrs/finish-product-warehouse/list',
|
||||
url: '/fpw/finish-product-warehouse/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
|
BIN
src/assets/images/empty.png
Normal file
BIN
src/assets/images/empty.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 133 KiB |
@ -13,10 +13,19 @@ body {
|
||||
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
|
||||
}
|
||||
|
||||
label {
|
||||
font-weight: 700;
|
||||
}
|
||||
// label {
|
||||
// font-weight: 700;
|
||||
// }
|
||||
|
||||
.searchBarBox .el-form-item--medium .el-form-item__label {
|
||||
line-height: 40px;
|
||||
}
|
||||
.searchBarBox .el-form-item--medium .el-form-item__content {
|
||||
line-height: 40px;
|
||||
}
|
||||
.searchBarBox .el-range-editor--small.el-input__inner {
|
||||
height: 34px;
|
||||
}
|
||||
html {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
|
@ -94,7 +94,9 @@ export default {
|
||||
async logout() {
|
||||
this.$modal.confirm('确定注销并退出系统吗?', '提示').then(() => {
|
||||
this.$store.dispatch('LogOut').then(() => {
|
||||
location.href = getPath('/index');
|
||||
|
||||
this.$router.push({ path: 'login' })
|
||||
|
||||
})
|
||||
}).catch(() => {});
|
||||
}
|
||||
|
@ -226,7 +226,7 @@ function handleAuthorized() {
|
||||
).then(() => {
|
||||
isRelogin.show = false;
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = getPath('/index');
|
||||
this.$router.push({ path: 'login' })
|
||||
})
|
||||
}).catch(() => {
|
||||
isRelogin.show = false;
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-22 15:01:54
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-09-27 10:29:09
|
||||
* @LastEditTime: 2023-10-11 16:43:41
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -17,7 +17,12 @@
|
||||
title="柱状图分析"
|
||||
ref="barChart"
|
||||
height="500px"
|
||||
v-if="tableData.length"
|
||||
:histogram="tableData" />
|
||||
<el-empty
|
||||
v-else
|
||||
:image-size="300"
|
||||
:image="require('../../../assets/images/empty.png')" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
@ -84,14 +89,21 @@ export default {
|
||||
if (this.listQuery.goodName) {
|
||||
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
|
||||
this.tableData = response.data;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.barChart.initChart();
|
||||
});
|
||||
if (this.tableData.length) {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.barChart.initChart();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
getArr() {
|
||||
const params = { pageSize: 100, pageNo: 1, total: 1 };
|
||||
const params = {
|
||||
pageSize: 100,
|
||||
pageNo: 1,
|
||||
total: 1,
|
||||
warehouseId: this.aId,
|
||||
};
|
||||
getGoodSpecificationPage(params).then((response) => {
|
||||
this.formConfig[0].selectOptions = response.data.list;
|
||||
});
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-22 15:01:54
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-09-27 10:29:26
|
||||
* @LastEditTime: 2023-10-11 16:43:48
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -17,7 +17,12 @@
|
||||
title="柱状图分析"
|
||||
ref="barChart"
|
||||
height="500px"
|
||||
v-if="tableData.length"
|
||||
:histogram="tableData" />
|
||||
<el-empty
|
||||
v-else
|
||||
:image-size="300"
|
||||
:image="require('../../../assets/images/empty.png')" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
@ -85,14 +90,21 @@ export default {
|
||||
if (this.listQuery.goodName) {
|
||||
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
|
||||
this.tableData = response.data;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.barChart.initChart();
|
||||
});
|
||||
if (this.tableData.length) {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.barChart.initChart();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
getArr() {
|
||||
const params = { pageSize: 100, pageNo: 1, total: 1 };
|
||||
const params = {
|
||||
pageSize: 100,
|
||||
pageNo: 1,
|
||||
total: 1,
|
||||
warehouseId: this.bId,
|
||||
};
|
||||
getGoodSpecificationPage(params).then((response) => {
|
||||
this.formConfig[0].selectOptions = response.data.list;
|
||||
});
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-22 15:01:54
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-09-27 10:50:43
|
||||
* @LastEditTime: 2023-10-13 14:45:48
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -16,11 +16,14 @@
|
||||
<pieChart
|
||||
title="饼状图分析"
|
||||
ref="pieChart"
|
||||
height="500px"
|
||||
height="600px"
|
||||
v-if="tableData.totalNumber"
|
||||
:total-number="tableData.totalNumber"
|
||||
:pie-data="tableData.list" />
|
||||
<el-empty v-else></el-empty>
|
||||
<el-empty
|
||||
v-else
|
||||
:image-size="300"
|
||||
:image="require('../../../assets/images/empty.png')" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-22 15:01:54
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-09-27 10:50:39
|
||||
* @LastEditTime: 2023-10-13 14:45:55
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -16,11 +16,14 @@
|
||||
<pieChart
|
||||
title="饼状图分析"
|
||||
ref="pieChart"
|
||||
height="500px"
|
||||
height="600px"
|
||||
v-if="tableData.totalNumber"
|
||||
:total-number="tableData.totalNumber"
|
||||
:pie-data="tableData.list" />
|
||||
<el-empty v-else></el-empty>
|
||||
<el-empty
|
||||
v-else
|
||||
:image-size="300"
|
||||
:image="require('../../../assets/images/empty.png')" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
@ -78,9 +78,6 @@ export default {
|
||||
name: 'search',
|
||||
color: 'primary',
|
||||
},
|
||||
{
|
||||
type: 'separate',
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
btnName: '重置',
|
||||
|
@ -68,15 +68,17 @@ export default {
|
||||
|
||||
this.chart.setOption({
|
||||
title: {
|
||||
text: '{space|}{tip|}{space|}{value|' + this.title + '}',
|
||||
text: this.title
|
||||
? '{space|}{tip|}{space|}{value|' + this.title + '}'
|
||||
: '',
|
||||
left: '0%',
|
||||
top: '0%',
|
||||
textStyle: {
|
||||
rich: {
|
||||
tip: {
|
||||
width: 4,
|
||||
height: 16,
|
||||
backgroundColor: '#1FC495',
|
||||
height: 18,
|
||||
backgroundColor: '#0B58FF',
|
||||
marginRight: 6,
|
||||
},
|
||||
space: {
|
||||
@ -85,10 +87,12 @@ export default {
|
||||
value: {
|
||||
fontSize: 16,
|
||||
fontWeight: 'bold',
|
||||
color: '#000000',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
color: ['#288AFF', '#8EF0AB', '#FFDC94'],
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
@ -107,6 +111,14 @@ export default {
|
||||
{
|
||||
type: 'category',
|
||||
data: nameArr,
|
||||
axisLabel: {
|
||||
color: '#979797',
|
||||
},
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: '#979797',
|
||||
},
|
||||
},
|
||||
axisTick: {
|
||||
alignWithLabel: true,
|
||||
},
|
||||
@ -118,6 +130,12 @@ export default {
|
||||
axisTick: {
|
||||
show: false,
|
||||
},
|
||||
splitArea: {
|
||||
show: false,
|
||||
},
|
||||
axisLabel: {
|
||||
color: '#979797',
|
||||
},
|
||||
},
|
||||
],
|
||||
series: [
|
||||
@ -125,7 +143,7 @@ export default {
|
||||
name: '数量',
|
||||
type: 'bar',
|
||||
stack: 'vistors',
|
||||
barWidth: '60%',
|
||||
barWidth: '20',
|
||||
data: valueArr,
|
||||
animationDuration,
|
||||
},
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-06-01 10:47:42
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-08 15:50:35
|
||||
* @LastEditTime: 2023-10-12 16:32:00
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -60,8 +60,8 @@ export default {
|
||||
rich: {
|
||||
tip: {
|
||||
width: 4,
|
||||
height: 16,
|
||||
backgroundColor: '#1FC495',
|
||||
height: 18,
|
||||
backgroundColor: '#0B58FF',
|
||||
marginRight: 6,
|
||||
},
|
||||
space: {
|
||||
@ -70,6 +70,7 @@ export default {
|
||||
value: {
|
||||
fontSize: 16,
|
||||
fontWeight: 'bold',
|
||||
color: '#000000',
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -81,23 +82,52 @@ export default {
|
||||
endAngle: 0,
|
||||
min: 0,
|
||||
max: 100,
|
||||
splitNumber: 5,
|
||||
splitNumber: 4,
|
||||
itemStyle: {
|
||||
color: '#47E282',
|
||||
shadowColor: 'rgba(0,138,255,0.45)',
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2,
|
||||
color: '#f37215', //颜色
|
||||
shadowColor: 'rgba(0,138,255,0.45)', //阴影颜色
|
||||
shadowBlur: 10, //图形阴影的模糊大小
|
||||
shadowOffsetX: 2, //阴影水平方向上的偏移距离
|
||||
shadowOffsetY: 2, //阴影垂直方向上的偏移距离
|
||||
},
|
||||
progress: {
|
||||
show: true, //是否显示进度条
|
||||
roundCap: true, //是否在两端显示成圆形
|
||||
width: 18, //进度条宽度
|
||||
itemStyle: {
|
||||
color: {
|
||||
type: 'linear',
|
||||
x: 1,
|
||||
y: 0,
|
||||
x2: 0,
|
||||
y2: 1,
|
||||
colorStops: [
|
||||
{
|
||||
offset: 0,
|
||||
color: '#58D9F9', // 0% 处的颜色
|
||||
},
|
||||
{
|
||||
offset: 1,
|
||||
color: '#288AFF', // 100% 处的颜色
|
||||
},
|
||||
],
|
||||
global: false, // 缺省为 false
|
||||
},
|
||||
},
|
||||
},
|
||||
pointer: {
|
||||
icon: 'path://M2090.36389,615.30999 L2090.36389,615.30999 C2091.48372,615.30999 2092.40383,616.194028 2092.44859,617.312956 L2096.90698,728.755929 C2097.05155,732.369577 2094.2393,735.416212 2090.62566,735.56078 C2090.53845,735.564269 2090.45117,735.566014 2090.36389,735.566014 L2090.36389,735.566014 C2086.74736,735.566014 2083.81557,732.63423 2083.81557,729.017692 C2083.81557,728.930412 2083.81732,728.84314 2083.82081,728.755929 L2088.2792,617.312956 C2088.32396,616.194028 2089.24407,615.30999 2090.36389,615.30999 Z',
|
||||
length: '80%',
|
||||
itemStyle: {
|
||||
color: 'auto',
|
||||
color: '#288AFF',
|
||||
},
|
||||
width: 26,
|
||||
},
|
||||
axisLine: {
|
||||
roundCap: true,
|
||||
lineStyle: {
|
||||
width: 16,
|
||||
width: 18,
|
||||
color: [[1, '#E6EBF8']],
|
||||
},
|
||||
},
|
||||
axisTick: {
|
||||
@ -120,6 +150,9 @@ export default {
|
||||
distance: -55,
|
||||
color: '#999',
|
||||
fontSize: 15,
|
||||
formatter: function (value) {
|
||||
return value + '%';
|
||||
},
|
||||
},
|
||||
title: {
|
||||
show: false,
|
||||
@ -132,20 +165,20 @@ export default {
|
||||
offsetCenter: [0, '20%'],
|
||||
valueAnimation: true,
|
||||
formatter: function (value) {
|
||||
return '{side| }{value|' + value + '}{unit|%}{side1| }';
|
||||
return '{side| }{value|' + value + '%}{side1| }';
|
||||
},
|
||||
rich: {
|
||||
value: {
|
||||
fontSize: 18,
|
||||
color: '#1FC495',
|
||||
padding: [0, 0, 0, 16],
|
||||
fontSize: 24,
|
||||
color: '#0B58FF',
|
||||
padding: [0, 20, 0, 20],
|
||||
},
|
||||
side: {
|
||||
width: 35,
|
||||
height: 5,
|
||||
backgroundColor: '#fff',
|
||||
opacity: 0.5,
|
||||
shadowColor: '#43E084',
|
||||
shadowColor: '#bcdbff',
|
||||
shadowOffsetX: 10,
|
||||
},
|
||||
side1: {
|
||||
@ -153,14 +186,9 @@ export default {
|
||||
height: 5,
|
||||
backgroundColor: '#fff',
|
||||
opacity: 0.5,
|
||||
shadowColor: '#43E084',
|
||||
shadowColor: '#bcdbff',
|
||||
shadowOffsetX: -10,
|
||||
},
|
||||
unit: {
|
||||
fontSize: 12,
|
||||
color: '#999',
|
||||
padding: [0, 16, 0, 0],
|
||||
},
|
||||
},
|
||||
},
|
||||
data: [
|
||||
|
@ -26,7 +26,7 @@ export default {
|
||||
},
|
||||
height: {
|
||||
type: String,
|
||||
default: '300px',
|
||||
default: '250px',
|
||||
},
|
||||
pieData: {
|
||||
type: Array,
|
||||
@ -60,7 +60,7 @@ export default {
|
||||
zlevel: 2, // 控制圆环图中间的字的层级
|
||||
text: '总数',
|
||||
subtext: this.totalNumber,
|
||||
top: '38%', // 控制位置
|
||||
top: '42%', // 控制位置
|
||||
left: '50%', // 控制位置
|
||||
textAlign: 'center', // 让文字居中
|
||||
textStyle: {
|
||||
@ -73,43 +73,11 @@ export default {
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
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}%}`;
|
||||
},
|
||||
bottom: '0%',
|
||||
left: 'center',
|
||||
},
|
||||
grid: {
|
||||
top: 40,
|
||||
@ -133,7 +101,7 @@ export default {
|
||||
normal: {
|
||||
show: true,
|
||||
position: 'outside', // 另有参数inside,可以让数据在圆环上
|
||||
formatter: '{d}%', //模板变量有 {a}、{b}、{c}、{d},分别表示系列名,数据名,数据值,百分比。{d}数据会根据value值计算百分比
|
||||
formatter: '{b}', //模板变量有 {a}、{b}、{c}、{d},分别表示系列名,数据名,数据值,百分比。{d}数据会根据value值计算百分比
|
||||
textStyle: {
|
||||
// 牵引线上的文字的样式
|
||||
align: 'right',
|
||||
@ -154,6 +122,9 @@ export default {
|
||||
},
|
||||
labelLine: {
|
||||
show: false,
|
||||
show: true,
|
||||
length: 17,
|
||||
length2: 57,
|
||||
},
|
||||
data: this.pieData,
|
||||
},
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2021-11-18 14:16:25
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-09 16:01:44
|
||||
* @LastEditTime: 2023-10-11 16:30:10
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -10,6 +10,7 @@
|
||||
:model="dataForm"
|
||||
:rules="dataRule"
|
||||
ref="dataForm"
|
||||
style="margin-right: 50px;"
|
||||
@keyup.enter.native="dataFormSubmit()"
|
||||
label-width="120px">
|
||||
<el-row :gutter="20">
|
||||
@ -53,18 +54,28 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否需要熟化" prop="cure">
|
||||
<el-switch
|
||||
<el-select
|
||||
v-model="dataForm.cure"
|
||||
:active-value="1"
|
||||
:inactive-value="0"></el-switch>
|
||||
placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options1"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否启用" prop="deactivate">
|
||||
<el-switch
|
||||
<el-select
|
||||
v-model="dataForm.deactivate"
|
||||
:active-value="1"
|
||||
:inactive-value="0"></el-switch>
|
||||
placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options1"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -107,6 +118,16 @@ export default {
|
||||
label: '卷',
|
||||
},
|
||||
],
|
||||
options1: [
|
||||
{
|
||||
value: 0,
|
||||
label: '否',
|
||||
},
|
||||
{
|
||||
value: 1,
|
||||
label: '是',
|
||||
},
|
||||
],
|
||||
dataRule: {
|
||||
goodSpecificationCode: [
|
||||
{ required: true, message: '产品编码不能为空', trigger: 'blur' },
|
||||
|
@ -106,9 +106,6 @@ export default {
|
||||
name: 'search',
|
||||
color: 'primary',
|
||||
},
|
||||
{
|
||||
type: 'separate',
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
btnName: '重置',
|
||||
|
@ -2,27 +2,26 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-22 15:01:54
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-09-27 10:44:49
|
||||
* @LastEditTime: 2023-10-13 14:30:24
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="10">
|
||||
<gaugeChart
|
||||
ref="gaugeChart"
|
||||
title="仓库占用率"
|
||||
height="500px"/>
|
||||
</el-col>
|
||||
<el-col :span="14">
|
||||
<el-row :gutter="10" class="chart-container">
|
||||
<el-col :span="8">
|
||||
<div class="chart-card">
|
||||
<gaugeChart ref="gaugeChart" title="仓库占用率" height="450px" />
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
<div class="chart-card">
|
||||
<barChart
|
||||
ref="barChart"
|
||||
height="500px"
|
||||
title="库存总览"
|
||||
:all-data="allData" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -55,7 +54,7 @@ export default {
|
||||
getDataList() {
|
||||
this.urlOptions.occupancyURL(this.aId).then((response) => {
|
||||
this.occupancyData = response.data.toFixed(2);
|
||||
const num = mul(this.occupancyData,100)
|
||||
const num = mul(this.occupancyData, 100);
|
||||
this.$nextTick(() => {
|
||||
this.$refs.gaugeChart.initChart(num);
|
||||
});
|
||||
@ -70,3 +69,17 @@ export default {
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.chart-container {
|
||||
min-height: calc(100vh - 120px - 8px);
|
||||
background-color: #f0f2f7;
|
||||
}
|
||||
|
||||
.chart-card {
|
||||
min-height: calc(100vh - 120px - 8px);
|
||||
background-color: #fff;
|
||||
padding: 16px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
</style>
|
||||
|
@ -2,27 +2,26 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-22 15:01:54
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-08 15:49:40
|
||||
* @LastEditTime: 2023-10-13 14:32:40
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="10">
|
||||
<gaugeChart
|
||||
ref="gaugeChart"
|
||||
title="仓库占用率"
|
||||
height="500px"/>
|
||||
</el-col>
|
||||
<el-col :span="14">
|
||||
<el-row :gutter="10" class="chart-container">
|
||||
<el-col :span="8">
|
||||
<div class="chart-card">
|
||||
<gaugeChart ref="gaugeChart" title="仓库占用率" height="450px" />
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
<div class="chart-card">
|
||||
<barChart
|
||||
ref="barChart"
|
||||
height="500px"
|
||||
title="库存总览"
|
||||
:all-data="allData" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -51,13 +50,13 @@ export default {
|
||||
},
|
||||
created() {
|
||||
this.listQuery.warehouseId = this.bId;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 获取数据列表
|
||||
getDataList() {
|
||||
this.urlOptions.occupancyURL(this.bId).then((response) => {
|
||||
this.occupancyData = response.data.toFixed(2);
|
||||
const num = mul(this.occupancyData,100)
|
||||
const num = mul(this.occupancyData, 100);
|
||||
this.$nextTick(() => {
|
||||
this.$refs.gaugeChart.initChart(num);
|
||||
});
|
||||
@ -72,3 +71,16 @@ export default {
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.chart-container {
|
||||
min-height: calc(100vh - 120px - 8px);
|
||||
background-color: #f0f2f7;
|
||||
}
|
||||
.chart-card {
|
||||
min-height: calc(100vh - 120px - 8px);
|
||||
background-color: #fff;
|
||||
border-radius: 8px;
|
||||
padding: 16px;
|
||||
}
|
||||
</style>
|
||||
|
@ -194,9 +194,6 @@ export default {
|
||||
name: 'search',
|
||||
color: 'primary',
|
||||
},
|
||||
{
|
||||
type: 'separate',
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
btnName: '重置',
|
||||
|
@ -202,9 +202,6 @@ export default {
|
||||
name: 'search',
|
||||
color: 'primary',
|
||||
},
|
||||
{
|
||||
type: 'separate',
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
btnName: '重置',
|
||||
|
@ -78,9 +78,6 @@ export default {
|
||||
name: 'search',
|
||||
color: 'primary',
|
||||
},
|
||||
{
|
||||
type: 'separate',
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
btnName: '重置',
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-21 14:26:23
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-10 16:05:52
|
||||
* @LastEditTime: 2023-10-12 15:12:25
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -12,35 +12,39 @@
|
||||
ref="searchBarForm"
|
||||
@headBtnClick="buttonClick" />
|
||||
<div class="tips">
|
||||
<el-tag effect="dark" color="#7362F3" style="border:none">满</el-tag>
|
||||
<el-tag effect="dark" color="#16DC09" style="border:none">空</el-tag>
|
||||
<el-tag effect="dark" color="#FFA08F" style="border:none">锁</el-tag>
|
||||
<el-tag effect="dark" color="#7362F3" style="border: none">满</el-tag>
|
||||
<el-tag effect="dark" color="#16DC09" style="border: none">空</el-tag>
|
||||
<el-tag effect="dark" color="#FFA08F" style="border: none">锁</el-tag>
|
||||
</div>
|
||||
<div class="mainbody">
|
||||
<div v-for="a in listQuery.total" :key="a">
|
||||
<div v-for="i in listQuery.total" :key="i">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-row>
|
||||
<el-row type="flex" class="flex-warp">
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="a in wareData.one"
|
||||
:key="a.id+a.warehouseStorehouseCode"
|
||||
style="background: #FFF8E8; float: left">
|
||||
v-for="a in wareData.one.slice((i - 1) * 10, i * 10)"
|
||||
:key="a.id + a.warehouseStorehouseCode"
|
||||
style="background: #fff8e8; float: left">
|
||||
<div
|
||||
class="dashboard-layout-item-cricle"
|
||||
:style="{background: bgColor[a.warehouseStorehouseState]}" />
|
||||
:style="{
|
||||
background: bgColor[a.warehouseStorehouseState],
|
||||
}" />
|
||||
{{ a.warehouseStorehouseName }}
|
||||
</div>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-row type="flex" class="flex-warp">
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="b in wareData.two"
|
||||
:key="b.id+b.warehouseStorehouseCode"
|
||||
style="background: #FFF8E8; float: left">
|
||||
v-for="b in wareData.two.slice((i - 1) * 10, i * 10)"
|
||||
:key="b.id + b.warehouseStorehouseCode"
|
||||
style="background: #fff8e8; float: left">
|
||||
<div
|
||||
class="dashboard-layout-item-cricle"
|
||||
:style="{background: bgColor[b.warehouseStorehouseState]}" />
|
||||
:style="{
|
||||
background: bgColor[b.warehouseStorehouseState],
|
||||
}" />
|
||||
{{ b.warehouseStorehouseName }}
|
||||
</div>
|
||||
</el-row>
|
||||
@ -49,27 +53,31 @@
|
||||
<el-divider class="divider"></el-divider>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-row>
|
||||
<el-row type="flex" class="flex-warp">
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="c in wareData.there"
|
||||
:key="c.id+c.warehouseStorehouseCode"
|
||||
style="background: #FFF8E8; float: left">
|
||||
v-for="c in wareData.there.slice((i - 1) * 10, i * 10)"
|
||||
:key="c.id + c.warehouseStorehouseCode"
|
||||
style="background: #fff8e8; float: left">
|
||||
<div
|
||||
class="dashboard-layout-item-cricle"
|
||||
:style="{background: bgColor[c.warehouseStorehouseState]}" />
|
||||
:style="{
|
||||
background: bgColor[c.warehouseStorehouseState],
|
||||
}" />
|
||||
{{ c.warehouseStorehouseName }}
|
||||
</div>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-row type="flex" class="flex-warp">
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="d in wareData.four"
|
||||
:key="d.id+d.warehouseStorehouseCode"
|
||||
style="background: #FFF8E8; float: left">
|
||||
v-for="d in wareData.four.slice((i - 1) * 10, i * 10)"
|
||||
:key="d.id + d.warehouseStorehouseCode"
|
||||
style="background: #fff8e8; float: left">
|
||||
<div
|
||||
class="dashboard-layout-item-cricle"
|
||||
:style="{background: bgColor[d.warehouseStorehouseState]}" />
|
||||
:style="{
|
||||
background: bgColor[d.warehouseStorehouseState],
|
||||
}" />
|
||||
{{ d.warehouseStorehouseName }}
|
||||
</div>
|
||||
</el-row>
|
||||
@ -82,7 +90,10 @@
|
||||
|
||||
<script>
|
||||
import basicPage from '../mixins/basic-page';
|
||||
import { getWarehouseStorehouseList,exportWarehouseStorehouseExcel } from '@/api/asrs/warehouseStorehouse';
|
||||
import {
|
||||
getWarehouseStorehouseList,
|
||||
exportWarehouseStorehouseExcel,
|
||||
} from '@/api/asrs/warehouseStorehouse';
|
||||
|
||||
export default {
|
||||
mixins: [basicPage],
|
||||
@ -90,9 +101,10 @@ export default {
|
||||
return {
|
||||
urlOptions: {
|
||||
getDataListURL: getWarehouseStorehouseList,
|
||||
exportURL: exportWarehouseStorehouseExcel,
|
||||
exportURL: exportWarehouseStorehouseExcel,
|
||||
},
|
||||
listQuery: {
|
||||
stacker: 1,
|
||||
wareLayer: 1,
|
||||
total: 0,
|
||||
},
|
||||
@ -102,8 +114,22 @@ export default {
|
||||
there: [],
|
||||
four: [],
|
||||
},
|
||||
bgColor:['#16DC09','#FFA08F','#7362F3'],
|
||||
bgColor: ['#16DC09', '#FFA08F', '#7362F3'],
|
||||
formConfig: [
|
||||
{
|
||||
type: 'select',
|
||||
label: '选择堆垛机',
|
||||
selectOptions: [
|
||||
{ id: 1, name: '一号堆垛机' },
|
||||
{ id: 2, name: '二号堆垛机' },
|
||||
{ id: 3, name: '三号堆垛机' },
|
||||
{ id: 4, name: '四号堆垛机' },
|
||||
],
|
||||
param: 'stacker',
|
||||
filterable: true,
|
||||
defaultSelect: 1,
|
||||
clearable: false,
|
||||
},
|
||||
{
|
||||
type: 'select',
|
||||
label: '选择层',
|
||||
@ -128,45 +154,45 @@ export default {
|
||||
type: 'button',
|
||||
btnName: '下载',
|
||||
name: 'export',
|
||||
plain: true,
|
||||
plain: true,
|
||||
color: 'primary',
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
components: {},
|
||||
created() {
|
||||
},
|
||||
created() {},
|
||||
methods: {
|
||||
// 获取数据列表
|
||||
getDataList() {
|
||||
this.dataListLoading = true;
|
||||
this.wareData= {
|
||||
(this.wareData = {
|
||||
one: [],
|
||||
two: [],
|
||||
there: [],
|
||||
four: [],
|
||||
},
|
||||
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
|
||||
response.data.forEach((a, b) => {
|
||||
if (b % 4 === 0) {
|
||||
this.wareData.one.push(a);
|
||||
} else if (b % 4 === 1) {
|
||||
this.wareData.two.push(a);
|
||||
} else if (b % 4 === 2) {
|
||||
this.wareData.there.push(a);
|
||||
} else if (b % 4 === 3) {
|
||||
this.wareData.four.push(a);
|
||||
}
|
||||
}),
|
||||
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
|
||||
response.data.forEach((a, b) => {
|
||||
if (b % 4 === 0) {
|
||||
this.wareData.one.push(a);
|
||||
} else if (b % 4 === 1) {
|
||||
this.wareData.two.push(a);
|
||||
} else if (b % 4 === 2) {
|
||||
this.wareData.there.push(a);
|
||||
} else if (b % 4 === 3) {
|
||||
this.wareData.four.push(a);
|
||||
}
|
||||
});
|
||||
this.listQuery.total = Math.ceil(response.data.length / 40);
|
||||
this.dataListLoading = false;
|
||||
});
|
||||
this.listQuery.total = Math.ceil(response.data.length / 120);
|
||||
this.dataListLoading = false;
|
||||
});
|
||||
},
|
||||
buttonClick(val) {
|
||||
switch (val.btnName) {
|
||||
case 'search':
|
||||
this.listQuery.wareLayer = val.value;
|
||||
this.listQuery.stacker = val.stacker;
|
||||
this.getDataList();
|
||||
break;
|
||||
case 'export':
|
||||
@ -183,33 +209,46 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
.mainbody {
|
||||
display: flex;
|
||||
gap: 50px;
|
||||
gap: 70px;
|
||||
flex-direction: column;
|
||||
}
|
||||
.flex-warp {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
.dashboard-layout-item {
|
||||
width: 80px;
|
||||
width: 100px;
|
||||
text-align: center;
|
||||
height: 32px;
|
||||
box-shadow: 0px 3px 6px 0px rgba(166, 174, 190, 0.8);
|
||||
border-radius: 2px 4px 4px 2px;
|
||||
margin-bottom: 8px;
|
||||
margin: 0 3px 8px 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
.dashboard-layout-item-cricle {
|
||||
display: inline-block;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border-radius: 6px;
|
||||
margin-right: 6px;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 5px;
|
||||
}
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
z-index: 10;
|
||||
transform: scale(1.3) translateZ(0);
|
||||
}
|
||||
&:nth-child(2n) {
|
||||
margin-right: 24px;
|
||||
}
|
||||
&:nth-child(2n) {
|
||||
margin-right: 30px;
|
||||
}
|
||||
&:first-child {
|
||||
margin-left: 50px;
|
||||
}
|
||||
&:last-child {
|
||||
margin-right: 30px;
|
||||
}
|
||||
}
|
||||
.el-divider--horizontal {
|
||||
margin: 10px 0;
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-21 14:26:23
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-10 15:41:01
|
||||
* @LastEditTime: 2023-10-12 15:11:54
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -12,35 +12,39 @@
|
||||
ref="searchBarForm"
|
||||
@headBtnClick="buttonClick" />
|
||||
<div class="tips">
|
||||
<el-tag type="info" color="#D8E5FF">满</el-tag>
|
||||
<el-tag type="info" color="#FFF8E8">空</el-tag>
|
||||
<el-tag type="info" color="#F6F6F6">锁</el-tag>
|
||||
<el-tag effect="dark" color="#7362F3" style="border: none">满</el-tag>
|
||||
<el-tag effect="dark" color="#16DC09" style="border: none">空</el-tag>
|
||||
<el-tag effect="dark" color="#FFA08F" style="border: none">锁</el-tag>
|
||||
</div>
|
||||
<div class="mainbody">
|
||||
<div v-for="a in listQuery.total" :key="a">
|
||||
<div v-for="i in listQuery.total" :key="i">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-row>
|
||||
<el-row type="flex" class="flex-warp">
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="a in wareData.one"
|
||||
:key="a.id+a.warehouseStorehouseCode"
|
||||
:style="{background: bgColor[a.warehouseStorehouseState], float: 'left'}">
|
||||
<!-- <div
|
||||
v-for="a in wareData.one.slice((i - 1) * 10, i * 10)"
|
||||
:key="a.id + a.warehouseStorehouseCode"
|
||||
style="background: #fff8e8; float: left">
|
||||
<div
|
||||
class="dashboard-layout-item-cricle"
|
||||
style="background: #16dc09" /> -->
|
||||
:style="{
|
||||
background: bgColor[a.warehouseStorehouseState],
|
||||
}" />
|
||||
{{ a.warehouseStorehouseName }}
|
||||
</div>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-row type="flex" class="flex-warp">
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="b in wareData.two"
|
||||
:key="b.id+b.warehouseStorehouseCode"
|
||||
:style="{background: bgColor[b.warehouseStorehouseState], float: 'left'}">
|
||||
<!-- <div
|
||||
v-for="b in wareData.two.slice((i - 1) * 10, i * 10)"
|
||||
:key="b.id + b.warehouseStorehouseCode"
|
||||
style="background: #fff8e8; float: left">
|
||||
<div
|
||||
class="dashboard-layout-item-cricle"
|
||||
style="background: #16dc09" /> -->
|
||||
:style="{
|
||||
background: bgColor[b.warehouseStorehouseState],
|
||||
}" />
|
||||
{{ b.warehouseStorehouseName }}
|
||||
</div>
|
||||
</el-row>
|
||||
@ -49,27 +53,31 @@
|
||||
<el-divider class="divider"></el-divider>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-row>
|
||||
<el-row type="flex" class="flex-warp">
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="c in wareData.there"
|
||||
:key="c.id+c.warehouseStorehouseCode"
|
||||
:style="{background: bgColor[c.warehouseStorehouseState], float: 'left'}">
|
||||
<!-- <div
|
||||
v-for="c in wareData.there.slice((i - 1) * 10, i * 10)"
|
||||
:key="c.id + c.warehouseStorehouseCode"
|
||||
style="background: #fff8e8; float: left">
|
||||
<div
|
||||
class="dashboard-layout-item-cricle"
|
||||
style="background: #16dc09" /> -->
|
||||
:style="{
|
||||
background: bgColor[c.warehouseStorehouseState],
|
||||
}" />
|
||||
{{ c.warehouseStorehouseName }}
|
||||
</div>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-row type="flex" class="flex-warp">
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="d in wareData.four"
|
||||
:key="d.id+d.warehouseStorehouseCode"
|
||||
:style="{background: bgColor[d.warehouseStorehouseState], float: 'left'}">
|
||||
<!-- <div
|
||||
v-for="d in wareData.four.slice((i - 1) * 10, i * 10)"
|
||||
:key="d.id + d.warehouseStorehouseCode"
|
||||
style="background: #fff8e8; float: left">
|
||||
<div
|
||||
class="dashboard-layout-item-cricle"
|
||||
style="background: #16dc09" /> -->
|
||||
:style="{
|
||||
background: bgColor[d.warehouseStorehouseState],
|
||||
}" />
|
||||
{{ d.warehouseStorehouseName }}
|
||||
</div>
|
||||
</el-row>
|
||||
@ -82,7 +90,10 @@
|
||||
|
||||
<script>
|
||||
import basicPage from '../mixins/basic-page';
|
||||
import { getWarehouseStorehouseList,exportWarehouseStorehouseExcel } from '@/api/asrs/warehouseStorehouse';
|
||||
import {
|
||||
getWarehouseStorehouseList,
|
||||
exportWarehouseStorehouseExcel,
|
||||
} from '@/api/asrs/warehouseStorehouse';
|
||||
|
||||
export default {
|
||||
mixins: [basicPage],
|
||||
@ -90,9 +101,10 @@ export default {
|
||||
return {
|
||||
urlOptions: {
|
||||
getDataListURL: getWarehouseStorehouseList,
|
||||
exportURL: exportWarehouseStorehouseExcel,
|
||||
exportURL: exportWarehouseStorehouseExcel,
|
||||
},
|
||||
listQuery: {
|
||||
//stacker: 1,
|
||||
wareLayer: 1,
|
||||
total: 0,
|
||||
},
|
||||
@ -102,8 +114,22 @@ export default {
|
||||
there: [],
|
||||
four: [],
|
||||
},
|
||||
bgColor:['#FFF8E8','#F6F6F6','#D8E5FF'],
|
||||
bgColor: ['#16DC09', '#FFA08F', '#7362F3'],
|
||||
formConfig: [
|
||||
{
|
||||
type: 'select',
|
||||
label: '选择堆垛机',
|
||||
selectOptions: [
|
||||
{ id: 1, name: '一号堆垛机' },
|
||||
{ id: 2, name: '二号堆垛机' },
|
||||
{ id: 3, name: '三号堆垛机' },
|
||||
{ id: 4, name: '四号堆垛机' },
|
||||
],
|
||||
param: 'stacker',
|
||||
filterable: true,
|
||||
defaultSelect: 1,
|
||||
clearable: false,
|
||||
},
|
||||
{
|
||||
type: 'select',
|
||||
label: '选择层',
|
||||
@ -128,7 +154,7 @@ export default {
|
||||
type: 'button',
|
||||
btnName: '下载',
|
||||
name: 'export',
|
||||
plain: true,
|
||||
plain: true,
|
||||
color: 'primary',
|
||||
},
|
||||
],
|
||||
@ -142,32 +168,33 @@ export default {
|
||||
// 获取数据列表
|
||||
getDataList() {
|
||||
this.dataListLoading = true;
|
||||
this.wareData= {
|
||||
(this.wareData = {
|
||||
one: [],
|
||||
two: [],
|
||||
there: [],
|
||||
four: [],
|
||||
},
|
||||
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
|
||||
response.data.forEach((a, b) => {
|
||||
if (b % 4 === 0) {
|
||||
this.wareData.one.push(a);
|
||||
} else if (b % 4 === 1) {
|
||||
this.wareData.two.push(a);
|
||||
} else if (b % 4 === 2) {
|
||||
this.wareData.there.push(a);
|
||||
} else if (b % 4 === 3) {
|
||||
this.wareData.four.push(a);
|
||||
}
|
||||
}),
|
||||
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
|
||||
response.data.forEach((a, b) => {
|
||||
if (b % 4 === 0) {
|
||||
this.wareData.one.push(a);
|
||||
} else if (b % 4 === 1) {
|
||||
this.wareData.two.push(a);
|
||||
} else if (b % 4 === 2) {
|
||||
this.wareData.there.push(a);
|
||||
} else if (b % 4 === 3) {
|
||||
this.wareData.four.push(a);
|
||||
}
|
||||
});
|
||||
this.listQuery.total = Math.ceil(response.data.length / 40);
|
||||
this.dataListLoading = false;
|
||||
});
|
||||
this.listQuery.total = Math.ceil(response.data.length / 120);
|
||||
this.dataListLoading = false;
|
||||
});
|
||||
},
|
||||
buttonClick(val) {
|
||||
switch (val.btnName) {
|
||||
case 'search':
|
||||
this.listQuery.wareLayer = val.value;
|
||||
this.listQuery.stacker = val.stacker;
|
||||
this.getDataList();
|
||||
break;
|
||||
case 'export':
|
||||
@ -184,30 +211,46 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
.mainbody {
|
||||
display: flex;
|
||||
gap: 50px;
|
||||
gap: 70px;
|
||||
flex-direction: column;
|
||||
}
|
||||
.flex-warp {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
.dashboard-layout-item {
|
||||
width: 3.3%;
|
||||
width: 100px;
|
||||
text-align: center;
|
||||
height: 40px;
|
||||
height: 32px;
|
||||
box-shadow: 0px 3px 6px 0px rgba(166, 174, 190, 0.8);
|
||||
border-radius: 2px 4px 4px 2px;
|
||||
margin-bottom: 4px;
|
||||
margin: 0 3px 8px 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
.dashboard-layout-item-cricle {
|
||||
display: inline-block;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border-radius: 6px;
|
||||
margin-right: 6px;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 5px;
|
||||
}
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
z-index: 10;
|
||||
transform: scale(1.3) translateZ(0);
|
||||
}
|
||||
&:nth-child(2n) {
|
||||
margin-right: 30px;
|
||||
}
|
||||
&:first-child {
|
||||
margin-left: 50px;
|
||||
}
|
||||
&:last-child {
|
||||
margin-right: 30px;
|
||||
}
|
||||
}
|
||||
.el-divider--horizontal {
|
||||
margin: 10px 0;
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2021-11-18 14:16:25
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-08 10:34:29
|
||||
* @LastEditTime: 2023-10-11 16:30:40
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -11,6 +11,7 @@
|
||||
:model="dataForm"
|
||||
:rules="dataRule"
|
||||
size="medium"
|
||||
style="margin-right: 50px;"
|
||||
label-width="120px">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="仓库" prop="warehouseName">
|
||||
@ -68,18 +69,28 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="是否启用" prop="deactivate">
|
||||
<el-switch
|
||||
v-model="dataForm.deactivate"
|
||||
:active-value="1"
|
||||
:inactive-value="0"></el-switch>
|
||||
<el-select
|
||||
v-model="dataForm.deactivate"
|
||||
placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options1"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="是否缓存库位" prop="cacheLocation">
|
||||
<el-switch
|
||||
v-model="dataForm.cacheLocation"
|
||||
:active-value="1"
|
||||
:inactive-value="0"></el-switch>
|
||||
<el-select
|
||||
v-model="dataForm.cacheLocation"
|
||||
placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options1"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
@ -130,10 +141,20 @@ export default {
|
||||
wareRow: undefined,
|
||||
wareColumn: undefined,
|
||||
wareLayer: undefined,
|
||||
deactivate: false,
|
||||
cacheLocation: false,
|
||||
deactivate: 1,
|
||||
cacheLocation: 1,
|
||||
notes: undefined,
|
||||
},
|
||||
options1: [
|
||||
{
|
||||
value: 0,
|
||||
label: '否',
|
||||
},
|
||||
{
|
||||
value: 1,
|
||||
label: '是',
|
||||
},
|
||||
],
|
||||
dataRule: {
|
||||
warehouseInfo: [
|
||||
{
|
||||
|
@ -83,7 +83,7 @@ const tableProps = [
|
||||
},
|
||||
{
|
||||
prop: 'deactivate',
|
||||
label: '是否停用',
|
||||
label: '是否启用',
|
||||
filter: codeFilter('deactivate'),
|
||||
width: 100,
|
||||
},
|
||||
|
@ -83,7 +83,7 @@ const tableProps = [
|
||||
},
|
||||
{
|
||||
prop: 'deactivate',
|
||||
label: '是否停用',
|
||||
label: '是否启用',
|
||||
filter: codeFilter('deactivate'),
|
||||
width: 100,
|
||||
},
|
||||
|
@ -30,7 +30,8 @@
|
||||
v-for="item in productArr"
|
||||
:key="item.id"
|
||||
:label="item.goodSpecificationName"
|
||||
:value="item" />
|
||||
:value="item"
|
||||
:disabled="!item.deactivate" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
@ -59,17 +59,17 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="选择入库位置"
|
||||
label="选择起点位置"
|
||||
prop="inWarehouseStorehouseName">
|
||||
<el-select
|
||||
v-model="dataForm.inWarehouseStorehouseName"
|
||||
style="width: 100%"
|
||||
@change="$forceUpdate()"
|
||||
placeholder="请选择入库位置">
|
||||
placeholder="请选择起点位置">
|
||||
<el-option
|
||||
v-for="item in potArr"
|
||||
:key="item.id"
|
||||
:label="item.warehouseStorehouseName"
|
||||
:label="item.lineEdgeLibraryCode"
|
||||
:value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@ -130,7 +130,7 @@ import {
|
||||
getWarehouseStorehouseGoodsSpecificationPage,
|
||||
deleteWarehouseStorehouseGoodsSpecification,
|
||||
} from '@/api/asrs/warehouseStorehouseGoodsSpecification';
|
||||
import { getWarehouseStorehouseList } from '@/api/asrs/warehouseStorehouse';
|
||||
import { getLineList } from '@/api/asrs/warehouseStorehouse';
|
||||
import productAttrAdd from './attr-add';
|
||||
import inputArea from '../mixins/inputArea';
|
||||
import selectQuality from '../mixins/selectQuality';
|
||||
@ -244,7 +244,7 @@ export default {
|
||||
this.dataForm = val;
|
||||
this.initData();
|
||||
this.visible = true;
|
||||
getWarehouseStorehouseList().then((response) => {
|
||||
getLineList().then((response) => {
|
||||
this.potArr = response.data;
|
||||
});
|
||||
this.$nextTick(() => {
|
||||
|
@ -30,7 +30,8 @@
|
||||
v-for="item in productArr"
|
||||
:key="item.id"
|
||||
:label="item.goodSpecificationName"
|
||||
:value="item" />
|
||||
:value="item"
|
||||
:disabled="!item.deactivate" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
@ -43,7 +43,10 @@
|
||||
<span>{{ scope.row.cacheLocation === 0 ? '否' : '是' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="warehouseStorehouseState" label="库位状态" width="100">
|
||||
<el-table-column
|
||||
prop="warehouseStorehouseState"
|
||||
label="库位状态"
|
||||
width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>
|
||||
{{
|
||||
@ -57,30 +60,41 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 0"
|
||||
type="text"
|
||||
@click="handleClick({ data: { id: scope.row }, type: 'in' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
入库
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 2"
|
||||
type="text"
|
||||
@click="handleClick({ data: scope.row, type: 'out' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
出库
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 2"
|
||||
type="text"
|
||||
@click="handleClick({ data: scope.row, type: 'move' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
移库
|
||||
</el-button>
|
||||
<span v-if="scope.row.deactivate === 1">
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 0"
|
||||
type="text"
|
||||
@click="handleClick({ data: { id: scope.row }, type: 'in' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
入库
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 2"
|
||||
type="text"
|
||||
@click="handleClick({ data: scope.row, type: 'out' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
出库
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 2"
|
||||
type="text"
|
||||
@click="handleClick({ data: scope.row, type: 'move' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
移库
|
||||
</el-button>
|
||||
</span>
|
||||
<span v-else>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
@click="handleClick({ data: { id: scope.row }, type: 'restore' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
启用库位
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -115,7 +129,10 @@ import product from '../product-mini';
|
||||
import basicPage from '../mixins/basic-page';
|
||||
import { parseTime } from '../mixins/code-filter';
|
||||
|
||||
import { getWarehouseStorehousePage } from '@/api/asrs/warehouseStorehouse';
|
||||
import {
|
||||
getWarehouseStorehousePage,
|
||||
updateWarehouseStorehouse,
|
||||
} from '@/api/asrs/warehouseStorehouse';
|
||||
|
||||
const processArr = [
|
||||
{
|
||||
@ -238,7 +255,7 @@ export default {
|
||||
case 'reset':
|
||||
this.$refs.searchBarForm.resetForm();
|
||||
this.listQuery = {
|
||||
warehouseId:'1696803324030865409',
|
||||
warehouseId: '1696803324030865409',
|
||||
pageSize: 10,
|
||||
pageNo: 1,
|
||||
total: 1,
|
||||
@ -276,6 +293,15 @@ export default {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.drawerRef.init(val.data.id);
|
||||
});
|
||||
} else if (val.type === 'restore') {
|
||||
const dataForm = {
|
||||
id: val.data.id.id,
|
||||
deactivate: 1,
|
||||
};
|
||||
updateWarehouseStorehouse(dataForm).then((response) => {
|
||||
this.$modal.msgSuccess('启用成功');
|
||||
this.getDataList();
|
||||
});
|
||||
} else {
|
||||
console.log(11);
|
||||
}
|
||||
|
@ -43,7 +43,10 @@
|
||||
<span>{{ scope.row.cacheLocation === 0 ? '否' : '是' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="warehouseStorehouseState" label="库位状态" width="100">
|
||||
<el-table-column
|
||||
prop="warehouseStorehouseState"
|
||||
label="库位状态"
|
||||
width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>
|
||||
{{
|
||||
@ -57,30 +60,41 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 0"
|
||||
type="text"
|
||||
@click="handleClick({ data: { id: scope.row }, type: 'in' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
入库
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 2"
|
||||
type="text"
|
||||
@click="handleClick({ data: scope.row, type: 'out' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
出库
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 2"
|
||||
type="text"
|
||||
@click="handleClick({ data: scope.row, type: 'move' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
移库
|
||||
</el-button>
|
||||
<span v-if="scope.row.deactivate === 1">
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 0"
|
||||
type="text"
|
||||
@click="handleClick({ data: { id: scope.row }, type: 'in' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
入库
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 2"
|
||||
type="text"
|
||||
@click="handleClick({ data: scope.row, type: 'out' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
出库
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.warehouseStorehouseState === 2"
|
||||
type="text"
|
||||
@click="handleClick({ data: scope.row, type: 'move' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
移库
|
||||
</el-button>
|
||||
</span>
|
||||
<span v-else>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
@click="handleClick({ data: { id: scope.row }, type: 'restore' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
启用库位
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -115,7 +129,10 @@ import product from '../product-mini';
|
||||
import basicPage from '../mixins/basic-page';
|
||||
import { parseTime } from '../mixins/code-filter';
|
||||
|
||||
import { getWarehouseStorehousePage } from '@/api/asrs/warehouseStorehouse';
|
||||
import {
|
||||
getWarehouseStorehousePage,
|
||||
updateWarehouseStorehouse,
|
||||
} from '@/api/asrs/warehouseStorehouse';
|
||||
|
||||
const processArr = [
|
||||
{
|
||||
@ -163,7 +180,7 @@ export default {
|
||||
tableData: [],
|
||||
processArr,
|
||||
drawerVisible: false,
|
||||
bPage: true,
|
||||
bPage: true,
|
||||
warehouseStorehouseState,
|
||||
formConfig: [
|
||||
{
|
||||
@ -222,7 +239,7 @@ export default {
|
||||
},
|
||||
created() {
|
||||
this.listQuery.warehouseId = this.bId;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
buttonClick(val) {
|
||||
switch (val.btnName) {
|
||||
@ -278,6 +295,15 @@ export default {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.drawerRef.init(val.data.id);
|
||||
});
|
||||
} else if (val.type === 'restore') {
|
||||
const dataForm = {
|
||||
id: val.data.id.id,
|
||||
deactivate: 1,
|
||||
};
|
||||
updateWarehouseStorehouse(dataForm).then((response) => {
|
||||
this.$modal.msgSuccess('启用成功');
|
||||
this.getDataList();
|
||||
});
|
||||
} else {
|
||||
console.log(11);
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2021-11-18 14:16:25
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-09 15:49:08
|
||||
* @LastEditTime: 2023-10-11 13:45:45
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -12,67 +12,85 @@
|
||||
ref="dataForm"
|
||||
@keyup.enter.native="dataFormSubmit()"
|
||||
label-width="150px">
|
||||
<el-form-item :label="type?'选择移库位置':'选择出库到货位置'" prop="targetId">
|
||||
<el-select
|
||||
v-model="dataForm.targetId"
|
||||
style="width: 100%"
|
||||
placeholder="请选择位置">
|
||||
<el-option
|
||||
v-for="item in potArr"
|
||||
:key="item.id"
|
||||
:label="item.warehouseStorehouseName"
|
||||
:value="item.id" />
|
||||
</el-select>
|
||||
<el-form-item
|
||||
:label="type ? '选择移库位置' : '选择出库到货位置'"
|
||||
prop="targetId">
|
||||
<el-select
|
||||
v-model="dataForm.targetId"
|
||||
style="width: 100%"
|
||||
placeholder="请选择位置">
|
||||
<el-option
|
||||
v-for="item in potArr"
|
||||
:key="item.id"
|
||||
:label="item.warehouseStorehouseName"
|
||||
:value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import basicAdd from '../mixins/basic-add';
|
||||
import { getWarehouseStorehouseList,moveStorehouse } from "@/api/asrs/warehouseStorehouse";
|
||||
import {
|
||||
getWarehouseStorehouseList,
|
||||
moveStorehouse,
|
||||
getLineList,
|
||||
} from '@/api/asrs/warehouseStorehouse';
|
||||
|
||||
export default {
|
||||
mixins: [basicAdd],
|
||||
data() {
|
||||
return {
|
||||
urlOptions: {
|
||||
},
|
||||
urlOptions: {},
|
||||
dataForm: {
|
||||
sourceId: undefined,
|
||||
targetId: undefined,
|
||||
sourceId: undefined,
|
||||
targetId: undefined,
|
||||
},
|
||||
potArr: [],
|
||||
type: 0,
|
||||
potArr: [],
|
||||
type: 0,
|
||||
dataRule: {
|
||||
targetId: [{ required: true, message: "位置不能为空", trigger: "blur" }],
|
||||
}
|
||||
targetId: [
|
||||
{ required: true, message: '位置不能为空', trigger: 'blur' },
|
||||
],
|
||||
},
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
init(id,type) {
|
||||
this.dataForm.sourceId = id || "";
|
||||
this.type = type
|
||||
this.visible = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs["dataForm"].resetFields();
|
||||
getWarehouseStorehouseList().then((response) => {
|
||||
this.potArr = response.data;
|
||||
init(id, type) {
|
||||
this.dataForm.sourceId = id || '';
|
||||
this.type = type;
|
||||
this.visible = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs['dataForm'].resetFields();
|
||||
if (this.type) {
|
||||
getWarehouseStorehouseList().then((response) => {
|
||||
this.potArr = response.data;
|
||||
});
|
||||
return;
|
||||
}
|
||||
getLineList().then((response) => {
|
||||
this.potArr = response.data;
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
// 表单提交
|
||||
dataFormSubmit() {
|
||||
this.$refs["dataForm"].validate((valid) => {
|
||||
if (!valid) {
|
||||
return false;
|
||||
}
|
||||
moveStorehouse(this.dataForm.sourceId,this.dataForm.targetId).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.visible = false;
|
||||
this.$emit("refreshDataList");
|
||||
});
|
||||
});
|
||||
},
|
||||
},
|
||||
// 表单提交
|
||||
dataFormSubmit() {
|
||||
this.$refs['dataForm'].validate((valid) => {
|
||||
if (!valid) {
|
||||
return false;
|
||||
}
|
||||
if (this.type) {
|
||||
moveStorehouse(this.dataForm.sourceId, this.dataForm.targetId).then(
|
||||
(response) => {
|
||||
this.$modal.msgSuccess('修改成功');
|
||||
this.visible = false;
|
||||
this.$emit('refreshDataList');
|
||||
}
|
||||
);
|
||||
return;
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
@ -1,7 +1,6 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<search-bar
|
||||
:isFold="true"
|
||||
:formConfigs="formConfig"
|
||||
ref="searchBarForm"
|
||||
@headBtnClick="buttonClick" />
|
||||
|
@ -1,7 +1,6 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<search-bar
|
||||
:isFold="true"
|
||||
:formConfigs="formConfig"
|
||||
ref="searchBarForm"
|
||||
@headBtnClick="buttonClick" />
|
||||
|
@ -18,7 +18,7 @@ export default {
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: 'chart',
|
||||
default: '',
|
||||
},
|
||||
width: {
|
||||
type: String,
|
||||
@ -68,15 +68,15 @@ export default {
|
||||
|
||||
this.chart.setOption({
|
||||
title: {
|
||||
text: '{space|}{tip|}{space|}{value|' + this.title + '}',
|
||||
text: this.title?'{space|}{tip|}{space|}{value|' + this.title + '}':'',
|
||||
left: '0%',
|
||||
top: '0%',
|
||||
textStyle: {
|
||||
rich: {
|
||||
tip: {
|
||||
width: 4,
|
||||
height: 16,
|
||||
backgroundColor: '#1FC495',
|
||||
height: 18,
|
||||
backgroundColor: '#0B58FF',
|
||||
marginRight: 6,
|
||||
},
|
||||
space: {
|
||||
@ -85,10 +85,12 @@ export default {
|
||||
value: {
|
||||
fontSize: 16,
|
||||
fontWeight: 'bold',
|
||||
color: 'black',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
color: ['#288AFF', '#8EF0AB', '#FFDC94',],
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
@ -110,6 +112,14 @@ export default {
|
||||
axisTick: {
|
||||
alignWithLabel: true,
|
||||
},
|
||||
axisLabel: {
|
||||
color: '#979797',
|
||||
},
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: '#979797',
|
||||
},
|
||||
}
|
||||
},
|
||||
],
|
||||
yAxis: [
|
||||
@ -118,14 +128,20 @@ export default {
|
||||
axisTick: {
|
||||
show: false,
|
||||
},
|
||||
splitArea: {
|
||||
show: false,
|
||||
},
|
||||
axisLabel: {
|
||||
color: '#979797',
|
||||
},
|
||||
},
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: 'pageA',
|
||||
name: '数量',
|
||||
type: 'bar',
|
||||
stack: 'vistors',
|
||||
barWidth: '60%',
|
||||
barWidth: '20',
|
||||
data: valueArr,
|
||||
animationDuration,
|
||||
},
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-06-01 10:47:42
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-08 15:48:49
|
||||
* @LastEditTime: 2023-10-12 16:31:03
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -60,8 +60,8 @@ export default {
|
||||
rich: {
|
||||
tip: {
|
||||
width: 4,
|
||||
height: 16,
|
||||
backgroundColor: '#1FC495',
|
||||
height: 18,
|
||||
backgroundColor: '#0B58FF',
|
||||
marginRight: 6,
|
||||
},
|
||||
space: {
|
||||
@ -70,6 +70,7 @@ export default {
|
||||
value: {
|
||||
fontSize: 16,
|
||||
fontWeight: 'bold',
|
||||
color: '#000000',
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -81,23 +82,52 @@ export default {
|
||||
endAngle: 0,
|
||||
min: 0,
|
||||
max: 100,
|
||||
splitNumber: 5,
|
||||
splitNumber: 4,
|
||||
itemStyle: {
|
||||
color: '#47E282',
|
||||
shadowColor: 'rgba(0,138,255,0.45)',
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2,
|
||||
color: '#f37215', //颜色
|
||||
shadowColor: 'rgba(0,138,255,0.45)', //阴影颜色
|
||||
shadowBlur: 10, //图形阴影的模糊大小
|
||||
shadowOffsetX: 2, //阴影水平方向上的偏移距离
|
||||
shadowOffsetY: 2, //阴影垂直方向上的偏移距离
|
||||
},
|
||||
progress: {
|
||||
show: true, //是否显示进度条
|
||||
roundCap: true, //是否在两端显示成圆形
|
||||
width: 18, //进度条宽度
|
||||
itemStyle: {
|
||||
color: {
|
||||
type: 'linear',
|
||||
x: 1,
|
||||
y: 0,
|
||||
x2: 0,
|
||||
y2: 1,
|
||||
colorStops: [
|
||||
{
|
||||
offset: 0,
|
||||
color: '#58D9F9', // 0% 处的颜色
|
||||
},
|
||||
{
|
||||
offset: 1,
|
||||
color: '#288AFF', // 100% 处的颜色
|
||||
},
|
||||
],
|
||||
global: false, // 缺省为 false
|
||||
},
|
||||
},
|
||||
},
|
||||
pointer: {
|
||||
icon: 'path://M2090.36389,615.30999 L2090.36389,615.30999 C2091.48372,615.30999 2092.40383,616.194028 2092.44859,617.312956 L2096.90698,728.755929 C2097.05155,732.369577 2094.2393,735.416212 2090.62566,735.56078 C2090.53845,735.564269 2090.45117,735.566014 2090.36389,735.566014 L2090.36389,735.566014 C2086.74736,735.566014 2083.81557,732.63423 2083.81557,729.017692 C2083.81557,728.930412 2083.81732,728.84314 2083.82081,728.755929 L2088.2792,617.312956 C2088.32396,616.194028 2089.24407,615.30999 2090.36389,615.30999 Z',
|
||||
length: '80%',
|
||||
itemStyle: {
|
||||
color: 'auto',
|
||||
color: '#288AFF',
|
||||
},
|
||||
width: 26,
|
||||
},
|
||||
axisLine: {
|
||||
roundCap: true,
|
||||
lineStyle: {
|
||||
width: 16,
|
||||
width: 18,
|
||||
color: [[1, '#E6EBF8']]
|
||||
},
|
||||
},
|
||||
axisTick: {
|
||||
@ -120,6 +150,9 @@ export default {
|
||||
distance: -55,
|
||||
color: '#999',
|
||||
fontSize: 15,
|
||||
formatter: function (value) {
|
||||
return value + '%';
|
||||
},
|
||||
},
|
||||
title: {
|
||||
show: false,
|
||||
@ -132,20 +165,20 @@ export default {
|
||||
offsetCenter: [0, '20%'],
|
||||
valueAnimation: true,
|
||||
formatter: function (value) {
|
||||
return '{side| }{value|' + value + '}{unit|%}{side1| }';
|
||||
return '{side| }{value|' + value + '%}{side1| }';
|
||||
},
|
||||
rich: {
|
||||
value: {
|
||||
fontSize: 18,
|
||||
color: '#1FC495',
|
||||
padding: [0, 0, 0, 16],
|
||||
fontSize: 24,
|
||||
color: '#0B58FF',
|
||||
padding: [0, 20, 0, 20],
|
||||
},
|
||||
side: {
|
||||
width: 35,
|
||||
height: 5,
|
||||
backgroundColor: '#fff',
|
||||
opacity: 0.5,
|
||||
shadowColor: '#43E084',
|
||||
shadowColor: '#bcdbff',
|
||||
shadowOffsetX: 10,
|
||||
},
|
||||
side1: {
|
||||
@ -153,14 +186,9 @@ export default {
|
||||
height: 5,
|
||||
backgroundColor: '#fff',
|
||||
opacity: 0.5,
|
||||
shadowColor: '#43E084',
|
||||
shadowColor: '#bcdbff',
|
||||
shadowOffsetX: -10,
|
||||
},
|
||||
unit: {
|
||||
fontSize: 12,
|
||||
color: '#999',
|
||||
padding: [0, 16, 0, 0],
|
||||
},
|
||||
},
|
||||
},
|
||||
data: [
|
||||
|
@ -26,7 +26,7 @@ export default {
|
||||
},
|
||||
height: {
|
||||
type: String,
|
||||
default: '300px',
|
||||
default: '250px',
|
||||
},
|
||||
pieData: {
|
||||
type: Array,
|
||||
@ -60,7 +60,7 @@ export default {
|
||||
zlevel: 2, // 控制圆环图中间的字的层级
|
||||
text: '总数',
|
||||
subtext: this.totalNumber,
|
||||
top: '38%', // 控制位置
|
||||
top: '42%', // 控制位置
|
||||
left: '50%', // 控制位置
|
||||
textAlign: 'center', // 让文字居中
|
||||
textStyle: {
|
||||
@ -73,43 +73,49 @@ export default {
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
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: {
|
||||
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}%}`;
|
||||
},
|
||||
bottom: '0%',
|
||||
left: 'center',
|
||||
},
|
||||
grid: {
|
||||
top: 40,
|
||||
@ -133,7 +139,7 @@ export default {
|
||||
normal: {
|
||||
show: true,
|
||||
position: 'outside', // 另有参数inside,可以让数据在圆环上
|
||||
formatter: '{d}%', //模板变量有 {a}、{b}、{c}、{d},分别表示系列名,数据名,数据值,百分比。{d}数据会根据value值计算百分比
|
||||
formatter: '{b}', //模板变量有 {a}、{b}、{c}、{d},分别表示系列名,数据名,数据值,百分比。{d}数据会根据value值计算百分比
|
||||
textStyle: {
|
||||
// 牵引线上的文字的样式
|
||||
align: 'right',
|
||||
@ -153,7 +159,9 @@ export default {
|
||||
},
|
||||
},
|
||||
labelLine: {
|
||||
show: false,
|
||||
show: true,
|
||||
length: 17,
|
||||
length2: 57,
|
||||
},
|
||||
data: this.pieData,
|
||||
},
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2021-11-18 14:16:25
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-09 16:03:51
|
||||
* @LastEditTime: 2023-10-11 16:31:22
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -10,6 +10,8 @@
|
||||
:model="dataForm"
|
||||
:rules="dataRule"
|
||||
ref="dataForm"
|
||||
size="medium"
|
||||
style="margin-right: 50px;"
|
||||
@keyup.enter.native="dataFormSubmit()"
|
||||
label-width="120px">
|
||||
<el-row :gutter="20">
|
||||
@ -45,10 +47,15 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否启用" prop="deactivate">
|
||||
<el-switch
|
||||
<el-select
|
||||
v-model="dataForm.deactivate"
|
||||
:active-value="1"
|
||||
:inactive-value="0"></el-switch>
|
||||
placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options1"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -81,7 +88,7 @@ export default {
|
||||
goodSpecificationCode: undefined,
|
||||
goodSpecificationName: undefined,
|
||||
specification: undefined,
|
||||
deactivate: undefined,
|
||||
deactivate: 1,
|
||||
},
|
||||
options: [
|
||||
{
|
||||
@ -93,6 +100,16 @@ export default {
|
||||
label: '箱',
|
||||
},
|
||||
],
|
||||
options1: [
|
||||
{
|
||||
value: 0,
|
||||
label: '否',
|
||||
},
|
||||
{
|
||||
value: 1,
|
||||
label: '是',
|
||||
},
|
||||
],
|
||||
dataRule: {
|
||||
goodSpecificationCode: [
|
||||
{ required: true, message: '产品编码不能为空', trigger: 'blur' },
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-22 15:01:54
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-09-26 15:07:27
|
||||
* @LastEditTime: 2023-10-11 16:40:00
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -14,10 +14,14 @@
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="23">
|
||||
<barChart
|
||||
title="柱状图分析"
|
||||
ref="barChart"
|
||||
height="500px"
|
||||
v-if="tableData.length"
|
||||
:histogram="tableData" />
|
||||
<el-empty
|
||||
v-else
|
||||
:image-size="300"
|
||||
:image="require('../../../assets/images/empty.png')" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
@ -85,9 +89,11 @@ export default {
|
||||
if (this.listQuery.goodName) {
|
||||
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
|
||||
this.tableData = response.data;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.barChart.initChart();
|
||||
});
|
||||
if (this.tableData.length) {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.barChart.initChart();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
@ -2,27 +2,26 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-22 15:01:54
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-08 15:47:56
|
||||
* @LastEditTime: 2023-10-13 14:16:32
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="10">
|
||||
<gaugeChart
|
||||
ref="gaugeChart"
|
||||
title="仓库占用率"
|
||||
height="500px"/>
|
||||
</el-col>
|
||||
<el-col :span="14">
|
||||
<el-row :gutter="10" class="chart-container">
|
||||
<el-col :span="8">
|
||||
<div class="chart-card">
|
||||
<gaugeChart ref="gaugeChart" title="仓库占用率" height="450px" />
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
<div class="chart-card">
|
||||
<barChart
|
||||
ref="barChart"
|
||||
height="500px"
|
||||
title="库存总览"
|
||||
:all-data="allData" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -31,9 +30,9 @@ import { mul } from '../mixins/code-filter';
|
||||
import barChart from '../chart/BarChart.vue';
|
||||
import gaugeChart from '../chart/GaugeChart.vue';
|
||||
import {
|
||||
getOccupancy,
|
||||
getInventoryOverview,
|
||||
} from "@/api/fpw/finishProductWarehouse";
|
||||
getOccupancy,
|
||||
getInventoryOverview,
|
||||
} from '@/api/fpw/finishProductWarehouse';
|
||||
|
||||
export default {
|
||||
mixins: [basicPage],
|
||||
@ -57,7 +56,7 @@ export default {
|
||||
getDataList() {
|
||||
this.urlOptions.occupancyURL(this.aId).then((response) => {
|
||||
this.occupancyData = response.data.toFixed(2);
|
||||
const num = mul(this.occupancyData,100)
|
||||
const num = mul(this.occupancyData, 100);
|
||||
this.$nextTick(() => {
|
||||
this.$refs.gaugeChart.initChart(num);
|
||||
});
|
||||
@ -72,3 +71,16 @@ export default {
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.chart-container {
|
||||
min-height: calc(100vh - 120px - 8px);
|
||||
background-color: #f0f2f7;
|
||||
}
|
||||
.chart-card {
|
||||
min-height: calc(100vh - 120px - 8px);
|
||||
background-color: #fff;
|
||||
padding: 16px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
</style>
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-22 15:01:54
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-09-27 10:52:07
|
||||
* @LastEditTime: 2023-10-13 14:45:19
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -14,13 +14,15 @@
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="23">
|
||||
<pieChart
|
||||
title="饼状图分析"
|
||||
ref="pieChart"
|
||||
height="500px"
|
||||
height="600px"
|
||||
v-if="tableData.totalNumber"
|
||||
:total-number="tableData.totalNumber"
|
||||
:pie-data="tableData.list" />
|
||||
<el-empty v-else></el-empty>
|
||||
<el-empty
|
||||
v-else
|
||||
:image-size="300"
|
||||
:image="require('../../../assets/images/empty.png')" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2021-11-18 14:16:25
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-09-06 15:20:56
|
||||
* @LastEditTime: 2023-10-13 15:10:45
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -11,6 +11,7 @@
|
||||
:model="dataForm"
|
||||
:rules="dataRule"
|
||||
size="medium"
|
||||
style="margin-right: 50px;"
|
||||
label-width="120px">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="库位名称" prop="finishProductName">
|
||||
@ -32,10 +33,15 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否启用" prop="deactivate">
|
||||
<el-switch
|
||||
v-model="dataForm.deactivate"
|
||||
:active-value="1"
|
||||
:inactive-value="0"></el-switch>
|
||||
<el-select
|
||||
v-model="dataForm.deactivate"
|
||||
placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options1"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@ -75,9 +81,20 @@ export default {
|
||||
id: undefined,
|
||||
finishProductName: undefined,
|
||||
finishProductCode: undefined,
|
||||
deactivate: false,
|
||||
deactivate: 1,
|
||||
finishProductWarehouseState: 0,
|
||||
remark: undefined,
|
||||
},
|
||||
options1: [
|
||||
{
|
||||
value: 0,
|
||||
label: '否',
|
||||
},
|
||||
{
|
||||
value: 1,
|
||||
label: '是',
|
||||
},
|
||||
],
|
||||
dataRule: {
|
||||
finishProductName: [
|
||||
{
|
||||
|
@ -74,8 +74,8 @@
|
||||
|
||||
<div style="position: absolute; bottom: 24px; right: 24px">
|
||||
<el-button style="margin-right: 10px" @click="goback()">返回</el-button>
|
||||
<el-button type="primary" @click="dataFormSubmit()">保存</el-button>
|
||||
<el-button type="success" @click="inWare()">入库</el-button>
|
||||
<el-button type="primary" @click="dataFormSubmit()" v-if="isEdit">保存</el-button>
|
||||
<el-button type="primary" @click="inWare()" v-else>入库</el-button>
|
||||
</div>
|
||||
|
||||
<product-attr-add
|
||||
@ -153,6 +153,7 @@ export default {
|
||||
tableProps,
|
||||
productAttributeList: [],
|
||||
addButtonShow: '新增',
|
||||
isEdit: false,
|
||||
dataForm: {
|
||||
finishProductName: '',
|
||||
finishProductCode: '',
|
||||
@ -178,8 +179,9 @@ export default {
|
||||
initData() {
|
||||
this.productAttributeList.splice(0);
|
||||
},
|
||||
init(val) {
|
||||
init(val,isEdit) {
|
||||
this.dataForm = val;
|
||||
this.isEdit = isEdit
|
||||
this.initData();
|
||||
this.visible = true;
|
||||
|
||||
@ -276,7 +278,7 @@ export default {
|
||||
// 修改的提交
|
||||
if (this.dataForm.id) {
|
||||
inFinishProductWarehouse(this.dataForm).then((response) => {
|
||||
this.$modal.msgSuccess('修改成功');
|
||||
this.$modal.msgSuccess('入库成功');
|
||||
this.visible = false;
|
||||
this.$emit('refreshDataList');
|
||||
});
|
||||
|
@ -29,7 +29,8 @@
|
||||
v-for="item in productArr"
|
||||
:key="item.id"
|
||||
:label="item.goodSpecificationName"
|
||||
:value="item" />
|
||||
:value="item"
|
||||
:disabled="!item.deactivate" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
@ -41,27 +41,49 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.finishProductWarehouseState === 0"
|
||||
type="text"
|
||||
@click="handleClick({ data: { id: scope.row }, type: 'in' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
入库
|
||||
</el-button>
|
||||
<el-popconfirm
|
||||
@confirm="setShipment(scope.row.id)"
|
||||
placement="top"
|
||||
:title="'你确定要把 <'+ scope.row.finishProductName +'> 库位出货吗?'">
|
||||
<span v-if="scope.row.deactivate === 1">
|
||||
<el-button
|
||||
slot="reference"
|
||||
size="mini"
|
||||
v-if="scope.row.finishProductWarehouseState === 1"
|
||||
type="text"
|
||||
@click="handleClick({ data: { id: scope.row }, type: 'setList' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
出库
|
||||
编辑
|
||||
</el-button>
|
||||
</el-popconfirm>
|
||||
<el-button
|
||||
size="mini"
|
||||
v-if="scope.row.finishProductWarehouseState === 0"
|
||||
type="text"
|
||||
@click="handleClick({ data: { id: scope.row }, type: 'in' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
入库
|
||||
</el-button>
|
||||
<el-popconfirm
|
||||
@confirm="setShipment(scope.row.id)"
|
||||
v-if="scope.row.finishProductWarehouseState === 1"
|
||||
placement="top"
|
||||
:title="
|
||||
'你确定要把 <' + scope.row.finishProductName + '> 库位出货吗?'
|
||||
">
|
||||
<el-button
|
||||
style="margin-left: 10px"
|
||||
slot="reference"
|
||||
size="mini"
|
||||
v-if="scope.row.finishProductWarehouseState === 1"
|
||||
type="text"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
出库
|
||||
</el-button>
|
||||
</el-popconfirm>
|
||||
</span>
|
||||
<span v-else>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
@click="handleClick({ data: { id: scope.row }, type: 'restore' })"
|
||||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']">
|
||||
启用库位
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -84,7 +106,11 @@ import product from '../product-mini';
|
||||
import basicPage from '../mixins/basic-page';
|
||||
import { parseTime } from '../mixins/code-filter';
|
||||
|
||||
import { getFinishProductWarehousePage,outFinishProductWarehouse } from '@/api/fpw/finishProductWarehouse';
|
||||
import {
|
||||
getFinishProductWarehousePage,
|
||||
outFinishProductWarehouse,
|
||||
updateFinishProductWarehouse,
|
||||
} from '@/api/fpw/finishProductWarehouse';
|
||||
|
||||
const warehouseStorehouseState = [
|
||||
{
|
||||
@ -212,11 +238,24 @@ export default {
|
||||
}
|
||||
},
|
||||
otherMethods(val) {
|
||||
if (val.type === 'out') {
|
||||
if (val.type === 'setList') {
|
||||
this.drawerVisible = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.drawerRef.init(val.data.id, true);
|
||||
});
|
||||
} else if (val.type === 'in') {
|
||||
this.drawerVisible = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.drawerRef.init(val.data.id);
|
||||
this.$refs.drawerRef.init(val.data.id, false);
|
||||
});
|
||||
} else if (val.type === 'restore') {
|
||||
const dataForm = {
|
||||
id: val.data.id.id,
|
||||
deactivate: 1,
|
||||
};
|
||||
updateFinishProductWarehouse(dataForm).then((response) => {
|
||||
this.$modal.msgSuccess('启用成功');
|
||||
this.getDataList();
|
||||
});
|
||||
} else {
|
||||
console.log(11);
|
||||
|
@ -1,7 +1,6 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<search-bar
|
||||
:isFold="true"
|
||||
:formConfigs="formConfig"
|
||||
ref="searchBarForm"
|
||||
@headBtnClick="buttonClick" />
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2023-08-21 14:26:23
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2023-10-10 10:39:41
|
||||
* @LastEditTime: 2023-10-13 15:27:53
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@ -12,68 +12,25 @@
|
||||
ref="searchBarForm"
|
||||
@headBtnClick="buttonClick" />
|
||||
<div class="tips">
|
||||
<el-tag effect="dark">满</el-tag>
|
||||
<el-tag type="success" effect="dark">空</el-tag>
|
||||
<el-tag type="warning" effect="dark">锁</el-tag>
|
||||
<el-tag effect="dark" color="#7362F3" style="border: none">满</el-tag>
|
||||
<el-tag effect="dark" color="#16DC09" style="border: none">空</el-tag>
|
||||
<el-tag effect="dark" color="#FFA08F" style="border: none">锁</el-tag>
|
||||
</div>
|
||||
<div class="mainbody">
|
||||
<div v-for="i in listQuery.total" :key="i">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-row>
|
||||
<div v-for="i in listQuery.total" :key="i" class="div-row">
|
||||
<el-row type="flex" class="flex-warp">
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="a in wareData.one"
|
||||
:key="a.id+a.warehouseStorehouseCode"
|
||||
:style="{background: bgColor[a.warehouseStorehouseState], float: 'left'}">
|
||||
<!-- <div
|
||||
v-for="a in wareData.slice((i - 1) * 20, i * 20)"
|
||||
:key="a.id + a.finishProductCode"
|
||||
style="background: #fff8e8; float: left">
|
||||
<div
|
||||
class="dashboard-layout-item-cricle"
|
||||
style="background: #16dc09" /> -->
|
||||
{{ a.warehouseStorehouseCode }}
|
||||
:style="{
|
||||
background: bgColor[a.finishProductWarehouseState],
|
||||
}" />
|
||||
{{ a.finishProductName }}
|
||||
</div>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="b in wareData.two"
|
||||
:key="b.id+b.warehouseStorehouseCode"
|
||||
:style="{background: bgColor[b.warehouseStorehouseState], float: 'left'}">
|
||||
<!-- <div
|
||||
class="dashboard-layout-item-cricle"
|
||||
style="background: #16dc09" /> -->
|
||||
{{ b.warehouseStorehouseCode }}
|
||||
</div>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-divider class="divider"></el-divider>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-row>
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="c in wareData.there"
|
||||
:key="c.id+c.warehouseStorehouseCode"
|
||||
:style="{background: bgColor[c.warehouseStorehouseState], float: 'left'}">
|
||||
<!-- <div
|
||||
class="dashboard-layout-item-cricle"
|
||||
style="background: #16dc09" /> -->
|
||||
{{ c.warehouseStorehouseCode }}
|
||||
</div>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<div
|
||||
class="dashboard-layout-item"
|
||||
v-for="d in wareData.four"
|
||||
:key="d.id+d.warehouseStorehouseCode"
|
||||
:style="{background: bgColor[d.warehouseStorehouseState], float: 'left'}">
|
||||
<!-- <div
|
||||
class="dashboard-layout-item-cricle"
|
||||
style="background: #16dc09" /> -->
|
||||
{{ d.warehouseStorehouseCode }}
|
||||
</div>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
@ -81,9 +38,10 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import basicPage from '../mixins/basic-page';
|
||||
import { getWarehouseStorehouseList
|
||||
import { getWarehouseStorehouseList,
|
||||
exportFinishProductWarehouseExcel
|
||||
} from "@/api/fpw/finishProductWarehouse";
|
||||
import basicPage from '../mixins/basic-page';
|
||||
|
||||
export default {
|
||||
mixins: [basicPage],
|
||||
@ -91,18 +49,14 @@ export default {
|
||||
return {
|
||||
urlOptions: {
|
||||
getDataListURL: getWarehouseStorehouseList,
|
||||
exportURL: exportFinishProductWarehouseExcel,
|
||||
},
|
||||
listQuery: {
|
||||
wareLayer: 1,
|
||||
total: 0,
|
||||
},
|
||||
wareData: {
|
||||
one: [],
|
||||
two: [],
|
||||
there: [],
|
||||
four: [],
|
||||
},
|
||||
bgColor:['#37d97f','#ffbd02','#0b58ff'],
|
||||
wareData: [],
|
||||
bgColor: ['#16DC09', '#FFA08F', '#7362F3'],
|
||||
formConfig: [
|
||||
{
|
||||
type: 'select',
|
||||
@ -124,37 +78,33 @@ export default {
|
||||
name: 'search',
|
||||
color: 'primary',
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
btnName: '下载',
|
||||
name: 'export',
|
||||
plain: true,
|
||||
color: 'primary',
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
components: {},
|
||||
created() {
|
||||
},
|
||||
created() {},
|
||||
methods: {
|
||||
// 获取数据列表
|
||||
getDataList() {
|
||||
this.dataListLoading = true;
|
||||
this.wareData= {
|
||||
(this.wareData = {
|
||||
one: [],
|
||||
two: [],
|
||||
there: [],
|
||||
four: [],
|
||||
},
|
||||
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
|
||||
response.data.forEach((a, b) => {
|
||||
if (b % 4 === 0) {
|
||||
this.wareData.one.push(a);
|
||||
} else if (b % 4 === 1) {
|
||||
this.wareData.two.push(a);
|
||||
} else if (b % 4 === 2) {
|
||||
this.wareData.there.push(a);
|
||||
} else if (b % 4 === 3) {
|
||||
this.wareData.four.push(a);
|
||||
}
|
||||
}),
|
||||
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
|
||||
this.wareData = response.data
|
||||
this.listQuery.total = Math.ceil(response.data.length / 20);
|
||||
this.dataListLoading = false;
|
||||
});
|
||||
this.listQuery.total = Math.ceil(response.data.length / 120);
|
||||
this.dataListLoading = false;
|
||||
});
|
||||
},
|
||||
buttonClick(val) {
|
||||
switch (val.btnName) {
|
||||
@ -162,6 +112,9 @@ export default {
|
||||
this.listQuery.wareLayer = val.value;
|
||||
this.getDataList();
|
||||
break;
|
||||
case 'export':
|
||||
this.handleExport(this.aId);
|
||||
break;
|
||||
default:
|
||||
console.log(val);
|
||||
}
|
||||
@ -173,41 +126,55 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
.mainbody {
|
||||
display: flex;
|
||||
gap: 50px;
|
||||
gap: 10px;
|
||||
flex-direction: column;
|
||||
}
|
||||
.flex-warp {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
.div-row{
|
||||
&:nth-child(2n) {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
}
|
||||
.dashboard-layout-item {
|
||||
color: white;
|
||||
width: 3.3%;
|
||||
width: 60px;
|
||||
text-align: center;
|
||||
height: 40px;
|
||||
box-shadow: 0px 3px 6px 0px rgba(166, 174, 190, 0.8);
|
||||
border-radius: 2px 4px 4px 2px;
|
||||
margin-bottom: 4px;
|
||||
height: 62px;
|
||||
box-shadow: 1px 1px 4px 1px rgba(166, 174, 190, 0.8);
|
||||
border-radius: 4px;
|
||||
margin-bottom: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
.dashboard-layout-item-cricle {
|
||||
display: inline-block;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border-radius: 6px;
|
||||
margin-right: 6px;
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 5px;
|
||||
}
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
z-index: 10;
|
||||
transform: scale(1.3) translateZ(0);
|
||||
}
|
||||
}
|
||||
.el-divider--horizontal {
|
||||
margin: 10px 0;
|
||||
}
|
||||
.el-divider {
|
||||
background-color: black;
|
||||
&:nth-child(2n) {
|
||||
margin-right: 18px;
|
||||
}
|
||||
&:first-child {
|
||||
margin-left: 30px;
|
||||
}
|
||||
&:last-child {
|
||||
margin-right: 30px;
|
||||
}
|
||||
}
|
||||
.tips {
|
||||
position: absolute;
|
||||
top: 22px;
|
||||
left: 370px;
|
||||
right: 120px;
|
||||
}
|
||||
</style>
|
||||
|
@ -249,7 +249,8 @@ export default {
|
||||
// 发起登陆
|
||||
// console.log("发起登录", this.loginForm);
|
||||
this.$store.dispatch(this.loginForm.loginType === "sms" ? "SmsLogin" : "Login", this.loginForm).then(() => {
|
||||
this.$router.push({ path: this.redirect || "/" }).catch(() => {
|
||||
console.log(this.redirect)
|
||||
this.$router.push({ path: "/" }).catch(() => {
|
||||
});
|
||||
}).catch(() => {
|
||||
this.loading = false;
|
||||
|
Loading…
Reference in New Issue
Block a user