spring
2025-03-21 9e0426e8e28dd530663cdbe80f258d1622cc9e7d
原材料变更为原辅料,新增基础配置包材
已修改18个文件
1539 ■■■■ 文件已修改
src/api/business/finishedProductSampling.js 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/materialInspection.js 112 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/rawMaterialOrder.js 322 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/statisticalCharts/dataAnalysis.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionReview/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionTask/index.vue 97 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionTask/inspection.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/customsInspection.vue 543 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/index.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productOrder/index.vue 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/rawMaterialInspection/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/reportPreparation/index.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/unpass/components/unPassDialog.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/statisticalCharts/itemInspectionAnalysis/index.vue 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/statisticalCharts/qualificationRateStatistics/index.vue 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/capability/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/capabilityComponents/bindPartDialog.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/finishedProductSampling.js
@@ -1,35 +1,35 @@
// 成品抽样详情页面相关接口
import request from '@/utils/request'
import request from "@/utils/request";
// 原材料根据id报检
// 原辅料根据id报检
export function getIfsStock(query) {
  return request({
    url: '/finishProductSpotCheck/getIfsStock',
    method: 'post',
    data: query
  })
    url: "/finishProductSpotCheck/getIfsStock",
    method: "post",
    data: query,
  });
}
// 季度抽检查看详情
export function getQuarter(query) {
  return request({
    url: '/finishProductSpotCheck/getQuarter',
    method: 'get',
    params: query
  })
    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/materialInspection.js
@@ -1,99 +1,99 @@
// 原材料报检页面相关接口
import request from '@/utils/request'
// 原辅料报检页面相关接口
import request from "@/utils/request";
// 查询IFS订单-待报检
export function getIfsOrder(query) {
  return request({
    url: 'insOrder/getIfsOrder',
    method: 'get',
  })
    url: "insOrder/getIfsOrder",
    method: "get",
  });
}
// 查询IFS订单-待报检
export function getWarehouseSubmit(query) {
  return request({
    url: '/rawMaterialOrder/getWarehouseSubmit',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/getWarehouseSubmit",
    method: "get",
    params: query,
  });
}
// 查询原材料报检-已完成
// 查询原辅料报检-已完成
export function getIfsByFinish(query) {
  return request({
    url: '/rawMaterialOrder/getIfsByFinish',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/getIfsByFinish",
    method: "get",
    params: query,
  });
}
// 查询原材料报检信息-全部
// 查询原辅料报检信息-全部
export function getIfsByAll(query) {
  return request({
    url: '/rawMaterialOrder/getIfsByAll',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/getIfsByAll",
    method: "get",
    params: query,
  });
}
// 原材料根据id取消报检
// 原辅料根据id取消报检
export function revokeInspectionReport(query) {
  return request({
    url: '/rawMaterialOrder/revokeInspectionReport',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/revokeInspectionReport",
    method: "post",
    data: query,
  });
}
// 放行数据
export function concessionRelease(query) {
  return request({
    url: '/rawMaterialOrder/concessionRelease',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/concessionRelease",
    method: "post",
    data: query,
  });
}
// 提前入库
export function advancedGodown(query) {
  return request({
    url: '/rawMaterialOrder/advancedGodown',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/advancedGodown",
    method: "post",
    data: query,
  });
}
// 批量报检
export function inspectionReport(query) {
  return request({
    url: '/rawMaterialOrder/inspectionReport',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/inspectionReport",
    method: "post",
    data: query,
  });
}
// 原材料根据手动报检
// 原辅料根据手动报检
export function addIfsInventoryQuantity(query) {
  return request({
    url: '/rawMaterialOrder/addIfsInventoryQuantity',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/addIfsInventoryQuantity",
    method: "post",
    data: query,
  });
}
// 原材料根据id报检
// 原辅料根据id报检
export function inspectionReportOne(query) {
  return request({
    url: '/rawMaterialOrder/inspectionReportOne',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/inspectionReportOne",
    method: "post",
    data: query,
  });
}
// 原材料报检删除
// 原辅料报检删除
export function delIfsInventory(query) {
  return request({
    url: '/rawMaterialOrder/delIfsInventory',
    method: 'delete',
    params: query
  })
    url: "/rawMaterialOrder/delIfsInventory",
    method: "delete",
    params: query,
  });
}
// 原材料报检全部导出
// 原辅料报检全部导出
export function rawAllExport(query) {
  return request({
    url: '/rawMaterialOrder/rawAllExport',
    method: 'get',
    url: "/rawMaterialOrder/rawAllExport",
    method: "get",
    data: query,
    responseType: "blob"
  })
    responseType: "blob",
  });
}
src/api/business/rawMaterialOrder.js
@@ -1,297 +1,297 @@
// 原材料下单页面相关接口
import request from '@/utils/request'
// 原辅料下单页面相关接口
import request from "@/utils/request";
// 查询原材料下单-待下单
// 查询原辅料下单-待下单
export function getPurchaseOrder(query) {
  return request({
    url: '/rawMaterialOrder/getPurchaseOrder',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/getPurchaseOrder",
    method: "get",
    params: query,
  });
}
// 查询IFS订单-待检验
export function getIfsByStateOne(query) {
  return request({
    url: '/rawMaterialOrder/getIfsByStateOne',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/getIfsByStateOne",
    method: "get",
    params: query,
  });
}
// 查询原材料下单-已检验
// 查询原辅料下单-已检验
export function getIfsByOver(query) {
  return request({
    url: '/rawMaterialOrder/getIfsByOver',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/getIfsByOver",
    method: "get",
    params: query,
  });
}
// 查询原材料下单-全部
// 查询原辅料下单-全部
export function getIfsByAll(query) {
  return request({
    url: '/rawMaterialOrder/getIfsByAll',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/getIfsByAll",
    method: "get",
    params: query,
  });
}
// 查询季度检验
export function getIfsByQuarter(query) {
  return request({
    url: '/rawMaterialOrder/getIfsByQuarter',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/getIfsByQuarter",
    method: "get",
    params: query,
  });
}
// 获取当前登录的客户信息
export function getUserNow(query) {
  return request({
    url: '/system/newUser/getUserNow',
    method: 'get',
  })
    url: "/system/newUser/getUserNow",
    method: "get",
  });
}
// 获取标准树下标准方法枚举
export function selectStandardMethodEnum(query) {
  return request({
    url: '/standardTree/selectStandardMethodEnum',
    method: 'get',
  })
    url: "/standardTree/selectStandardMethodEnum",
    method: "get",
  });
}
// 查询检验下单内容详情
export function getInsOrder(query) {
  return request({
    url: '/insOrder/getInsOrder',
    method: 'get',
    params: query
  })
    url: "/insOrder/getInsOrder",
    method: "get",
    params: query,
  });
}
// 原材料下单直接免检免检接口
// 原辅料下单直接免检免检接口
export function notificationRawOrder(query) {
  return request({
    url: '/rawMaterialOrder/notificationRawOrder',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/notificationRawOrder",
    method: "get",
    params: query,
  });
}
// 查询
export function selectStandardTreeListByPartNo(query) {
  return request({
    url: '/rawMaterialOrder/selectStandardTreeListByPartNo',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/selectStandardTreeListByPartNo",
    method: "get",
    params: query,
  });
}
// 删除原材料模板
// 删除原辅料模板
export function delRawMaterOrderTemplate(query) {
  return request({
    url: '/rawMaterialOrder/delRawMaterOrderTemplate',
    method: 'delete',
    params: query
  })
    url: "/rawMaterialOrder/delRawMaterOrderTemplate",
    method: "delete",
    params: query,
  });
}
// 根据id查询模板内容
export function selectRawMaterOrderTemplateById(query) {
  return request({
    url: '/rawMaterialOrder/selectRawMaterOrderTemplateById',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/selectRawMaterOrderTemplateById",
    method: "get",
    params: query,
  });
}
// 原材料模板列表查询
// 原辅料模板列表查询
export function selectRawMaterOrderTemplate(query) {
  return request({
    url: '/rawMaterialOrder/selectRawMaterOrderTemplate',
    method: 'get',
    params: query
  })
    url: "/rawMaterialOrder/selectRawMaterOrderTemplate",
    method: "get",
    params: query,
  });
}
// 原材料新增模板
// 原辅料新增模板
export function addRawMaterOrderTemplate(query) {
  return request({
    url: '/rawMaterialOrder/addRawMaterOrderTemplate',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/addRawMaterOrderTemplate",
    method: "post",
    data: query,
  });
}
// 免检
export function addExemptionOrder(query) {
  return request({
    url: '/rawMaterialOrder/addExemptionOrder',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/addExemptionOrder",
    method: "post",
    data: query,
  });
}
// 通过标准树查询对应的检验项目
export function selectStandardProductList(query) {
  return request({
    url: '/standardTree/selectStandardProductList',
    method: 'post',
    data: query
  })
    url: "/standardTree/selectStandardProductList",
    method: "post",
    data: query,
  });
}
// 根据标准树进行标准查询
export function selectsStandardMethodByFLSSM(query) {
  return request({
    url: '/standardTree/selectsStandardMethodByFLSSM',
    method: 'get',
    params: query
  })
    url: "/standardTree/selectsStandardMethodByFLSSM",
    method: "get",
    params: query,
  });
}
// 添加检验下单数据
export function addInsOrder(query) {
  return request({
    url: '/insOrder/addInsOrder',
    method: 'post',
    data: query
  })
    url: "/insOrder/addInsOrder",
    method: "post",
    data: query,
  });
}
// 铜单丝下单
export function addRawCopperOrder(query) {
  return request({
    url: '/rawMaterialOrder/addRawCopperOrder',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/addRawCopperOrder",
    method: "post",
    data: query,
  });
}
// 铜单丝下单进厂检验免检接口
export function addRawCopperOrderExemptionOrder(query) {
  return request({
    url: '/rawMaterialOrder/addRawCopperOrderExemptionOrder',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/addRawCopperOrderExemptionOrder",
    method: "post",
    data: query,
  });
}
// 获取标准树
export function selectStandardTreeList2() {
  return request({
    url: '/standardTree/selectStandardTreeList2',
    method: 'get'
  })
    url: "/standardTree/selectStandardTreeList2",
    method: "get",
  });
}
// 查询检验单模板
export function selectInsOrderTemplate(query) {
  return request({
    url: '/insOrder/selectInsOrderTemplate',
    method: 'get',
    params: query
  })
    url: "/insOrder/selectInsOrderTemplate",
    method: "get",
    params: query,
  });
}
// 放行数据
export function concessionRelease(query) {
  return request({
    url: '/rawMaterialOrder/concessionRelease',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/concessionRelease",
    method: "post",
    data: query,
  });
}
// 原材料下单季度撤销
// 原辅料下单季度撤销
export function repealQuarterRawOrder(query) {
  return request({
    url: '/rawMaterialOrder/repealQuarterRawOrder',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/repealQuarterRawOrder",
    method: "post",
    data: query,
  });
}
// 原材料下单直接免检免检接口
// 原辅料下单直接免检免检接口
export function rawOrderRelease(query) {
  return request({
    url: '/rawMaterialOrder/rawOrderRelease',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/rawOrderRelease",
    method: "post",
    data: query,
  });
}
// 原材料根据id取消报检
// 原辅料根据id取消报检
export function revokeInspectionReport(query) {
  return request({
    url: '/rawMaterialOrder/revokeInspectionReport',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/revokeInspectionReport",
    method: "post",
    data: query,
  });
}
// 原材料下单出厂撤销
// 原辅料下单出厂撤销
export function repealEnterRawOrder(query) {
  return request({
    url: '/rawMaterialOrder/repealEnterRawOrder',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/repealEnterRawOrder",
    method: "post",
    data: query,
  });
}
// 原材料报检全部导出
// 原辅料报检全部导出
export function rawAllExport(query) {
  return request({
    url: '/rawMaterialOrder/rawAllExport',
    method: 'get',
    url: "/rawMaterialOrder/rawAllExport",
    method: "get",
    data: query,
    responseType: "blob"
  })
    responseType: "blob",
  });
}
// 原材料下单出厂撤销
// 原辅料下单出厂撤销
export function updateEntrustCode(query) {
  return request({
    url: '/insOrder/updateEntrustCode',
    method: 'post',
    data: query
  })
    url: "/insOrder/updateEntrustCode",
    method: "post",
    data: query,
  });
}
// 原材料下单出厂撤销
// 原辅料下单出厂撤销
export function printLabel(query) {
  return request({
    url: '/rawMaterialOrder/printLabel',
    method: 'post',
    data: query
  })
    url: "/rawMaterialOrder/printLabel",
    method: "post",
    data: query,
  });
}
// 通过检验单查询检验数据(数据查看)
export function selectSampleAndProductByOrderId(query) {
  return request({
    url: '/insOrder/selectSampleAndProductByOrderId',
    method: 'get',
    params: query
  })
    url: "/insOrder/selectSampleAndProductByOrderId",
    method: "get",
    params: query,
  });
}
// 查看不合格复测数据
export function getRetestResult(query) {
  return request({
    url: '/insOrder/getRetestResult',
    method: 'get',
    params: query
  })
    url: "/insOrder/getRetestResult",
    method: "get",
    params: query,
  });
}
// 查看检验单下的附件列表
export function getFileList(query) {
  return request({
    url: '/insOrderPlan/getFileList',
    method: 'get',
    params: query
  })
    url: "/insOrderPlan/getFileList",
    method: "get",
    params: query,
  });
}
// 检验单下的附件列表-附件下载
export function downFile(query) {
  return request({
    url: '/insOrderPlan/downFile',
    method: 'get',
    params: query
  })
    url: "/insOrderPlan/downFile",
    method: "get",
    params: query,
  });
}
// 检验单下的附件列表-删除
export function delFile(query) {
  return request({
    url: '/insOrderPlan/delfile',
    method: 'delete',
    params: query
  })
    url: "/insOrderPlan/delfile",
    method: "delete",
    params: query,
  });
}
// 检验单下的附件列表-上传
export function uploadFile(query) {
  return request({
    url: '/insOrderPlan/uploadFile',
    method: 'delete',
    params: query
  })
    url: "/insOrderPlan/uploadFile",
    method: "delete",
    params: query,
  });
}
// 保存不合格复测数据
export function saveUnqualifiedContext(query) {
  return request({
    url: '/insOrderPlan/saveUnqualifiedContext',
    method: 'delete',
    params: query
  })
    url: "/insOrderPlan/saveUnqualifiedContext",
    method: "delete",
    params: query,
  });
}
src/api/statisticalCharts/dataAnalysis.js
@@ -9,7 +9,7 @@
    params: query,
  });
}
//原材料统计
//原辅料统计
export function getRawPassRateByCake(query) {
  return request({
    url: "/dataAnalysis/getRawPassRateByCake",
@@ -31,7 +31,7 @@
    method: "get",
  });
}
//查询原材料项检分析
//查询原辅料项检分析
export function getRawProductAnalysis(query) {
  return request({
    url: "/dataAnalysis/getRawProductAnalysis",
@@ -39,7 +39,7 @@
    data: query,
  });
}
//查询原材料项检分析合格率
//查询原辅料项检分析合格率
export function getRawProductAnalysisRawPass(query) {
  return request({
    url: "/dataAnalysis/getRawProductAnalysisRawPass",
@@ -47,7 +47,7 @@
    data: query,
  });
}
//查询原材料项检分析列表
//查询原辅料项检分析列表
export function getRawProductAnalysisAllList(query) {
  return request({
    url: "/dataAnalysis/getRawProductAnalysisAllList",
@@ -63,7 +63,7 @@
    params: query,
  });
}
//查询原材料项检和厂家数据对比
//查询原辅料项检和厂家数据对比
export function getRawSupplierCompare(query) {
  return request({
    url: "/dataAnalysis/getRawSupplierCompare",
src/router/index.js
@@ -105,22 +105,22 @@
// 动态路由,基于用户权限动态去加载
export const dynamicRoutes = [
  {
    // 原材料下单
    // 原辅料下单
    path: "/materialOrder",
    component: Layout,
    hidden: true,
    permissions: ["business:order"],
    children: [
      {
        // 原材料下单
        // 原辅料下单
        path: "customsInspection",
        component: () =>
          import("@/views/business/materialOrder/customsInspection"),
        name: "CustomsInspection",
        meta: {
          title: "原材料下单详情",
          title: "原辅料下单详情",
          activeMenu: "/business/materialOrder",
          keepAlive: true
          keepAlive: true,
        },
      },
      {
@@ -128,7 +128,11 @@
        path: "copperOrder",
        component: () => import("@/views/business/materialOrder/copperOrder"),
        name: "CopperOrder",
        meta: { title: "铜材料下单", activeMenu: "/business/materialOrder",keepAlive: true },
        meta: {
          title: "铜材料下单",
          activeMenu: "/business/materialOrder",
          keepAlive: true,
        },
      },
    ],
  },
@@ -145,7 +149,11 @@
        component: () =>
          import("@/views/business/productOrder/components/add.vue"),
        name: "Add",
        meta: { title: "成品下单详情", activeMenu: "/business/productOrder",keepAlive: true },
        meta: {
          title: "成品下单详情",
          activeMenu: "/business/productOrder",
          keepAlive: true,
        },
      },
    ],
  },
@@ -161,7 +169,11 @@
        path: "inspection",
        component: () => import("@/views/business/inspectionTask/inspection"),
        name: "inspection",
        meta: { title: "检验单详情", activeMenu: "/business/inspectionTask", keepAlive: false },
        meta: {
          title: "检验单详情",
          activeMenu: "/business/inspectionTask",
          keepAlive: false,
        },
      },
    ],
  },
src/views/business/inspectionReview/index.vue
@@ -23,8 +23,8 @@
    </div>
    <div>
      <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
                  :rowClassName="rowClassName" :height="'calc(100vh - 270px)'" @pagination="pagination"
                  key="tableData0"></lims-table>
        :rowClassName="rowClassName" :height="'calc(100vh - 270px)'" @pagination="pagination"
        key="tableData0"></lims-table>
    </div>
    <!--报告查看-->
    <el-dialog title="报告查看" :visible.sync="issuedVisible" width="80vw" :modal-append-to-body="false"
@@ -98,7 +98,7 @@
            if (params == 0) {
              return "成品下单";
            } else {
              return "原材料下单";
              return "原辅料下单";
            }
          },
        },
@@ -237,11 +237,11 @@
      sonLaboratoryList: [],
      typeSourceList: [
        { label: '成品下单', value: 0 },
        { label: '原材料下单', value: 1 },
        { label: '原辅料下单', value: 1 },
      ],
      isCopper: null,
      customsInspection: {},
      typeSource: null,// 0:成品下单,1:原材料下单
      typeSource: null,// 0:成品下单,1:原辅料下单
      showInfoDialog: false, // 产业链信息查看
      issuedVisible: false,
      fullscreen: false,
@@ -313,7 +313,7 @@
      this.currentId = parseInt(row.id)
      switch (row.isCopper) {
        case 0:
          // 原材料
          // 原辅料
          this.$router.push({
            path: "/materialOrder/customsInspection", query: {
              customsInspection: row,
@@ -358,7 +358,7 @@
    },
    // 下载报告
    download(row) {
      let url = (row.urlS===null||row.urlS==='')?row.url:row.urlS
      let url = (row.urlS === null || row.urlS === '') ? row.url : row.urlS
      const link = document.createElement('a');
      link.href = this.javaApi + url;
      link.target = '_blank';
@@ -391,7 +391,7 @@
        fileName = row.tempUrlPdf
        fileType = "pdf"
      }
      fileName = fileName.replace('/word/','')
      fileName = fileName.replace('/word/', '')
      const userName = this.nickName
      this.option = {
        url: this.javaApi + "/word/" + fileName,
src/views/business/inspectionTask/index.vue
@@ -49,27 +49,24 @@
          </el-row>
        </div>
        <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
          :rowClassName="rowClassName" :height="'calc(100vh - 300px)'" @pagination="pagination"
          key="tableData0">
          :rowClassName="rowClassName" :height="'calc(100vh - 300px)'" @pagination="pagination" key="tableData0">
          <div slot="action" slot-scope="scope">
            <el-button size="small" type="text" @click="handleDataLook(scope.row)">数据查看</el-button>
            <el-button type="text" size="small"
                       :disabled="(scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5) && checkPermi(['update:product:onPlan'])"
                       @click="editInspection(scope.row)">修改检验值</el-button>
              :disabled="(scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5) && checkPermi(['update:product:onPlan'])"
              @click="editInspection(scope.row)">修改检验值</el-button>
            <el-button type="text" size="small" :disabled="(
                  scope.row.userName == null ||
                  scope.row.insState == 3 ||
                  scope.row.insState == 5 ||
                  (scope.row.userName && !scope.row.userName.includes(nickName))
                )"
                       @click="handleInspection(scope.row)">检验</el-button>
              scope.row.userName == null ||
              scope.row.insState == 3 ||
              scope.row.insState == 5 ||
              (scope.row.userName && !scope.row.userName.includes(nickName))
            )" @click="handleInspection(scope.row)">检验</el-button>
            <el-button type="text" size="small" :disabled="(
                  scope.row.userName == null ||
                  scope.row.insState == 5 ||
                  scope.row.insState == 3 ||
                  (scope.row.userName && !scope.row.userName.includes(nickName))
                )"
                       @click="handleConnect(scope.row)">交接</el-button>
              scope.row.userName == null ||
              scope.row.insState == 5 ||
              scope.row.insState == 3 ||
              (scope.row.userName && !scope.row.userName.includes(nickName))
            )" @click="handleConnect(scope.row)">交接</el-button>
            <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">原始记录</el-button>
            <el-popover placement="bottom" trigger="hover" style="margin-left: 6px">
              <template #reference>
@@ -77,23 +74,22 @@
              </template>
              <div>
                <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" style="margin-left: 10px" type="text" size="small" @click="download(scope.row)">下载报告</el-button>
                <el-upload ref='upload'
                           :action="javaApi + '/insReport/inReport'"
                           :before-upload="beforeUpload"
                           :data="{id: scope.row.insReportId}"
                           :headers="uploadHeader" :on-error="onError"
                           :on-success="handleSuccessUp"
                           :show-file-list="false"
                           style="display: inline;margin: 0 6px"
                           accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'>
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" style="margin-left: 10px"
                  type="text" size="small" @click="download(scope.row)">下载报告</el-button>
                <el-upload ref='upload' :action="javaApi + '/insReport/inReport'" :before-upload="beforeUpload"
                  :data="{ id: scope.row.insReportId }" :headers="uploadHeader" :on-error="onError"
                  :on-success="handleSuccessUp" :show-file-list="false" style="display: inline;margin: 0 6px"
                  accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'>
                  <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" size="small" type="text">上传</el-button>
                    (scope.row.userName && !scope.row.userName.includes(nickName)))" size="small"
                    type="text">上传</el-button>
                </el-upload>
                <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small" @click="handleRestore(scope.row)">还原</el-button>
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small"
                  @click="handleRestore(scope.row)">还原</el-button>
                <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small" @click="handleIssued(scope.row)">查看报告</el-button>
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small"
                  @click="handleIssued(scope.row)">查看报告</el-button>
              </div>
            </el-popover>
          </div>
@@ -165,7 +161,7 @@
        </el-button>
      </div>
      <el-table :data="bindTableData" style="width: 100%" height="70vh" v-loading="bindTableDataLoading"
                :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border>
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border>
        <el-table-column prop="inspectionItemClass" label="检验项分类" width="150">
        </el-table-column>
        <el-table-column prop="inspectionItem" label="检验项" width="150">
@@ -181,7 +177,7 @@
    </el-dialog>
    <el-dialog :visible.sync="bindAddDialogVisible" title="选择绑定" width="600px">
      <el-table :data="bindAddTableData" style="width: 100%" height="60vh"
                :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
        @selection-change="handleBindAddSelectionChange">
        <el-table-column type="selection" width="55"> </el-table-column>
        <el-table-column prop="inspectionItemClass" label="检验项分类" width="150">
@@ -207,13 +203,14 @@
    <!--查看工时弹框-->
    <viewManHourDia ref="viewManHourDia"></viewManHourDia>
    <!--不合格复测查看弹框-->
    <un-pass-retest-result v-if="retestVisible" :retestInfo="retestInfo" :retestVisible="retestVisible" @closeRetestLook="closeRetestLook"></un-pass-retest-result>
    <un-pass-retest-result v-if="retestVisible" :retestInfo="retestInfo" :retestVisible="retestVisible"
      @closeRetestLook="closeRetestLook"></un-pass-retest-result>
    <!--报告查看-->
    <el-dialog title="报告查看" :visible.sync="issuedVisible" width="80vw" :modal-append-to-body="false"
               :fullscreen="fullscreen">
      :fullscreen="fullscreen">
      <div class="full-screen">
        <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen = true;"
           v-if="!fullscreen"></i>
          v-if="!fullscreen"></i>
        <img src="@/assets/images/no-full.svg" alt="" v-else style="cursor: pointer;" @click="fullscreen = false;">
      </div>
      <div style="height: 80vh;" v-if="issuedVisible">
@@ -222,7 +219,7 @@
    </el-dialog>
    <el-dialog title="查看附件" :visible.sync="lookDialogVisible" width="800px" top="5vh" fullscreen>
      <filePreview v-if="lookDialogVisible" :fileUrl="javaApi + '/word/' + currentInfo.tempUrlPdf" :currentFile="{}"
                   style="max-height: 90vh;overflow-y: auto;" />
        style="max-height: 90vh;overflow-y: auto;" />
    </el-dialog>
  </div>
</template>
@@ -247,8 +244,8 @@
  selectSampleAndProductByOrderId,
} from "@/api/business/inspectionTask.js";
import { mapGetters } from "vuex";
import {getRetestResult} from "@/api/business/rawMaterialOrder";
import {upReportUrl} from "@/api/business/insReport";
import { getRetestResult } from "@/api/business/rawMaterialOrder";
import { upReportUrl } from "@/api/business/insReport";
import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue";
import filePreview from "@/components/Preview/filePreview.vue";
export default {
@@ -288,7 +285,7 @@
      claimVisible: false,
      tabList: [
        { label: "委托", value: 0 },
        { label: "原材料", value: 1 },
        { label: "原辅料", value: 1 },
      ],
      active: 1,
      tabIndex: 0,
@@ -296,8 +293,8 @@
      planTotal: 0,
      insStateList: [],
      state: 0, // 0:台账页,1:检验页面,2检验页面(复核),默认为0,3数据查看
      typeSource: null, // 0:成品下单,1:原材料下单
      sonLaboratory: null, // 0:委托,1:原材料
      typeSource: null, // 0:成品下单,1:原辅料下单
      sonLaboratory: null, // 0:委托,1:原辅料
      activeFace: 0, // 1:下单,2:查看,3:审核,默认为0
      currentId: null,
      entityCopy: {},
@@ -313,7 +310,7 @@
      sonLaboratoryList: [],
      typeSourceList: [
        { label: "成品下单", value: 0 },
        { label: "原材料下单", value: 1 },
        { label: "原辅料下单", value: 1 },
      ],
      customsInspection: {},
      showInfoDialog: false, // 产业链信息查看
@@ -369,7 +366,7 @@
            if (params == 0) {
              return "成品下单";
            } else {
              return "原材料下单";
              return "原辅料下单";
            }
          },
        },
@@ -521,7 +518,7 @@
                this.getRetestResultInfo(row);
              },
              disabled: (row) => {
                return row.insResult!=0
                return row.insResult != 0
              },
            },
            {
@@ -649,7 +646,7 @@
    },
    // 下载报告
    download(row) {
      let url = (row.urlS===null||row.urlS==='')?row.url:row.urlS
      let url = (row.urlS === null || row.urlS === '') ? row.url : row.urlS
      const link = document.createElement('a');
      link.href = this.javaApi + url;
      link.target = '_blank';
@@ -683,7 +680,7 @@
        fileName = row.tempUrlPdf
        fileType = "pdf"
      }
      fileName = fileName.replace('/word/','')
      fileName = fileName.replace('/word/', '')
      const userName = this.nickName
      this.option = {
        url: this.javaApi + "/word/" + fileName,
@@ -743,7 +740,7 @@
      this.currentId = parseInt(row.id);
      switch (row.isCopper) {
        case 0:
          // 原材料
          // 原辅料
          this.$router.push({
            path: "/materialOrder/customsInspection", query: {
              customsInspection: row,
@@ -897,13 +894,13 @@
      });
    },
    // 查看不合格复测结果
    getRetestResultInfo (row) {
      getRetestResult({insProductId: row.insProductId}).then(res => {
    getRetestResultInfo(row) {
      getRetestResult({ insProductId: row.insProductId }).then(res => {
        this.retestVisible = true
        this.retestInfo = res.data
      })
    },
    closeRetestLook () {
    closeRetestLook() {
      this.retestVisible = false
    },
    // 绑定检验项绑定
@@ -972,7 +969,7 @@
        });
      });
    },
    beforeUpload (file) {
    beforeUpload(file) {
      if (file.size > 1024 * 1024 * 10) {
        this.$message.error('上传文件不超过10M');
        this.$refs.upload.clearFiles()
src/views/business/inspectionTask/inspection.vue
@@ -27,7 +27,7 @@
        <!-- 复核 -->
        <el-button v-if="state == 2" size="medium" type="primary" @click="openAddCheck">通过</el-button>
        <el-button v-if="state == 2" size="medium" @click="upInsReview(0)">不通过</el-button>
        <el-button type="primary" size="small" @click="exportTable('myTable')">下载原始记录</el-button>
        <!-- <el-button type="primary" size="small" @click="exportTable('myTable')">下载原始记录</el-button> -->
        <el-button size="small" @click="goback">返回</el-button>
      </el-col>
    </el-row>
@@ -344,9 +344,9 @@
    </div>
    <el-drawer :size="550" :visible.sync="sampleVisible" title="样品切换">
      <el-table v-if="sampleVisible" ref="productTable" :current-row-key="currentKey" :data="sampleProduct"
                :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
        :row-class-name="tableRowClassName" :row-key="(record) => record.index" border class="el-table" height="100%"
        highlight-current-row tooltip-effect="dark" @row-click="handleChangeSample">
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border :row-class-name="tableRowClassName"
        :row-key="(record) => record.index" border class="el-table" height="100%" highlight-current-row
        tooltip-effect="dark" @row-click="handleChangeSample">
        <el-table-column :key="Math.random()" align="center" label="序号" type="index" width="70px">
        </el-table-column>
        <el-table-column label="样品编号" min-width="100px" prop="sampleCode" show-overflow-tooltip></el-table-column>
@@ -963,7 +963,7 @@
          humidity: this.insOrder.humidity ? this.insOrder.humidity : null,
        };
        if (this.typeSource == "1") {
          this.getRawMaterialTag(this.currentSample.id); // 原材料的检验任务查询批数
          this.getRawMaterialTag(this.currentSample.id); // 原辅料的检验任务查询批数
          this.rawMaterialTag = "1";
        }
        this.getEquipOptions(1);
src/views/business/materialOrder/customsInspection.vue
@@ -5,23 +5,25 @@
        <div>
          <span>采购订单信息</span>
          <ul class="tab" v-if="active > 1 && isShowTab">
            <li v-for="(m,i) in dataTitle" :key="i" :class="{active:i===dataIndex}" @click="handleDataTab(m,i)">{{m.label}}</li>
            <li v-for="(m, i) in dataTitle" :key="i" :class="{ active: i === dataIndex }" @click="handleDataTab(m, i)">
              {{ m.label }}</li>
          </ul>
        </div>
        <div>
          <el-select v-show="active==1" v-model="template" placeholder="下单模板" size="small" style="margin-right: 10px;"
                     @change="selectInsOrderTemplateByIdList">
          <el-select v-show="active == 1" v-model="template" placeholder="下单模板" size="small" style="margin-right: 10px;"
            @change="selectInsOrderTemplateByIdList">
            <el-option v-for="(a, ai) in templates" :key="ai" :label="a.name" :value="a.id">
              <span style="float: left">{{ a.name }}</span>
              <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px"
                 @click.stop="handleDelete(a)"></i>
                @click.stop="handleDelete(a)"></i>
            </el-option>
          </el-select>
          <el-button v-show="active==1" size="small" @click="templateDia=true">
          <el-button v-show="active == 1" size="small" @click="templateDia = true">
            <span style="color: #3A7BFA;">保存模板</span>
          </el-button>
          <el-button v-show="active==1 && addObj.orderType === '进厂检验'" :loading="noNeedCheckLoad" size="small" type="primary" @click="noNeedCheck">免检</el-button>
          <el-button v-show="active==1" :loading="saveLoad" size="small" type="primary" @click="save">提交</el-button>
          <el-button v-show="active == 1 && addObj.orderType === '进厂检验'" :loading="noNeedCheckLoad" size="small"
            type="primary" @click="noNeedCheck">免检</el-button>
          <el-button v-show="active == 1" :loading="saveLoad" size="small" type="primary" @click="save">提交</el-button>
          <el-button size="small" @click="goBack">
            <span style="color: #3A7BFA;">返回</span>
          </el-button>
@@ -33,42 +35,41 @@
        <el-row>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="采购订单号:">
              <el-input v-model="addObj.orderNo" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
              <el-input v-model="addObj.orderNo" class="addObj-info" clearable disabled placeholder=""
                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.company" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
              <el-input v-model="addObj.company" class="addObj-info" clearable disabled placeholder=""
                size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="接收时间:">
              <el-date-picker
                v-model="addObj.receiverDate"
                disabled
                placeholder="选择日期"
                size="small"
                style="width: 100%;"
                type="date"
                value-format="yyyy-MM-dd">
              <el-date-picker v-model="addObj.receiverDate" disabled placeholder="选择日期" size="small"
                style="width: 100%;" type="date" value-format="yyyy-MM-dd">
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="零件号:">
              <el-input v-model="addObj.partNo" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
              <el-input v-model="addObj.partNo" class="addObj-info" clearable disabled placeholder=""
                size="small"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="样品名称:">
              <el-input v-model="addObj.sample" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
              <el-input v-model="addObj.sample" class="addObj-info" clearable disabled placeholder=""
                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.qtyArrived" class="addObj-info" clearable disabled placeholder="" size="small"></el-input>
              <el-input v-model="addObj.qtyArrived" class="addObj-info" clearable disabled placeholder=""
                size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
@@ -90,22 +91,24 @@
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="抽检数量:" prop="testQuantity">
              <el-input v-model="addObj.testQuantity" :disabled="active > 1" class="addObj-info"
                        clearable
                        placeholder="请填写抽检数量" size="small"></el-input>
              <el-input v-model="addObj.testQuantity" :disabled="active > 1" class="addObj-info" clearable
                placeholder="请填写抽检数量" size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="检验类别:" prop="orderType">
              <el-select v-model="addObj.orderType" :disabled="active>1 || orderType==1" clearable size="small" style="width: 100%">
                <el-option v-for="a in dict.type.check_type" :key="a.value" :label="a.label" :value="a.value"></el-option>
              <el-select v-model="addObj.orderType" :disabled="active > 1 || orderType == 1" clearable size="small"
                style="width: 100%">
                <el-option v-for="a in dict.type.check_type" :key="a.value" :label="a.label"
                  :value="a.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="规格型号:" placeholder="请填写" prop="partDetail">
              <el-tooltip :content="addObj.partDetail" :disabled="!addObj.partDetail">
                <el-input v-model="addObj.partDetail" :disabled="active > 1" clearable class="addObj-info" size="small"></el-input>
                <el-input v-model="addObj.partDetail" :disabled="active > 1" clearable class="addObj-info"
                  size="small"></el-input>
              </el-tooltip>
            </el-form-item>
          </el-col>
@@ -113,29 +116,24 @@
        <el-row>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="紧急程度:" placeholder="请选择" prop="type">
              <el-select v-model="addObj.type" :disabled="active>1" class="addObj-info" clearable size="small" style="width: 100%">
                <el-option v-for="a in dict.type.urgency_level" :key="a.value" :label="a.label" :value="a.value"></el-option>
              <el-select v-model="addObj.type" :disabled="active > 1" class="addObj-info" clearable size="small"
                style="width: 100%">
                <el-option v-for="a in dict.type.urgency_level" :key="a.value" :label="a.label"
                  :value="a.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item class="addObj-form-item" label="约定时间:" prop="appointed">
              <el-date-picker
                v-model="addObj.appointed"
                :disabled="active > 1"
                format="yyyy-MM-dd"
                placeholder="选择日期"
                size="small"
                style="width: 100%"
                type="date"
                value-format="yyyy-MM-dd">
              <el-date-picker v-model="addObj.appointed" :disabled="active > 1" format="yyyy-MM-dd" placeholder="选择日期"
                size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd">
              </el-date-picker>
            </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>
              <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2 }" :disabled="active > 1"
                :placeholder="active > 1 ? '' : '请输入'" clearable size="small" type="textarea"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
@@ -143,21 +141,18 @@
    </div>
    <div>
      <div style="display: flex;justify-content: space-between;background-color: #F5F7FB;margin-bottom: 6px">
        <div v-if="active==1">
        <div v-if="active == 1">
          <el-form :inline="true" :model="addObj1" label-width="90px">
            <el-form-item label="样品型号:" style="margin-bottom: 6px;margin-top: 6px">
              <el-select v-model="model" :placeholder="active>1 ? '' : '请输入'"
                         allow-create clearable default-first-option filterable
                         size="small"
                         @change="changeModel">
              <el-select v-model="model" :placeholder="active > 1 ? '' : '请输入'" allow-create clearable
                default-first-option filterable size="small" @change="changeModel">
                <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="检验标准:" style="margin-bottom: 6px;margin-top: 6px">
              <el-select v-model="standardMethodListId" :loading="methodLoad"
                         :placeholder="active>1 ? '' : '请输入'" clearable size="small"
                         @change="changeStandardMethodListId" @focus="methodFocus">
              <el-select v-model="standardMethodListId" :loading="methodLoad" :placeholder="active > 1 ? '' : '请输入'"
                clearable size="small" @change="changeStandardMethodListId" @focus="methodFocus">
                <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id">
                </el-option>
              </el-select>
@@ -165,140 +160,123 @@
          </el-form>
        </div>
        <div style="margin-bottom: 6px;margin-top: 6px">
          <el-button v-show="active==1" :disabled="sampleList.length === 2" size="small" type="primary" @click="handleSplitCountNum">拆分</el-button>
          <el-button v-show="active == 1" :disabled="sampleList.length === 2" size="small" type="primary"
            @click="handleSplitCountNum">拆分</el-button>
        </div>
      </div>
      <el-table ref="sampleTable" :data="sampleList"
                class="el-table sampleTable"
                highlight-current-row
                :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
                max-height="400px"
                tooltip-effect="dark"
                @selection-change="selectSample" @row-click="rowClick">
        <el-table-column v-if="active==1" :selectable="selectable" type="selection" width="65"></el-table-column>
      <el-table ref="sampleTable" :data="sampleList" class="el-table sampleTable" highlight-current-row
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border max-height="400px" tooltip-effect="dark"
        @selection-change="selectSample" @row-click="rowClick">
        <el-table-column v-if="active == 1" :selectable="selectable" type="selection" width="65"></el-table-column>
        <el-table-column align="center" label="序号" prop="index" type="index" width="65"></el-table-column>
        <el-table-column align="center" label="样品名称" min-width="100" prop="sample">
          <template slot-scope="scope">
            <el-input v-model="scope.row.sample" :disabled="active>1 || scope.$index !== 0" size="small" @change="(val)=>changeValue(val, 'sample')"></el-input>
            <el-input v-model="scope.row.sample" :disabled="active > 1 || scope.$index !== 0" size="small"
              @change="(val) => changeValue(val, 'sample')"></el-input>
          </template>
        </el-table-column>
        <el-table-column align="center" label="样品编号" min-width="140" prop="sampleCode">
          <template slot-scope="scope">
            <el-input v-model="scope.row.sampleCode" :disabled="active>1 || scope.$index !== 0" clearable placeholder="不填写则系统自动生成"
                      size="small"
                      @change="(val)=>changeValue(val, 'sampleCode')"></el-input>
            <el-input v-model="scope.row.sampleCode" :disabled="active > 1 || scope.$index !== 0" clearable
              placeholder="不填写则系统自动生成" size="small" @change="(val) => changeValue(val, 'sampleCode')"></el-input>
          </template>
        </el-table-column>
        <el-table-column align="center" label="样品型号" min-width="100" prop="model">
          <template slot-scope="scope">
            <el-select v-model="scope.row.model" :disabled="active>1 || scope.$index !== 0" allow-create default-first-option filterable
                       placeholder="样品型号" size="small" style="width: 100%;" @change="handleChangeModel">
            <el-select v-model="scope.row.model" :disabled="active > 1 || scope.$index !== 0" allow-create
              default-first-option filterable placeholder="样品型号" size="small" style="width: 100%;"
              @change="handleChangeModel">
              <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value">
              </el-option>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column v-if="!(active>1)" align="center" label="型号参数" prop="modelNum" width="130">
        <el-table-column v-if="!(active > 1)" align="center" label="型号参数" prop="modelNum" width="130">
          <template slot-scope="scope">
            <el-input v-model="scope.row.modelNum" :disabled="active>1|| scope.$index !== 0" clearable placeholder="非必填"
                      size="small"
                      @input="methodChange(scope.row.standardMethodListId, scope.row)"></el-input>
            <el-input v-model="scope.row.modelNum" :disabled="active > 1 || scope.$index !== 0" clearable placeholder="非必填"
              size="small" @input="methodChange(scope.row.standardMethodListId, scope.row)"></el-input>
          </template>
        </el-table-column>
        <el-table-column align="center" label="检验标准" min-width="100" prop="standardMethodListId">
          <template slot-scope="scope">
            <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model==null||active>1|| scope.$index !== 0"
                       :loading="methodLoad" clearable placeholder="检验标准" size="small"
                       style="width: 100%;" @change="(value)=>methodChange(value, scope.row)" @clear="productList = []" @focus="methodFocus">
            <el-select v-model="scope.row.standardMethodListId"
              :disabled="scope.row.model == null || active > 1 || scope.$index !== 0" :loading="methodLoad" clearable
              placeholder="检验标准" size="small" style="width: 100%;" @change="(value) => methodChange(value, scope.row)"
              @clear="productList = []" @focus="methodFocus">
              <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id">
              </el-option>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column v-if="addObj.mating==1" align="center" label="配套样品名称" prop="joinName" width="140">
        <el-table-column v-if="addObj.mating == 1" align="center" label="配套样品名称" prop="joinName" width="140">
          <template slot-scope="scope">
            <el-input v-model="scope.row.joinName" :autosize="{ minRows: 1, maxRows: 1}" size="small"
                      type="textarea"></el-input>
            <el-input v-model="scope.row.joinName" :autosize="{ minRows: 1, maxRows: 1 }" size="small"
              type="textarea"></el-input>
          </template>
        </el-table-column>
        <el-table-column v-if="addObj.mating==1" align="center" label="配套样品型号" prop="joinModel" width="140">
        <el-table-column v-if="addObj.mating == 1" align="center" label="配套样品型号" prop="joinModel" width="140">
          <template slot-scope="scope">
            <el-input v-model="scope.row.joinModel" :autosize="{ minRows: 1, maxRows: 1}" size="small"
                      type="textarea"></el-input>
            <el-input v-model="scope.row.joinModel" :autosize="{ minRows: 1, maxRows: 1 }" size="small"
              type="textarea"></el-input>
          </template>
        </el-table-column>
        <el-table-column v-if="addObj.mating==1" align="center" label="配套样品数量" prop="joinNum" width="140">
        <el-table-column v-if="addObj.mating == 1" align="center" label="配套样品数量" prop="joinNum" width="140">
          <template slot-scope="scope">
            <el-input-number v-model="scope.row.joinNum" :controls="false" :max="100" :min="1" :precision="0"
                             size="small" style="width: 80%;"></el-input-number>
              size="small" style="width: 80%;"></el-input-number>
          </template>
        </el-table-column>
        <el-table-column align="center" label="待检项数量" prop="quantity" width="105">
          <template slot-scope="scope">
            <el-select v-model="scope.row.quantity" disabled clearable
                       size="small">
              <el-option v-for="item in quantityList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            <el-select v-model="scope.row.quantity" disabled clearable size="small">
              <el-option v-for="item in quantityList" :key="item.value" :label="item.label"
                :value="item.value"></el-option>
            </el-select>
          </template>
        </el-table-column>
      </el-table>
      <el-table ref="productTable" v-loading="getProductLoad" :data="productList"
                :row-class-name="tableRowClassName"
                class="el-table"
                max-height="400px"
                style="margin-bottom: 10px;"
                :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
                tooltip-effect="dark"
                @select="selectOne"
                @selection-change="selectProduct"
                @select-all="handleAll">
        <el-table-column v-if="active==1" :selectable="selectable" type="selection" width="65"></el-table-column>
      <el-table ref="productTable" v-loading="getProductLoad" :data="productList" :row-class-name="tableRowClassName"
        class="el-table" max-height="400px" style="margin-bottom: 10px;"
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border tooltip-effect="dark"
        @select="selectOne" @selection-change="selectProduct" @select-all="handleAll">
        <el-table-column v-if="active == 1" :selectable="selectable" type="selection" width="65"></el-table-column>
        <el-table-column label="检验项" min-width="140" prop="inspectionItem" show-overflow-tooltip>
          <template slot="header" slot-scope="scope">
            <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px">
              <span>检验项</span>
              <el-input
                v-if="active==1"
                v-model="inspectionItem"
                placeholder="请输入"
                size="mini"
                @input="searchFilterList"/>
              <el-input v-if="active == 1" v-model="inspectionItem" placeholder="请输入" size="mini"
                @input="searchFilterList" />
            </div>
          </template>
        </el-table-column>
        <el-table-column label="检验项子项" min-width="140" prop="inspectionItemSubclass"
                         show-overflow-tooltip>
        <el-table-column label="检验项子项" min-width="140" prop="inspectionItemSubclass" show-overflow-tooltip>
          <template slot="header" slot-scope="scope">
            <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px">
              <span>检验项子项</span>
              <el-input
                v-if="active==1"
                v-model="inspectionItemSubclass"
                placeholder="请输入"
                size="mini"
                @input="searchFilterList"/>
              <el-input v-if="active == 1" v-model="inspectionItemSubclass" placeholder="请输入" size="mini"
                @input="searchFilterList" />
            </div>
          </template>
        </el-table-column>
        <el-table-column label="要求值" min-width="220px" prop="ask">
          <template slot-scope="scope">
            <el-input v-if="active==1&&isAskOnlyRead" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求值"
                      size="small" type="textarea"
                      @change="e=>requestChange(e,scope.row)"></el-input>
            <el-input v-if="active == 1 && isAskOnlyRead" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3 }"
              clearable placeholder="要求值" size="small" type="textarea"
              @change="e => requestChange(e, scope.row)"></el-input>
            <span v-else>
              <template >{{ scope.row.ask }}</template>
              <template>{{ scope.row.ask }}</template>
            </span>
          </template>
        </el-table-column>
        <el-table-column label="要求描述" min-width="220px" prop="tell">
          <template slot-scope="scope">
            <el-input v-if="active==1&&isAskOnlyRead" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求描述"
                      size="small" type="textarea"
                      @change="e=>requestChange(e,scope.row,'tell')"></el-input>
            <el-input v-if="active == 1 && isAskOnlyRead" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3 }"
              clearable placeholder="要求描述" size="small" type="textarea"
              @change="e => requestChange(e, scope.row, 'tell')"></el-input>
            <span v-else>
                <template >{{ scope.row.tell }}</template>
              </span>
              <template>{{ scope.row.tell }}</template>
            </span>
          </template>
        </el-table-column>
        <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip></el-table-column>
@@ -306,35 +284,29 @@
          <template slot="header" slot-scope="scope">
            <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px">
              <span>试验方法</span>
              <el-input
                v-if="active==1"
                v-model="methodS"
                placeholder="请输入"
                size="mini"
                @input="searchFilterList"/>
              <el-input v-if="active == 1" v-model="methodS" placeholder="请输入" size="mini" @input="searchFilterList" />
            </div>
          </template>
        </el-table-column>
        <el-table-column label="计量单位" prop="unit" show-overflow-tooltip width="100"></el-table-column>
        <el-table-column label="单价" prop="price" show-overflow-tooltip width="100"></el-table-column>
        <el-table-column label="区间" min-width="120" prop="section" show-overflow-tooltip></el-table-column>
        <el-table-column :filter-method="filterHandler" :filters="filters" label="子实验室" min-width="130" prop="sonLaboratory"
                         show-overflow-tooltip></el-table-column>
        <el-table-column :filter-method="filterHandler" :filters="filters" label="子实验室" min-width="130"
          prop="sonLaboratory" show-overflow-tooltip></el-table-column>
      </el-table>
    </div>
    <!--特殊值处理框-->
    <el-dialog :before-close="beforeClose" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
               :visible.sync="bsm1DiaAll"
               min-width="400px"
               title="检测到特殊项,请作出以下选择">
    <el-dialog :before-close="beforeClose" :close-on-click-modal="false" :close-on-press-escape="false"
      :show-close="false" :visible.sync="bsm1DiaAll" min-width="400px" title="检测到特殊项,请作出以下选择">
      <div v-for="(item, index) in bsm1DiaList" :key="item.id" class="body" style="max-height: 60vh;">
        <span>{{item.inspectionItem}}</span>
        <span>{{ item.inspectionItem }}</span>
        <el-row v-if="item.bsm1">
          <el-col :span="24" class="search_thing" style="height: initial;margin: 5px 0;">
            <div class="search_label" style="width: 80px;"><span class="required-span">* </span>选项:</div>
            <div class="search_input">
              <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)">
                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a" style="margin-bottom: 2px;margin-top: 2px;"></el-radio>
                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a"
                  style="margin-bottom: 2px;margin-top: 2px;"></el-radio>
              </el-radio-group>
            </div>
          </el-col>
@@ -343,7 +315,7 @@
            <div class="search_input">
              <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)">
                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai"
                          :label="a">{{JSON.parse(item.bsmRow.askCopy)[ai]}}</el-radio>
                  :label="a">{{ JSON.parse(item.bsmRow.askCopy)[ai] }}</el-radio>
              </el-radio-group>
            </div>
          </el-col>
@@ -356,9 +328,8 @@
      </span>
    </el-dialog>
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false"
               :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
               :show-close="false" :visible.sync="bsm3Dia"
               title="区间值填写" width="800px">
      :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border :show-close="false"
      :visible.sync="bsm3Dia" title="区间值填写" width="800px">
      <el-table :data="editTable" height="80vh" style="width: 100%">
        <!-- inspectionItemList -->
        <el-table-column label="检验项" prop="inspectionItemList" width="180">
@@ -371,36 +342,27 @@
        </el-table-column>
        <el-table-column label="识别符值" prop="value">
          <template slot-scope="scope">
            <el-input v-model="scope.row.value" placeholder="请输入" size="small" @input="inputValueHandler(scope.row,scope.$index)"></el-input>
            <el-input v-model="scope.row.value" placeholder="请输入" size="small"
              @input="inputValueHandler(scope.row, scope.$index)"></el-input>
          </template>
        </el-table-column>
      </el-table>
      <span slot="footer" class="dialog-footer">
        <el-row>
          <el-button @click="bsm3Dia=false">取 消</el-button>
          <el-button @click="bsm3Dia = false">取 消</el-button>
          <el-button :loading="saveLoad" type="primary" @click="save0">确 定</el-button>
        </el-row>
      </span>
    </el-dialog>
    <el-dialog
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      :show-close="false"
      :visible.sync="dialogVisible"
      title="提示"
      width="32%">
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
      :visible.sync="dialogVisible" title="提示" width="32%">
      <span>{{ dialogMessage }}</span>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="dialogVisible= false,closeOpenPage()">确 定</el-button>
        <el-button type="primary" @click="dialogVisible = false, closeOpenPage()">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      :show-close="false"
      :visible.sync="dialogVisible2"
      title="提示"
      width="32%">
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
      :visible.sync="dialogVisible2" title="提示" width="32%">
      <span>{{ dialogMessage2 }}</span>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="dialogVisible2 = false">确 定</el-button>
@@ -418,13 +380,8 @@
        <el-button :loading="templateLoading" type="primary" @click="addTemplateDia">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      :show-close="false"
      :visible.sync="noNeedCheckDia"
      title="免检提示"
      width="32%">
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
      :visible.sync="noNeedCheckDia" title="免检提示" width="32%">
      <span>确认免检当前检验单?</span>
      <span slot="footer" class="dialog-footer">
        <el-button :loading="noNeedCheckLoad" type="primary" @click="handleNoNeedCheck">确 定</el-button>
@@ -462,7 +419,7 @@
      active: 0,
      currentId: 0,
      isReport: '',
      editTable:[], // 区间特殊值填写
      editTable: [], // 区间特殊值填写
      template: null,
      saveLoad: false, // 保存按钮loading
      noNeedCheckLoad: false, // 免检按钮loading
@@ -555,9 +512,9 @@
      addObj1: {},
      model: null,
      standardMethodListId: null,
      inspectionItem:null,
      inspectionItemSubclass:null,
      methodS:null,
      inspectionItem: null,
      inspectionItemSubclass: null,
      methodS: null,
      codeLevel: '', // 样品所在级别
      selectTreeTem: '', // 样品父级
      checkType: [], // 检验类型选项数据
@@ -570,14 +527,14 @@
      templateName: '', // 保存模版名称
      templates: [], // 模版下拉框数据
      quantityList: [
        { label: 1, value: 1},
        { label: 2, value: 2},
        { label: 3, value: 3},
        { label: 4, value: 4},
        { label: 5, value: 5},
        { label: 6, value: 6},
        { label: 7, value: 7},
        { label: 8, value: 8},
        { label: 1, value: 1 },
        { label: 2, value: 2 },
        { label: 3, value: 3 },
        { label: 4, value: 4 },
        { label: 5, value: 5 },
        { label: 6, value: 6 },
        { label: 7, value: 7 },
        { label: 8, value: 8 },
      ],
      types: [], // 紧急程度下拉框
      dataTitle: [
@@ -592,7 +549,7 @@
      ],
      dataIndex: 0,
      isShowTab: false,
      symbolList:['RTS'],
      symbolList: ['RTS'],
      bsm3Dia: false, // 区间值填写弹框
      bsmRow: {},
      bsm1: false,
@@ -658,7 +615,7 @@
    this.getInfo() // 获取数据
  },
  methods: {
    save1 () {
    save1() {
      if (this.bsm1DiaList.length > 0) {
        this.bsm1DiaList.forEach(item => {
          if (!item.bsm1Val) {
@@ -679,24 +636,24 @@
      done()
    },
    //特殊值填写处理
    inputValueHandler(row,index){
      if(row){
        const nextIndex = index+1
    inputValueHandler(row, index) {
      if (row) {
        const nextIndex = index + 1
        for (let i = nextIndex; i < this.editTable.length; i++) {
          const element = this.editTable[i];
          if(element.model==row.model&&row.symbolItem==element.symbolItem){
          if (element.model == row.model && row.symbolItem == element.symbolItem) {
            this.editTable[i].value = row.value
          }
        }
      }
    },
    // 查看时切换tab栏
    handleDataTab (m, i) {
    handleDataTab(m, i) {
      this.dataIndex = i
      this.getInfo()
    },
    // 获取数据
    getInfo () {
    getInfo() {
      if (this.active == 2) {
        let orderId = ''
        if (!this.customsInspection.enterOrderId && this.customsInspection.quarterOrderId) {
@@ -744,7 +701,7 @@
          }
        })
      } else {
        notificationRawOrder({ifsInventoryId:this.customsInspection.id}).then(res => {
        notificationRawOrder({ ifsInventoryId: this.customsInspection.id }).then(res => {
          if (res.code === 200) {
            if (res.data === 1) {
              if (this.orderType != 1) {
@@ -758,7 +715,7 @@
          }
        })
        // 报检流程
        selectStandardTreeListByPartNo({partNo:this.customsInspection.partNo}).then(res => {
        selectStandardTreeListByPartNo({ partNo: this.customsInspection.partNo }).then(res => {
          if (res.data !== null) {
            this.addObj.sample = res.data.label
            this.codeLevel = res.data.code
@@ -777,8 +734,8 @@
            const str = res.data.treeName.split('-')
            this.selectTreeTem = str.join(' - ')
            this.selectTree = str.join(' - ')
            this.addListInfo(this.codeLevel, res.data) // 原材料样品是固定的,就默认赋值一条数据,可拆分
            this.selectInsOrderTemplate() // 原材料模板列表查询
            this.addListInfo(this.codeLevel, res.data) // 原辅料样品是固定的,就默认赋值一条数据,可拆分
            this.selectInsOrderTemplate() // 原辅料模板列表查询
          } else {
            this.dialogVisible = true
            this.dialogMessage = res.message
@@ -790,7 +747,7 @@
    },
    // 查询模板-反显模板
    selectInsOrderTemplateByIdList(e) {
      selectRawMaterOrderTemplateById({id: e}).then(res => {
      selectRawMaterOrderTemplateById({ id: e }).then(res => {
        let obj = JSON.parse(res.data)
        this.sampleList = obj.sampleList;
        this.productList = obj.sampleList[0].insProduct
@@ -812,7 +769,7 @@
          thing: JSON.stringify({
            // addObj: this.addObj,
            sampleList: sampleList,
            selectTree:this.selectTree
            selectTree: this.selectTree
          })
        }).then(res => {
          this.templateLoading = false;
@@ -832,22 +789,22 @@
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        delRawMaterOrderTemplate({id: row.id}).then(res => {
        delRawMaterOrderTemplate({ id: row.id }).then(res => {
          this.$message.success('删除成功')
          this.selectInsOrderTemplate()
        }).catch(e => {
          this.$message.error('删除失败')
        })
      }).catch(() => {})
      }).catch(() => { })
    },
    // 查询模板列表
    selectInsOrderTemplate() {
      selectRawMaterOrderTemplate({partNo:this.addObj.partNo}).then(res => {
      selectRawMaterOrderTemplate({ partNo: this.addObj.partNo }).then(res => {
        this.templates = res.data
      })
    },
    // 拆分
    handleSplitCountNum () {
    handleSplitCountNum() {
      this.sample.joinName = null
      this.sample.joinModel = null
      this.sample.joinNum = 1
@@ -870,7 +827,7 @@
      this.computationalPairing(this.sampleList.length)
    },
    // 检验项列表筛选
    searchFilterList () {
    searchFilterList() {
      const vtw = {
        inspectionItem: this.inspectionItem, // 检验项
        inspectionItemSubclass: this.inspectionItemSubclass, // 检验项子项
@@ -881,7 +838,7 @@
      })
      this.changeProductList0()
      if (isHaveValue) {
        for(let i in vtw) {
        for (let i in vtw) {
          if (vtw[i]) {
            this.productList = this.productList0.filter((item) => {
              return item[i] && item[i].includes(vtw[i])
@@ -894,11 +851,11 @@
      }
    },
    containsValue(str) {
      if(str){
      if (str) {
        let symbolItem = ''
        this.symbolList.some(value =>{
          if(str.includes(value)){
            symbolItem  = value
        this.symbolList.some(value => {
          if (str.includes(value)) {
            symbolItem = value
            return true
          }
        })
@@ -919,18 +876,18 @@
          })
          this.getTotal(sampleList)
          let projectNum = this.totalArr.filter(a => a.state == 1).length
          if(projectNum==0){
          if (projectNum == 0) {
            this.$confirm('检验项目为空,是否确认提交?', "提示", {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning"
            }).then(() => {
              this.saveMethod(sampleList)
            }).catch(() => {})
          }else{
            let isRTS = this.totalArr.find(a => a.ask != null && this.symbolList.find(b=>a.ask.includes(b)) && a.state == 1)
            }).catch(() => { })
          } else {
            let isRTS = this.totalArr.find(a => a.ask != null && this.symbolList.find(b => a.ask.includes(b)) && a.state == 1)
            if (isRTS) {
              this.editTable = this.handleData(sampleList,this.containsValue, 0)
              this.editTable = this.handleData(sampleList, this.containsValue, 0)
              this.editTable.forEach(item => {
                item.value = item.modelNum
              })
@@ -946,21 +903,21 @@
      });
    },
    // 提交区间值
    save0(){
      if(this.editTable.every(m=>m.value)){
    save0() {
      if (this.editTable.every(m => m.value)) {
        this.sampleList.forEach(item => {
          item.insProduct = this.productList
        })
        let sampleList = this.handleData(this.HaveJson(this.sampleList),this.handleAsk,1)
        let sampleList = this.handleData(this.HaveJson(this.sampleList), this.handleAsk, 1)
        sampleList.forEach(a => {
          a.insProduct = a.insProduct.filter(b=>b.state === 1)
          a.insProduct = a.insProduct.filter(b => b.state === 1)
        })
        this.saveMethod(sampleList)
      }else{
      } else {
        this.$message.error('请填写识别符值')
      }
    },
    noNeedCheck () {
    noNeedCheck() {
      this.$refs['addObj'].validate((valid) => {
        if (valid) {
          if (!this.sampleList.every(m => m.standardMethodListId)) {
@@ -974,7 +931,7 @@
          })
          this.getTotal(sampleList)
          let projectNum = this.totalArr.filter(a => a.state == 1).length
          if (projectNum!=0){
          if (projectNum != 0) {
            this.$message.error('免检不可选择检验项')
            return
          }
@@ -985,7 +942,7 @@
        }
      });
    },
    handleNoNeedCheck () {
    handleNoNeedCheck() {
      // 检验类型为进厂检验时可选择免检,但不能选择检验项
      const sampleList = this.HaveJson(this.sampleList)
      sampleList.forEach(item => {
@@ -1025,7 +982,7 @@
          } else {
            a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
          }
          a.insProduct = a.insProduct.filter(b=>b.state === 1)
          a.insProduct = a.insProduct.filter(b => b.state === 1)
          return a
        }),
      }).then(res => {
@@ -1033,11 +990,11 @@
        this.noNeedCheckDia = false
        this.$message.success('已提交')
        this.closeOpenPage()
      }).catch(e=>{
      }).catch(e => {
        this.noNeedCheckLoad = false
      })
    },
    saveMethod(sampleList){
    saveMethod(sampleList) {
      let trees = this.selectTree.split(" - ")
      if (trees.length < 3) {
        this.$message.error('未选择对象')
@@ -1079,7 +1036,7 @@
          } else {
            a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum))
          }
          a.insProduct = a.insProduct.filter(b=>b.state === 1)
          a.insProduct = a.insProduct.filter(b => b.state === 1)
          return a
        }),
      }).then(res => {
@@ -1087,12 +1044,12 @@
        this.$message.success('已提交')
        this.bsm3Dia = false;
        this.closeOpenPage()
      }).catch(e=>{
      }).catch(e => {
        this.saveLoad = false
      })
    },
    handleAsk(ask,symbolItem, value) {
      try{
    handleAsk(ask, symbolItem, value) {
      try {
        let code = [">", "<", "=", ">", "<", "≥", "≤", "±", "*", "/"];
        let code2 = ['+', '*', '/', '-']
        if (ask.includes('&')) {
@@ -1136,42 +1093,42 @@
            return code[index] + '' + num
          }
        }
      }catch(e){}
      } catch (e) { }
    },
    handleData(sampleList,calBack,type){
    handleData(sampleList, calBack, type) {
      let editTable = []
      sampleList.forEach(item => {
        let obj = {
          sampleCode:item.sampleCode,
          model:item.model,
          symbolList:[],
          sampleId:item.id,
          modelNum:item.modelNum,
          sampleCode: item.sampleCode,
          model: item.model,
          symbolList: [],
          sampleId: item.id,
          modelNum: item.modelNum,
        }
        if (item.insProduct && item.insProduct.length > 0) {
          item.insProduct.forEach(a => {
            if (a.state == 1) {
              if(type==0){
              if (type == 0) {
                let str = calBack(a.ask)
                str&&obj.symbolList.push({
                  symbolItem:str,
                  inspectionItem:a.inspectionItem,
                str && obj.symbolList.push({
                  symbolItem: str,
                  inspectionItem: a.inspectionItem,
                })
              }else if(type==1){
              } else if (type == 1) {
                let arr = this.editTable.filter(b => b.sampleId == item.id)
                for (var i=0;i<arr.length;i++){
                  if(a.ask){
                    if(a.ask.includes(arr[i].symbolItem)){
                      let ask = calBack(a.ask, arr[i].symbolItem,arr[i].value)
                for (var i = 0; i < arr.length; i++) {
                  if (a.ask) {
                    if (a.ask.includes(arr[i].symbolItem)) {
                      let ask = calBack(a.ask, arr[i].symbolItem, arr[i].value)
                      if (ask) {
                        a.ask = ask
                      }
                      let tell = this.handleAsk(a.tell, arr[i].symbolItem,arr[i].value)
                      let tell = this.handleAsk(a.tell, arr[i].symbolItem, arr[i].value)
                      if (tell) {
                        a.tell = tell
                      }
                    }
                  }else{
                  } else {
                    this.$message.error('要求值为空,需要去标准库维护!')
                  }
                }
@@ -1187,21 +1144,21 @@
                if (b.productList && b.productList.length > 0) {
                  b.productList.forEach(c => {
                    if (c.state == 1) {
                      if(type==0){
                      if (type == 0) {
                        let str = calBack(c.ask)
                        str&&obj.symbolList.push({
                          symbolItem:str,
                          inspectionItem:c.inspectionItem,
                        str && obj.symbolList.push({
                          symbolItem: str,
                          inspectionItem: c.inspectionItem,
                        })
                      }else if(type==1){
                      } else if (type == 1) {
                        let arr = this.editTable.filter(b => b.sampleId == item.id)
                        arr.forEach(f => {
                          if(c.ask.includes(f.symbolItem)){
                            let ask = calBack(c.ask, f.symbolItem,f.value)
                          if (c.ask.includes(f.symbolItem)) {
                            let ask = calBack(c.ask, f.symbolItem, f.value)
                            if (ask) {
                              c.ask = ask
                            }
                            let tell = this.handleTell(c.tell, f.symbolItem,f.value)
                            let tell = this.handleTell(c.tell, f.symbolItem, f.value)
                            if (tell) {
                              c.tell = tell
                            }
@@ -1218,25 +1175,25 @@
                if (b.productList && b.productList.length > 0) {
                  b.productList.forEach(c => {
                    if (c.state == 1) {
                      if(type==0){
                      if (type == 0) {
                        let str = calBack(c.ask)
                        str&&obj.symbolList.push({
                          symbolItem:str,
                          inspectionItem:c.inspectionItem,
                        str && obj.symbolList.push({
                          symbolItem: str,
                          inspectionItem: c.inspectionItem,
                        })
                      }else if(type==1){
                      } else if (type == 1) {
                        // let ask = calBack(c.ask, c.rts)
                        // if (ask && c.state == 1) {
                        //   c.ask = csk
                        // }
                        let arr = this.editTable.filter(b => b.sampleId == item.id)
                        arr.forEach(f => {
                          if(c.ask.includes(f.symbolItem)){
                            let ask = calBack(c.ask, f.symbolItem,f.value)
                          if (c.ask.includes(f.symbolItem)) {
                            let ask = calBack(c.ask, f.symbolItem, f.value)
                            if (ask) {
                              c.ask = ask
                            }
                            let tell = this.handleTell(c.tell, f.symbolItem,f.value)
                            let tell = this.handleTell(c.tell, f.symbolItem, f.value)
                            if (tell) {
                              c.tell = tell
                            }
@@ -1251,25 +1208,25 @@
                    if (c.productList && c.productList.length > 0) {
                      c.productList.forEach(d => {
                        if (d.state == 1) {
                          if(type==0){
                          if (type == 0) {
                            let str = calBack(d.ask)
                            str&&obj.symbolList.push({
                              symbolItem:str,
                              inspectionItem:d.inspectionItem,
                            str && obj.symbolList.push({
                              symbolItem: str,
                              inspectionItem: d.inspectionItem,
                            })
                          }else if(type==1){
                          } else if (type == 1) {
                            // let ask = calBack(d.ask, d.rts)
                            // if (ask && d.state == 1) {
                            //   d.ask = ask
                            // }
                            let arr = this.editTable.filter(b => b.sampleId == item.id)
                            arr.forEach(f => {
                              if(d.ask.includes(f.symbolItem)){
                                let ask = calBack(d.ask, f.symbolItem,f.value)
                              if (d.ask.includes(f.symbolItem)) {
                                let ask = calBack(d.ask, f.symbolItem, f.value)
                                if (ask) {
                                  d.ask = ask
                                }
                                let tell = this.handleTell(d.tell, f.symbolItem,f.value)
                                let tell = this.handleTell(d.tell, f.symbolItem, f.value)
                                if (tell) {
                                  d.tell = tell
                                }
@@ -1285,11 +1242,11 @@
            }
          })
        }
        if(type==0){
        if (type == 0) {
          editTable.push(obj)
        }
      })
      if(type==0){
      if (type == 0) {
        editTable.forEach(a => {
          a.symbolList.forEach(b => {
            let arr = a.symbolList.filter(c => c.symbolItem == b.symbolItem);
@@ -1298,13 +1255,13 @@
        })
        editTable.forEach(a => {
          let mySet = new Set();
          a.symbolList = a.symbolList.filter(b =>{
          a.symbolList = a.symbolList.filter(b => {
            let num0 = mySet.size;
            mySet.add(b.symbolItem);
            let num1 = mySet.size;
            if(num0!=num1){
            if (num0 != num1) {
              return true;
            }else{
            } else {
              return false
            }
          })
@@ -1313,19 +1270,19 @@
        editTable.forEach(a => {
          a.symbolList.forEach(b => {
            let obj = {
              sampleCode:a.sampleCode,
              model:a.model,
              symbolItem:b.symbolItem,
              sampleId:a.sampleId,
              value:null,
              inspectionItemList:b.inspectionItemList,
              modelNum:a.modelNum,
              sampleCode: a.sampleCode,
              model: a.model,
              symbolItem: b.symbolItem,
              sampleId: a.sampleId,
              value: null,
              inspectionItemList: b.inspectionItemList,
              modelNum: a.modelNum,
            }
            editTableNew.push(obj)
          })
        })
        return editTableNew
      }else{
      } else {
        return sampleList
      }
    },
@@ -1335,7 +1292,7 @@
      } catch (e) {
      }
    },
    replaceAll(str,find,value) {
    replaceAll(str, find, value) {
      if (str === undefined) {
        return str
      }
@@ -1413,10 +1370,10 @@
        let num1 = mySet0.size
        mySet0.add(item.sonLaboratory)
        let num2 = mySet0.size
        if(num2>num1){
        if (num2 > num1) {
          this.sonLaboratoryList.push({
            label:item.sonLaboratory,
            value:item.sonLaboratory,
            label: item.sonLaboratory,
            value: item.sonLaboratory,
          })
        }
      })
@@ -1464,11 +1421,11 @@
          } else {
            this.methods = res.data.standardMethodList
          }
        } catch (e) {}
        } catch (e) { }
      })
    },
    // 赋值第一条默认数据
    addListInfo (codeLevel, data) {
    addListInfo(codeLevel, data) {
      this.sampleList = []
      this.productList = []
      this.sample.model = this.addObj.model
@@ -1561,14 +1518,14 @@
      }
      this.bsm2Val3 = this.HaveJson(this.permute(nums))
    },
    tableRowClassName({row, rowIndex}) {
    tableRowClassName({ row, rowIndex }) {
      if (row.state === 0) {
        return '';
      }
      return 'warning-row';
    },
    // 修改样品名称
    changeValue (val, string) {
    changeValue(val, string) {
      if (this.sampleList.length > 1) {
        // 有两条样品时,第二条样品信息和第一条保持一致
        this.sampleList.forEach(item => {
@@ -1595,9 +1552,9 @@
      }
      this.getProductLoad = true
      let selectTreeList = this.selectTree.split(" - ")
      this.addObj.model&&(selectTreeList[selectTreeList.length - 1] = this.addObj.model)
      this.addObj.model && (selectTreeList[selectTreeList.length - 1] = this.addObj.model)
      selectStandardProductList({
        model: this.addObj.model?this.addObj.model:row.model,
        model: this.addObj.model ? this.addObj.model : row.model,
        modelNum: row.modelNum,
        standardMethodListId: val,
        factory: selectTreeList.join(" - "),
@@ -1617,7 +1574,7 @@
          })
        }, 200)
      }).catch(err => {
        console.log('err-',err)
        console.log('err-', err)
      })
    },
    // 选择样品型号的回调
@@ -1678,7 +1635,7 @@
      }
    },
    // 全选特殊值处理框选择要求值的回调
    upBsmAll (item) {
    upBsmAll(item) {
      const i = this.bsm1DiaList.findIndex(obj => obj.id === item.id)
      if (i > -1) {
        // 找到相应的检验项赋值
@@ -1709,7 +1666,7 @@
    selectOne(selection, row) {
      this.bsm1DiaList = []
      row.state = row.state == 1 ? 0 : 1
      if(row.section === null) {
      if (row.section === null) {
        row.section = ""
      }
      if (row.sectionCopy === undefined && row.section) {
@@ -1723,18 +1680,18 @@
      if (row.tell.includes('[')) {
        this.$set(row, 'tellCopy', row.tell)
      }
      let arr = this.productList.filter(m=>m.state==1&&row.sectionCopy&&row.sectionCopy.includes(m.sectionCopy)&&m.ask&&m.sectionCopy.indexOf('[')==-1)
      if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.sectionCopy !== undefined && row.state === 1&&arr.length==0) {
      let arr = this.productList.filter(m => m.state == 1 && row.sectionCopy && row.sectionCopy.includes(m.sectionCopy) && m.ask && m.sectionCopy.indexOf('[') == -1)
      if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.sectionCopy !== undefined && row.state === 1 && arr.length == 0) {
        if (row.sectionCopy.indexOf('[') > -1) {
          row.bsmRow = this.HaveJson(row)
        }
        row.bsm1 = true
        this.bsm1DiaList.push(row)
        this.bsm1DiaAll = true
      } else if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.state === 0&&arr.length==0) {
      } else if (row.bsm === '1' && row.sectionCopy !== '' && row.sectionCopy !== null && row.state === 0 && arr.length == 0) {
        row.bsm1 = false
      }else if(arr.length>0){
        try{
      } else if (arr.length > 0) {
        try {
          row.bsmRow = this.HaveJson(row)
          let section = arr[0].section
          let arr0 = JSON.parse(row.section)
@@ -1744,7 +1701,7 @@
          row.section = section
          row.ask = arr1[index]
          row.tell = arr4[index]
        } catch(e) {}
        } catch (e) { }
      }
      this.sampleList.map(item => {
        if (this.sampleIds.indexOf(item.id) > -1) {
@@ -1764,7 +1721,7 @@
    handleAll(e) {
      if (e.length > 0) {
        this.productList.map(m => {
          if(e.find(a=>a.id == m.id)){
          if (e.find(a => a.id == m.id)) {
            m.state = 1
          }
          return m
@@ -1828,10 +1785,10 @@
        this.$refs.productTable.doLayout()
      })
    },
    changeProductList0(){
      this.productList0.forEach(a=>{
    changeProductList0() {
      this.productList0.forEach(a => {
        let obj = this.productList.find(m => m.id == a.id)
        if(obj){
        if (obj) {
          a.state = obj.state
          a.section = obj.section
          a.ask = obj.ask
@@ -1839,7 +1796,7 @@
          // a.price = obj.price
          a.tell = obj.tell
        }
        if(a.state == 0&&a.bsmRow){
        if (a.state == 0 && a.bsmRow) {
          a = this.HaveJson(a.bsmRow)
        }
      })
@@ -1848,7 +1805,7 @@
      const property = column['property'];
      return row[property] === value;
    },
    goBack () {
    goBack() {
      if (this.active == 1) {
        this.$router.go(-1)
      } else {
@@ -1869,6 +1826,7 @@
  justify-content: space-between;
  margin-bottom: 10px;
}
.tab {
  list-style-type: none;
  display: flex;
@@ -1897,6 +1855,7 @@
  background-color: #ffffff;
}
>>>.warning-row {
  color: #1890FF;
}
src/views/business/materialOrder/index.vue
@@ -14,13 +14,11 @@
            </el-input>
          </el-form-item>
          <el-form-item label="零件号" prop="partNo">
            <el-input v-model="entity.partNo" clearable placeholder="请输入" size="small"
              @keyup.enter.native="goSearch">
            <el-input v-model="entity.partNo" clearable placeholder="请输入" size="small" @keyup.enter.native="goSearch">
            </el-input>
          </el-form-item>
          <el-form-item label="零件描述" prop="partDesc">
            <el-input v-model="entity.partDesc" clearable placeholder="请输入" size="small"
              @keyup.enter.native="goSearch">
            <el-input v-model="entity.partDesc" clearable placeholder="请输入" size="small" @keyup.enter.native="goSearch">
            </el-input>
          </el-form-item>
          <el-form-item>
@@ -76,8 +74,7 @@
        <!--待下单-->
        <div class="table">
          <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0" @pagination="pagination"
                      ref="tableData"
            :rowClassName="changeRowClass" :height="'calc(100vh - 290px)'" key="tableData" :page="page"
            ref="tableData" :rowClassName="changeRowClass" :height="'calc(100vh - 290px)'" key="tableData" :page="page"
            :tableLoading="tableLoading"></lims-table>
        </div>
        <!--检验中-->
@@ -178,7 +175,7 @@
      </div>
    </el-dialog>
    <!--    <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"-->
    <!--                :sonLaboratory="'原材料'" :state="state"-->
    <!--                :sonLaboratory="'原辅料'" :state="state"-->
    <!--                :typeSource="typeSource"-->
    <!--                @goback="goback" @refreshView="refreshView"/>-->
  </div>
@@ -205,7 +202,7 @@
  updateEntrustCode
} from "@/api/business/rawMaterialOrder";
import { getWarehouseSubmit } from "@/api/business/materialInspection";
import {mapGetters} from "vuex";
import { mapGetters } from "vuex";
// import Inspection from "../do/b1-inspect-order-plan/Inspection.vue";
export default {
@@ -539,7 +536,7 @@
      tableData3: [],
      tableLoading3: false,
      column3: [
        { label: '委托编号', prop: 'entrustCode',width: "160px", },
        { label: '委托编号', prop: 'entrustCode', width: "160px", },
        {
          dataType: 'tag',
          label: '检验状态',
@@ -663,7 +660,7 @@
      tableData4: [],
      tableLoading4: false,
      column4: [
        { label: '委托编号', prop: 'entrustCode',width: "160px", },
        { label: '委托编号', prop: 'entrustCode', width: "160px", },
        {
          dataType: 'tag',
          label: '检验状态',
@@ -839,7 +836,7 @@
      tabIndex: 0,
      multipleSelection: [],
      active: 0, //1:下单,2:查看
      orderType: 0, //0:原材料下单,1:季度检验下单
      orderType: 0, //0:原辅料下单,1:季度检验下单
      currentId: null,
      btnLoading: false,
      quashDialogVisible: false, // 撤销下单提醒弹框
@@ -871,7 +868,7 @@
      orderId: 0,
      inspectorList: [],//检验人员列表
      InspectionKey: 1,
      typeSource: null,// 0:成品下单,1:原材料下单, 2: 铜单丝下单
      typeSource: null,// 0:成品下单,1:原辅料下单, 2: 铜单丝下单
      InspectInfoDialog: false, // 数据查看弹框
      insInfo: {},
      outLoading: false
@@ -883,7 +880,7 @@
  mounted() {
    this.refreshTable()
  },
  activated () {
  activated() {
    this.refreshTable()
  },
  // 方法集合
@@ -947,7 +944,7 @@
    // 已检验查询
    getIfsByOverList() {
      this.tableLoading2 = true
      if(null != this.entity.date){
      if (null != this.entity.date) {
        this.entity.beginDeclareDate = this.entity.date[0]
        this.entity.endDeclareDate = this.entity.date[1]
      } else {
@@ -968,7 +965,7 @@
    // 查询季度检验
    getIfsByQuarterList() {
      this.tableLoading4 = true
      if(null != this.entity.date){
      if (null != this.entity.date) {
        this.entity.beginDeclareDate = this.entity.date[0]
        this.entity.endDeclareDate = this.entity.date[1]
      } else {
@@ -989,7 +986,7 @@
    // 全部
    getIfsByAllList() {
      this.tableLoading3 = true
      if(null != this.entity.date){
      if (null != this.entity.date) {
        this.entity.beginDeclareDate = this.entity.date[0]
        this.entity.endDeclareDate = this.entity.date[1]
      } else {
@@ -1092,7 +1089,7 @@
      this.$router.push({
        path: "/inspectionTask/inspection",
        query: {
          sonLaboratory: '原材料',
          sonLaboratory: '原辅料',
          state: 3,
          typeSource: this.insInfo.typeSource,
          orderId: this.insInfo.enterOrderId,
@@ -1107,7 +1104,7 @@
      this.$router.push({
        path: "/inspectionTask/inspection",
        query: {
          sonLaboratory: '原材料',
          sonLaboratory: '原辅料',
          state: 3,
          typeSource: this.insInfo.typeSource,
          orderId: this.insInfo.quarterOrderId,
@@ -1312,7 +1309,7 @@
      rawAllExport({ entity: entity }).then(res => {
        this.outLoading = false
        const blob = new Blob([res], { type: 'application/octet-stream' });
        this.$download.saveAs(blob, '原材料检测信息导出.xlsx');
        this.$download.saveAs(blob, '原辅料检测信息导出.xlsx');
      })
    },
    // 提交修改委托编号信息
src/views/business/productOrder/index.vue
@@ -32,7 +32,7 @@
        </el-form-item>
        <el-form-item>
          <el-button :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text"
                     @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button>
            @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button>
          <el-button size="small" @click="refresh()">重 置</el-button>
          <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button>
        </el-form-item>
@@ -41,12 +41,18 @@
    <div class="table-tab">
      <div>
        <ul class="tab">
          <li :class="{ active: tabIndex === 0 }" v-if="checkPermi(['get:insOrder:reviewed'])" @click="handleTab(0)">待审核</li>
          <li :class="{ active: tabIndex === 1 }" v-if="checkPermi(['get:insOrder:checkout'])" @click="handleTab(1)">检验中</li>
          <li :class="{ active: tabIndex === 2 }" v-if="checkPermi(['get:insOrder:customerOrdered'])" @click="handleTab(2)">委托已检</li>
          <li :class="{ active: tabIndex === 3 }" v-if="checkPermi(['get:insOrder:spotCheck'])" @click="handleTab(3)">抽样已检</li>
          <li :class="{ active: tabIndex === 4 }" v-if="checkPermi(['get:insOrder:sendBack'])" @click="handleTab(4)">退回</li>
          <li :class="{ active: tabIndex === 5 }" v-if="checkPermi(['get:insOrder:revocation'])" @click="handleTab(5)">撤销</li>
          <li :class="{ active: tabIndex === 0 }" v-if="checkPermi(['get:insOrder:reviewed'])" @click="handleTab(0)">待审核
          </li>
          <li :class="{ active: tabIndex === 1 }" v-if="checkPermi(['get:insOrder:checkout'])" @click="handleTab(1)">检验中
          </li>
          <li :class="{ active: tabIndex === 2 }" v-if="checkPermi(['get:insOrder:customerOrdered'])"
            @click="handleTab(2)">委托已检</li>
          <li :class="{ active: tabIndex === 3 }" v-if="checkPermi(['get:insOrder:spotCheck'])" @click="handleTab(3)">
            抽样已检</li>
          <li :class="{ active: tabIndex === 4 }" v-if="checkPermi(['get:insOrder:sendBack'])" @click="handleTab(4)">退回
          </li>
          <li :class="{ active: tabIndex === 5 }" v-if="checkPermi(['get:insOrder:revocation'])" @click="handleTab(5)">
            撤销</li>
          <li :class="{ active: tabIndex === 6 }" v-if="checkPermi(['get:insOrder:all'])" @click="handleTab(6)">全部</li>
        </ul>
      </div>
@@ -86,8 +92,8 @@
      </el-dialog>
      <!-- 撤销 -->
      <el-dialog :before-close="handleClose" :visible.sync="quashDialogVisible" title="下单撤销" width="30%">
        <p v-if="!isQuash" style="font-size:16px;color:#333333">委托编号<span
            style="color:#34BD66">{{ this.insOrderRow.entrustCode }}</span>的信息是否撤销</p>
        <p v-if="!isQuash" style="font-size:16px;color:#333333">委托编号<span style="color:#34BD66">{{
          this.insOrderRow.entrustCode }}</span>的信息是否撤销</p>
        <el-form v-else ref="ruleForm" :label-position="labelPosition" :model="formData" label-width="150px">
          <el-form-item label="请输入撤销原因:">
            <el-input v-model="formData.specificationModel" size="small" style="width:60%"></el-input>
@@ -168,7 +174,8 @@
        <span slot="footer" class="dialog-footer">
          <el-row>
            <el-button @click="handleNo">{{ deleteTilte == '撤销' ? '取 消' : '不通过' }}</el-button>
            <el-button :loading="printLoading" type="primary" @click="submitDelete">{{ deleteTilte == '撤销' ? '确 定' : '通过'}}</el-button>
            <el-button :loading="printLoading" type="primary" @click="submitDelete">{{ deleteTilte == '撤销' ? '确 定' :
              '通过'}}</el-button>
          </el-row>
        </span>
      </el-dialog>
@@ -263,8 +270,8 @@
              <el-row style="margin-top: 0.01cm;font-size: 0.20cm;">
                <el-col style="display: flex;align-items: center;"><span>样品状态:&nbsp;
                  </span>
                  <span style="white-space: nowrap;"><span v-if="item.insState == 0">√</span><span v-if="item.insState != 0"
                      class="scor"></span>待检
                  <span style="white-space: nowrap;"><span v-if="item.insState == 0">√</span><span
                      v-if="item.insState != 0" class="scor"></span>待检
                    <span v-if="item.insState == 1">√</span><span v-if="item.insState != 1" class="scor"></span>在检
                    <span v-if="item.insState == 2">√</span><span v-if="item.insState != 2" class="scor"></span>已检
                    <span v-if="item.isLeave == 1">√</span><span v-if="item.isLeave != 1" class="scor"></span>留样</span>
@@ -314,7 +321,7 @@
} from "@/api/business/productOrder";
import { selectUserCondition } from "@/api/performance/class";
import { downFile, getFileList, selectSampleAndProductByOrderId } from "@/api/business/rawMaterialOrder";
import {mapGetters} from "vuex";
import { mapGetters } from "vuex";
export default {
  name: 'ProductOrder',
  components: {
@@ -535,8 +542,8 @@
      state: 0,// 0:台账页,1:检验页面,2检验页面(复核),默认为0,3数据查看
      InspectionKey: 1,
      inspectorList: [],//检验人员列表
      sonLaboratory: null,// 0:委托,1:原材料
      typeSource: null,// 0:成品下单,1:原材料下单
      sonLaboratory: null,// 0:委托,1:原辅料
      typeSource: null,// 0:成品下单,1:原辅料下单
      deleteTilte: '撤销',
      examine: null,
      deleteList: [],
@@ -772,7 +779,7 @@
      }
      const params = { ...this.entity, state: this.tabList[this.tabIndex].value }
      this.tableLoading = true
      selectInsOrderParameter({...this.page,...params}).then(res => {
      selectInsOrderParameter({ ...this.page, ...params }).then(res => {
        this.upIndex++
        this.tableLoading = false
        if (res.code === 200) {
@@ -974,7 +981,7 @@
      this.tableDataLookPage.size = page.limit
      this.getDataTableList(this.currentRow)
    },
    closeDia () {
    closeDia() {
      this.tableDataLookPage = {
        total: 0,
        size: 20,
@@ -1016,8 +1023,8 @@
    // 下载报告
    download(row) {
      let url = row.urlS ? row.urlS : row.url;
      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';
src/views/business/rawMaterialInspection/index.vue
@@ -26,7 +26,7 @@
            <el-button v-if="tabIndex === 3 || tabIndex === 4" :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'"
              style="color: #3A7BFA;" type="text" @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button>
            <el-button size="mini" type="primary" @click="refreshTable()">查 询</el-button>
            <el-button size="mini" @click="refresh()" >重 置</el-button>
            <el-button size="mini" @click="refresh()">重 置</el-button>
          </el-form-item>
        </el-row>
        <el-row>
@@ -93,7 +93,7 @@
      </span>
    </el-dialog>
    <!-- 确认报检 -->
    <el-dialog :close-on-click-modal="false" :title="declareType === 'add' ? '新增报检信息' : '原材料报检'"
    <el-dialog :close-on-click-modal="false" :title="declareType === 'add' ? '新增报检信息' : '原辅料报检'"
      :visible.sync="declareDialogVisible" width="800px" @close="resetFormData">
      <el-form ref="declareObj" :inline="true" :model="declareObj" :rules="declareObjRules" label-width="130px"
        label-position="right">
@@ -161,8 +161,8 @@
    </el-dialog>
    <!-- 撤销报检 -->
    <el-dialog :visible.sync="declareDialogVisible1" title="报检撤销" width="30%">
      <p style="font-size:16px;color:#333333">批号<span
          style="color:#34BD66">{{ insOrderRow.updateBatchNo }}</span>的信息是否<span style="color: #FF4902">撤销报检</span></p>
      <p style="font-size:16px;color:#333333">批号<span style="color:#34BD66">{{ insOrderRow.updateBatchNo
          }}</span>的信息是否<span style="color: #FF4902">撤销报检</span></p>
      <span slot="footer" class="dialog-footer">
        <el-row>
          <el-button @click="declareDialogVisible1 = false">取 消</el-button>
@@ -579,7 +579,7 @@
    // 已完成部查询
    getIfsByFinishList() {
      this.tableLoading1 = true
      if(null != this.componentData.date){
      if (null != this.componentData.date) {
        this.componentData.beginDeclareDate = this.componentData.date[0]
        this.componentData.endDeclareDate = this.componentData.date[1]
      } else {
@@ -599,7 +599,7 @@
    // 全部查询
    getIfsByAllList() {
      this.tableLoading1 = true
      if(null != this.componentData.date){
      if (null != this.componentData.date) {
        this.componentData.beginDeclareDate = this.componentData.date[0]
        this.componentData.endDeclareDate = this.componentData.date[1]
      } else {
@@ -676,7 +676,7 @@
    },
    // 提前入库
    advancedGodown(row) {
      this.$confirm('当前原材料是否提前入库?', '提示', {
      this.$confirm('当前原辅料是否提前入库?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
@@ -829,7 +829,7 @@
      }).then(res => {
        this.outLoading = false
        const blob = new Blob([res], { type: 'application/octet-stream' });
        this.$download.saveAs(blob, "原材料检测信息导出.xlsx");
        this.$download.saveAs(blob, "原辅料检测信息导出.xlsx");
      })
    },
    clear() {
src/views/business/reportPreparation/index.vue
@@ -184,8 +184,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>
@@ -205,7 +205,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 },
@@ -249,7 +249,7 @@
      loadingVerify: false, // 审核人员
      typeSourceList: [
        { label: '成品下单', value: 0 },
        { label: '原材料下单', value: 1 },
        { label: '原辅料下单', value: 1 },
      ],
      orderTypeList: [
        { label: '委托试验', value: 'Customer-ordered test' },
@@ -273,7 +273,7 @@
      orderId: 0,
      inspectorList: [],//检验人员列表
      InspectionKey: 1,
      typeSource: null,// 0:成品下单,1:原材料下单
      typeSource: null,// 0:成品下单,1:原辅料下单
      sonLaboratory: '', // 试验室
      filesDialogVisible: false,
      filesLookInfo: {},
@@ -349,7 +349,7 @@
            if (params == 0) {
              return "成品下单";
            } else {
              return "原材料下单";
              return "原辅料下单";
            }
          },
        },
@@ -660,7 +660,7 @@
      this.currentId = parseInt(row.insOrderId)
      switch (row.isCopper) {
        case 0:
          // 原材料
          // 原辅料
          this.$router.push({
            path: "/materialOrder/customsInspection", query: {
              customsInspection: row,
src/views/business/unpass/components/unPassDialog.vue
@@ -84,7 +84,7 @@
<script>
import { getInsOrder, getUnqualifiedHandler, downFile, addUnqualifiedHandler } from '@/api/business/unpass.js'
import {mapGetters} from "vuex";
import { mapGetters } from "vuex";
export default {
  name: "unPassDialog",
  // import 引入的组件需要注入到对象中才能使用
@@ -106,7 +106,7 @@
      isShow: this.unPassDialog,
      unPassForm: { // 不合格处理数据
        headline: '', // 标题
        inventoryQuantityId: '', // 原材料id,不做展示,只传值
        inventoryQuantityId: '', // 原辅料id,不做展示,只传值
        supplierName: '', // 供应商名称
        materialName: '', // 物料名称
        productionBatch: '', // 生产批次
@@ -155,7 +155,7 @@
            this.unPassForm.insOrderId = res.data.insOrder.id // 订单id
            this.unPassForm.materialName = res.data.insOrder.sampleType // 物料名称
            this.unPassForm.specsModels = res.data.insOrder.partDetail // 规格型号
            this.unPassForm.inventoryQuantityId = res.data.insOrderTemplate.inventoryQuantityId // 原材料id
            this.unPassForm.inventoryQuantityId = res.data.insOrderTemplate.inventoryQuantityId // 原辅料id
            this.unPassForm.supplierName = res.data.insOrderTemplate.supplierName // 供应商名称
            this.unPassForm.productionBatch = res.data.insOrderTemplate.updateBatchNo // 生产批次
            this.unPassForm.cargoQuantity = res.data.insOrderTemplate.qtyArrived + res.data.insOrderTemplate.buyUnitMeas // 到货数量
src/views/statisticalCharts/itemInspectionAnalysis/index.vue
@@ -3,16 +3,8 @@
    <div v-if="!isShowDataCom">
      <el-form ref="entity" size="small" :inline="true">
        <el-form-item style="width: 16%;">
          <el-date-picker
            v-model="datePicker"
            end-placeholder="结束日期"
            format="yyyy-MM-dd"
            placeholder="选择日期"
            range-separator="至"
            size="small"
            start-placeholder="开始日期"
            style="width: 100%;"
            type="daterange"
          <el-date-picker v-model="datePicker" end-placeholder="结束日期" format="yyyy-MM-dd" placeholder="选择日期"
            range-separator="至" size="small" start-placeholder="开始日期" style="width: 100%;" type="daterange"
            value-format="yyyy-MM-dd">
          </el-date-picker>
        </el-form-item>
@@ -26,13 +18,9 @@
          <el-input v-model="supplierName" clearable placeholder="请输入供应商名称" size="small"></el-input>
        </el-form-item>
        <el-form-item label="检验项名称" prop="supplierName">
          <el-select v-model="itemNames" :loading="selectLoading" clearable multiple placeholder="请选择"
                     size="small" style="width: 90%;" @focus="getItemList">
            <el-option
              v-for="item in itemNamesList"
              :key="item.value"
              :label="item.label"
              :value="item.value">
          <el-select v-model="itemNames" :loading="selectLoading" clearable multiple placeholder="请选择" size="small"
            style="width: 90%;" @focus="getItemList">
            <el-option v-for="item in itemNamesList" :key="item.value" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
@@ -46,13 +34,11 @@
        <el-col :span="24">
          <div class="inspection-card">
            <div style="display: flex;align-items: center;margin-bottom: 10px;justify-content: space-between;">
              <div>原材料项检分析列表</div>
              <div>原辅料项检分析列表</div>
              <el-button size="small" type="primary" @click="openShowData">查看数据分析</el-button>
            </div>
            <lims-table :tableData="editTableData" :column="editColumn"
                        height="400" key="tableData" :isSelection="true"
                        :handleSelectionChange="handleSelectionChange"
                        :tableLoading="editLoading"></lims-table>
            <lims-table :tableData="editTableData" :column="editColumn" height="400" key="tableData" :isSelection="true"
              :handleSelectionChange="handleSelectionChange" :tableLoading="editLoading"></lims-table>
          </div>
        </el-col>
      </el-row>
@@ -60,14 +46,9 @@
        <el-col :span="6" style="padding-top: 14px">
          <div style="display: flex;margin-left: 10px;align-items: center">
            <span style="width: 100px">分组类型:</span>
            <el-select v-model="groupType" clearable placeholder="请选择"
                       size="small"
                       style="width: 90%;" @change="getBarInfo">
              <el-option
                v-for="item in groupTypeList"
                :key="item.value"
                :label="item.label"
                :value="item.value">
            <el-select v-model="groupType" clearable placeholder="请选择" size="small" style="width: 90%;"
              @change="getBarInfo">
              <el-option v-for="item in groupTypeList" :key="item.value" :label="item.label" :value="item.value">
              </el-option>
            </el-select>
          </div>
@@ -77,46 +58,30 @@
        <el-col :span="24">
          <div class="inspection-card">
            <div class="title">检验项数据对比</div>
            <Echarts ref="chart"
                     :chartStyle="chartStyle"
                     :dataset="dataset"
                     :grid="grid"
                     :options="echartsOptions"
                     :series="echartsSeries"
                     :tooltip="tooltip"
                     :xAxis="xAxis"
                     :yAxis="yAxis"
                     style="height: 40vh;"></Echarts>
            <Echarts ref="chart" :chartStyle="chartStyle" :dataset="dataset" :grid="grid" :options="echartsOptions"
              :series="echartsSeries" :tooltip="tooltip" :xAxis="xAxis" :yAxis="yAxis" style="height: 40vh;"></Echarts>
          </div>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <div class="inspection-card">
            <div class="title">原材料项检合格率</div>
            <Echarts ref="chart"
                     :chartStyle="chartStyle"
                     :dataset="dataset1"
                     :grid="grid"
                     :options="echartsOptions1"
                     :series="echartsSeries1"
                     :tooltip="tooltip"
                     :xAxis="xAxis"
                     :yAxis="yAxis1"
                     style="height: 40vh;"></Echarts>
            <div class="title">原辅料项检合格率</div>
            <Echarts ref="chart" :chartStyle="chartStyle" :dataset="dataset1" :grid="grid" :options="echartsOptions1"
              :series="echartsSeries1" :tooltip="tooltip" :xAxis="xAxis" :yAxis="yAxis1" style="height: 40vh;">
            </Echarts>
          </div>
        </el-col>
      </el-row>
    </div>
    <el-dialog :visible.sync="dataDialogVisible" title="数据查看" width="80%">
      <div v-if="dataDialogVisible" style="height: 70vh;overflow-y: auto;">
        <lims-table :tableData="tableData" :column="column"
                    @pagination="pagination" key="tableData"
                    :page="page" :tableLoading="tableLoading"></lims-table>
        <lims-table :tableData="tableData" :column="column" @pagination="pagination" key="tableData" :page="page"
          :tableLoading="tableLoading"></lims-table>
      </div>
    </el-dialog>
    <DataComparison v-if="isShowDataCom" :comparisonData="comparisonData"
                    :selectRow="selectRow" @goBack="goBack"></DataComparison>
    <DataComparison v-if="isShowDataCom" :comparisonData="comparisonData" :selectRow="selectRow" @goBack="goBack">
    </DataComparison>
  </div>
</template>
@@ -130,20 +95,20 @@
  getRawProductAnalysisAllList,
  getRawProductAnalysisRawPass, getRawSupplierCompare
} from "@/api/statisticalCharts/dataAnalysis";
import {selectSampleAndProductByOrderId} from "@/api/business/rawMaterialOrder";
import { selectSampleAndProductByOrderId } from "@/api/business/rawMaterialOrder";
export default {
  name: "ItemInspectionAnalysis",
  // import 引入的组件需要注入到对象中才能使用
  components: {limsTable, Echarts, DataComparison},
  components: { limsTable, Echarts, DataComparison },
  data() {
    // 这里存放数据
    return {
      selectChangeRows: [], // 选中的数据
      groupTypeList: [
        {label: '样品', value: '0'},
        {label: '同一厂家, 同一型号, 不同批次', value: '1'},
        {label: '同一型号, 不同厂家', value: '2'},
        { label: '样品', value: '0' },
        { label: '同一厂家, 同一型号, 不同批次', value: '1' },
        { label: '同一型号, 不同厂家', value: '2' },
      ],
      itemNames: [], // 检验项名称
      itemNamesList: [],
@@ -241,15 +206,15 @@
          label: '样品型号',
          minWidth: '300px',
          prop: 'sampleModel'
        },{
        }, {
          label: '下发时间',
          minWidth: '120px',
          prop: 'sendTime'
        },{
        }, {
          label: '抵达的采购数量',
          minWidth: '130px',
          prop: 'qtyArrived'
        },{
        }, {
          label: '单位',
          minWidth: '120px',
          prop: 'buyUnitMeas'
@@ -276,17 +241,17 @@
      tableData: [],
      tableLoading: false,
      column: [
        {label: '样品编号', prop: 'sampleCode'},
        {label: '样品名称', prop: 'sample'},
        {label: '检验项分类', prop: 'inspectionItemClass'},
        {label: '检验项', prop: 'inspectionItem'},
        {label: '检验子项', prop: 'inspectionItemSubclass'},
        {label: '单位', prop: 'unit'},
        {label: '样品型号', prop: 'model'},
        {label: '条件', prop: 'radius'},
        {label: '电缆标识', prop: 'cableTag'},
        {label: '试验要求', prop: 'tell'},
        {label: '检验结果', prop: 'lastValue'},
        { label: '样品编号', prop: 'sampleCode' },
        { label: '样品名称', prop: 'sample' },
        { label: '检验项分类', prop: 'inspectionItemClass' },
        { label: '检验项', prop: 'inspectionItem' },
        { label: '检验子项', prop: 'inspectionItemSubclass' },
        { label: '单位', prop: 'unit' },
        { label: '样品型号', prop: 'model' },
        { label: '条件', prop: 'radius' },
        { label: '电缆标识', prop: 'cableTag' },
        { label: '试验要求', prop: 'tell' },
        { label: '检验结果', prop: 'lastValue' },
        {
          dataType: 'tag',
          label: '结果判定',
@@ -309,16 +274,16 @@
              return 'danger'
            } else if (params == 3) {
              return ''
            }  else {
            } else {
              return null
            }
          }
        }
      ],
      page: {
        total:0,
        size:10,
        current:1
        total: 0,
        size: 10,
        current: 1
      },
      currentRow: {},
      isShowDataCom: false,
@@ -331,7 +296,7 @@
  },
  // 方法集合
  methods: {
    getBarInfo (val) {
    getBarInfo(val) {
      if (val === '1') {
        if (!this.modelName || !this.supplierName) {
          this.$message.warning('型号或供应商不能为空')
@@ -371,10 +336,12 @@
          return
        }
        for (let i = 0; i < res.data.itemNames.length; i++) {
          this.echartsSeries.push({type: 'line', label: {
          this.echartsSeries.push({
            type: 'line', label: {
              show: true,
              position: 'top'
            },})
            },
          })
        }
        this.dataset.dimensions = this.HaveJson(res.data.itemNames)
        this.dataset.dimensions.unshift('product')
@@ -399,15 +366,17 @@
          return
        }
        for (let i = 0; i < res.data.itemNames.length; i++) {
          this.echartsSeries1.push({type: 'line',tooltip: {
          this.echartsSeries1.push({
            type: 'line', tooltip: {
              valueFormatter: function (value) {
                return value + '%';
              }
            },label: {
            }, label: {
              show: true,
              position: 'top',
              formatter: (params) => params.value[params.dimensionNames[params.encode.y[0]]] + '%'
            },})
            },
          })
        }
        this.dataset1.dimensions = this.HaveJson(res.data.itemNames)
        this.dataset1.dimensions.unshift('product')
@@ -423,7 +392,7 @@
    },
    // 查询回调
    refreshTable(row) {
      selectSampleAndProductByOrderId({id: row.id, ...this.page}).then(res => {
      selectSampleAndProductByOrderId({ id: row.id, ...this.page }).then(res => {
        this.tableLoading = false
        if (res.code === 200) {
          this.tableData = res.data.records
@@ -433,11 +402,11 @@
        this.tableLoading = false
      })
    },
    pagination (page) {
    pagination(page) {
      this.page.size = page.limit
      this.refreshTable(this.currentRow)
    },
    changeData () {
    changeData() {
      if (this.datePicker !== null && this.datePicker.length > 0) {
        this.beginDate = this.datePicker[0] + ' 00:00:00'
        this.endDate = this.datePicker[1] + ' 23:59:59'
@@ -449,7 +418,7 @@
      this.getBar1()
      this.getTableData()
    },
    getTableData () {
    getTableData() {
      this.editLoading = true
      const params = {
        beginDate: this.beginDate,
@@ -467,7 +436,7 @@
      })
    },
    // 获取检验项下拉框
    getItemList () {
    getItemList() {
      this.selectLoading = true
      this.itemNamesList = []
      const params = {
@@ -490,10 +459,10 @@
        this.selectLoading = false
      })
    },
    goBack () {
    goBack() {
      this.isShowDataCom = false
    },
    openShowData () {
    openShowData() {
      if (this.selectChangeRows.length !== 5) {
        this.$message.warning('请选择5条数据')
        return
@@ -520,7 +489,7 @@
        this.isShowDataCom = true
      })
    },
    handleSelectionChange (val) {
    handleSelectionChange(val) {
      this.selectChangeRows = val
    },
  },
@@ -528,7 +497,7 @@
</script>
<style scoped>
.inspection-card{
.inspection-card {
  width: 100%;
  margin-top: 10px;
}
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>
@@ -40,39 +32,24 @@
    <el-row :gutter="20">
      <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>
          <div class="title">原辅料合格率</div>
          <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>
          <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>
        </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',
@@ -355,7 +324,7 @@
        this.xAxis[0].data = xAxis
      })
    },
    // 获取原材料合格率图表数据
    // 获取原辅料合格率图表数据
    getRawPass() {
      const params = {
        dateType: this.dateType,
@@ -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/capability/index.vue
@@ -290,7 +290,7 @@
                this.bindWokshop1(row);
              },
              disabled: (row) => {
                return row.objectType != '原材料'
                return row.objectType != '原辅料' && row.objectType != '包材'
              }
            },
          ]
@@ -348,7 +348,7 @@
                this.bindWokshop(row);
              },
              showHide: (row) => {
                if (this.currentObj.objectType != '原材料') {
                if (this.currentObj.objectType != '原辅料' && row.objectType != '包材') {
                  return false
                } else {
                  return true
@@ -586,7 +586,7 @@
    // 产品维护
    upProduct(row) {
      this.currentObj = row;
      if (this.currentObj.objectType == '原材料') {
      if (this.currentObj.objectType == '原辅料') {
        if (this.productColumn.length < 4) {
          this.productColumn.splice(2, 0, { label: '车间名称', prop: 'workShopName' })
        }
src/views/structural/capabilityAndLaboratory/capabilityComponents/bindPartDialog.vue
@@ -22,7 +22,8 @@
          <el-form-item label="色标:" prop="colorCode">
            <el-input v-model="bindPartData.colorCode" size="small"></el-input>
          </el-form-item>
          <el-form-item label="进厂检验项:" prop="inspectionItem" v-if="currentObj.objectType == '原材料'" label-width="100px">
          <el-form-item label="进厂检验项:" prop="inspectionItem"
            v-if="currentObj.objectType == '原辅料' || currentObj.objectType == '包材'" label-width="100px">
            <!-- <el-input v-model="bindPartData.inspectionItem" disabled placeholder="选择检验项" size="small">
              <template slot="append">
                <el-button slot="append" icon="el-icon-search" @click="openItems"></el-button>
@@ -200,7 +201,7 @@
        partNo: '', // 零件号
        color: '', // 颜色
        colorCode: '', // 色标
        inspectionItem: [],//原材料进厂检验对象列表
        inspectionItem: [],//原辅料进厂检验对象列表
      },
      bindPartDataRules: {
        partNo: [
@@ -211,7 +212,7 @@
      upIndex: 0,
      addBindLoad: false,
      itemList: [],//原材料进厂检验对象列表
      itemList: [],//原辅料进厂检验对象列表
      editItem: false,
      editList: [],
      editColumn: [