From aed141813bc64c7afdf3a337d631585b0a3cf42e Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Thu, 17 Jul 2025 09:39:43 +0800
Subject: [PATCH] Merge branch 'test'

---
 src/views/tickets/ticket.vue |   65 +++++++++++++++++++++++++++-----
 1 files changed, 55 insertions(+), 10 deletions(-)

diff --git a/src/views/tickets/ticket.vue b/src/views/tickets/ticket.vue
index 84138c0..3fe0bc4 100644
--- a/src/views/tickets/ticket.vue
+++ b/src/views/tickets/ticket.vue
@@ -33,8 +33,8 @@
           <!-- 表格部分 -->
           <avue-crud class="ztzf-public-general-avue-crud" ref="avueCrud" v-model="tableData" :option="option"
             :data="tableData" v-model:page="page" @size-change="sizeChange" @current-change="handleCurrentChange"
-            :table-loading="loading" @selection-change="handleSelectionChange" :permission="permissionList"
-            v-if="activeTab === tab.name">
+            @refresh-change="refreshChange" :table-loading="loading" @selection-change="handleSelectionChange"
+            :permission="permissionList" v-if="activeTab === tab.name">
             <template #menu-left>
               <el-button v-if="(activeTab === 'all' || activeTab === 'myTickets') && permissionList.addBtn"
                 type="primary" icon="el-icon-plus" @click="handleAdd">新建工单</el-button>
@@ -54,8 +54,11 @@
                 <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button>
               </template>
 
-              <el-button v-if="row.status === 4 && row.isReview !== 1" type="text" icon="el-icon-check"
-                @click="reCheck(row)">复核</el-button>
+              <template v-if="permission.tickets_repeat_review">
+                <el-button v-if="row.status === 4 && row.isReview !== 1" type="text" icon="el-icon-check"
+                  @click="reCheck(row)">复核</el-button>
+              </template>
+
             </template>
             <template #status="{ row }">
               <span :style="getStatusTagType(row.status) ? 'color:' + getStatusTagType(row.status) : ''">
@@ -146,11 +149,22 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="附件图片" prop="photos" required class="upload-wrapper">
-                <el-upload ref="upload" :action="'#'" :auto-upload="false" list-type="picture-card"
-                  :on-change="handleFileChange" :on-remove="handleUploadRemove" :before-upload="beforeUpload"
-                  :file-list="form.photos" :limit="1" accept="image/*" class="create-upload">
+                <el-upload v-if="createoredit === 1" ref="upload" :action="'#'" :auto-upload="false"
+                  list-type="picture-card" :on-change="handleFileChange" :on-remove="handleUploadRemove"
+                  :before-upload="beforeUpload" :file-list="form.photos" :limit="1" accept="image/*"
+                  class="create-upload">
                   <template v-if="form.photos.length < 1">
                     <!-- <i class="el-icon-plus">+</i> -->
+                    <div class="el-icon-plus">
+                      <span>+</span>
+                    </div>
+                  </template>
+                </el-upload>
+                <el-upload v-else ref="upload" :action="'#'" :auto-upload="false" list-type="picture-card"
+                  :on-change="handleFileChange" :on-remove="handleUploadRemove" :before-upload="beforeUpload"
+                  :file-list="popupShowImage(form.photos)" :limit="1" accept="image/*" class="create-upload">
+                  <template v-if="form.photos.length < 1">
+
                     <div class="el-icon-plus">
                       <span>+</span>
                     </div>
@@ -507,9 +521,11 @@
 </template>
 
 <script>
+import { getSmallImg, getShowImg } from '@/utils/util'
 import { ElMessageBox, ElLoading } from 'element-plus'
 import { calculateDefaultRange } from '@/utils/util'
 import { gcj02ToWgs84, wgs84ToGcj02 } from '@/utils/coordinateTransformation'
+import _ from 'lodash'
 import {
   getList,
   createTicket,
@@ -522,7 +538,6 @@
 } from '@/api/tickets/ticket'
 import { export_json_to_excel } from '@/utils/exportExcel'
 import geoJson from '@/assets/geoJson.json'
-
 import { mapGetters } from 'vuex'
 import { getAdcodeObj } from '@/utils/disposeData'
 function regExp (label, name) {
@@ -542,6 +557,7 @@
       dispatchLoading: false,
       completeLoading: false,
       finalizeLoading: false,
+      createoredit: '',
       activeTab: 'all',
       // tabs 只保留静态结构,不做权限判断
       tabs: [
@@ -733,6 +749,11 @@
 
   mounted () {
     const href = this.$route.href
+    if (this.$route?.query?.status !== undefined && this.$route?.query?.status !== null) {
+      this.filters.status = this.$route?.query?.status + ''
+      this.$router.replace({})
+    }
+
     let curQueryParams = {}
 
     if (href.indexOf('?') != -1 && href.split('?').length > 0) {
@@ -894,7 +915,7 @@
         { label: '关联任务', value: this.currentDetail.job_name || '/' },
         { label: '任务发起人', value: this.currentDetail.creator },
         { label: '当前状态', value: this.mapStatus(this.currentDetail.status) },
-        { label: '事件地址', value: this.currentDetail.address }, // 包含经纬度信息
+        { label: '事件地址', value: this.currentDetail.address || this.currentDetail.latAndLon }, // 包含经纬度信息
         { label: '关联算法', value: this.currentDetail.aiType },
         { label: '发起单位', value: this.currentDetail.department },
         { label: '发起任务时间', value: this.currentDetail.startTime },
@@ -971,6 +992,16 @@
         return '/'
       }
     },
+
+    popupShowImage () {
+      return (list) => {
+
+        return list.map(item => ({
+          ...item,
+          url: getShowImg(item.url)
+        }))
+      }
+    }
   },
 
   methods: {
@@ -1477,6 +1508,8 @@
     },
 
     async handleCurrentChange (val) {
+
+
       // 先更新页码
       this.page.currentPage = val
       // 等待 DOM 更新后再请求数据
@@ -1485,6 +1518,7 @@
     },
 
     async sizeChange (val) {
+
       this.page.pageSize = val
       this.page.currentPage = 1 // 重置到第一页
       await this.$nextTick()
@@ -1492,6 +1526,8 @@
     },
 
     handleAdd () {
+
+      this.createoredit = 1
       this.dialogVisible = true
       this.mapParams.center = null
       this.form.location = []
@@ -1523,6 +1559,7 @@
     },
 
     async handleViewDetail (row) {
+
       // 找到当前行在tableData中的索引
       this.currentIndex = this.tableData.findIndex(item => item.id === row.id)
       // 先设置workType,直接从row读取
@@ -1586,8 +1623,13 @@
           this.stepInfos = []
         }
       }
+      console.log(detailData, 'detailDatadetailDatadetailData')
+      this.currentDetail = {
+        ...detailData,
+        address: null,
+        latAndLon: _.round(detailData.location[0], 6) + ',' + _.round(detailData.location[1], 6)
+      }
 
-      this.currentDetail = detailData
       console.log('this.currentDetail', this.currentDetail)
       this.detailVisible = true
       this.$nextTick(() => {
@@ -2002,6 +2044,7 @@
 
     // 添加编辑方法
     handleEdit (row) {
+      this.createoredit = 2
       console.log('编辑原始数据:', row)
 
       // 尝试从row.dept_id或通过部门名称查找对应的部门ID
@@ -2077,6 +2120,7 @@
         address: row.address || '',
         content: row.content,
         photos: [],
+
       }
 
       let curLocation = []
@@ -2150,6 +2194,7 @@
 
     // 添加选择变化处理方法
     handleSelectionChange (selection) {
+
       this.selections = selection
       console.log('已选择的行:', selection)
     },

--
Gitblit v1.9.3