<template>
|
<div class="wmsStockBoardabc-container">
|
<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
|
<el-form :model="queryParamswmsStockBoardabc" ref="queryForm" labelWidth="90">
|
<el-row>
|
<!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="关键字">
|
<el-input
|
v-model="queryParamswmsStockBoardabc.searchKey"
|
clearable=""
|
placeholder="ABC分类名称,物料编号,物料名称,跟踪码,容器编号,库存状态名称,一维条码,二维条码,ERP凭证,ERP单号,ERP库存地,供应商批次,批次,质检状态名称,创建人,修改人"
|
/>
|
</el-form-item>
|
</el-col> -->
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="queryParamswmsStockBoardabc">
|
<el-form-item label="时间">
|
<el-date-picker placeholder="请选择时间" value-format="YYYY/MM/DD" type="daterange" v-model="queryParamswmsStockBoardabc.recordInsertTimeRange" />
|
</el-form-item>
|
</el-col>
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb10">
|
<el-form-item>
|
<el-button-group style="display: flex; align-items: center">
|
<el-button type="primary" icon="ele-Search" @click="handleQuerywmsStockBoardabc" v-auth="'wmsStockBoardabc:page'" :disabled="disabled_btnwmsStockBoardabc"> 查询 </el-button>
|
<el-button icon="ele-Refresh" @click="resetwmsStockBoardabc"> 重置 </el-button>
|
<!-- <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUIwmsStockBoardabc" v-if="!showAdvanceQueryUIwmsStockBoardabc" style="margin-left:5px;"> 高级查询 </el-button>
|
<el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUIwmsStockBoardabc" v-if="showAdvanceQueryUIwmsStockBoardabc" style="margin-left:5px;"> 隐藏 </el-button>
|
<el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddwmsStockBoardabc" v-auth="'wmsStockBoardabc:add'"> 新增 </el-button> -->
|
<!-- <el-button type="primary" style="margin-left:5px;" icon="ele-Download" @click="handleExportExcelwmsStockBoardabc" v-auth="'wmsStockBoardabc:exportExcel'" > 导出 </el-button> -->
|
</el-button-group>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</el-card>
|
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
|
<div class="task_echrts" id="task_echrtsA"></div>
|
|
<!-- <el-table
|
ref="tableRefwmsStockBoardabc"
|
:data="tableDatawmsStockBoardabc"
|
style="width: 100%"
|
v-loading="loadingwmsStockBoardabc"
|
tooltip-effect="light"
|
row-key="id"
|
@sort-change="sortChangewmsStockBoardabc"
|
border="">
|
<el-table-column type="index" label="序号" width="55" align="center"/>
|
<el-table-column prop="abcClassName" label="ABC分类名称" show-overflow-tooltip="" />
|
<el-table-column prop="materialCode" label="物料编号" show-overflow-tooltip="" />
|
<el-table-column prop="materialName" label="物料名称" show-overflow-tooltip="" />
|
</el-table>
|
<el-pagination
|
v-model:currentPage="tableParamswmsStockBoardabc.page"
|
v-model:page-size="tableParamswmsStockBoardabc.pageSize"
|
:total="tableParamswmsStockBoardabc.total"
|
:page-sizes="[10, 20, 50, 100, 200, 500]"
|
small=""
|
background=""
|
@size-change="handleSizeChangewmsStockBoardabc"
|
@current-change="handleCurrentChangewmsStockBoardabc"
|
layout="total, sizes, prev, pager, next, jumper"
|
/> -->
|
<printDialogwmsStockBoardabc ref="printDialogRefwmsStockBoardabc" :title="printwmsStockBoardabcTitle" @reloadTable="handleQuerywmsStockBoardabc" />
|
<editDialogwmsStockBoardabc ref="editDialogRefwmsStockBoardabc" :title="editwmsStockBoardabcTitle" @reloadTable="handleQuerywmsStockBoardabc" />
|
</el-card>
|
|
<open-allprop titleAuthor="1" hexiao="0" ref="propALlProp" @getTabelData="handleQuerywmsStockBoardabc"></open-allprop>
|
</div>
|
</template>
|
|
<script lang="ts" setup="" name="wmsStockBoardabc">
|
import { ref, onMounted, nextTick, reactive, onUnmounted, getCurrentInstance } from 'vue';
|
import { ElMessageBox, ElMessage } from 'element-plus';
|
import { auth } from '/@/utils/authFunction';
|
import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
|
import { formatDate, formatDate_T_Date, formatDate_T_Time, defaultTimeRange } from '/@/utils/formatTime';
|
import { exportPageExcel } from '/@/utils/exportPageExcel'; //引入导出方法
|
import * as echarts from 'echarts';
|
import OpenAllprop from './component/openAllpropDetail.vue';
|
import printDialogwmsStockBoardabc from '/@/views/system/print/component/hiprint/preview.vue';
|
import { pagewmsStockBoardabc, deletewmsStockBoardabc, importExcelwmsStockBoardabc, downloadExcelTemplatewmsStockBoardabc } from '/@/api/main/ReportCenter/wmsStockBoardabc';
|
import { getAPI } from '/@/utils/axios-utils';
|
import { SysEnumApi } from '/@/api-services/api';
|
import commonFunction from '/@/utils/commonFunction';
|
const { proxy }: any = getCurrentInstance(); // 访问实例上下文 proxy同时支持开发 线上环境
|
const getEnumABCClassData_Index = ref<any>([]);
|
const getEnumStockStatusData_Index = ref<any>([]);
|
const getEnumQCStatusData_Index = ref<any>([]);
|
|
const { getEnumDesc } = commonFunction();
|
|
/***************************************************[ABC动态分析看板操作]开始***************************************************/
|
const showAdvanceQueryUIwmsStockBoardabc = ref(false);
|
const tableRefwmsStockBoardabc = ref(null);
|
const printDialogRefwmsStockBoardabc = ref();
|
const editDialogRefwmsStockBoardabc = ref();
|
const loadingwmsStockBoardabc = ref(false);
|
const disabled_btnwmsStockBoardabc = ref(false);
|
const tableDatawmsStockBoardabc = ref<any>([]);
|
const queryParamswmsStockBoardabc = ref<any>({});
|
const tableParamswmsStockBoardabc = ref({
|
page: 1,
|
pageSize: 10,
|
total: 0,
|
});
|
|
const printwmsStockBoardabcTitle = ref('');
|
const editwmsStockBoardabcTitle = ref('');
|
|
// ---------------详情-----------------------
|
const showProp = (item?: any) => {
|
proxy.$refs['propALlProp'].openDialog(2, item);
|
};
|
|
// 改变高级查询的控件显示状态
|
const changeAdvanceQueryUIwmsStockBoardabc = () => {
|
showAdvanceQueryUIwmsStockBoardabc.value = !showAdvanceQueryUIwmsStockBoardabc.value;
|
};
|
|
// 重置ABC动态分析看板查询
|
const resetwmsStockBoardabc = async () => {
|
queryParamswmsStockBoardabc.value = {};
|
};
|
|
// ABC动态分析看板列排序
|
const sortChangewmsStockBoardabc = async (column: any) => {
|
queryParamswmsStockBoardabc.value.field = column.prop;
|
queryParamswmsStockBoardabc.value.order = column.order;
|
await handleQuerywmsStockBoardabc();
|
};
|
|
// 打开新增ABC动态分析看板页面
|
const openAddwmsStockBoardabc = () => {
|
editwmsStockBoardabcTitle.value = '添加ABC动态分析看板';
|
editDialogRefwmsStockBoardabc.value.openDialog(1, {});
|
};
|
|
// 打开打印ABC动态分析看板页面
|
const openPrintwmsStockBoardabc = async (row: any) => {
|
printwmsStockBoardabcTitle.value = '打印ABC动态分析看板';
|
};
|
|
// 打开编辑ABC动态分析看板页面
|
const openEditwmsStockBoardabc = (row: any) => {
|
editwmsStockBoardabcTitle.value = '编辑ABC动态分析看板';
|
editDialogRefwmsStockBoardabc.value.openDialog(2, row);
|
};
|
|
// 删除ABC动态分析看板
|
const delwmsStockBoardabc = (row: any) => {
|
ElMessageBox.confirm(`确定要删除吗?`, '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning',
|
})
|
.then(async () => {
|
loadingwmsStockBoardabc.value = true;
|
var ret = await deletewmsStockBoardabc(row);
|
if (ret.data.type == 'success') {
|
ElMessage.success('删除成功');
|
}
|
loadingwmsStockBoardabc.value = false;
|
handleQuerywmsStockBoardabc();
|
})
|
.catch(() => {});
|
};
|
|
// 改变ABC动态分析看板页面容量
|
const handleSizeChangewmsStockBoardabc = (val: number) => {
|
tableParamswmsStockBoardabc.value.pageSize = val;
|
handleQuerywmsStockBoardabc();
|
};
|
|
// 改变ABC动态分析看板页码序号
|
const handleCurrentChangewmsStockBoardabc = (val: number) => {
|
tableParamswmsStockBoardabc.value.page = val;
|
handleQuerywmsStockBoardabc();
|
};
|
|
/***************************************************[ABC动态分析看板操作]结束***************************************************/
|
/***************************************************[ABC动态分析看板导出]开始***************************************************/
|
//定义当前页面的方法组
|
const functionMapwmsStockBoardabc = {
|
getEnumABCClassData_Index,
|
getEnumStockStatusData_Index,
|
getEnumQCStatusData_Index,
|
formatDate_T_Date,
|
formatDate_T_Time,
|
};
|
//点击导出按钮
|
const handleExportExcelwmsStockBoardabc = async (formData: Blob) => {
|
loadingwmsStockBoardabc.value = true;
|
disabled_btnwmsStockBoardabc.value = true;
|
var new_tableParamswmsStockBoardabc = JSON.parse(JSON.stringify(tableParamswmsStockBoardabc.value));
|
new_tableParamswmsStockBoardabc.page = 1;
|
new_tableParamswmsStockBoardabc.pageSize = 100000;
|
var res = await pagewmsStockBoardabc(Object.assign(queryParamswmsStockBoardabc.value, new_tableParamswmsStockBoardabc));
|
if (res.data.type == 'success') {
|
exportExcelwmsStockBoardabc(res.data.result?.items ?? []);
|
}
|
loadingwmsStockBoardabc.value = false;
|
disabled_btnwmsStockBoardabc.value = false;
|
};
|
//导出
|
const exportExcelwmsStockBoardabc = async (exportDataList: Array) => {
|
exportPageExcel(exportDataList, tableRefwmsStockBoardabc, 'ABC动态分析看板', functionMapwmsStockBoardabc);
|
};
|
/***************************************************[ABC动态分析看板导出]结束***************************************************/
|
// ABC动态分析看板页面加载时
|
onMounted(async () => {
|
getEnumABCClassData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('ABCClassEnum')).data.result ?? [];
|
// getEnumStockStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('StockStatusEnum')).data.result ?? [];
|
// getEnumQCStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('QcStatusEnum')).data.result ?? [];
|
});
|
|
// 出入库曲线图
|
const chartsOption = reactive({
|
tooltip: {
|
trigger: 'axis',
|
axisPointer: {
|
type: 'line',
|
},
|
},
|
legend: {
|
top: 0,
|
icon: 'circle',
|
itemWidth: 20,
|
itemHeight: 10,
|
selectedMode: true,
|
itemGap: 13,
|
data: [
|
{ name: '出库', itemStyle: { color: '#F64B18' } },
|
{ name: '入库', itemStyle: { color: '#09BDFE' } },
|
],
|
right: '4%',
|
textStyle: {
|
fontSize: 12,
|
color: '#000',
|
},
|
},
|
grid: {
|
top: 40,
|
left: '2%',
|
right: '1%',
|
bottom: '2%',
|
containLabel: true,
|
},
|
xAxis: [
|
{
|
type: 'category',
|
data: [] as string[],
|
axisTick: {
|
show: false,
|
},
|
},
|
],
|
yAxis: {
|
type: 'value',
|
},
|
series: [
|
// {
|
// name: 'ABC动态分析',
|
// type: 'bar',
|
// smooth: true,
|
// symbol: 'circle',
|
// symbolSize: 5,
|
// showSymbol: false,
|
// lineStyle: {
|
// width: 2,
|
// color: '#F64B18'
|
// },
|
// areaStyle: {
|
// color: new (echarts as any).graphic.LinearGradient(0, 0, 0, 1, [{
|
// offset: 0,
|
// color: 'rgba(137, 189, 27, 0.3)'
|
// }, {
|
// offset: 0.8,
|
// color: 'rgba(137, 189, 27, 0)'
|
// }], false),
|
// shadowColor: 'rgba(0, 0, 0, 0.1)',
|
// shadowBlur: 10
|
// },
|
// itemStyle: {
|
// color: '#f83800',
|
// borderColor: 'rgba(137,189,2,0.27)',
|
// borderWidth: 12
|
// },
|
// data: [1,2,3,4] as number[]
|
// },
|
{
|
name: 'ABC动态分析',
|
type: 'bar',
|
smooth: true,
|
barWidth: 60,
|
symbol: 'circle',
|
symbolSize: 5,
|
showSymbol: false,
|
lineStyle: {
|
width: 2,
|
color: '#09BDFE',
|
},
|
areaStyle: {
|
color: new (echarts as any).graphic.LinearGradient(
|
0,
|
0,
|
0,
|
1,
|
[
|
{
|
offset: 0,
|
color: 'rgba(0, 136, 212, 0.3)',
|
},
|
{
|
offset: 0.8,
|
color: 'rgba(0, 136, 212, 0)',
|
},
|
],
|
false
|
),
|
shadowColor: 'rgba(0, 0, 0, 0.1)',
|
shadowBlur: 10,
|
},
|
itemStyle: {
|
color: 'rgb(0,136,212)',
|
borderColor: 'rgba(0,136,212,0.2)',
|
borderWidth: 12,
|
},
|
data: [] as number[],
|
},
|
],
|
});
|
|
//绘制出入库曲线
|
let lineChart: any = null;
|
const initCharts = () => {
|
nextTick(() => {
|
lineChart = echarts.init(document.getElementById('task_echrtsA') as HTMLDivElement);
|
lineChart.setOption(chartsOption);
|
|
// 监听柱状图的点击事件
|
lineChart.on('click', async function (params: any) {
|
// params 包含点击的柱子的信息,如数据值、系列索引、数据索引等
|
console.log(params);
|
// 例如,可以这样获取点击的数据值
|
var dataValue: any = params.data;
|
console.log(params);
|
console.log('Clicked data value is: ' + dataValue);
|
var ABCClass = getEnumABCClassData_Index.value.filter((v: any) => v.describe == params.name)[0]?.value;
|
debugger;
|
showProp({
|
aBCClass: ABCClass,
|
recordInsertTimeRange: recordInsertTimeRange.value || [],
|
});
|
|
// 根据需要处理点击事件
|
// ...
|
});
|
});
|
};
|
|
// 批量设置 echarts resize
|
|
// 批量设置 echarts resize
|
const initEchartsResize = () => {
|
window.addEventListener('resize', () => {
|
nextTick(() => {
|
lineChart.resize();
|
});
|
});
|
};
|
|
onMounted(async () => {
|
initEchartsResize();
|
});
|
const recordInsertTimeRange = ref([]);
|
// 查询ABC动态分析看板
|
const handleQuerywmsStockBoardabc = async () => {
|
loadingwmsStockBoardabc.value = true;
|
disabled_btnwmsStockBoardabc.value = true;
|
chartsOption.xAxis[0].data = [];
|
chartsOption.series[0].data = [];
|
var res = await pagewmsStockBoardabc(Object.assign(queryParamswmsStockBoardabc.value, tableParamswmsStockBoardabc.value));
|
if (res.data.type == 'success') {
|
var result = res.data.result;
|
result.forEach((item: any) => {
|
chartsOption.xAxis[0].data.push(item.abcClassName);
|
chartsOption.series[0].data.push(item.quantity);
|
});
|
//echart
|
recordInsertTimeRange.value = queryParamswmsStockBoardabc.value.recordInsertTimeRange;
|
initCharts();
|
tableDatawmsStockBoardabc.value = res.data.result?.items ?? [];
|
tableParamswmsStockBoardabc.value.total = res.data.result?.total;
|
}
|
loadingwmsStockBoardabc.value = false;
|
disabled_btnwmsStockBoardabc.value = false;
|
};
|
handleQuerywmsStockBoardabc();
|
|
onUnmounted(() => {
|
if (lineChart) {
|
lineChart.dispose();
|
}
|
});
|
</script>
|
<style scoped>
|
:deep(.el-input),
|
:deep(.el-select),
|
:deep(.el-input-number) {
|
width: 100%;
|
}
|
.task_echrts {
|
width: 100%;
|
height: 90%;
|
background: #fff;
|
border-radius: 10px;
|
}
|
</style>
|