无人机管理后台前端(已迁走)
rain
2025-05-06 049b8349103e2cb7f4e8d3be7774bfc4245d9de4
取消已完结状态,增加复核相关信息
1 files modified
46 ■■■■ changed files
src/views/tickets/ticket.vue 46 ●●●● patch | view | raw | blame | history
src/views/tickets/ticket.vue
@@ -23,6 +23,9 @@
              <el-option v-for="item in algorithms" :key="item.dict_key" :label="item.dict_value"
                :value="item.dict_key" />
            </el-select>
            <el-select v-model="filters.isReview" placeholder="请选择复核状态" class="filter-item" clearable>
              <el-option v-for="item in reviewStatuses" :key="item.value" :label="item.label" :value="item.value" />
            </el-select>
            <el-button type="primary" icon="el-icon-search" @click="handleSearch">搜索</el-button>
            <el-button icon="el-icon-refresh" @click="handleReset">清空</el-button>
          </div>
@@ -269,10 +272,10 @@
        </div>
        <!-- 上传图片 -->
        <div v-if="[3, 4].includes(currentDetail.status)" class="form-section" style="margin-bottom: 32px;">
        <div v-if="[3].includes(currentDetail.status)" class="form-section" style="margin-bottom: 32px;">
          <div class="section-title" v-if="hasProcessedAndOverBtnPermission()">
            <!-- 已完成状态显示必填星号 -->
            <template v-if="currentDetail.status === 4 || currentDetail.status === 3">
            <template v-if="currentDetail.status === 3">
              <span class="required-label">
                <span class="required-star">*</span>上传图片
              </span>
@@ -381,8 +384,8 @@
          </template>
          <template v-else-if="currentDetail.status === 4">
            <!-- 已完成 -->
            <el-button v-if="hasProcessedAndOverBtnPermission()" type="primary" :loading="finalizeLoading"
              @click="finalizeTicket">完结工单</el-button>
            <!-- <el-button v-if="hasProcessedAndOverBtnPermission()" type="primary" :loading="finalizeLoading"
              @click="finalizeTicket">完结工单</el-button> -->
            <el-button @click="detailVisible = false">取消</el-button>
          </template>
          <template v-else-if="currentDetail.status === 5">
@@ -490,7 +493,7 @@
        { label: "待处理", name: "processing", value: 0, count: 0 },
        { label: "处理中", name: "inProgress", value: 3, count: 0 },
        { label: "已完成", name: "completed", value: 4, count: 0 },
        { label: "已完结", name: "closed", value: 5, count: 0 },
        // { label: "已完结", name: "closed", value: 5, count: 0 },
        { label: "我发起的工单", name: "myTickets", value: null, count: 0 },
      ],
      filters: {
@@ -500,6 +503,7 @@
        dateRange: [],
        status: "",
        algorithm: "", // 新增算法筛选字段
        isReview: "", // 添加复核状态筛选字段
      },
      departments: [],
      types: [],
@@ -515,6 +519,10 @@
        { label: "处理中", value: "3" },
        { label: "已完成", value: "4" },
        { label: "已完结", value: "5" },
      ],
      reviewStatuses: [
        { label: "未复核", value: 0 },
        { label: "已复核", value: 1 }
      ],
      tableData: [],
      option: {
@@ -534,22 +542,31 @@
        page: true,
        column: [
          // { label: "序号", prop: "id", width: 70 },
          { label: "工单编号", prop: "orderNumber", width: 150, overHidden: true, tooltip: true },
          { label: "工单名称", prop: "orderName", width: 170, overHidden: true, tooltip: true },
          { label: "工单编号", prop: "orderNumber", width: 120, overHidden: true, tooltip: true },
          { label: "工单名称", prop: "orderName", width: 150, overHidden: true, tooltip: true },
          { label: "所属单位", prop: "department", width: 100, overHidden: true, tooltip: true },
          { label: "发起时间", prop: "startTime", width: 160 },
          { label: "关联算法", prop: "aiType", width: 160, overHidden: true, tooltip: true },
          { label: "工单类型", prop: "type", width: 120, overHidden: true, tooltip: true },
          { label: "关联算法", prop: "aiType", width: 150, overHidden: true, tooltip: true },
          { label: "工单类型", prop: "type", width: 130, overHidden: true, tooltip: true },
          {
            label: "工单内容",
            prop: "content",
            slot: true,
            width: 190,
            width: 152,
            overHidden: true
          },
          { label: "创建人", prop: "creator", width: 100 },
          { label: "处理人", prop: "handler", width: 100 },
          { label: "工单状态", prop: "status", slot: true, width: 90 }
                   {
            label: "复核状态",
            prop: "isReview",
            width: 90,
            formatter: (row) => {
              return row.isReview === 1 ? '已复核' : '未复核'
            }
          },
          { label: "工单状态", prop: "status", slot: true, width: 90 },
        ],
      },
      page: {
@@ -942,7 +959,7 @@
      try {
        const currentTab = this.tabs.find(tab => tab.name === this.activeTab)
        const params = {
          work_order_type_dict_key: this.filters.type || undefined,
          word_order_type: this.filters.type || undefined,
          status: currentTab?.name === 'myTickets' ? undefined :
            this.filters.status !== "" ? Number(this.filters.status) :
              currentTab?.value,
@@ -957,6 +974,7 @@
          is_draft: currentTab?.name === 'myTickets' ? 1 : undefined,
          user_id: currentTab?.name === 'myTickets' ? this.userInfo.user_id : undefined,
          is_review: this.filters.isReview === '' ? undefined : this.filters.isReview, // 添加复核状态查询参数
        }
        const response = await getList(params)
@@ -1002,6 +1020,7 @@
            work_type: item.work_type !== undefined ? Number(item.work_type) : 0, // 保留work_type字段并转为数字
            job_name: item.job_name || '',
            job_create_time: item.job_create_time || '',
            isReview: item.is_review, // 添加复核状态字段映射
          }
        })
@@ -1252,6 +1271,7 @@
        dateRange: [],
        status: "",
        algorithm: "", // 重置时清空算法筛选
        isReview: "", // 重置时清空复核状态
      }
      this.page.currentPage = 1
      this.fetchTableData()
@@ -1328,7 +1348,7 @@
        const steps = Array.isArray(stepResponse.data.data)
          ? stepResponse.data.data
          : stepResponse.data.data?.steps || []
        const finishedStep = steps.find(s => String(s.status) === '5')
        const finishedStep = steps.find(s => String(s.status) === '4')
        this.totalTime = finishedStep && finishedStep.total_time ? finishedStep.total_time : ''
        if (this.activeTab !== 'myTickets') {
          this.stepInfos = steps.map(step => ({