From db42d47f5692ef64e5436c5a6d29dcb537b44596 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期一, 26 一月 2026 16:36:13 +0800
Subject: [PATCH] 浪潮对接单点登录:mis调整

---
 src/views/equipmentManagement/defectManagement/index.vue |  221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 221 insertions(+), 0 deletions(-)

diff --git a/src/views/equipmentManagement/defectManagement/index.vue b/src/views/equipmentManagement/defectManagement/index.vue
new file mode 100644
index 0000000..f35454f
--- /dev/null
+++ b/src/views/equipmentManagement/defectManagement/index.vue
@@ -0,0 +1,221 @@
+<template>
+  <div class="defect-management">
+    <!-- 鎿嶄綔鎸夐挳 -->
+    <div class="actions">
+      <el-button type="primary" @click="showRegisterDialog = true">鐧昏缂洪櫡</el-button>
+    </div>
+
+    <!-- 缂洪櫡鍒楄〃 -->
+    <el-table :data="defectList" style="width: 100%; margin-top: 10px;" border>
+      <el-table-column prop="deviceName" label="璁惧鍚嶇О" width="180"></el-table-column>
+      <el-table-column prop="defectDescription" label="缂洪櫡鎻忚堪" win-width="300"></el-table-column>
+      <el-table-column prop="status" label="鐘舵��" width="220">
+        <template #default="{ row }">
+          <el-tag :type="row.status === '涓ラ噸缂洪櫡' ? 'danger' : 'success'">
+            {{ row.status }}
+          </el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎿嶄綔" width="220">
+        <template #default="{ row }">
+          <el-button
+            v-if="row.status === '涓ラ噸缂洪櫡' || row.status === '涓�鑸己闄�'"
+            type="text"
+            @click="eliminateDefect(row)"
+          >
+            娑堥櫎缂洪櫡
+          </el-button>
+          <!-- <el-button
+            v-if="row.status === '涓ラ噸缂洪櫡'"
+            type="text"
+            @click="transferToRepairOrder(row.id)"
+          >
+            杞淮淇崟
+          </el-button> -->
+          <el-button type="text" @click="getLedger(row.deviceLedgerId)">
+            鏌ョ湅鍙拌处
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <!-- 缂洪櫡鐧昏瀵硅瘽妗� -->
+    <el-dialog title="鐧昏璁惧缂洪櫡" v-model="showRegisterDialog" width="50%">
+      <el-form :model="defectForm" :rules="defectRules" ref="defectFormRef" label-width="100px">
+        <el-form-item label="璁惧鍚嶇О" prop="deviceName">
+          <el-select v-model="defectForm.deviceLedgerId" @change="setDeviceModel">
+            <el-option
+              v-for="(item, index) in deviceOptions"
+              :key="index"
+              :label="item.deviceName"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="缂洪櫡鎻忚堪" prop="defectDescription">
+          <el-input type="textarea" v-model="defectForm.defectDescription"></el-input>
+        </el-form-item>
+        <el-form-item label="璁惧鐘舵��" prop="status">
+          <el-radio-group v-model="defectForm.status">
+            <el-radio label="姝e父">姝e父</el-radio>
+            <el-radio label="涓�鑸己闄�">涓�鑸己闄�</el-radio>
+            <el-radio label="涓ラ噸缂洪櫡">涓ラ噸缂洪櫡</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="showRegisterDialog = false">鍙栨秷</el-button>
+          <el-button type="primary" @click="submitDefectForm">纭畾</el-button>
+        </span>
+      </template>
+    </el-dialog>
+
+    <!-- 缂洪櫡璁惧鍙拌处瀵硅瘽妗� -->
+    <el-dialog title="缂洪櫡璁惧鍙拌处" v-model="showLedgerDialog" width="80%">
+      <el-table :data="ledgerList" style="width: 100%; margin-top: 10px;" border>
+        <el-table-column prop="deviceName" label="璁惧鍚嶇О"></el-table-column>
+        <el-table-column prop="defectDescription" label="缂洪櫡鎻忚堪"></el-table-column>
+        <el-table-column prop="status" label="鐘舵��"></el-table-column>
+        <el-table-column prop="eliminateTime" label="娑堢己鏃堕棿"></el-table-column>
+      </el-table>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import { ref, reactive } from 'vue';
+import { ElMessage } from 'element-plus';
+import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
+// 鍋囪浠ヤ笅鏄悗绔帴鍙�
+import {
+  registerDefect,
+  getDefectList,
+  eliminateDefect as apiEliminateDefect, 
+  getDefectLedger,
+  deleteDefect
+} from '@/api/equipmentManagement/defectManagement';
+
+// 缂洪櫡鍒楄〃
+const defectList = ref([]);
+// 鐧昏瀵硅瘽妗嗘樉绀虹姸鎬�
+const showRegisterDialog = ref(false);
+// 鍙拌处瀵硅瘽妗嗘樉绀虹姸鎬�
+const showLedgerDialog = ref(false);
+// 缂洪櫡琛ㄥ崟
+const defectForm = reactive({
+  deviceLedgerId: '',
+  defectDescription: '',
+  status: '',
+});
+const deviceOptions = ref([]);
+// 琛ㄥ崟楠岃瘉瑙勫垯
+const defectRules = reactive({
+  deviceLedgerId: [{ required: true, message: '璇疯緭鍏ヨ澶囧悕绉�', trigger: 'blur' }],
+  defectDescription: [{ required: true, message: '璇疯緭鍏ョ己闄锋弿杩�', trigger: 'blur' }]
+});
+// 琛ㄥ崟寮曠敤
+const defectFormRef = ref(null);
+// 鍙拌处鍒楄〃
+const ledgerList = ref([]);
+
+const loadDeviceName = async () => {
+  const { data } = await getDeviceLedger();
+  // console.log(data);
+  deviceOptions.value = data;
+};
+
+// 鑾峰彇缂洪櫡鍒楄〃
+const fetchDefectList = async () => {
+  try {
+    const res = await getDefectList();
+    if (res.code === 200) {
+      defectList.value = res.data.records;
+    } else {
+      ElMessage.error(res.message || '鑾峰彇缂洪櫡鍒楄〃澶辫触');
+    }
+  } catch (error) {
+    ElMessage.error('鑾峰彇缂洪櫡鍒楄〃澶辫触');
+  }
+};
+
+// 鎻愪氦缂洪櫡鐧昏琛ㄥ崟
+const submitDefectForm = async () => {
+  if (!defectFormRef.value) return;
+  try {
+    await defectFormRef.value.validate();
+    const res = await registerDefect(defectForm);
+    if (res.code === 200) {
+      ElMessage.success('缂洪櫡鐧昏鎴愬姛');
+      showRegisterDialog.value = false;
+      fetchDefectList();
+    } else {
+      ElMessage.error(res.message || '缂洪櫡鐧昏澶辫触');
+    }
+  } catch (error) {
+    ElMessage.error('璇峰~鍐欏畬鏁磋〃鍗曚俊鎭�');
+  }
+};
+
+// 娑堥櫎缂洪櫡
+const eliminateDefect = async (row) => {
+
+  try {
+    const res = await apiEliminateDefect(row);
+    if (res.code === 200) {
+      ElMessage.success('缂洪櫡娑堥櫎鎴愬姛');
+      fetchDefectList();
+    } else {
+      ElMessage.error(res.message || '缂洪櫡娑堥櫎澶辫触');
+    }
+  } catch (error) {
+    ElMessage.error('缂洪櫡娑堥櫎澶辫触');
+  }
+};
+
+// // 杞淮淇伐鍗�
+// const transferToRepairOrder = async (id) => {
+//   try {
+//     const res = await transferToRepair(id);
+//     if (res.code === 200) {
+//       ElMessage.success('杞淮淇伐鍗曟垚鍔�');
+//     } else {
+//       ElMessage.error(res.message || '杞淮淇伐鍗曞け璐�');
+//     }
+//   } catch (error) {
+//     ElMessage.error('杞淮淇伐鍗曞け璐�');
+//   }
+// };
+
+// 鑾峰彇缂洪櫡璁惧鍙拌处
+const getLedger = async (deviceLedgerId) => {
+  try {
+    const res = await getDefectLedger(deviceLedgerId);
+    if (res.code === 200) {
+      ledgerList.value = res.data.records;
+      showLedgerDialog.value = true;
+    } else {
+      ElMessage.error(res.message || '鑾峰彇缂洪櫡璁惧鍙拌处澶辫触');
+    }
+  } catch (error) {
+    ElMessage.error('鑾峰彇缂洪櫡璁惧鍙拌处澶辫触');
+  }
+};
+
+// 缁勪欢鎸傝浇鏃惰幏鍙栫己闄峰垪琛�
+const onMounted = () => {
+  fetchDefectList();
+  loadDeviceName();
+};
+onMounted();
+</script>
+
+<style scoped>
+.defect-management {
+  padding: 20px;
+}
+
+.actions {
+  margin-bottom: 10px;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3