feat(CoilSelector): 新增入场卷号字段并调整当前卷号显示
feat(customer): 新增客户相关配卷和财务信息查询接口 fix(base.vue): 修复发货单时间条件显示问题 refactor(CustomerEdit): 替换地址选择组件为普通输入框 feat(CoilSelector): 增加入场卷号查询条件并调整对话框宽度 style(OrderEdit): 调整客户名称和销售员选择框宽度 refactor(ChinaAreaSelect): 优化地址解析逻辑并支持空对象处理 feat(FileUpload/FileList): 新增文件预览功能组件 refactor(KLPService/CustomerSelect): 优化客户选择组件并支持自定义字段绑定 fix(AbnormalForm): 修复异常位置校验逻辑并保留当前卷号 feat(ContractTabs): 新增合同附件展示功能 refactor(warehouse/record): 重构操作记录统计展示方式 feat(contract): 集成客户选择组件并优化合同信息填充 refactor(order): 调整订单表单布局并集成合同信息 feat(FilePreview): 新增文件预览组件 feat(customer): 新增财务状态和发货配卷展示 refactor(CustomerOrder): 移除冗余代码并优化布局 feat(PlanDetailForm): 新增合同附件查看功能 feat(dict): 新增字典管理页面
This commit is contained in:
@@ -73,12 +73,12 @@ export default {
|
||||
{ required: true, message: '请选择位置', trigger: 'change' }
|
||||
],
|
||||
startPosition: [
|
||||
{ required: true, message: '请输入开始位置', trigger: 'blur' },
|
||||
// { type: 'number', message: '请输入数字', trigger: 'blur' }
|
||||
{ required: true, message: '请输入开始位置', trigger: ['blur', 'change'] },
|
||||
{ validator: this.validateStartPosition, trigger: ['blur', 'change'] }
|
||||
],
|
||||
endPosition: [
|
||||
{ required: true, message: '请输入结束位置', trigger: 'blur' },
|
||||
// { type: 'number', message: '请输入数字', trigger: 'blur' }
|
||||
{ required: true, message: '请输入结束位置', trigger: ['blur', 'change'] },
|
||||
{ validator: this.validateEndPosition, trigger: ['blur', 'change'] }
|
||||
],
|
||||
defectCode: [
|
||||
{ required: true, message: '请选择缺陷代码', trigger: 'change' }
|
||||
@@ -102,14 +102,19 @@ export default {
|
||||
methods: {
|
||||
/** 表单验证 */
|
||||
validate(callback) {
|
||||
if (this.formData.startPosition > this.formData.endPosition) {
|
||||
this.$message.error('开始位置必须小于结束位置');
|
||||
return false;
|
||||
}
|
||||
return this.$refs.form.validate(callback);
|
||||
},
|
||||
/** 重置表单 */
|
||||
resetFields() {
|
||||
this.$refs.form.resetFields();
|
||||
const currentCoilId = this.formData.coilId;
|
||||
this.formData = {
|
||||
abnormalId: undefined,
|
||||
coilId: undefined,
|
||||
coilId: currentCoilId,
|
||||
position: undefined,
|
||||
startPosition: undefined,
|
||||
endPosition: undefined,
|
||||
@@ -124,6 +129,22 @@ export default {
|
||||
if (this.formData.startPosition && this.formData.endPosition) {
|
||||
this.formData.length = this.formData.endPosition - this.formData.startPosition;
|
||||
}
|
||||
},
|
||||
/** 校验开始位置 */
|
||||
validateStartPosition(rule, value, callback) {
|
||||
if (value <= 0) {
|
||||
callback(new Error('开始位置必须为正数'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
},
|
||||
/** 校验结束位置 */
|
||||
validateEndPosition(rule, value, callback) {
|
||||
if (value <= 0) {
|
||||
callback(new Error('结束位置必须为正数'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -48,8 +48,8 @@
|
||||
<MaterialSelect :hideType="hideType" :itemId.sync="queryParams.itemIds" :itemType.sync="queryParams.itemType"
|
||||
:multiple="true" />
|
||||
|
||||
<el-form-item label="发货单时间">
|
||||
<el-date-picker v-if="showWaybill" v-model="queryParams.shipmentTime" type="daterange" value-format="yyyy-MM-dd HH:mm:ss"
|
||||
<el-form-item v-if="showWaybill" label="发货单时间">
|
||||
<el-date-picker v-model="queryParams.shipmentTime" type="daterange" value-format="yyyy-MM-dd HH:mm:ss"
|
||||
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" />
|
||||
</el-form-item>
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
|
||||
<!-- 统计指标卡 -->
|
||||
<el-row :gutter="10" class="mb10">
|
||||
<el-col :span="8">
|
||||
@@ -71,14 +73,27 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 操作人汇总表格 -->
|
||||
<el-card shadow="hover" :body-style="{ padding: '10px' }" class="mb10">
|
||||
<div slot="header" class="clearfix" style="padding-bottom: 5px;">
|
||||
<span>操作记录趋势</span>
|
||||
</div>
|
||||
<div id="trendChart" style="height: 250px;"></div>
|
||||
</el-card>
|
||||
|
||||
<!-- 图表区域 -->
|
||||
<el-row :gutter="10" class="mb10">
|
||||
<el-col :span="12">
|
||||
<el-card shadow="hover" :body-style="{ padding: '10px' }">
|
||||
<div slot="header" class="clearfix" style="padding-bottom: 5px;">
|
||||
<span>操作记录趋势</span>
|
||||
</div>
|
||||
<div id="trendChart" style="height: 250px;"></div>
|
||||
<el-table :data="userSummaryData" style="width: 100%" height="280px">
|
||||
<el-table-column prop="createBy" label="操作人" width="180"></el-table-column>
|
||||
<el-table-column prop="coilCount" label="操作卷数" width="120"></el-table-column>
|
||||
<el-table-column prop="totalWeight" label="总重量(kg)">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.totalWeight.toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
@@ -212,6 +227,8 @@ export default {
|
||||
totalWeight: 0,
|
||||
warehouseCount: 0
|
||||
},
|
||||
// 操作人汇总数据
|
||||
userSummaryData: [],
|
||||
// 图表实例
|
||||
trendChart: null,
|
||||
pieChart: null,
|
||||
@@ -258,7 +275,7 @@ export default {
|
||||
this.queryParams.createEndTime = this.queryParams.createTimeRange[1];
|
||||
}
|
||||
// 移除分页参数,获取全部数据
|
||||
const params = { ...this.queryParams, pageNum:1, pageSize: 10000 };
|
||||
const params = { ...this.queryParams, pageNum: 1, pageSize: 10000 };
|
||||
|
||||
listCoilWarehouseOperationLog(params).then(response => {
|
||||
this.allData = response.rows;
|
||||
@@ -296,6 +313,26 @@ export default {
|
||||
});
|
||||
this.stats.warehouseCount = warehouseIds.size;
|
||||
|
||||
// 按操作人汇总数据
|
||||
const userMap = {};
|
||||
this.allData.forEach(item => {
|
||||
const user = item.createBy || '未知';
|
||||
if (!userMap[user]) {
|
||||
userMap[user] = {
|
||||
createBy: user,
|
||||
coilCount: 0,
|
||||
totalWeight: 0
|
||||
};
|
||||
}
|
||||
userMap[user].coilCount++;
|
||||
if (item.coil && item.coil.netWeight) {
|
||||
userMap[user].totalWeight += parseFloat(item.coil.netWeight);
|
||||
}
|
||||
});
|
||||
|
||||
// 转换为数组并按操作卷数降序排序
|
||||
this.userSummaryData = Object.values(userMap).sort((a, b) => b.coilCount - a.coilCount);
|
||||
|
||||
// 更新图表数据
|
||||
this.updateCharts();
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user