From 400ba2640e9852271f22efbb90943c02ae9f46a2 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 24 九月 2025 14:58:10 +0800
Subject: [PATCH] 巡检上传

---
 src/views/equipmentManagement/inspectionManagement/components/formDia.vue |  135 +++++++++++++++++++-------
 src/views/equipmentManagement/inspectionManagement/index.vue              |  109 +--------------------
 2 files changed, 105 insertions(+), 139 deletions(-)

diff --git a/src/views/equipmentManagement/inspectionManagement/components/formDia.vue b/src/views/equipmentManagement/inspectionManagement/components/formDia.vue
index 9d9a9fd..79ff5b0 100644
--- a/src/views/equipmentManagement/inspectionManagement/components/formDia.vue
+++ b/src/views/equipmentManagement/inspectionManagement/components/formDia.vue
@@ -2,20 +2,20 @@
   <div>
     <el-dialog :title="operationType === 'add' ? '鏂板宸℃浠诲姟' : '缂栬緫宸℃浠诲姟'"
                v-model="dialogVisitable" width="800px" @close="cancel">
-      <el-form :model="form" :rules="rules" ref="formRef" label-width="120px">
+      <el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="浠诲姟鍚嶇О" prop="taskName">
-              <el-input v-model="form.taskName" placeholder="璇疯緭鍏ヤ换鍔″悕绉�" maxlength="30" />
+            <el-form-item label="璁惧鍚嶇О" prop="taskId">
+              <el-select v-model="form.taskId" @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-col>
-          <el-col :span="12">
-            <el-form-item label="鍦扮偣" prop="inspectionLocation">
-              <el-input v-model="form.inspectionLocation" placeholder="璇疯緭鍏ュ湴鐐�" maxlength="30" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
           <el-col :span="12">
             <el-form-item label="宸℃浜�" prop="inspector">
               <el-select v-model="form.inspector" placeholder="璇烽�夋嫨" multiple clearable>
@@ -23,6 +23,8 @@
               </el-select>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row>
           <el-col :span="12">
             <el-form-item label="澶囨敞" prop="remarks">
               <el-input v-model="form.remarks" placeholder="璇疯緭鍏ュ娉�" type="textarea" />
@@ -36,7 +38,7 @@
                 <el-option label="姣忔棩" value="DAILY"/>
                 <el-option label="姣忓懆" value="WEEKLY"/>
                 <el-option label="姣忔湀" value="MONTHLY"/>
-                <el-option label="瀛e害" value="QUARTERLY"/>
+                <!-- <el-option label="瀛e害" value="QUARTERLY"/> -->
               </el-select>
             </el-form-item>
           </el-col>
@@ -101,68 +103,123 @@
 import {reactive, ref} from "vue";
 import useUserStore from '@/store/modules/user'
 import {addOrEditTimingTask} from "@/api/inspectionManagement/index.js";
-import {userListAll} from "@/api/publicApi/index.js";
+import {userListNoPageByTenantId} from "@/api/system/user.js";
+import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
 
 const { proxy } = getCurrentInstance()
 const emit = defineEmits()
 const userStore = useUserStore()
 const dialogVisitable = ref(false);
 const operationType = ref('add');
+const deviceOptions = ref([]);
 const data = reactive({
   form: {
-    taskName: '',
-    inspectionLocation: '',
+    taskId: undefined,
+    taskName: undefined,
     inspector: '',
     inspectorIds: '',
     remarks: '',
     frequencyType: '',
     frequencyDetail: '',
+    week: '',
+    time: ''
   },
   rules: {
-    taskName: [{ required: true, message: "璇疯緭鍏ヤ换鍔″悕绉�", trigger: "blur" },],
-    inspectionLocation: [{ required: true, message: "璇疯緭鍏ュ湴鐐�", trigger: "blur" },],
+    taskId: [{ required: true, message: "璇烽�夋嫨璁惧", trigger: "change" },],
     inspector: [{ required: true, message: "璇疯緭鍏ュ贰妫�浜�", trigger: "blur" },],
   }
 })
 const { form, rules } = toRefs(data)
 const userList = ref([])
 
-// 鎵撳紑寮规
-const openDialog = async (type, row) => {
-  dialogVisitable.value = true
-  userListAll().then(res => {
-    userList.value = res.data
-  })
-  if (type === 'edit') {
-    form.value = {...row}
-    form.value.inspector = form.value.inspectorIds.split(',').map(Number)
+const loadDeviceName = async () => {
+  const { data } = await getDeviceLedger();
+  deviceOptions.value = data;
+};
+
+const setDeviceModel = (id) => {
+  const option = deviceOptions.value.find((item) => item.id === id);
+  if (option) {
+    form.value.taskName = option.deviceName;
   }
 }
 
-// 鍏抽棴鍚堝苟琛ㄥ崟
+// 鎵撳紑寮规
+const openDialog = async (type, row) => {
+  dialogVisitable.value = true
+  operationType.value = type
+  
+  // 閲嶇疆琛ㄥ崟
+  resetForm();
+  
+  // 鍔犺浇鐢ㄦ埛鍒楄〃
+  userListNoPageByTenantId().then((res) => {
+    userList.value = res.data;
+  });
+  
+  // 鍔犺浇璁惧鍒楄〃
+  await loadDeviceName();
+  
+  if (type === 'edit' && row) {
+    form.value = {...row}
+    form.value.inspector = form.value.inspectorIds.split(',').map(Number)
+    
+    // 濡傛灉鏈夎澶嘔D锛岃嚜鍔ㄨ缃澶囦俊鎭�
+    if (form.value.taskId) {
+      setDeviceModel(form.value.taskId);
+    }
+  }
+}
+
+// 鍏抽棴瀵硅瘽妗�
 const cancel = () => {
-  proxy.resetForm("formRef")
+  resetForm()
   dialogVisitable.value = false
   emit('closeDia')
 }
 
-// 鎻愪氦鍚堝苟琛ㄥ崟
+// 閲嶇疆琛ㄥ崟鍑芥暟
+const resetForm = () => {
+  if (proxy.$refs.formRef) {
+    proxy.$refs.formRef.resetFields()
+  }
+  // 閲嶇疆琛ㄥ崟鏁版嵁纭繚璁惧淇℃伅姝g‘閲嶇疆
+  form.value = {
+    taskId: undefined,
+    taskName: undefined,
+    inspector: '',
+    inspectorIds: '',
+    remarks: '',
+    frequencyType: '',
+    frequencyDetail: '',
+    week: '',
+    time: ''
+  }
+}
+
+// 鎻愪氦琛ㄥ崟
 const submitForm = () => {
   proxy.$refs["formRef"].validate(async valid => {
     if (valid) {
-      form.value.inspectorIds = form.value.inspector.join(',')
-			delete form.value.inspector
-      if (form.value.frequencyType === 'WEEKLY') {
-        let frequencyDetail = ''
-        frequencyDetail = form.value.week + ',' + form.value.time
-        form.value.frequencyDetail = frequencyDetail
-      }
-      let res = await userStore.getInfo()
-      form.value.registrantId = res.user.userId
-      addOrEditTimingTask(form.value).then(() => {
+      try {
+        form.value.inspectorIds = form.value.inspector.join(',')
+        delete form.value.inspector
+        
+        if (form.value.frequencyType === 'WEEKLY') {
+          let frequencyDetail = ''
+          frequencyDetail = form.value.week + ',' + form.value.time
+          form.value.frequencyDetail = frequencyDetail
+        }
+        
+        let res = await userStore.getInfo()
+        form.value.registrantId = res.user.userId
+        
+        await addOrEditTimingTask(form.value)
         cancel()
         proxy.$modal.msgSuccess('鎻愪氦鎴愬姛')
-      })
+      } catch (error) {
+        proxy.$modal.msgError('鎻愪氦澶辫触锛岃閲嶈瘯')
+      }
     }
   })
 }
diff --git a/src/views/equipmentManagement/inspectionManagement/index.vue b/src/views/equipmentManagement/inspectionManagement/index.vue
index f0196b9..74886b2 100644
--- a/src/views/equipmentManagement/inspectionManagement/index.vue
+++ b/src/views/equipmentManagement/inspectionManagement/index.vue
@@ -15,20 +15,7 @@
       </el-form-item>
     </el-form>
     <el-card>
-      <!-- 鏍囩椤� -->
-      <el-tabs
-          v-model="activeTab"
-          class="info-tabs"
-          @tab-click="handleTabClick"
-      >
-        <el-tab-pane
-            v-for="tab in tabs"
-            :key="tab.name"
-            :label="tab.label"
-            :name="tab.name"
-        />
-      </el-tabs>
-      <div style="display: flex;flex-direction: row;justify-content: space-between;" v-if="tabName === 'task'">
+      <div style="display: flex;flex-direction: row;justify-content: space-between;margin-bottom: 10px;">
         <el-radio-group v-model="activeRadio" @change="radioChange">
           <el-radio-button v-for="tab in radios"
                            :key="tab.name"
@@ -50,8 +37,7 @@
                   @selection-change="handleSelectionChange"
                   :is-selection="true"
                   :border="true"
-                  :table-style="{ width: '100%', height: 'calc(100vh - 30em)' }"
-                  v-if="tabName === 'task'"
+                  :table-style="{ width: '100%', height: 'calc(100vh - 23em)' }"
           >
           <template #inspector="{ row }">
             <div class="person-tags">
@@ -71,27 +57,7 @@
               <span v-else class="no-data">--</span>
             </div>
           </template>
-          </PIMTable>
-          <el-table ref="table" :data="tableData" height="480" v-loading="tableLoading" border v-else style="width: 100%;height: calc(100vh - 25em)">
-            <el-table-column label="搴忓彿" type="index" width="60" align="center" />
-            <el-table-column prop="deviceName" label="璁惧鍚嶇О" :show-overflow-tooltip="true">
-              <template #default="scope">
-                {{scope.row.qrCode.deviceName}}
-              </template>
-            </el-table-column>
-            <el-table-column prop="location" label="鎵�鍦ㄤ綅缃弿杩�" :show-overflow-tooltip="true">
-              <template #default="scope">
-                {{scope.row.qrCode.location}}
-              </template>
-            </el-table-column>
-            <el-table-column prop="scanner" label="宸℃浜�"></el-table-column>
-            <el-table-column prop="scanTime" label="宸℃鏃堕棿"></el-table-column>
-            <el-table-column fixed="right" label="鎿嶄綔">
-              <template #default="scope">
-                <el-button link type="primary" @click="handleAdd(scope.row)">鏌ョ湅闄勪欢</el-button>
-              </template>
-            </el-table-column>
-          </el-table>
+            </PIMTable>
         </div>
         <pagination
             v-if="total>0"
@@ -104,9 +70,7 @@
       </div>
     </el-card>
     <form-dia ref="formDia" @closeDia="handleQuery"></form-dia>
-    <qr-code-dia ref="qrCodeDia" @closeDia="handleQuery"></qr-code-dia>
     <view-files ref="viewFiles"></view-files>
-    <view-qr-code-files ref="viewQrCodeFiles"></view-qr-code-files>
   </div>
 </template>
 
@@ -118,9 +82,7 @@
 import Pagination from "@/components/Pagination/index.vue";
 import PIMTable from "@/components/PIMTable/PIMTable.vue";
 import FormDia from "@/views/equipmentManagement/inspectionManagement/components/formDia.vue";
-import QrCodeDia from "@/views/equipmentManagement/inspectionManagement/components/qrCodeDia.vue";
 import ViewFiles from "@/views/equipmentManagement/inspectionManagement/components/viewFiles.vue";
-import ViewQrCodeFiles from "@/views/equipmentManagement/inspectionManagement/components/viewQrCodeFiles.vue";
 
 // 鎺ュ彛寮曞叆
 import {
@@ -128,38 +90,22 @@
   inspectionTaskList,
   timingTaskList
 } from "@/api/inspectionManagement/index.js";
-import {
-  delQrCode,
-  qrCodeList,
-  qrCodeScanRecordList
-} from "@/api/inspectionUpload/index.js";
 
 // 鍏ㄥ眬鍙橀噺
 const { proxy } = getCurrentInstance();
 const formDia = ref();
-const qrCodeDia = ref();
 const viewFiles = ref();
-const viewQrCodeFiles = ref();
 
 // 鏌ヨ鍙傛暟
 const queryParams = reactive({
   searchAll: "",
 });
 
-// 鏍囩椤甸厤缃�
-const activeTab = ref("task");
-const tabName = ref("task");
-const tabs = reactive([
-  { name: "task", label: "鐢熶骇宸℃" },
-  { name: "qrCodeScanRecord", label: "鐜板満宸℃璁板綍" },
-]);
-
 // 鍗曢�夋閰嶇疆
 const activeRadio = ref("taskManage");
 const radios = reactive([
   { name: "taskManage", label: "瀹氭椂浠诲姟绠$悊" },
   { name: "task", label: "瀹氭椂浠诲姟璁板綍" },
-  { name: "qrCode", label: "浜岀淮鐮佺鐞�" },
 ]);
 
 // 琛ㄦ牸鏁版嵁
@@ -175,7 +121,6 @@
 // 鍒楅厤缃�
 const columns = ref([
   { prop: "taskName", label: "宸℃浠诲姟鍚嶇О", minWidth: 160 },
-  { prop: "inspectionLocation", label: "鍦扮偣", minWidth: 120 },
   { prop: "remarks", label: "澶囨敞", minWidth: 150 },
   { prop: "inspector", label: "鎵ц宸℃浜�", minWidth: 150, slot: "inspector" },
   {
@@ -246,23 +191,9 @@
   return operationConfig;
 };
 
-const columns1 = ref([
-  { prop: "deviceName", label: "璁惧鍚嶇О", minWidth: 160 },
-  { prop: "location", label: "鎵�鍦ㄤ綅缃弿杩�", minWidth: 120 },
-  { prop: "createBy", label: "鍒涘缓鑰�", minWidth: 100 },
-  { prop: "createTime", label: "鍒涘缓鏃堕棿", minWidth: 100 },
-]);
-
 onMounted(() => {
   radioChange('taskManage');
 });
-
-// 鏍囩椤电偣鍑讳簨浠�
-const handleTabClick = (tab) => {
-  tabName.value = tab.props.name;
-  tableData.value = [];
-  getList();
-};
 
 // 鍗曢�夊彉鍖�
 const radioChange = (value) => {
@@ -274,10 +205,6 @@
     const operationColumn = getOperationColumn(['viewFile']);
     tableColumns.value = [...columns.value, ...(operationColumn ? [operationColumn] : [])];
     operationsArr.value = ['viewFile'];
-  } else {
-    const operationColumn = getOperationColumn(['edit']);
-    tableColumns.value = [...columns1.value, ...(operationColumn ? [operationColumn] : [])];
-    operationsArr.value = ['edit'];
   }
   pageNum.value = 1;
   pageSize.value = 10;
@@ -293,7 +220,7 @@
 // 鍒嗛〉澶勭悊
 const handlePagination = (val) => {
 	pageNum.value = val.page;
-	pageSize.value = val.limit;
+	pageSize.value = val.size;
 	getList();
 };
 // 鑾峰彇鍒楄〃鏁版嵁
@@ -303,19 +230,10 @@
   const params = { ...queryParams, size: pageSize.value, current: pageNum.value };
   
   let apiCall;
-  if (tabName.value === 'task') {
-    switch (activeRadio.value) {
-      case "task":
-        apiCall = inspectionTaskList(params);
-        break;
-      case "qrCode":
-        apiCall = qrCodeList(params);
-        break;
-      default:
-        apiCall = timingTaskList(params);
-    }
+  if (activeRadio.value === "task") {
+    apiCall = inspectionTaskList(params);
   } else {
-    apiCall = qrCodeScanRecordList(params);
+    apiCall = timingTaskList(params);
   }
   
   apiCall.then(res => {
@@ -360,15 +278,7 @@
 const handleAdd = (row) => {
   const type = row ? 'edit' : 'add';
   nextTick(() => {
-    if (tabName.value === 'task') {
-      if (activeRadio.value === "taskManage") {
-        formDia.value?.openDialog(type, row);
-      } else if (activeRadio.value === "qrCode") {
-        qrCodeDia.value?.openDialog(type, row);
-      }
-    } else {
-      viewQrCodeFiles.value?.openDialog(row);
-    }
+    formDia.value?.openDialog(type, row);
   });
 };
 
@@ -387,10 +297,9 @@
   }
   
   const deleteIds = selectedRows.value.map(item => item.id);
-  const api = activeRadio.value === "taskManage" ? delTimingTask : delQrCode;
   
   proxy.$modal.confirm('鏄惁纭鍒犻櫎鎵�閫夋暟鎹」锛�').then(() => {
-    return api(deleteIds);
+    return delTimingTask(deleteIds);
   }).then(() => {
     proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
     handleQuery();

--
Gitblit v1.9.3