feat: 采购合同历史单价查询及人员管理表单优化

- ProcurementContractAudit: 新增历史单价按钮及弹窗(表格+统计)
- OrderInquiry: 新增历史单价按钮及弹窗(表格+统计)
- PurchasedPartsSearch: 新增历史单价按钮及弹窗(表格+统计)
- PersonnelManagement: 取消出生日期/身份证号/学历/家庭住址/民族的必填验证
This commit is contained in:
Developer
2026-05-22 15:23:25 +08:00
parent fd70670235
commit f6802d9893
4 changed files with 267 additions and 28 deletions

View File

@@ -740,16 +740,16 @@ export default {
AccountNumber: [{ required: true, message: '请输入', trigger: 'blur' }],
Password: [{ required: true, message: '请输入', trigger: 'blur' }],
Sex: [{ required: true, message: '请输入', trigger: 'change' }],
Birthday: [{ required: true, message: '请输入', trigger: 'change' }],
IDcard: [{ required: true, message: '请输入', trigger: 'blur' }],
Birthday: [{ required: false, message: '请输入', trigger: 'change' }],
IDcard: [{ required: false, message: '请输入', trigger: 'blur' }],
TimeOfEntry: [{ required: true, message: '请输入', trigger: 'change' }],
ContactInformation: [{ required: true, message: '请输入', trigger: 'blur' }],
Address: [{ required: true, message: '请输入', trigger: 'change' }],
Nation: [{ required: true, message: '请输入', trigger: 'change' }],
Address: [{ required: false, message: '请输入', trigger: 'change' }],
Nation: [{ required: false, message: '请输入', trigger: 'change' }],
ForeignLanguageLevel: [{ required: true, message: '请输入', trigger: 'change' }],
Title: [{ required: true, message: '请输入', trigger: 'change' }],
PositionStatus: [{ required: true, message: '请输入', trigger: 'change' }],
Education: [{ required: true, message: '请输入', trigger: 'change' }],
Education: [{ required: false, message: '请输入', trigger: 'change' }],
DepartmentName: [{ required: true, message: '请输入', trigger: 'blur' }]
},
SexData: [{

View File

@@ -304,7 +304,7 @@
{{ scope.row.订单备注 }}
</template>
</el-table-column>
<el-table-column width="120px" label="操作" align="center" fixed="right">
<el-table-column width="180px" label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button type="text" icon="el-icon-edit" size="mini" @click="editProduct(scope.row)">编辑
</el-button>
@@ -315,6 +315,12 @@
size="mini"
@click="getNum(scope.row)">图纸
</el-button>
<el-button
type="text"
icon="el-icon-data-line"
size="mini"
@click="showHistoryPrice(scope.row)">历史单价
</el-button>
</template>
</el-table-column>
</el-table>
@@ -525,6 +531,36 @@
</div>
</div>
</el-dialog>
<el-dialog
v-el-drag-dialog
:visible.sync="historyPriceVisible"
title="历史单价"
center
width="900px">
<el-table :data="historyPriceList" border size="small" style="width: 100%" max-height="400">
<el-table-column type="index" width="50" label="序号" align="center"/>
<el-table-column label="采购合同号" align="center" prop="合同号" show-overflow-tooltip/>
<el-table-column label="采购件" align="center" prop="采购件" show-overflow-tooltip/>
<el-table-column label="采购日期" align="center" prop="采购日期"/>
<el-table-column label="单价(元)" align="center" prop="单价">
<template slot-scope="scope">
{{ scope.row.单价 ? Number(scope.row.单价).toFixed(2) : '' }}
</template>
</el-table-column>
<el-table-column label="供应商" align="center" prop="供应商" show-overflow-tooltip/>
</el-table>
<el-divider/>
<el-table :data="[historySummary]" border size="small" style="width: 100%">
<el-table-column label="当前采购件" align="center" prop="采购件"/>
<el-table-column label="当前图号型号" align="center" prop="图号或型号"/>
<el-table-column label="当前物料编码" align="center" prop="物料编码"/>
<el-table-column label="历史采购次数" align="center" prop="采购次数"/>
<el-table-column label="平均单价" align="center" prop="平均单价"/>
<el-table-column label="最低单价" align="center" prop="最低单价"/>
<el-table-column label="最高单价" align="center" prop="最高单价"/>
<el-table-column label="最近一次采购单价" align="center" prop="最近单价"/>
</el-table>
</el-dialog>
</div>
</template>
@@ -586,9 +622,21 @@ export default {
ProductionPick: [],
pageCurrent: 1, // 分页当前页
pageSize: 50, // 分页每页显示条数
orderName: '', // 排序列名
orderName: '',
purchaseContractSerialNumber: '',
order: '' // 排序方式
order: '',
historyPriceVisible: false,
historySummary: {
采购件: '',
图号或型号: '',
物料编码: '',
采购次数: '',
平均单价: '',
最低单价: '',
最高单价: '',
最近单价: ''
},
historyPriceList: []
}
},
computed: {
@@ -1238,20 +1286,45 @@ export default {
this.searchLeftTable()
},
getApproverName(approverId) {
// 调试打印people数组和approverId
// console.log('people数组:', this.people)
// console.log('approverId:', approverId, '类型:', typeof approverId)
// 尝试类型转换后比较
for (let i = 0; i < this.people.length; i++) {
// console.log('people[i].value:', this.people[i].value, '类型:', typeof this.people[i].value)
if (String(this.people[i].value) === String(approverId)) {
// console.log('找到匹配:', this.people[i].label)
return this.people[i].label
}
}
// console.log('未找到匹配,返回原始值:', approverId)
return approverId
},
showHistoryPrice(row) {
var param = []
param[0] = ['采购合同流水号', row.采购合同流水号]
param[1] = ['物料流水号', row.物料流水号]
var Data = this.CreateData('11', '采购管理_采购合同历史单价_查询', param)
this.ExecDatabase(Data).then(response => {
var list = response.data || []
if (list.length === 0) {
this.$message.warning('暂无历史单价数据')
return
}
this.historySummary = {
采购件: row.采购件 || '',
图号或型号: row.图号或型号 || '',
物料编码: row.物料编码 || '',
采购次数: list.length,
平均单价: '',
最低单价: '',
最高单价: '',
最近单价: ''
}
var prices = list.map(item => Number(item.单价)).filter(v => !isNaN(v))
if (prices.length > 0) {
var sum = prices.reduce(function(a, b) { return a + b }, 0)
this.historySummary.平均单价 = (sum / prices.length).toFixed(2)
this.historySummary.最低单价 = Math.min.apply(null, prices).toFixed(2)
this.historySummary.最高单价 = Math.max.apply(null, prices).toFixed(2)
this.historySummary.最近单价 = prices[prices.length - 1].toFixed(2)
}
this.historyPriceList = list
this.historyPriceVisible = true
})
}
}
}

View File

@@ -215,6 +215,16 @@
{{ scope.row.采购期限 }}
</template>
</el-table-column>
<el-table-column width="100px" label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button
type="text"
icon="el-icon-data-line"
size="mini"
@click="showHistoryPrice(scope.row)">历史单价
</el-button>
</template>
</el-table-column>
</el-table>
<div class="block" style="margin: 10px 0;">
<el-pagination
@@ -277,6 +287,36 @@
</el-table-column>
</el-table>
</el-dialog>
<el-dialog
v-el-drag-dialog
:visible.sync="historyPriceVisible"
title="历史单价"
center
width="900px">
<el-table :data="historyPriceList" border size="small" style="width: 100%" max-height="400">
<el-table-column type="index" width="50" label="序号" align="center"/>
<el-table-column label="采购合同号" align="center" prop="合同号" show-overflow-tooltip/>
<el-table-column label="采购件" align="center" prop="采购件" show-overflow-tooltip/>
<el-table-column label="采购日期" align="center" prop="采购日期"/>
<el-table-column label="单价(元)" align="center" prop="单价">
<template slot-scope="scope">
{{ scope.row.单价 ? Number(scope.row.单价).toFixed(2) : '' }}
</template>
</el-table-column>
<el-table-column label="供应商" align="center" prop="供应商" show-overflow-tooltip/>
</el-table>
<el-divider/>
<el-table :data="[historySummary]" border size="small" style="width: 100%">
<el-table-column label="当前采购件" align="center" prop="采购件"/>
<el-table-column label="当前图号型号" align="center" prop="图号或型号"/>
<el-table-column label="当前物料编码" align="center" prop="物料编码"/>
<el-table-column label="历史采购次数" align="center" prop="采购次数"/>
<el-table-column label="平均单价" align="center" prop="平均单价"/>
<el-table-column label="最低单价" align="center" prop="最低单价"/>
<el-table-column label="最高单价" align="center" prop="最高单价"/>
<el-table-column label="最近一次采购单价" align="center" prop="最近单价"/>
</el-table>
</el-dialog>
</div>
</template>
@@ -318,8 +358,20 @@ export default {
tableData: [], // 合同信息表
pageCurrent: 1, // 分页当前页
pageSize: 30, // 分页每页显示条数
orderName: '', // 排序列名
order: '' // 排序方式
orderName: '',
order: '',
historyPriceVisible: false,
historySummary: {
采购件: '',
图号或型号: '',
物料编码: '',
采购次数: '',
平均单价: '',
最低单价: '',
最高单价: '',
最近单价: ''
},
historyPriceList: []
}
},
computed: {
@@ -608,6 +660,39 @@ export default {
handleCurrentChanges(val) {
this.pageCurrent = val
this.searchTable()
},
showHistoryPrice(row) {
var param = []
param[0] = ['采购合同流水号', row.采购合同流水号]
param[1] = ['物料流水号', row.物料流水号]
var Data = this.CreateData('11', '采购管理_采购合同历史单价_查询', param)
this.ExecDatabase(Data).then(response => {
var list = response.data || []
if (list.length === 0) {
this.$message.warning('暂无历史单价数据')
return
}
this.historySummary = {
采购件: row.采购件 || '',
图号或型号: row.图号或型号 || '',
物料编码: row.物料编码 || '',
采购次数: list.length,
平均单价: '',
最低单价: '',
最高单价: '',
最近单价: ''
}
var prices = list.map(item => Number(item.单价)).filter(v => !isNaN(v))
if (prices.length > 0) {
var sum = prices.reduce(function(a, b) { return a + b }, 0)
this.historySummary.平均单价 = (sum / prices.length).toFixed(2)
this.historySummary.最低单价 = Math.min.apply(null, prices).toFixed(2)
this.historySummary.最高单价 = Math.max.apply(null, prices).toFixed(2)
this.historySummary.最近单价 = prices[prices.length - 1].toFixed(2)
}
this.historyPriceList = list
this.historyPriceVisible = true
})
}
}
}

View File

@@ -153,7 +153,7 @@
{{ scope.row.订单备注 }}
</template>
</el-table-column>
<el-table-column width="200px" label="操作" align="center" fixed="right">
<el-table-column width="260px" label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button
:disabled="scope.row.图纸 === null"
@@ -169,6 +169,12 @@
size="mini"
@click="updatePrice(scope.row)">更新单价
</el-button>
<el-button
type="text"
icon="el-icon-data-line"
size="mini"
@click="showHistoryPrice(scope.row)">历史单价
</el-button>
</template>
</el-table-column>
</el-table>
@@ -212,6 +218,36 @@
</div>
</div>
</el-dialog>
<el-dialog
v-el-drag-dialog
:visible.sync="historyPriceVisible"
title="历史单价"
center
width="900px">
<el-table :data="historyPriceList" border size="small" style="width: 100%" max-height="400">
<el-table-column type="index" width="50" label="序号" align="center"/>
<el-table-column label="采购合同号" align="center" prop="合同号" show-overflow-tooltip/>
<el-table-column label="采购件" align="center" prop="采购件" show-overflow-tooltip/>
<el-table-column label="采购日期" align="center" prop="采购日期"/>
<el-table-column label="单价(元)" align="center" prop="单价">
<template slot-scope="scope">
{{ scope.row.单价 ? Number(scope.row.单价).toFixed(2) : '' }}
</template>
</el-table-column>
<el-table-column label="供应商" align="center" prop="供应商" show-overflow-tooltip/>
</el-table>
<el-divider/>
<el-table :data="[historySummary]" border size="small" style="width: 100%">
<el-table-column label="当前采购件" align="center" prop="采购件"/>
<el-table-column label="当前图号型号" align="center" prop="图号或型号"/>
<el-table-column label="当前物料编码" align="center" prop="物料编码"/>
<el-table-column label="历史采购次数" align="center" prop="采购次数"/>
<el-table-column label="平均单价" align="center" prop="平均单价"/>
<el-table-column label="最低单价" align="center" prop="最低单价"/>
<el-table-column label="最高单价" align="center" prop="最高单价"/>
<el-table-column label="最近一次采购单价" align="center" prop="最近单价"/>
</el-table>
</el-dialog>
</el-card>
</div>
</template>
@@ -225,15 +261,27 @@ export default {
data() {
return {
hadFile: [],
loading: false, // 数据加载
dialogVisible: false, // 查看图片
dialogFormVisible: false, // 查看图片
urls: [], // 图片数组
total: 0, // 分页总数
tableData: [], // 合同信息表
tableData1: [], // 合同信息表
pageCurrent: 1, // 分页当前页
pageSize: 100 // 分页每页显示条数
loading: false,
dialogVisible: false,
dialogFormVisible: false,
urls: [],
total: 0,
tableData: [],
tableData1: [],
pageCurrent: 1,
pageSize: 100,
historyPriceVisible: false,
historySummary: {
采购件: '',
图号或型号: '',
物料编码: '',
采购次数: '',
平均单价: '',
最低单价: '',
最高单价: '',
最近单价: ''
},
historyPriceList: []
}
},
computed: {
@@ -404,6 +452,39 @@ export default {
}
})
},
showHistoryPrice(row) {
var param = []
param[0] = ['采购合同流水号', row.采购合同流水号]
param[1] = ['物料流水号',row.物料流水号]
var Data = this.CreateData('11', '采购管理_采购合同历史单价_查询', param)
this.ExecDatabase(Data).then(response => {
var list = response.data || []
if (list.length === 0) {
this.$message.warning('暂无历史单价数据')
return
}
this.historySummary = {
采购件: row.采购件 || '',
图号或型号: row.图号或型号 || '',
物料编码: row.物料编码 || '',
采购次数: list.length,
平均单价: '',
最低单价: '',
最高单价: '',
最近单价: ''
}
var prices = list.map(item => Number(item.单价)).filter(v => !isNaN(v))
if (prices.length > 0) {
var sum = prices.reduce(function(a, b) { return a + b }, 0)
this.historySummary.平均单价 = (sum / prices.length).toFixed(2)
this.historySummary.最低单价 = Math.min.apply(null, prices).toFixed(2)
this.historySummary.最高单价 = Math.max.apply(null, prices).toFixed(2)
this.historySummary.最近单价 = prices[prices.length - 1].toFixed(2)
}
this.historyPriceList = list
this.historyPriceVisible = true
})
},
getSummaries(param) {
const { columns, data } = param
const sums = []