更新客户管理、订单进度、生产计划、仓储汇总和配置文件

This commit is contained in:
Developer
2026-06-03 15:50:22 +08:00
parent b7b86b6549
commit 197603483d
5 changed files with 116 additions and 67 deletions

View File

@@ -102,7 +102,7 @@
</el-table-column> </el-table-column>
<el-table-column width="150px" label="登记时间" align="center" show-overflow-tooltip> <el-table-column width="150px" label="登记时间" align="center" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.登记时间 ? scope.row.登记时间.substring(0, 10) : '' }} {{ scope.row.登记时间 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="100px" label="客户来源" align="center" show-overflow-tooltip> <el-table-column width="100px" label="客户来源" align="center" show-overflow-tooltip>
@@ -234,7 +234,7 @@
<el-form-item label="登记时间:" prop="登记时间"> <el-form-item label="登记时间:" prop="登记时间">
<el-date-picker <el-date-picker
v-model="form.登记时间" v-model="form.登记时间"
:disabled="flag1 === 2 && id != 273" :disabled="true"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
size="small" size="small"
@@ -348,6 +348,10 @@ export default {
this.$refs['form'].resetFields() this.$refs['form'].resetFields()
} }
this.title = '新增客户' this.title = '新增客户'
var now = new Date()
var month = (now.getMonth() + 1).toString().padStart(2, '0')
var day = now.getDate().toString().padStart(2, '0')
this.form.登记时间 = now.getFullYear() + '-' + month + '-' + day
this.dialogFormVisible = true this.dialogFormVisible = true
}, },
handleEdit(row) { handleEdit(row) {

View File

@@ -195,6 +195,14 @@
<span class="detail-label">装配人</span> <span class="detail-label">装配人</span>
<span class="detail-value">{{ detailData[0].装配结束人员 }}</span> <span class="detail-value">{{ detailData[0].装配结束人员 }}</span>
</div> </div>
<div v-if="detailData[0].采购入库日期" class="detail-row">
<span class="detail-label">入库日期</span>
<span class="detail-value">{{ detailData[0].采购入库日期 }}</span>
</div>
<div v-if="detailData[0].自制入库日期" class="detail-row">
<span class="detail-label">入库日期</span>
<span class="detail-value">{{ detailData[0].自制入库日期 }}</span>
</div>
<div v-if="detailData[0].发货日期" class="detail-row"> <div v-if="detailData[0].发货日期" class="detail-row">
<span class="detail-label">发货日期</span> <span class="detail-label">发货日期</span>
<span class="detail-value">{{ detailData[0].发货日期 }}</span> <span class="detail-value">{{ detailData[0].发货日期 }}</span>

View File

@@ -230,6 +230,14 @@ export default {
statusValue: '', statusValue: '',
loading: false, loading: false,
tableData2: [], tableData2: [],
processConfig: {
maxProcessCount: 11,
processNamePattern: 'OP0{index}0',
statusRules: {
completed: 100,
dispatching: 0
}
},
dashboardVisible: false, dashboardVisible: false,
statusPieChart: null, statusPieChart: null,
completionBarChart: null, completionBarChart: null,
@@ -354,76 +362,105 @@ export default {
this.$message.warning('月份不能为空') this.$message.warning('月份不能为空')
} }
}, },
groupByOrder(data) { // 初始化工序字段
const grouped = {} initializeProcessFields() {
if (!Array.isArray(data)) { const fields = {}
return [] for (let i = 1; i <= this.processConfig.maxProcessCount; i++) {
const opKey = this.processConfig.processNamePattern.replace('{index}', i)
fields[opKey] = ''
} }
return fields
},
// 创建订单分组对象
createOrderGroup(item) {
return {
订单号: item.订单号,
MK订单编号: item.MK订单编号,
收货人: item.MK订单收货人,
产品名称: item.产品名称,
零件名称: item.零件名称,
零件图号: item.零件图号,
订单数: item.订单数,
计划数: item.计划数,
剩余数: item.剩余数,
状态: item.状态,
完成率: '',
投产时间: item.投产时间,
精工期限: item.精工期限,
设备: item.设备,
材料: item.材料,
_totalProcesses: 0,
_completedProcesses: 0,
...this.initializeProcessFields()
}
},
// 解析工序索引
parseProcessIndex(processOrder) {
if (processOrder === null || processOrder === undefined || processOrder === '') {
return null
}
const opIndex = parseInt(processOrder, 10)
if (isNaN(opIndex) || opIndex < 1 || opIndex > this.processConfig.maxProcessCount) {
console.warn('无效的工序顺序: ' + processOrder)
return null
}
return opIndex
},
// 处理工序数据
processWorkProcesses(group, item) {
if (!item.工序) return
group._totalProcesses++
const remainingCount = Number(item.剩余数) || 0
if (remainingCount <= 0) {
group._completedProcesses++
}
const opIndex = this.parseProcessIndex(item.工序顺序)
if (opIndex !== null) {
const opKey = this.processConfig.processNamePattern.replace('{index}', opIndex)
group[opKey] = item.工序
}
},
// 计算订单状态
calculateOrderStatus(group) {
var rate = 0
if (group._totalProcesses > 0) {
rate = Math.round(group._completedProcesses / group._totalProcesses * 100)
}
group.完成率 = rate + '%'
if (rate === this.processConfig.statusRules.completed) {
group.状态 = '已完成'
} else if (rate === this.processConfig.statusRules.dispatching) {
group.状态 = '派工中'
} else {
group.状态 = '生产中'
}
delete group._totalProcesses
delete group._completedProcesses
},
// 数据分组主逻辑
groupDataByOrder(data) {
const grouped = {}
data.forEach(item => { data.forEach(item => {
if (!item) return if (!item || !item.订单号) return
const orderNo = item.订单号 const orderNo = item.订单号
if (!grouped[orderNo]) { if (!grouped[orderNo]) {
grouped[orderNo] = { grouped[orderNo] = this.createOrderGroup(item)
订单号: item.订单号,
MK订单编号: item.MK订单编号,
收货人: item.MK订单收货人,
产品名称: item.产品名称,
零件名称: item.零件名称,
零件图号: item.零件图号,
订单数: item.订单数,
计划数: item.计划数,
剩余数: item.剩余数,
状态: item.状态,
完成率: '',
投产时间: item.投产时间,
精工期限: item.精工期限,
设备: item.设备,
材料: item.材料,
_totalProcesses: 0,
_completedProcesses: 0,
OP010: '',
OP020: '',
OP030: '',
OP040: '',
OP050: '',
OP060: '',
OP070: '',
OP080: '',
OP090: '',
OP100: '',
OP110: ''
}
} }
if (item.工序) { this.processWorkProcesses(grouped[orderNo], item)
grouped[orderNo]._totalProcesses++
if (item.剩余数 <= 0) {
grouped[orderNo]._completedProcesses++
}
}
const opIndex = parseInt(item.工序顺序)
if (opIndex >= 1 && opIndex <= 11) {
const opKey = `OP0${opIndex}0`
grouped[orderNo][opKey] = item.工序
}
})
Object.values(grouped).forEach(group => {
var rate = 0
if (group._totalProcesses > 0) {
rate = Math.round(group._completedProcesses / group._totalProcesses * 100)
}
group.完成率 = rate + '%'
if (rate === 100) {
group.状态 = '已完成'
} else if (rate === 0) {
group.状态 = '派工中'
} else {
group.状态 = '生产中'
}
delete group._totalProcesses
delete group._completedProcesses
}) })
return Object.values(grouped) return Object.values(grouped)
}, },
groupByOrder(data) {
if (!Array.isArray(data)) {
console.warn('生产数据格式错误:期望数组格式')
return []
}
const groupedData = this.groupDataByOrder(data)
groupedData.forEach(group => {
this.calculateOrderStatus(group)
})
return groupedData
},
openDashboard() { openDashboard() {
if (this.tableData2.length === 0) { if (this.tableData2.length === 0) {
this.$message.warning('暂无数据,请先查询') this.$message.warning('暂无数据,请先查询')

View File

@@ -510,7 +510,7 @@ export default {
var param = [] var param = []
var Data = this.CreateData('11', '仓储管理_生产订单_查询', param) var Data = this.CreateData('11', '仓储管理_生产订单_查询', param)
this.ExecDatabase(Data).then(response => { this.ExecDatabase(Data).then(response => {
var filtered = response.data.filter(item => item.状态 === '加工中') var filtered = response.data.filter(item => item.状态 === '加工中' && item.补货数 !== item.入库数)
filtered.forEach(item => { filtered.forEach(item => {
item.期限状态 = this.calculateDeadlineStatus(item) item.期限状态 = this.calculateDeadlineStatus(item)
item.超期时间 = this.calculateOverdueDays(item) item.超期时间 = this.calculateOverdueDays(item)

View File

@@ -4,8 +4,8 @@ export const name1_config = `OP1000`
export const name3_config = `OP2000` export const name3_config = `OP2000`
export const name4_config = `OP9999` export const name4_config = `OP9999`
// //
var url = `http://192.168.1.27:8030` // 测试环境 接口端口号 http://192.168.1.27:8031 测试环境管理系统 0001 654321 // var url = `http://192.168.1.27:8030` // 测试环境 接口端口号 http://192.168.1.27:8031 测试环境管理系统 0001 654321
// var url = `http://192.168.1.27:8010` // 正式环境 接口端口号 http://192.168.1.27:8001 正式环境管理系统 0000 0000 var url = `http://192.168.1.27:8010` // 正式环境 接口端口号 http://192.168.1.27:8001 正式环境管理系统 0000 0000
var url1 = `http://192.168.1.27:10006` // 立库数据库的接口端口号 var url1 = `http://192.168.1.27:10006` // 立库数据库的接口端口号
// var url = `http://127.0.0.1:10250` // var url = `http://127.0.0.1:10250`
// var url = `http://124.220.15.242:8602` // var url = `http://124.220.15.242:8602`