From e1570f458b2ab42bb1a212be8de63134a50b2af1 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 30 七月 2026 16:09:03 +0800
Subject: [PATCH] 生产核算增加折算工时,隐藏工资
---
src/views/productionManagement/productionProcess/index.vue | 169 +++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 149 insertions(+), 20 deletions(-)
diff --git a/src/views/productionManagement/productionProcess/index.vue b/src/views/productionManagement/productionProcess/index.vue
index 6d007a4..9b1ae12 100644
--- a/src/views/productionManagement/productionProcess/index.vue
+++ b/src/views/productionManagement/productionProcess/index.vue
@@ -44,7 +44,9 @@
<div class="card-body">
<!-- <div class="process-name">{{ process.name }}</div> -->
<div class="process-desc">{{ process.remark || '鏆傛棤鎻忚堪' }}</div>
- <div class="process-device">鍏宠仈璁惧: {{ deviceOptions.find(item => item.id === Number(process.deviceLedgerId))?.deviceName|| '鏈叧鑱�' }}</div>
+ <div class="process-device">鍏宠仈璁惧: {{ (deviceOptions.find(item => item.id === Number(process.deviceLedgerId))?.deviceName) || '鏈叧鑱�' }}</div>
+ <div class="process-device">鏍囧噯鏁伴噺: {{ process.standardQuantity || 0 }}</div>
+ <div class="process-device"></div>
</div>
<div class="card-footer">
<div class="status-tag">
@@ -59,12 +61,12 @@
</el-tag>
<el-tag v-if="process.type !== null && process.type !== undefined"
size="small"
- :type="process.type == 1 ? 'primary' : 'success'"
+ type="primary"
style="margin-left: 8px">
- {{ process.type == 0 ? '璁℃椂' : '璁′欢' }}
+ 璁′欢
</el-tag>
</div>
- <span class="param-count">宸ヨ祫瀹氶: 楼{{ process.salaryQuota || 0 }}</span>
+ <span class="param-count"></span>
</div>
</div>
</div>
@@ -118,11 +120,33 @@
<el-input v-model="processForm.name"
placeholder="璇疯緭鍏ュ伐搴忓悕绉�" />
</el-form-item>
- <el-form-item label="宸ヨ祫瀹氶"
- prop="salaryQuota">
- <el-input v-model="processForm.salaryQuota"
+ <el-form-item label="鏍囧噯鏁伴噺"
+ prop="standardQuantity">
+ <el-input v-model="processForm.standardQuantity"
type="number"
- :step="0.001" />
+ :step="0.001"
+ placeholder="璇疯緭鍏ュ伐搴忔爣鍑嗘暟閲�" />
+ </el-form-item>
+ <el-form-item label="灏忔彁鐞寸郴鏁�"
+ prop="violinFactor">
+ <el-input v-model="processForm.violinFactor"
+ type="number"
+ :step="0.001"
+ placeholder="璇疯緭鍏ュ皬鎻愮惔绯绘暟" />
+ </el-form-item>
+ <el-form-item label="澶ф彁鐞寸郴鏁�"
+ prop="violaFactor">
+ <el-input v-model="processForm.violaFactor"
+ type="number"
+ :step="0.001"
+ placeholder="璇疯緭鍏ュぇ鎻愮惔绯绘暟" />
+ </el-form-item>
+ <el-form-item label="璐濇柉绯绘暟"
+ prop="bassFactor">
+ <el-input v-model="processForm.bassFactor"
+ type="number"
+ :step="0.001"
+ placeholder="璇疯緭鍏ヨ礉鏂郴鏁�" />
</el-form-item>
<el-form-item label="鏄惁璐ㄦ"
prop="isQuality">
@@ -134,10 +158,12 @@
</el-form-item>
<el-form-item label="璁¤垂绫诲瀷"
prop="type">
- <el-radio-group v-model="processForm.type">
- <el-radio :label="0">璁℃椂</el-radio>
+ <el-radio-group v-model="processForm.type" disabled>
<el-radio :label="1">璁′欢</el-radio>
</el-radio-group>
+ <div style="margin-top: 6px; color: #909399; font-size: 12px;">
+ 宸ュ簭浠呮敮鎸佽浠�
+ </div>
</el-form-item>
<el-form-item label="鍏宠仈璁惧"
prop="deviceLedgerId">
@@ -243,6 +269,7 @@
</el-form-item>
<el-form-item label="鏍囧噯鍊�">
<el-input v-model="selectedParam.standardValue"
+ @input="val => onStandardValueInput(val, selectedParam)"
placeholder="璇疯緭鍏ラ粯璁ゅ��" />
</el-form-item>
</el-form>
@@ -273,6 +300,7 @@
<el-form-item label="鏍囧噯鍊�"
prop="standardValue">
<el-input v-model="editParamForm.standardValue"
+ @input="val => onStandardValueInput(val, editParamForm)"
placeholder="璇疯緭鍏ユ爣鍑嗗��" />
</el-form-item>
</el-form>
@@ -339,24 +367,85 @@
id: null,
no: "",
name: "",
- salaryQuota: null,
+ standardQuantity: null,
+ violinFactor: null,
+ violaFactor: null,
+ bassFactor: null,
isQuality: false,
isProduction: false,
remark: "",
deviceLedgerId: null,
- type: 0,
+ type: 1,
});
const processRules = {
no: [{ required: true, message: "璇疯緭鍏ュ伐搴忕紪鐮�", trigger: "blur" }],
name: [{ required: true, message: "璇疯緭鍏ュ伐搴忓悕绉�", trigger: "blur" }],
- salaryQuota: [
+ standardQuantity: [
{
required: false,
- message: "璇疯緭鍏ュ伐璧勫畾棰�",
+ message: "璇疯緭鍏ユ爣鍑嗘暟閲�",
trigger: "blur",
validator: (rule, value, callback) => {
+ if (value == null || value === "") {
+ callback();
+ return;
+ }
if (isNaN(value) || value < 0) {
- callback(new Error("宸ヨ祫瀹氶蹇呴』鏄潪璐熸暟瀛�"));
+ callback(new Error("鏍囧噯鏁伴噺蹇呴』鏄潪璐熸暟瀛�"));
+ } else {
+ callback();
+ }
+ },
+ },
+ ],
+ violinFactor: [
+ {
+ required: false,
+ message: "璇疯緭鍏ュ皬鎻愮惔绯绘暟",
+ trigger: "blur",
+ validator: (rule, value, callback) => {
+ if (value == null || value === "") {
+ callback();
+ return;
+ }
+ if (isNaN(value) || value < 0) {
+ callback(new Error("灏忔彁鐞寸郴鏁板繀椤绘槸闈炶礋鏁板瓧"));
+ } else {
+ callback();
+ }
+ },
+ },
+ ],
+ violaFactor: [
+ {
+ required: false,
+ message: "璇疯緭鍏ュぇ鎻愮惔绯绘暟",
+ trigger: "blur",
+ validator: (rule, value, callback) => {
+ if (value == null || value === "") {
+ callback();
+ return;
+ }
+ if (isNaN(value) || value < 0) {
+ callback(new Error("澶ф彁鐞寸郴鏁板繀椤绘槸闈炶礋鏁板瓧"));
+ } else {
+ callback();
+ }
+ },
+ },
+ ],
+ bassFactor: [
+ {
+ required: false,
+ message: "璇疯緭鍏ヨ礉鏂郴鏁�",
+ trigger: "blur",
+ validator: (rule, value, callback) => {
+ if (value == null || value === "") {
+ callback();
+ return;
+ }
+ if (isNaN(value) || value < 0) {
+ callback(new Error("璐濇柉绯绘暟蹇呴』鏄潪璐熸暟瀛�"));
} else {
callback();
}
@@ -366,7 +455,20 @@
deviceLedgerId: [
{ required: false, message: "璇烽�夋嫨璁惧", trigger: "change" },
],
- type: [{ required: false, message: "璇烽�夋嫨璁¤垂绫诲瀷", trigger: "change" }],
+ type: [
+ {
+ required: true,
+ message: "宸ュ簭浠呮敮鎸佽浠�",
+ trigger: "change",
+ validator: (rule, value, callback) => {
+ if (value !== 1) {
+ callback(new Error("宸ュ簭浠呮敮鎸佽浠�"));
+ } else {
+ callback();
+ }
+ },
+ },
+ ],
};
// 鍙傛暟瀵硅瘽妗�
@@ -392,7 +494,18 @@
technologyParamId: null,
paramName: "",
standardValue: null,
+ paramType: null,
});
+
+ const onStandardValueInput = (val, target) => {
+ const data = target.value || target;
+ const type = data.paramType;
+ if (type === 1) {
+ // 鏁板�兼牸寮忥細涓嶈兘杈撳叆涓枃鎴栬嫳鏂囧瓧绗�
+ data.standardValue = val.replace(/[a-zA-Z\u4e00-\u9fa5]/g, "");
+ }
+ };
+
const editParamRules = {
standardValue: [
{
@@ -403,6 +516,12 @@
if (value === null || value === undefined || value === "") {
callback(new Error("璇疯緭鍏ユ爣鍑嗗��"));
} else {
+ const type = editParamForm.paramType;
+ if (type === 1 && value) {
+ if (/[a-zA-Z\u4e00-\u9fa5]/.test(value)) {
+ return callback(new Error("鏁板�兼牸寮忎笉鑳藉寘鍚腑鑻辨枃瀛楃"));
+ }
+ }
callback();
}
},
@@ -533,12 +652,15 @@
processForm.id = null;
processForm.no = "";
processForm.name = "";
- processForm.salaryQuota = null;
+ processForm.standardQuantity = null;
+ processForm.violinFactor = null;
+ processForm.violaFactor = null;
+ processForm.bassFactor = null;
processForm.isQuality = false;
processForm.isProduction = false;
processForm.remark = "";
processForm.deviceLedgerId = null;
- processForm.type = 0;
+ processForm.type = 1;
processDialogVisible.value = true;
};
@@ -547,11 +669,17 @@
processForm.id = process.id;
processForm.no = process.no;
processForm.name = process.name;
- processForm.salaryQuota = process.salaryQuota;
+ processForm.standardQuantity = process.standardQuantity;
+ processForm.violinFactor = process.violinFactor;
+ processForm.violaFactor = process.violaFactor;
+ processForm.bassFactor = process.bassFactor;
processForm.isQuality = !!process.isQuality;
processForm.isProduction = !!process.isProduction;
processForm.remark = process.remark || "";
- processForm.deviceLedgerId = Number(process.deviceLedgerId);
+ // 濡傛灉璁惧 ID 涓� 0 鎴栬�呭湪璁惧鍒楄〃涓壘涓嶅埌锛屽垯鍥炴樉涓虹┖锛坣ull锛�
+ const deviceId = Number(process.deviceLedgerId);
+ const hasDevice = deviceOptions.value.some(item => item.id === deviceId);
+ processForm.deviceLedgerId = deviceId && hasDevice ? deviceId : null;
processForm.type = process.type;
processDialogVisible.value = true;
};
@@ -717,6 +845,7 @@
editParamForm.technologyParamId = row.technologyParamId;
editParamForm.paramName = row.paramName;
editParamForm.standardValue = row.standardValue;
+ editParamForm.paramType = row.paramType;
editParamDialogVisible.value = true;
};
--
Gitblit v1.9.3