zhouwx
2025-11-14 ec9f12898d3fa6c57485c9f43af15203bb867639
修改
已添加1个文件
已修改5个文件
245 ■■■■■ 文件已修改
src/api/productAndServe/index.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/work/qualityManage/productAndServe/finalInspecte/components/editDialog.vue 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/work/qualityManage/productAndServe/finalInspecte/index.vue 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/work/qualityManage/productAndServe/processInspecte/components/editDialog.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/work/qualityManage/productAndServe/processInspecte/index.vue 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/work/sealManagement/apply/index.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/productAndServe/index.js
对比新文件
@@ -0,0 +1,34 @@
import request from "@/utils/request";
//采购申请
export function getInspection(params) {
    return request({
        url: '/process/inspection/list',
        method: 'get',
        params: params
    })
}
export function addInspection(data) {
    return request({
        url: '/process/inspection/insert',
        method: 'post',
        data: data
    })
}
export function editInspection(params) {
    return request({
        url: `/process/inspection/update`,
        method: 'post',
        data: params
    })
}
export function delInspection(data) {
    return request({
        url: `/process/inspection/deleted?inspectionId=${data}`,
        method: 'get'
    })
}
src/views/work/qualityManage/productAndServe/finalInspecte/components/editDialog.vue
@@ -19,25 +19,25 @@
            </el-option>
          </el-select>
        </el-form-item>
<!--        <el-form-item label="所属部门:" prop="deptId">-->
<!--          <el-select v-model="state.form.deptId" placeholder="请选择" style="width: 100%" clearable>-->
<!--            <el-option-->
<!--                v-for="item in state.deptList"-->
<!--                :key="item.deptId"-->
<!--                :label="item.deptName"-->
<!--                :value="item.deptId">-->
<!--            </el-option>-->
<!--          </el-select>-->
<!--        </el-form-item>-->
        <!--        <el-form-item label="所属部门:" prop="deptId">-->
        <!--          <el-select v-model="state.form.deptId" placeholder="请选择" style="width: 100%" clearable>-->
        <!--            <el-option-->
        <!--                v-for="item in state.deptList"-->
        <!--                :key="item.deptId"-->
        <!--                :label="item.deptName"-->
        <!--                :value="item.deptId">-->
        <!--            </el-option>-->
        <!--          </el-select>-->
        <!--        </el-form-item>-->
        <el-form-item label="名称:" prop="templateName">
          <el-input v-model.trim="state.form.templateName" :disabled="state.title =='查看'" placeholder="名称"></el-input>
        <el-form-item label="名称:" prop="fileName">
          <el-input v-model.trim="state.form.fileName" :disabled="state.title =='查看'" placeholder="名称"></el-input>
        </el-form-item>
        <el-form-item label="文件:" prop="filePath">
          <el-upload accept=".doc,.docx" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)" :on-exceed="showTip" :limit='state.fileLimit' v-model:file-list="state.fileList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles)" >
          <el-upload accept=".doc,.docx,.pdf,.jpg,.jpeg,.png" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)" :on-exceed="showTip" :limit='state.fileLimit' v-model:file-list="state.fileList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles)" >
            <el-button type="primary">点击上传</el-button>
            <template #tip>
              <div class="el-upload__tip">支持上传.doc、.docx格式文档,尺寸小于5M,最多可上传1份</div>
              <div class="el-upload__tip">支持上传.doc、.docx、.pdf、.jpg、.jpeg、.png格式,尺寸小于5M,最多可上传1份</div>
            </template>
          </el-upload>
        </el-form-item>
@@ -62,6 +62,7 @@
import {delPic} from "@/api/onlineEducation/banner";
import {saveStandardTemp, updateStandardTemp} from "@/api/standardSys/standardSys";
import {getDept} from "@/api/qualityObjectives/object";
import {addInspection, editInspection} from "@/api/productAndServe";
const emit = defineEmits(["getList"]);
const dialogVisible = ref(false)
@@ -77,16 +78,16 @@
  title: '',
  form: {
    id: null,
    templateName: '',
    fileName: '',
    filePath: '',
    format: '',
    companyId: null,
    deptId:null,
    templateType: 2
   type:2
  },
  formRules:{
    companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }],
    templateName: [{ required: true, message: '请输入名称', trigger: 'blur' }],
    fileName: [{ required: true, message: '请输入名称', trigger: 'blur' }],
    filePath: [{ required: true, validator: checkFiles, trigger: 'blur' }],
    deptId: [{ required: true, message: '请选择部门', trigger: 'blur' }],
  },
@@ -120,7 +121,7 @@
    if(value.filePath) {
      const obj = {
        url: value.filePath,
        name: '文件'
        name: value.fileName
      }
      state.fileList = [obj]
    }
@@ -148,7 +149,7 @@
  if(valid){
    if(state.title == '新增'){
      const {id,...data} = state.form
      const res = await saveStandardTemp(data)
      const res = await addInspection(data)
      if(res.code == 200){
        ElMessage.success(res.message)
        emit('getList')
@@ -158,7 +159,7 @@
        ElMessage.warning(res.message)
      }
    }else{
      const res = await updateStandardTemp(state.form)
      const res = await editInspection(state.form)
      if(res.code == 200){
        ElMessage.success(res.message)
        emit('getList')
@@ -223,12 +224,12 @@
const handleClose = () => {
  state.form = {
    id: null,
    templateName: '',
    fileName: '',
    filePath: '',
    format: '',
    companyId: null,
    deptId:null,
    templateType: 2
   type:2
  }
  state.fileList = []
  superRef.value.clearValidate();
src/views/work/qualityManage/productAndServe/finalInspecte/index.vue
@@ -29,10 +29,10 @@
    <!-- 表格数据 -->
    <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" >
@@ -65,6 +65,7 @@
import useUserStore from "@/store/modules/user";
import {getStandardTemp,delStandardTemp} from "@/api/standardSys/standardSys";
import { renderAsync } from "docx-preview";
import {delInspection, getInspection} from "@/api/productAndServe";
const userStore = useUserStore()
const { proxy } = getCurrentInstance();
const loading = ref(false);
@@ -74,7 +75,7 @@
    pageNum: 1,
    pageSize: 10,
    companyId: null,
    templateType: 10
    type:2
  },
  total: 0,
  dataList: [],
@@ -107,14 +108,14 @@
      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,25 +130,35 @@
        </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){
    console.log(res.data,'data')
    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 getCompanyList = async ()=>{
@@ -178,7 +189,7 @@
    pageNum: 1,
    pageSize: 10,
    companyId: null,
    templateType: 10
    type:2
  }
  await getCompanyList()
  await getList()
@@ -193,7 +204,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()
src/views/work/qualityManage/productAndServe/processInspecte/components/editDialog.vue
@@ -30,14 +30,14 @@
<!--          </el-select>-->
<!--        </el-form-item>-->
        <el-form-item label="名称:" prop="templateName">
          <el-input v-model.trim="state.form.templateName" :disabled="state.title =='查看'" placeholder="名称"></el-input>
        <el-form-item label="名称:" prop="fileName">
          <el-input v-model.trim="state.form.fileName" :disabled="state.title =='查看'" placeholder="名称"></el-input>
        </el-form-item>
        <el-form-item label="文件:" prop="filePath">
          <el-upload accept=".doc,.docx" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)" :on-exceed="showTip" :limit='state.fileLimit' v-model:file-list="state.fileList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles)" >
          <el-upload accept=".doc,.docx,.pdf,.jpg,.jpeg,.png" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)" :on-exceed="showTip" :limit='state.fileLimit' v-model:file-list="state.fileList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles)" >
            <el-button type="primary">点击上传</el-button>
            <template #tip>
              <div class="el-upload__tip">支持上传.doc、.docx格式文档,尺寸小于5M,最多可上传1份</div>
              <div class="el-upload__tip">支持上传.doc、.docx、.pdf、.jpg、.jpeg、.png格式,尺寸小于5M,最多可上传1份</div>
            </template>
          </el-upload>
        </el-form-item>
@@ -62,6 +62,7 @@
import {delPic} from "@/api/onlineEducation/banner";
import {saveStandardTemp, updateStandardTemp} from "@/api/standardSys/standardSys";
import {getDept} from "@/api/qualityObjectives/object";
import {addInspection, editInspection} from "@/api/productAndServe";
const emit = defineEmits(["getList"]);
const dialogVisible = ref(false)
@@ -77,16 +78,16 @@
  title: '',
  form: {
    id: null,
    templateName: '',
    fileName: '',
    filePath: '',
    format: '',
    companyId: null,
    deptId:null,
    templateType: 2
    type: 1
  },
  formRules:{
    companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }],
    templateName: [{ required: true, message: '请输入名称', trigger: 'blur' }],
    fileName: [{ required: true, message: '请输入名称', trigger: 'blur' }],
    filePath: [{ required: true, validator: checkFiles, trigger: 'blur' }],
    deptId: [{ required: true, message: '请选择部门', trigger: 'blur' }],
  },
@@ -120,7 +121,7 @@
    if(value.filePath) {
      const obj = {
        url: value.filePath,
        name: '文件'
        name: value.fileName
      }
      state.fileList = [obj]
    }
@@ -148,7 +149,7 @@
  if(valid){
    if(state.title == '新增'){
      const {id,...data} = state.form
      const res = await saveStandardTemp(data)
      const res = await addInspection(data)
      if(res.code == 200){
        ElMessage.success(res.message)
        emit('getList')
@@ -158,7 +159,7 @@
        ElMessage.warning(res.message)
      }
    }else{
      const res = await updateStandardTemp(state.form)
      const res = await editInspection(state.form)
      if(res.code == 200){
        ElMessage.success(res.message)
        emit('getList')
@@ -223,12 +224,12 @@
const handleClose = () => {
  state.form = {
    id: null,
    templateName: '',
    fileName: '',
    filePath: '',
    format: '',
    companyId: null,
    deptId:null,
    templateType: 2
    type: 1
  }
  state.fileList = []
  superRef.value.clearValidate();
src/views/work/qualityManage/productAndServe/processInspecte/index.vue
@@ -29,10 +29,10 @@
    <!-- 表格数据 -->
    <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" >
@@ -65,6 +65,7 @@
import useUserStore from "@/store/modules/user";
import {getStandardTemp,delStandardTemp} from "@/api/standardSys/standardSys";
import { renderAsync } from "docx-preview";
import {delInspection, getInspection} from "@/api/productAndServe";
const userStore = useUserStore()
const { proxy } = getCurrentInstance();
const loading = ref(false);
@@ -74,7 +75,7 @@
    pageNum: 1,
    pageSize: 10,
    companyId: null,
    templateType: 10
    type: 1
  },
  total: 0,
  dataList: [],
@@ -107,14 +108,14 @@
      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,25 +130,35 @@
        </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){
    console.log(res.data,'data')
    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 getCompanyList = async ()=>{
@@ -178,7 +189,7 @@
    pageNum: 1,
    pageSize: 10,
    companyId: null,
    templateType: 10
    type: 1
  }
  await getCompanyList()
  await getList()
@@ -193,7 +204,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()
src/views/work/sealManagement/apply/index.vue
@@ -47,16 +47,15 @@
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160" >
        <template #default="scope">
          <div v-if="data.tabName === 'apply'">
          <div v-if="data.tabName === 'apply' || data.tabName === 'all'">
            <el-button link type="primary"  @click="openDialog('review',scope.row)">查看</el-button>
            <el-button link type="primary"  @click="openDialog('edit',scope.row)" v-hasPermi="['sealApply:list:edit']">编辑</el-button>
            <el-button link type="primary" v-if="scope.row.status == 1" @click="openDialog('edit',scope.row)" v-hasPermi="['sealApply:list:edit']">编辑</el-button>
            <el-button link type="danger"  @click="handleDelete(scope.row)" v-hasPermi="['sealApply:list:del']">删除</el-button>
          </div>
          <div v-else>
          <div v-if="data.tabName === 'approval'">
            <el-button link type="primary"  @click="openDialog('review',scope.row)">查看</el-button>
            <el-button link type="primary"  @click="openApplyDialog(scope.row)" v-hasPermi="['sealApply:list:apply']">审批</el-button>
          </div>
        </template>
      </el-table-column>
    </el-table>