无人机管理后台前端(已迁走)
chenyao
2025-11-17 233e4fc4f35bd00a36ee34a7fbf5e47b41db26db
src/views/system/helpCenter.vue
@@ -2,7 +2,8 @@
  <basic-container>
    <div class="helpContainer">
      <el-table
        class="custom-table"
        border
        class="custom-header"
        :data="helpData"
        style="width: 100%"
        :row-class-name="tableRowClassName"
@@ -16,20 +17,37 @@
        <el-table-column prop="levelTwoType" label="二级类别" />
        <el-table-column prop="uploadUser" label="上传者" />
        <el-table-column prop="createTime" label="上传时间" />
        <el-table-column label="操作" width="150" align="center">
          <template #default="scope">
            <span class="look" @click="clickDetail(scope.row)">查看</span>
            <el-upload
              style="display: inline-block"
              :show-file-list="false"
               :before-upload="(file) => onUploadFileBefore(file, scope.row)"
              :limit="1"
              accept=".pdf"
            >
              <span class="uploads" v-if="permission.helpCenterUpload">上传</span>
            </el-upload>
          </template>
        </el-table-column>
     <el-table-column label="操作" width="200" align="center">
  <template #default="scope">
    <div class="actionBar" >
      <el-button
        class="look"
        icon="el-icon-view"
        type="text"
        @click="clickDetail(scope.row)"
        v-if="permission.helpCenterLook"
      >
        查看
      </el-button>
      <el-upload
        style="display: inline-block"
        :show-file-list="false"
        :before-upload="file => onUploadFileBefore(file, scope.row)"
        :limit="1"
        accept=".pdf"
      >
        <el-button
          class="uploads"
          icon="el-icon-upload"
          type="text"
          v-if="permission.helpCenterUpload"
        >
          上传
        </el-button>
      </el-upload>
    </div>
  </template>
</el-table-column>
      </el-table>
    </div>
  </basic-container>
@@ -41,9 +59,9 @@
import { computed, onMounted } from 'vue';
const helpData = ref([]);
import { useStore } from 'vuex'
import { useStore } from 'vuex';
const store = useStore();
const  permission = computed(() => store.state.user.permission);
const permission = computed(() => store.state.user.permission);
// 表格隔行变色
const tableRowClassName = ({ row, rowIndex }) => {
  if (rowIndex % 2 === 1) {
@@ -55,37 +73,51 @@
const getlistDataAPI = () => {
  listDataAPI().then(res => {
    helpData.value = res.data.data;
  });
};
// 查看
const clickDetail = (val) => {
  const filePath = val.filePath
   if (!val.filePath) {
// const clickDetail = row => {
//   if (!row.filePath) {
//     ElMessage.warning('没有可预览的文件');
//     return;
//   }
//   fetch(row.filePath)
//     .then(response => response.blob())
//     .then(res => {
//       let blob = new Blob([res], { type: 'application/pdf' });
//       // pdfurl即转化后的结果
//       let pdfurl = window.URL.createObjectURL(blob);
//       // 新标签页打开,即可预览并下载
//       window.open(pdfurl);
//     });
// };
const clickDetail = val => {
  const filePath = val.filePath;
  if (!val.filePath) {
    ElMessage.warning('没有可预览的文件');
    return;
  }
  window.open(filePath, '_blank');
};
// 文件上传
const onUploadFileBefore = (file,row) => {
const params={
  id:row.id,
  filePath:row.filePath
}
const onUploadFileBefore = (file, row) => {
  const fileFormat = file.name?.split('.')[1];
  if (fileFormat !== 'pdf') return ElMessage.error('请上传pdf格式的文件');
  const formData = new FormData();
  formData.append('file', file, file.name);
  uploadFileAPI(formData).then(res => {
    if (res.data.code === 200) {
      const params = {
        id: row.id,
        filePath: res.data.data.link,
      };
      ElMessage.success('上传成功');
      updataDataAPI(params)
      updataDataAPI(params);
    } else {
      ElMessage.error('上传失败');
    }
     getlistDataAPI();
    getlistDataAPI();
  });
};
onMounted(() => {
@@ -94,12 +126,12 @@
</script>
<style lang="scss">
.helpContainer {
  .el-table .success-row {
    --el-table-tr-bg-color: #fff;
  }
  .el-table .warning-row {
    --el-table-tr-bg-color: #f3f6ff;
  }
  // .el-table .success-row {
  //   --el-table-tr-bg-color: #fff;
  // }
  // .el-table .warning-row {
  //   --el-table-tr-bg-color: #f3f6ff;
  // }
}
</style>
<style scoped lang="scss">
@@ -129,18 +161,30 @@
.helpContainer {
  height: 100%;
  .look {
    font-family: Source Han Sans CN, Source Han Sans CN;
    color: #1c5cff;
    // font-family: Source Han Sans CN, Source Han Sans CN;
    // color: #1c5cff;
    cursor: pointer;
    margin-right: 15px;
    font-size: 14px;
    // font-size: 14px;
  }
  .uploads {
    font-family: Source Han Sans CN, Source Han Sans CN;
    font-weight: 400;
    font-size: 14px;
    color: #19876d;
    // font-family: Source Han Sans CN, Source Han Sans CN;
    // font-weight: 400;
    // font-size: 14px;
    // color: #19876d;
    cursor: pointer;
  }
  .actionBar {
  display: flex;
  justify-content: center;
   align-items: center;
    gap: 8px;
  }
  :deep(.custom-header th.el-table__cell) {
  color: rgba(0, 0, 0, 0.85);
  background: #fafafa;
}
}
</style>