This commit is contained in:
猫猫guowen
2025-12-29 16:35:26 +08:00
parent bec185c139
commit dc8f2d329a
8 changed files with 379 additions and 284 deletions

View File

@@ -120,15 +120,13 @@ public class KpiController extends BaseController {
* 获取库存平面图 * 获取库存平面图
* *
* @param warehouseId 仓库ID * @param warehouseId 仓库ID
* @param roadwayId 巷道ID * @param theFloor 层
* @param thePlatoon 排
* @return 库存平面图数据 * @return 库存平面图数据
*/ */
@GetMapping("/getChartData") @GetMapping("/getChartData")
public AjaxResult getChartData(@RequestParam("warehouseId") String warehouseId, public AjaxResult getChartData(@RequestParam("warehouseId") String warehouseId,
@RequestParam("roadwayId") String roadwayId, @RequestParam("theFloor") String theFloor){
@RequestParam("thePlatoon") String thePlatoon){ return success(kpiService.getChartData(warehouseId,theFloor));
return success(kpiService.getChartData(warehouseId,roadwayId,thePlatoon));
} }
/** /**
@@ -147,5 +145,15 @@ public class KpiController extends BaseController {
@RequestParam("thePlatoon") String thePlatoon){ @RequestParam("thePlatoon") String thePlatoon){
return success(kpiService.getChartMag(warehouseId,theColumn,theFloor,thePlatoon)); return success(kpiService.getChartMag(warehouseId,theColumn,theFloor,thePlatoon));
} }
/**
* 获取货位楼层数据
*
* @param warehouseId 仓库ID
* @return 货位楼层数据
*/
@GetMapping("/getFloors")
public AjaxResult getFloors(@RequestParam("warehouseId") String warehouseId){
return success(kpiService.getFloors(warehouseId));
}
} }

View File

@@ -42,10 +42,12 @@ public interface KpiService {
Map<String, Object> getPlatoons(String warehouseId, String roadwayId); Map<String, Object> getPlatoons(String warehouseId, String roadwayId);
Map<String,Object> getChartData(String warehouseId, String roadwayId, String thePlatoon); Map<String,Object> getChartData(String warehouseId, String theFloor);
Map<String,Object> getChartMag(String warehouseId, String theColumn, String theFloor, String thePlatoon); Map<String,Object> getChartMag(String warehouseId, String theColumn, String theFloor, String thePlatoon);
AjaxResult getInAnalysisByData(String warehouseId, String startTime, String endTime,String inOut); AjaxResult getInAnalysisByData(String warehouseId, String startTime, String endTime,String inOut);
Map<String, Object> getFloors(String warehouseId);
} }

View File

@@ -317,6 +317,35 @@ public class KpiServiceImpl implements KpiService
} }
@Override
public Map<String, Object> getFloors(String warehouseId) {
Map<String, Object> response = new HashMap<>();
// 查询指定仓库和巷道的排号信息
BasCargoSpace queryParams = new BasCargoSpace();
queryParams.setWarehouseId(warehouseId);
List<BasCargoSpace> list = basCargoSpaceMapper.selectBasCargoSpaceList(queryParams);
// 使用TreeSet去重并排序排号
Set<Long> platoonSet = new TreeSet<>();
for (BasCargoSpace space : list) {
if (space.getTheFloor() != null) {
platoonSet.add(space.getTheFloor());
}
}
// 转换为前端下拉框所需的格式
List<Map<String, String>> platoons = new ArrayList<>();
for (Long platoon : platoonSet) {
Map<String, String> platoonMap = new HashMap<>();
platoonMap.put("value", platoon.toString());
platoonMap.put("label", platoon + "层");
platoons.add(platoonMap);
}
response.put("data", platoons);
return response;
}
@Override @Override
public Map<String, Object> getRoadways(String warehouseId){ public Map<String, Object> getRoadways(String warehouseId){
@@ -380,14 +409,11 @@ public class KpiServiceImpl implements KpiService
} }
@Override @Override
public Map<String,Object> getChartData(String warehouseId, String roadwayId, String thePlatoon) { public Map<String,Object> getChartData(String warehouseId, String theFloor) {
// 查询指定仓库、巷道和排号的货位信息 // 查询指定仓库、巷道和排号的货位信息
BasCargoSpace queryParams = new BasCargoSpace(); BasCargoSpace queryParams = new BasCargoSpace();
queryParams.setWarehouseId(warehouseId); queryParams.setWarehouseId(warehouseId);
queryParams.setRoadwayId(roadwayId); queryParams.setTheFloor(Long.valueOf(theFloor));
if (thePlatoon != null) {
queryParams.setThePlatoon(Long.parseLong(thePlatoon));
}
List<BasCargoSpace> list = basCargoSpaceMapper.selectBasCargoSpaceList(queryParams); List<BasCargoSpace> list = basCargoSpaceMapper.selectBasCargoSpaceList(queryParams);
// 用于存储不同状态的货位坐标 // 用于存储不同状态的货位坐标
@@ -406,11 +432,11 @@ public class KpiServiceImpl implements KpiService
for (BasCargoSpace space : list) { for (BasCargoSpace space : list) {
// 收集列和层信息 // 收集列和层信息
columnSet.add(space.getTheColumn()); columnSet.add(space.getTheColumn());
floorSet.add(space.getTheFloor()); floorSet.add(space.getThePlatoon());
// 根据状态分类处理 // 根据状态分类处理
if (space.getStatus() != null) { if (space.getStatus() != null) {
String coordinate = "[" + space.getTheColumn() + "," + space.getTheFloor() + "," + space.getStatus() + "],"; String coordinate = "[" + space.getTheColumn() + "," + space.getThePlatoon() + "," + space.getStatus() + "],";
switch (Integer.parseInt(space.getStatus())) { switch (Integer.parseInt(space.getStatus())) {
case 1: empty += coordinate; break; case 1: empty += coordinate; break;
case 2: full += coordinate; break; case 2: full += coordinate; break;
@@ -425,15 +451,15 @@ public class KpiServiceImpl implements KpiService
// 构建列和层的标签 // 构建列和层的标签
StringBuilder columnLabels = new StringBuilder(); StringBuilder columnLabels = new StringBuilder();
for (Long col : columnSet) { for (Long col : columnSet) {
columnLabels.append("'").append(col).append(MessageUtils.message("kpi.spacePlan.column")).append("',"); columnLabels.append("'").append(col).append("列").append("',");
} }
String column = "[" + columnLabels.toString() + "]"; String column = "[" + columnLabels + "]";
StringBuilder floorLabels = new StringBuilder(); StringBuilder floorLabels = new StringBuilder();
for (Long floor : floorSet) { for (Long floor : floorSet) {
floorLabels.append("'").append(floor).append(MessageUtils.message("kpi.spacePlan.floor")).append("',"); floorLabels.append("'").append(floor).append("排").append("',");
} }
String floor = "[" + floorLabels.toString() + "]"; String floor = "[" + floorLabels + "]";
// 返回结果 // 返回结果
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
@@ -498,36 +524,79 @@ public class KpiServiceImpl implements KpiService
mydoJobParam.setCreateLeftTime(startTime); mydoJobParam.setCreateLeftTime(startTime);
mydoJobParam.setCreateRightTime(endTime); mydoJobParam.setCreateRightTime(endTime);
mydoJobParam.setInOut(inOut); mydoJobParam.setInOut(inOut);
List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startTime), DateUtil.parseDate(endTime), DateField.DAY_OF_MONTH);
List<MydoJob> list = mydoJobFinishMapper.selectMydoJobFinishListByMydoJob(mydoJobParam); List<MydoJob> list = mydoJobFinishMapper.selectMydoJobFinishListByMydoJob(mydoJobParam);
// 获取所有巷道ID(1和2) // 收集所有涉及的楼层
List<String> roadwayIds = Arrays.asList("1", "2"); Set<Long> floorSet = new HashSet<>();
Map<String, BasCargoSpace> cargoSpaceCache = new HashMap<>();
// 遍历作业记录,收集涉及的货位ID并查询对应楼层
for (MydoJob job : list) {
if (job.getCargoSpaceId() != null) {
// 检查缓存中是否有该货位信息
if (!cargoSpaceCache.containsKey(job.getCargoSpaceId())) {
// 使用现有的查询方法查询货位信息
BasCargoSpace queryParam = new BasCargoSpace();
queryParam.setCargoSpaceId(job.getCargoSpaceId());
List<BasCargoSpace> cargoSpaces = basCargoSpaceMapper.selectBasCargoSpaceList(queryParam);
if (!cargoSpaces.isEmpty()) {
BasCargoSpace cargoSpace = cargoSpaces.get(0);
cargoSpaceCache.put(job.getCargoSpaceId(), cargoSpace);
if (cargoSpace.getTheFloor() != null) {
floorSet.add(cargoSpace.getTheFloor());
}
}
} else {
BasCargoSpace cachedSpace = cargoSpaceCache.get(job.getCargoSpaceId());
if (cachedSpace.getTheFloor() != null) {
floorSet.add(cachedSpace.getTheFloor());
}
}
}
}
// 将楼层排序
List<Long> floors = new ArrayList<>(floorSet);
Collections.sort(floors);
// 生成日期范围
List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startTime), DateUtil.parseDate(endTime), DateField.DAY_OF_MONTH);
List<String> xAxis = new ArrayList<>(); List<String> xAxis = new ArrayList<>();
List<Map<String, Object>> series = new ArrayList<>(); List<Map<String, Object>> series = new ArrayList<>();
// 为每个巷道创建一个系列 // 为每个楼层创建一个系列
for (String roadwayId : roadwayIds) { for (Long floor : floors) {
Map<String, Object> seriesItem = new HashMap<>(); Map<String, Object> seriesItem = new HashMap<>();
seriesItem.put("name", roadwayId + "号巷道"); seriesItem.put("name", floor + "层");
seriesItem.put("type", "line"); seriesItem.put("type", "line");
List<Long> data = new ArrayList<>(); List<Long> data = new ArrayList<>();
seriesItem.put("data", data); seriesItem.put("data", data);
series.add(seriesItem); series.add(seriesItem);
} }
// 按日期统计每个巷道的数量 // 按日期统计每个楼层的数量
for (DateTime dateTime : datesBetween) { for (DateTime dateTime : datesBetween) {
xAxis.add(DateUtil.format(dateTime, "yyyy-MM-dd")); xAxis.add(DateUtil.format(dateTime, "yyyy-MM-dd"));
// 统计每个巷道在当天的数量 // 统计每个楼层在当天的数量
for (int i = 0; i < roadwayIds.size(); i++) { for (int i = 0; i < floors.size(); i++) {
String roadwayId = roadwayIds.get(i); Long floor = floors.get(i);
long count = list.stream() long count = 0;
.filter(mydoJob -> roadwayId.equals(mydoJob.getRoadwayId())
&& DateUtil.isIn(mydoJob.getCreateTime(), DateUtil.beginOfDay(dateTime), DateUtil.endOfDay(dateTime))) // 遍历作业记录,统计该楼层在当天的作业数量
.count(); for (MydoJob job : list) {
if (DateUtil.isIn(job.getCreateTime(), DateUtil.beginOfDay(dateTime), DateUtil.endOfDay(dateTime))) {
// 查找该作业对应的货位是否属于当前楼层
if (job.getCargoSpaceId() != null && cargoSpaceCache.containsKey(job.getCargoSpaceId())) {
BasCargoSpace space = cargoSpaceCache.get(job.getCargoSpaceId());
if (space.getTheFloor() != null && space.getTheFloor().equals(floor)) {
count++;
}
}
}
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<Long> data = (List<Long>) series.get(i).get("data"); List<Long> data = (List<Long>) series.get(i).get("data");

View File

@@ -9,6 +9,13 @@ export function getRoadways(query) {
params: query params: query
}) })
} }
export function getFloors(query) {
return request({
url: '/kpi/getFloors',
method: 'get',
params: query
})
}
//获取排列表 //获取排列表
export function getPlatoons(query) { export function getPlatoons(query) {
return request({ return request({

View File

@@ -15,6 +15,7 @@
<el-date-picker <el-date-picker
v-model="dateRange" v-model="dateRange"
type="daterange" type="daterange"
unlink-panels
range-separator="-" range-separator="-"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
@@ -46,7 +47,7 @@ export default {
return { return {
// 查询参数 // 查询参数
queryParams: { queryParams: {
warehouseId: undefined, warehouseId: null,
startTime: '', startTime: '',
endTime: '', endTime: '',
inOut:'1' inOut:'1'
@@ -67,7 +68,7 @@ export default {
queryWarehouseParam:{ queryWarehouseParam:{
pageNum: 1, pageNum: 1,
pageSize: 99, pageSize: 99,
typeData:[1,2] typeData:[1]
} }
} }
}, },
@@ -115,6 +116,9 @@ export default {
}, },
/** 更新图表数据 */ /** 更新图表数据 */
updateChart() { updateChart() {
// 在调用setOption前检查chart实例是否存在
if (this.chart && typeof this.chart.setOption === 'function') {
const option = { const option = {
title: { title: {
text: '入库数量统计' // 入库数量统计(按巷道) text: '入库数量统计' // 入库数量统计(按巷道)
@@ -165,6 +169,10 @@ export default {
})) }))
} }
this.chart.setOption(option, true) this.chart.setOption(option, true)
} else {
console.warn('Chart instance is not ready yet');
}
}, },
/** 处理日期范围变化 */ /** 处理日期范围变化 */
handleDateRangeChange(val) { handleDateRangeChange(val) {

View File

@@ -15,6 +15,7 @@
<el-date-picker <el-date-picker
v-model="dateRange" v-model="dateRange"
type="daterange" type="daterange"
unlink-panels
range-separator="-" range-separator="-"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
@@ -46,7 +47,7 @@ export default {
return { return {
// 查询参数 // 查询参数
queryParams: { queryParams: {
warehouseId: undefined, warehouseId: null,
startTime: '', startTime: '',
endTime: '', endTime: '',
inOut:'2' inOut:'2'
@@ -67,7 +68,7 @@ export default {
queryWarehouseParam:{ queryWarehouseParam:{
pageNum: 1, pageNum: 1,
pageSize: 99, pageSize: 99,
typeData:[1,2] typeData:[1]
} }
} }
}, },
@@ -115,6 +116,8 @@ export default {
}, },
/** 更新图表数据 */ /** 更新图表数据 */
updateChart() { updateChart() {
// 在调用setOption前检查chart实例是否存在
if (this.chart && typeof this.chart.setOption === 'function') {
const option = { const option = {
title: { title: {
text: '出库数量统计' // 出库数量统计(按巷道) text: '出库数量统计' // 出库数量统计(按巷道)
@@ -162,6 +165,9 @@ export default {
})) }))
} }
this.chart.setOption(option, true) this.chart.setOption(option, true)
} else {
console.warn('Chart instance is not ready yet');
}
}, },
/** 处理日期范围变化 */ /** 处理日期范围变化 */
handleDateRangeChange(val) { handleDateRangeChange(val) {

View File

@@ -13,7 +13,7 @@
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- 巷道 --> <!-- 巷道 -->
<el-form-item label="巷道" prop="roadwayId"> <!-- <el-form-item label="巷道" prop="roadwayId">
<el-select v-model="queryParams.roadwayId" placeholder="请选择巷道" clearable @change="handleQuery"> <el-select v-model="queryParams.roadwayId" placeholder="请选择巷道" clearable @change="handleQuery">
<el-option <el-option
v-for="item in roadwayOptions" v-for="item in roadwayOptions"
@@ -22,13 +22,13 @@
:value="item.value" :value="item.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>-->
<el-form-item> <!-- <el-form-item>-->
<!-- 【搜索】按钮 --> <!-- &lt;!&ndash; 【搜索】按钮 &ndash;&gt;-->
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>-->
<!-- 【重置】按钮 --> <!-- &lt;!&ndash; 【重置】按钮 &ndash;&gt;-->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>-->
</el-form-item> <!-- </el-form-item>-->
</el-form> </el-form>
<!-- 饼状图容器 --> <!-- 饼状图容器 -->
@@ -54,19 +54,10 @@ export default {
// 仓库选项 // 仓库选项
warehouseOptions: [], warehouseOptions: [],
// 巷道选项 // 巷道选项
roadwayOptions: [ roadwayOptions: [],
{
value: "1",
name: "一巷道"
},
{
value: "2",
name: "二巷道"
}
],
// 查询参数 // 查询参数
queryParams: { queryParams: {
// warehouseId: null, warehouseId: null,
roadwayId: null roadwayId: null
}, },
// 图表实例 // 图表实例
@@ -82,7 +73,7 @@ export default {
} }
, ,
created() { created() {
// this.getWarehouseList(); this.getWarehouseList();
this.handleQuery(); this.handleQuery();
} }
, ,
@@ -99,37 +90,37 @@ export default {
, ,
methods: { methods: {
/** 查询仓库列表 */ /** 查询仓库列表 */
// getWarehouseList() { getWarehouseList() {
// listWarehouse(this.queryWarehouseParam).then(response => { listWarehouse(this.queryWarehouseParam).then(response => {
// this.warehouseOptions = response.rows; this.warehouseOptions = response.rows;
// // 默认选择第一个仓库并加载巷道 // 默认选择第一个仓库并加载巷道
// // if (!this.queryParams.warehouseId && this.warehouseOptions.length) { // if (!this.queryParams.warehouseId && this.warehouseOptions.length) {
// // this.queryParams.warehouseId = this.warehouseOptions[0].warehouseId; // this.queryParams.warehouseId = this.warehouseOptions[0].warehouseId;
// // }
// this.getRoadwayList();
// });
// } // }
// , this.getRoadwayList();
});
}
,
/** 仓库切换 */ /** 仓库切换 */
// onWarehouseChange() { onWarehouseChange() {
// this.queryParams.roadwayId = null; this.queryParams.roadwayId = null;
// this.getRoadwayList(); this.getRoadwayList();
// } }
// , ,
/** 查询巷道列表 */ /** 查询巷道列表 */
// getRoadwayList() { getRoadwayList() {
// // if (!this.queryParams.warehouseId) return; if (!this.queryParams.warehouseId) return;
// getRoadways({ warehouseId: this.queryParams.warehouseId }).then(res => { getRoadways({ warehouseId: this.queryParams.warehouseId }).then(res => {
// this.roadwayOptions = (res.data && res.data.data) || []; this.roadwayOptions = (res.data && res.data.data) || [];
// // 默认选择第一个巷道 // 默认选择第一个巷道
// // if (!this.queryParams.roadwayId && this.roadwayOptions.length) { // if (!this.queryParams.roadwayId && this.roadwayOptions.length) {
// // this.queryParams.roadwayId = this.roadwayOptions[0].value; // this.queryParams.roadwayId = this.roadwayOptions[0].value;
// // }
//
// this.handleQuery();
// });
// } // }
// ,
this.handleQuery();
});
}
,
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
// if (!this.queryParams.warehouseId || !this.queryParams.roadwayId) return; // if (!this.queryParams.warehouseId || !this.queryParams.roadwayId) return;
@@ -149,9 +140,12 @@ export default {
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.resetForm("queryForm"); this.resetForm("queryForm");
this.handleQuery(); // 保持默认仓库,重新加载巷道并刷新
if (this.warehouseOptions.length) {
this.queryParams.warehouseId = this.warehouseOptions[0].warehouseId;
}
this.queryParams.roadwayId = null;
this.getRoadwayList();
} }
, ,
/** 初始化图表 */ /** 初始化图表 */
@@ -198,6 +192,7 @@ export default {
color: "#292c2c" color: "#292c2c"
}, },
}, },
color: ['#25abd9', '#fac858', '#91cc75', '#ee6666', '#73c0de', '#3ba272'], // 添加六个自定义颜色
series: [{ series: [{
name: '货位状态', name: '货位状态',
type: 'pie', type: 'pie',

View File

@@ -13,18 +13,18 @@
<!-- />--> <!-- />-->
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- 巷道 --> <!-- 层数 -->
<el-form-item label="巷道"> <el-form-item label="层数">
<el-select v-model="queryParams.roadwayId" style="width: 150px" @change="handleRoadwayChange"> <el-select v-model="queryParams.theFloor" style="width: 150px" @change="handleFloorChange">
<el-option v-for="item in roadwayOptions" :key="item.value" :label="item.label" :value="item.value"/> <el-option v-for="item in floorOptions" :key="item.value" :label="item.label" :value="item.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 排 --> <!-- 排 -->
<el-form-item label="排"> <!-- <el-form-item label="排">
<el-select v-model="queryParams.thePlatoon" style="width: 150px" @change="handlePlatoonChange"> <el-select v-model="queryParams.thePlatoon" style="width: 150px" @change="handlePlatoonChange">
<el-option v-for="item in platoonOptions" :key="item.value" :label="item.label" :value="item.value"/> <el-option v-for="item in platoonOptions" :key="item.value" :label="item.label" :value="item.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>-->
</el-form> </el-form>
</div> </div>
@@ -36,7 +36,7 @@
<script> <script>
import * as echarts from 'echarts' import * as echarts from 'echarts'
import {getRoadways, getPlatoons, getChartData, getChartMag} from "@/api/kpi/spacePlan" import {getRoadways, getPlatoons, getChartData, getChartMag, getFloors} from "@/api/kpi/spacePlan"
import {listWarehouse} from "@/api/bas/warehouse"; import {listWarehouse} from "@/api/bas/warehouse";
import VueI18n from 'vue-i18n'; import VueI18n from 'vue-i18n';
@@ -49,6 +49,7 @@ export default {
warehouseId: '01', warehouseId: '01',
roadwayId: '1', roadwayId: '1',
thePlatoon: '', thePlatoon: '',
theFloor: '1',
platoon: '1', platoon: '1',
specifications: '', specifications: '',
quantity_x: '', quantity_x: '',
@@ -65,6 +66,7 @@ export default {
warehouseOptions: [], warehouseOptions: [],
// 巷道选项 // 巷道选项
roadwayOptions: [], roadwayOptions: [],
floorOptions: [],
// 排号选项 // 排号选项
platoonOptions: [], platoonOptions: [],
// 图表实例 // 图表实例
@@ -89,7 +91,7 @@ export default {
queryWarehouseParam:{ queryWarehouseParam:{
pageNum: 1, pageNum: 1,
pageSize: 99, pageSize: 99,
typeData:[1,2] typeData:[1]
} }
} }
}, },
@@ -116,34 +118,28 @@ this.getWarehouseList()
// 重置巷道和排号 // 重置巷道和排号
this.queryParams.roadwayId = '' this.queryParams.roadwayId = ''
this.queryParams.thePlatoon = '' this.queryParams.thePlatoon = ''
this.roadwayOptions = [] this.floorOptions = []
this.platoonOptions = [] this.platoonOptions = []
// 获取巷道列表 // 获取层数列表
getRoadways(this.queryParams).then(response => { getFloors({ warehouseId: this.queryParams.warehouseId }).then(response => {
const roadways = response.data.data const floors = response.data.data || []
if (roadways && roadways.length > 0) { if (floors && floors.length > 0) {
this.roadwayOptions = roadways this.floorOptions = floors.map(f => {
this.queryParams.roadwayId = roadways[0].value const lbl = f.label != null ? f.label : (f.name != null ? f.name : (f.title != null ? f.title : (f.value != null ? (String(f.value) + '排') : '')))
this.handleRoadwayChange() const val = f.value != null ? String(f.value) : String((lbl || '').replace(/[^\d]/g, ''))
return { label: lbl, value: val }
})
this.queryParams.theFloor = this.floorOptions[0].value
this.loadChartData()
} else {
this.floorOptions = []
this.queryParams.theFloor = null
} }
}) })
}, },
// 巷道变化处理 // 巷道变化处理
handleRoadwayChange() { handleFloorChange() {
// 重置排号 console.log( this.queryParams.theFloor)
this.queryParams.thePlatoon = ''
this.platoonOptions = []
// 获取排号列表
getPlatoons(this.queryParams).then(response => {
const platoons = response.data.data
if (platoons && platoons.length > 0) {
this.platoonOptions = platoons
this.queryParams.thePlatoon = platoons[0].value
this.loadChartData()
}
})
},
handlePlatoonChange() {
this.loadChartData() this.loadChartData()
}, },
// 加载普通仓库图表数据 // 加载普通仓库图表数据
@@ -178,10 +174,11 @@ this.getWarehouseList()
} }
}, },
title: { title: {
// 标题:库位分布平面图
text: '库位分布平面图', text: '库位分布平面图',
// 子标题:排 subtext: (() => {
subtext: this.queryParams.thePlatoon + '排' const sel = this.floorOptions.find(o => String(o.value) === String(this.queryParams.theFloor))
return sel && sel.label ? sel.label : ''
})()
}, },
grid: { grid: {
width: '90%', width: '90%',
@@ -230,7 +227,7 @@ this.getWarehouseList()
{ {
// 图例:出库分配 // 图例:出库分配
name: '出库分配', name: '出库分配',
itemStyle: { color: '#FF0000' } itemStyle: { color: '#00cc00' }
}, },
{ {
// 图例:入库需盘点 // 图例:入库需盘点
@@ -327,35 +324,39 @@ this.getWarehouseList()
if (params.seriesName !== '满位') { if (params.seriesName !== '满位') {
// 排 // 排
if (this.$i18n.locale ==='zh-cn') { if (this.$i18n.locale ==='zh-cn') {
return params.seriesName + '<br>排' + this.queryParams.thePlatoon + '列' + (params.data[0] + 1) + '层' + (params.data[1] + 1); return params.seriesName + '<br>' + (params.data[1] + 1) + '排' + (params.data[0] + 1) + '列' + this.queryParams.theFloor+ '层';
} }
else{ else{
return params.seriesName + '<br>' + this.queryParams.thePlatoon + '排 ' + (params.data[0] + 1) + '列 ' + (params.data[1] + 1) + '层'; return params.seriesName + '<br>' + (params.data[1] + 1) + '排' + (params.data[0] + 1) + '列' + this.queryParams.theFloor+ '层';
} }
} }
const returnData = { const returnData = {
"thePlatoon": this.queryParams.thePlatoon, "thePlatoon": params.data[1] + 1,
"theColumn": params.data[0] + 1, "theColumn": params.data[0] + 1,
"theFloor": params.data[1] + 1, "theFloor": this.queryParams.theFloor,
"warehouseId": this.queryParams.warehouseId "warehouseId": this.queryParams.warehouseId
}; };
// 生成唯一标识 // 生成唯一标识
const key = `${params.seriesName}-${params.data[0]}-${params.data[1]}`; const key = `${params.seriesName}-${params.data[0]}-${params.data[1]}`;
// 如果已经在加载中,返回基本信息 // 如果已经在加载中,返回基本信息
if (this.loadingKeys && this.loadingKeys[key]) { if (this.loadingKeys && this.loadingKeys[key]) {
if (this.$i18n.locale === 'zh-cn') { if (this.$i18n.locale === 'zh-cn') {
return `${params.seriesName}<br>${this.queryParams.thePlatoon}排${params.data[0] + 1}列${params.data[1] + 1}层<br>加载中...`; return params.seriesName + '<br>' + (params.data[1] + 1) + '排' + (params.data[0] + 1) + '列' + this.queryParams.theFloor + '层';
} else { } else {
return `${params.seriesName}<br>${this.queryParams.thePlatoon}排 ${params.data[0] + 1}列 ${params.data[1] + 1}层<br>加载中...`; return params.seriesName + '<br>' + (params.data[1] + 1) + '排' + (params.data[0] + 1) + '列' + this.queryParams.theFloor+ '层';
} }
} }
// 返回基本信息 // 返回基本信息
const baseStr = `${params.seriesName}<br>${this.queryParams.thePlatoon}排${params.data[0] + 1}列${params.data[1] + 1}层`; const baseStr = `${params.seriesName}<br>${(params.data[1] + 1)}排${params.data[0] + 1}列${this.queryParams.theFloor}层`;
// 设置加载状态 // 设置加载状态
if (!this.loadingKeys) this.loadingKeys = {}; if (!this.loadingKeys) this.loadingKeys = {};
@@ -417,4 +418,3 @@ this.getWarehouseList()
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
} }
</style> </style>