From 754f4ccb397866d31bcfa71c3c8099539647a18b Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期五, 24 四月 2026 16:56:13 +0800
Subject: [PATCH] feat(设备保养/销售台账): 新增保养项目字段并统一数字格式显示

---
 src/pages/productionManagement/productionReport/index.vue |  167 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 133 insertions(+), 34 deletions(-)

diff --git a/src/pages/productionManagement/productionReport/index.vue b/src/pages/productionManagement/productionReport/index.vue
index dcd0fd7..ab29bc3 100644
--- a/src/pages/productionManagement/productionReport/index.vue
+++ b/src/pages/productionManagement/productionReport/index.vue
@@ -11,6 +11,31 @@
             error-message-align="right">
       <!-- 鍩烘湰淇℃伅 -->
       <view class="form-section">
+        <u-form-item label="鏈哄彴"
+                     prop="deviceName"
+                     required>
+          <u-input v-model="form.deviceName"
+          disabled
+                   placeholder="璇疯緭鍏ユ満鍙�" />
+        </u-form-item>
+        <u-form-item label="璁″垝寮�濮嬫椂闂�"
+                     prop="planStartTime"
+                     required>
+          <u-input v-model="form.planStartTime"
+                   placeholder="璇烽�夋嫨璁″垝寮�濮嬫椂闂�"
+                   readonly
+                   @click="showStartTimePicker = true"
+                   suffix-icon="calendar" />
+        </u-form-item>
+        <u-form-item label="璁″垝缁撴潫鏃堕棿"
+                     prop="planEndTime"
+                     required>
+          <u-input v-model="form.planEndTime"
+                   placeholder="璇烽�夋嫨璁″垝缁撴潫鏃堕棿"
+                   readonly
+                   @click="showEndTimePicker = true"
+                   suffix-icon="calendar" />
+        </u-form-item>
         <u-form-item label="寰呯敓浜ф暟閲�"
                      prop="planQuantity"
                      required>
@@ -31,13 +56,16 @@
                    placeholder="璇疯緭鍏�"
                    type="number" />
         </u-form-item>
-        <u-form-item label="鐝粍淇℃伅"
-                     prop="schedulingUserId"
+        <!-- 鐝粍淇℃伅鍜屽鏍镐汉 -->
+        <u-form-item v-for="(item, key) in pickerFields"
+                     :key="key"
+                     :label="item.label"
+                     :prop="key + '.name'"
                      required>
-          <u-input v-model="form.userName"
-                   placeholder="璇烽�夋嫨鐢熶骇浜�"
+          <u-input v-model="form[key].name"
+                   :placeholder="form[key].name ? '宸查�夋嫨: ' + form[key].name : '璇烽�夋嫨' + item.label"
                    readonly
-                   @click="openProducerPicker"
+                   @click="openProducerPicker(key)"
                    suffix-icon="arrow-down" />
         </u-form-item>
       </view>
@@ -54,6 +82,20 @@
                      title="閫夋嫨鐢熶骇浜�"
                      @select="onProducerConfirm"
                      @close="showProducerPicker = false" />
+
+    <!-- 寮�濮嬫椂闂撮�夋嫨鍣� -->
+    <up-datetime-picker :show="showStartTimePicker"
+                        v-model="startTimeValue"
+                        mode="datetime"
+                        @confirm="onStartTimeConfirm"
+                        @cancel="showStartTimePicker = false" />
+
+    <!-- 缁撴潫鏃堕棿閫夋嫨鍣� -->
+    <up-datetime-picker :show="showEndTimePicker"
+                        v-model="endTimeValue"
+                        mode="datetime"
+                        @confirm="onEndTimeConfirm"
+                        @cancel="showEndTimePicker = false" />
   </view>
 </template>
 
@@ -76,23 +118,38 @@
   const formRef = ref();
 
   // 琛ㄥ崟鏁版嵁
-  let form = ref({
+  const form = ref({
+    deviceName: "",
+    planStartTime: "",
+    planEndTime: "",
     planQuantity: "",
     quantity: "",
     scrapQty: "",
-    userName: "",
     workOrderId: "",
     productProcessRouteItemId: "",
-    userId: "",
-    schedulingUserId: "",
+    userId: { value: "", name: "" }, // 鐝粍淇℃伅
+    auditUserId: { value: "", name: "" }, // 瀹℃牳浜�
   });
+
+  // 杩欓噷鐨勫瓧娈甸厤缃敤浜庢ā鐗堝惊鐜�
+  const pickerFields = {
+    userId: { label: "鐝粍淇℃伅" },
+    auditUserId: { label: "瀹℃牳浜�" },
+  };
 
   // 鐢熶骇浜洪�夋嫨鍣ㄧ姸鎬�
   const showProducerPicker = ref(false);
+  // 鏃堕棿閫夋嫨鍣ㄧ姸鎬�
+  const showStartTimePicker = ref(false);
+  const showEndTimePicker = ref(false);
+  const startTimeValue = ref(Number(new Date()));
+  const endTimeValue = ref(Number(new Date()));
+
   const producerList = ref([]);
+  const currentField = ref(""); // 褰撳墠閫夋嫨鐨勫瓧娈�
 
   // 鎵撳紑鐢熶骇浜洪�夋嫨鍣�
-  const openProducerPicker = async () => {
+  const openProducerPicker = async (field) => {
     if (producerList.value.length === 0) {
       // 濡傛灉鍒楄〃涓虹┖锛屽厛鍔犺浇鐢ㄦ埛鍒楄〃
       try {
@@ -100,7 +157,7 @@
         const users = res.data || [];
         // 杞崲涓� action-sheet 闇�瑕佺殑鏍煎紡
         producerList.value = users.map(user => ({
-          name: user.nickName || user.userName,
+          name: user.nickName || "",
           value: user.userId,
         }));
       } catch (error) {
@@ -110,14 +167,40 @@
       }
     }
     showProducerPicker.value = true;
+    currentField.value = field; // 淇濆瓨褰撳墠瀛楁
   };
 
   // 鐢熶骇浜洪�夋嫨纭
   const onProducerConfirm = e => {
-    form.value.schedulingUserId = e.value;
-    form.value.userName = e.name;
-    form.value.userId = e.value; // 鍚屾椂鏇存柊 userId
+    if (currentField.value && form.value[currentField.value]) {
+      form.value[currentField.value].value = e.value;
+      form.value[currentField.value].name = e.name ;
+    }
     showProducerPicker.value = false;
+  };
+
+  // 鏍煎紡鍖栨棩鏈�
+  const formatDateTime = (timestamp) => {
+    const date = new Date(timestamp);
+    const y = date.getFullYear();
+    const m = (date.getMonth() + 1).toString().padStart(2, '0');
+    const d = date.getDate().toString().padStart(2, '0');
+    const h = date.getHours().toString().padStart(2, '0');
+    const min = date.getMinutes().toString().padStart(2, '0');
+    const s = date.getSeconds().toString().padStart(2, '0');
+    return `${y}-${m}-${d} ${h}:${min}:${s}`;
+  };
+
+  // 寮�濮嬫椂闂寸‘璁�
+  const onStartTimeConfirm = (e) => {
+    form.value.planStartTime = formatDateTime(e.value);
+    showStartTimePicker.value = false;
+  };
+
+  // 缁撴潫鏃堕棿纭
+  const onEndTimeConfirm = (e) => {
+    form.value.planEndTime = formatDateTime(e.value);
+    showEndTimePicker.value = false;
   };
 
   // 鎻愪氦鐘舵��
@@ -131,14 +214,34 @@
   const submitForm = async () => {
     submitting.value = true;
     // 鏍¢獙琛ㄥ崟
+    if (!form.value.deviceName) {
+      submitting.value = false;
+      showToast("璇疯緭鍏ユ満鍙�");
+      return;
+    }
+    if (!form.value.planStartTime) {
+      submitting.value = false;
+      showToast("璇烽�夋嫨璁″垝寮�濮嬫椂闂�");
+      return;
+    }
+    if (!form.value.planEndTime) {
+      submitting.value = false;
+      showToast("璇烽�夋嫨璁″垝缁撴潫鏃堕棿");
+      return;
+    }
     if (!form.value.quantity) {
       submitting.value = false;
       showToast("璇疯緭鍏ユ湰娆$敓浜ф暟閲�");
       return;
     }
-    if (!form.value.schedulingUserId) {
+    if (!form.value.userId.value) {
       submitting.value = false;
-      showToast("璇烽�夋嫨鐢熶骇浜�");
+      showToast("璇烽�夋嫨鐝粍淇℃伅");
+      return;
+    }
+    if (!form.value.auditUserId.value) {
+      submitting.value = false;
+      showToast("璇烽�夋嫨瀹℃牳浜�");
       return;
     }
     // 杞崲涓烘暟瀛楄繘琛屾瘮杈�
@@ -162,6 +265,10 @@
       quantity: Number(form.value.quantity),
       scrapQty: Number(form.value.scrapQty) || 0,
       planQuantity: Number(form.value.planQuantity) || 0,
+      userId: form.value.userId.value,
+      auditUserId: form.value.auditUserId.value,
+      auditUserName: form.value.auditUserId.name,
+      schedulingUserId: form.value.userId.value, // 鍏煎鏃у瓧娈�
     };
     console.log(submitData, "submitData");
 
@@ -176,36 +283,28 @@
         showToast(res.msg || "鎶ュ伐澶辫触");
         submitting.value = false;
       }
-    });
+    }).catch(err => {
+      submitting.value = false;
+    })
+    ;
   };
 
   // 椤甸潰鍔犺浇鏃跺垵濮嬪寲鏁版嵁
   onLoad(options => {
-    console.log(options, "options");
-    // 濡傛灉娌℃湁 orderRow 鍙傛暟锛岃鏄庢槸浠庨椤电洿鎺ヨ烦杞紝闇�瑕佺敤鎴锋墜鍔ㄩ�夋嫨璁㈠崟
-    if (!options.orderRow) {
-      console.log("浠庨椤佃烦杞紝鏃犺鍗曟暟鎹�");
-      getInfo().then(res => {
-        // 榛樿浣跨敤褰撳墠鐧诲綍鐢ㄦ埛
-        form.value.userId = res.user.userId;
-        form.value.userName = res.user.userName;
-        form.value.schedulingUserId = res.user.userId;
-      });
-      return;
-    }
     try {
       const orderRow = JSON.parse(options.orderRow);
-      console.log("鏋勯�犵殑orderRow:", orderRow);
-      console.log(orderRow, "orderRow======########");
+      console.log(orderRow, "orderRow");
       // 纭繚 planQuantity 杞崲涓哄瓧绗︿覆锛屼互渚垮湪 u-input 涓纭樉绀�
       form.value.planQuantity = orderRow.planQuantity != null ? String(orderRow.planQuantity) : "";
       form.value.productProcessRouteItemId = orderRow.productProcessRouteItemId || "";
       form.value.workOrderId = orderRow.id || "";
+      form.value.deviceName = orderRow.deviceName || "";
+      form.value.planStartTime = orderRow.planStartTime || "";
+      form.value.planEndTime = orderRow.planEndTime || "";
       getInfo().then(res => {
         // 榛樿浣跨敤褰撳墠鐧诲綍鐢ㄦ埛锛屼絾鍏佽鐢ㄦ埛淇敼
-        form.value.userId = res.user.userId;
-        form.value.userName = res.user.userName;
-        form.value.schedulingUserId = res.user.userId;
+        form.value.userId.value = res.user.userId;
+        form.value.userId.name = res.user.nickName;
       });
       // 浣跨敤 nextTick 纭繚 DOM 鏇存柊
       nextTick(() => {

--
Gitblit v1.9.3