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