@@ -2,16 +2,16 @@ | |||
# @Author: zwq | |||
# @Date: 2023-08-17 15:10:53 | |||
# @LastEditors: zwq | |||
# @LastEditTime: 2023-08-30 15:15:52 | |||
# @LastEditTime: 2023-10-07 13:46:53 | |||
# @Description: | |||
### | |||
# 开发环境配置 | |||
ENV = 'development' | |||
# 页面标题 | |||
VUE_APP_TITLE = 芋道管理系统 | |||
VUE_APP_TITLE = 南京锂膜管理系统 | |||
# 芋道管理系统/开发环境 | |||
# 南京锂膜管理系统/开发环境 | |||
VUE_APP_BASE_API = 'http://192.168.1.23:48080' | |||
# VUE_APP_BASE_API = 'http://192.168.0.31:48081' | |||
@@ -2,9 +2,9 @@ | |||
ENV = 'development' | |||
# 页面标题 | |||
VUE_APP_TITLE = 芋道管理系统 | |||
VUE_APP_TITLE = 南京锂膜管理系统 | |||
# 芋道管理系统/本地环境 | |||
# 南京锂膜管理系统/本地环境 | |||
VUE_APP_BASE_API = 'http://api-dashboard.yudao.iocoder.cn' | |||
# 路由懒加载 | |||
@@ -2,13 +2,13 @@ | |||
ENV = 'production' | |||
# 页面标题 | |||
VUE_APP_TITLE = 芋道管理系统 | |||
VUE_APP_TITLE = 南京锂膜管理系统 | |||
# 芋道管理系统/生产环境 | |||
# 南京锂膜管理系统/生产环境 | |||
VUE_APP_BASE_API = '/prod-api' | |||
# 根据服务器或域名修改 | |||
PUBLIC_PATH = 'http://my-pi.com:8888/yudao-admin/' | |||
PUBLIC_PATH = 'http://192.168.0.31:8003/' | |||
# 二级部署路径 | |||
VUE_APP_APP_NAME ='yudao-admin' | |||
@@ -1,12 +1,12 @@ | |||
NODE_ENV = production | |||
# 页面标题 | |||
VUE_APP_TITLE = 芋道管理系统 | |||
VUE_APP_TITLE = 南京锂膜管理系统 | |||
# 测试环境配置 | |||
ENV = 'staging' | |||
# 芋道管理系统/测试环境 | |||
# 南京锂膜管理系统/测试环境 | |||
VUE_APP_BASE_API = 'http://api-dashboard.yudao.iocoder.cn' | |||
# 静态资源地址 | |||
@@ -4,9 +4,9 @@ NODE_ENV = development | |||
ENV = 'staging' | |||
# 页面标题 | |||
VUE_APP_TITLE = 芋道管理系统 | |||
VUE_APP_TITLE = 南京锂膜管理系统 | |||
# 芋道管理系统/测试环境 | |||
# 南京锂膜管理系统/测试环境 | |||
VUE_APP_BASE_API = 'http://127.0.0.1:48080' | |||
# 根据服务器或域名修改 | |||
@@ -1,7 +1,7 @@ | |||
{ | |||
"name": "yudao-ui-admin", | |||
"version": "1.7.3-snapshot", | |||
"description": "芋道管理系统", | |||
"description": "南京锂膜管理系统", | |||
"author": "芋道", | |||
"license": "MIT", | |||
"scripts": { | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:31:37 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-04 15:46:20 | |||
* @LastEditTime: 2023-10-07 16:04:12 | |||
* @Description: | |||
*/ | |||
import request from '@/utils/request' | |||
@@ -69,7 +69,14 @@ export function getWarehouseStorehousePage(query) { | |||
params: query | |||
}) | |||
} | |||
// 获得立库库位列表 | |||
export function getWarehouseStorehouseList(query) { | |||
return request({ | |||
url: '/asrs/warehouse-storehouse/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 导出立库库位 Excel | |||
export function exportWarehouseStorehouseExcel(query) { | |||
return request({ | |||
@@ -1,3 +1,10 @@ | |||
/* | |||
* @Author: zwq | |||
* @Date: 2023-09-06 14:31:37 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-10-07 16:47:35 | |||
* @Description: | |||
*/ | |||
import request from '@/utils/request' | |||
// 创建成品库 | |||
@@ -60,6 +67,14 @@ export function getCode() { | |||
method: 'post' | |||
}) | |||
} | |||
// 获得立库库位列表 | |||
export function getWarehouseStorehouseList(query) { | |||
return request({ | |||
url: '/asrs/finish-product-warehouse/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 获得仓库占用率 | |||
export function getOccupancy(id) { | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-17 15:10:53 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-08-18 09:43:17 | |||
* @LastEditTime: 2023-10-08 15:33:03 | |||
* @Description: | |||
*/ | |||
import Vue from 'vue' | |||
@@ -110,7 +110,7 @@ Router.prototype.push = function push(location) { | |||
export default new Router({ | |||
base: process.env.VUE_APP_APP_NAME ? process.env.VUE_APP_APP_NAME : "/", | |||
mode: 'history', // 去掉url中的# | |||
mode: 'hash', // 去掉url中的# | |||
scrollBehavior: () => ({y: 0}), | |||
routes: constantRoutes | |||
}) |
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:54 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-05 14:52:47 | |||
* @LastEditTime: 2023-09-27 10:29:09 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -37,7 +37,7 @@ export default { | |||
getDataListURL: getHistogram, | |||
}, | |||
listQuery: { | |||
warehouseId: '', | |||
warehouseId: '1696803324030865409', | |||
goodName: '', | |||
startTime: '', | |||
endTime: '', | |||
@@ -102,6 +102,7 @@ export default { | |||
if (val.name) { | |||
this.listQuery.goodName = val.name; | |||
if (val.searchTime) { | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime | |||
? val.searchTime[0] | |||
: ''; | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:54 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-05 14:52:57 | |||
* @LastEditTime: 2023-09-27 10:29:26 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -37,7 +37,7 @@ export default { | |||
getDataListURL: getHistogram, | |||
}, | |||
listQuery: { | |||
warehouseId: '', | |||
warehouseId: '1698950657556340737', | |||
goodName: '', | |||
startTime: '', | |||
endTime: '', | |||
@@ -103,6 +103,7 @@ export default { | |||
if (val.name) { | |||
this.listQuery.goodName = val.name; | |||
if (val.searchTime) { | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime | |||
? val.searchTime[0] | |||
: ''; | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:54 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-05 14:52:33 | |||
* @LastEditTime: 2023-09-27 10:50:43 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -14,11 +14,13 @@ | |||
<el-row :gutter="20"> | |||
<el-col :span="23"> | |||
<pieChart | |||
title="饼状图分析" | |||
title="饼状图分析" | |||
ref="pieChart" | |||
height="500px" | |||
:total-number="tableData.totalNumber" | |||
v-if="tableData.totalNumber" | |||
:total-number="tableData.totalNumber" | |||
:pie-data="tableData.list" /> | |||
<el-empty v-else></el-empty> | |||
</el-col> | |||
</el-row> | |||
</div> | |||
@@ -37,7 +39,7 @@ export default { | |||
getDataListURL: getPieChart, | |||
}, | |||
listQuery: { | |||
warehouseId: '', | |||
warehouseId: '1696803324030865409', | |||
startTime: '', | |||
endTime: '', | |||
}, | |||
@@ -65,17 +67,18 @@ export default { | |||
components: { | |||
pieChart, | |||
}, | |||
created() { | |||
}, | |||
created() {}, | |||
methods: { | |||
// 获取数据列表 | |||
getDataList() { | |||
if (this.listQuery.startTime) { | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
this.tableData = response.data; | |||
this.$nextTick(() => { | |||
this.$refs.pieChart.initChart(); | |||
}); | |||
if (response.data) { | |||
this.tableData = response.data; | |||
this.$nextTick(() => { | |||
this.$refs.pieChart.initChart(); | |||
}); | |||
} | |||
}); | |||
} | |||
}, | |||
@@ -83,6 +86,7 @@ export default { | |||
switch (val.btnName) { | |||
case 'search': | |||
if (val.searchTime) { | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:54 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-06 14:44:21 | |||
* @LastEditTime: 2023-09-27 10:50:39 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -14,11 +14,13 @@ | |||
<el-row :gutter="20"> | |||
<el-col :span="23"> | |||
<pieChart | |||
title="饼状图分析" | |||
title="饼状图分析" | |||
ref="pieChart" | |||
height="500px" | |||
:total-number="tableData.totalNumber" | |||
v-if="tableData.totalNumber" | |||
:total-number="tableData.totalNumber" | |||
:pie-data="tableData.list" /> | |||
<el-empty v-else></el-empty> | |||
</el-col> | |||
</el-row> | |||
</div> | |||
@@ -37,7 +39,7 @@ export default { | |||
getDataListURL: getPieChart, | |||
}, | |||
listQuery: { | |||
warehouseId: '', | |||
warehouseId: '1698950657556340737', | |||
startTime: '', | |||
endTime: '', | |||
}, | |||
@@ -73,10 +75,12 @@ export default { | |||
getDataList() { | |||
if (this.listQuery.startTime) { | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
this.tableData = response.data; | |||
this.$nextTick(() => { | |||
this.$refs.pieChart.initChart(); | |||
}); | |||
if (response.data) { | |||
this.tableData = response.data; | |||
this.$nextTick(() => { | |||
this.$refs.pieChart.initChart(); | |||
}); | |||
} | |||
}); | |||
} | |||
}, | |||
@@ -84,6 +88,7 @@ export default { | |||
switch (val.btnName) { | |||
case 'search': | |||
if (val.searchTime) { | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
@@ -28,17 +28,14 @@ const tableProps = [ | |||
{ | |||
prop: 'reqInterface', | |||
label: '请求接口', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'reqParameter', | |||
label: '请求参数', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'createDate', | |||
prop: 'createTime', | |||
label: '时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
]; | |||
@@ -69,7 +66,7 @@ export default { | |||
label: '订单出货日期', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd hh:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
@@ -102,6 +99,7 @@ export default { | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.reqInterface = val.code; | |||
this.listQuery.reqParameter = val.name; | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
@@ -122,7 +122,7 @@ export default { | |||
], | |||
series: [ | |||
{ | |||
name: 'pageA', | |||
name: '数量', | |||
type: 'bar', | |||
stack: 'vistors', | |||
barWidth: '60%', | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-06-01 10:47:42 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-08-31 16:23:08 | |||
* @LastEditTime: 2023-10-08 15:50:35 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -33,10 +33,6 @@ export default { | |||
type: String, | |||
default: '300px', | |||
}, | |||
occupancyData: { | |||
type: Number, | |||
default: 0, | |||
}, | |||
}, | |||
name: 'echarts', | |||
data() { | |||
@@ -52,7 +48,7 @@ export default { | |||
this.chart = null; | |||
}, | |||
methods: { | |||
initChart() { | |||
initChart(occupancyData) { | |||
this.chart = echarts.init(this.$el, 'macarons'); | |||
this.chart.setOption({ | |||
@@ -169,7 +165,7 @@ export default { | |||
}, | |||
data: [ | |||
{ | |||
value: this.occupancyData * 100, | |||
value: occupancyData, | |||
}, | |||
], | |||
radius: '90%', | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2021-11-18 14:16:25 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-08-31 16:35:40 | |||
* @LastEditTime: 2023-10-08 10:45:09 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -24,6 +24,18 @@ | |||
clearable | |||
placeholder="请输入产品名称" /> | |||
</el-form-item> | |||
<el-form-item label="产品规格" prop="specification"> | |||
<el-select | |||
v-model="dataForm.specification" | |||
clearable | |||
placeholder="请选择产品规格"> | |||
<el-option | |||
v-for="item in options" | |||
:key="item.value" | |||
:label="item.label" | |||
:value="item.value"></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="需要熟化时间" prop="cureTime"> | |||
<el-input-number | |||
v-model="dataForm.cureTime" | |||
@@ -47,16 +59,21 @@ | |||
<script> | |||
import basicAdd from '../mixins/basic-add'; | |||
import { createGoodSpecification, updateGoodSpecification, getGoodSpecification, getCode } from "@/api/asrs/goodSpecification"; | |||
import { | |||
createGoodSpecification, | |||
updateGoodSpecification, | |||
getGoodSpecification, | |||
getCode, | |||
} from '@/api/asrs/goodSpecification'; | |||
export default { | |||
mixins: [basicAdd], | |||
data() { | |||
return { | |||
urlOptions: { | |||
isGetCode: true, | |||
codeURL: getCode, | |||
codeName: 'goodSpecificationCode', | |||
isGetCode: true, | |||
codeURL: getCode, | |||
codeName: 'goodSpecificationCode', | |||
createURL: createGoodSpecification, | |||
updateURL: updateGoodSpecification, | |||
infoURL: getGoodSpecification, | |||
@@ -65,10 +82,17 @@ export default { | |||
id: undefined, | |||
goodSpecificationCode: undefined, | |||
goodSpecificationName: undefined, | |||
specification: undefined, | |||
cureTime: undefined, | |||
cure: undefined, | |||
deactivate: undefined, | |||
cure: 1, | |||
deactivate: 1, | |||
}, | |||
options: [ | |||
{ | |||
value: 0, | |||
label: '卷', | |||
}, | |||
], | |||
dataRule: { | |||
goodSpecificationCode: [ | |||
{ required: true, message: '产品编码不能为空', trigger: 'blur' }, | |||
@@ -47,28 +47,23 @@ const tableProps = [ | |||
{ | |||
prop: 'goodSpecificationCode', | |||
label: '产品编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'goodSpecificationName', | |||
label: '产品名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'cure', | |||
label: '是否需要熟化', | |||
align: 'center', | |||
filter: codeFilter('cure'), | |||
}, | |||
{ | |||
prop: 'cureTime', | |||
label: '需要熟化时间(小时)', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'deactivate', | |||
label: '是否启用', | |||
align: 'center', | |||
filter: codeFilter('deactivate'), | |||
}, | |||
]; | |||
@@ -47,28 +47,23 @@ const tableProps = [ | |||
{ | |||
prop: 'goodSpecificationCode', | |||
label: '产品编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'goodSpecificationName', | |||
label: '产品名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'cure', | |||
label: '是否需要熟化', | |||
align: 'center', | |||
filter: codeFilter('cure'), | |||
}, | |||
{ | |||
prop: 'cureTime', | |||
label: '需要熟化时间(小时)', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'deactivate', | |||
label: '是否启用', | |||
align: 'center', | |||
filter: codeFilter('deactivate'), | |||
}, | |||
]; | |||
@@ -28,52 +28,42 @@ const tableProps = [ | |||
{ | |||
prop: 'reqInterface', | |||
label: '请求接口', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'reqParameter', | |||
label: '请求参数', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'errorCode', | |||
label: '返回编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'cmd', | |||
label: '返回请求接口', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'msgId', | |||
label: '返回msgId', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'retStatus', | |||
label: '返回状态', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'fastName', | |||
label: '返回指定区域', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'areaName', | |||
label: '返回复合区域', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'list', | |||
label: '返回集合', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'createDate', | |||
prop: 'createTime', | |||
label: '时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
]; | |||
@@ -104,7 +94,7 @@ export default { | |||
label: '订单出货日期', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd hh:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
@@ -137,6 +127,7 @@ export default { | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.reqInterface = val.code; | |||
this.listQuery.reqParameter = val.name; | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:54 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-05 13:50:38 | |||
* @LastEditTime: 2023-09-27 10:44:49 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -12,8 +12,7 @@ | |||
<gaugeChart | |||
ref="gaugeChart" | |||
title="仓库占用率" | |||
height="500px" | |||
:occupancy-data="occupancyData" /> | |||
height="500px"/> | |||
</el-col> | |||
<el-col :span="14"> | |||
<barChart | |||
@@ -28,6 +27,7 @@ | |||
<script> | |||
import basicPage from '../mixins/basic-page'; | |||
import { mul } from '../mixins/code-filter'; | |||
import barChart from '../chart/BarChart.vue'; | |||
import gaugeChart from '../chart/GaugeChart.vue'; | |||
import { getOccupancy } from '@/api/asrs/warehouseStorehouse'; | |||
@@ -54,9 +54,10 @@ export default { | |||
// 获取数据列表 | |||
getDataList() { | |||
this.urlOptions.occupancyURL(this.aId).then((response) => { | |||
this.occupancyData = response.data; | |||
this.occupancyData = response.data.toFixed(2); | |||
const num = mul(this.occupancyData,100) | |||
this.$nextTick(() => { | |||
this.$refs.gaugeChart.initChart(); | |||
this.$refs.gaugeChart.initChart(num); | |||
}); | |||
}); | |||
this.urlOptions.allURL(this.aId).then((response) => { | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:54 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-05 14:51:54 | |||
* @LastEditTime: 2023-10-08 15:49:40 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -12,8 +12,7 @@ | |||
<gaugeChart | |||
ref="gaugeChart" | |||
title="仓库占用率" | |||
height="500px" | |||
:occupancy-data="occupancyData" /> | |||
height="500px"/> | |||
</el-col> | |||
<el-col :span="14"> | |||
<barChart | |||
@@ -28,6 +27,7 @@ | |||
<script> | |||
import basicPage from '../mixins/basic-page'; | |||
import { mul } from '../mixins/code-filter'; | |||
import barChart from '../chart/BarChart.vue'; | |||
import gaugeChart from '../chart/GaugeChart.vue'; | |||
import { getOccupancy } from '@/api/asrs/warehouseStorehouse'; | |||
@@ -56,9 +56,10 @@ export default { | |||
// 获取数据列表 | |||
getDataList() { | |||
this.urlOptions.occupancyURL(this.bId).then((response) => { | |||
this.occupancyData = response.data; | |||
this.occupancyData = response.data.toFixed(2); | |||
const num = mul(this.occupancyData,100) | |||
this.$nextTick(() => { | |||
this.$refs.gaugeChart.initChart(); | |||
this.$refs.gaugeChart.initChart(num); | |||
}); | |||
}); | |||
this.urlOptions.allURL(this.bId).then((response) => { | |||
@@ -14,7 +14,7 @@ | |||
<method-btn | |||
v-if="tableBtn.length" | |||
slot="handleBtn" | |||
:width="120" | |||
:width="80" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
@@ -31,46 +31,39 @@ | |||
import basicPage from '../mixins/basic-page'; | |||
import { parseTime } from '../mixins/code-filter'; | |||
import codeFilter from '../mixins/code-filter'; | |||
import { getMainTaskPage } from '@/api/oth/mainTask'; | |||
import { getMainTaskPage, deleteMainTask } from '@/api/oth/mainTask'; | |||
const tableProps = [ | |||
{ | |||
prop: 'mainTaskCode', | |||
label: '任务编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'mainTaskType', | |||
label: '任务类型', | |||
align: 'center', | |||
filter: codeFilter('mainTaskType'), | |||
}, | |||
{ | |||
prop: 'stacker', | |||
label: '堆垛机', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'agv', | |||
label: 'agv', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'mainTaskState', | |||
label: '状态', | |||
align: 'center', | |||
filter: codeFilter('mainTaskState'), | |||
}, | |||
{ | |||
prop: 'taskSource', | |||
label: '任务来源', | |||
align: 'center', | |||
filter: codeFilter('taskSource'), | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '创建时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
]; | |||
@@ -118,22 +111,40 @@ const mainTaskState = [ | |||
id: 5, | |||
}, | |||
]; | |||
const agvArr = [ | |||
{ | |||
name: 'A1', | |||
id: 1, | |||
}, | |||
{ | |||
name: 'A2', | |||
id: 2, | |||
}, | |||
{ | |||
name: 'A3', | |||
id: 3, | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getMainTaskPage, | |||
deleteURL: deleteMainTask, | |||
}, | |||
listQuery: { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
}, | |||
tableProps, | |||
tableBtn: [ | |||
true | |||
? { | |||
type: 'cancle', | |||
btnName: '取消', | |||
} | |||
: undefined, | |||
].filter((v) => v), | |||
{ | |||
type: 'canlce', | |||
btnName: '取消', | |||
}, | |||
], | |||
tableData: [], | |||
formConfig: [ | |||
{ | |||
@@ -159,17 +170,19 @@ export default { | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'input', | |||
type: 'select', | |||
label: 'agv', | |||
placeholder: 'agv', | |||
selectOptions: agvArr, | |||
param: 'agv', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'datePicker', | |||
label: '选择日期', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd hh:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
@@ -204,6 +217,7 @@ export default { | |||
this.listQuery.mainTaskType = val.taskType; | |||
this.listQuery.mainTaskState = val.status; | |||
this.listQuery.agv = val.agv; | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
@@ -221,6 +235,26 @@ export default { | |||
console.log(val); | |||
} | |||
}, | |||
otherMethods(val){ | |||
this.$confirm(`确定对${'[任务编码=' + val.data.mainTaskCode + ']'}进行取消操作?`, "提示", { | |||
confirmButtonText: "确定", | |||
cancelButtonText: "取消", | |||
type: "warning", | |||
}) | |||
.then(() => { | |||
this.urlOptions.deleteURL(val.data.id).then(({ data }) => { | |||
this.$message({ | |||
message: "操作成功", | |||
type: "success", | |||
duration: 1500, | |||
onClose: () => { | |||
this.getDataList(); | |||
}, | |||
}); | |||
}); | |||
}) | |||
.catch(() => { }); | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -30,46 +30,38 @@ const tableProps = [ | |||
{ | |||
prop: 'mainTaskCode', | |||
label: '任务编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'mainTaskType', | |||
label: '任务类型', | |||
align: 'center', | |||
filter: codeFilter('mainTaskType'), | |||
}, | |||
{ | |||
prop: 'stacker', | |||
label: '堆垛机', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'agv', | |||
label: 'agv', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'mainTaskState', | |||
label: '状态', | |||
align: 'center', | |||
filter: codeFilter('mainTaskState'), | |||
}, | |||
{ | |||
prop: 'taskSource', | |||
label: '任务来源', | |||
align: 'center', | |||
filter: codeFilter('taskSource'), | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '创建时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
{ | |||
prop: 'cancellation', | |||
label: '是否取消', | |||
align: 'center', | |||
filter: codeFilter('cancellation'), | |||
}, | |||
]; | |||
@@ -117,6 +109,34 @@ const mainTaskState = [ | |||
id: 5, | |||
}, | |||
]; | |||
const agvArr = [ | |||
{ | |||
name: 'A1', | |||
id: 1, | |||
}, | |||
{ | |||
name: 'A2', | |||
id: 2, | |||
}, | |||
{ | |||
name: 'A3', | |||
id: 3, | |||
}, | |||
]; | |||
const stackerArr = [ | |||
{ | |||
name: 'D1', | |||
id: 1, | |||
}, | |||
{ | |||
name: 'D2', | |||
id: 2, | |||
}, | |||
{ | |||
name: 'D3', | |||
id: 3, | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
@@ -150,23 +170,27 @@ export default { | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'input', | |||
type: 'select', | |||
label: '堆垛机', | |||
placeholder: '堆垛机', | |||
selectOptions: stackerArr, | |||
param: 'stacker', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'input', | |||
type: 'select', | |||
label: 'agv', | |||
placeholder: 'agv', | |||
selectOptions: agvArr, | |||
param: 'agv', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'datePicker', | |||
label: '选择日期', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd hh:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
@@ -202,6 +226,7 @@ export default { | |||
this.listQuery.mainTaskState = val.status; | |||
this.listQuery.stacker = val.stacker; | |||
this.listQuery.agv = val.agv; | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
@@ -28,17 +28,14 @@ const tableProps = [ | |||
{ | |||
prop: 'reqInterface', | |||
label: '请求接口', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'reqParameter', | |||
label: '请求参数', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'createDate', | |||
prop: 'createTime', | |||
label: '时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
]; | |||
@@ -69,7 +66,7 @@ export default { | |||
label: '订单出货日期', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd hh:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
@@ -102,6 +99,7 @@ export default { | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.reqInterface = val.code; | |||
this.listQuery.reqParameter = val.name; | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2022-08-24 11:19:43 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-05 15:10:13 | |||
* @LastEditTime: 2023-10-08 10:44:25 | |||
* @Description: | |||
*/ | |||
export default { | |||
@@ -39,7 +39,7 @@ export default { | |||
if(bPage){ | |||
this.dataForm.warehouseId = this.bId; | |||
}else{ | |||
this.dataForm.warehouseId = this.bId; | |||
this.dataForm.warehouseId = this.aId; | |||
} | |||
this.$nextTick(() => { | |||
this.$refs["dataForm"].resetFields(); | |||
@@ -90,17 +90,25 @@ export default { | |||
// 修改的提交 | |||
if (this.dataForm.id) { | |||
this.urlOptions.updateURL(this.dataForm).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.visible = false; | |||
this.$emit("refreshDataList"); | |||
if(response.data){ | |||
this.$modal.msgSuccess("修改成功"); | |||
this.visible = false; | |||
this.$emit("refreshDataList"); | |||
}else{ | |||
this.$modal.msgWarning('名称或编码不能重复');; | |||
} | |||
}); | |||
return; | |||
} | |||
// 添加的提交 | |||
this.urlOptions.createURL(this.dataForm).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.visible = false; | |||
this.$emit("refreshDataList"); | |||
if(response.data){ | |||
this.$modal.msgSuccess("新增成功"); | |||
this.visible = false; | |||
this.$emit("refreshDataList"); | |||
}else{ | |||
this.$modal.msgWarning('名称或编码不能重复');; | |||
} | |||
}); | |||
}); | |||
}, | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2022-08-24 11:19:43 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-05 15:10:24 | |||
* @LastEditTime: 2023-09-26 14:00:22 | |||
* @Description: | |||
*/ | |||
export default { | |||
@@ -42,7 +42,7 @@ export default { | |||
this.dataListLoading = true; | |||
this.urlOptions.getDataListURL(this.listQuery).then(response => { | |||
this.tableData = response.data.list; | |||
this.total = response.data.total; | |||
this.listQuery.total = response.data.total; | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
@@ -2,7 +2,7 @@ | |||
/* | |||
* @Date: 2020-12-29 16:49:28 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-07 14:10:53 | |||
* @LastEditTime: 2023-10-07 14:32:52 | |||
* @FilePath: \basic-admin\src\filters\basicData\index.js | |||
* @Description: | |||
*/ | |||
@@ -47,6 +47,9 @@ const table = { | |||
1: '否', | |||
2: '是', | |||
}, | |||
specification:{ | |||
0: '卷', | |||
}, | |||
} | |||
// 日期格式化 | |||
@@ -91,6 +94,20 @@ export function parseTime(time, pattern) { | |||
}) | |||
return time_str | |||
} | |||
// 去除浮点相乘 | |||
export function mul(num1, num2) { | |||
if (parseFloat(num1).toString() == "NaN" || parseFloat(num2).toString() == "NaN") return; | |||
var m = 0, s1 = num1.toString(), s2 = num2.toString(); | |||
try { | |||
m += s1.split(".")[1].length | |||
} catch (e) { | |||
} | |||
try { | |||
m += s2.split(".")[1].length | |||
} catch (e) { | |||
} | |||
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m); | |||
} | |||
export default function (dictTable) { | |||
return function (val) { | |||
return table?.[dictTable]?.[val] | |||
@@ -0,0 +1,46 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-09-22 15:36:40 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-26 15:59:57 | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="tableInner"> | |||
<el-input v-model="list[itemProp]" @blur="changeInput" /> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
name: "InputArea", | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}), | |||
}, | |||
itemProp: { | |||
type: String, | |||
}, | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData, | |||
}; | |||
}, | |||
methods: { | |||
changeInput() { | |||
this.list.sType = 1 | |||
this.$emit("emitData", this.list,1); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.tableInner >>> .el-input__inner { | |||
color: #409EFF; | |||
border: 1px rgb(232, 231, 231) solid; | |||
padding: 0; | |||
text-align: center; | |||
height: 30px; | |||
} | |||
</style> |
@@ -0,0 +1,59 @@ | |||
<template> | |||
<div class="tableInner"> | |||
<el-select v-model="list[itemProp]" @change="changeInput"> | |||
<el-option | |||
v-for="item in QArr" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id"></el-option> | |||
</el-select> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
name: 'InputArea', | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}), | |||
}, | |||
itemProp: { | |||
type: String, | |||
}, | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData, | |||
QArr: [ | |||
{ | |||
name: 'A', | |||
id: 0, | |||
}, | |||
{ | |||
name: 'B', | |||
id: 1, | |||
}, | |||
{ | |||
name: 'C', | |||
id: 2, | |||
}, | |||
], | |||
}; | |||
}, | |||
methods: { | |||
changeInput() { | |||
this.list.sType = 1; | |||
this.$emit('emitData', this.list); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.tableInner >>> .el-input__inner { | |||
color: #409EFF; | |||
border: 1px rgb(232, 231, 231) solid; | |||
padding: 0; | |||
text-align: center; | |||
height: 30px; | |||
} | |||
</style> |
@@ -2,16 +2,15 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-24 14:47:58 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-04 14:38:44 | |||
* @LastEditTime: 2023-10-07 14:33:42 | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="app-container"> | |||
<base-table | |||
v-loading="dataListLoading" | |||
:table-props="propType===1? | |||
[...tableProps,...tableProps2]:propType===2? | |||
[...tableProps,...tableProps1,...tableProps2]:tableProps" | |||
:table-props="propType==='1'? | |||
[...tableProps,...tableProps1]:tableProps" | |||
max-height="200" | |||
:table-data="tableData" /> | |||
</div> | |||
@@ -35,48 +34,39 @@ const tableProps = [ | |||
{ | |||
prop: 'goodSpecificationName', | |||
label: '产品名', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'goodSpecificationCode', | |||
label: '产品编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'goodSpecificationName1', | |||
prop: 'specification', | |||
label: '产品规格', | |||
align: 'center', | |||
filter: codeFilter('specification'), | |||
}, | |||
{ | |||
prop: 'number', | |||
label: '数量', | |||
}, | |||
{ | |||
prop: 'quality', | |||
label: '品质', | |||
align: 'center', | |||
filter: codeFilter('quality'), | |||
}, | |||
]; | |||
const tableProps1 = [ | |||
{ | |||
prop: 'number', | |||
label: '数量', | |||
align: 'center', | |||
}, | |||
] | |||
const tableProps2 = [ | |||
const tableProps1 = [ | |||
{ | |||
prop: 'cureTime', | |||
label: '需要熟化时间(小时)', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'alreadyCureTime', | |||
label: '已熟化时间(小时)', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '入库时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
] | |||
@@ -84,8 +74,8 @@ export default { | |||
mixins: [basicPage], | |||
props: { | |||
propType: { | |||
type: Number, | |||
default: 1, | |||
type: String, | |||
default: '1', | |||
}, | |||
warehouseId: { | |||
type: String, | |||
@@ -99,7 +89,6 @@ export default { | |||
}, | |||
tableProps, | |||
tableProps1, | |||
tableProps2, | |||
tableData: [], | |||
listQuery: { | |||
pageSize: 100, | |||
@@ -50,17 +50,14 @@ const tableProps = [ | |||
{ | |||
prop: 'warehouseCode', | |||
label: '仓库编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'warehouseName', | |||
label: '仓库名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'remark', | |||
label: '备注', | |||
align: 'center', | |||
}, | |||
]; | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-21 14:26:23 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-08-31 14:36:15 | |||
* @LastEditTime: 2023-10-07 16:45:47 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -11,92 +11,97 @@ | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<div class="mainbody"> | |||
<div v-for="a in 3" :key="a"> | |||
<el-row type="flex" justify="space-around"> | |||
<el-col :span="5" v-for="i in 4" :key="i"> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
<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> | |||
</div> | |||
<div class="mainbody"> | |||
<div v-for="a in listQuery.total" :key="a"> | |||
<el-row> | |||
<el-col :span="24"> | |||
<el-row> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
v-for="a in wareData.one" | |||
:key="a.id+a.warehouseStorehouseCode" | |||
:style="{background: bgColor[a.warehouseStorehouseState], float: 'left'}"> | |||
<!-- <div | |||
class="dashboard-layout-item-cricle" | |||
style="background: #16dc09" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ a.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
</el-row> | |||
<el-row> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
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" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ b.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
<el-divider class="divider"></el-divider> | |||
<el-row type="flex" justify="space-around"> | |||
<el-col :span="5" v-for="i in 4" :key="i"> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
</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="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
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" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ c.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
</el-row> | |||
<el-row> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
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" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ d.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import basicPage from '../mixins/basic-page'; | |||
import { getWarehouseStorehousePage } from '@/api/asrs/warehouseStorehouse'; | |||
import { getWarehouseStorehouseList } from '@/api/asrs/warehouseStorehouse'; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getWarehouseStorehousePage, | |||
getDataListURL: getWarehouseStorehouseList, | |||
}, | |||
listQuery: { | |||
wareLayer: 1, | |||
total: 0, | |||
}, | |||
wareData: { | |||
one: [], | |||
two: [], | |||
there: [], | |||
four: [], | |||
}, | |||
bgColor:['#37d97f','#ffbd02','#0b58ff'], | |||
formConfig: [ | |||
{ | |||
type: 'select', | |||
@@ -122,8 +127,34 @@ export default { | |||
}; | |||
}, | |||
components: {}, | |||
created() {}, | |||
created() { | |||
}, | |||
methods: { | |||
// 获取数据列表 | |||
getDataList() { | |||
this.dataListLoading = true; | |||
this.wareData= { | |||
one: [], | |||
two: [], | |||
there: [], | |||
four: [], | |||
}, | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
response.data.forEach((a, b) => { | |||
if (b % 4 === 0) { | |||
this.wareData.one.push(a); | |||
} else if (b % 4 === 1) { | |||
this.wareData.two.push(a); | |||
} else if (b % 4 === 2) { | |||
this.wareData.there.push(a); | |||
} else if (b % 4 === 3) { | |||
this.wareData.four.push(a); | |||
} | |||
}); | |||
this.listQuery.total = Math.ceil(response.data.length / 120); | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
@@ -139,18 +170,19 @@ export default { | |||
</script> | |||
<style lang="scss" scoped> | |||
.mainbody{ | |||
.mainbody { | |||
display: flex; | |||
gap: 50px; | |||
flex-direction: column; | |||
gap: 50px; | |||
flex-direction: column; | |||
} | |||
.dashboard-layout-item { | |||
width: 80px; | |||
color: white; | |||
width: 3.3%; | |||
text-align: center; | |||
height: 32px; | |||
height: 40px; | |||
box-shadow: 0px 3px 6px 0px rgba(166, 174, 190, 0.8); | |||
border-radius: 2px 4px 4px 2px; | |||
margin-bottom: 8px; | |||
margin-bottom: 4px; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
@@ -161,11 +193,22 @@ export default { | |||
border-radius: 6px; | |||
margin-right: 6px; | |||
} | |||
&:hover { | |||
background-color: rgba(85, 136, 253, 0.8) !important; | |||
color: #ffffff; | |||
cursor: pointer; | |||
transform: scaleY(1.3) translateZ(0); | |||
} | |||
} | |||
.el-divider--horizontal { | |||
margin: 10px 0; | |||
} | |||
.el-divider{ | |||
background-color: black; | |||
.el-divider { | |||
background-color: black; | |||
} | |||
.tips { | |||
position: absolute; | |||
top: 22px; | |||
left: 370px; | |||
} | |||
</style> |
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-21 14:26:23 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-05 14:53:46 | |||
* @LastEditTime: 2023-10-07 16:45:37 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -11,92 +11,97 @@ | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<div class="mainbody"> | |||
<div v-for="a in 3" :key="a"> | |||
<el-row type="flex" justify="space-around"> | |||
<el-col :span="5" v-for="i in 4" :key="i"> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
<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> | |||
</div> | |||
<div class="mainbody"> | |||
<div v-for="a in listQuery.total" :key="a"> | |||
<el-row> | |||
<el-col :span="24"> | |||
<el-row> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
v-for="a in wareData.one" | |||
:key="a.id+a.warehouseStorehouseCode" | |||
:style="{background: bgColor[a.warehouseStorehouseState], float: 'left'}"> | |||
<!-- <div | |||
class="dashboard-layout-item-cricle" | |||
style="background: #16dc09" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ a.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
</el-row> | |||
<el-row> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
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" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ b.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
<el-divider class="divider"></el-divider> | |||
<el-row type="flex" justify="space-around"> | |||
<el-col :span="5" v-for="i in 4" :key="i"> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
</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="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
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" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ c.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
</el-row> | |||
<el-row> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
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" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ d.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import basicPage from '../mixins/basic-page'; | |||
import { getWarehouseStorehousePage } from '@/api/asrs/warehouseStorehouse'; | |||
import { getWarehouseStorehouseList } from '@/api/asrs/warehouseStorehouse'; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getWarehouseStorehousePage, | |||
getDataListURL: getWarehouseStorehouseList, | |||
}, | |||
listQuery: { | |||
wareLayer: 1, | |||
total: 0, | |||
}, | |||
wareData: { | |||
one: [], | |||
two: [], | |||
there: [], | |||
four: [], | |||
}, | |||
bgColor:['#37d97f','#ffbd02','#0b58ff'], | |||
formConfig: [ | |||
{ | |||
type: 'select', | |||
@@ -124,8 +129,33 @@ export default { | |||
components: {}, | |||
created() { | |||
this.listQuery.warehouseId = this.bId; | |||
}, | |||
}, | |||
methods: { | |||
// 获取数据列表 | |||
getDataList() { | |||
this.dataListLoading = true; | |||
this.wareData= { | |||
one: [], | |||
two: [], | |||
there: [], | |||
four: [], | |||
}, | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
response.data.forEach((a, b) => { | |||
if (b % 4 === 0) { | |||
this.wareData.one.push(a); | |||
} else if (b % 4 === 1) { | |||
this.wareData.two.push(a); | |||
} else if (b % 4 === 2) { | |||
this.wareData.there.push(a); | |||
} else if (b % 4 === 3) { | |||
this.wareData.four.push(a); | |||
} | |||
}); | |||
this.listQuery.total = Math.ceil(response.data.length / 120); | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
@@ -141,18 +171,19 @@ export default { | |||
</script> | |||
<style lang="scss" scoped> | |||
.mainbody{ | |||
.mainbody { | |||
display: flex; | |||
gap: 50px; | |||
flex-direction: column; | |||
gap: 50px; | |||
flex-direction: column; | |||
} | |||
.dashboard-layout-item { | |||
width: 80px; | |||
color: white; | |||
width: 3.3%; | |||
text-align: center; | |||
height: 32px; | |||
height: 40px; | |||
box-shadow: 0px 3px 6px 0px rgba(166, 174, 190, 0.8); | |||
border-radius: 2px 4px 4px 2px; | |||
margin-bottom: 8px; | |||
margin-bottom: 4px; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
@@ -163,11 +194,22 @@ export default { | |||
border-radius: 6px; | |||
margin-right: 6px; | |||
} | |||
&:hover { | |||
background-color: rgba(85, 136, 253, 0.8) !important; | |||
color: #ffffff; | |||
cursor: pointer; | |||
transform: scaleY(1.3) translateZ(0); | |||
} | |||
} | |||
.el-divider--horizontal { | |||
margin: 10px 0; | |||
} | |||
.el-divider{ | |||
background-color: black; | |||
.el-divider { | |||
background-color: black; | |||
} | |||
.tips { | |||
position: absolute; | |||
top: 22px; | |||
left: 370px; | |||
} | |||
</style> |
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2021-11-18 14:16:25 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-08-31 16:37:37 | |||
* @LastEditTime: 2023-10-08 10:34:29 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -13,22 +13,12 @@ | |||
size="medium" | |||
label-width="120px"> | |||
<el-col :span="8"> | |||
<el-form-item label="仓库" prop="warehouseInfo"> | |||
<el-select | |||
v-model="dataForm.warehouseInfo" | |||
placeholder="请输入仓库" | |||
filterable | |||
clearable | |||
@change="setWarehouseInfo" | |||
:style="{ width: '100%' }"> | |||
<el-option | |||
v-for="item in urlOptions.optionArr.arr0" | |||
:key="item.id" | |||
:label="item.warehouseName" | |||
:value="item.id+'-'+item.warehouseName+'-'+item.warehouseCode" | |||
> | |||
</el-option> | |||
</el-select> | |||
<el-form-item label="仓库" prop="warehouseName"> | |||
<el-input | |||
v-model="dataForm.warehouseName" | |||
placeholder="请输入仓库名称" | |||
readonly | |||
:style="{ width: '100%' }" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="8"> | |||
@@ -37,7 +27,7 @@ | |||
v-model="dataForm.warehouseStorehouseName" | |||
placeholder="请输入库位名称" | |||
clearable | |||
:style="{ width: '100%' }"></el-input> | |||
:style="{ width: '100%' }" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="8"> | |||
@@ -130,10 +120,8 @@ export default { | |||
updateURL: updateWarehouseStorehouse, | |||
infoURL: getWarehouseStorehouse, | |||
}, | |||
setData: true, | |||
dataForm: { | |||
id: undefined, | |||
warehouseInfo: undefined, | |||
warehouseId: undefined, | |||
warehouseName: undefined, | |||
warehouseCode: undefined, | |||
@@ -194,16 +182,24 @@ export default { | |||
}; | |||
}, | |||
methods: { | |||
setDataForm(){ | |||
this.dataForm.warehouseInfo = this.dataForm.warehouseId+'-'+this.dataForm.warehouseName+'-'+this.dataForm.warehouseCode | |||
}, | |||
setWarehouseInfo(val){ | |||
if(val){ | |||
this.dataForm.warehouseId = val.split('-')[0] | |||
this.dataForm.warehouseName = val.split('-')[1] | |||
this.dataForm.warehouseCode = val.split('-')[2] | |||
getCode() { | |||
if(this.dataForm.warehouseId === this.aId){ | |||
this.dataForm.warehouseName = "立库仓库A" | |||
this.dataForm.warehouseCode = "CK1" | |||
}else{ | |||
this.dataForm.warehouseName = "立库仓库B" | |||
this.dataForm.warehouseCode = "CK2" | |||
} | |||
} | |||
this.urlOptions.codeURL() | |||
.then(({ data: res }) => { | |||
if (this.urlOptions.codeName) { | |||
this.dataForm[this.urlOptions.codeName] = res; | |||
} else { | |||
this.dataForm.code = res; | |||
} | |||
}) | |||
.catch(() => { }); | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -47,54 +47,44 @@ const tableProps = [ | |||
{ | |||
prop: 'warehouseCode', | |||
label: '仓库编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'warehouseName', | |||
label: '仓库名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'warehouseStorehouseCode', | |||
label: '库位编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'warehouseStorehouseName', | |||
label: '库位名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'wareRow', | |||
label: '排', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'wareColumn', | |||
label: '列', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'wareLayer', | |||
label: '层', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'cacheLocation', | |||
label: '是否缓存库位', | |||
align: 'center', | |||
label: '缓存库位', | |||
filter: codeFilter('isOrno'), | |||
}, | |||
{ | |||
prop: 'deactivate', | |||
label: '是否停用', | |||
align: 'center', | |||
filter: codeFilter('deactivate'), | |||
}, | |||
{ | |||
prop: 'notes', | |||
label: '备注', | |||
align: 'center', | |||
}, | |||
]; | |||
@@ -47,54 +47,44 @@ const tableProps = [ | |||
{ | |||
prop: 'warehouseCode', | |||
label: '仓库编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'warehouseName', | |||
label: '仓库名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'warehouseStorehouseCode', | |||
label: '库位编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'warehouseStorehouseName', | |||
label: '库位名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'wareRow', | |||
label: '排', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'wareColumn', | |||
label: '列', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'wareLayer', | |||
label: '层', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'cacheLocation', | |||
label: '是否缓存库位', | |||
align: 'center', | |||
label: '缓存库位', | |||
filter: codeFilter('isOrno'), | |||
}, | |||
{ | |||
prop: 'deactivate', | |||
label: '是否停用', | |||
align: 'center', | |||
filter: codeFilter('deactivate'), | |||
}, | |||
{ | |||
prop: 'notes', | |||
label: '备注', | |||
align: 'center', | |||
}, | |||
]; | |||
@@ -1,7 +1,15 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:55 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-10-07 14:39:56 | |||
* @Description: | |||
--> | |||
<template> | |||
<el-drawer | |||
:visible.sync="visible" | |||
:show-close="false" | |||
:destroy-on-close="true" | |||
:wrapper-closable="false" | |||
class="drawer" | |||
size="60%"> | |||
@@ -18,31 +26,28 @@ | |||
@keyup.enter.native="dataFormSubmit"> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="仓库编码" prop="code"> | |||
<el-form-item label="仓库编码" prop="warehouseCode"> | |||
<el-input | |||
v-model="dataForm.code" | |||
v-model="dataForm.warehouseCode" | |||
readonly | |||
:disabled="isdetail" | |||
placeholder="请输入仓库编码" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="仓库名" prop="name"> | |||
<el-form-item label="仓库名" prop="warehouseName"> | |||
<el-input | |||
v-model="dataForm.name" | |||
v-model="dataForm.warehouseName" | |||
readonly | |||
:disabled="isdetail" | |||
placeholder="请输入仓库名" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="工序" prop="processId"> | |||
<el-form-item label="工序" prop="process"> | |||
<el-select | |||
v-model="dataForm.processId" | |||
v-model="dataForm.process" | |||
style="width: 100%" | |||
:disabled="isdetail" | |||
placeholder="请选择工序"> | |||
<el-option | |||
v-for="item in processArr" | |||
@@ -59,20 +64,20 @@ | |||
style="margin: 16px 0; padding-left: 8px" | |||
:no-padding="true"> | |||
产品信息 | |||
<el-alert title="产品信息新增和修改后,需点击最下方保存按钮确定修改" type="warning" show-icon></el-alert> | |||
</small-title> | |||
<div class="attr-list"> | |||
<base-table | |||
:table-props=" | |||
propType === 1 ? [...tableProps, ...tableProps1] : tableProps | |||
" | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:add-button-show="addButtonShow" | |||
@emitButtonClick="addNew" | |||
@emitFun="inputChange" | |||
:height="400" | |||
:table-data="productAttributeList"> | |||
<method-btn | |||
v-if="!isdetail" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
@@ -85,47 +90,30 @@ | |||
<div style="position: absolute; bottom: 24px; right: 24px"> | |||
<el-button style="margin-right: 10px" @click="goback()">返回</el-button> | |||
<el-button v-if="isdetail" type="primary" @click="goEdit()"> | |||
编辑 | |||
</el-button> | |||
<span v-if="!isdetail"> | |||
<span> | |||
<el-button type="primary" @click="dataFormSubmit()">保存</el-button> | |||
<!-- <el-button | |||
v-if="dataForm.id && !isdetail" | |||
type="primary" | |||
@click="addNew()"> | |||
添加属性 | |||
</el-button> --> | |||
</span> | |||
</div> | |||
<product-attr-add | |||
v-if="addOrUpdateVisible" | |||
ref="addOrUpdate" | |||
:warehouse-id="dataForm.id" | |||
@refreshDataList="getList" /> | |||
:warehouse-id="dataForm.warehouseId" | |||
@refreshDataList="addList" /> | |||
</el-drawer> | |||
</template> | |||
<script> | |||
import { | |||
updateProduct, | |||
} from '@/api/core/base/product'; | |||
import { | |||
getWarehouseStorehouseGoodsSpecificationPage, | |||
deleteWarehouseStorehouseGoodsSpecification, | |||
} from '@/api/asrs/warehouseStorehouseGoodsSpecification'; | |||
import { getWarehouseStorehouseGoodsSpecificationPage } from '@/api/asrs/warehouseStorehouseGoodsSpecification'; | |||
import { updateWarehouseStorehouse } from '@/api/asrs/warehouseStorehouse'; | |||
import productAttrAdd from './attr-add'; | |||
import inputArea from '../mixins/inputArea'; | |||
import selectQuality from '../mixins/selectQuality'; | |||
import { parseTime } from '../mixins/code-filter'; | |||
import codeFilter from '../mixins/code-filter'; | |||
import SmallTitle from './SmallTitle'; | |||
const tableBtn = [ | |||
{ | |||
type: 'edit', | |||
btnName: '编辑', | |||
}, | |||
{ | |||
type: 'delete', | |||
btnName: '删除', | |||
@@ -141,30 +129,27 @@ const tableProps = [ | |||
label: '产品编码', | |||
}, | |||
{ | |||
prop: 'goodSpecificationName1', | |||
prop: 'specification', | |||
label: '产品规格', | |||
align: 'center', | |||
filter: codeFilter('specification'), | |||
}, | |||
{ | |||
prop: 'number', | |||
label: '数量', | |||
subcomponent: inputArea, | |||
}, | |||
{ | |||
prop: 'quality', | |||
label: '品质', | |||
align: 'center', | |||
filter: codeFilter('quality'), | |||
subcomponent: selectQuality, | |||
}, | |||
{ | |||
prop: 'cureTime', | |||
label: '需要熟化时间(小时)', | |||
align: 'center', | |||
}, | |||
]; | |||
const tableProps1 = [ | |||
{ | |||
prop: 'number', | |||
label: '数量', | |||
align: 'center', | |||
}, | |||
]; | |||
const processArr = [ | |||
{ | |||
name: '开始', | |||
@@ -189,58 +174,35 @@ const processArr = [ | |||
]; | |||
export default { | |||
components: { productAttrAdd, SmallTitle }, | |||
props: { | |||
propType: { | |||
type: Number, | |||
default: 0, | |||
}, | |||
}, | |||
data() { | |||
return { | |||
visible: false, | |||
addOrUpdateVisible: false, | |||
tableBtn, | |||
tableProps, | |||
tableProps1, | |||
productAttributeList: [], | |||
addButtonShow: '新增', | |||
processArr, | |||
dataForm: { | |||
id: null, | |||
name: '', | |||
code: '', | |||
processId: '', | |||
warehouseName: '', | |||
warehouseCode: '', | |||
process: '', | |||
}, | |||
listQuery: { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 0, | |||
}, | |||
dataRule: { | |||
// name: [ | |||
// { | |||
// required: true, | |||
// message: '产品名称不能为空', | |||
// trigger: 'blur', | |||
// }, | |||
// ], | |||
}, | |||
isdetail: false, | |||
dataRule: {}, | |||
}; | |||
}, | |||
methods: { | |||
initData() { | |||
this.productAttributeList.splice(0); | |||
}, | |||
init(val, isdetail) { | |||
console.log(val) | |||
this.dataForm.name = val.warehouseName | |||
this.dataForm.code = val.warehouseCode | |||
this.dataForm.processId = val.process | |||
let id = val.id | |||
init(val) { | |||
this.dataForm = val; | |||
this.initData(); | |||
this.isdetail = isdetail || false; | |||
this.dataForm.id = id || null; | |||
this.visible = true; | |||
this.$nextTick(() => { | |||
@@ -263,9 +225,24 @@ export default { | |||
}; | |||
getWarehouseStorehouseGoodsSpecificationPage(params).then((response) => { | |||
this.productAttributeList = response.data.list; | |||
this.listQuery.total = response.data.total; | |||
}); | |||
}, | |||
inputChange(data) { | |||
switch (data.sType) { | |||
case 1: | |||
this.productAttributeList[data._pageIndex - 1][data.prop] = | |||
data[data.prop]; | |||
break; | |||
case 2: | |||
this.productAttributeList[data._pageIndex - 1][data.prop] = | |||
data.string ? data.string.split('+')[0] : ''; | |||
this.productAttributeList[data._pageIndex - 1][data.prop + 'Name'] = | |||
data.string ? data.string.split('+')[1] : ''; | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
handleClick(raw) { | |||
if (raw.type === 'delete') { | |||
this.$confirm( | |||
@@ -282,29 +259,26 @@ export default { | |||
} | |||
) | |||
.then(() => { | |||
deleteWarehouseStorehouseGoodsSpecification(raw.data.id).then(({ data }) => { | |||
this.$message({ | |||
message: '操作成功', | |||
type: 'success', | |||
duration: 1500, | |||
onClose: () => { | |||
this.getList(); | |||
}, | |||
}); | |||
}); | |||
this.productAttributeList.splice(raw.data._pageIndex - 1, 1); | |||
}) | |||
.catch(() => {}); | |||
} else { | |||
this.addNew(raw.data.id); | |||
this.addNew(raw.data._pageIndex); | |||
} | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
this.productAttributeList.forEach((item) => { | |||
item.id = ''; | |||
item.warehouseStorehouseId = this.dataForm.id | |||
item.warehouseId = ''; | |||
}); | |||
this.$refs['dataForm'].validate((valid) => { | |||
if (valid) { | |||
this.dataForm.list = this.productAttributeList; | |||
// 修改的提交 | |||
if (this.dataForm.id) { | |||
updateProduct(this.dataForm).then((response) => { | |||
updateWarehouseStorehouse(this.dataForm).then((response) => { | |||
this.$modal.msgSuccess('修改成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
@@ -314,16 +288,16 @@ export default { | |||
} | |||
}); | |||
}, | |||
goEdit() { | |||
this.isdetail = false; | |||
}, | |||
// 新增 / 修改 | |||
addNew(id) { | |||
addNew(index) { | |||
this.addOrUpdateVisible = true; | |||
this.$nextTick(() => { | |||
this.$refs.addOrUpdate.init(id); | |||
this.$refs.addOrUpdate.init(index); | |||
}); | |||
}, | |||
addList(data) { | |||
this.productAttributeList.push(data.productInfo); | |||
}, | |||
goback() { | |||
this.$emit('refreshDataList'); | |||
this.visible = false; | |||
@@ -19,17 +19,18 @@ | |||
:rules="dataRule" | |||
label-width="100px" | |||
@keyup.enter.native="dataFormSubmit()"> | |||
<el-form-item label="产品" prop="productId"> | |||
<el-form-item label="产品" prop="productInfo"> | |||
<el-select | |||
v-model="dataForm.productId" | |||
v-model="dataForm.productInfo" | |||
style="width: 100%" | |||
@change="setProduct" | |||
filterable | |||
value-key="id" | |||
placeholder="请选择产品"> | |||
<el-option | |||
v-for="item in productArr" | |||
:key="item.id" | |||
:label="item.goodSpecificationName" | |||
:value="item.id" /> | |||
:value="item" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-form> | |||
@@ -42,7 +43,6 @@ | |||
</template> | |||
<script> | |||
import { createWarehouseStorehouseGoodsSpecification } from '@/api/asrs/warehouseStorehouseGoodsSpecification'; | |||
import { getGoodSpecificationPage } from '@/api/asrs/goodSpecification'; | |||
export default { | |||
@@ -56,52 +56,52 @@ export default { | |||
return { | |||
visible: false, | |||
dataForm: { | |||
id: 0, | |||
productId: '', | |||
value: '', | |||
index: -1, | |||
productInfo: '', | |||
}, | |||
productArr: [], | |||
dataRule: { | |||
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }], | |||
productId: [ | |||
{ required: true, message: '产品不能为空', trigger: 'blur' }, | |||
], | |||
}, | |||
}; | |||
}, | |||
methods: { | |||
init(id) { | |||
this.dataForm.id = id || ''; | |||
init(index) { | |||
if (index >= 0) { | |||
this.dataForm.index = index; | |||
} | |||
this.visible = true; | |||
this.$nextTick(() => { | |||
this.$refs['dataForm'].resetFields(); | |||
const params = { | |||
pageSize: 100, | |||
pageNo: 1, | |||
warehouseId: this.warehouseId, | |||
}; | |||
getGoodSpecificationPage(params).then((response) => { | |||
this.productArr = response.data.list; | |||
}); | |||
}); | |||
}, | |||
setProduct(val) { | |||
let data = this.productArr.find((item) => { | |||
return (item.id === val); | |||
}); | |||
const { id, ...newData } = data; | |||
this.dataForm.value = newData; | |||
this.dataForm.value.goodSpecificationId = id; | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
this.$refs['dataForm'].validate((valid) => { | |||
if (valid) { | |||
// 添加的提交 | |||
createWarehouseStorehouseGoodsSpecification({ | |||
...this.dataForm.value, | |||
warehouseStorehouseId: this.warehouseId, | |||
}).then((response) => { | |||
this.$modal.msgSuccess('添加成功'); | |||
this.dataForm.productInfo.goodSpecificationId = | |||
this.dataForm.productInfo.id; | |||
// 修改的提交 | |||
if (this.dataForm.index >= 0) { | |||
this.$modal.msgSuccess('修改成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
}); | |||
this.$emit('refreshDataList', this.dataForm); | |||
return; | |||
} | |||
// 添加的提交 | |||
this.$modal.msgSuccess('新增成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList', this.dataForm); | |||
} | |||
}); | |||
}, | |||
@@ -53,7 +53,7 @@ | |||
</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="操作" align="center"> | |||
<el-table-column label="操作"> | |||
<template v-slot="scope"> | |||
<el-button | |||
size="mini" | |||
@@ -62,7 +62,7 @@ | |||
v-hasPermi="[ | |||
'asrs:warehouse-storehouse-goods-specification:update', | |||
]"> | |||
编辑 | |||
<span class="iconfont icon-edit primary-color"></span> | |||
</el-button> | |||
</template> | |||
</el-table-column> | |||
@@ -53,7 +53,7 @@ | |||
</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="操作" align="center"> | |||
<el-table-column label="操作"> | |||
<template v-slot="scope"> | |||
<el-button | |||
size="mini" | |||
@@ -62,7 +62,7 @@ | |||
v-hasPermi="[ | |||
'asrs:warehouse-storehouse-goods-specification:update', | |||
]"> | |||
编辑 | |||
<span class="iconfont icon-edit primary-color"></span> | |||
</el-button> | |||
</template> | |||
</el-table-column> | |||
@@ -0,0 +1,46 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-09-22 15:36:40 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-26 15:59:57 | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="tableInner"> | |||
<el-input v-model="list[itemProp]" @blur="changeInput" /> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
name: "InputArea", | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}), | |||
}, | |||
itemProp: { | |||
type: String, | |||
}, | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData, | |||
}; | |||
}, | |||
methods: { | |||
changeInput() { | |||
this.list.sType = 1 | |||
this.$emit("emitData", this.list,1); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.tableInner >>> .el-input__inner { | |||
color: #409EFF; | |||
border: 1px rgb(232, 231, 231) solid; | |||
padding: 0; | |||
text-align: center; | |||
height: 30px; | |||
} | |||
</style> |
@@ -0,0 +1,59 @@ | |||
<template> | |||
<div class="tableInner"> | |||
<el-select v-model="list[itemProp]" @change="changeInput"> | |||
<el-option | |||
v-for="item in QArr" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id"></el-option> | |||
</el-select> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
name: 'InputArea', | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}), | |||
}, | |||
itemProp: { | |||
type: String, | |||
}, | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData, | |||
QArr: [ | |||
{ | |||
name: 'A', | |||
id: 0, | |||
}, | |||
{ | |||
name: 'B', | |||
id: 1, | |||
}, | |||
{ | |||
name: 'C', | |||
id: 2, | |||
}, | |||
], | |||
}; | |||
}, | |||
methods: { | |||
changeInput() { | |||
this.list.sType = 1; | |||
this.$emit('emitData', this.list); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.tableInner >>> .el-input__inner { | |||
color: #409EFF; | |||
border: 1px rgb(232, 231, 231) solid; | |||
padding: 0; | |||
text-align: center; | |||
height: 30px; | |||
} | |||
</style> |
@@ -2,6 +2,7 @@ | |||
<el-drawer | |||
:visible.sync="visible" | |||
:show-close="false" | |||
:destroy-on-close="true" | |||
:wrapper-closable="false" | |||
class="drawer" | |||
size="60%"> | |||
@@ -22,7 +23,6 @@ | |||
<el-input | |||
v-model="dataForm.code" | |||
readonly | |||
:disabled="isdetail" | |||
placeholder="请输入仓库编码" /> | |||
</el-form-item> | |||
</el-col> | |||
@@ -31,7 +31,6 @@ | |||
<el-input | |||
v-model="dataForm.name" | |||
readonly | |||
:disabled="isdetail" | |||
placeholder="请输入仓库名" /> | |||
</el-form-item> | |||
</el-col> | |||
@@ -42,7 +41,6 @@ | |||
<el-select | |||
v-model="dataForm.processId" | |||
style="width: 100%" | |||
:disabled="isdetail" | |||
placeholder="请选择工序"> | |||
<el-option | |||
v-for="item in processArr" | |||
@@ -59,20 +57,22 @@ | |||
style="margin: 16px 0; padding-left: 8px" | |||
:no-padding="true"> | |||
产品信息 | |||
<el-alert title="产品信息新增和修改后,需点击最下方保存按钮确定修改" type="warning" show-icon></el-alert> | |||
</small-title> | |||
<div class="attr-list"> | |||
<base-table | |||
:table-props=" | |||
propType === 1 ? [...tableProps, ...tableProps1] : tableProps | |||
tableProps | |||
" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:add-button-show="addButtonShow" | |||
@emitButtonClick="addNew" | |||
@emitFun="inputChange" | |||
:height="400" | |||
:table-data="productAttributeList"> | |||
<method-btn | |||
v-if="!isdetail" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
@@ -85,25 +85,16 @@ | |||
<div style="position: absolute; bottom: 24px; right: 24px"> | |||
<el-button style="margin-right: 10px" @click="goback()">返回</el-button> | |||
<el-button v-if="isdetail" type="primary" @click="goEdit()"> | |||
编辑 | |||
</el-button> | |||
<span v-if="!isdetail"> | |||
<span> | |||
<el-button type="primary" @click="dataFormSubmit()">保存</el-button> | |||
<!-- <el-button | |||
v-if="dataForm.id && !isdetail" | |||
type="primary" | |||
@click="addNew()"> | |||
添加属性 | |||
</el-button> --> | |||
</span> | |||
</div> | |||
<product-attr-add | |||
v-if="addOrUpdateVisible" | |||
ref="addOrUpdate" | |||
:warehouse-id="dataForm.id" | |||
@refreshDataList="getList" /> | |||
:warehouse-id="dataForm.warehouseId" | |||
@refreshDataList="addList" /> | |||
</el-drawer> | |||
</template> | |||
@@ -117,15 +108,13 @@ import { | |||
deleteWarehouseStorehouseGoodsSpecification, | |||
} from '@/api/asrs/warehouseStorehouseGoodsSpecification'; | |||
import productAttrAdd from './attr-add'; | |||
import inputArea from '../mixins/inputArea'; | |||
import selectQuality from '../mixins/selectQuality'; | |||
import { parseTime } from '../mixins/code-filter'; | |||
import codeFilter from '../mixins/code-filter'; | |||
import SmallTitle from './SmallTitle'; | |||
const tableBtn = [ | |||
{ | |||
type: 'edit', | |||
btnName: '编辑', | |||
}, | |||
{ | |||
type: 'delete', | |||
btnName: '删除', | |||
@@ -141,35 +130,27 @@ const tableProps = [ | |||
label: '产品编码', | |||
}, | |||
{ | |||
prop: 'goodSpecificationName1', | |||
prop: 'specification', | |||
label: '产品规格', | |||
align: 'center', | |||
filter: codeFilter('specification'), | |||
}, | |||
{ | |||
prop: 'number', | |||
label: '数量', | |||
align: 'center', | |||
subcomponent: inputArea, | |||
}, | |||
{ | |||
prop: 'quality', | |||
label: '品质', | |||
align: 'center', | |||
filter: codeFilter('quality'), | |||
subcomponent: selectQuality, | |||
}, | |||
{ | |||
prop: 'cureTime', | |||
label: '需要熟化时间(小时)', | |||
align: 'center', | |||
}, | |||
]; | |||
const tableProps1 = [ | |||
{ | |||
prop: 'number', | |||
label: '数量', | |||
align: 'center', | |||
}, | |||
]; | |||
const processArr = [ | |||
{ | |||
name: '开始', | |||
@@ -194,19 +175,12 @@ const processArr = [ | |||
]; | |||
export default { | |||
components: { productAttrAdd, SmallTitle }, | |||
props: { | |||
propType: { | |||
type: Number, | |||
default: 0, | |||
}, | |||
}, | |||
data() { | |||
return { | |||
visible: false, | |||
addOrUpdateVisible: false, | |||
tableBtn, | |||
tableProps, | |||
tableProps1, | |||
productAttributeList: [], | |||
addButtonShow: '新增', | |||
processArr, | |||
@@ -230,21 +204,15 @@ export default { | |||
// }, | |||
// ], | |||
}, | |||
isdetail: false, | |||
}; | |||
}, | |||
methods: { | |||
initData() { | |||
this.productAttributeList.splice(0); | |||
}, | |||
init(val, isdetail) { | |||
this.dataForm.name = val.warehouseName | |||
this.dataForm.code = val.warehouseCode | |||
this.dataForm.processId = val.process | |||
let id = val.id | |||
init(val) { | |||
this.dataForm = val; | |||
this.initData(); | |||
this.isdetail = isdetail || false; | |||
this.dataForm.id = id || null; | |||
this.visible = true; | |||
this.$nextTick(() => { | |||
@@ -270,6 +238,22 @@ export default { | |||
this.listQuery.total = response.data.total; | |||
}); | |||
}, | |||
inputChange(data) { | |||
switch (data.sType) { | |||
case 1: | |||
this.productAttributeList[data._pageIndex - 1][data.prop] = | |||
data[data.prop]; | |||
break; | |||
case 2: | |||
this.productAttributeList[data._pageIndex - 1][data.prop] = | |||
data.string ? data.string.split('+')[0] : ''; | |||
this.productAttributeList[data._pageIndex - 1][data.prop + 'Name'] = | |||
data.string ? data.string.split('+')[1] : ''; | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
handleClick(raw) { | |||
if (raw.type === 'delete') { | |||
this.$confirm( | |||
@@ -286,27 +270,24 @@ export default { | |||
} | |||
) | |||
.then(() => { | |||
deleteWarehouseStorehouseGoodsSpecification(raw.data.id).then(({ data }) => { | |||
this.$message({ | |||
message: '操作成功', | |||
type: 'success', | |||
duration: 1500, | |||
onClose: () => { | |||
this.getList(); | |||
}, | |||
}); | |||
}); | |||
this.productAttributeList.splice(raw.data._pageIndex - 1, 1); | |||
}) | |||
.catch(() => {}); | |||
} else { | |||
this.addNew(raw.data.id); | |||
this.addNew(raw.data._pageIndex); | |||
} | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
this.productAttributeList.forEach((item) => { | |||
item.id = ''; | |||
item.warehouseStorehouseId = this.dataForm.id | |||
item.warehouseId = ''; | |||
}); | |||
this.$refs['dataForm'].validate((valid) => { | |||
if (valid) { | |||
// 修改的提交 | |||
this.dataForm.list = this.productAttributeList; | |||
if (this.dataForm.id) { | |||
updateProduct(this.dataForm).then((response) => { | |||
this.$modal.msgSuccess('修改成功'); | |||
@@ -318,16 +299,16 @@ export default { | |||
} | |||
}); | |||
}, | |||
goEdit() { | |||
this.isdetail = false; | |||
}, | |||
// 新增 / 修改 | |||
addNew(id) { | |||
addNew(index) { | |||
this.addOrUpdateVisible = true; | |||
this.$nextTick(() => { | |||
this.$refs.addOrUpdate.init(id); | |||
this.$refs.addOrUpdate.init(index); | |||
}); | |||
}, | |||
addList(data) { | |||
this.productAttributeList.push(data.productInfo); | |||
}, | |||
goback() { | |||
this.$emit('refreshDataList'); | |||
this.visible = false; | |||
@@ -19,17 +19,18 @@ | |||
:rules="dataRule" | |||
label-width="100px" | |||
@keyup.enter.native="dataFormSubmit()"> | |||
<el-form-item label="产品" prop="productId"> | |||
<el-form-item label="产品" prop="productInfo"> | |||
<el-select | |||
v-model="dataForm.productId" | |||
v-model="dataForm.productInfo" | |||
style="width: 100%" | |||
@change="setProduct" | |||
filterable | |||
value-key="id" | |||
placeholder="请选择产品"> | |||
<el-option | |||
v-for="item in productArr" | |||
:key="item.id" | |||
:label="item.goodSpecificationName" | |||
:value="item.id" /> | |||
:value="item" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-form> | |||
@@ -42,7 +43,6 @@ | |||
</template> | |||
<script> | |||
import { createWarehouseStorehouseGoodsSpecification } from '@/api/asrs/warehouseStorehouseGoodsSpecification'; | |||
import { getGoodSpecificationPage } from '@/api/asrs/goodSpecification'; | |||
export default { | |||
@@ -56,9 +56,8 @@ export default { | |||
return { | |||
visible: false, | |||
dataForm: { | |||
id: 0, | |||
productId: '', | |||
value: '', | |||
index: -1, | |||
productInfo: '', | |||
}, | |||
productArr: [], | |||
dataRule: { | |||
@@ -67,41 +66,39 @@ export default { | |||
}; | |||
}, | |||
methods: { | |||
init(id) { | |||
this.dataForm.id = id || ''; | |||
init(index) { | |||
if (index >= 0) { | |||
this.dataForm.index = index; | |||
} | |||
this.visible = true; | |||
this.$nextTick(() => { | |||
this.$refs['dataForm'].resetFields(); | |||
const params = { | |||
pageSize: 100, | |||
pageNo: 1, | |||
warehouseId: this.warehouseId, | |||
}; | |||
getGoodSpecificationPage(params).then((response) => { | |||
this.productArr = response.data.list; | |||
}); | |||
}); | |||
}, | |||
setProduct(val) { | |||
let data = this.productArr.find((item) => { | |||
return (item.id === val); | |||
}); | |||
const { id, ...newData } = data; | |||
this.dataForm.value = newData; | |||
this.dataForm.value.goodSpecificationId = id; | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
this.$refs['dataForm'].validate((valid) => { | |||
if (valid) { | |||
// 添加的提交 | |||
createWarehouseStorehouseGoodsSpecification({ | |||
...this.dataForm.value, | |||
warehouseStorehouseId: this.warehouseId, | |||
}).then((response) => { | |||
this.$modal.msgSuccess('添加成功'); | |||
this.dataForm.productInfo.goodSpecificationId = this.dataForm.productInfo.id | |||
// 修改的提交 | |||
if (this.dataForm.index >= 0) { | |||
this.$modal.msgSuccess('修改成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
}); | |||
this.$emit('refreshDataList', this.dataForm); | |||
return; | |||
} | |||
// 添加的提交 | |||
this.$modal.msgSuccess('新增成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList', this.dataForm); | |||
} | |||
}); | |||
}, | |||
@@ -17,7 +17,7 @@ | |||
ref="dataList"> | |||
<el-table-column type="expand"> | |||
<template slot-scope="scope"> | |||
<product :warehouse-id="scope.row.id" :prop-type="2"></product> | |||
<product :warehouse-id="scope.row.id"></product> | |||
</template> | |||
</el-table-column> | |||
<el-table-column prop="warehouseName" label="仓库名"></el-table-column> | |||
@@ -55,7 +55,7 @@ | |||
</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="操作" align="center"> | |||
<el-table-column label="操作"> | |||
<template v-slot="scope"> | |||
<el-button | |||
size="mini" | |||
@@ -67,7 +67,7 @@ | |||
</el-button> | |||
<el-button | |||
size="mini" | |||
v-else-if="scope.row.warehouseStorehouseState === 1" | |||
v-if="scope.row.warehouseStorehouseState === 2" | |||
type="text" | |||
@click="handleClick({ data: scope.row, type: 'out' })" | |||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']"> | |||
@@ -75,7 +75,7 @@ | |||
</el-button> | |||
<el-button | |||
size="mini" | |||
v-else-if="scope.row.warehouseStorehouseState === 2" | |||
v-if="scope.row.warehouseStorehouseState === 2" | |||
type="text" | |||
@click="handleClick({ data: scope.row, type: 'move' })" | |||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']"> | |||
@@ -211,23 +211,6 @@ export default { | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
{ | |||
type: 'separate', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '重置', | |||
name: 'reset', | |||
}, | |||
// { | |||
// type: this.$auth.hasPermi('base:factory:create') ? 'separate' : '', | |||
// }, | |||
// { | |||
// type: this.$auth.hasPermi('base:factory:export') ? 'button' : '', | |||
// btnName: '导出', | |||
// name: 'export', | |||
// color: 'warning', | |||
// }, | |||
], | |||
}; | |||
}, | |||
@@ -255,6 +238,7 @@ export default { | |||
case 'reset': | |||
this.$refs.searchBarForm.resetForm(); | |||
this.listQuery = { | |||
warehouseId:'1696803324030865409', | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
@@ -17,7 +17,7 @@ | |||
ref="dataList"> | |||
<el-table-column type="expand"> | |||
<template slot-scope="scope"> | |||
<product :warehouse-id="scope.row.id" :prop-type="2"></product> | |||
<product :warehouse-id="scope.row.id"></product> | |||
</template> | |||
</el-table-column> | |||
<el-table-column prop="warehouseName" label="仓库名"></el-table-column> | |||
@@ -55,7 +55,7 @@ | |||
</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="操作" align="center"> | |||
<el-table-column label="操作"> | |||
<template v-slot="scope"> | |||
<el-button | |||
size="mini" | |||
@@ -67,7 +67,7 @@ | |||
</el-button> | |||
<el-button | |||
size="mini" | |||
v-else-if="scope.row.warehouseStorehouseState === 1" | |||
v-if="scope.row.warehouseStorehouseState === 2" | |||
type="text" | |||
@click="handleClick({ data: scope.row, type: 'out' })" | |||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']"> | |||
@@ -75,7 +75,7 @@ | |||
</el-button> | |||
<el-button | |||
size="mini" | |||
v-else-if="scope.row.warehouseStorehouseState === 2" | |||
v-if="scope.row.warehouseStorehouseState === 2" | |||
type="text" | |||
@click="handleClick({ data: scope.row, type: 'move' })" | |||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']"> | |||
@@ -212,23 +212,6 @@ export default { | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
{ | |||
type: 'separate', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '重置', | |||
name: 'reset', | |||
}, | |||
// { | |||
// type: this.$auth.hasPermi('base:factory:create') ? 'separate' : '', | |||
// }, | |||
// { | |||
// type: this.$auth.hasPermi('base:factory:export') ? 'button' : '', | |||
// btnName: '导出', | |||
// name: 'export', | |||
// color: 'warning', | |||
// }, | |||
], | |||
}; | |||
}, | |||
@@ -17,7 +17,7 @@ | |||
ref="dataList"> | |||
<el-table-column type="expand"> | |||
<template slot-scope="scope"> | |||
<product :warehouse-id="scope.row.id" :prop-type="3"></product> | |||
<product :warehouse-id="scope.row.id" :prop-type="'2'"></product> | |||
</template> | |||
</el-table-column> | |||
<el-table-column prop="warehouseName" label="仓库名"></el-table-column> | |||
@@ -29,6 +29,15 @@ | |||
prop="warehouseStorehouseCode" | |||
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="createDate" label="出入库时间"> | |||
<template v-slot="scope"> | |||
<span>{{ parseTime(scope.row.createDate) }}</span> | |||
@@ -76,6 +85,28 @@ const warehouseStorehouseStorageState = [ | |||
id: 2, | |||
}, | |||
]; | |||
const processArr = [ | |||
{ | |||
name: '开始', | |||
id: 0, | |||
}, | |||
{ | |||
name: '一次分切后', | |||
id: 1, | |||
}, | |||
{ | |||
name: '一次分拣后', | |||
id: 2, | |||
}, | |||
{ | |||
name: '二次分切后', | |||
id: 3, | |||
}, | |||
{ | |||
name: '二次分拣后', | |||
id: 4, | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
@@ -83,13 +114,14 @@ export default { | |||
urlOptions: { | |||
getDataListURL: getWarehouseStorehouseStoragePage, | |||
}, | |||
processArr, | |||
tableData: [], | |||
warehouseStorehouseStorageState, | |||
formConfig: [ | |||
{ | |||
type: 'input', | |||
label: '仓库名', | |||
placeholder: '仓库名', | |||
label: '库位名', | |||
placeholder: '库位名', | |||
param: 'name', | |||
}, | |||
{ | |||
@@ -108,7 +140,7 @@ export default { | |||
type: 'select', | |||
label: '库位状态', | |||
selectOptions: warehouseStorehouseStorageState, | |||
param: 'warehouseStorehouseStateId', | |||
param: 'state', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
@@ -117,7 +149,7 @@ export default { | |||
label: '出入库时间', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd hh:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
@@ -154,8 +186,8 @@ export default { | |||
this.listQuery.warehouseStorehouseName = val.name; | |||
this.listQuery.warehouseStorehouseCode = val.kcode; | |||
this.listQuery.trayCode = val.tcode; | |||
this.listQuery.warehouseStorehouseStorageState = | |||
val.warehouseStorehouseStorageStateId; | |||
this.listQuery.warehouseStorehouseStorageState =val.state; | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
@@ -17,7 +17,7 @@ | |||
ref="dataList"> | |||
<el-table-column type="expand"> | |||
<template slot-scope="scope"> | |||
<product :warehouse-id="scope.row.id" :prop-type="3"></product> | |||
<product :warehouse-id="scope.row.id" :prop-type="2"></product> | |||
</template> | |||
</el-table-column> | |||
<el-table-column prop="warehouseName" label="仓库名"></el-table-column> | |||
@@ -29,6 +29,15 @@ | |||
prop="warehouseStorehouseCode" | |||
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="createDate" label="出入库时间"> | |||
<template v-slot="scope"> | |||
<span>{{ parseTime(scope.row.createDate) }}</span> | |||
@@ -76,6 +85,28 @@ const warehouseStorehouseStorageState = [ | |||
id: 2, | |||
}, | |||
]; | |||
const processArr = [ | |||
{ | |||
name: '开始', | |||
id: 0, | |||
}, | |||
{ | |||
name: '一次分切后', | |||
id: 1, | |||
}, | |||
{ | |||
name: '一次分拣后', | |||
id: 2, | |||
}, | |||
{ | |||
name: '二次分切后', | |||
id: 3, | |||
}, | |||
{ | |||
name: '二次分拣后', | |||
id: 4, | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
@@ -83,13 +114,14 @@ export default { | |||
urlOptions: { | |||
getDataListURL: getWarehouseStorehouseStoragePage, | |||
}, | |||
processArr, | |||
tableData: [], | |||
warehouseStorehouseStorageState, | |||
formConfig: [ | |||
{ | |||
type: 'input', | |||
label: '仓库名', | |||
placeholder: '仓库名', | |||
label: '库位名', | |||
placeholder: '库位名', | |||
param: 'name', | |||
}, | |||
{ | |||
@@ -108,7 +140,7 @@ export default { | |||
type: 'select', | |||
label: '库位状态', | |||
selectOptions: warehouseStorehouseStorageState, | |||
param: 'warehouseStorehouseStateId', | |||
param: 'state', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
@@ -117,7 +149,7 @@ export default { | |||
label: '出入库时间', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd hh:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
@@ -156,7 +188,10 @@ export default { | |||
this.listQuery.warehouseStorehouseName = val.name; | |||
this.listQuery.warehouseStorehouseCode = val.kcode; | |||
this.listQuery.trayCode = val.tcode; | |||
this.listQuery.warehouseStorehouseStorageState = val.warehouseStorehouseStorageStateId; | |||
this.listQuery.warehouseStorehouseStorageState =val.state; | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
@@ -51,27 +51,22 @@ const tableProps = [ | |||
{ | |||
prop: 'code', | |||
label: '工厂编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'name', | |||
label: '工厂名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'address', | |||
label: '地址', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'remark', | |||
label: '备注', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '创建时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
]; | |||
@@ -37,19 +37,16 @@ const tableProps = [ | |||
{ | |||
prop: 'lineName', | |||
label: '产线', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'productName', | |||
label: '在制产品', | |||
align: 'center', | |||
list: [], | |||
subcomponent: selectProduct, | |||
}, | |||
{ | |||
prop: 'recordTime', | |||
label: '开始时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
]; | |||
@@ -29,23 +29,19 @@ const tableProps = [ | |||
{ | |||
prop: 'productionLineName', | |||
label: '产线', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'productName', | |||
label: '在制产品', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'startTime', | |||
label: '开始时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
{ | |||
prop: 'endTime', | |||
label: '结束时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
]; | |||
@@ -2,6 +2,7 @@ | |||
<el-drawer | |||
:visible.sync="visible" | |||
:show-close="false" | |||
:destroy-on-close="true" | |||
:wrapper-closable="false" | |||
class="drawer" | |||
size="60%"> | |||
@@ -51,28 +51,23 @@ const tableProps = [ | |||
{ | |||
prop: 'code', | |||
label: '产品编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'name', | |||
label: '产品名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'specifications', | |||
label: '规格', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'unitDictValue', | |||
label: '单位', | |||
align: 'center', | |||
subcomponent: unitDict, | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '创建时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
]; | |||
@@ -53,43 +53,35 @@ const tableProps = [ | |||
{ | |||
prop: 'code', | |||
label: '产线编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'name', | |||
label: '产线名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'factoryName', | |||
label: '工厂', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'externalCode', | |||
label: '额外编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'status', | |||
label: '当前状态', | |||
align: 'center', | |||
filter: codeFilter('lineStatus'), | |||
}, | |||
{ | |||
prop: 'description', | |||
label: '描述', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'remark', | |||
label: '备注', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '创建时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
]; | |||
@@ -51,32 +51,26 @@ const tableProps = [ | |||
{ | |||
prop: 'code', | |||
label: '工段编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'name', | |||
label: '工段名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'productionLineName', | |||
label: '产线', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'sort', | |||
label: '排序', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'remark', | |||
label: '备注', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '创建时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
]; | |||
@@ -51,17 +51,14 @@ const tableProps = [ | |||
{ | |||
prop: 'code', | |||
label: '仓库编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'name', | |||
label: '仓库名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'remark', | |||
label: '备注', | |||
align: 'center', | |||
}, | |||
]; | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-06-01 10:47:42 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-08-31 16:23:08 | |||
* @LastEditTime: 2023-10-08 15:48:49 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -33,10 +33,6 @@ export default { | |||
type: String, | |||
default: '300px', | |||
}, | |||
occupancyData: { | |||
type: Number, | |||
default: 0, | |||
}, | |||
}, | |||
name: 'echarts', | |||
data() { | |||
@@ -52,7 +48,7 @@ export default { | |||
this.chart = null; | |||
}, | |||
methods: { | |||
initChart() { | |||
initChart(occupancyData) { | |||
this.chart = echarts.init(this.$el, 'macarons'); | |||
this.chart.setOption({ | |||
@@ -169,7 +165,7 @@ export default { | |||
}, | |||
data: [ | |||
{ | |||
value: this.occupancyData * 100, | |||
value: occupancyData, | |||
}, | |||
], | |||
radius: '90%', | |||
@@ -57,17 +57,14 @@ const tableProps = [ | |||
{ | |||
prop: 'goodSpecificationCode', | |||
label: '产品编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'goodSpecificationName', | |||
label: '产品名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'deactivate', | |||
label: '是否启用', | |||
align: 'center', | |||
filter: codeFilter('deactivate'), | |||
}, | |||
]; | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:54 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-06 15:16:08 | |||
* @LastEditTime: 2023-09-26 15:07:27 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -103,6 +103,7 @@ export default { | |||
if (val.name) { | |||
this.listQuery.goodName = val.name; | |||
if (val.searchTime) { | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime | |||
? val.searchTime[0] | |||
: ''; | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:54 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-06 15:23:37 | |||
* @LastEditTime: 2023-10-08 15:47:56 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -12,8 +12,7 @@ | |||
<gaugeChart | |||
ref="gaugeChart" | |||
title="仓库占用率" | |||
height="500px" | |||
:occupancy-data="occupancyData" /> | |||
height="500px"/> | |||
</el-col> | |||
<el-col :span="14"> | |||
<barChart | |||
@@ -28,6 +27,7 @@ | |||
<script> | |||
import basicPage from '../mixins/basic-page'; | |||
import { mul } from '../mixins/code-filter'; | |||
import barChart from '../chart/BarChart.vue'; | |||
import gaugeChart from '../chart/GaugeChart.vue'; | |||
import { | |||
@@ -56,9 +56,10 @@ export default { | |||
// 获取数据列表 | |||
getDataList() { | |||
this.urlOptions.occupancyURL(this.aId).then((response) => { | |||
this.occupancyData = response.data; | |||
this.occupancyData = response.data.toFixed(2); | |||
const num = mul(this.occupancyData,100) | |||
this.$nextTick(() => { | |||
this.$refs.gaugeChart.initChart(); | |||
this.$refs.gaugeChart.initChart(num); | |||
}); | |||
}); | |||
this.urlOptions.allURL(this.aId).then((response) => { | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-22 15:01:54 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-06 15:15:27 | |||
* @LastEditTime: 2023-09-27 10:52:07 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -14,11 +14,13 @@ | |||
<el-row :gutter="20"> | |||
<el-col :span="23"> | |||
<pieChart | |||
title="饼状图分析" | |||
title="饼状图分析" | |||
ref="pieChart" | |||
height="500px" | |||
:total-number="tableData.totalNumber" | |||
v-if="tableData.totalNumber" | |||
:total-number="tableData.totalNumber" | |||
:pie-data="tableData.list" /> | |||
<el-empty v-else></el-empty> | |||
</el-col> | |||
</el-row> | |||
</div> | |||
@@ -64,17 +66,18 @@ export default { | |||
components: { | |||
pieChart, | |||
}, | |||
created() { | |||
}, | |||
created() {}, | |||
methods: { | |||
// 获取数据列表 | |||
getDataList() { | |||
if (this.listQuery.startTime) { | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
this.tableData = response.data; | |||
this.$nextTick(() => { | |||
this.$refs.pieChart.initChart(); | |||
}); | |||
if (response.data) { | |||
this.tableData = response.data; | |||
this.$nextTick(() => { | |||
this.$refs.pieChart.initChart(); | |||
}); | |||
} | |||
}); | |||
} | |||
}, | |||
@@ -82,6 +85,7 @@ export default { | |||
switch (val.btnName) { | |||
case 'search': | |||
if (val.searchTime) { | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : ''; | |||
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : ''; | |||
this.getDataList(); | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-09-06 14:28:30 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-06 15:05:52 | |||
* @LastEditTime: 2023-09-27 09:15:27 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -57,23 +57,19 @@ const tableProps = [ | |||
{ | |||
prop: 'finishProductCode', | |||
label: '库位编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'finishProductName', | |||
label: '库位名称', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'deactivate', | |||
label: '是否停用', | |||
align: 'center', | |||
label: '是否启用', | |||
filter: codeFilter('deactivate'), | |||
}, | |||
{ | |||
prop: 'notes', | |||
prop: 'remark', | |||
label: '备注', | |||
align: 'center', | |||
}, | |||
]; | |||
@@ -2,6 +2,7 @@ | |||
<el-drawer | |||
:visible.sync="visible" | |||
:show-close="false" | |||
:destroy-on-close="true" | |||
:wrapper-closable="false" | |||
class="drawer" | |||
size="60%"> | |||
@@ -18,20 +19,18 @@ | |||
@keyup.enter.native="dataFormSubmit"> | |||
<el-row :gutter="20"> | |||
<el-col :span="8"> | |||
<el-form-item label="仓库编码" prop="code"> | |||
<el-form-item label="仓库编码" prop="finishProductCode"> | |||
<el-input | |||
v-model="dataForm.code" | |||
v-model="dataForm.finishProductCode" | |||
readonly | |||
:disabled="isdetail" | |||
placeholder="请输入仓库编码" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="8"> | |||
<el-form-item label="仓库名" prop="name"> | |||
<el-form-item label="仓库名" prop="finishProductName"> | |||
<el-input | |||
v-model="dataForm.name" | |||
v-model="dataForm.finishProductName" | |||
readonly | |||
:disabled="isdetail" | |||
placeholder="请输入仓库名" /> | |||
</el-form-item> | |||
</el-col> | |||
@@ -39,8 +38,7 @@ | |||
<el-form-item label="托盘编码" prop="trayCode"> | |||
<el-input | |||
v-model="dataForm.trayCode" | |||
readonly | |||
:disabled="isdetail" | |||
@input="$forceUpdate()" | |||
placeholder="请输入托盘编码" /> | |||
</el-form-item> | |||
</el-col> | |||
@@ -51,6 +49,7 @@ | |||
style="margin: 16px 0; padding-left: 8px" | |||
:no-padding="true"> | |||
产品信息 | |||
<el-alert title="产品信息新增和修改后,需点击最下方保存按钮确定修改" type="warning" show-icon></el-alert> | |||
</small-title> | |||
<div class="attr-list"> | |||
@@ -60,11 +59,11 @@ | |||
:limit="listQuery.pageSize" | |||
:add-button-show="addButtonShow" | |||
@emitButtonClick="addNew" | |||
@emitFun="inputChange" | |||
:table-data="productAttributeList"> | |||
<method-btn | |||
v-if="!isdetail" | |||
slot="handleBtn" | |||
:width="120" | |||
:width="80" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
@@ -75,17 +74,8 @@ | |||
<div style="position: absolute; bottom: 24px; right: 24px"> | |||
<el-button style="margin-right: 10px" @click="goback()">返回</el-button> | |||
<el-button v-if="isdetail" type="primary" @click="goEdit()"> | |||
编辑 | |||
</el-button> | |||
<span v-if="!isdetail"> | |||
<span> | |||
<el-button type="primary" @click="dataFormSubmit()">保存</el-button> | |||
<!-- <el-button | |||
v-if="dataForm.id && !isdetail" | |||
type="primary" | |||
@click="addNew()"> | |||
添加属性 | |||
</el-button> --> | |||
</span> | |||
</div> | |||
@@ -93,29 +83,25 @@ | |||
v-if="addOrUpdateVisible" | |||
ref="addOrUpdate" | |||
:warehouse-id="dataForm.id" | |||
@refreshDataList="getList" /> | |||
@refreshDataList="addList" /> | |||
</el-drawer> | |||
</template> | |||
<script> | |||
import { | |||
updateProduct, | |||
} from '@/api/core/base/product'; | |||
updateFinishProductWarehouse, | |||
} from '@/api/fpw/finishProductWarehouse'; | |||
import { | |||
getFinishProductWarehouseGoodsPage, | |||
deleteFinishProductWarehouseGoods, | |||
} from '@/api/fpw/finishProductWarehouseGoods'; | |||
import productAttrAdd from './attr-add'; | |||
import selectQuality from '../mixins/selectQuality'; | |||
import { parseTime } from '../mixins/code-filter'; | |||
import codeFilter from '../mixins/code-filter'; | |||
import SmallTitle from './SmallTitle'; | |||
const tableBtn = [ | |||
{ | |||
type: 'edit', | |||
btnName: '编辑', | |||
}, | |||
{ | |||
type: 'delete', | |||
btnName: '删除', | |||
@@ -131,19 +117,19 @@ const tableProps = [ | |||
label: '产品编码', | |||
}, | |||
{ | |||
prop: 'goodSpecificationCode', | |||
prop: 'boxCode', | |||
label: '箱子编码', | |||
}, | |||
{ | |||
prop: 'specification', | |||
label: '产品规格', | |||
align: 'center', | |||
filter: codeFilter('specification'), | |||
}, | |||
{ | |||
prop: 'quality', | |||
label: '品质', | |||
align: 'center', | |||
filter: codeFilter('quality'), | |||
subcomponent: selectQuality, | |||
}, | |||
]; | |||
@@ -164,9 +150,8 @@ export default { | |||
productAttributeList: [], | |||
addButtonShow: '新增', | |||
dataForm: { | |||
id: null, | |||
name: '', | |||
code: '', | |||
finishProductName: '', | |||
finishProductCode: '', | |||
trayCode: '', | |||
}, | |||
listQuery: { | |||
@@ -183,26 +168,19 @@ export default { | |||
// }, | |||
// ], | |||
}, | |||
isdetail: false, | |||
}; | |||
}, | |||
methods: { | |||
initData() { | |||
this.productAttributeList.splice(0); | |||
}, | |||
init(val, isdetail) { | |||
this.dataForm.name = val.finishProductName | |||
this.dataForm.code = val.finishProductCode | |||
this.dataForm.trayCode = val.trayCode | |||
let id = val.id | |||
init(val) { | |||
this.dataForm = val; | |||
this.initData(); | |||
this.isdetail = isdetail || false; | |||
this.dataForm.id = id || null; | |||
this.visible = true; | |||
this.$nextTick(() => { | |||
this.$refs['dataForm'].resetFields(); | |||
if (this.dataForm.id) { | |||
// 获取产品详情 | |||
// 获取产品的属性列表 | |||
@@ -216,13 +194,29 @@ export default { | |||
const params = { | |||
pageSize: 100, | |||
pageNo: 1, | |||
warehouseStorehouseId: this.dataForm.id, | |||
finishProductWarehouseId: this.dataForm.id, | |||
}; | |||
getFinishProductWarehouseGoodsPage(params).then((response) => { | |||
this.productAttributeList = response.data.list; | |||
this.listQuery.total = response.data.total; | |||
}); | |||
}, | |||
inputChange(data) { | |||
switch (data.sType) { | |||
case 1: | |||
this.productAttributeList[data._pageIndex - 1][data.prop] = | |||
data[data.prop]; | |||
break; | |||
case 2: | |||
this.productAttributeList[data._pageIndex - 1][data.prop] = | |||
data.string ? data.string.split('+')[0] : ''; | |||
this.productAttributeList[data._pageIndex - 1][data.prop + 'Name'] = | |||
data.string ? data.string.split('+')[1] : ''; | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
handleClick(raw) { | |||
if (raw.type === 'delete') { | |||
this.$confirm( | |||
@@ -239,29 +233,25 @@ export default { | |||
} | |||
) | |||
.then(() => { | |||
deleteFinishProductWarehouseGoods(raw.data.id).then(({ data }) => { | |||
this.$message({ | |||
message: '操作成功', | |||
type: 'success', | |||
duration: 1500, | |||
onClose: () => { | |||
this.getList(); | |||
}, | |||
}); | |||
}); | |||
this.productAttributeList.splice(raw.data._pageIndex - 1, 1); | |||
}) | |||
.catch(() => {}); | |||
} else { | |||
this.addNew(raw.data.id); | |||
this.addNew(raw.data._pageIndex); | |||
} | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
this.productAttributeList.forEach((item) => { | |||
item.id = ''; | |||
item.finishProductWarehouseId = this.dataForm.id | |||
}); | |||
this.$refs['dataForm'].validate((valid) => { | |||
if (valid) { | |||
this.dataForm.list = this.productAttributeList; | |||
// 修改的提交 | |||
if (this.dataForm.id) { | |||
updateProduct(this.dataForm).then((response) => { | |||
updateFinishProductWarehouse(this.dataForm).then((response) => { | |||
this.$modal.msgSuccess('修改成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
@@ -271,16 +261,16 @@ export default { | |||
} | |||
}); | |||
}, | |||
goEdit() { | |||
this.isdetail = false; | |||
}, | |||
// 新增 / 修改 | |||
addNew(id) { | |||
addNew(index) { | |||
this.addOrUpdateVisible = true; | |||
this.$nextTick(() => { | |||
this.$refs.addOrUpdate.init(id); | |||
this.$refs.addOrUpdate.init(index); | |||
}); | |||
}, | |||
addList(data) { | |||
this.productAttributeList.push(data.productInfo); | |||
}, | |||
goback() { | |||
this.$emit('refreshDataList'); | |||
this.visible = false; | |||
@@ -19,17 +19,17 @@ | |||
:rules="dataRule" | |||
label-width="100px" | |||
@keyup.enter.native="dataFormSubmit()"> | |||
<el-form-item label="产品" prop="productId"> | |||
<el-form-item label="产品" prop="productInfo"> | |||
<el-select | |||
v-model="dataForm.productId" | |||
v-model="dataForm.productInfo" | |||
style="width: 100%" | |||
@change="setProduct" | |||
value-key="id" | |||
placeholder="请选择产品"> | |||
<el-option | |||
v-for="item in productArr" | |||
:key="item.id" | |||
:label="item.goodSpecificationName" | |||
:value="item.id" /> | |||
:value="item" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-form> | |||
@@ -42,11 +42,7 @@ | |||
</template> | |||
<script> | |||
import { createFinishProductWarehouseGoods | |||
} from '@/api/fpw/finishProductWarehouseGoods'; | |||
import { | |||
getFinishGoodSpecificationPage | |||
} from "@/api/fpw/finishGoodSpecification"; | |||
import { getFinishGoodSpecificationPage } from '@/api/fpw/finishGoodSpecification'; | |||
export default { | |||
props: { | |||
@@ -59,19 +55,22 @@ export default { | |||
return { | |||
visible: false, | |||
dataForm: { | |||
id: 0, | |||
productId: '', | |||
value: '', | |||
index: -1, | |||
productInfo: '', | |||
}, | |||
productArr: [], | |||
dataRule: { | |||
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }], | |||
productId: [ | |||
{ required: true, message: '产品不能为空', trigger: 'blur' }, | |||
], | |||
}, | |||
}; | |||
}, | |||
methods: { | |||
init(id) { | |||
this.dataForm.id = id || ''; | |||
init(index) { | |||
if (index >= 0) { | |||
this.dataForm.index = index; | |||
} | |||
this.visible = true; | |||
this.$nextTick(() => { | |||
this.$refs['dataForm'].resetFields(); | |||
@@ -84,27 +83,27 @@ export default { | |||
}); | |||
}); | |||
}, | |||
setProduct(val) { | |||
let data = this.productArr.find((item) => { | |||
return (item.id === val); | |||
}); | |||
const { id, ...newData } = data; | |||
this.dataForm.value = newData; | |||
this.dataForm.value.goodSpecificationId = id; | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
this.$refs['dataForm'].validate((valid) => { | |||
if (valid) { | |||
// 添加的提交 | |||
createFinishProductWarehouseGoods({ | |||
...this.dataForm.value, | |||
finishProductWarehouseId: this.warehouseId, | |||
}).then((response) => { | |||
this.$modal.msgSuccess('添加成功'); | |||
this.dataForm.productInfo.goodsName = | |||
this.dataForm.productInfo.goodSpecificationName; | |||
this.dataForm.productInfo.goodsCode = | |||
this.dataForm.productInfo.goodSpecificationCode; | |||
this.dataForm.productInfo.goodSpecificationId = | |||
this.dataForm.productInfo.id; | |||
// 修改的提交 | |||
if (this.dataForm.index >= 0) { | |||
this.$modal.msgSuccess('修改成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
}); | |||
this.$emit('refreshDataList', this.dataForm); | |||
return; | |||
} | |||
// 添加的提交 | |||
this.$modal.msgSuccess('新增成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList', this.dataForm); | |||
} | |||
}); | |||
}, | |||
@@ -31,18 +31,19 @@ | |||
<span> | |||
{{ | |||
scope.row.finishProductWarehouseState >= 0 | |||
? warehouseStorehouseState[scope.row.finishProductWarehouseState] | |||
.name | |||
? warehouseStorehouseState[ | |||
scope.row.finishProductWarehouseState | |||
].name | |||
: '' | |||
}} | |||
</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="操作" align="center"> | |||
<el-table-column label="操作"> | |||
<template v-slot="scope"> | |||
<el-button | |||
size="mini" | |||
v-if="scope.row.warehouseStorehouseState === 0" | |||
v-if="scope.row.finishProductWarehouseState === 0" | |||
type="text" | |||
@click="handleClick({ data: { id: scope.row }, type: 'in' })" | |||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']"> | |||
@@ -50,7 +51,7 @@ | |||
</el-button> | |||
<el-button | |||
size="mini" | |||
v-else-if="scope.row.warehouseStorehouseState === 1" | |||
v-else-if="scope.row.finishProductWarehouseState === 1" | |||
type="text" | |||
@click="handleClick({ data: scope.row, type: 'out' })" | |||
v-hasPermi="['asrs:warehouse-storehouse-storage:update']"> | |||
@@ -90,9 +91,7 @@ import product from '../product-mini'; | |||
import basicPage from '../mixins/basic-page'; | |||
import { parseTime } from '../mixins/code-filter'; | |||
import { | |||
getFinishProductWarehousePage, | |||
} from "@/api/fpw/finishProductWarehouse"; | |||
import { getFinishProductWarehousePage } from '@/api/fpw/finishProductWarehouse'; | |||
const warehouseStorehouseState = [ | |||
{ | |||
@@ -191,6 +190,10 @@ export default { | |||
this.listQuery.productCode = val.pcode; | |||
this.listQuery.finishProductWarehouseState = | |||
val.warehouseStorehouseStateId; | |||
Object.keys(this.listQuery).forEach( | |||
(key) => | |||
this.listQuery[key] === null || (this.listQuery[key] === '' && delete this.listQuery[key]) | |||
); | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
@@ -85,8 +85,8 @@ export default { | |||
formConfig: [ | |||
{ | |||
type: 'input', | |||
label: '仓库名', | |||
placeholder: '仓库名', | |||
label: '库位名', | |||
placeholder: '库位名', | |||
param: 'name', | |||
}, | |||
{ | |||
@@ -105,7 +105,7 @@ export default { | |||
type: 'select', | |||
label: '出入库状态', | |||
selectOptions: warehouseStorehouseStorageState, | |||
param: 'warehouseStorehouseStateId', | |||
param: 'finishProductWarehouseDataState', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
@@ -114,11 +114,11 @@ export default { | |||
label: '出入库时间', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd hh:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
param: 'searchTime2', | |||
param: 'searchTime', | |||
}, | |||
{ | |||
type: 'button', | |||
@@ -151,7 +151,8 @@ export default { | |||
this.listQuery.finishProductName = val.name; | |||
this.listQuery.finishProductWarehouseCode = val.kcode; | |||
this.listQuery.trayCode = val.tcode; | |||
this.listQuery.finishProductWarehouseDataState = val.warehouseStorehouseStorageStateId; | |||
this.listQuery.createTime = val.searchTime; | |||
this.listQuery.finishProductWarehouseDataState = val.finishProductWarehouseDataState; | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2022-08-24 11:19:43 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-05 15:10:13 | |||
* @LastEditTime: 2023-10-08 10:42:06 | |||
* @Description: | |||
*/ | |||
export default { | |||
@@ -19,8 +19,6 @@ export default { | |||
optionArrUrl: [], | |||
optionArr: {} | |||
}, | |||
aId: '1696803324030865409', | |||
bId: '1698950657556340737', | |||
visible: false, | |||
setData: false | |||
} | |||
@@ -30,17 +28,12 @@ export default { | |||
activated() { | |||
}, | |||
methods: { | |||
init(id,bPage) { | |||
init(id) { | |||
this.dataForm.id = id || ""; | |||
this.visible = true; | |||
if (this.urlOptions.getOption) { | |||
this.getArr() | |||
} | |||
if(bPage){ | |||
this.dataForm.warehouseId = this.bId; | |||
}else{ | |||
this.dataForm.warehouseId = this.bId; | |||
} | |||
this.$nextTick(() => { | |||
this.$refs["dataForm"].resetFields(); | |||
if (this.dataForm.id) { | |||
@@ -90,17 +83,25 @@ export default { | |||
// 修改的提交 | |||
if (this.dataForm.id) { | |||
this.urlOptions.updateURL(this.dataForm).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.visible = false; | |||
this.$emit("refreshDataList"); | |||
if(response.data){ | |||
this.$modal.msgSuccess("修改成功"); | |||
this.visible = false; | |||
this.$emit("refreshDataList"); | |||
}else{ | |||
this.$modal.msgWarning('名称或编码不能重复');; | |||
} | |||
}); | |||
return; | |||
} | |||
// 添加的提交 | |||
this.urlOptions.createURL(this.dataForm).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.visible = false; | |||
this.$emit("refreshDataList"); | |||
if(response.data){ | |||
this.$modal.msgSuccess("新增成功"); | |||
this.visible = false; | |||
this.$emit("refreshDataList"); | |||
}else{ | |||
this.$modal.msgWarning('名称或编码不能重复');; | |||
} | |||
}); | |||
}); | |||
}, | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2022-08-24 11:19:43 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-06 14:52:03 | |||
* @LastEditTime: 2023-09-27 09:30:22 | |||
* @Description: | |||
*/ | |||
export default { | |||
@@ -39,7 +39,7 @@ export default { | |||
this.dataListLoading = true; | |||
this.urlOptions.getDataListURL(this.listQuery).then(response => { | |||
this.tableData = response.data.list; | |||
this.total = response.data.total; | |||
this.listQuery.total = response.data.total; | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
@@ -2,7 +2,7 @@ | |||
/* | |||
* @Date: 2020-12-29 16:49:28 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-01 16:35:27 | |||
* @LastEditTime: 2023-10-08 15:48:34 | |||
* @FilePath: \basic-admin\src\filters\basicData\index.js | |||
* @Description: | |||
*/ | |||
@@ -69,6 +69,20 @@ export function parseTime(time, pattern) { | |||
}) | |||
return time_str | |||
} | |||
// 去除浮点相乘 | |||
export function mul(num1, num2) { | |||
if (parseFloat(num1).toString() == "NaN" || parseFloat(num2).toString() == "NaN") return; | |||
var m = 0, s1 = num1.toString(), s2 = num2.toString(); | |||
try { | |||
m += s1.split(".")[1].length | |||
} catch (e) { | |||
} | |||
try { | |||
m += s2.split(".")[1].length | |||
} catch (e) { | |||
} | |||
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m); | |||
} | |||
export default function (dictTable) { | |||
return function (val) { | |||
return table?.[dictTable]?.[val] | |||
@@ -0,0 +1,59 @@ | |||
<template> | |||
<div class="tableInner"> | |||
<el-select v-model="list[itemProp]" @change="changeInput"> | |||
<el-option | |||
v-for="item in QArr" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id"></el-option> | |||
</el-select> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
name: 'InputArea', | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}), | |||
}, | |||
itemProp: { | |||
type: String, | |||
}, | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData, | |||
QArr: [ | |||
{ | |||
name: 'A', | |||
id: 0, | |||
}, | |||
{ | |||
name: 'B', | |||
id: 1, | |||
}, | |||
{ | |||
name: 'C', | |||
id: 2, | |||
}, | |||
], | |||
}; | |||
}, | |||
methods: { | |||
changeInput() { | |||
this.list.sType = 1; | |||
this.$emit('emitData', this.list); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.tableInner >>> .el-input__inner { | |||
color: #409EFF; | |||
border: 1px rgb(232, 231, 231) solid; | |||
padding: 0; | |||
text-align: center; | |||
height: 30px; | |||
} | |||
</style> |
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-24 14:47:58 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-06 15:41:33 | |||
* @LastEditTime: 2023-10-08 15:35:04 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -32,24 +32,21 @@ import { number } from 'echarts'; | |||
const tableProps = [ | |||
{ | |||
prop: 'goodSpecificationName', | |||
prop: 'goodsName', | |||
label: '产品名', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'goodSpecificationCode', | |||
prop: 'goodsCode', | |||
label: '产品编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'goodSpecificationName1', | |||
prop: 'specification', | |||
label: '产品规格', | |||
align: 'center', | |||
filter: codeFilter('specification'), | |||
}, | |||
{ | |||
prop: 'quality', | |||
label: '品质', | |||
align: 'center', | |||
filter: codeFilter('quality'), | |||
}, | |||
]; | |||
@@ -57,7 +54,6 @@ const tableProps1 = [ | |||
{ | |||
prop: 'createTime', | |||
label: '入库时间', | |||
align: 'center', | |||
filter: parseTime, | |||
}, | |||
] | |||
@@ -85,7 +81,7 @@ export default { | |||
pageSize: 100, | |||
pageNo: 1, | |||
total: 1, | |||
finishProductWarehouseDataId:this.warehouseId, | |||
finishProductWarehouseId:this.warehouseId, | |||
finishProductWarehouseDataId:this.warehouseId, | |||
}, | |||
}; | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-21 14:26:23 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-08-31 14:36:15 | |||
* @LastEditTime: 2023-10-08 09:20:40 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -11,92 +11,98 @@ | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<div class="mainbody"> | |||
<div v-for="a in 3" :key="a"> | |||
<el-row type="flex" justify="space-around"> | |||
<el-col :span="5" v-for="i in 4" :key="i"> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
<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> | |||
</div> | |||
<div class="mainbody"> | |||
<div v-for="i in listQuery.total" :key="i"> | |||
<el-row> | |||
<el-col :span="24"> | |||
<el-row> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
v-for="a in wareData.one" | |||
:key="a.id+a.warehouseStorehouseCode" | |||
:style="{background: bgColor[a.warehouseStorehouseState], float: 'left'}"> | |||
<!-- <div | |||
class="dashboard-layout-item-cricle" | |||
style="background: #16dc09" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ a.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
</el-row> | |||
<el-row> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
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" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ b.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
<el-divider class="divider"></el-divider> | |||
<el-row type="flex" justify="space-around"> | |||
<el-col :span="5" v-for="i in 4" :key="i"> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
</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="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
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" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ c.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
<el-row type="flex" justify="space-between"> | |||
<el-col :span="12" v-for="j in 2" :key="j"> | |||
</el-row> | |||
<el-row> | |||
<div | |||
class="dashboard-layout-item" | |||
v-for="z in 2" | |||
:key="z" | |||
style="background: #ffd781; float: left"> | |||
<div | |||
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" /> | |||
{{ i + '+' + j + '+' + z }} | |||
style="background: #16dc09" /> --> | |||
{{ d.warehouseStorehouseCode }} | |||
</div> | |||
</el-col> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import basicPage from '../mixins/basic-page'; | |||
import { getWarehouseStorehousePage } from '@/api/asrs/warehouseStorehouse'; | |||
import { getWarehouseStorehouseList | |||
} from "@/api/fpw/finishProductWarehouse"; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getWarehouseStorehousePage, | |||
getDataListURL: getWarehouseStorehouseList, | |||
}, | |||
listQuery: { | |||
wareLayer: 1, | |||
total: 0, | |||
}, | |||
wareData: { | |||
one: [], | |||
two: [], | |||
there: [], | |||
four: [], | |||
}, | |||
bgColor:['#37d97f','#ffbd02','#0b58ff'], | |||
formConfig: [ | |||
{ | |||
type: 'select', | |||
@@ -122,8 +128,34 @@ export default { | |||
}; | |||
}, | |||
components: {}, | |||
created() {}, | |||
created() { | |||
}, | |||
methods: { | |||
// 获取数据列表 | |||
getDataList() { | |||
this.dataListLoading = true; | |||
this.wareData= { | |||
one: [], | |||
two: [], | |||
there: [], | |||
four: [], | |||
}, | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
response.data.forEach((a, b) => { | |||
if (b % 4 === 0) { | |||
this.wareData.one.push(a); | |||
} else if (b % 4 === 1) { | |||
this.wareData.two.push(a); | |||
} else if (b % 4 === 2) { | |||
this.wareData.there.push(a); | |||
} else if (b % 4 === 3) { | |||
this.wareData.four.push(a); | |||
} | |||
}); | |||
this.listQuery.total = Math.ceil(response.data.length / 120); | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
@@ -139,18 +171,19 @@ export default { | |||
</script> | |||
<style lang="scss" scoped> | |||
.mainbody{ | |||
.mainbody { | |||
display: flex; | |||
gap: 50px; | |||
flex-direction: column; | |||
gap: 50px; | |||
flex-direction: column; | |||
} | |||
.dashboard-layout-item { | |||
width: 80px; | |||
color: white; | |||
width: 3.3%; | |||
text-align: center; | |||
height: 32px; | |||
height: 40px; | |||
box-shadow: 0px 3px 6px 0px rgba(166, 174, 190, 0.8); | |||
border-radius: 2px 4px 4px 2px; | |||
margin-bottom: 8px; | |||
margin-bottom: 4px; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
@@ -161,11 +194,22 @@ export default { | |||
border-radius: 6px; | |||
margin-right: 6px; | |||
} | |||
&:hover { | |||
background-color: rgba(85, 136, 253, 0.8) !important; | |||
color: #ffffff; | |||
cursor: pointer; | |||
transform: scaleY(1.3) translateZ(0); | |||
} | |||
} | |||
.el-divider--horizontal { | |||
margin: 10px 0; | |||
} | |||
.el-divider{ | |||
background-color: black; | |||
.el-divider { | |||
background-color: black; | |||
} | |||
.tips { | |||
position: absolute; | |||
top: 22px; | |||
left: 370px; | |||
} | |||
</style> |
@@ -17,8 +17,8 @@ | |||
<el-tabs class="form" v-model="loginForm.loginType" style=" float:none;"> | |||
<el-tab-pane label="账号密码登录" name="uname"> | |||
</el-tab-pane> | |||
<el-tab-pane label="短信验证码登录" name="sms"> | |||
</el-tab-pane> | |||
<!-- <el-tab-pane label="短信验证码登录" name="sms"> | |||
</el-tab-pane> --> | |||
</el-tabs> | |||
<div> | |||
<el-form ref="loginForm" :model="loginForm" :rules="LoginRules" class="login-form"> | |||
@@ -205,6 +205,7 @@ export default { | |||
}, | |||
methods: { | |||
getCode() { | |||
this.captchaEnable = false | |||
// 情况一,未开启:则直接登录 | |||
if (!this.captchaEnable) { | |||
this.handleLogin({}) | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-24 14:47:58 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-07 16:07:50 | |||
* @LastEditTime: 2023-09-27 09:31:15 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -24,17 +24,14 @@ const tableProps = [ | |||
{ | |||
prop: 'goodsName', | |||
label: '货物名', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'goodsCode', | |||
label: '货物编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'number', | |||
label: '数量(箱)', | |||
align: 'center', | |||
}, | |||
]; | |||
export default { | |||
@@ -55,7 +52,7 @@ export default { | |||
listQuery: { | |||
pageSize: 100, | |||
pageNo: 1, | |||
total: 1, | |||
orderId: this.orderId, | |||
}, | |||
}; | |||
}, | |||
@@ -71,7 +68,6 @@ export default { | |||
this.dataListLoading = true; | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
this.tableData = response.data.list; | |||
this.total = response.data.total; | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
@@ -33,17 +33,16 @@ | |||
</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="操作" align="center"> | |||
<el-table-column label="操作"> | |||
<template v-slot="scope"> | |||
<el-popconfirm | |||
@confirm="setShipment" | |||
title="请再次确认出货是否已完成!"> | |||
@confirm="setShipment(scope.row.id)" | |||
title="请再次确认出货是否已完成!"> | |||
<el-button | |||
slot="reference" | |||
size="mini" | |||
v-if="scope.row.shipment === 0" | |||
type="text" | |||
@click="handleClick({ data: { id: scope.row }, type: 'in' })"> | |||
type="text"> | |||
出货完成 | |||
</el-button> | |||
</el-popconfirm> | |||
@@ -60,7 +59,7 @@ | |||
<script> | |||
import product from './good-mini'; | |||
import { getOrderPage } from '@/api/po/order'; | |||
import { getOrderPage, updateOrder } from '@/api/po/order'; | |||
export default { | |||
data() { | |||
@@ -93,7 +92,7 @@ export default { | |||
label: '订单出货日期', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd hh:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
@@ -130,7 +129,7 @@ export default { | |||
this.dataListLoading = true; | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
this.tableData = response.data.list; | |||
this.total = response.data.total; | |||
this.listQuery.total = response.data.total; | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
@@ -170,9 +169,16 @@ export default { | |||
console.log(val); | |||
} | |||
}, | |||
setShipment(){ | |||
console.log(111111111) | |||
} | |||
setShipment(id) { | |||
const data = { | |||
id: id, | |||
shipment: 1, | |||
}; | |||
updateOrder(data).then((response) => { | |||
this.$modal.msgSuccess('修改成功'); | |||
this.getDataList(); | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
@@ -8,7 +8,7 @@ function resolve(dir) { | |||
const CompressionPlugin = require('compression-webpack-plugin') | |||
const name = process.env.VUE_APP_TITLE || '芋道管理系统' // 网页标题 | |||
const name = process.env.VUE_APP_TITLE || '南京锂膜管理系统' // 网页标题 | |||
const port = process.env.port || process.env.npm_config_port || 80 // 端口 | |||