From ca87d8ff8645744dd900cdabff6c96c5c272ebe4 Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Mon, 28 Apr 2025 15:02:10 +0800
Subject: [PATCH] Merge branch 'test' of http://139.196.74.78:10010/r/drone/drone-web-manage into test

---
 src/views/tickets/orderLog.vue |  189 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 178 insertions(+), 11 deletions(-)

diff --git a/src/views/tickets/orderLog.vue b/src/views/tickets/orderLog.vue
index 09e5af3..ef0c0bf 100644
--- a/src/views/tickets/orderLog.vue
+++ b/src/views/tickets/orderLog.vue
@@ -73,7 +73,7 @@
 
                         <template #menu="{ row }">
                             <div v-if="row.status == 1">
-                                <el-button v-if="hasPaddingBtnPermission()" type="text" icon="el-icon-view" @click="handleViewDetail(row)">审核</el-button>
+                                <el-button v-if="hasPaddingBtnPermission()" type="text" icon="el-icon-view" @click="handleCheckDetail(row)">审核</el-button>
                              
                             </div>
 
@@ -117,7 +117,7 @@
             </el-tab-pane>
         </el-tabs>
 
-        <!-- 新建工单对话框 -->
+        <!-- 新建工单 -->
         <el-dialog  v-model="dialogVisible" title="新建工单" width="70%" :close-on-click-modal="false" @close="resetForm">
            
        
@@ -342,6 +342,158 @@
                 </el-row>
             </el-form>
         </el-dialog>
+
+
+
+        <!-- 工单详情 -->
+        <el-dialog v-model="detailVisibleCopy" title="工单详情" width="70%" :close-on-click-modal="false" @close="resetForm">
+  <div class="event-title-center">{{ form.name }}</div>
+  <el-form :model="form" ref="testform" label-width="100px">
+    <div class="custom-steps-container">
+      <!-- 标题行 -->
+      <div class="steps-titles">
+        <div v-for="(record, index) in form.record_list" :class="{ active: record.user_id >= 0 }"
+          :key="index" class="step-title">
+          {{ record.status_str }}
+        </div>
+      </div>
+
+      <!-- Element Steps 组件 -->
+      <el-steps :active="form.active" align-center class="custom-steps">
+        <el-step v-for="(record, index) in form.record_list" :key="index">
+          <template #description>
+            <span class="step-description" style="position: relative; display: inline-block;">
+              {{ record.user_name }}
+            </span>
+            <span style="
+              position: absolute;
+              left: 80%;  
+              top: 50%;
+              transform: translateY(-50%);
+              width: 100px;
+              margin-left: 4px;  
+              color: #666;
+              font-size: 12px;
+            ">
+              {{ record.interval_time_str }}
+            </span>
+            <div class="step-description">
+              {{ record.create_time_str }}
+            </div>
+          </template>
+        </el-step>
+      </el-steps>
+    </div>
+
+    <el-row :gutter="20">
+      <el-col :span="12">
+        <el-form-item label="工单名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入工单名称" :disabled="true"></el-input>
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="关联航线" prop="file_id">
+          <el-select v-model="form.file_id" placeholder="请选择航线" :disabled="true">
+            <el-option v-for="item in wayLineList" :key="item.wayline_id" :label="item.name"
+              :value="item.wayline_id" />
+          </el-select>
+        </el-form-item>
+      </el-col>
+    </el-row>
+    <el-row :gutter="20">
+      <el-col :span="12">
+        <el-form-item label="关联机巢" prop="device_sns">
+          <el-select v-model="form.device_sns" placeholder="请选择机巢" multiple :disabled="true">
+            <el-option
+              v-for="item in device_sns"
+              :key="item.device_sn"
+              :label="item.nickname"
+              :value="item.device_sn"
+            />
+          </el-select>
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="关联算法" prop="ai_types">
+          <el-select v-model="form.ai_types" placeholder="请选择关联算法" multiple :disabled="true">
+            <el-option v-for="item in ai_types" :key="item.dictKey" :label="item.dictValue"
+              :value="item.dictKey" />
+          </el-select>
+        </el-form-item>
+      </el-col>
+    </el-row>
+
+    <el-row :gutter="20">
+         <el-col :span="12"  prop="statusStr">
+           
+            <el-form-item label="当前状态">
+                      {{statusStr}}
+            </el-form-item>
+      </el-col>
+     
+                 <el-col :span="6">
+                        <el-form-item label="周期频次" prop="date_range">
+                            <el-date-picker v-model="form.date_range" type="daterange" range-separator="至"
+                                start-placeholder="开始日期" end-placeholder="结束日期" class="date-picker" :disabled="true"/>
+                        </el-form-item>
+                        </el-col>
+                    <el-col :span="3">
+                        <el-select v-model="form.rep_fre_type" placeholder="请选择频次" :disabled="true">
+                            <el-option v-for="item in cycles" :key="item" :label="item" :value="item" />
+                        </el-select>
+                    </el-col>
+
+                    <el-col :span="3">
+                        <el-time-picker style="width: 100px" v-model="form.deal_time" prop="deal_time" :disabled="true"
+                            value-format="HH:mm" :picker-options="{
+                                selectableRange: '00:00 - 23:59',
+                            }" />
+                    </el-col>
+   </el-row>
+      <el-row :gutter="20">
+         <el-col :span="12">
+        <el-form-item label="工单内容" prop="content">
+          <el-input
+            type="textarea"
+            v-model="form.content"
+            rows="2"
+            placeholder="请输入工单内容"
+            maxlength="255"
+            show-word-limit
+            :readonly="true"
+            :disabled="true"
+          ></el-input>
+        </el-form-item>
+      </el-col>
+
+       <el-col :span="12">
+        
+
+                        <el-button type="danger"
+                            v-if="form.status == 0 || (form.status == 2 && userInfo.user_id == form.create_user)"
+                            @click="submitForm(1)">发布</el-button>
+                        <!-- <el-button type="primary" v-if="form.status == 0 || userInfo.user_id == form.create_user"
+                            @click="submitForm(0)">保存</el-button> -->
+
+                        <el-button type="primary" v-if="form.status == 1 && this.permission.orderLogpass"
+                            @click="orderLogPass(form.id)">通过</el-button>
+                        <el-button type="danger" v-if="form.status == 1 && hasRejectionBtnPermission()"
+                            @click="orderLogReject(form.id)">驳回</el-button>
+                
+       </el-col>
+      </el-row>
+        
+ 
+
+    <el-row :gutter="20" style="height: 400px">
+      <el-col :span="24">
+        <map-container v-if='detailVisible' ref="MapContainer"></map-container>
+      </el-col>
+    </el-row>
+  </el-form>
+</el-dialog>
+
+        
     </basic-container>
 </template>
 
@@ -398,6 +550,7 @@
             ai_types: [],
             wayLineList: [],
             detailTitle:"编辑工单",
+            detailVisibleCopy: false,
 
             statuses: [
                 { label: '草稿', value: '0' },
@@ -501,7 +654,6 @@
     computed: {
         ...mapGetters(['userInfo', 'permission']),
         filteredTabs() {
-            // rejection_and_draft 权限控制“已驳回”和“草稿”tab
             const canShowRejectAndDraft = this.permission?.rejection_and_draft === true;
             return this.tabs.map(tab => {
                 if (tab.name === 'DRAFT') {
@@ -513,6 +665,7 @@
                 return { ...tab, isShow: true };
             }).filter(tab => tab.isShow);
         },
+      
     },
 
     methods: {
@@ -554,8 +707,7 @@
             }
         },
         formatCycleTime(row) {
-            return row.begin_time + '-' + row.end_time + '<br/>'
-                 + row.rep_rule_val
+            return row.cycle_time_value;
         },
 
         async fetchTableData() {
@@ -695,7 +847,7 @@
             const statusMap = {
                 1: 'warning',
                 2: 'info',
-                3: 'primary',
+                 3: 'primary',
                 4: 'success',
                 5: 'danger',
             }
@@ -768,6 +920,7 @@
                 address: '',
                 content: '',
                 photos: [],
+                status : null,
             }
             if (this.$refs.testform) {
                 this.$refs.testform.resetFields()
@@ -781,7 +934,6 @@
             return `${location[0].toFixed(6)}, ${location[1].toFixed(6)}`
         },
         async handleViewDetail(row) {
-             console.log("工单名称1111:");
             const response = await orderLogDetails(row.id);
             const data = response.data.data;
 
@@ -796,6 +948,21 @@
             this.device_sns = data.device_list;
           (this.permission && (this.permission.order_log_review  || this.permission.order_log_recall))&& (data.status==1||data.status==3||data.status==2) ? this.detailTitle="工单详情":this.detailTitle="编辑工单";
           console.log("工单名称:"+this.detailTitle);
+        },
+           async handleCheckDetail(row) {
+            const response = await orderLogDetails(row.id);
+            const data = response.data.data;
+
+            this.form = {
+                ...data,
+            };
+
+            this.detailVisibleCopy = true;
+            this.statusStr = this.mapStatus(data.status);
+
+            // 更新机巢列表
+            this.device_sns = data.device_list;
+
         },
         //导出
         async exportData() {
@@ -946,7 +1113,7 @@
             let response = await orderLogPass(id)
             let data = response.data.data
             this.$message.success('审核通过')
-            this.detailVisible = false
+            this.detailVisibleCopy = false
         },
         /**
          * 驳回
@@ -958,8 +1125,8 @@
             }).then(async ({ value }) => {
                 let response = await orderLogReject(id, value)
                 let data = response.data.data
-                this.$message.success('驳回成果')
-                this.detailVisible = false
+                this.$message.success('驳回成功')
+                this.detailVisibleCopy = false
             })
         },
     },
@@ -1105,5 +1272,5 @@
   color: #333;
 }
 </style>
-`
+``` 
 

--
Gitblit v1.9.3