spring
2025-04-08 4f94a66bc8ad9a57295f161de9195d5528b1d181
基础数据维护+原辅材下单修改
已修改19个文件
已删除1个文件
882 ■■■■■ 文件已修改
src/api/business/add.js 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/finishedProductSampling.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/productSamplingInfo.js 100 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/rawMaterialOrder.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/finishedProductSampling/components/addQuarterItem.vue 84 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/finishedProductSampling/index.vue 217 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionReview/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionTask/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/commom/fileList.vue 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/customsInspection.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/index.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrderComponents/materialOrder/dataLookVisible.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrderComponents/materialOrder/downFileDialog.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrderComponents/materialOrder/filesLookVisible.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productOrder/components/add.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productSamplingInfo/components/addQuarterItem.vue 85 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productSamplingInfo/index.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/reportPreparation/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/statisticalCharts/qualificationRateStatistics/index.vue 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/add.js
@@ -1,74 +1,74 @@
// æˆå“ä¸‹å•详情页面相关接口
import request from '@/utils/request'
import request from "@/utils/request";
// æˆå“ä¸‹å•界面查询季度信息
// æˆå“ä¸‹å•界面查询可靠性信息
export function getQuarterOnOrder() {
  return request({
    url: '/finishProductSpotCheck/getQuarterOnOrder',
    method: 'get'
  })
    url: "/finishProductSpotCheck/getQuarterOnOrder",
    method: "get",
  });
}
// ä¿®æ”¹æˆå“ä¸‹å•内容
export function updateInsOrder(query) {
  return request({
    url: '/insOrder/updateInsOrder',
    method: 'post',
    data: query
  })
    url: "/insOrder/updateInsOrder",
    method: "post",
    data: query,
  });
}
// æ·»åŠ æ£€éªŒä¸‹å•æ•°æ®
export function addInsOrder(query) {
  return request({
    url: '/insOrder/addInsOrder',
    method: 'post',
    data: query
  })
    url: "/insOrder/addInsOrder",
    method: "post",
    data: query,
  });
}
// å®¡æ ¸æ£€éªŒå•机进行状态修改
export function upInsOrderOfState(query) {
  return request({
    url: '/insOrder/upInsOrderOfState',
    method: 'post',
    data: query
  })
    url: "/insOrder/upInsOrderOfState",
    method: "post",
    data: query,
  });
}
// æŸ¥è¯¢è®¢å•总共预计时间
export function selectOrderManDay(query) {
  return request({
    url: '/insOrder/selectOrderManDay',
    method: 'get',
    params: query
  })
    url: "/insOrder/selectOrderManDay",
    method: "get",
    params: query,
  });
}
// æ£€éªŒä¸‹å‘
export function upInsOrder(query) {
  return request({
    url: '/insOrder/upInsOrder',
    method: 'post',
    params: query
  })
    url: "/insOrder/upInsOrder",
    method: "post",
    params: query,
  });
}
// åˆ é™¤æ£€éªŒå•模板
export function delInsOrderTemplate(query) {
  return request({
    url: '/insOrder/delInsOrderTemplate',
    method: 'delete',
    params: query
  })
    url: "/insOrder/delInsOrderTemplate",
    method: "delete",
    params: query,
  });
}
// æ·»åŠ æ£€éªŒå•æ¨¡æ¿
export function addInsOrderTemplate(query) {
  return request({
    url: '/insOrder/addInsOrderTemplate',
    method: 'post',
    data: query
  })
    url: "/insOrder/addInsOrderTemplate",
    method: "post",
    data: query,
  });
}
// é€šè¿‡æ£€éªŒå•模板id获取检验单模板内容
export function selectInsOrderTemplateById(query) {
  return request({
    url: '/insOrder/selectInsOrderTemplateById',
    method: 'get',
    params: query
  })
    url: "/insOrder/selectInsOrderTemplateById",
    method: "get",
    params: query,
  });
}
src/api/business/finishedProductSampling.js
@@ -9,7 +9,7 @@
    data: query,
  });
}
// å­£åº¦æŠ½æ£€æŸ¥çœ‹è¯¦æƒ…
// å¯é æ€§æŠ½æ£€æŸ¥çœ‹è¯¦æƒ…
export function getQuarter(query) {
  return request({
    url: "/finishProductSpotCheck/getQuarter",
@@ -17,7 +17,7 @@
    params: query,
  });
}
// æäº¤å­£åº¦æŠ½æ ·
// æäº¤å¯é æ€§æŠ½æ ·
export function addQuarter(query) {
  return request({
    url: "/finishProductSpotCheck/addQuarter",
@@ -25,7 +25,7 @@
    data: query,
  });
}
// ç¼–辑季度检验
// ç¼–辑可靠性检验
export function updateQuarterOnOrder(query) {
  return request({
    url: "/finishProductSpotCheck/updateQuarterOnOrder",
src/api/business/productSamplingInfo.js
@@ -1,101 +1,101 @@
// æŠ½æ ·ä¿¡æ¯è¯¦æƒ…页面相关接口
import request from '@/utils/request'
import request from "@/utils/request";
// æŠ½æ ·ä¿¡æ¯-季度查询
// æŠ½æ ·ä¿¡æ¯-可靠性查询
export function getQuarterPage(query) {
  return request({
    url: '/finishProductSpotCheck/getQuarterPage',
    method: 'get',
    params: query
  })
    url: "/finishProductSpotCheck/getQuarterPage",
    method: "get",
    params: query,
  });
}
// æŠ½æ ·ä¿¡æ¯-年度查询
export function getSpotCheckYearPage(query) {
  return request({
    url: '/finishProductSpotCheck/getSpotCheckYearPage',
    method: 'get',
    params: query
  })
    url: "/finishProductSpotCheck/getSpotCheckYearPage",
    method: "get",
    params: query,
  });
}
// åˆ é™¤å­£åº¦æŠ½æ£€
// åˆ é™¤å¯é æ€§æŠ½æ£€
export function deleteQuarter(query) {
  return request({
    url: '/finishProductSpotCheck/deleteQuarter',
    method: 'delete',
    params: query
  })
    url: "/finishProductSpotCheck/deleteQuarter",
    method: "delete",
    params: query,
  });
}
// ç”Ÿæˆå­£åº¦æŠ¥å‘Š
// ç”Ÿæˆå¯é æ€§æŠ¥å‘Š
export function finalReportQuarter(query) {
  return request({
    url: '/finishProductSpotCheck/finalReportQuarter',
    method: 'get',
    url: "/finishProductSpotCheck/finalReportQuarter",
    method: "get",
    params: query,
    responseType: "blob"
  })
    responseType: "blob",
  });
}
// ç”Ÿæˆå¹´åº¦æŠ¥å‘Š
export function finalReportSpotCheckYear(query) {
  return request({
    url: '/finishProductSpotCheck/finalReportSpotCheckYear',
    method: 'get',
    url: "/finishProductSpotCheck/finalReportSpotCheckYear",
    method: "get",
    params: query,
    responseType: "blob"
  })
    responseType: "blob",
  });
}
// åˆ é™¤å¹´åº¦æŠ½æ£€
export function deleteSpotCheckYear(query) {
  return request({
    url: '/finishProductSpotCheck/deleteSpotCheckYear',
    method: 'delete',
    url: "/finishProductSpotCheck/deleteSpotCheckYear",
    method: "delete",
    params: query,
  })
  });
}
// å¹´åº¦æŠ½æ£€æŸ¥çœ‹è¯¦æƒ…
export function getSpotCheckYear(query) {
  return request({
    url: '/finishProductSpotCheck/getSpotCheckYear',
    method: 'get',
    url: "/finishProductSpotCheck/getSpotCheckYear",
    method: "get",
    params: query,
  })
  });
}
// æäº¤å¹´åº¦æŠ½æ ·
export function addSpotCheckYear(query) {
  return request({
    url: '/finishProductSpotCheck/addSpotCheckYear',
    method: 'post',
    url: "/finishProductSpotCheck/addSpotCheckYear",
    method: "post",
    data: query,
  })
  });
}
// ç¼–辑年度抽样
export function updateSpotCheckYear(query) {
  return request({
    url: '/finishProductSpotCheck/updateSpotCheckYear',
    method: 'post',
    url: "/finishProductSpotCheck/updateSpotCheckYear",
    method: "post",
    data: query,
  })
  });
}
// å­£åº¦æŠ½æ£€æŸ¥çœ‹è¯¦æƒ…
// å¯é æ€§æŠ½æ£€æŸ¥çœ‹è¯¦æƒ…
export function getQuarter(query) {
  return request({
    url: '/finishProductSpotCheck/getQuarter',
    method: 'get',
    url: "/finishProductSpotCheck/getQuarter",
    method: "get",
    params: query,
  })
  });
}
// æäº¤å­£åº¦æŠ½æ ·
// æäº¤å¯é æ€§æŠ½æ ·
export function addQuarter(query) {
  return request({
    url: '/finishProductSpotCheck/addQuarter',
    method: 'post',
    data : query,
  })
    url: "/finishProductSpotCheck/addQuarter",
    method: "post",
    data: query,
  });
}
// ç¼–辑季度检验
// ç¼–辑可靠性检验
export function updateQuarterOnOrder(query) {
  return request({
    url: '/finishProductSpotCheck/updateQuarterOnOrder',
    method: 'post',
    data : query,
  })
    url: "/finishProductSpotCheck/updateQuarterOnOrder",
    method: "post",
    data: query,
  });
}
src/api/business/rawMaterialOrder.js
@@ -33,7 +33,7 @@
    params: query,
  });
}
// æŸ¥è¯¢å­£åº¦æ£€éªŒ
// æŸ¥è¯¢å¯é æ€§æ£€éªŒ
export function getIfsByQuarter(query) {
  return request({
    url: "/rawMaterialOrder/getIfsByQuarter",
@@ -182,7 +182,7 @@
    data: query,
  });
}
// åŽŸè¾…æä¸‹å•å­£åº¦æ’¤é”€
// åŽŸè¾…æä¸‹å•å¯é æ€§æ’¤é”€
export function repealQuarterRawOrder(query) {
  return request({
    url: "/rawMaterialOrder/repealQuarterRawOrder",
src/views/business/finishedProductSampling/components/addQuarterItem.vue
@@ -1,8 +1,9 @@
<template>
  <div>
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="quarterSampleDia" title="季度抽样" width="90%" @close="quarterSampleDia = false">
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="quarterSampleDia"
      title="可靠性抽样" width="90%" @close="quarterSampleDia = false">
      <div style="display: flex;align-items: center;justify-content: space-between;margin-bottom: 10px">
        <div style="width: 30%;display: flex;align-items: center;" >
        <div style="width: 30%;display: flex;align-items: center;">
          <span style="width: 50px">编号:</span>
          <el-input v-model="quarterSampleForm.quarterNo" :disabled="operationType !== 'add'" size="small"></el-input>
        </div>
@@ -13,11 +14,11 @@
      </div>
      <div>
        <el-table v-loading="tableLoading" :data="quarterItems" border height="420" style="width: 100%"
                  :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }">
          :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }">
          <el-table-column label="产品类型" prop="productType" width="200">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.productType" size="small"/>
                <el-input v-model="row.productType" size="small" />
              </template>
            </template>
          </el-table-column>
@@ -25,43 +26,37 @@
          <el-table-column label="型号" prop="productModel" width="120">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.productModel" size="small" :disabled="operationType === 'view'"/>
                <el-input v-model="row.productModel" size="small" :disabled="operationType === 'view'" />
              </template>
            </template>
          </el-table-column>
          <el-table-column label="抽样数量" min-width="340" prop="spotCheckNumber">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.spotCheckNumber" size="small" :disabled="operationType === 'view'"/>
                <el-input v-model="row.spotCheckNumber" size="small" :disabled="operationType === 'view'" />
              </template>
            </template>
          </el-table-column>
          <el-table-column v-if="operationType === 'add'" label="数量" min-width="120" prop="number">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.number" size="small" :disabled="operationType === 'view'"/>
                <el-input v-model="row.number" size="small" :disabled="operationType === 'view'" />
              </template>
            </template>
          </el-table-column>
          <el-table-column v-if="operationType !== 'add'" label="抽样时间" prop="spotCheckTime" width="160">
            <template slot-scope="{row}">
              <template>
                <el-date-picker v-model="row.spotCheckTime"
                                format="yyyy-MM-dd"
                                :disabled="operationType === 'view'"
                                placeholder="选择日期"
                                size="small"
                                clearable
                                style="width:100%"
                                type="date"
                                value-format="yyyy-MM-dd">
                <el-date-picker v-model="row.spotCheckTime" format="yyyy-MM-dd" :disabled="operationType === 'view'"
                  placeholder="选择日期" size="small" clearable style="width:100%" type="date" value-format="yyyy-MM-dd">
                </el-date-picker>
              </template>
            </template>
          </el-table-column>
          <el-table-column v-if="operationType !== 'add'" label="试样结论" prop="result" width="130">
            <template v-slot="scope">
              <el-select v-model="scope.row.result" placeholder="请选择" size="small" clearable :disabled="operationType === 'view'">
              <el-select v-model="scope.row.result" placeholder="请选择" size="small" clearable
                :disabled="operationType === 'view'">
                <el-option label="合格" value="合格"></el-option>
                <el-option label="不合格" value="不合格"></el-option>
              </el-select>
@@ -70,54 +65,60 @@
          <el-table-column v-if="operationType !== 'add'" label="取样人员" prop="samplingUser" width="120">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.samplingUser" size="small" :disabled="operationType === 'view'"/>
                <el-input v-model="row.samplingUser" size="small" :disabled="operationType === 'view'" />
              </template>
            </template>
          </el-table-column>
          <el-table-column label="备注" prop="itemRemark" width="200">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.itemRemark" size="small" :disabled="operationType === 'view'"/>
                <el-input v-model="row.itemRemark" size="small" :disabled="operationType === 'view'" />
              </template>
            </template>
          </el-table-column>
          <el-table-column v-if="operationType !== 'view'" fixed="right" label="操作" width="100">
            <template slot-scope="scope">
              <el-button size="small" style="color: #f56c6c" type="text" @click="deleteScope(scope.$index)">删除</el-button>
              <el-button size="small" style="color: #f56c6c" type="text"
                @click="deleteScope(scope.$index)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div style="display: flex;align-items: center;margin: 10px 0">
        <span style="width: 70px">备注:</span>
        <el-input v-model="quarterSampleForm.remark" :disabled="operationType === 'view'" size="small" style="width: 43%" type="textarea"></el-input>
        <el-input v-model="quarterSampleForm.remark" :disabled="operationType === 'view'" size="small"
          style="width: 43%" type="textarea"></el-input>
      </div>
      <div v-if="operationType !== 'add'">
        <el-form ref="form" :model="editForm" label-width="70px">
          <el-col :span="12">
            <el-form-item label="编制人:">
              <el-select v-model="editForm.writeUser" :disabled="operationType !=='edit'" placeholder="请选择" size="small" style="width: 100%">
              <el-select v-model="editForm.writeUser" :disabled="operationType !== 'edit'" placeholder="请选择" size="small"
                style="width: 100%">
                <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="会签人:">
              <el-select v-model="editForm.countersignUser" :disabled="operationType !=='edit'" multiple placeholder="请选择" size="small" style="width: 100%">
              <el-select v-model="editForm.countersignUser" :disabled="operationType !== 'edit'" multiple
                placeholder="请选择" size="small" style="width: 100%">
                <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="审核人:">
              <el-select v-model="editForm.examineUser" :disabled="operationType !=='edit'" placeholder="请选择" size="small" style="width: 100%">
              <el-select v-model="editForm.examineUser" :disabled="operationType !== 'edit'" placeholder="请选择"
                size="small" style="width: 100%">
                <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="批准人:">
              <el-select v-model="editForm.ratifyUser" :disabled="operationType !=='edit'" placeholder="请选择" size="small" style="width: 100%">
              <el-select v-model="editForm.ratifyUser" :disabled="operationType !== 'edit'" placeholder="请选择"
                size="small" style="width: 100%">
                <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
            </el-form-item>
@@ -134,9 +135,9 @@
</template>
<script>
import {addQuarter, getQuarter, updateQuarterOnOrder} from "@/api/business/finishedProductSampling";
import {selectUserCondition} from "@/api/business/inspectionTask";
import {mapGetters} from "vuex";
import { addQuarter, getQuarter, updateQuarterOnOrder } from "@/api/business/finishedProductSampling";
import { selectUserCondition } from "@/api/business/inspectionTask";
import { mapGetters } from "vuex";
export default {
  name: "addQuarterItem",
@@ -146,7 +147,7 @@
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
      tableLoading: false,
      quarterSampleDia: false, // å­£åº¦æŠ½æ ·å¼¹æ¡†
      quarterSampleDia: false, // å¯é æ€§æŠ½æ ·å¼¹æ¡†
      quarterSampleForm: {
        quarterNo: '', // ç¼–号
      },
@@ -172,7 +173,7 @@
  },
  // æ–¹æ³•集合
  methods: {
    openDia (quarterTemItems, type) {
    openDia(quarterTemItems, type) {
      this.quarterSampleDia = true
      this.operationType = type
      if (type === 'add') {
@@ -183,7 +184,7 @@
      } else {
        this.tableLoading = true
        this.quarterRow = quarterTemItems
        getQuarter({quarterId: quarterTemItems.quarterId}).then(res => {
        getQuarter({ quarterId: quarterTemItems.quarterId }).then(res => {
          this.tableLoading = false
          if (res.code === 200) {
            this.quarterItems = res.data.quarterItems
@@ -203,7 +204,7 @@
      }
    },
    // æ‰‹åŠ¨æ·»åŠ 
    addQuarter () {
    addQuarter() {
      this.quarterItems.push({
        productType: '',
        dutyUser: this.nickName,
@@ -216,8 +217,8 @@
        itemRemark: '',
      })
    },
    // æäº¤å­£åº¦æŠ½æ ·
    handleSample () {
    // æäº¤å¯é æ€§æŠ½æ ·
    handleSample() {
      this.$confirm('是否提交该数据', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
@@ -237,7 +238,7 @@
            }
          })
        } else {
          const params = {...this.editForm}
          const params = { ...this.editForm }
          if (params.countersignUser.length > 0) {
            params.countersignUser = params.countersignUser.join(',')
          } else {
@@ -261,16 +262,16 @@
    },
    // æ¸…空抽样计划
    clearTable () {
    clearTable() {
      this.quarterItems = []
      this.$parent.quarterTemItems = []
    },
    // æ‰‹åŠ¨åˆ é™¤
    deleteScope (index) {
    deleteScope(index) {
      this.quarterItems.splice(index, 1)
    },
    // å…³é—­å­£åº¦æŠ½æ ·å¼¹æ¡†
    closeQuarterSampleDia () {
    // å…³é—­å¯é æ€§æŠ½æ ·å¼¹æ¡†
    closeQuarterSampleDia() {
      this.quarterSampleDia = false
      if (this.operationType === 'add') {
        this.$parent.handleStockList()
@@ -278,7 +279,7 @@
        this.$parent.refreshTable('page')
      }
    },
    getUserList(){
    getUserList() {
      selectUserCondition().then((res) => {
        this.userList = res.data;
      })
@@ -293,5 +294,4 @@
}
</script>
<style scoped>
</style>
<style scoped></style>
src/views/business/finishedProductSampling/index.vue
@@ -4,261 +4,134 @@
    <div class="card">
      <div class="title">
        <el-button size="small" type="primary" @click="addTemQuarter">新增</el-button>
        <el-button size="small" type="primary" @click="quarterSample">季度抽样</el-button>
        <el-button size="small" type="primary" @click="quarterSample">可靠性抽样</el-button>
        <el-button size="small" type="primary" @click="handleStockList">刷新</el-button>
      </div>
      <el-table
        ref="finishedproducttransferTable"
        v-loading="tableLoading"
        :data="stockList"
        :header-cell-style="lineSideWarehouseTableHeaderCellStyle"
        :row-class-name="lineSideWarehouseTableRowClassName"
        class="finishedproducttransfer-table"
        height="calc(100vh - 240px)"
        @selection-change="handleSelectionChange"
      >
      <el-table ref="finishedproducttransferTable" v-loading="tableLoading" :data="stockList"
        :header-cell-style="lineSideWarehouseTableHeaderCellStyle" :row-class-name="lineSideWarehouseTableRowClassName"
        class="finishedproducttransfer-table" height="calc(100vh - 240px)" @selection-change="handleSelectionChange">
        <el-table-column type="selection" width="45"></el-table-column>
        <el-table-column
          :show-overflow-tooltip="true"
          align="center"
          label="客户订单编号"
          prop="customerOrderNo"
          width="140"
        >
        <el-table-column :show-overflow-tooltip="true" align="center" label="客户订单编号" prop="customerOrderNo" width="140">
          <template slot="header" slot-scope="scope">
            <div style="line-height: 14px;margin-bottom: 6px">客户订单编号</div>
            <div class="th" @click.stop>
              <el-input
                v-model="queryParamOne.customerOrderNo"
                clearable
                size="mini"
                type="text"
                @clear="handleStockList"
                @keyup.enter.native="handleStockList"
              ></el-input>
              <el-input v-model="queryParamOne.customerOrderNo" clearable size="mini" type="text"
                @clear="handleStockList" @keyup.enter.native="handleStockList"></el-input>
            </div>
          </template>
          <template slot-scope="scope">
            <span>{{ scope.row.customerOrderNo }}</span>
          </template>
        </el-table-column>
        <el-table-column
          align="center"
          label="成品零件号"
          prop="partNo"
          width="140"
        >
        <el-table-column align="center" label="成品零件号" prop="partNo" width="140">
          <template slot="header" slot-scope="scope">
            <div style="line-height: 14px;margin-bottom: 6px">成品零件号</div>
            <div class="th" @click.stop>
              <el-input
                v-model="queryParamOne.partNo"
                clearable
                size="mini"
                type="text"
                @clear="handleStockList"
                @keyup.enter.native="handleStockList"
              ></el-input>
              <el-input v-model="queryParamOne.partNo" clearable size="mini" type="text" @clear="handleStockList"
                @keyup.enter.native="handleStockList"></el-input>
            </div>
          </template>
          <template slot-scope="scope">
            <span>{{ scope.row.partNo }}</span>
          </template>
        </el-table-column>
        <el-table-column
          align="center"
          label="零件名称"
          prop="partName"
          width="140"
        >
        <el-table-column align="center" label="零件名称" prop="partName" width="140">
          <template slot="header" slot-scope="scope">
            <div style="line-height: 14px;margin-bottom: 6px">零件名称</div>
            <div class="th" @click.stop>
              <el-input
                v-model="queryParamOne.partName"
                clearable
                size="mini"
                type="text"
                @clear="handleStockList"
                @keyup.enter.native="handleStockList"
              ></el-input>
              <el-input v-model="queryParamOne.partName" clearable size="mini" type="text" @clear="handleStockList"
                @keyup.enter.native="handleStockList"></el-input>
            </div>
          </template>
          <template slot-scope="scope">
            <span>{{ scope.row.partName }}</span>
          </template>
        </el-table-column>
        <el-table-column
          :show-overflow-tooltip="true"
          align="center"
          label="仓库"
          prop="warehouseName"
          width="140"
        >
        <el-table-column :show-overflow-tooltip="true" align="center" label="仓库" prop="warehouseName" width="140">
          <template slot="header" slot-scope="scope">
            <div style="line-height: 14px;margin-bottom: 6px">仓库</div>
            <div class="th" @click.stop>
              <el-input
                v-model="queryParamOne.warehouseName"
                clearable
                size="mini"
                type="text"
                @clear="handleStockList"
                @keyup.enter.native="handleStockList"
              ></el-input>
              <el-input v-model="queryParamOne.warehouseName" clearable size="mini" type="text" @clear="handleStockList"
                @keyup.enter.native="handleStockList"></el-input>
            </div>
          </template>
          <template slot-scope="scope">
            <span>{{ scope.row.warehouseName }}</span>
          </template>
        </el-table-column>
        <el-table-column
          :show-overflow-tooltip="true"
          align="center"
          label="库位号"
          prop="locationNo"
          width="140"
        >
        <el-table-column :show-overflow-tooltip="true" align="center" label="库位号" prop="locationNo" width="140">
          <template slot="header" slot-scope="scope">
            <div style="line-height: 14px;margin-bottom: 6px">库位号</div>
            <div class="th" @click.stop>
              <el-input
                v-model="queryParamOne.locationNo"
                clearable
                size="mini"
                type="text"
                @clear="handleStockList"
                @keyup.enter.native="handleStockList"
              ></el-input>
              <el-input v-model="queryParamOne.locationNo" clearable size="mini" type="text" @clear="handleStockList"
                @keyup.enter.native="handleStockList"></el-input>
            </div>
          </template>
          <template slot-scope="scope">
            <span>{{ scope.row.locationNo }}</span>
          </template>
        </el-table-column>
        <el-table-column
          :show-overflow-tooltip="true"
          align="center"
          label="库位名称"
          prop="locationName"
          width="140"
        >
        <el-table-column :show-overflow-tooltip="true" align="center" label="库位名称" prop="locationName" width="140">
          <template slot="header" slot-scope="scope">
            <div style="line-height: 14px;margin-bottom: 6px">库位名称</div>
            <div class="th" @click.stop>
              <el-input
                v-model="queryParamOne.locationName"
                clearable
                size="mini"
                type="text"
                @clear="handleStockList"
                @keyup.enter.native="handleStockList"
              ></el-input>
              <el-input v-model="queryParamOne.locationName" clearable size="mini" type="text" @clear="handleStockList"
                @keyup.enter.native="handleStockList"></el-input>
            </div>
          </template>
          <template slot-scope="scope">
            <span>{{ scope.row.locationName }}</span>
          </template>
        </el-table-column>
        <el-table-column
          align="center"
          label="批次号"
          prop="partBatchNo"
          width="140"
        >
        <el-table-column align="center" label="批次号" prop="partBatchNo" width="140">
          <template slot="header" slot-scope="scope">
            <div style="line-height: 14px;margin-bottom: 6px">批次号</div>
            <div class="th" @click.stop>
              <el-input
                v-model="queryParamOne.partBatchNo"
                clearable
                size="mini"
                type="text"
                @clear="handleStockList"
                @keyup.enter.native="handleStockList"
              ></el-input>
              <el-input v-model="queryParamOne.partBatchNo" clearable size="mini" type="text" @clear="handleStockList"
                @keyup.enter.native="handleStockList"></el-input>
            </div>
          </template>
          <template slot-scope="scope">
            <span>{{ scope.row.partBatchNo }}</span>
          </template>
        </el-table-column>
        <el-table-column
          align="center"
          label="入库来源"
          prop="inSource"
          width="140"
        >
        <el-table-column align="center" label="入库来源" prop="inSource" width="140">
          <template slot="header" slot-scope="scope">
            <div style="line-height: 14px;margin-bottom: 6px">入库来源</div>
            <div class="th" @click.stop>
              <el-input
                v-model="queryParamOne.inSource"
                clearable
                size="mini"
                type="text"
                @clear="handleStockList"
                @keyup.enter.native="handleStockList"
              ></el-input>
              <el-input v-model="queryParamOne.inSource" clearable size="mini" type="text" @clear="handleStockList"
                @keyup.enter.native="handleStockList"></el-input>
            </div>
          </template>
          <template slot-scope="scope">
            <span>{{ scope.row.inSource }}</span>
          </template>
        </el-table-column>
        <el-table-column
          align="center"
          label="外护颜色"
          prop="outerColor"
          width="140"
        >
        <el-table-column align="center" label="外护颜色" prop="outerColor" width="140">
          <template slot="header" slot-scope="scope">
            <div style="line-height: 14px;margin-bottom: 6px">外护颜色</div>
            <div class="th" @click.stop>
              <el-input
                v-model="queryParamOne.outerColor"
                clearable
                size="mini"
                type="text"
                @clear="handleStockList"
                @keyup.enter.native="handleStockList"
              ></el-input>
              <el-input v-model="queryParamOne.outerColor" clearable size="mini" type="text" @clear="handleStockList"
                @keyup.enter.native="handleStockList"></el-input>
            </div>
          </template>
          <template slot-scope="scope">
            <span>{{ scope.row.outerColor }}</span>
          </template>
        </el-table-column>
        <el-table-column
          align="center"
          label="库存数量"
          prop="stockQuantity"
          width="140"
        >
        <el-table-column align="center" label="库存数量" prop="stockQuantity" width="140">
        </el-table-column>
        <el-table-column
          align="center"
          label="可用库存数量"
          prop="availableStockQuantity"
          width="140"
        >
        <el-table-column align="center" label="可用库存数量" prop="availableStockQuantity" width="140">
          <template slot-scope="scope">
            <span>{{ scope.row.availableStockQuantity }}</span>
          </template>
        </el-table-column>
      </el-table>
      <div class="pagin-page" style="margin-top: 0;margin-bottom: 0;">
        <el-pagination
          background
          :current-page="queryReport.current"
          :page-size="queryReport.size"
          :page-sizes="[10, 15, 20, 50, 100]"
          :total="queryReport.total"
          layout="total, sizes, prev, pager, next, jumper"
          style="text-align:right;padding: 20px 16px;"
          @size-change="handleSizeChangeReport"
          @current-change="handleCurrentChangeReport"
        >
        <el-pagination background :current-page="queryReport.current" :page-size="queryReport.size"
          :page-sizes="[10, 15, 20, 50, 100]" :total="queryReport.total"
          layout="total, sizes, prev, pager, next, jumper" style="text-align:right;padding: 20px 16px;"
          @size-change="handleSizeChangeReport" @current-change="handleCurrentChangeReport">
        </el-pagination>
      </div>
    </div>
@@ -269,8 +142,8 @@
<script>
import AddQuarterItem from "./components/addQuarterItem.vue";
import {getIfsStock} from "@/api/business/finishedProductSampling";
import {mapGetters} from "vuex";
import { getIfsStock } from "@/api/business/finishedProductSampling";
import { mapGetters } from "vuex";
export default {
  name: 'FinishedProductSampling',
@@ -307,7 +180,7 @@
      operationType: ''
    }
  },
  components: {AddQuarterItem},
  components: { AddQuarterItem },
  mounted() {
    this.getIfsStock()
  },
@@ -320,11 +193,11 @@
    ...mapGetters(["nickName"]),
  },
  methods: {
    // å­£åº¦æŠ½æ ·
    quarterSample () {
    // å¯é æ€§æŠ½æ ·
    quarterSample() {
      this.$refs.addQuarterItem.openDia(this.quarterTemItems, 'add')
    },
    addTemQuarter () {
    addTemQuarter() {
      if (this.multipleSelection.length > 0) {
        const multipleSelection = JSON.parse(JSON.stringify(this.multipleSelection))
        if (multipleSelection.length > 0) {
@@ -395,7 +268,7 @@
      }
      return newReqParam
    },
    lineSideWarehouseTableHeaderCellStyle({row, column, rowIndex, columnIndex}) {
    lineSideWarehouseTableHeaderCellStyle({ row, column, rowIndex, columnIndex }) {
      let headerStyle = 'background:#FAFAFA;color:#666;'
      if (columnIndex === 0) {
        headerStyle += 'border-radius: 6px 0px 0px 0px;'
@@ -435,11 +308,13 @@
>>>.el-table__header {
  height: 70px;
}
.card {
  height: calc(100% - 40px);
  background: #ffffff;
  padding: 10px;
}
.title {
  text-align: right;
  margin-bottom: 10px;
src/views/business/inspectionReview/index.vue
@@ -250,7 +250,7 @@
        { label: '委托试验', value: 'Customer-ordered test', type: 'success' },
        { label: '抽检', value: '抽检', type: 'danger' },
        { label: '进厂检验', value: '进厂检验', type: 'info' },
        { label: '季度检验', value: 'Quarterly inspection', type: '' },
        { label: '可靠性检验', value: 'Quarterly inspection', type: '' },
      ],
      urgencyLevel: [],
      inspectionTaskState: [],
src/views/business/inspectionTask/index.vue
@@ -330,7 +330,7 @@
        },
        {
          value: "Quarterly inspection",
          label: "季度检验",
          label: "可靠性检验",
          type: "warning",
          effect: "plain",
        },
src/views/business/materialOrder/commom/fileList.vue
ÎļþÒÑɾ³ý
src/views/business/materialOrder/customsInspection.vue
@@ -136,6 +136,11 @@
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="车间名称:">
              <el-input v-model="addObj.workShopName" class="addObj-info" clearable disabled size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="备注:">
              <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2 }" :disabled="active > 1"
                :placeholder="active > 1 ? '' : '请输入'" clearable size="small" type="textarea"></el-input>
@@ -168,7 +173,7 @@
                é™„件查看
              </el-button>
              <el-dialog :visible.sync="fileDialogVisible" title="附件查看" width="80%">
                <fileList :currentNo="partNo" v-if="fileDialogVisible" />
                <fileList :currentNo="addObj.workShopId" v-if="fileDialogVisible" />
              </el-dialog>
            </el-form-item>
          </el-form>
@@ -419,7 +424,7 @@
  selectStandardProductList,
  selectStandardTreeListByPartNo
} from "@/api/business/rawMaterialOrder";
import fileList from "./commom/fileList.vue"
import fileList from "../../structural/capabilityAndLaboratory/workshop/components/fileList.vue"
import limsTable from "@/components/Table/lims-table.vue";
export default {
@@ -477,6 +482,8 @@
        typeSource: 1,
        ifsInventoryId: '',
        sampleStatus: 'In good condition',
        workShopName: '',//车间名称
        workShopId: '',//车间ID
      },
      addObjRules: { // è¡¨å•校验规则
        testQuantity: [
@@ -560,7 +567,7 @@
          value: 0
        },
        {
          label: '季度检验',
          label: '可靠性检验',
          value: 1
        },
      ],
@@ -632,7 +639,6 @@
  methods: {
    handleFileDialog() {
      this.fileDialogVisible = true
      this.currentNo = addObj.partNo || customsInspection.partNo;
    },
    save1() {
      if (this.bsm1DiaList.length > 0) {
@@ -749,6 +755,8 @@
            this.$set(this.addObj, 'buyUnitMeas', this.customsInspection.buyUnitMeas)
            this.$set(this.addObj, 'updateBatchNo', this.customsInspection.updateBatchNo)
            this.$set(this.addObj, 'partDetail', this.customsInspection.partDesc)
            this.$set(this.addObj, 'workShopName', res.data.workShopName)
            this.$set(this.addObj, 'workShopId', res.data.workShopId)
            if (this.orderType == 1) {
              this.$set(this.addObj, 'orderType', 'Quarterly inspection')
            }
src/views/business/materialOrder/index.vue
@@ -67,7 +67,7 @@
              <li :class="{ active: tabIndex === 0 }" @click="handleTab(0)">待下单</li>
              <li :class="{ active: tabIndex === 1 }" @click="handleTab(1)">检验中</li>
              <li :class="{ active: tabIndex === 2 }" @click="handleTab(2)">已检验</li>
              <li :class="{ active: tabIndex === 4 }" @click="handleTab(4)">季度检验</li>
              <li :class="{ active: tabIndex === 4 }" @click="handleTab(4)">可靠性检验</li>
              <li :class="{ active: tabIndex === 3 }" v-if="checkPermi(['get:Ifs:ByAll'])" @click="handleTab(3)">全部</li>
            </ul>
          </div>
@@ -102,7 +102,7 @@
            :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination3"
            :height="'calc(100vh - 290px)'" key="tableData3" :page="page3" :tableLoading="tableLoading3"></lims-table>
        </div>
        <!--季度检验-->
        <!--可靠性检验-->
        <div class="table">
          <lims-table :tableData="tableData4" :column="column4" v-if="tabIndex === 4" :isSelection="true"
            :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination4"
@@ -138,7 +138,7 @@
    <!-- æ’¤é”€ä¸‹å• -->
    <el-dialog :visible.sync="quashDialogVisible" title="下单撤销" width="30%">
      <el-button size="small" type="primary" @click="cancelQuashOrder('enterOrderId')">撤销进厂检验下单</el-button>
      <el-button size="small" type="primary" @click="cancelQuashOrder('quarterOrderId')">撤销季度检验下单</el-button>
      <el-button size="small" type="primary" @click="cancelQuashOrder('quarterOrderId')">撤销可靠性检验下单</el-button>
      <span slot="footer" class="dialog-footer">
        <el-row>
          <el-button @click="quashDialogVisible = false">取 æ¶ˆ</el-button>
@@ -176,7 +176,7 @@
          type="primary" @click="viewInsInfo0">查看</el-link>
      </div>
      <div>
        <span style="font-size: 16px;">季度检验原始数据</span>
        <span style="font-size: 16px;">可靠性检验原始数据</span>
        <el-link :disabled="!insInfo.quarterOrderId" :underline="false" style="vertical-align: bottom;margin-left: 6px"
          type="primary" @click="viewInsInfo1">查看</el-link>
      </div>
@@ -476,7 +476,7 @@
          label: '操作',
          operation: [
            {
              name: '季度检验',
              name: '可靠性检验',
              type: 'text',
              clickFun: (row) => {
                this.playOrderSec(row);
@@ -527,7 +527,7 @@
              },
            },
            {
              name: '季度撤销',
              name: '可靠性撤销',
              type: 'text',
              clickFun: (row) => {
                this.repealQuarter(row);
@@ -773,7 +773,7 @@
          label: '操作',
          operation: [
            {
              name: '季度检验',
              name: '可靠性检验',
              type: 'text',
              clickFun: (row) => {
                this.playOrderSec(row);
@@ -837,7 +837,7 @@
          value: 2
        },
        {
          label: '季度检验',
          label: '可靠性检验',
          value: 4
        },
        {
@@ -849,7 +849,7 @@
      tabIndex: 0,
      multipleSelection: [],
      active: 0, //1:下单,2:查看
      orderType: 0, //0:原辅材下单,1:季度检验下单
      orderType: 0, //0:原辅材下单,1:可靠性检验下单
      currentId: null,
      btnLoading: false,
      quashDialogVisible: false, // æ’¤é”€ä¸‹å•提醒弹框
@@ -919,7 +919,7 @@
        // å·²æ£€éªŒæŸ¥è¯¢
        this.getIfsByOverList()
      } else if (this.tabIndex === 4) {
        // æŸ¥è¯¢å­£åº¦æ£€éªŒ
        // æŸ¥è¯¢å¯é æ€§æ£€éªŒ
        this.getIfsByQuarterList()
      } else {
        // å…¨éƒ¨æŸ¥è¯¢
@@ -975,7 +975,7 @@
        this.tableLoading2 = false
      })
    },
    // æŸ¥è¯¢å­£åº¦æ£€éªŒ
    // æŸ¥è¯¢å¯é æ€§æ£€éªŒ
    getIfsByQuarterList() {
      this.tableLoading4 = true
      if (null != this.entity.date) {
@@ -1080,9 +1080,9 @@
        });
      });
    },
    // å­£åº¦æ’¤é”€
    // å¯é æ€§æ’¤é”€
    repealQuarter(row) {
      this.$confirm('是否撤销季度下单?', "警告", {
      this.$confirm('是否撤销可靠性下单?', "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
@@ -1158,7 +1158,7 @@
    playOrder(row) {
      this.$router.push({ path: "/materialOrder/customsInspection", query: { orderType: 0, customsInspection: row, active: 1 } });
    },
    // å­£åº¦æ£€éªŒä¸‹å•
    // å¯é æ€§æ£€éªŒä¸‹å•
    playOrderSec(row) {
      this.$router.push({ path: "/materialOrder/customsInspection", query: { orderType: 1, customsInspection: row, active: 1 } });
    },
@@ -1231,7 +1231,7 @@
          })
        }).catch(() => { })
      } else if (!row.enterOrderId && row.quarterOrderId) {
        this.$confirm('是否撤销季度下单?', "警告", {
        this.$confirm('是否撤销可靠性下单?', "警告", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
src/views/business/materialOrderComponents/materialOrder/dataLookVisible.vue
@@ -110,7 +110,7 @@
          value: 0
        },
        {
          label: '季度检验',
          label: '可靠性检验',
          value: 1
        },
      ],
src/views/business/materialOrderComponents/materialOrder/downFileDialog.vue
@@ -5,15 +5,14 @@
        <span style="font-size: 16px;">进厂检验报告下载</span>
        <i class="el-icon-paperclip" style="color:#409EFF;margin-left: 6px"></i>
        <el-link :underline="false" style="vertical-align: bottom;font-size: 16px;"
                 :disabled="!downLoadInfo.enterUrls && !downLoadInfo.enterUrl"
                 type="primary" @click="downLoad0">查看</el-link>
          :disabled="!downLoadInfo.enterUrls && !downLoadInfo.enterUrl" type="primary" @click="downLoad0">查看</el-link>
      </div>
      <div>
        <span  style="font-size: 16px;">季度检验报告下载</span>
        <span style="font-size: 16px;">可靠性检验报告下载</span>
        <i class="el-icon-paperclip" style="color:#409EFF;margin-left: 6px"></i>
        <el-link :underline="false" style="vertical-align: bottom;font-size: 16px;"
                 :disabled="!downLoadInfo.quarterUrls && !downLoadInfo.quarterUrl"
                 type="primary" @click="downLoad1">查看</el-link>
          :disabled="!downLoadInfo.quarterUrls && !downLoadInfo.quarterUrl" type="primary"
          @click="downLoad1">查看</el-link>
      </div>
    </el-dialog>
  </div>
@@ -31,7 +30,7 @@
    },
    downLoadInfo: {
      type: Object,
      default: () => {}
      default: () => { }
    },
  },
  data() {
@@ -43,10 +42,10 @@
  // æ–¹æ³•集合
  methods: {
    // è¿›åŽ‚æ£€éªŒæŠ¥å‘Šä¸‹è½½
    downLoad0 () {
    downLoad0() {
      let url = this.downLoadInfo.enterUrlS ? this.downLoadInfo.enterUrlS : this.downLoadInfo.enterUrl
      if(url){
        url = url.split('.')[0]+'.pdf'
      if (url) {
        url = url.split('.')[0] + '.pdf'
        const link = document.createElement('a');
        link.href = this.javaApi + url;
        link.target = '_blank';
@@ -54,11 +53,11 @@
        link.click();
      }
    },
    // å­£åº¦æ£€éªŒæŠ¥å‘Šä¸‹è½½
    downLoad1 () {
    // å¯é æ€§æ£€éªŒæŠ¥å‘Šä¸‹è½½
    downLoad1() {
      let url = this.downLoadInfo.quarterUrlS ? this.downLoadInfo.quarterUrlS : this.downLoadInfo.quarterUrl
      if(url){
        url = url.split('.')[0]+'.pdf'
      if (url) {
        url = url.split('.')[0] + '.pdf'
        const link = document.createElement('a');
        link.href = this.javaApi + url;
        link.target = '_blank';
@@ -71,7 +70,7 @@
</script>
<style scoped>
>>> .el-dialog {
>>>.el-dialog {
  height: 160px;
}
</style>
src/views/business/materialOrderComponents/materialOrder/filesLookVisible.vue
@@ -106,7 +106,7 @@
          value: 0
        },
        {
          label: '季度检验',
          label: '可靠性检验',
          value: 1
        },
      ],
src/views/business/productOrder/components/add.vue
@@ -777,7 +777,7 @@
      temId: '',
      sonLaboratoryList: [],
      selectiveEcho: [], // æ£€éªŒä¸‹å•的时候勾选检验项目,如果使用筛选提交显示检验项目为空 å›žæ˜¾åˆ—表
      quarterItemOptions: [], // æŸ¥è¯¢å­£åº¦ä¿¡æ¯
      quarterItemOptions: [], // æŸ¥è¯¢å¯é æ€§ä¿¡æ¯
      specialStandardMethod: '',
      isSpecial: false,
    }
src/views/business/productSamplingInfo/components/addQuarterItem.vue
@@ -1,8 +1,9 @@
<template>
  <div>
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="quarterSampleDia" title="季度抽样" width="90%" @close="quarterSampleDia = false">
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="quarterSampleDia"
      title="可靠性抽样" width="90%" @close="quarterSampleDia = false">
      <div style="display: flex;align-items: center;justify-content: space-between;margin-bottom: 10px">
        <div style="width: 30%;display: flex;align-items: center;" >
        <div style="width: 30%;display: flex;align-items: center;">
          <span style="width: 50px">编号:</span>
          <el-input v-model="quarterSampleForm.quarterNo" :disabled="operationType !== 'add'" size="small"></el-input>
        </div>
@@ -13,11 +14,11 @@
      </div>
      <div>
        <el-table v-loading="tableLoading" :data="quarterItems" height="400" style="width: 100%"
                  :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border>
          :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border>
          <el-table-column label="产品类型" prop="productType" width="200">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.productType" size="small"/>
                <el-input v-model="row.productType" size="small" />
              </template>
            </template>
          </el-table-column>
@@ -25,43 +26,37 @@
          <el-table-column label="型号" prop="productModel" width="120">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.productModel" size="small" :disabled="operationType === 'view'"/>
                <el-input v-model="row.productModel" size="small" :disabled="operationType === 'view'" />
              </template>
            </template>
          </el-table-column>
          <el-table-column label="抽样数量" min-width="340" prop="spotCheckNumber">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.spotCheckNumber" size="small" :disabled="operationType === 'view'"/>
                <el-input v-model="row.spotCheckNumber" size="small" :disabled="operationType === 'view'" />
              </template>
            </template>
          </el-table-column>
          <el-table-column v-if="operationType === 'add'" label="数量" min-width="120" prop="number">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.number" size="small" :disabled="operationType === 'view'"/>
                <el-input v-model="row.number" size="small" :disabled="operationType === 'view'" />
              </template>
            </template>
          </el-table-column>
          <el-table-column v-if="operationType !== 'add'" label="抽样时间" prop="spotCheckTime" width="160">
            <template slot-scope="{row}">
              <template>
                <el-date-picker v-model="row.spotCheckTime"
                                format="yyyy-MM-dd"
                                :disabled="operationType === 'view'"
                                placeholder="选择日期"
                                size="small"
                                clearable
                                style="width:100%"
                                type="date"
                                value-format="yyyy-MM-dd">
                <el-date-picker v-model="row.spotCheckTime" format="yyyy-MM-dd" :disabled="operationType === 'view'"
                  placeholder="选择日期" size="small" clearable style="width:100%" type="date" value-format="yyyy-MM-dd">
                </el-date-picker>
              </template>
            </template>
          </el-table-column>
          <el-table-column v-if="operationType !== 'add'" label="试样结论" prop="result" width="130">
            <template v-slot="scope">
              <el-select v-model="scope.row.result" placeholder="请选择" size="small" clearable :disabled="operationType === 'view'">
              <el-select v-model="scope.row.result" placeholder="请选择" size="small" clearable
                :disabled="operationType === 'view'">
                <el-option label="合格" value="合格"></el-option>
                <el-option label="不合格" value="不合格"></el-option>
              </el-select>
@@ -70,54 +65,60 @@
          <el-table-column v-if="operationType !== 'add'" label="取样人员" prop="samplingUser" width="120">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.samplingUser" size="small" :disabled="operationType === 'view'"/>
                <el-input v-model="row.samplingUser" size="small" :disabled="operationType === 'view'" />
              </template>
            </template>
          </el-table-column>
          <el-table-column label="备注" prop="itemRemark" width="200">
            <template slot-scope="{row}">
              <template>
                <el-input v-model="row.itemRemark" size="small" :disabled="operationType === 'view'"/>
                <el-input v-model="row.itemRemark" size="small" :disabled="operationType === 'view'" />
              </template>
            </template>
          </el-table-column>
          <el-table-column v-if="operationType !== 'view'" fixed="right" label="操作" width="100">
            <template slot-scope="scope">
              <el-button size="small" style="color: #f56c6c" type="text" @click="deleteScope(scope.$index)">删除</el-button>
              <el-button size="small" style="color: #f56c6c" type="text"
                @click="deleteScope(scope.$index)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div style="display: flex;align-items: center;margin: 10px 0">
        <span style="width: 70px">备注:</span>
        <el-input v-model="quarterSampleForm.remark" :disabled="operationType === 'view'" size="small" style="width: 43%" type="textarea"></el-input>
        <el-input v-model="quarterSampleForm.remark" :disabled="operationType === 'view'" size="small"
          style="width: 43%" type="textarea"></el-input>
      </div>
      <div v-if="operationType !== 'add'">
        <el-form ref="form" :model="editForm" label-width="70px">
          <el-col :span="12">
            <el-form-item label="编制人:">
              <el-select v-model="editForm.writeUser" :disabled="operationType !=='edit'" placeholder="请选择" size="small" style="width: 100%">
              <el-select v-model="editForm.writeUser" :disabled="operationType !== 'edit'" placeholder="请选择" size="small"
                style="width: 100%">
                <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="会签人:">
              <el-select v-model="editForm.countersignUser" :disabled="operationType !=='edit'" multiple placeholder="请选择" size="small" style="width: 100%">
              <el-select v-model="editForm.countersignUser" :disabled="operationType !== 'edit'" multiple
                placeholder="请选择" size="small" style="width: 100%">
                <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="审核人:">
              <el-select v-model="editForm.examineUser" :disabled="operationType !=='edit'" placeholder="请选择" size="small" style="width: 100%">
              <el-select v-model="editForm.examineUser" :disabled="operationType !== 'edit'" placeholder="请选择"
                size="small" style="width: 100%">
                <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="批准人:">
              <el-select v-model="editForm.ratifyUser" :disabled="operationType !=='edit'" placeholder="请选择" size="small" style="width: 100%">
              <el-select v-model="editForm.ratifyUser" :disabled="operationType !== 'edit'" placeholder="请选择"
                size="small" style="width: 100%">
                <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
            </el-form-item>
@@ -127,15 +128,16 @@
      <span slot="footer" class="dialog-footer">
        <el-button @click="quarterSampleDia = false">取 æ¶ˆ</el-button>
        <el-button v-if="operationType === 'add'" @click="quarterSampleDia = false">保 å­˜</el-button>
        <el-button v-if="operationType !== 'add' && operationType !== 'view'" type="primary" @click="handleSample">ç¡® å®š</el-button>
        <el-button v-if="operationType !== 'add' && operationType !== 'view'" type="primary" @click="handleSample">ç¡®
          å®š</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import {addQuarter, getQuarter, updateQuarterOnOrder} from "@/api/business/productSamplingInfo";
import {selectUserCondition} from "@/api/performance/class";
import { addQuarter, getQuarter, updateQuarterOnOrder } from "@/api/business/productSamplingInfo";
import { selectUserCondition } from "@/api/performance/class";
export default {
  name: "addQuarterItem",
@@ -145,7 +147,7 @@
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
      tableLoading: false,
      quarterSampleDia: false, // å­£åº¦æŠ½æ ·å¼¹æ¡†
      quarterSampleDia: false, // å¯é æ€§æŠ½æ ·å¼¹æ¡†
      quarterSampleForm: {
        quarterNo: '', // ç¼–号
      },
@@ -168,7 +170,7 @@
  },
  // æ–¹æ³•集合
  methods: {
    openDia (quarterTemItems, type) {
    openDia(quarterTemItems, type) {
      this.quarterSampleDia = true
      this.operationType = type
      if (type === 'add') {
@@ -179,7 +181,7 @@
      } else {
        this.tableLoading = true
        this.quarterRow = quarterTemItems
        getQuarter({quarterId: quarterTemItems.quarterId}).then(res => {
        getQuarter({ quarterId: quarterTemItems.quarterId }).then(res => {
          this.tableLoading = false
          if (res.code === 200) {
            this.quarterItems = res.data.quarterItems
@@ -197,7 +199,7 @@
      }
    },
    // æ‰‹åŠ¨æ·»åŠ 
    addQuarter () {
    addQuarter() {
      this.quarterItems.push({
        productType: '',
        dutyUser: JSON.parse(localStorage.getItem("user")).name,
@@ -210,8 +212,8 @@
        itemRemark: '',
      })
    },
    // æäº¤å­£åº¦æŠ½æ ·
    handleSample () {
    // æäº¤å¯é æ€§æŠ½æ ·
    handleSample() {
      this.$confirm('是否提交该数据', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
@@ -231,7 +233,7 @@
            }
          })
        } else {
          const params = {...this.editForm}
          const params = { ...this.editForm }
          if (params.countersignUser.length > 0) {
            params.countersignUser = params.countersignUser.join(',')
          } else {
@@ -255,16 +257,16 @@
    },
    // æ¸…空抽样计划
    clearTable () {
    clearTable() {
      this.quarterItems = []
      this.$parent.quarterTemItems = []
    },
    // æ‰‹åŠ¨åˆ é™¤
    deleteScope (index) {
    deleteScope(index) {
      this.quarterItems.splice(index, 1)
    },
    // å…³é—­å­£åº¦æŠ½æ ·å¼¹æ¡†
    closeQuarterSampleDia () {
    // å…³é—­å¯é æ€§æŠ½æ ·å¼¹æ¡†
    closeQuarterSampleDia() {
      this.quarterSampleDia = false
      if (this.operationType === 'add') {
        this.$parent.handleStockList()
@@ -272,7 +274,7 @@
        this.$parent.refreshTable()
      }
    },
    getUserList(){
    getUserList() {
      selectUserCondition().then((res) => {
        this.userList = res.data;
      })
@@ -287,5 +289,4 @@
}
</script>
<style scoped>
</style>
<style scoped></style>
src/views/business/productSamplingInfo/index.vue
@@ -19,9 +19,10 @@
    <div>
      <div class="table">
        <ul class="tab">
          <li v-for="(m, i) in tabList" :key="i" :class="{ active: i === tabIndex }" @click="handleTab(m, i)">{{ m.label }}</li>
          <li v-for="(m, i) in tabList" :key="i" :class="{ active: i === tabIndex }" @click="handleTab(m, i)">{{ m.label
            }}</li>
        </ul>
        <!--季度-->
        <!--可靠性-->
        <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0" @pagination="pagination"
          :height="'calc(100vh - 290px)'" :page="page" :tableLoading="tableLoading"></lims-table>
        <!--年度-->
@@ -34,8 +35,8 @@
      <div style="display: flex;align-items: center;justify-content: space-between;margin-bottom: 10px">
        <div style="width: 30%;display: flex;align-items: center;">
          <el-input v-if="operationType !== 'view'" v-model="currentYear" size="small" />
          <span v-if="operationType === 'view'"
            style="width: 160px;font-size: 18px;font-weight: 600">{{ currentYear }}</span>
          <span v-if="operationType === 'view'" style="width: 160px;font-size: 18px;font-weight: 600">{{ currentYear
            }}</span>
        </div>
        <div v-if="operationType !== 'view'">
          <el-button size="small" type="primary" @click="addQuarter">添加</el-button>
@@ -44,7 +45,7 @@
      </div>
      <div>
        <el-table :data="yearItems" border height="450" style="width: 100%"
                  :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }">
          :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }">
          <el-table-column label="类别" prop="yearType" width="240">
            <template slot-scope="{row}">
              <template v-if="operationType !== 'view'">
@@ -261,7 +262,7 @@
      tabIndex: 0,
      tabList: [
        {
          label: '季度',
          label: '可靠性',
          value: 0
        },
        {
@@ -434,15 +435,15 @@
      this.page1.size = page.limit
      this.refreshTable()
    },
    // ç¼–辑季度抽样
    // ç¼–辑可靠性抽样
    editForm(row) {
      this.$refs.addQuarterItem.openDia(row, 'edit')
    },
    // æŸ¥çœ‹å­£åº¦æŠ½æ ·
    // æŸ¥çœ‹å¯é æ€§æŠ½æ ·
    viewQuarterInfo(row) {
      this.$refs.addQuarterItem.openDia(row, 'view')
    },
    // åˆ é™¤å­£åº¦æŠ½æ ·
    // åˆ é™¤å¯é æ€§æŠ½æ ·
    deleteQuarterInfo(row) {
      this.$confirm('是否删除当前数据?', "警告", {
        confirmButtonText: "确定",
@@ -463,7 +464,7 @@
      finalReportQuarter({ quarterId: row.quarterId, random: randomNum }).then(res => {
        this.outLoading = false
        const blob = new Blob([res], { type: 'application/octet-stream' });
        this.$download.saveAs(blob, '季度抽样信息导出.docx')
        this.$download.saveAs(blob, '可靠性抽样信息导出.docx')
      })
    },
    // å¹´åº¦ä¸‹è½½
src/views/business/reportPreparation/index.vue
@@ -186,8 +186,8 @@
          <el-button size="small" style="height: 38px" type="primary">附件上传</el-button>
        </el-upload>
      </div>
      <lims-table :tableData="tableDataFile" :column="columnFile" height="500px"
        key="tableDataFile" :tableLoading="tableLoadingFile"></lims-table>
      <lims-table :tableData="tableDataFile" :column="columnFile" height="500px" key="tableDataFile"
        :tableLoading="tableLoadingFile"></lims-table>
    </el-dialog>
  </div>
</template>
@@ -207,7 +207,7 @@
import { mapGetters } from "vuex";
import { selectUserCondition } from "@/api/business/inspectionTask";
import limsTable from "@/components/Table/lims-table.vue";
import {delFile, downFile, getFileList} from "@/api/business/rawMaterialOrder";
import { delFile, downFile, getFileList } from "@/api/business/rawMaterialOrder";
export default {
  name: 'ReportPreparation',
  components: { limsTable, onlyoffice },
@@ -257,7 +257,7 @@
        { label: '委托试验', value: 'Customer-ordered test' },
        { label: '抽检', value: '抽检' },
        { label: '进厂检验', value: '进厂检验' },
        { label: '季度检验', value: 'Quarterly inspection' },
        { label: '可靠性检验', value: 'Quarterly inspection' },
      ],
      showInfoDialog: false, // äº§ä¸šé“¾ä¿¡æ¯æŸ¥çœ‹
      isReport: 1,
src/views/statisticalCharts/qualificationRateStatistics/index.vue
@@ -11,18 +11,9 @@
      <el-col :span="20">
        <el-form ref="entity" size="small" :inline="true">
          <el-form-item style="width: 20%;">
            <el-date-picker
              v-model="datePicker"
              end-placeholder="结束日期"
              format="yyyy-MM-dd"
              placeholder="选择日期"
              range-separator="至"
              size="small"
              start-placeholder="开始日期"
              type="daterange"
              style="width: 100%;"
              value-format="yyyy-MM-dd"
              @change="changeDatePicker">
            <el-date-picker v-model="datePicker" end-placeholder="结束日期" format="yyyy-MM-dd" placeholder="选择日期"
              range-separator="至" size="small" start-placeholder="开始日期" type="daterange" style="width: 100%;"
              value-format="yyyy-MM-dd" @change="changeDatePicker">
            </el-date-picker>
          </el-form-item>
          <el-form-item label="样品名称" prop="sampleName">
@@ -32,7 +23,8 @@
            <el-input v-model="modelName" clearable placeholder="请输入型号" size="small" @change="changeDate"></el-input>
          </el-form-item>
          <el-form-item label="供应商名称" prop="supplierName">
            <el-input v-model="supplierName" clearable placeholder="请输入供应商名称" size="small" @change="changeDate"></el-input>
            <el-input v-model="supplierName" clearable placeholder="请输入供应商名称" size="small"
              @change="changeDate"></el-input>
          </el-form-item>
        </el-form>
      </el-col>
@@ -41,38 +33,23 @@
      <el-col :span="8">
        <div class="pie-card">
          <div class="title">原材料合格率</div>
          <span class="data">{{passRate}}</span>
          <Echarts ref="chart"
                   :legend="pieLegend"
                   :series="materialPieSeries"
                   :tooltip="pieTooltip"
                   style="height: 36vh;"></Echarts>
          <span class="data">{{ passRate }}</span>
          <Echarts ref="chart" :legend="pieLegend" :series="materialPieSeries" :tooltip="pieTooltip"
            style="height: 36vh;"></Echarts>
        </div>
      </el-col>
      <el-col :span="8">
        <div class="pie-card">
          <div class="title"><span style="color: #F56C6C">本月</span>检验类型数量</div>
          <Echarts ref="chart"
                   :chartStyle="chartStyle2"
                   :legend="pieLegend"
                   :series="materialPieSeries1"
                   :tooltip="pieTooltip"
                   style="height: 36vh;"></Echarts>
          <Echarts ref="chart" :chartStyle="chartStyle2" :legend="pieLegend" :series="materialPieSeries1"
            :tooltip="pieTooltip" style="height: 36vh;"></Echarts>
        </div>
      </el-col>
      <el-col :span="8">
        <div class="pie-card">
          <div class="title">原材料<span style="color: #F56C6C">本月</span>与<span style="color: #F56C6C">上月</span>合格率对比</div>
          <Echarts ref="chart"
                   :barColors="barColors2"
                   :chartStyle="chartStyle"
                   :grid="grid"
                   :legend="barLegend"
                   :series="barSeries"
                   :tooltip="tooltip"
                   :xAxis="xAxis1"
                   :yAxis="yAxis1"
                   style="height: 36vh;"></Echarts>
          <Echarts ref="chart" :barColors="barColors2" :chartStyle="chartStyle" :grid="grid" :legend="barLegend"
            :series="barSeries" :tooltip="tooltip" :xAxis="xAxis1" :yAxis="yAxis1" style="height: 36vh;"></Echarts>
        </div>
      </el-col>
    </el-row>
@@ -80,17 +57,9 @@
      <el-col :span="24">
        <div class="inspection-card">
          <div class="title">合格率</div>
          <Echarts ref="chart"
                   :barColors="barColors"
                   :grid="grid"
                   :legend="legend"
                   :lineColors="lineColors"
                   :options="echartsOptions"
                   :series="echartsSeries"
                   :tooltip="tooltip"
                   :xAxis="xAxis"
                   :yAxis="yAxis"
                   style="height: 40vh;"></Echarts>
          <Echarts ref="chart" :barColors="barColors" :grid="grid" :legend="legend" :lineColors="lineColors"
            :options="echartsOptions" :series="echartsSeries" :tooltip="tooltip" :xAxis="xAxis" :yAxis="yAxis"
            style="height: 40vh;"></Echarts>
        </div>
      </el-col>
    </el-row>
@@ -109,7 +78,7 @@
export default {
  name: "QualificationRateStatistics",
  // import å¼•入的组件需要注入到对象中才能使用
  components: {Echarts},
  components: { Echarts },
  data() {
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
@@ -189,7 +158,7 @@
        containLabel: true
      },
      legend: {
        data: ['总数','合格率']
        data: ['总数', '合格率']
      },
      tooltip: {
        trigger: 'axis',
@@ -271,7 +240,7 @@
          data: [
            { value: 0, name: '委托检验' },
            { value: 0, name: '进厂检验' },
            { value: 0, name: '季度检验' },
            { value: 0, name: '可靠性检验' },
            { value: 0, name: '抽样' },
          ]
        }
@@ -376,7 +345,7 @@
      getOrderTypeCookie().then((res) => {
        this.materialPieSeries1[0].data[0].value = res.data.customer // å§”托
        this.materialPieSeries1[0].data[1].value = res.data.enter // è¿›åŽ‚
        this.materialPieSeries1[0].data[2].value = res.data.quarterly // å­£åº¦
        this.materialPieSeries1[0].data[2].value = res.data.quarterly // å¯é æ€§
        this.materialPieSeries1[0].data[3].value = res.data.spotCheck // æŠ½æ ·
      })
    },
@@ -393,13 +362,13 @@
        this.barSeries[0].data = barData
      })
    },
    changeDate () {
    changeDate() {
      this.getBar()
      this.getRawPass()
      // this.getOrderType()
      // this.getPassRateCom()
    },
    changeDatePicker (val) {
    changeDatePicker(val) {
      if (val) {
        this.beginDate = val[0] + ' 00:00:00'
        this.endDate = val[1] + ' 23:59:59'
@@ -420,15 +389,18 @@
.title {
  padding: 10px 0 0 20px;
}
.table {
  padding: 0 10px 10px;
}
.pie-card {
  width: 100%;
  background: #FFFFFF;
  margin-top: 10px;
  position: relative;
}
.data {
  position: absolute;
  font-size: 20px;
@@ -437,7 +409,8 @@
  top: 42%;
  z-index: 1;
}
.inspection-card{
.inspection-card {
  width: 100%;
  background: #FFFFFF;
  margin-top: 10px;
src/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue
@@ -30,8 +30,9 @@
          <el-col :span="12">
            <el-form-item label="检验对象:" prop="sample">
              <el-cascader v-model="editForm.sample" :options="itemParameterData.cascaderField.sample.tree"
                :props="{ value: 'name', label: 'name', checkStrictly: true, multiple: true }" :show-all-levels="false"
                clearable filterable placeholder="请选择" size="small" style="width: 100%;"></el-cascader>
                :props="{ value: 'labelName', label: 'name', checkStrictly: true, multiple: true }"
                :show-all-levels="false" clearable filterable placeholder="请选择" size="small"
                style="width: 100%;"></el-cascader>
            </el-form-item>
          </el-col>
          <el-col :span="12">