更新销售合同/提成/业绩、精工工序工价/生产审核/工时统计、仓储盘点/库存/补货/入库/库房管理,新增提成设置/销售业绩/库房管理/入库单移动端等模块及SQL脚本

This commit is contained in:
Developer
2026-08-05 08:13:08 +08:00
parent 33549c3787
commit fd84f9d3ca
94 changed files with 14531 additions and 345 deletions

View File

@@ -23,6 +23,8 @@
<el-input v-model="queryForm.零件名称" clearable size="small" style="width: 150px" placeholder="零件名称" @keyup.enter.native="pageCurrent = 1;searchTable()" />
<el-input v-model="queryForm.图号" clearable size="small" style="width: 150px" placeholder="图号" @keyup.enter.native="pageCurrent = 1;searchTable()" />
<el-button icon="el-icon-search" type="primary" plain size="small" style="margin-left: 10px" @click="pageCurrent = 1;searchTable()">查询</el-button>
<!-- 修改人:Ld 修改时间:2026-08-03 14:24:48; 工序工价按当前查询条件导出测试库新增的导出过程数据 -->
<el-button type="success" plain icon="el-icon-download" size="small" @click="exportExcel()">导出</el-button>
<el-button :disabled="!queryForm.工艺计划流水号 || tableData.length === 0" icon="el-icon-collection" type="success" plain size="small" @click="handleSaveSource()">保存</el-button>
<el-button :disabled="!queryForm.工艺计划流水号" icon="el-icon-document-copy" type="warning" plain size="small" @click="openCopyDialog()">拷贝</el-button>
<el-tag v-if="savedSourceInfo" size="small" type="success" style="margin-left: 6px" closable @close="savedSourceInfo = null">已保存: {{ savedSourceInfo.零件名称 }}</el-tag>
@@ -92,7 +94,7 @@
</el-table-column>
<el-table-column label="总时间s" align="center" width="90">
<template slot-scope="scope">
{{ scope.row.总时间s }}
{{ getTotalTime(scope.row) }}
</template>
</el-table-column>
<el-table-column label="单装数量(件)" align="center" width="110">
@@ -165,7 +167,8 @@
<!-- 修改人:Ld 修改时间:2026-07-02 15:33:23 -->
<!-- 工价设置弹窗 -->
<el-dialog v-el-drag-dialog :visible.sync="dialogFormVisible" :title="dialogTitle" center width="960px">
<el-form ref="form" :model="form" :rules="rules" label-position="left" label-width="100px">
<!-- 修改人:Ld 修改时间:2026-08-04 09:39:18; 工价公式字段名称较长放大标签宽度避免遮挡输入框 -->
<el-form ref="form" :model="form" :rules="rules" label-position="left" label-width="130px">
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="工艺名称" prop="工艺名称">
@@ -190,22 +193,22 @@
</el-form-item>
</el-col>
</el-row>
<!-- 修改人:Ld 修改时间:2026-07-03 08:02:29 -->
<!-- 按现场确认的 9 个工价字段维护 -->
<!-- 修改人:Ld 修改时间:2026-08-04 09:39:18; 设置弹窗补齐截图公式字段计算字段随输入自动联动 -->
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="机动时间s" prop="机动时间s">
<el-input-number v-model="form.机动时间s" :min="0" :precision="2" :step="1" controls-position="right" style="width: 100%;" />
<el-form-item label="机动时间(秒)" prop="机动时间s">
<el-input-number v-model="form.机动时间s" :min="0" :precision="2" :step="1" controls-position="right" style="width: 100%;" @change="refreshTotalTime()" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="辅助时间s" prop="辅助时间s">
<el-input-number v-model="form.辅助时间s" :min="0" :precision="2" :step="1" controls-position="right" style="width: 100%;" />
<el-form-item label="辅助时间(秒)" prop="辅助时间s">
<el-input-number v-model="form.辅助时间s" :min="0" :precision="2" :step="1" controls-position="right" style="width: 100%;" @change="refreshTotalTime()" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="总时间s" prop="总时间s">
<el-input-number v-model="form.总时间s" :min="0" :precision="2" :step="1" controls-position="right" style="width: 100%;" />
<el-form-item label="总时间(秒)" prop="总时间s">
<!-- 修改人:Ld 修改时间:2026-08-03 14:40:10; 总时间由机动时间和辅助时间自动相加不允许手工改写 -->
<el-input-number v-model="form.总时间s" :min="0" :precision="2" :step="1" controls-position="right" disabled style="width: 100%;" />
</el-form-item>
</el-col>
</el-row>
@@ -216,36 +219,52 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="操作台数" prop="操作台数">
<el-form-item label="操作台数(台/人)" prop="操作台数">
<el-input-number v-model="form.操作台数" :min="0" :precision="2" :step="1" controls-position="right" style="width: 100%;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="日产能(件)" prop="日产能(件)">
<el-input-number v-model="form['日产能(件)']" :min="0" :precision="2" :step="1" controls-position="right" style="width: 100%;" />
<el-form-item label="工作时间(时)" prop="工作时间(时)">
<el-input-number v-model="form['工作时间(时)']" :min="0" :precision="2" :step="0.5" controls-position="right" style="width: 100%;" @change="refreshPriceFormula()" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="最终单价" prop="最终单价(元/件)">
<!-- 修改人:Ld 修改时间:2026-07-06 09:23:45; 最终单价输入框仅保留两位小数显示 -->
<el-input-number v-model="form['最终单价(元/件)']" :min="0" :precision="2" :step="0.1" controls-position="right" style="width: 100%;" />
<el-col :span="8">
<el-form-item label="宽放时间(时)" prop="宽放时间(时)">
<el-input-number v-model="form['宽放时间(时)']" :min="0" :precision="2" :step="0.5" controls-position="right" style="width: 100%;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item label="日工资(元)" prop="日工资(元)">
<el-input-number v-model="form['日工资(元)']" :min="0" :precision="2" :step="1" controls-position="right" style="width: 100%;" @change="refreshPriceFormula()" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="标准产能(件/天)" prop="标准产能(件/天)">
<el-input-number v-model="form['标准产能(件/天)']" :min="0" :precision="2" :step="1" controls-position="right" disabled style="width: 100%;" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="工价定额" prop="工价定额">
<el-input-number v-model="form.工价定额" :min="0" :precision="2" :step="0.1" controls-position="right" disabled style="width: 100%;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="生效日期" prop="生效日期">
<el-date-picker v-model="form.生效日期" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd" clearable size="small" placeholder="选择生效日期" style="width: 100%;" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-col :span="8">
<el-form-item label="变更次数" prop="变更次数">
<el-input-number v-model="form.变更次数" :min="0" :precision="0" :step="1" controls-position="right" style="width: 100%;" />
</el-form-item>
</el-col>
<el-col :span="12">
</el-row>
<el-row :gutter="16">
<el-col :span="24">
<el-form-item label="启用状态" prop="是否启用">
<el-select v-model="form.是否启用" clearable filterable size="small" style="width: 100%;" placeholder="请选择启用状态">
<el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value" />
@@ -428,6 +447,11 @@ export default {
总时间s: 0,
'单装数量(件)': 0,
操作台数: 0,
'工作时间(时)': 0,
'宽放时间(时)': 0,
'日工资(元)': 0,
'标准产能(件/天)': 0,
工价定额: 0,
'日产能(件)': 0,
'最终单价(元/件)': 0,
生效日期: '',
@@ -462,6 +486,34 @@ export default {
this.searchTable()
},
methods: {
// 修改人:Ld 修改时间:2026-08-03 14:40:10; 总时间统一按机动时间加辅助时间计算
getTotalTime(row) {
var total = Number(row.机动时间s || 0) + Number(row.辅助时间s || 0)
return Number(total.toFixed(2))
},
// 修改人:Ld 修改时间:2026-08-03 14:40:10; 编辑弹窗中保持总时间自动等于机动时间加辅助时间
refreshTotalTime() {
if (!this.form) {
return
}
this.form.总时间s = this.getTotalTime(this.form)
this.refreshPriceFormula()
},
// 修改人:Ld 修改时间:2026-08-04 09:39:18; 按截图公式计算标准产能和工价定额,并同步旧字段兼容后端编辑过程
refreshPriceFormula() {
if (!this.form) {
return
}
var totalTime = Number(this.form.总时间s || 0)
var workTime = Number(this.form['工作时间(时)'] || 0)
var dayWage = Number(this.form['日工资(元)'] || 0)
var capacity = totalTime === 0 ? 0 : workTime * 3600 / totalTime
var priceQuota = capacity === 0 ? 0 : dayWage / capacity
this.form['标准产能(件/天)'] = Number(capacity.toFixed(4))
this.form.工价定额 = Number(priceQuota.toFixed(4))
this.form['日产能(件)'] = this.form['标准产能(件/天)']
this.form['最终单价(元/件)'] = this.form.工价定额
},
// 修改人:Ld 修改时间:2026-07-17 16:30:55; 统一处理工时统计跳转参数,避免再次跳转时保留上一次查询条件
applyJumpQuery(query) {
if (!query || (!query.订单号 && !query.零件名称 && !query.图号 && !query.工序名称)) {
@@ -593,10 +645,8 @@ export default {
}
})
},
// 修改人:Ld 修改时间:2026-07-06 08:36:02
// 查询列表
searchTable() {
this.loading = true
// 修改人:Ld 修改时间:2026-08-03 14:24:48; 查询和导出共用参数,保持筛选口径一致
buildQueryParam() {
var param = []
param[0] = ['订单流水号', this.queryForm.订单流水号]
param[1] = ['订单流水号_check', this.queryForm.订单流水号 ? 1 : 0]
@@ -615,6 +665,13 @@ export default {
// 修改人:Ld 修改时间:2026-07-17 08:44:08; 工时统计跳转后按图号精确查询,避免同名零件匹配过宽
param[14] = ['图号', this.queryForm.图号]
param[15] = ['图号_check', this.queryForm.图号 ? 1 : 0]
return param
},
// 修改人:Ld 修改时间:2026-07-06 08:36:02
// 查询列表
searchTable() {
this.loading = true
var param = this.buildQueryParam()
var Data = this.CreateData('11', '车间生产管理工艺_工序工价_查询数据', param, this.pageSize, this.pageCurrent)
this.ExecDatabase(Data).then(response => {
this.tableData = response.data && response.data.rows ? response.data.rows : response.data
@@ -624,6 +681,11 @@ export default {
this.loading = false
})
},
// 修改人:Ld 修改时间:2026-08-03 14:24:48; 调用测试库工序工价导出过程,导出当前查询条件下的全部数据
exportExcel() {
var Data = this.CreateData('2001', '车间生产管理工艺_工序工价_导出表格_查询', this.buildQueryParam())
this.exportExcel_NPOI(Data)
},
// 修改人:Ld 修改时间:2026-07-08; 保存当前零件的工价信息,供拷贝时直接使用
handleSaveSource() {
if (!this.queryForm.工艺计划流水号 || !this.tableData || this.tableData.length === 0) {
@@ -762,17 +824,23 @@ export default {
图号: row.图号,
机动时间s: Number(row.机动时间s || 0),
辅助时间s: Number(row.辅助时间s || 0),
总时间s: Number(row.总时间s || 0),
总时间s: this.getTotalTime(row),
'单装数量(件)': Number(row['单装数量(件)'] || 0),
操作台数: Number(row.操作台数 || 0),
'日产能(件)': Number(row['日产能(件)'] || 0),
'最终单价(元/件)': Number(row['最终单价(元/件)'] || 0),
'工作时间(时)': Number(row['工作时间(时)'] || 0),
'宽放时间(时)': Number(row['宽放时间(时)'] || 0),
'日工资(元)': Number(row['日工资(元)'] || 0),
'标准产能(件/天)': Number(row['标准产能(件/天)'] || row['日产能(件)'] || 0),
工价定额: Number(row.工价定额 || row['最终单价(元/件)'] || 0),
'日产能(件)': Number(row['标准产能(件/天)'] || row['日产能(件)'] || 0),
'最终单价(元/件)': Number(row.工价定额 || row['最终单价(元/件)'] || 0),
生效日期: row.生效日期,
变更次数: Number(row.变更次数 || 0),
是否启用: row.是否启用 === '' || row.是否启用 === null || typeof row.是否启用 === 'undefined' ? 1 : Number(row.是否启用),
备注: row.备注,
工序流水号: row.工序流水号
}
this.refreshPriceFormula()
},
// 修改人:Ld 修改时间:2026-07-02 15:33:23
// 提交新增或编辑
@@ -781,6 +849,8 @@ export default {
if (!valid) {
return false
}
this.refreshTotalTime()
this.refreshPriceFormula()
var param = []
param[0] = ['工价流水号', this.form.工价流水号]
param[1] = ['工艺名称', this.form.工艺名称]
@@ -789,7 +859,7 @@ export default {
param[4] = ['图号', this.form.图号]
param[5] = ['机动时间s', this.form.机动时间s]
param[6] = ['辅助时间s', this.form.辅助时间s]
param[7] = ['总时间s', this.form.总时间s]
param[7] = ['总时间s', this.getTotalTime(this.form)]
// 修改人:Ld 修改时间:2026-07-03 08:02:29
// 带括号字段提交给存储过程时使用安全参数名,查询返回仍保持原字段名
param[8] = ['单装数量件', this.form['单装数量(件)']]
@@ -831,6 +901,11 @@ export default {
总时间s: 0,
'单装数量(件)': 0,
操作台数: 0,
'工作时间(时)': 0,
'宽放时间(时)': 0,
'日工资(元)': 0,
'标准产能(件/天)': 0,
工价定额: 0,
'日产能(件)': 0,
'最终单价(元/件)': 0,
生效日期: '',