无人机管理后台前端(已迁走)
张含笑
2025-12-09 5808f76456ca0d40de5074f132b73a5a488e3e13
src/views/tickets/ticketComponent/TicketDetailDialog.vue
@@ -127,6 +127,8 @@
              >
                <el-input
                  type="textarea"
                  :maxlength="200"
                  show-word-limit
                  v-model="currentDetail.content"
                  placeholder="请输入工单内容"
                  class="required-input"
@@ -154,6 +156,8 @@
              v-model="currentDetail.processingDetail"
              placeholder="请输入事件处理详情"
              :rows="4"
              :maxlength="200"
              show-word-limit
              style="width: 100%; margin-bottom: 10px"
              :disabled="!isCurrentUserAssigned"
            />
@@ -391,6 +395,7 @@
import { ElMessage} from 'element-plus';
const store = useStore()
const userInfo = computed(() => store.state.user.userInfo)
const isLoading = ref(false);
// console.log('userInfo',userInfo.value);
// 定义props
const props = defineProps({
@@ -523,8 +528,13 @@
  () => props.currentDetail,
  (newVal) => {
    if (newVal && dialogVisible.value) {
      loadStepInfo();
      initMap();
    isLoading.value = true;
     setTimeout(() => {
        loadStepInfo();
        initMap();
        isLoading.value = false;
      }, 50);
    }
  },
  { deep: true }
@@ -631,7 +641,7 @@
const hasProcessedAndOverBtnPermission = () => {
  return props.permission && props.permission.tickets_view_processedAndOver === true;
};
// 通过不通过
const hasReviewBtnPermission = () => {
  return props.permission && props.permission.tickets_review_btn === true;
};
@@ -730,10 +740,9 @@
const handleComplete = async () => {
  if (completeLoading.value) return;
  completeLoading.value = true;
  try {
    if (!props.currentDetail.processingDetail) {
      ElMessage.warning('请先填写事件处理详情');
      completeLoading.value = false;
      return;
    }
@@ -742,18 +751,15 @@
      completeLoading.value = false;
      return;
    }
  try {
    const data = {
      id: props.currentDetail.id,
      status: props.currentDetail.status,
      processingDetails: props.currentDetail.processingDetail,
      eventNum: props.currentDetail.orderNumber,
    };
    const file = props.currentDetail.photos?.[0]?.raw || null;
    const response = await flowEvent(data, file);
    if (response.data.code === 0) {
      ElMessage.success('工单已完成');
      emit('detail-success');
@@ -776,11 +782,10 @@
<style lang="scss">
.custom-dialog {
  max-height: 96vh;
 transition: max-height 0.3s ease-out;
  height: 96vh;
// min-height: 50vh;
  .el-dialog__body {
    border-top: 0.1rem solid #f0f0f0;
    overflow: hidden;
  }
}
@@ -820,13 +825,14 @@
.step-timer {
  position: absolute;
  right: 80%;
  right: 92%;
  top: 50%;
  transform: translateY(-50%);
  width: 100px;
  margin-left: 4px;
  color: #666;
  font-size: 12px;
  white-space: nowrap;
}
.event-total-time {
@@ -836,6 +842,9 @@
  margin-bottom: 12px;
}
.action-bar {
  margin-bottom: 16px;
}
.el-dialog {
  .el-form-item {
@@ -863,14 +872,116 @@
  margin-top: 12px;
}
.create-ticket-form {
  padding: 20px 10px;
  .form-section {
    background-color: #fff;
    border-radius: 4px;
    .el-row {
      margin-bottom: 16px;
      &:last-child {
        margin-bottom: 0;
      }
    }
  }
  .location-wrapper {
    width: 100%; // 修改为100%以适应父容器
    height: auto; // 修改为auto以自适应内容
    .map-button {
      width: 100%; // 让按钮填满容器宽度
      height: 36px; // 与其他输入框保持一致的高度
      display: flex;
      align-items: center;
      justify-content: center;
      i {
        margin-right: 4px;
      }
    }
    .location-text {
      margin-top: 8px;
      padding: 8px 12px;
      background-color: #f5f7fa;
      border-radius: 4px;
      color: #606266;
      font-size: 13px;
      line-height: 1.4;
    }
  }
  .upload-wrapper {
    .uploader {
      :deep(.el-upload--picture-card) {
        width: 120px;
        height: 100px;
        line-height: 128px;
      }
      :deep(.el-upload-list__item) {
        width: 120px;
        height: 120px;
      }
    }
    .upload-tip {
      font-size: 12px;
      color: #909399;
      line-height: 1.4;
      margin-top: 8px;
    }
  }
  .el-form-item {
    margin-bottom: 18px;
    &:last-child {
      margin-bottom: 0;
    }
  }
  :deep(.el-form-item__label) {
    font-weight: 500;
    color: #606266;
  }
  :deep(.el-textarea__inner) {
    padding: 8px 12px;
  }
  .full-width {
    width: 100%;
  }
}
:deep(.el-dialog__body) {
  border-top: 0.1rem solid #f0f0f0;
}
.dialog-footer-new {
  text-align: right;
  padding-top: 16px;
  border-top: 1px solid #ebeef5;
  .el-button + .el-button {
    margin-left: 12px;
  }
  .el-button {
    padding: 9px 20px;
    &:last-child {
      margin-left: 12px;
    }
  }
}
.dialog-footer1-new {
  position: sticky;
  // bottom: 28px;
  bottom: 28px;
  left: 0;
  right: 0;
  background: white;
@@ -912,6 +1023,18 @@
  }
}
.location-info {
  margin-top: 10px;
  padding: 10px;
  background-color: #f5f7fa;
  border-radius: 4px;
  p {
    margin: 5px 0;
    color: #606266;
    font-size: 14px;
  }
}
.map-select {
  display: flex;
@@ -1067,13 +1190,12 @@
}
.PopUpTableScrolls {
  max-height: calc(100vh - 380px);
  min-height: 200px;
  overflow-y: auto;
  max-height: 600px;
  overflow-y: scroll;
  overflow-x: hidden;
  padding-bottom: 30px;
  scrollbar-width: thin;
}
.media-box {
  width: 100%;
  border: 1px solid #dcdfe6;
@@ -1257,7 +1379,6 @@
    }
  }
}
/* 新建工单和处理工单的上传组件样式 */
.create-upload,
.detail-upload {
@@ -1292,6 +1413,7 @@
    object-fit: contain;
  }
}
/* 必填项样式 */
.required-label {
  position: relative;
@@ -1302,6 +1424,7 @@
    margin-right: 4px;
  }
}
/* 必填输入框样式 */
.required-input {
  width: 100%;