From a175709baa7777575d054f928d4d2d029a04bd60 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 29 十二月 2025 17:41:06 +0800
Subject: [PATCH] 陕西昭德-app巡检上传修改

---
 src/pages/management/mould/usageRecord.vue |  265 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 265 insertions(+), 0 deletions(-)

diff --git a/src/pages/management/mould/usageRecord.vue b/src/pages/management/mould/usageRecord.vue
new file mode 100644
index 0000000..8806b85
--- /dev/null
+++ b/src/pages/management/mould/usageRecord.vue
@@ -0,0 +1,265 @@
+<template>
+  <div>
+    <u-popup
+      v-model="dialogVisible"
+      :title="addOrEdit === 'edit' ? '缂栬緫' : '鏂板' + '璁惧'"
+      mode="center"
+      :close-on-click-overlay="false"
+      :before-close="handleClose"
+      :border-radius="20"
+      width="90%"
+    >
+      <u-form
+        ref="formRef"
+        :model="formData"
+        :rules="rules"
+        label-width="auto"
+      >
+        <view class="form-row">
+          <view class="form-col">
+            <u-form-item label="璁惧缂栧彿" prop="equipmentId">
+              <u-input
+                v-model="formData.equipmentId"
+                placeholder="璇疯緭鍏ヨ澶囩紪鍙�"
+                :disabled="isViewMode"
+                border="surround"
+              />
+            </u-form-item>
+          </view>
+          <view class="form-col">
+            <u-form-item label="璁惧鍚嶇О" prop="equipmentName">
+              <u-input
+                v-model="formData.equipmentName"
+                placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+                :disabled="isViewMode"
+                border="surround"
+              />
+            </u-form-item>
+          </view>
+        </view>
+        <view class="form-row">
+          <view class="form-col">
+            <u-form-item label="鏁伴噺" prop="quantity">
+              <u-input
+                v-model="formData.quantity"
+                placeholder="璇疯緭鍏ユ暟閲�"
+                :disabled="isViewMode"
+                border="surround"
+                type="number"
+              />
+            </u-form-item>
+          </view>
+          <view class="form-col">
+            <u-form-item label="瑙勬牸鍨嬪彿" prop="specification">
+              <u-input
+                v-model="formData.specification"
+                placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+                :disabled="isViewMode"
+                border="surround"
+              />
+            </u-form-item>
+          </view>
+        </view>
+        <view class="form-row">
+          <view class="form-col">
+            <u-form-item label="浣跨敤鐘舵��" prop="usageStatus">
+              <u-select
+                v-model="formData.usageStatus"
+                :list="usageStatusOptions"
+                placeholder="璇烽�夋嫨浣跨敤鐘舵��"
+                :disabled="isViewMode"
+              />
+            </u-form-item>
+          </view>
+          <view class="form-col">
+            <u-form-item label="瀛樻斁浣嶇疆" prop="storageLocation">
+              <u-input
+                v-model="formData.storageLocation"
+                placeholder="璇疯緭鍏ュ瓨鏀句綅缃�"
+                :disabled="isViewMode"
+                border="surround"
+              />
+            </u-form-item>
+          </view>
+        </view>
+        <view class="form-row">
+          <view class="form-col">
+            <u-form-item label="閲囪喘浠锋牸" prop="purchasePrice">
+              <u-input
+                v-model="formData.purchasePrice"
+                placeholder="璇疯緭鍏ラ噰璐环鏍�"
+                :disabled="isViewMode"
+                border="surround"
+                type="number"
+              />
+            </u-form-item>
+          </view>
+          <view class="form-col">
+            <u-form-item label="閲囪喘鏃ユ湡" prop="purchaseDate">
+              <u-datetime-picker
+                v-model="formData.purchaseDate"
+                mode="date"
+                placeholder="璇烽�夋嫨閲囪喘鏃ユ湡"
+                :disabled="isViewMode"
+              />
+            </u-form-item>
+          </view>
+        </view>
+        <view class="dialog-footer">
+          <u-button v-if="!isViewMode" @click="cancelForm" type="default" size="normal">鍙栨秷</u-button>
+          <u-button v-if="!isViewMode" @click="submitForm" type="primary" size="normal">纭畾</u-button>
+        </view>
+      </u-form>
+    </u-popup>
+  </div>
+</template>
+
+<script setup>
+import { ref, watch, computed, reactive } from "vue";
+import { addOrEditEquipment } from "@/api/equipment/management/index.js";
+import { useToast } from "@/utils/uviewplus";
+
+const { showToast } = useToast();
+
+const props = defineProps({
+  beforeClose: {
+    type: Function,
+    default: () => {},
+  },
+  form: {
+    type: Object,
+    default: () => ({}),
+  },
+  addOrEdit: {
+    type: String,
+    default: "add",
+  },
+  title: {
+    type: String,
+    default: "",
+  },
+});
+
+const emit = defineEmits(["submit", "handleBeforeClose"]);
+
+// 璁$畻灞炴�э細缁熶竴鎺у埗鏄惁绂佺敤
+const isViewMode = computed(() => props.addOrEdit === "viewRow");
+
+// 琛ㄥ崟寮曠敤鍜屾暟鎹�
+const formRef = ref(null);
+const formData = ref({});
+const copyForm = defineModel("copyForm", {
+  required: true,
+  type: Object,
+  default: () => ({}),
+});
+
+// 寮圭獥鍙鎬�
+const dialogVisible = defineModel("managementFormDialog", {
+  required: true,
+  type: Boolean,
+});
+
+// 浣跨敤鐘舵�侀�夐」
+const usageStatusOptions = reactive([
+  { label: "鍚敤", value: "1" },
+  { label: "绂佺敤", value: "0" }
+]);
+
+// 鐩戝惉澶栭儴浼犲叆鐨勮〃鍗曟暟鎹彉鍖栵紝鍚堝苟鐩戝惉閫昏緫
+watch(
+  [() => props.form, () => props.addOrEdit],
+  ([newForm, newAddOrEdit]) => {
+    formData.value = { ...newForm };
+  },
+  { deep: true, immediate: true }
+);
+
+// 鎻愪氦琛ㄥ崟
+const submitForm = async () => {
+  if (!formRef.value) return;
+  
+  try {
+    const valid = await formRef.value.validate();
+    if (!valid) return;
+    
+    const result = await addOrEditEquipment({ ...formData.value });
+    const title = props.title.includes("鏂板") ? "鏂板" : "缂栬緫";
+    
+    if (result.code === 200 && result.msg) {
+      showToast({ title: `${title}鎴愬姛锛�${result.msg}`, type: 'success' });
+      emit("submit", { title, ...formData.value, result });
+      closeDialog();
+    } else {
+      showToast({ title: `${title}澶辫触锛�${result.msg}`, type: 'error' });
+    }
+  } catch (error) {
+    console.error("鎻愪氦澶辫触:", error);
+    showToast({ title: "鎻愪氦澶辫触锛岃閲嶈瘯", type: 'error' });
+  }
+};
+
+// 鍏抽棴寮圭獥鐨勭粺涓�鏂规硶
+const closeDialog = () => {
+  emit("update:managementFormDialog", false);
+  formData.value = {};
+};
+
+// 鍙栨秷琛ㄥ崟
+const cancelForm = () => {
+  closeDialog();
+};
+
+// 閲嶇疆琛ㄥ崟
+const resetForm = () => {
+  if (!formRef.value) return;
+  formData.value = JSON.parse(JSON.stringify(copyForm.value));
+};
+
+// 鍏抽棴寮圭獥
+const handleClose = () => {
+  emit("handleBeforeClose");
+  closeDialog();
+};
+
+const rules = reactive({
+  equipmentId: [
+    { required: true, message: "璇疯緭鍏ヨ澶囩紪鍙�", trigger: "blur" },
+  ],
+});
+</script>
+
+<style lang="scss" scoped>
+.form-row {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+  margin-bottom: 20rpx;
+}
+
+.form-col {
+  flex: 1;
+  margin-right: 20rpx;
+}
+
+.form-col:last-child {
+  margin-right: 0;
+}
+
+.dialog-footer {
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 40rpx;
+  flex-direction: row;
+  gap: 20rpx;
+}
+
+// 寮圭獥鏍峰紡閫傞厤
+:deep(.u-popup__content) {
+  padding: 30rpx;
+}
+
+:deep(.u-form-item) {
+  margin-bottom: 20rpx;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3