From e8c0b3c2c024b0ed12fa371fc69019c0849083c9 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 28 Apr 2025 19:38:39 +0800
Subject: [PATCH] Merge branch 'test' of http://139.196.74.78:10010/r/drone/drone-web-manage into test

---
 src/views/tickets/ticket.vue |  123 ++++++++++++++++++++++++++++++-----------
 1 files changed, 90 insertions(+), 33 deletions(-)

diff --git a/src/views/tickets/ticket.vue b/src/views/tickets/ticket.vue
index aa7ed55..f0d8e07 100644
--- a/src/views/tickets/ticket.vue
+++ b/src/views/tickets/ticket.vue
@@ -980,7 +980,7 @@
             startTime: item.create_time,
             aiType: item.ai_types,
             content: item.content, // 将后端返回的 content 映射为 content
-            type: this.types.find(t => t.value === item.event_dict_key)?.label,
+            type: this.types.find(t => t.value === item.work_order_type_dict_key)?.label,
             keyData: (!isNaN(longitude) && !isNaN(latitude))
               ? `${longitude.toFixed(6)}, ${latitude.toFixed(6)}`
               : '未知位置',
@@ -1032,7 +1032,7 @@
           return;
         }
 
-        // 验证图片上传
+        // 修改图片验证逻辑
         if (!this.form.photos || this.form.photos.length === 0) {
           this.$message.warning('请上传工单图片');
           return;
@@ -1045,7 +1045,7 @@
           longitude: String(this.form.location[0]),
           latitude: String(this.form.location[1]),
           address: this.form.address,
-          eventDictKey: this.form.type,
+          workOrderTypeDictKey: this.form.type,
           aiType: Array.isArray(this.form.algorithm) ? this.form.algorithm : [this.form.algorithm], // 传数组
           updateUser: this.form.handler,
           createDept: this.form.department,
@@ -1056,9 +1056,17 @@
           submitData.id = this.form.id;
         }
 
-        // 获取文件对象
-        const file = this.form.photos[0].raw;
-        if (!file) {
+        // 修改获取文件的逻辑
+        let file = null;
+        const photoInfo = this.form.photos[0];
+        
+        if (photoInfo.raw) {
+          // 如果有新上传的文件,使用新文件
+          file = photoInfo.raw;
+        } else if (photoInfo.existingUrl) {
+          // 如果是已存在的图片,将URL添加到提交数据中
+          submitData.photoUrl = photoInfo.existingUrl;
+        } else {
           this.$message.warning('图片文件无效,请重新上传');
           return;
         }
@@ -1099,8 +1107,10 @@
           longitude: this.form.location?.[0] ? String(this.form.location[0]) : undefined,
           latitude: this.form.location?.[1] ? String(this.form.location[1]) : undefined,
           address: this.form.address || undefined,
-          eventDictKey: this.form.type || undefined,
-          aiType: Array.isArray(this.form.algorithm) ? this.form.algorithm : [this.form.algorithm], // 传数组
+          workOrderTypeDictKey: this.form.type || undefined,
+          aiType: this.form.algorithm && this.form.algorithm.length > 0 
+            ? this.form.algorithm 
+            : undefined, // 传数组
           updateUser: handlerValue,
           createDept: this.form.department || undefined,
           isDraft: 1
@@ -1461,7 +1471,7 @@
               发起时间: item.create_time || '',
               关联算法: item.ai_types || '',
               工单内容: item.address || '',
-              工单类型: this.types.find(t => t.value === item.event_dict_key)?.label || '',
+              工单类型: this.types.find(t => t.value === item.work_order_type_dict_key)?.label || '',
               经纬度: (!isNaN(longitude) && !isNaN(latitude)) ? `${longitude.toFixed(6)}, ${latitude.toFixed(6)}` : '',
               创建人: item.create_user || '',
               处理人: item.update_user || '',
@@ -1508,8 +1518,12 @@
 
     // 文件改变时的钩子
     handleFileChange(file, fileList) {
-      this.form.photos = fileList;
-      this.currentDetail.photos = fileList;
+      // 保持最新的文件列表
+      this.form.photos = fileList.map(item => ({
+        ...item,
+        existingUrl: item.url && !item.raw ? item.url : null // 标记已存在的图片URL
+      }));
+      this.currentDetail.photos = this.form.photos;
     },
 
     // 文件移除时的钩子
@@ -1803,7 +1817,7 @@
       }
 
       // 获取工单类型值 - 从types中找到匹配的值
-      const typeValue = this.types.find(t => t.label === row.type)?.value || row.event_dict_key;
+      const typeValue = this.types.find(t => t.label === row.type)?.value || row.work_order_type_dict_key;
 
       // 获取处理人ID - 使用userNameToIdMap映射
       const handlerId = this.userNameToIdMap[row.handler] || row.handler;
@@ -1817,26 +1831,47 @@
         映射后类型值: typeValue
       });
 
+      // 修改算法数组的处理逻辑
       let algorithmArr = [];
-      if (Array.isArray(row.aiType)) {
-        algorithmArr = row.aiType;
-      } else if (typeof row.aiType === 'string' && row.aiType) {
-        algorithmArr = row.aiType.split(',').map(i => i.trim());
-      }
-      this.form = {
-        id: row.id,
-        name: row.orderName,
-        type: typeValue,
-        department: deptId,
-        handler: handlerId, // 使用映射后的处理人ID
-        algorithm: algorithmArr, // 回显为数组
-        location: Array.isArray(row.location) && row.location.length >= 2
-          ? [Number(row.location[0]), Number(row.location[1])]
-          : [],
-        address: row.address || '',
-        content: row.content,
-        photos: [],
-      };
+  if (Array.isArray(row.aiType)) {
+    algorithmArr = row.aiType;
+  } else if (typeof row.aiType === 'string' && row.aiType) {
+    // 首先尝试将字符串按照逗号或顿号分割
+    algorithmArr = row.aiType.split(/[,、]/).map(item => item.trim());
+  }
+
+  // 确保算法值与选项匹配
+  algorithmArr = algorithmArr.map(item => {
+    // 如果是字符串值,尝试找到对应的 dict_key
+    if (typeof item === 'string') {
+      const matchedAlgorithm = this.algorithms.find(
+        algo => algo.dict_value === item || algo.dict_key === item
+      );
+      return matchedAlgorithm ? matchedAlgorithm.dict_key : item;
+    }
+    return item;
+  }).filter(Boolean); // 过滤掉无效值
+
+  console.log('算法处理:', {
+    原始值: row.aiType,
+    分割后: algorithmArr,
+  });
+
+  this.form = {
+    id: row.id,
+    name: row.orderName,
+    type: typeValue,
+    department: deptId,
+    handler: handlerId,
+    algorithm: algorithmArr,
+    location: Array.isArray(row.location) && row.location.length >= 2
+      ? [Number(row.location[0]), Number(row.location[1])]
+      : [],
+    address: row.address || '',
+    content: row.content,
+    photos: [],
+  };
+
       this.form.location = Array.isArray(row.location) && row.location.length >= 2
         ? [
           Number(row.location[0]),
@@ -1853,14 +1888,36 @@
       }
       // 如果有图片,添加到表单中
       if (row.photo_url) {
+        // 创建一个带有必要信息的文件对象
         this.form.photos = [{
-          name: 'existing-photo',
-          url: row.photo_url
+          name: 'existing-photo.jpg', // 添加默认扩展名
+          url: row.photo_url,         // 用于预览的URL
+          status: 'success',          // 标记为已上传成功
+          raw: null,                  // 初始化为null
+          existingUrl: row.photo_url  // 保存原始URL,用于区分是否为已存在的图片
         }];
       }
 
+      // 调试输出
+      console.log('编辑表单数据:', {
+        原始算法值: row.aiType,
+        处理后算法值: algorithmArr,
+        表单数据: this.form
+      });
+
       this.dialogVisible = true;
     },
+
+    // 添加数据监听以确保算法数据的响应性
+    watch: {
+      'form.algorithm': {
+        handler(newVal) {
+          console.log('算法值变化:', newVal);
+        },
+        deep: true
+      }
+    },
+
     // 添加删除方法
     handleDelete(row) {
       this.$confirm('确认删除该工单?', '提示', {

--
Gitblit v1.9.3