From bcc1ce55aa699450905c68f957198428ed251c48 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期三, 12 六月 2024 17:17:35 +0800
Subject: [PATCH] 项目补录

---
 src/layout/components/Sidebar/menu.js                                     |   11 
 src/views/safetyReview/projectSupplement/components/supplemenrtDialog.vue |  411 ++++++++++++++++++++++++++++++++++
 src/views/safetyReview/projectSupplement/index.vue                        |  173 ++++++++++++++
 src/views/safetyReview/projectManage/components/signConfirm.vue           |   17 
 src/router/index.js                                                       |   13 +
 src/views/safetyReview/projectManage/components/rateConclusion.vue        |   15 
 src/api/backManage/supplement.js                                          |   39 +++
 7 files changed, 665 insertions(+), 14 deletions(-)

diff --git a/src/api/backManage/supplement.js b/src/api/backManage/supplement.js
new file mode 100644
index 0000000..1d94cc8
--- /dev/null
+++ b/src/api/backManage/supplement.js
@@ -0,0 +1,39 @@
+import request from '@/utils/request'
+
+export function getSupplementList(params) {
+    return request({
+        url: '/manage/project-supplement/list',
+        method: 'get',
+        params: params
+    })
+}
+
+export function addSupplement(data) {
+    return request({
+        url: '/manage/project-supplement/add',
+        method: 'post',
+        data: data
+    })
+}
+
+export function editSupplement(params) {
+    return request({
+        url: `/manage/project-supplement/edit`,
+        method: 'put',
+        data: params
+    })
+}
+
+export function getSupplementDetail(params) {
+    return request({
+        url: '/manage/project-supplement/detail/' + params.projectId,
+        method: 'get',
+    })
+}
+export function delSupplement(data) {
+    return request({
+        url: `/manage/project-supplement/remove/` + data.id,
+        method: 'delete'
+    })
+}
+
diff --git a/src/layout/components/Sidebar/menu.js b/src/layout/components/Sidebar/menu.js
index e2bd32f..74bc42a 100644
--- a/src/layout/components/Sidebar/menu.js
+++ b/src/layout/components/Sidebar/menu.js
@@ -7,6 +7,11 @@
             meta: { title: '项目管理',icon: 'form',affix: true }
         },
         {
+            path: '/projectSupplement',
+            name: 'projectSupplement',
+            meta: { title: '项目补录',icon: 'form',affix: true }
+        },
+        {
             path: '/institution',
             name: 'Institution',
             meta: { title: '机构公示',icon: 'chart',affix: true }
@@ -102,6 +107,12 @@
             meta: { title: '项目管理',icon: 'form',affix: true }
         },
         {
+            path: '/projectSupplement',
+            name: 'projectSupplement',
+            meta: { title: '项目补录',icon: 'form',affix: true }
+        },
+
+        {
             path: '/userManage',
             redirect: '/userManage/supervise',
             meta: { title: '用户管理',icon: 'peoples'},
diff --git a/src/router/index.js b/src/router/index.js
index 59f54a4..49e47c5 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -156,6 +156,19 @@
     ]
   },
   {
+    path: '/projectSupplement',
+    component: Layout,
+    redirect: '/projectSupplement',
+    children: [
+      {
+        path: '/projectSupplement',
+        component: () => import('@/views/safetyReview/projectSupplement/index.vue'),
+        name: 'projectSupplement',
+        meta: { title: '项目补录',icon: 'form', affix: true }
+      }
+    ]
+  },
+  {
     path: '/process',
     component: Layout,
     redirect: '/process',
diff --git a/src/views/safetyReview/projectManage/components/rateConclusion.vue b/src/views/safetyReview/projectManage/components/rateConclusion.vue
index e51a75d..2cbc955 100644
--- a/src/views/safetyReview/projectManage/components/rateConclusion.vue
+++ b/src/views/safetyReview/projectManage/components/rateConclusion.vue
@@ -30,17 +30,18 @@
                 :disabled="projectType === 'view' || isEnd"
                  :headers="state.header"
                  method="post"
-                 :on-success="handleAvatarSuccess"
+                :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)"
                  :on-exceed="showTip"
                  v-model:file-list="state.fileList"
                  :on-remove="handleRemove"
                  :data="state.uploadData"
                  :on-preview="handlePreview"
-                 :limit='1'
+                 :limit='15'
+                 :before-upload="picSize"
             >
-              <el-button type="primary">附件上传</el-button>
+              <el-button type="primary">评价报告上传</el-button>
               <template #tip>
-                <div class="el-upload__tip">上传文件尺寸小于5M,最多可上传1份</div>
+                <div class="el-upload__tip">上传文件尺寸小于15M,最多可上传15份,多张图片建议合并为PDF文件规范上传。</div>
               </template>
             </el-upload>
           </el-form-item>
@@ -173,16 +174,16 @@
 }
 
 const picSize = async (rawFile) => {
-  if(rawFile.size / 1024 / 1024 > 2){
+  if(rawFile.size / 1024 / 1024 > 15){
     ElMessage({
       type: 'warning',
-      message: '文件大小不能超过2M'
+      message: '文件大小不能超过15M'
     });
     return false
   }
 };
 
-const handleAvatarSuccess = (res) => {
+const handleAvatarSuccess = (res,uploadFile) => {
   if(res.code === 200){
     getProcessFiles()
     ElMessage({
diff --git a/src/views/safetyReview/projectManage/components/signConfirm.vue b/src/views/safetyReview/projectManage/components/signConfirm.vue
index 9668e5d..d0b7d93 100644
--- a/src/views/safetyReview/projectManage/components/signConfirm.vue
+++ b/src/views/safetyReview/projectManage/components/signConfirm.vue
@@ -5,14 +5,11 @@
       <el-table-column label="人员姓名" prop="planPerson.person.name" align="center"/>
       <el-table-column label="联系电话" prop="planPerson.person.phone" align="center"/>
       <el-table-column label="职位" prop="planPerson.person.post" align="center"/>
-      <el-table-column label="项目担任角色" prop="username" align="center">
+      <el-table-column label="项目担任角色" prop="username" align="center" width="180">
         <template #default="scope">
-          <span>{{ scope.row.planPerson.playRole === 1?'项目负责人': scope.row.planPerson.playRole === 2?
-              '项目组成员':scope.row.planPerson.playRole === 3?
-                  '过程控制负责人':scope.row.planPerson.playRole === 4?
-                      '机构评价负责人':scope.row.planPerson.playRole === 5?
-                          '技术负责人':scope.row.planPerson.playRole === 6?'内部审核员':''}}
-          </span>
+          <div v-for="(item,index) in scope.row.playRolesName" :key="index">
+            <span>{{item.roleName}}</span><span v-if="index!==scope.row.playRolesName.length-1">,</span>
+          </div>
         </template>
       </el-table-column>
       <el-table-column label="评价师等级" prop="planPerson.person.level" align="center"/>
@@ -134,6 +131,12 @@
         facePic: item.faceRecord.facePath ? [import.meta.env.VITE_APP_BASE_API + '/' + item.faceRecord.facePath ] : [],
         signPic: item.signPath ? [import.meta.env.VITE_APP_BASE_API + '/' + item.signPath] : [],
         commitPic: item.insurancePath ? [import.meta.env.VITE_APP_BASE_API + '/' + item.insurancePath] : [],
+        playRolesName: item.planPerson.playRoles.map(role => {
+          const roleName =  role === 1?'项目负责人':role === 2? '项目组成员':role === 3? '过程控制负责人':role === 4? '机构评价负责人':role === 5? '技术负责人':role === 6?'内部审核员':''
+          return{
+            roleName
+          }
+        })
       }
     })
    console.log("res", state.tableData)
diff --git a/src/views/safetyReview/projectSupplement/components/supplemenrtDialog.vue b/src/views/safetyReview/projectSupplement/components/supplemenrtDialog.vue
new file mode 100644
index 0000000..be5a2f5
--- /dev/null
+++ b/src/views/safetyReview/projectSupplement/components/supplemenrtDialog.vue
@@ -0,0 +1,411 @@
+<template>
+  <div class="notice">
+    <el-dialog
+        v-model="dialogVisible"
+        :title="title"
+        width="550px"
+        :before-close="handleClose"
+    >
+      <el-form :model="state.form" size="default" ref="suppleRef" :rules="state.formRules" label-width="110px" >
+        <el-form-item label="所属机构:"  prop="agencyId">
+          <el-input v-if="isAgency" v-model="state.agencyName" disabled></el-input>
+          <el-select v-model="state.form.agencyId" v-else style="width: 100%" :disabled="isReview" v-loadMore="loadMore" class="m-2" placeholder="请选择机构" popper-class="more_select_dropdown"   >
+            <el-option
+                v-for="item in state.agencyList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="项目名称:" prop="name">
+          <el-input v-model.trim="state.form.name" placeholder="请输入项目名称" :disabled="isReview"></el-input>
+        </el-form-item>
+        <el-form-item label="项目时间:" prop="filingDate">
+          <el-date-picker
+              :disabled="isReview"
+              style="width: 100%"
+              v-model="state.form.filingDate"
+              type="date"
+              value-format="YYYY-MM-DD"
+              placeholder="请选择项目时间"
+              size="default"
+          />
+        </el-form-item>
+        <el-form-item label="报告撰写人:" prop="writer">
+          <el-input v-model.trim="state.form.writer" placeholder="请输入报告撰写人" :disabled="isReview"></el-input>
+        </el-form-item>
+        <el-form-item label="报告审批人:" prop="reviewer">
+          <el-input v-model.trim="state.form.reviewer" placeholder="请输入报告审批人" :disabled="isReview"></el-input>
+        </el-form-item>
+        <el-form-item label="报告扫描件:" prop="files">
+          <el-upload
+              style="width: 100%;"
+              :disabled="isReview"
+              accept="image/*,.pdf,.doc,.docx,.xlsx,.xls"
+              :action="state.uploadUrl"
+              :headers="state.header"
+              method="post"
+              :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)"
+              :on-exceed="showTip"
+              v-model:file-list="state.fileList"
+              :on-remove="handleRemove"
+              :data="state.uploadData"
+              :on-preview="handlePreview"
+              :limit='15'
+              :before-upload="picSize"
+          >
+            <el-button type="primary">报告上传</el-button>
+            <template #tip>
+              <div class="el-upload__tip" v-if="!isReview">上传文件尺寸小于15M,最多可上传15份,多张图片建议合并为PDF文件规范上传。</div>
+            </template>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <template #footer v-if="!isReview">
+        <span class="dialog-footer">
+            <el-button @click="handleClose" size="default">取 消</el-button>
+            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确 认</el-button>
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+<script setup>
+import {reactive, ref, toRefs} from 'vue'
+import {ElMessage, ElMessageBox} from "element-plus";
+import {addLaw, editLaw, getLawDetail} from "@/api/backManage/law";
+import axios from "axios";
+import {getToken} from "@/utils/auth";
+import {delAccessoryFile} from "@/api/projectManage/project";
+import {addSupplement, editSupplement, getSupplementDetail} from "@/api/backManage/supplement";
+import Cookies from "js-cookie";
+import {delPic} from "@/api/login";
+import {getInsitutionList} from "@/api/backManage/insitution";
+import {get} from "@vueuse/core";
+
+const emit = defineEmits(["getList"]);
+const dialogVisible = ref(false);
+const title = ref("");
+const suppleRef = ref();
+const isReview = ref(false);
+const law = ref(1)
+const state = reactive({
+  form: {
+    agencyId: '',
+    id: '',
+    name: '',
+    filingDate: '',
+    writer: '',
+    reviewer:'',
+    files: []
+
+  },
+  formRules:{
+    agencyId:[{ required: true, message: '请选择所属机构', trigger: 'blur' }],
+    name: [{ required: true, message: '请填写项目名称', trigger: 'blur' }],
+    writer: [{ required: true, message: '请填写报告撰写人', trigger: 'blur' }],
+    reviewer: [{ required: true, message: '请填写报告审批人', trigger: 'blur' }],
+    files: [{ required: true, message: '请上传报告扫描件', trigger: 'blur' }],
+    filingDate:[{ required: true, message: '请选择项目时间', trigger: 'blur' }],
+  },
+  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
+  header: {
+    Authorization: getToken()
+  },
+  fileList: [],
+  agencyName:'',
+  agencyId: '',
+  agencyList: [],
+  pageNum: 1,
+  pageSize: 10
+
+})
+
+const isAgency = ref(false);
+const getUserInfoAgency = () => {
+  const userInfo = JSON.parse(Cookies.get('userInfo'))
+  if (userInfo.identity === 1) {
+    state.agencyName = userInfo.agentName;
+    state.form.agencyId = userInfo.agentId;
+    isAgency.value = true;
+  } else {
+    getAgency()
+  }
+}
+const openDialog = async (type, value) => {
+  await getUserInfoAgency();
+  isReview.value = false;
+  title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ;
+  if(type === 'edit' || type === 'review') {
+    const param = {
+      projectId: value.id
+    }
+    const res = await getSupplementDetail(param);
+    if(res.code === 200){
+      state.form = res.data
+      state.form.filingDate = res.data.filingDate.substring(0,10)
+      state.fileList = res.data.files.map(item => {
+        return {
+          ...item,
+          name: item.originName,
+        }
+      })
+      console.log('state.fileList',state.form)
+    }else{
+      ElMessage.warning(res.message)
+    }
+
+  }
+  if(type === 'add'|| type ==='edit'){
+    isReview.value = false;
+  }
+  if(type === 'review') {
+    isReview.value = true;
+  }
+  dialogVisible.value = true;
+}
+
+const onSubmit = async () => {
+  const valid = await suppleRef.value.validate();
+  if(valid){
+    if(title.value === '新增'){
+      state.form.filingDate = state.form.filingDate.concat(" 00:00:00")
+      state.form.filingDate = state.form.filingDate.substring(0,19)
+
+      state.form.files = state.fileList.map(i=>{
+        return {
+          originName: i.response.data.originName,
+          fileName: i.response.data.filename,
+          path: i.response.data.path,
+        }
+      })
+      console.log('dd',state.form)
+      const {id, ...data} = JSON.parse(JSON.stringify(state.form))
+      // data.agencyId = state.agencyId
+      const res = await addSupplement(data)
+      if(res.code === 200){
+        ElMessage({
+          type: 'success',
+          message: '新增成功'
+        });
+      }else{
+        ElMessage.warning(res.message)
+      }
+      emit("getList")
+      reset();
+      suppleRef.value.clearValidate();
+      dialogVisible.value = false;
+    }else if(title.value === '编辑') {
+      state.form.filingDate = state.form.filingDate.concat(" 00:00:00")
+      state.form.filingDate = state.form.filingDate.substring(0,19)
+      console.log('dd',state.form)
+      state.form.files = state.fileList.map(i=>{
+        return {
+          originName: i.response ? i.response.data.originName : i.originName,
+          fileName: i.response ? i.response.data.filename : i.fileName ,
+          path: i.response ? i.response.data.path : i.path ,
+        }
+      })
+      const {...data} = JSON.parse(JSON.stringify(state.form))
+      // data.agencyId = state.agencyId
+      const res = await editSupplement(data)
+      if(res.code === 200){
+        ElMessage({
+          type: 'success',
+          message: '编辑成功'
+        });
+      }else{
+        ElMessage.warning(res.message)
+      }
+      emit("getList")
+      reset();
+      suppleRef.value.clearValidate();
+      dialogVisible.value = false;
+    }
+
+  }
+}
+
+const handleClose = () => {
+  reset();
+  suppleRef.value.clearValidate();
+
+  dialogVisible.value = false;
+}
+const reset = () => {
+  state.form = {
+    agencyId: '',
+    id: '',
+    name: '',
+    filingDate: '',
+    writer: '',
+    reviewer:'',
+    files: []
+  }
+  state.fileList = [];
+}
+const handleAvatarSuccess = (res,uploadFile) => {
+  if(res.code === 200){
+    state.form.files = state.fileList;
+    ElMessage({
+      type: 'success',
+      message: '文件上传成功'
+    })
+  }else {
+    state.fileList.splice(state.fileList.indexOf(uploadFile),1)
+    ElMessage({
+      type: 'warning',
+      message: res.message
+    })
+  }
+}
+// 上传
+const showTip =()=>{
+  ElMessage({
+    type: 'warning',
+    message: '超出文件上传数量'
+  });
+}
+
+const picSize = async (rawFile) => {
+  if(rawFile.size / 1024 / 1024 > 15){
+    ElMessage({
+      type: 'warning',
+      message: '文件大小不能超过15M'
+    });
+    return false
+  }
+};
+const handleRemove = async (file, uploadFiles) => {
+  ElMessageBox.confirm(
+      '确定删除该附件?',
+      '提示',
+      {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+      .then( async() => {
+        let path = "";
+        if(file.path){
+          path = file.path
+        }else {
+          path = file.response.data.path
+        }
+        const res = await delPic({path:path})
+        if(res.code == 200){
+          ElMessage({
+            type: 'success',
+            message: '文件已删除'
+          })
+          state.form.files = state.fileList;
+        }else{
+          ElMessage({
+            type: 'warning',
+            message: res.message
+          })
+        }
+      })
+      .catch(()=>{
+      })
+}
+const handlePreview = (file) => {
+  let path = "";
+  if(file.path){
+    path = file.path
+  }else {
+    path = file.response.data.path
+
+  }
+  const url = import.meta.env.VITE_APP_BASE_API + '/' + path
+  axios.get( url,{
+        headers:
+            {
+              'Content-Type': 'application/json',
+              'Authorization':getToken(),
+            },
+        responseType: 'blob'
+      }
+  ).then(res=>{
+    if (res) {
+      const link = document.createElement('a')
+      let blob = new Blob([res.data],{type: res.data.type})
+      link.style.display = "none";
+      link.href = URL.createObjectURL(blob); // 创建URL
+      link.setAttribute("download", file.name);
+      document.body.appendChild(link);
+      link.click();
+      document.body.removeChild(link);
+    } else {
+      this.$message.error('获取文件失败')
+    }
+  })
+}
+
+const finshed = ref(false)
+const getAgency = async () => {
+  const queryParams = {
+    pageNum: state.pageNum,
+    pageSize: state.pageSize,
+  }
+  const res = await getInsitutionList(queryParams)
+  if(res.code == 200){
+    if(res.data.pageNum === state.pageNum){
+      finshed.value = false;
+      if(state.pageNum == 1){
+        state.agencyList = res.data.list
+      }else {
+        state.agencyList =state.agencyList .concat(res.data.list)
+      }
+    }else {
+      finshed.value = true;
+    }
+
+  }else{
+    ElMessage.warning(res.message)
+  }
+}
+//触底函数
+const loadMore = () => {
+  console.log(' 触底了');
+  // 防抖处理
+  setTimeout(() => {
+    if (finshed.value) return //值为true,则代表没有数据了
+    state.pageNum += 1
+    getAgency()
+  }, 500)
+}
+
+defineExpose({
+  openDialog
+});
+
+</script>
+
+<style scoped lang="scss">
+.notice{
+  :deep(.el-form .el-form-item__label) {
+    font-size: 15px;
+  }
+  .file {
+    display: flex;
+    flex-direction: column;
+    align-items: flex-start;
+  }
+}
+.reviewTable {
+  :deep(table){
+    border: 1px solid #ccc;
+    text-align: center;
+  }
+  :deep(table td){
+    border: 1px solid #ccc;
+    text-align: center;
+    padding: 0 5px;
+  }
+  :deep(table th){
+    border: 1px solid #ccc;
+  }
+}
+</style>
diff --git a/src/views/safetyReview/projectSupplement/index.vue b/src/views/safetyReview/projectSupplement/index.vue
new file mode 100644
index 0000000..6d86d07
--- /dev/null
+++ b/src/views/safetyReview/projectSupplement/index.vue
@@ -0,0 +1,173 @@
+<template>
+  <div class="app-container">
+    <div style="margin-bottom: 10px">
+      <el-button
+          type="primary"
+          plain
+          icon="Plus"
+          @click="openDialog('add',{})"
+      >新增</el-button>
+      <span style="font-size: 15px;color: #ed5565;margin-left: 15px">补录今年1-6月的历史项目</span>
+    </div>
+
+    <!-- 表格数据 -->
+    <el-table v-loading="loading" :data="dataList" :border="true">
+      <el-table-column label="项目名称" prop="name" align="center" width="180" />
+      <el-table-column label="项目时间" prop="filingDate" align="center" :show-overflow-tooltip="true"  />
+      <el-table-column label="报告撰写人" prop="writer" align="center" :show-overflow-tooltip="true"  />
+      <el-table-column label="报告审批人" prop="reviewer" align="center" width="200" />
+      <el-table-column label="报告扫描件"  align="center" >
+        <template #default="scope">
+          <div v-for="(item,index) in scope.row.files" :key="index">
+            <span style="color: #1890ff;cursor: pointer" @click="showFile(item)">{{item.originName}}</span>
+          </div>
+
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
+        <template #default="scope">
+          <el-button link type="primary"  @click="openDialog('review',scope.row)" >查看</el-button>
+          <el-button link type="primary"  @click="openDialog('edit',scope.row)" >编辑</el-button>
+          <el-button link type="danger"  @click="handleDelete(scope.row)" >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <div class="pag-container">
+      <el-pagination
+          v-model:current-page="data.queryParams.pageNum"
+          v-model:page-size="data.queryParams.pageSize"
+          :page-sizes="[10,15,20,25]"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="total"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+      />
+    </div>
+    <suppleDialog ref="dRef" @getList="getList"></suppleDialog>
+  </div>
+</template>
+
+<script setup>
+import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue";
+import suppleDialog from './components/supplemenrtDialog.vue'
+import {ElMessage, ElMessageBox} from "element-plus";
+import {delSupplement, getSupplementList} from "@/api/backManage/supplement";
+import axios from "axios";
+import {getToken} from "@/utils/auth";
+const { proxy } = getCurrentInstance();
+const loading = ref(false);
+const dRef = ref();
+const data = reactive({
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+  },
+  total: 0,
+  dataList: []
+});
+
+const { queryParams, total, dataList } = toRefs(data);
+
+onMounted(() => {
+  getList();
+});
+const getList = async () => {
+  loading.value = true;
+  const res = await getSupplementList(data.queryParams);
+  if(res.code === 200){
+    dataList.value = res.data.list.map(item => {
+      return {
+        ...item,
+        filingDate: item.filingDate.substring(0,10),
+        files: item.files.map(f => {
+          return {
+            ...f,
+            type:f.originName.substring(f.originName.lastIndexOf(".") + 1)
+          }
+        })
+      }
+    })
+    console.log("dataList.value",dataList.value)
+    total.value = res.data.total
+  }else{
+    ElMessage.warning(res.message)
+  }
+  loading.value = false;
+}
+const handleSizeChange = (val) => {
+  data.queryParams.pageNum = 1
+  data.queryParams.pageSize = val
+  getList()
+}
+const handleCurrentChange = (val) => {
+  data.queryParams.pageNum = val
+  getList()
+}
+
+const openDialog = (type, value) => {
+  dRef.value.openDialog(type, value);
+}
+
+const handleDelete = (val) => {
+  ElMessageBox.confirm(
+      '确定删除此条数据?',
+      '提示',
+      {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+      .then( async() => {
+        const res = await delSupplement(val);
+        if(res.code === 200){
+          ElMessage({
+            type: 'success',
+            message: '删除成功'
+          });
+         await getList();
+        }else{
+          ElMessage.warning(res.message)
+        }
+      })
+}
+const showFile = (file) => {
+  let path = "";
+  if(file.path){
+    path = file.path
+  }else {
+    path = file.response.data.path
+
+  }
+  const url = import.meta.env.VITE_APP_BASE_API + '/' + path
+  axios.get( url,{
+        headers:
+            {
+              'Content-Type': 'application/json',
+              'Authorization':getToken(),
+            },
+        responseType: 'blob'
+      }
+  ).then(res=>{
+    if (res) {
+      const link = document.createElement('a')
+      let blob = new Blob([res.data],{type: res.data.type})
+      link.style.display = "none";
+      link.href = URL.createObjectURL(blob); // 创建URL
+      link.setAttribute("download", file.originName);
+      document.body.appendChild(link);
+      link.click();
+      document.body.removeChild(link);
+    } else {
+      this.$message.error('获取文件失败')
+    }
+  })
+}
+
+</script>
+<style lang="scss">
+.pag-container{
+  float: right;
+  margin-top: 10px;
+}
+</style>

--
Gitblit v1.9.2