feat(钢卷管理): 添加钢卷统计功能并优化仓库选择排序
新增钢卷统计接口和展示总净重功能 优化仓库选择组件,按使用频率排序选项 调整钢卷选择器布局和样式
This commit is contained in:
@@ -390,3 +390,11 @@ export function listTypeErrorCoil() {
|
|||||||
timeout: 600000
|
timeout: 600000
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getCoilStatisticsList(params) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/materialCoil/statisticsList',
|
||||||
|
method: 'get',
|
||||||
|
params,
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<el-option label="原料" value="raw_material" />
|
<el-option label="原料" value="raw_material" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<el-form-item label="入场卷号">
|
<el-form-item label="入场卷号">
|
||||||
<el-input v-model="queryParams.enterCoilNo" placeholder="请输入入场卷号" clearable size="small"
|
<el-input v-model="queryParams.enterCoilNo" placeholder="请输入入场卷号" clearable size="small"
|
||||||
@keyup.enter.native="handleQuery" />
|
@keyup.enter.native="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -74,8 +74,8 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="品质">
|
<el-form-item label="品质">
|
||||||
<muti-select v-model="queryParams.qualityStatusCsv" :options="dict.type.coil_quality_status" placeholder="请选择品质"
|
<muti-select v-model="queryParams.qualityStatusCsv" :options="dict.type.coil_quality_status"
|
||||||
clearable />
|
placeholder="请选择品质" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="实际库区" v-if="orderBy">
|
<el-form-item label="实际库区" v-if="orderBy">
|
||||||
<actual-warehouse-select v-model="queryParams.actualWarehouseId" placeholder="请选择实际库区" canSelectLevel2
|
<actual-warehouse-select v-model="queryParams.actualWarehouseId" placeholder="请选择实际库区" canSelectLevel2
|
||||||
@@ -86,7 +86,8 @@
|
|||||||
<el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
|
<el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
|
||||||
<el-checkbox v-if="orderBy" style="margin-left: 10px;" v-model="showCoilMap" size="small">显示钢卷地图</el-checkbox>
|
<el-checkbox v-if="orderBy" style="margin-left: 10px;" v-model="showCoilMap" size="small">显示钢卷地图</el-checkbox>
|
||||||
<el-checkbox v-if="orderBy && orderId" style="margin-left: 10px;" v-model="showOrderInfo" size="small">显示订单详情</el-checkbox>
|
<el-checkbox v-if="orderBy && orderId" style="margin-left: 10px;" v-model="showOrderInfo"
|
||||||
|
size="small">显示订单详情</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
@@ -122,8 +123,15 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
<pagination v-if="!rangeMode" v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
|
<div style="display: flex; justify-content: flex-end; align-items: flex-end; gap: 10px;">
|
||||||
:limit.sync="queryParams.pageSize" @pagination="getList" />
|
<span>
|
||||||
|
总净重:{{ coilTrimStatistics.total_net_weight || 0 }}t
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<pagination v-if="!rangeMode" v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div v-if="multiple && selectedCoils.length > 0" class="selected-stats">
|
<div v-if="multiple && selectedCoils.length > 0" class="selected-stats">
|
||||||
<div class="stats-content">
|
<div class="stats-content">
|
||||||
@@ -181,7 +189,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listMaterialCoil } from '@/api/wms/coil';
|
import { listMaterialCoil, getCoilStatisticsList } from '@/api/wms/coil';
|
||||||
import { listActualWarehouse } from "@/api/wms/actualWarehouse";
|
import { listActualWarehouse } from "@/api/wms/actualWarehouse";
|
||||||
import { treeActualWarehouseTwoLevel } from "@/api/wms/actualWarehouse";
|
import { treeActualWarehouseTwoLevel } from "@/api/wms/actualWarehouse";
|
||||||
import MemoInput from '@/components/MemoInput/index.vue';
|
import MemoInput from '@/components/MemoInput/index.vue';
|
||||||
@@ -312,6 +320,7 @@ export default {
|
|||||||
treeProps: { label: "actualWarehouseName", children: "children" },
|
treeProps: { label: "actualWarehouseName", children: "children" },
|
||||||
treeLoading: false,
|
treeLoading: false,
|
||||||
showOrderInfo: false,
|
showOrderInfo: false,
|
||||||
|
coilTrimStatistics: {},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -503,6 +512,11 @@ export default {
|
|||||||
queryPayload.saleId = this.currentUserId;
|
queryPayload.saleId = this.currentUserId;
|
||||||
}
|
}
|
||||||
const response = await listMaterialCoil(queryPayload);
|
const response = await listMaterialCoil(queryPayload);
|
||||||
|
const { pageNum, pageSize, excludeBound, orderBy, ...noPager } = queryPayload;
|
||||||
|
getCoilStatisticsList(noPager).then((res) => {
|
||||||
|
console.log('钢卷统计数据:', res);
|
||||||
|
this.coilTrimStatistics = res.data || {};
|
||||||
|
});
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
this.coilList = response.rows || [];
|
this.coilList = response.rows || [];
|
||||||
this.total = response.total || 0;
|
this.total = response.total || 0;
|
||||||
|
|||||||
@@ -74,8 +74,10 @@ export default {
|
|||||||
console.log('仓库API返回数据:', response);
|
console.log('仓库API返回数据:', response);
|
||||||
const data = response.data || [];
|
const data = response.data || [];
|
||||||
console.log('处理后的数据:', data);
|
console.log('处理后的数据:', data);
|
||||||
this.warehouseOptions = this.buildTreeOptions(data);
|
let options = this.buildTreeOptions(data);
|
||||||
console.log('构建的树形选项:', this.warehouseOptions);
|
options = this.sortOptionsByUsage(options);
|
||||||
|
this.warehouseOptions = options;
|
||||||
|
console.log('构建并排序后的树形选项:', this.warehouseOptions);
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
console.error("加载仓库选项失败:", error);
|
console.error("加载仓库选项失败:", error);
|
||||||
this.warehouseOptions = [];
|
this.warehouseOptions = [];
|
||||||
@@ -106,7 +108,36 @@ export default {
|
|||||||
|
|
||||||
return options;
|
return options;
|
||||||
},
|
},
|
||||||
|
getWarehouseUsage() {
|
||||||
|
try {
|
||||||
|
const usage = localStorage.getItem('warehouseUsage');
|
||||||
|
return usage ? JSON.parse(usage) : {};
|
||||||
|
} catch (error) {
|
||||||
|
console.error('获取仓库使用记录失败:', error);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
updateWarehouseUsage(warehouseId) {
|
||||||
|
try {
|
||||||
|
const usage = this.getWarehouseUsage();
|
||||||
|
usage[warehouseId] = (usage[warehouseId] || 0) + 1;
|
||||||
|
localStorage.setItem('warehouseUsage', JSON.stringify(usage));
|
||||||
|
} catch (error) {
|
||||||
|
console.error('更新仓库使用记录失败:', error);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sortOptionsByUsage(options) {
|
||||||
|
const usage = this.getWarehouseUsage();
|
||||||
|
return options.sort((a, b) => {
|
||||||
|
const usageA = usage[a.warehouseId] || 0;
|
||||||
|
const usageB = usage[b.warehouseId] || 0;
|
||||||
|
return usageB - usageA;
|
||||||
|
});
|
||||||
|
},
|
||||||
onChange(val) {
|
onChange(val) {
|
||||||
|
if (val) {
|
||||||
|
this.updateWarehouseUsage(val);
|
||||||
|
}
|
||||||
this.$emit('input', val);
|
this.$emit('input', val);
|
||||||
this.$emit('change', val);
|
this.$emit('change', val);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user