无人机管理后台前端(已迁走)
罗广辉
2025-08-08 ca690e94ea24f91bd00009b4b410cffcf7a42b88
Merge remote-tracking branch 'origin/feature/v5.0/5.0.1' into feature/v5.0/5.0.1
3 files modified
94 ■■■■ changed files
src/views/job/components/SearchBox.vue 4 ●●● patch | view | raw | blame | history
src/views/tickets/orderLog.vue 3 ●●●●● patch | view | raw | blame | history
src/views/tickets/ticket.vue 87 ●●●● patch | view | raw | blame | history
src/views/job/components/SearchBox.vue
@@ -343,8 +343,10 @@
    const dateArray = [date, date];
    dateRange.value = dateArray;
    const find = store.state.tags.bsTagList.find(i => i.path === '/job/jobstatistics')
          find && (find.query = {})
  }
    // 查询一次
      // 查询一次
    handleSearch()
});
</script>
src/views/tickets/orderLog.vue
@@ -702,8 +702,11 @@
    if (id) {
      // 确保 id 存在
      this.handleViewDetail({ id })
      const find = this.$store.state.tags.bsTagList.find(i => i.path === '/tickets/orderLog')
        find && (find.query = {})
    } else {
      console.error('工单ID不存在!')
    }
  },
  computed: {
src/views/tickets/ticket.vue
@@ -36,6 +36,7 @@
              placeholder="请选择工单类型"
              class="filter-item"
              clearable
              @change="handleSearch"
            >
              <el-option
                v-for="item in types"
@@ -59,6 +60,7 @@
              placeholder="请选择状态"
              class="filter-item"
              clearable
              @change="handleSearch"
            >
              <el-option
                v-for="item in statuses"
@@ -72,6 +74,7 @@
              placeholder="请选择关联算法"
              class="filter-item"
              clearable
              @change="handleSearch"
            >
              <el-option
                v-for="item in algorithms"
@@ -85,6 +88,7 @@
              placeholder="请选择复核状态"
              class="filter-item"
              clearable
              @change="handleSearch"
            >
              <el-option
                v-for="item in reviewStatuses"
@@ -374,7 +378,7 @@
    </el-dialog>
    <!-- 工单详情对话框 -->
    <el-dialog   align-center v-model="detailVisible" title="工单详情" width="80%" append-to-body>
    <el-dialog   class="custom-dialog" align-center v-model="detailVisible" title="工单详情" width="80%"  append-to-body>
      <div class="detail-container">
        <div class="detail-top-title">
          <div class="event-title-center event-orderNumber">
@@ -417,7 +421,8 @@
          </el-steps>
        </div>
        <!-- 基本信息表格 -->
      <div class="PopUpTableScrolls">
          <!-- 基本信息表格 -->
        <el-table :show-header="false" :data="formattedDetailFields" border class="tableCss">
          <el-table-column prop="label1" label="基本信息" width="150">
            <template #default="{ row }">
@@ -644,17 +649,18 @@
             
          </el-row>
        </div>
      </div>
        <!-- 操作按钮 -->
        <div class="dialog-footer">
        <div class="dialog-footer1">
            <div
                class="leftBtn"
                :class="currentIndex === 0 ? 'disableds' : ''"
                @click="leftClick"
              >
               <el-icon><ArrowLeft /></el-icon>
               上一页
              </div>
       <div>
       <div class="btngroups">
           <template v-if="currentDetail.status === 2">
            <!-- 待审核 -->
            <el-button
@@ -713,7 +719,7 @@
                class="leftBtn"
                @click="rightClick"
              >
               <el-icon><ArrowRight /></el-icon>
              下一页
              </div>
        </div>
      </div>
@@ -729,6 +735,7 @@
      <el-form :model="dispatchForm" :rules="dispatchRules" ref="dispatchForm" label-width="100px">
        <el-form-item label="选择部门" prop="department">
          <el-select
            v-model="dispatchForm.department"
            placeholder="请选择部门"
            @change="handleDispatchDepartmentChange"
@@ -743,6 +750,7 @@
        </el-form-item>
        <el-form-item label="选择处理人" prop="handler">
          <el-select
          filterable
            v-model="dispatchForm.handler"
            placeholder="请选择处理人"
            :disabled="!dispatchForm.department"
@@ -1268,7 +1276,6 @@
        { label: '当前状态', value: this.mapStatus(this.currentDetail.status) },
        { label: '事件地址', value: this.currentDetail.address || this.currentDetail.latAndLon }, // 包含经纬度信息
        { label: '关联算法',
        //  value: this.currentDetail.aiType
         value:
            this.algorithms.find(t => t.value === this.currentDetail.aiType)?.label ||
            this.currentDetail.aiType ||
@@ -1292,7 +1299,9 @@
          value2: filteredFields[i + 1]?.value || (filteredFields[i + 1]?.label ? '暂无数据' : ''),
        });
      }
      return formattedFields;
    },
    dynamicFixedStatuses() {
      // 直接使用接口返回的 stepInfos
@@ -2344,8 +2353,8 @@
        this.$message.warning('请填写工单名称');
        return;
      }
      if (!this.currentDetail.type) {
        this.$message.warning('请选择工单类型');
      if (!this.currentDetail.aiType) {
        this.$message.warning('请选择关联算法');
        return;
      }
      if (!this.currentDetail.content || !this.currentDetail.content.trim()) {
@@ -2355,6 +2364,9 @@
      // 通过验证后,打开派发对话框
      this.dispatchDialogVisible = true;
      console.log('受理',this.currentDetail);
    },
    hasProcessingBtnPermission() {
      // undefined 或 false 都返回 false,只有 true 返回 true
@@ -2394,6 +2406,8 @@
        return;
      }
      this.dispatchLoading = true;
      console.log('派发成功',this.currentDetail);
      this.$refs.dispatchForm.validate(async valid => {
        if (valid) {
          try {
@@ -2407,7 +2421,9 @@
              content: this.currentDetail.content, // 使用 content 替代原来的 remark
              createDept: this.dispatchForm.department, // 派发部门 ID
              updateUser: this.dispatchForm.handler, // 处理人 ID
              aiType:this.currentDetail.aiType
            };
           console.log('派发',data);
            const file = this.currentDetail.file || null; // 如果没有文件,则为 null
@@ -2950,7 +2966,9 @@
};
</script>
<style lang="scss">
.custom-dialog {  max-height: 96vh; /* 80% 视口高度 */}
</style>
<style lang="scss" scoped>
::v-deep(.el-tabs) {
@@ -3157,10 +3175,7 @@
}
.dialog-footer {
display: flex;
  text-align: center;
  align-items: center;
  justify-content: space-between;
  padding-top: 16px;
  border-top: 1px solid #ebeef5;
@@ -3176,7 +3191,33 @@
    }
  }
}
.dialog-footer1 {
  position: sticky;
    bottom: 28px;
    left: 0;
    right: 0;
    background: white;
    z-index: 10;
    padding: 16px 20px;
    border-top: 1px solid #ebeef5;
    display: flex;
    justify-content: space-between;
    align-items: center;
  .el-button + .el-button {
    margin-left: 12px;
  }
.btngroups {
margin-left: 12px;
}
  .el-button {
    padding: 9px 20px;
    &:last-child {
      margin-left: 12px;
      margin-right: 12px;
    }
  }
}
.map-container {
  width: 100%;
  height: 400px;
@@ -3338,18 +3379,16 @@
}
.leftBtn {
  width: 36px;
  height: 36px;
  width: 70px;
  height: 32px;
  background-color: #999;
  border-radius: 50%;
  border-radius: 5px;
  text-align: center;
  line-height: 36px;
line-height: 32px;
  color: #fff;
  cursor: pointer;
  opacity: 0.8;
display: flex;
align-items: center;
justify-content: center;
}
.disableds {
@@ -3358,7 +3397,11 @@
  pointer-events: none;
  opacity: 0.3 !important;
}
.PopUpTableScrolls{
height: 600px;
overflow-y: scroll;
overflow-x: hidden;
}
.media-box {
  width: 100%;
  border: 1px solid #dcdfe6;
@@ -3374,7 +3417,7 @@
  .media-content {
    position: relative;
    height: 250px;
    height: 500px;
    :deep(.el-image) {
      width: 100% !important;