zhouwx
6 天以前 f94b96403234f5927e74f72fc0cbc65d7b426019
src/views/work/qualityManage/productAndServe/processInspecte/index.vue
@@ -8,14 +8,29 @@
              plain
              icon="Plus"
              @click="openDialog('add',{})"
              v-hasPermi="['processInspecte:list:edit']"
          >新增</el-button>
        </el-form-item>
        <el-form-item v-if="isAdmin" label="单位:" >
          <el-select v-model="data.queryParams.companyId" placeholder="请选择" clearable>
          <el-select v-model="queryParams.companyId" placeholder="请选择" clearable @change="getProjects">
            <el-option
                v-for="item in companyList"
                :key="item.id"
                :label="item.name"
                :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item style="margin-left: 15px" label="项目名称:">
          <el-select v-model="queryParams.itemId"
                     filterable
                     placeholder="请选择"
                     clearable style="width: 100%"
          >
            <el-option
                v-for="item in projectList"
                :key="item.id"
                :label="item.itemName"
                :value="item.id">
            </el-option>
          </el-select>
@@ -29,17 +44,17 @@
    <!-- 表格数据 -->
    <el-table v-loading="loading" :data="dataList" :border="true">
      <el-table-column label="序号" type="index" align="center" width="80"/>
      <el-table-column label="文件名称" prop="templateName" header-align="center" align="left"/>
      <el-table-column label="文件名称" prop="fileName" header-align="center" align="left"/>
      <el-table-column label="文件" header-align="center" align="left">
        <template #default="scope">
          <el-link type="primary" @click="openFile(scope.row.filePath)">{{scope.row.templateName + '模板' + scope.row.format}}</el-link>
          <el-link type="primary" @click="openFile(scope.row.filePath)">{{scope.row.fileName  +'.'+ scope.row.format}}</el-link>
        </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="downloadFile(scope.row.filePath)">下载</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>
          <el-button link type="primary" @click="downloadFile(scope.row.filePath)" v-hasPermi="['processInspecte:list:edit']">下载</el-button>
          <el-button link type="primary" @click="openDialog('edit',scope.row)" v-hasPermi="['processInspecte:list:edit']">编辑</el-button>
          <el-button link type="danger" @click="handleDelete(scope.row)" v-hasPermi="['processInspecte:list:del']">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
@@ -65,6 +80,8 @@
import useUserStore from "@/store/modules/user";
import {getStandardTemp,delStandardTemp} from "@/api/standardSys/standardSys";
import { renderAsync } from "docx-preview";
import {delInspection, getInspection} from "@/api/productAndServe";
import {getProductSet} from "@/api/selfProblems/productFile";
const userStore = useUserStore()
const { proxy } = getCurrentInstance();
const loading = ref(false);
@@ -74,15 +91,18 @@
    pageNum: 1,
    pageSize: 10,
    companyId: null,
    templateType: 10
    type: 1,
    itemId: null
  },
  total: 0,
  dataList: [],
  companyList: [],
  isAdmin: false
  projectList: [],
  isAdmin: false,
  userId: null,
});
const { queryParams, total, dataList,companyList, isAdmin } = toRefs(data);
const { queryParams, total, dataList,companyList, isAdmin, projectList } = toRefs(data);
const userInfo = ref()
onMounted(async ()=>{
  if(userStore.roles.includes('admin')){
@@ -92,7 +112,9 @@
    data.isAdmin = false
    data.queryParams.companyId = userStore.companyId
  }
  data.userId = userStore.id
  await getList()
  await getProjectList()
})
onUnmounted(()=>{
@@ -101,20 +123,20 @@
const openFile = async(path)=>{
  const ext = path.split('.').pop().toLowerCase();
  if (ext === 'doc') {
    ElMessageBox.confirm('暂不支持线上预览.doc文件,是否下载查看?', '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning' }).then(() => {
    ElMessageBox.confirm('暂不支持线上预览.doc、.xls、.xlsx文件,是否下载查看?', '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning' }).then(() => {
      window.open(`${import.meta.env.VITE_APP_BASE_API}/${path}`, '_blank');
    }).catch(() => {
      console.log('取消预览')
    });
    return
  }
  try {
    // 1. 获取文件
    const response = await fetch(import.meta.env.VITE_APP_BASE_API + '/' + path);
    const arrayBuffer = await response.arrayBuffer();
    // 2. 创建新窗口
    const win = window.open('', '_blank')
    win.document.write(`
  }else if(ext === 'docx'){
    try {
      // 1. 获取文件
      const response = await fetch(import.meta.env.VITE_APP_BASE_API + '/' + path);
      const arrayBuffer = await response.arrayBuffer();
      // 2. 创建新窗口
      const win = window.open('', '_blank')
      win.document.write(`
      <!DOCTYPE html>
      <html>
        <head>
@@ -129,26 +151,59 @@
        </body>
      </html>
    `);
    // 3. 渲染 DOCX
    await renderAsync(arrayBuffer, win.document.getElementById('container'));
      // 3. 渲染 DOCX
      await renderAsync(arrayBuffer, win.document.getElementById('container'));
  } catch (error) {
    console.error('预览失败:', error);
    alert(`预览失败: ${error.message}`);
    } catch (error) {
      console.error('预览失败:', error);
      alert(`预览失败: ${error.message}`);
    }
  }else {
    window.open(`${import.meta.env.VITE_APP_BASE_API}/${path}`, '_blank');
  }
}
const getList = async () => {
  // loading.value = true
  // const res = await getStandardTemp(data.queryParams)
  // if(res.code == 200){
  //   console.log(res.data,'data')
  //   data.dataList = res.data.list || []
  //   data.total = res.data.total
  // }else{
  //   ElMessage.warning(res.message)
  // }
  // loading.value = false
  loading.value = true
  const res = await getInspection(data.queryParams)
  if(res.code == 200){
    data.dataList = res.data.list || []
    data.dataList = data.dataList.map(item => {
      return {
        ...item,
        format: item.filePath ? item.filePath.split('.').pop().toLowerCase():''
      }
    })
    data.total = res.data.total
  }else{
    ElMessage.warning(res.message)
  }
  loading.value = false
}
const getProjectList = async () => {
  const param = {
    companyId: data.queryParams.companyId,
    userId: data.isAdmin ? null : data.userId
  }
  const res = await getProductSet(param);
  if(res.code === 200){
    data.projectList = res.data
    // if(res.data && res.data.length >0 ){
    //   data.queryParams.itemId = res.data[0].id
    // }
  }else{
    ElMessage.warning(res.message)
  }
}
const getProjects = async ()=>{
  data.projectList = []
  data.queryParams.itemId = null
  await getProjectList()
}
const getCompanyList = async ()=>{
  const queryParams = {
@@ -169,7 +224,17 @@
}
const openDialog = (type, value) => {
  dialogRef.value.openDialog(type, value, data.queryParams.companyId, data.isAdmin, data.companyList);
  if(type === 'add' ){
    if(!data.queryParams.companyId){
      ElMessage.warning('请选择单位')
      return
    }
    if(!data.queryParams.itemId){
      ElMessage.warning('请先选择项目!')
      return
    }
  }
  dialogRef.value.openDialog(type, value, data.queryParams.companyId, data.isAdmin, data.companyList, data.queryParams.itemId)
}
/** 重置新增的表单以及其他数据  */
@@ -178,7 +243,8 @@
    pageNum: 1,
    pageSize: 10,
    companyId: null,
    templateType: 10
    type: 1,
    itemId: null
  }
  await getCompanyList()
  await getList()
@@ -193,7 +259,7 @@
        type: 'warning',
      })
      .then( async() => {
        const res = await delStandardTemp({standardizedTemplateId: val.id})
        const res = await delInspection(val.id)
        if(res.code == 200){
          ElMessage.success('数据删除成功')
          await getList()