From 54a96b9f4eb652e3588640e60d3ce71c32a56a79 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 02 四月 2026 15:02:56 +0800
Subject: [PATCH] Merge branch 'dev_HYSN' of http://114.132.189.42:9002/r/product-inventory-management into dev_HYSN

---
 src/views/equipmentManagement/ledger/Form.vue |  336 ++++++++++++++++++++++++-------------------------------
 1 files changed, 146 insertions(+), 190 deletions(-)

diff --git a/src/views/equipmentManagement/ledger/Form.vue b/src/views/equipmentManagement/ledger/Form.vue
index d14f4ff..063645d 100644
--- a/src/views/equipmentManagement/ledger/Form.vue
+++ b/src/views/equipmentManagement/ledger/Form.vue
@@ -1,100 +1,74 @@
 <template>
-  <el-form :model="form" label-width="100px" :rules="formRules" ref="formRef">
+  <el-form :model="form"
+           label-width="100px"
+           :rules="formRules"
+           ref="formRef">
     <el-row :gutter="20">
       <el-col :span="12">
-        <el-form-item label="璁惧鍚嶇О" prop="deviceName">
-          <el-input v-model="form.deviceName" placeholder="璇疯緭鍏ヨ澶囧悕绉�" />
+        <el-form-item label="璁惧鍚嶇О"
+                      prop="deviceName">
+          <el-input v-model="form.deviceName"
+                    placeholder="璇疯緭鍏ヨ澶囧悕绉�" />
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="瑙勬牸鍨嬪彿" prop="deviceModel">
-          <el-input v-model="form.deviceModel" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" />
+        <el-form-item label="瑙勬牸鍨嬪彿"
+                      prop="deviceModel">
+          <el-input v-model="form.deviceModel"
+                    placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" />
         </el-form-item>
       </el-col>
-      <el-col :span="12">
+      <!-- <el-col :span="12">
         <el-form-item label="璁惧鍝佺墝" prop="deviceBrand">
           <el-input v-model="form.deviceBrand" placeholder="璇疯緭鍏ヨ澶囧搧鐗�" />
         </el-form-item>
-      </el-col>
+      </el-col> -->
       <el-col :span="12">
-        <el-form-item label="渚涘簲鍟�" prop="supplierName">
-          <el-input v-model="form.supplierName" placeholder="璇疯緭鍏ヤ緵搴斿晢" />
+        <el-form-item label="渚涘簲鍟�"
+                      prop="supplierName">
+          <el-input v-model="form.supplierName"
+                    placeholder="璇疯緭鍏ヤ緵搴斿晢" />
         </el-form-item>
       </el-col>
-      <el-col :span="12">
+      <!-- <el-col :span="12">
         <el-form-item label="瀛樻斁浣嶇疆" prop="storageLocation">
           <el-input v-model="form.storageLocation" placeholder="璇疯緭鍏ュ瓨鏀句綅缃�" />
         </el-form-item>
-      </el-col>
+      </el-col> -->
       <el-col :span="12">
-        <el-form-item label="鍗曚綅" prop="unit">
-          <el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" />
+        <el-form-item label="鍗曚綅"
+                      prop="unit">
+          <el-input v-model="form.unit"
+                    placeholder="璇疯緭鍏ュ崟浣�" />
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="鍚敤鎶樻棫" prop="enableDepreciation">
-          <el-switch v-model="form.enableDepreciation" :active-value="true" :inactive-value="false" />
+        <el-form-item label="鏁伴噺"
+                      prop="number">
+          <el-input-number :min="1"
+                           style="width: 100%"
+                           v-model="form.number"
+                           disabled
+                           placeholder="璇疯緭鍏ユ暟閲�" />
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="鏁伴噺" prop="number">
-          <el-input-number :min="1" style="width: 100%"
-            v-model="form.number"
-													 disabled
-            placeholder="璇疯緭鍏ユ暟閲�"
-            @change="mathNum"
-          />
+        <el-form-item label="璧勪骇鍘熷��"
+                      prop="taxIncludingPriceUnit">
+          <el-input-number :min="0"
+                           style="width: 100%"
+                           :precision="2"
+                           v-model="form.taxIncludingPriceUnit"
+                           placeholder="璇疯緭鍏ヨ祫浜у師鍊�"
+                           maxlength="10" />
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="鍚◣鍗曚环" prop="taxIncludingPriceUnit">
-          <el-input-number :step="0.01" :min="0" style="width: 100%"
-            v-model="form.taxIncludingPriceUnit"
-            placeholder="璇疯緭鍏ュ惈绋庡崟浠�"
-            maxlength="10"
-            @change="mathNum"
-          />
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="鍚◣鎬讳环" prop="taxIncludingPriceTotal">
-          <el-input
-            v-model="form.taxIncludingPriceTotal"
-            placeholder="鑷姩鐢熸垚"
-            type="number"
-            disabled
-          />
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="绋庣巼(%)" prop="taxRate">
-          <!-- <el-input
-            v-model="form.taxRate"
-            placeholder="璇疯緭鍏ョ◣鐜�"
-            type="number"
-          >
-            <template #append> % </template>
-          </el-input> -->
-          <el-select
-            v-model="form.taxRate"
-            placeholder="璇烽�夋嫨"
-            clearable
-            @change="mathNum"
-          >
-            <el-option label="1" :value="1" />
-            <el-option label="6" :value="6" />
-            <el-option label="13" :value="13" />
-          </el-select>
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="涓嶅惈绋庢�讳环" prop="unTaxIncludingPriceTotal">
-          <el-input
-            v-model="form.unTaxIncludingPriceTotal"
-            placeholder="鑷姩鐢熸垚"
-            type="number"
-            disabled
-          />
+        <el-form-item label="鍚敤鎶樻棫"
+                      prop="enableDepreciation">
+          <el-switch v-model="form.enableDepreciation"
+                     :active-value="true"
+                     :inactive-value="false" />
         </el-form-item>
       </el-col>
       <!-- <el-col :span="12">
@@ -103,137 +77,119 @@
         </el-form-item>
       </el-col> -->
       <el-col :span="12">
-        <el-form-item label="褰曞叆鏃ユ湡" prop="createTime">
-          <el-date-picker
-            style="width: 100%"
-            v-model="form.createTime"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD HH:mm:ss"
-            type="date"
-            placeholder="璇烽�夋嫨褰曞叆鏃ユ湡"
-            clearable
-          />
+        <el-form-item label="褰曞叆鏃ユ湡"
+                      prop="createTime">
+          <el-date-picker style="width: 100%"
+                          v-model="form.createTime"
+                          format="YYYY-MM-DD"
+                          value-format="YYYY-MM-DD HH:mm:ss"
+                          type="date"
+                          placeholder="璇烽�夋嫨褰曞叆鏃ユ湡"
+                          clearable />
         </el-form-item>
       </el-col>
-			<el-col :span="12">
-				<el-form-item label="棰勮杩愯鏃堕棿" prop="planRuntimeTime">
-					<el-date-picker
-						style="width: 100%"
-						v-model="form.planRuntimeTime"
-						format="YYYY-MM-DD"
-						value-format="YYYY-MM-DD"
-						type="date"
-						placeholder="璇烽�夋嫨褰曞叆鏃ユ湡"
-						clearable
-					/>
-				</el-form-item>
-			</el-col>
+      <el-col :span="12">
+        <el-form-item label="棰勮杩愯鏃堕棿"
+                      prop="planRuntimeTime">
+          <el-date-picker style="width: 100%"
+                          v-model="form.planRuntimeTime"
+                          format="YYYY-MM-DD"
+                          value-format="YYYY-MM-DD"
+                          type="date"
+                          placeholder="璇烽�夋嫨褰曞叆鏃ユ湡"
+                          clearable />
+        </el-form-item>
+      </el-col>
     </el-row>
   </el-form>
 </template>
 
 <script setup>
-import useFormData from "@/hooks/useFormData";
-// import useUserStore from "@/store/modules/user";
-import { getLedgerById } from "@/api/equipmentManagement/ledger";
-import dayjs from "dayjs";
-import {
-  calculateTaxIncludeTotalPrice,
-  calculateTaxExclusiveTotalPrice,
-} from "@/utils/summarizeTable";
-import { ElMessage } from "element-plus";
-import {ref} from "vue";
+  import useFormData from "@/hooks/useFormData";
+  // import useUserStore from "@/store/modules/user";
+  import { getLedgerById } from "@/api/equipmentManagement/ledger";
+  import dayjs from "dayjs";
+  import { ref } from "vue";
 
-defineOptions({
-  name: "璁惧鍙拌处琛ㄥ崟",
-});
-const formRef = ref(null);
-const operationType = ref('');
-const formRules = {
-	deviceName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-	deviceModel: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-	supplierName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-	unit: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-	number: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-	taxIncludingPriceUnit: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-	taxRate: [{ required: true, trigger: "change", message: "璇疯緭鍏�" }],
-	planRuntimeTime: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
-}
+  defineOptions({
+    name: "璁惧鍙拌处琛ㄥ崟",
+  });
+  const formRef = ref(null);
+  const operationType = ref("");
+  const formRules = {
+    deviceName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
+    deviceModel: [{ trigger: "blur", message: "璇疯緭鍏�" }],
+    supplierName: [{ trigger: "blur", message: "璇疯緭鍏�" }],
+    unit: [{ trigger: "blur", message: "璇疯緭鍏�" }],
+    taxIncludingPriceUnit: [
+      {
+        required: true,
+        trigger: "blur",
+        validator: (rule, value, callback) => {
+          if (value === undefined || value === null || value === "") {
+            callback(new Error("璇疯緭鍏ヨ祫浜у師鍊�"));
+          } else if (typeof value === "number" && value >= 0) {
+            callback();
+          } else {
+            callback(new Error("璇疯緭鍏ユ湁鏁堢殑璧勪骇鍘熷��"));
+          }
+        },
+      },
+    ],
+    planRuntimeTime: [{ trigger: "change", message: "璇烽�夋嫨" }],
+  };
 
-const { form, resetForm } = useFormData({
-  deviceName: undefined, // 璁惧鍚嶇О
-  deviceModel: undefined, // 瑙勬牸鍨嬪彿
-  deviceBrand: undefined, // 璁惧鍝佺墝
-  supplierName: undefined, // 渚涘簲鍟�
-  storageLocation: undefined, // 瀛樻斁浣嶇疆
-  enableDepreciation: false, // 鏄惁鍚敤鎶樻棫
-  unit: undefined, // 鍗曚綅
-  number: 1, // 鏁伴噺
-  taxIncludingPriceUnit: undefined, // 鍚◣鍗曚环
-  taxIncludingPriceTotal: undefined, // 鍚◣鎬讳环
-  taxRate: undefined, // 绋庣巼
-  unTaxIncludingPriceTotal: undefined, // 涓嶅惈绋庢�讳环
-  // createUser: useUserStore().nickName, // 褰曞叆浜�
-  createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), // 褰曞叆鏃ユ湡
-	planRuntimeTime: dayjs().format("YYYY-MM-DD"), // 褰曞叆鏃ユ湡
-});
+  const { form, resetForm } = useFormData({
+    deviceName: undefined, // 璁惧鍚嶇О
+    deviceModel: undefined, // 瑙勬牸鍨嬪彿
+    // deviceBrand: undefined, // 璁惧鍝佺墝
+    supplierName: undefined, // 渚涘簲鍟�
+    // storageLocation: undefined, // 瀛樻斁浣嶇疆
+    enableDepreciation: false, // 鏄惁鍚敤鎶樻棫
+    unit: undefined, // 鍗曚綅
+    number: 1, // 鏁伴噺
+    taxIncludingPriceUnit: undefined, // 璧勪骇鍘熷��
+    // createUser: useUserStore().nickName, // 褰曞叆浜�
+    createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), // 褰曞叆鏃ユ湡
+    planRuntimeTime: dayjs().format("YYYY-MM-DD"), // 褰曞叆鏃ユ湡
+  });
 
-const loadForm = async (id) => {
-	if (id) {
-		operationType.value = 'edit'
-	}
-  const { code, data } = await getLedgerById(id);
-  if (code == 200) {
-    form.deviceName = data.deviceName;
-    form.deviceModel = data.deviceModel;
-    form.deviceBrand = data.deviceBrand;
-    form.supplierName = data.supplierName;
-    form.storageLocation = data.storageLocation;
-    form.enableDepreciation = data.enableDepreciation;
-    form.unit = data.unit;
-    form.number = 1;
-    form.taxIncludingPriceUnit = data.taxIncludingPriceUnit;
-    form.taxIncludingPriceTotal = data.taxIncludingPriceTotal;
-    form.taxRate = data.taxRate;
-    form.unTaxIncludingPriceTotal = data.unTaxIncludingPriceTotal;
-    form.createTime = data.createTime;
-  }
-};
+  const loadForm = async id => {
+    if (id) {
+      operationType.value = "edit";
+    }
+    const { code, data } = await getLedgerById(id);
+    if (code == 200) {
+      form.deviceName = data.deviceName;
+      form.deviceModel = data.deviceModel;
+      // form.deviceBrand = data.deviceBrand;
+      form.supplierName = data.supplierName;
+      // form.storageLocation = data.storageLocation;
+      form.enableDepreciation = data.enableDepreciation;
+      form.unit = data.unit;
+      form.number = 1;
+      form.taxIncludingPriceUnit = data.taxIncludingPriceUnit;
+      form.createTime = data.createTime;
+    }
+  };
 
-const mathNum = () => {
-  if (!form.taxIncludingPriceUnit) {
-    ElMessage.error("璇疯緭鍏ュ崟浠�");
-    return;
-  }
-  form.taxIncludingPriceTotal = calculateTaxIncludeTotalPrice(
-    form.taxIncludingPriceUnit,
-    form.number
-  );
-  if (form.taxRate) {
-    form.unTaxIncludingPriceTotal = calculateTaxExclusiveTotalPrice(
-      form.taxIncludingPriceTotal,
-      form.taxRate
-    );
-  }
-};
+  // 娓呴櫎琛ㄥ崟鏍¢獙鐘舵��
+  const clearValidate = () => {
+    formRef.value?.clearValidate();
+  };
 
-// 娓呴櫎琛ㄥ崟鏍¢獙鐘舵��
-const clearValidate = () => {
-  formRef.value?.clearValidate();
-};
+  // 閲嶇疆琛ㄥ崟鏁版嵁鍜屾牎楠岀姸鎬�
+  const resetFormAndValidate = () => {
+    resetForm();
+    clearValidate();
+  };
 
-// 閲嶇疆琛ㄥ崟鏁版嵁鍜屾牎楠岀姸鎬�
-const resetFormAndValidate = () => {
-  resetForm();
-  clearValidate();
-};
-
-defineExpose({
-  form,
-  loadForm,
-  resetForm,
-  clearValidate,
-  resetFormAndValidate,
-	formRef,
-});
+  defineExpose({
+    form,
+    loadForm,
+    resetForm,
+    clearValidate,
+    resetFormAndValidate,
+    formRef,
+  });
 </script>

--
Gitblit v1.9.3