spring
2025-03-19 379ad4226bc5a3ad175635b5c40e6bf5b68e4069
能力范围功能更新70%
已修改14个文件
1122 ■■■■■ 文件已修改
src/api/structural/structureTestObjectPart.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/styles/sidebar.scss 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Preview/filePreview.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Table/lims-table.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Sidebar/SidebarItem.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/customsInspection.vue 545 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/rawMaterialInspection/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/standard/standardLibrary/index.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/capability/index.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue 161 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/capabilityComponents/bindPartDialog.vue 175 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/capabilityComponents/testObjectEditForm.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/workshop/components/fileList.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/workshop/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/structural/structureTestObjectPart.js
@@ -64,3 +64,21 @@
    params: query,
  });
}
// 根据检验对象查询检验
export function inspectionItems(query) {
  return request({
    url: "/productPart/inspectionItems",
    method: "get",
    params: query,
  });
}
// 零件复核
export function productPartReview(query) {
  return request({
    url: "/productPart/productPartReview",
    method: "post",
    data: query,
  });
}
src/assets/styles/sidebar.scss
@@ -1,18 +1,17 @@
#app {
  .main-container {
    height: 100%;
    transition: margin-left .28s;
    transition: margin-left 0.28s;
    margin-left: $base-sidebar-width;
    position: relative;
  }
  .sidebarHide {
    margin-left: 0!important;
    margin-left: 0 !important;
  }
  .sidebar-container {
    -webkit-transition: width .28s;
    -webkit-transition: width 0.28s;
    transition: width 0.28s;
    width: $base-sidebar-width !important;
    background-color: $base-menu-background;
@@ -24,12 +23,13 @@
    left: 0;
    z-index: 1001;
    overflow: hidden;
    -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);
    -webkit-box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35);
    //box-shadow: 2px 0 6px rgba(0,21,41,.35);
    // reset element-ui css
    .horizontal-collapse-transition {
      transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
      transition: 0s width ease-in-out, 0s padding-left ease-in-out,
        0s padding-right ease-in-out;
    }
    .scrollbar-wrapper {
@@ -70,7 +70,8 @@
      width: 100% !important;
    }
    .el-menu-item, .el-submenu__title {
    .el-menu-item,
    .el-submenu__title {
      overflow: hidden !important;
      text-overflow: ellipsis !important;
      white-space: nowrap !important;
@@ -88,7 +89,7 @@
      color: $base-menu-color-active !important;
    }
    & .nest-menu .el-submenu>.el-submenu__title,
    & .nest-menu .el-submenu > .el-submenu__title,
    & .el-submenu .el-menu-item {
      min-width: $base-sidebar-width !important;
@@ -97,7 +98,7 @@
      }
    }
    & .theme-dark .nest-menu .el-submenu>.el-submenu__title,
    & .theme-dark .nest-menu .el-submenu > .el-submenu__title,
    & .theme-dark .el-submenu .el-menu-item {
      background-color: $base-sub-menu-background !important;
@@ -109,11 +110,11 @@
  .hideSidebar {
    .sidebar-container {
      width: 54px !important;
      width: 70px !important;
    }
    .main-container {
      margin-left: 54px;
      margin-left: 70px;
    }
    .submenu-title-noDropdown {
@@ -124,33 +125,43 @@
        padding: 0 !important;
        .svg-icon {
          margin-left: 20px;
          width: 1.5em;
          height: 1.5em;
          margin-left: 25px;
        }
      }
    }
    .el-menu-item.is-active,
    .el-submenu.is-active > .el-submenu__title {
      background-color: transparent !important;
    }
    .el-submenu {
      overflow: hidden;
      &>.el-submenu__title {
      & > .el-submenu__title {
        padding: 0 !important;
        .svg-icon {
          margin-left: 20px;
          width: 1.5em;
          height: 1.5em;
          margin-left: 25px;
        }
      }
    }
    .el-menu--collapse {
      .el-submenu {
        &>.el-submenu__title {
          &>span {
            height: 0;
            width: 0;
            overflow: hidden;
            visibility: hidden;
            display: inline-block;
        & > .el-submenu__title {
          height: auto; /* 根据内容自动调整高度 */
          flex-direction: column; /* 改变布局方向为垂直 */
          align-items: center; /* 居中对齐 */
          margin-bottom: 10px;
          & > span {
            display: block !important;
            visibility: visible !important;
            white-space: normal; /* 允许换行 */
            text-align: center; /* 文本居中对齐 */
            line-height: normal;
          }
        }
      }
@@ -168,7 +179,7 @@
    }
    .sidebar-container {
      transition: transform .28s;
      transition: transform 0.28s;
      width: $base-sidebar-width !important;
    }
@@ -182,7 +193,6 @@
  }
  .withoutAnimation {
    .main-container,
    .sidebar-container {
      transition: none;
@@ -192,13 +202,13 @@
// when menu collapsed
.el-menu--vertical {
  &>.el-menu {
  & > .el-menu {
    .svg-icon {
      margin-right: 16px;
    }
  }
  .nest-menu .el-submenu>.el-submenu__title,
  .nest-menu .el-submenu > .el-submenu__title,
  .el-menu-item {
    &:hover {
      // you can use $subMenuHover
@@ -207,7 +217,7 @@
  }
  // the scroll bar appears when the subMenu is too long
  >.el-menu--popup {
  > .el-menu--popup {
    max-height: 100vh;
    overflow-y: auto;
src/components/Preview/filePreview.vue
@@ -96,6 +96,7 @@
      if (state) {
        this.imgUrl = this.fileUrl.replaceAll('word', 'img')
      }
      console.log(2222, this.imgUrl)
      return state;
    },
    isPdf() {
src/components/Table/lims-table.vue
@@ -99,7 +99,7 @@
        </template>
      </el-table-column>
    </el-table>
    <pagination v-show="page.total > 0" :total="page.total" :layout="page.layout" :page.sync="page.current"
    <pagination v-if="page" v-show="page.total > 0" :total="page.total" :layout="page.layout" :page.sync="page.current"
      :limit.sync="page.size" @pagination="pagination" />
  </div>
</template>
@@ -422,6 +422,17 @@
      //   }
      // }
    },
    // 回显多选选中状态
    toggleRowSelection(list) {
      this.$nextTick(() => {
        this.tableData.forEach(row => {
          let obj = list.find(m => m == row[this.rowKey])
          if (obj) {
            this.$refs.multipleTable.toggleRowSelection(obj, true);
          }
        });
      });
    }
  },
};
</script>
src/layout/components/Sidebar/SidebarItem.vue
@@ -1,9 +1,10 @@
<template>
  <div v-if="!item.hidden">
    <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
    <template
      v-if="hasOneShowingChild(item.children, item) && (!onlyOneChild.children || onlyOneChild.noShowingChildren) && !item.alwaysShow">
      <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
          <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{ 'submenu-title-noDropdown': !isNest }">
          <item :icon="onlyOneChild.meta.icon || (item.meta && item.meta.icon)" :title="onlyOneChild.meta.title" />
        </el-menu-item>
      </app-link>
    </template>
@@ -12,14 +13,8 @@
      <template slot="title">
        <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
      </template>
      <sidebar-item
        v-for="(child, index) in item.children"
        :key="child.path + index"
        :is-nest="true"
        :item="child"
        :base-path="resolvePath(child.path)"
        class="nest-menu"
      />
      <sidebar-item v-for="(child, index) in item.children" :key="child.path + index" :is-nest="true" :item="child"
        :base-path="resolvePath(child.path)" class="nest-menu" />
    </el-submenu>
  </div>
</template>
@@ -75,7 +70,7 @@
      // Show parent if there are no child router to display
      if (showingChildren.length === 0) {
        this.onlyOneChild = { ... parent, path: '', noShowingChildren: true }
        this.onlyOneChild = { ...parent, path: '', noShowingChildren: true }
        return true
      }
@@ -97,3 +92,8 @@
  }
}
</script>
<style scoped>
::v-deep .el-submenu__title i {
  color: #ffffff !important;
}
</style>
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,162 +141,146 @@
    </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>
            </el-form-item>
            <el-form-item label="" style="margin-bottom: 6px;margin-top: 6px">
              <el-button type="primary" size="small">车间附件查看</el-button>
            </el-form-item>
          </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 +288,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>
@@ -342,8 +318,8 @@
            <div class="search_label" style="width: 80px;">要求值:</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">{{JSON.parse(item.bsmRow.askCopy)[ai]}}</el-radio>
                <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a">{{
                  JSON.parse(item.bsmRow.askCopy)[ai] }}</el-radio>
              </el-radio-group>
            </div>
          </el-col>
@@ -356,9 +332,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 +346,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 +384,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 +423,7 @@
      active: 0,
      currentId: 0,
      isReport: '',
      editTable:[], // 区间特殊值填写
      editTable: [], // 区间特殊值填写
      template: null,
      saveLoad: false, // 保存按钮loading
      noNeedCheckLoad: false, // 免检按钮loading
@@ -555,9 +516,9 @@
      addObj1: {},
      model: null,
      standardMethodListId: null,
      inspectionItem:null,
      inspectionItemSubclass:null,
      methodS:null,
      inspectionItem: null,
      inspectionItemSubclass: null,
      methodS: null,
      codeLevel: '', // 样品所在级别
      selectTreeTem: '', // 样品父级
      checkType: [], // 检验类型选项数据
@@ -570,14 +531,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 +553,7 @@
      ],
      dataIndex: 0,
      isShowTab: false,
      symbolList:['RTS'],
      symbolList: ['RTS'],
      bsm3Dia: false, // 区间值填写弹框
      bsmRow: {},
      bsm1: false,
@@ -658,7 +619,7 @@
    this.getInfo() // 获取数据
  },
  methods: {
    save1 () {
    save1() {
      if (this.bsm1DiaList.length > 0) {
        this.bsm1DiaList.forEach(item => {
          if (!item.bsm1Val) {
@@ -679,24 +640,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 +705,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 +719,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
@@ -790,7 +751,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 +773,7 @@
          thing: JSON.stringify({
            // addObj: this.addObj,
            sampleList: sampleList,
            selectTree:this.selectTree
            selectTree: this.selectTree
          })
        }).then(res => {
          this.templateLoading = false;
@@ -832,22 +793,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 +831,7 @@
      this.computationalPairing(this.sampleList.length)
    },
    // 检验项列表筛选
    searchFilterList () {
    searchFilterList() {
      const vtw = {
        inspectionItem: this.inspectionItem, // 检验项
        inspectionItemSubclass: this.inspectionItemSubclass, // 检验项子项
@@ -881,7 +842,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 +855,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 +880,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 +907,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 +935,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 +946,7 @@
        }
      });
    },
    handleNoNeedCheck () {
    handleNoNeedCheck() {
      // 检验类型为进厂检验时可选择免检,但不能选择检验项
      const sampleList = this.HaveJson(this.sampleList)
      sampleList.forEach(item => {
@@ -1025,7 +986,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 +994,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 +1040,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 +1048,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 +1097,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 +1148,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 +1179,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 +1212,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 +1246,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 +1259,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 +1274,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 +1296,7 @@
      } catch (e) {
      }
    },
    replaceAll(str,find,value) {
    replaceAll(str, find, value) {
      if (str === undefined) {
        return str
      }
@@ -1413,10 +1374,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 +1425,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 +1522,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 +1556,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 +1578,7 @@
          })
        }, 200)
      }).catch(err => {
        console.log('err-',err)
        console.log('err-', err)
      })
    },
    // 选择样品型号的回调
@@ -1678,7 +1639,7 @@
      }
    },
    // 全选特殊值处理框选择要求值的回调
    upBsmAll (item) {
    upBsmAll(item) {
      const i = this.bsm1DiaList.findIndex(obj => obj.id === item.id)
      if (i > -1) {
        // 找到相应的检验项赋值
@@ -1709,7 +1670,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 +1684,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 +1705,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 +1725,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 +1789,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 +1800,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 +1809,7 @@
      const property = column['property'];
      return row[property] === value;
    },
    goBack () {
    goBack() {
      if (this.active == 1) {
        this.$router.go(-1)
      } else {
@@ -1869,6 +1830,7 @@
  justify-content: space-between;
  margin-bottom: 10px;
}
.tab {
  list-style-type: none;
  display: flex;
@@ -1897,5 +1859,4 @@
  background-color: #ffffff;
}
</style>
src/views/business/rawMaterialInspection/index.vue
@@ -141,6 +141,11 @@
            <el-option :value="1" label="过期物料"></el-option>
          </el-select>
        </el-form-item>
        <!-- TODO:必填 -->
        <el-form-item class="declareObj-form-item" label="供应商批号:" prop="buyUnitMeas">
          <el-input v-model="declareObj.buyUnitMeas" :disabled="declareType !== 'add'" clearable class="addObj-info"
            size="small"></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-row>
@@ -161,8 +166,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>
@@ -561,7 +566,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 {
@@ -581,7 +586,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 {
src/views/standard/standardLibrary/index.vue
@@ -17,8 +17,7 @@
          height: calc(100% - 30px);
          overflow-y: scroll;
          scrollbar-width: none;
        " @node-click="handleNodeClick"
               @node-drop="handleDrop">
        " @node-click="handleNodeClick" @node-drop="handleDrop">
        <div slot-scope="{ node, data }" class="custom-tree-node">
          <el-row style="width: 100%">
            <el-col :class="{ sort: node.level > 3 }" :span="19" :title="data.label" style="text-align: left">
@@ -66,9 +65,8 @@
      </el-row>
      <el-row v-loading="tableLoad" class="standard_table">
        <el-table ref="standard" :data="standardList" class="el-table" header-row-class-name="header-class" height="220"
                  :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
          highlight-current-row style="width: 100%; height: 220px !important" tooltip-effect="dark"
          @row-click="rowClick">
          :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border highlight-current-row
          style="width: 100%; height: 220px !important" tooltip-effect="dark" @row-click="rowClick">
          <el-table-column label="标准编号" prop="code" show-overflow-tooltip width="200">
            <template slot-scope="scope">
              <span style="color: red; font-size: 14px">{{
@@ -82,11 +80,10 @@
      </el-row>
      <el-row v-loading="tableLoad2" class="product_table">
        <el-table id="templateParamTable" ref="productTable" v-loading="productTableLoading" :data="productList"
                  :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
          :fit="true" :row-class-name="tableRowClassName" class="productTable"
          header-row-class-name="header-class" height="100%" row-key="id" stripe style="width: 100%"
          tooltip-effect="dark" @select="upProductSelect" @selection-change="handleSelectionChange"
          @select-all="handleAll">
          :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border :fit="true"
          :row-class-name="tableRowClassName" class="productTable" header-row-class-name="header-class" height="100%"
          row-key="id" stripe style="width: 100%" tooltip-effect="dark" @select="upProductSelect"
          @selection-change="handleSelectionChange" @select-all="handleAll">
          <el-table-column type="selection" width="50"> </el-table-column>
          <el-table-column label="产品" min-width="100" prop="sample" show-overflow-tooltip></el-table-column>
          <el-table-column label="型号" min-width="100" prop="model" show-overflow-tooltip></el-table-column>
@@ -176,8 +173,8 @@
            <template slot-scope="scope">
              <el-button type="text" @click="sectionUp(scope.row)" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct'])
                ">区间设置</el-button>
              <el-button type="text" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct'])
                " @click="bindSupplierDensitySecond(scope.row)">绑定厂家</el-button>
              <!-- <el-button type="text" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct'])
                " @click="bindSupplierDensitySecond(scope.row)">绑定厂家</el-button> -->
            </template>
          </el-table-column>
        </el-table>
@@ -225,7 +222,7 @@
    <el-dialog :close-on-click-modal="false" :visible.sync="sectionUpDia" title="区间设置" width="80%">
      <div class="body" style="padding: 5px 0">
        <el-table :data="sectionList" border height="350px" style="width: 100%"
                  :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }">
          :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }">
          <el-table-column align="center" label="序号" type="index" width="70">
          </el-table-column>
          <el-table-column align="center" label="区间">
@@ -498,7 +495,7 @@
      }
    },
    // 调用tree过滤方法 中文英过滤
    filterNode (value, data, node) {
    filterNode(value, data, node) {
      if (!value) {    //如果数据为空,则返回true,显示所有的数据项
        return true
      }
@@ -507,7 +504,7 @@
      return this.chooseNode(val, data, node) // 调用过滤二层方法
    },
    // 过滤父节点 / 子节点 (如果输入的参数是父节点且能匹配,则返回该节点以及其下的所有子节点;如果参数是子节点,则返回该节点的父节点。name是中文字符,enName是英文字符.
    chooseNode (value, data, node) {
    chooseNode(value, data, node) {
      if (data.label.indexOf(value) !== -1) {
        return true
      }
src/views/structural/capabilityAndLaboratory/capability/index.vue
@@ -97,7 +97,8 @@
    <EditForm ref="editForm" @refreshList="refreshList1"></EditForm>
    <testObjectEditForm ref="testObjectEditForm" @refreshList="refreshList"></testObjectEditForm>
    <BindPartDialog v-if="bindPartDialog" :bindPartDialog="bindPartDialog" :currentRow="currentRow" :type="type"
      @closeBindPartDialog="closeBindPartDialog"></BindPartDialog>
      @closeBindPartDialog="closeBindPartDialog" :currentObj="currentObj">
    </BindPartDialog>
    <BindSupplierDensityDialog v-if="bindSupplierDensityDialog" :bindSupplierDensityDialog="bindSupplierDensityDialog"
      :currentRow="currentSupplierDensityRow" @closeBindPartDialog="closeBindSupplierDensityDialog">
    </BindSupplierDensityDialog>
@@ -232,7 +233,7 @@
        { label: '检验对象', prop: 'specimenName' },
        { label: '检验对象EN', prop: 'specimenNameEn' },
        { label: '产品', prop: 'product' },
        { label: '对象代号', prop: 'code' },
        // { label: '对象代号', prop: 'code' },
        {
          label: '对象类型', prop: 'objectType',
          dataType: 'tag',
@@ -274,13 +275,13 @@
                this.upProduct(row);
              },
            },
            // {
            //   name: '零件绑定',
            //   type: 'text',
            //   clickFun: (row) => {
            //     this.bindPartFirst(row);
            //   },
            // },
            {
              name: '零件绑定',
              type: 'text',
              clickFun: (row) => {
                this.bindPartFirst(row);
              },
            },
          ]
        }
      ],
@@ -343,13 +344,13 @@
                }
              }
            },
            {
              name: '厂家密度绑定',
              type: 'text',
              clickFun: (row) => {
                this.bindSupplierDensitySecond(row);
              },
            },
            // {
            //   name: '厂家密度绑定',
            //   type: 'text',
            //   clickFun: (row) => {
            //     this.bindSupplierDensitySecond(row);
            //   },
            // },
          ]
        }
      ],
@@ -674,6 +675,7 @@
      this.bindPart(row, 1)
    },
    bindWokshop(row) {
      this.workshopForm.workShopId = row.workShopId
      this.currentProduct = row;
      this.workshopVisible = true
    },
@@ -688,6 +690,9 @@
    },
    // 打开零件绑定弹框
    bindPart(row, index) {
      if (index == 0) {
        this.currentObj = row
      }
      this.type = index
      this.currentRow = row
      this.bindPartDialog = true
src/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue
@@ -30,9 +30,8 @@
          <el-col :span="12">
            <el-form-item label="检验对象:" prop="sample">
              <el-cascader v-model="editForm.sample" :options="itemParameterData.cascaderField.sample.tree"
                           :props="{value:'name',label:'name',checkStrictly: true, multiple: true}"
                           :show-all-levels="false"  clearable
                           filterable placeholder="请选择" size="small" style="width: 100%;"></el-cascader>
                :props="{ value: 'name', label: 'name', checkStrictly: true, multiple: true }" :show-all-levels="false"
                clearable filterable placeholder="请选择" size="small" style="width: 100%;"></el-cascader>
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -45,14 +44,16 @@
          <el-col :span="12">
            <el-form-item label="场所:" prop="laboratory">
              <el-select v-model="editForm.laboratory" clearable placeholder="请选择" size="small" style="width: 100%">
                <el-option v-for="item in laboratoryList" :key="item.label" :label="item.label" :value="item.label"></el-option>
                <el-option v-for="item in laboratoryList" :key="item.label" :label="item.label"
                  :value="item.label"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="试验室:" prop="sonLaboratory">
              <el-select v-model="editForm.sonLaboratory" clearable placeholder="请选择" size="small" style="width: 100%">
                <el-option v-for="item in dict.type.sys_sub_lab" :key="item.value" :label="item.label" :value="item.value"></el-option>
                <el-option v-for="item in dict.type.sys_sub_lab" :key="item.value" :label="item.label"
                  :value="item.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
@@ -73,7 +74,8 @@
          <el-col :span="12">
            <el-form-item label="计量单位:" prop="unit">
              <el-select v-model="editForm.unit" clearable placeholder="请选择" size="small" style="width: 100%">
                <el-option v-for="item in dict.type.sys_unit" :key="item.value" :label="item.label" :value="item.value"></el-option>
                <el-option v-for="item in dict.type.sys_unit" :key="item.value" :label="item.label"
                  :value="item.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
@@ -98,15 +100,19 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="检验项类型:" prop="inspectionItemType">
              <el-select v-model="editForm.inspectionItemType" clearable placeholder="请选择" size="small" style="width: 100%">
                <el-option v-for="item in dict.type.inspection_item_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
              <el-select v-model="editForm.inspectionItemType" clearable placeholder="请选择" size="small"
                style="width: 100%">
                <el-option v-for="item in dict.type.inspection_item_type" :key="item.value" :label="item.label"
                  :value="item.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="检验值类型:" prop="inspectionValueType">
              <el-select v-model="editForm.inspectionValueType" clearable placeholder="请选择" size="small" style="width: 100%">
                <el-option v-for="item in dict.type.inspection_value_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
              <el-select v-model="editForm.inspectionValueType" clearable placeholder="请选择" size="small"
                style="width: 100%">
                <el-option v-for="item in dict.type.inspection_value_type" :key="item.value" :label="item.label"
                  :value="item.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
@@ -115,14 +121,16 @@
          <el-col :span="12">
            <el-form-item label="特殊标识:" prop="bsm">
              <el-select v-model="editForm.bsm" clearable placeholder="请选择" size="small" style="width: 100%">
                <el-option v-for="item in dict.type.inspection_bsm" :key="item.value" :label="item.label" :value="item.value"></el-option>
                <el-option v-for="item in dict.type.inspection_bsm" :key="item.value" :label="item.label"
                  :value="item.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="原始记录模板:" prop="templateId">
              <el-select v-model="editForm.templateId" clearable placeholder="请选择" size="small" style="width: 100%">
                <el-option v-for="item in templateIdList" :key="item.value" :label="item.label" :value="item.value"></el-option>
                <el-option v-for="item in templateIdList" :key="item.value" :label="item.label"
                  :value="item.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
@@ -142,18 +150,19 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="试验方法:" prop="method">
              <el-select v-model="editForm.method" clearable multiple placeholder="请选择" size="small" style="width: 100%">
                <el-option v-for="item in methodList" :key="item.value" :label="item.label" :value="item.label"></el-option>
              <el-select v-model="editForm.method" clearable multiple placeholder="请选择" size="small"
                style="width: 100%">
                <el-option v-for="item in methodList" :key="item.value" :label="item.label"
                  :value="item.label"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="条件:" prop="radiusList">
            <el-form-item label="试验条件:" prop="radiusList">
              <el-select v-model="editForm.radiusList" allow-create default-first-option filterable multiple
                         placeholder="请选择"
                         size="small"
                         style="width: 100%">
                <el-option v-for="item in radiusListList" :key="item.value" :label="item.label" :value="item.value"></el-option>
                placeholder="请选择" size="small" style="width: 100%">
                <el-option v-for="item in radiusListList" :key="item.value" :label="item.label"
                  :value="item.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
@@ -165,13 +174,13 @@
            </el-form-item>
          </el-col>
        </el-row>
<!--        <el-col :span="12">-->
<!--          <el-form-item label="字典类型:" prop="dic">-->
<!--            <el-select v-model="editForm.dic" clearable placeholder="请选择" size="small" style="width: 100%">-->
<!--              <el-option v-for="item in dicList" :key="item.value" :label="item.label" :value="item.value"></el-option>-->
<!--            </el-select>-->
<!--          </el-form-item>-->
<!--        </el-col>-->
        <!--        <el-col :span="12">-->
        <!--          <el-form-item label="字典类型:" prop="dic">-->
        <!--            <el-select v-model="editForm.dic" clearable placeholder="请选择" size="small" style="width: 100%">-->
        <!--              <el-option v-for="item in dicList" :key="item.value" :label="item.label" :value="item.value"></el-option>-->
        <!--            </el-select>-->
        <!--          </el-form-item>-->
        <!--        </el-col>-->
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeDia">取 消</el-button>
@@ -190,7 +199,7 @@
  obtainItemParameterList,
  upItemParameter
} from "@/api/structural/capability";
import {selectStandardMethods} from "@/api/structural/standardMethod";
import { selectStandardMethods } from "@/api/structural/standardMethod";
export default {
  name: "EditForm",
@@ -267,7 +276,7 @@
  },
  // 方法集合
  methods: {
    openDia (type, row) {
    openDia(type, row) {
      this.operationType = type
      this.editFormDia = true
      this.obtainItemParameterList() // 场所类型
@@ -277,29 +286,29 @@
      if (type === 'add') {
        this.editForm = {
          inspectionItem: '', // 检验项
            inspectionItemEn: '', // 检验项EN
            inspectionItemSubclass: '', // 检验子项
            inspectionItemSubclassEn: '', // 检验子项EN
            sample: [], // 检验对象
            price: '', // 单价
            laboratory: '', // 场所
            sonLaboratory: '', // 试验室
            askTell: '', // 要求描述
            ask: '', // 要求值
            unit: '', // 计量单位
            manHour: '', // 工时
            manDay: '', // 预计时间
            manHourGroup: '', // 工时分组
            inspectionItemType: '', // 检验项类型
            inspectionValueType: '', // 检验值类型
            dic: '', // 字典类型
            bsm: '', // 特殊标识
            templateId: '', // 原始记录模板
            inspectionItemClass: '', // 检验项分类
            inspectionItemClassEn: '', // 检验项分类EN
            method: '', // 试验方法
            radiusList: [], // 条件
            rates: '', // 条件
          inspectionItemEn: '', // 检验项EN
          inspectionItemSubclass: '', // 检验子项
          inspectionItemSubclassEn: '', // 检验子项EN
          sample: [], // 检验对象
          price: '', // 单价
          laboratory: '', // 场所
          sonLaboratory: '', // 试验室
          askTell: '', // 要求描述
          ask: '', // 要求值
          unit: '', // 计量单位
          manHour: '', // 工时
          manDay: '', // 预计时间
          manHourGroup: '', // 工时分组
          inspectionItemType: '', // 检验项类型
          inspectionValueType: '', // 检验值类型
          dic: '', // 字典类型
          bsm: '', // 特殊标识
          templateId: '', // 原始记录模板
          inspectionItemClass: '', // 检验项分类
          inspectionItemClassEn: '', // 检验项分类EN
          method: '', // 试验方法
          radiusList: [], // 条件
          rates: '', // 条件
        }
        this.resetForm('editForm')
      } else {
@@ -310,7 +319,7 @@
      }
    },
    // 提交编辑
    handleEdit () {
    handleEdit() {
      this.$refs.editForm.validate(valid => {
        if (valid) {
          this.editLoad = true
@@ -322,7 +331,7 @@
          } else {
            obj.radiusList = null
          }
          if(obj.id){
          if (obj.id) {
            // 修改
            upItemParameter(obj).then(res => {
              this.editLoad = false
@@ -335,7 +344,7 @@
            }).catch(e => {
              this.editLoad = false
            })
          }else{
          } else {
            // 新增
            addItemParameter(obj).then(res => {
              this.editLoad = false
@@ -353,31 +362,31 @@
      })
    },
    // 关闭弹框
    closeDia () {
    closeDia() {
      this.editFormDia = false
      this.resetForm("editForm");
    },
    selectTestObjectByName() {
      getItemTree().then(res => {
        if (res.data.length > 0) {
          res.data.forEach(a=>{
          res.data.forEach(a => {
            this.cascaderFieldData(a)
          })
          this.itemParameterData.cascaderField.sample.tree = res.data
        }
      })
    },
    cascaderFieldData(val){
      if(val.children === undefined) {
    cascaderFieldData(val) {
      if (val.children === undefined) {
        return
      }else if(val.children.length==0){
      } else if (val.children.length == 0) {
        val.label = val.name
        val.value = val.id
        delete val.children
      }else{
      } else {
        val.label = val.name
        val.value = val.id
        val.children.forEach(a=>{
        val.children.forEach(a => {
          a.label = a.name
          a.value = a.id
          this.cascaderFieldData(a)
@@ -387,28 +396,28 @@
    getSelectStandardMethods() {
      selectStandardMethods().then(res => {
        let data = []
          if (res.data.length > 0) {
            res.data.forEach(a => {
              data.push({
                label: a.code,
                value: a.id,
              })
        if (res.data.length > 0) {
          res.data.forEach(a => {
            data.push({
              label: a.code,
              value: a.id,
            })
            this.methodList = data
          }
          })
          this.methodList = data
        }
      })
    },
    obtainItemParameterList() {
      obtainItemParameterList().then(res => {
        let data = []
          if (res.data.length > 0) {
            res.data.forEach(a => {
              data.push({
                label: a.laboratoryName,
                value: a.id
              })
        if (res.data.length > 0) {
          res.data.forEach(a => {
            data.push({
              label: a.laboratoryName,
              value: a.id
            })
          }
          })
        }
        this.laboratoryList = data
      })
    },
src/views/structural/capabilityAndLaboratory/capabilityComponents/bindPartDialog.vue
@@ -1,22 +1,20 @@
<template>
  <div>
    <el-dialog title="零件绑定" :visible.sync="isShow" width="800px" @close="$emit('closeBindPartDialog')">
      <lims-table :tableData="tableData" :column="column" height="460"
                  :page="page" :tableLoading="tableLoading"></lims-table>
      <lims-table :tableData="tableData" :column="column" height="460" :page="page" :tableLoading="tableLoading"
        :key="1"></lims-table>
      <span slot="footer" class="dialog-footer">
        <el-button @click="$emit('closeBindPartDialog')">取 消</el-button>
        <el-button type="primary" @click="addBindPart('add')" :loading="addBindLoad">新 增</el-button>
      </span>
    </el-dialog>
    <el-dialog :title="dialogTitle" :visible.sync="addBindPartDialog" width="400px" @close="closeBindPartDialog"
               :close-on-click-modal="false" >
      :close-on-click-modal="false">
      <div class="body" v-if="addBindPartDialog">
        <el-form label-position="right" label-width="80px"
                 ref="bindPartData"
                 :rules="bindPartDataRules"
                 :model="bindPartData">
        <el-form label-position="right" label-width="80px" ref="bindPartData" :rules="bindPartDataRules"
          :model="bindPartData">
          <el-form-item label="零件号:" prop="partNo">
            <el-input v-model="bindPartData.partNo" size="small"></el-input>
            <el-input v-model="bindPartData.partNo" size="small" :disabled="dialogTitle == '修改零件绑定'"></el-input>
          </el-form-item>
          <el-form-item label="颜色:" prop="color">
            <el-input v-model="bindPartData.color" size="small"></el-input>
@@ -24,12 +22,30 @@
          <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-input v-model="bindPartData.inspectionItem" disabled placeholder="选择检验项" size="small">
              <template slot="append">
                <el-button slot="append" icon="el-icon-search" @click="openItems"></el-button>
              </template>
</el-input> -->
            <el-select v-model="bindPartData.inspectionItem" multiple collapse-tags placeholder="请选择" size="small">
              <el-option v-for="item in itemList" :key="item.inspectionItem" :label="item.inspectionItem"
                :value="item.inspectionItem">
              </el-option>
            </el-select>
          </el-form-item>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeBindPartDialog">取 消</el-button>
        <el-button type="primary" @click="submitBind" :loading="bindLoad">确 认</el-button>
      </span>
    </el-dialog>
    <el-dialog title="修改记录" :visible.sync="editItem" width="600px">
      <div class="body" v-if="editItem">
        <lims-table :tableData="editList" :column="editColumn" height="460px" :tableLoading="tableLoading0" :key="2"
          :page="editPage" @pagination="editPagination"></lims-table>
      </div>
    </el-dialog>
  </div>
</template>
@@ -40,14 +56,13 @@
  addProductPart,
  addTestObjectPart, deleteProductPart, deleteTestObjectPart,
  selectByProductId,
  selectByTestObjectId, updateProductPart, updateTestObjectPart
  selectByTestObjectId, updateProductPart, updateTestObjectPart, inspectionItems, productPartReview
} from "@/api/structural/structureTestObjectPart";
import {delProduct} from "@/api/structural/capability";
export default {
  name: "bindPartDialog",
  // import 引入的组件需要注入到对象中才能使用
  components: {limsTable},
  components: { limsTable },
  props: {
    bindPartDialog: {
      type: Boolean,
@@ -57,10 +72,14 @@
      type: Number,
      default: () => null
    },
    currentRow : { // 选择本条数据的信息
    currentRow: { // 选择本条数据的信息
      type: Object,
      default: () => {}
    }
      default: () => { }
    },
    currentObj: {//当前对象
      type: Object,
      default: () => { }
    },
  },
  data() {
    // 这里存放数据
@@ -71,9 +90,20 @@
      tableData: [],
      tableLoading: false,
      column: [
        {label: '零件号', prop: 'partNo'},
        {label: '颜色', prop: 'color'},
        {label: '色标', prop: 'colorCode'},
        { label: '零件号', prop: 'partNo' },
        { label: '颜色', prop: 'color' },
        { label: '色标', prop: 'colorCode' },
        {
          label: '状态', prop: 'review',
          dataType: "tag",
          formatType: (params) => {
            if (params == '待复核') {
              return 'danger'
            } else {
              return 'success'
            }
          },
        },
        {
          dataType: 'action',
          fixed: 'right',
@@ -93,13 +123,40 @@
                this.delete(row);
              },
            },
            {
              name: '复核',
              type: 'text',
              clickFun: (row) => {
                this.$confirm("是否复核通过?", "复核", {
                  confirmButtonText: "确定",
                  cancelButtonText: "取消",
                  type: "warning",
                })
                  .then(() => {
                    productPartReview({ id: row.id }).then((res) => {
                      if (res.code == 200) {
                        this.$message.success("复核通过");
                        this.getList()();
                      }
                    });
                  })
                  .catch(() => { });
              },
            },
            {
              name: '记录',
              type: 'text',
              clickFun: (row) => {
                this.lookList(row);
              },
            },
          ]
        }
      ],
      page: {
        total:0,
        size:10,
        current:1,
        total: 0,
        size: 10,
        current: 1,
        layout: 'total, prev, pager, next'
      },
      bindPartComponent: {
@@ -135,6 +192,7 @@
        partNo: '', // 零件号
        color: '', // 颜色
        colorCode: '', // 色标
        inspectionItem: [],//原材料进厂检验对象列表
      },
      bindPartDataRules: {
        partNo: [
@@ -143,19 +201,60 @@
      },
      bindLoad: false,
      upIndex: 0,
      addBindLoad: false,
      itemList: [],//原材料进厂检验对象列表
      editItem: false,
      editList: [],
      editColumn: [
        { label: '零件号', prop: 'inspectionItem' },
        { label: '颜色', prop: 'inspectionItemSubclass' },
        { label: '色标', prop: 'ask' },
        { label: '进厂检验项', prop: 'askTell' },
        { label: '修改时间', prop: 'method' },
        { label: '修改人', prop: 'method' },
      ],
      editPage: {
        total: 0,
        size: 10,
        current: 0,
      },
      tableLoading0: false,
      // mutilSelect: []
    }
  },
  mounted() {
    this.getList()
    this.getItemList()
  },
  // 方法集合
  methods: {
    getItemList() {
      // this.tableLoading0 = true;
      inspectionItems({
        sample: this.currentObj.specimenName,
        productName: this.type == 0 ? null : this.currentRow.name
      }).then(res => {
        this.itemList = res.data
        // this.tableLoading0 = false;
      })
    },
    // 修改记录
    lookList() {
      this.editItem = true;
      this.getEditList()
    },
    getEditList() { },
    editPagination() {
      this.editPage.current = page;
      this.editPage.size = limit;
      this.getEditList();
    },
    getList() {
      this.tableLoading = true
      // 根据类型判断是检验对象零件绑定还是产品维护零件绑定
      if (this.type === 0) {
        selectByTestObjectId({testObjectId: this.currentRow.id}).then(res => {
        selectByTestObjectId({ testObjectId: this.currentRow.id }).then(res => {
          this.tableLoading = false
          if (res.code === 200) {
            this.tableData = res.data.records
@@ -165,7 +264,7 @@
          this.tableLoading = false
        })
      } else {
        selectByProductId({productId: this.currentRow.id}).then(res => {
        selectByProductId({ productId: this.currentRow.id }).then(res => {
          this.tableLoading = false
          if (res.code === 200) {
            this.tableData = res.data.records
@@ -176,16 +275,17 @@
        })
      }
    },
    addBindPart (type, row) {
    addBindPart(type, row) {
      this.addBindPartDialog = true
      this.dialogTitle = type === 'add' ? '新增零件绑定' : '修改零件绑定'
      this.operationType = type
      if (type === 'edit') {
        this.bindPartData = this.HaveJson(row)
        this.bindPartData.inspectionItem = this.bindPartData.inspectionItem ? this.bindPartData.inspectionItem.split(',') : []
      }
    },
    // 提交零件绑定
    submitBind () {
    submitBind() {
      this.$refs['bindPartData'].validate((valid) => {
        if (valid) {
          // 根据类型判断是检验对象零件绑定还是产品维护零件绑定
@@ -194,16 +294,19 @@
            color: this.bindPartData.color,
            colorCode: this.bindPartData.colorCode,
            partNo: this.bindPartData.partNo,
            } : {
            inspectionItem: this.bindPartData.inspectionItem && this.bindPartData.inspectionItem.length > 0 ? this.bindPartData.inspectionItem.join(',') : ''
          } : {
            productId: this.currentRow.id,
            color: this.bindPartData.color,
            colorCode: this.bindPartData.colorCode,
            partNo: this.bindPartData.partNo,
            inspectionItem: this.bindPartData.inspectionItem && this.bindPartData.inspectionItem.length > 0 ? this.bindPartData.inspectionItem.join(',') : ''
          }
          this.bindLoad = true
          if (this.operationType === 'add') {
            if (this.type === 0) {
              addTestObjectPart(params).then(res => {
                this.bindLoad = false
                if (res.code === 200) {
                  this.resetForm('bindPartData')
                  this.addBindPartDialog = false
@@ -260,21 +363,21 @@
        }
      })
    },
    delete (row) {
    delete(row) {
      this.$confirm('此操作将删除该数据, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        if (this.type === 0) {
          deleteTestObjectPart({id:row.id}).then(res => {
          deleteTestObjectPart({ id: row.id }).then(res => {
            if (res.code === 200) {
              this.$message.success('删除成功')
              this.getList();
            }
          })
        } else {
          deleteProductPart({id:row.id}).then(res => {
          deleteProductPart({ id: row.id }).then(res => {
            if (res.code === 200) {
              this.$message.success('删除成功')
              this.getList();
@@ -288,13 +391,23 @@
        });
      })
    },
    closeBindPartDialog () {
    closeBindPartDialog() {
      this.resetForm('bindPartData')
      this.addBindPartDialog = false
    },
    // openItems() {
    //   this.mutilSelect = this.bindPartData.inspectionItem ? this.bindPartData.inspectionItem.split(',') : []
    //   this.$refs.itemTable.toggleRowSelection(this.mutilSelect)
    //   this.addBindItem = true;
    // },
    // submitBindItem() {
    //   this.bindPartData.inspectionItem = this.mutilSelect.join(',')
    // },
    // handleSelectionChange(val) {
    //   this.mutilSelect = val
    // }
  },
}
</script>
<style scoped>
</style>
<style scoped></style>
src/views/structural/capabilityAndLaboratory/capabilityComponents/testObjectEditForm.vue
@@ -15,9 +15,9 @@
        <el-form-item label="检验对象EN:" prop="specimenNameEn">
          <el-input v-model="editForm.specimenNameEn" clearable size="small"></el-input>
        </el-form-item>
        <el-form-item label="对象代号:" prop="code">
        <!-- <el-form-item label="对象代号:" prop="code">
          <el-input v-model="editForm.code" clearable size="small"></el-input>
        </el-form-item>
        </el-form-item> -->
        <el-form-item label="对象类型:" prop="objectType">
          <el-select v-model="editForm.objectType" clearable placeholder="请选择" size="small" style="width: 100%">
            <el-option v-for="item in dict.type.product_classification" :key="item.value" :label="item.label"
@@ -53,7 +53,7 @@
        laboratoryId: '', // 场所
        specimenName: '', // 检验对象
        specimenNameEn: '', // 检验对象EN
        code: '', // 对象代号
        // code: '', // 对象代号
        objectType: '', // 对象类型
      },
      laboratoryList: [],
@@ -64,9 +64,9 @@
        specimenName: [
          { required: true, message: '请输入检验对象', trigger: 'blur' }
        ],
        code: [
          { required: true, message: '请输入对象代号', trigger: 'blur' }
        ],
        // code: [
        //   { required: true, message: '请输入对象代号', trigger: 'blur' }
        // ],
      },
      operationType: ''
    }
src/views/structural/capabilityAndLaboratory/workshop/components/fileList.vue
@@ -10,15 +10,21 @@
    </div>
    <lims-table :tableData="tableDataFile" :column="columnFile" height="500px" key="tableDataFile"
      :tableLoading="tableLoadingFile"></lims-table>
    <el-dialog title="查看附件" :visible.sync="lookDialogVisible" width="800px" top="5vh" fullscreen append-to-body>
      <filePreview v-if="lookDialogVisible" :fileUrl="javaApi + '/word/' + currentInfo.fileUrl" :currentFile="{}"
        style="max-height: 90vh;overflow-y: auto;" />
    </el-dialog>
  </div>
</template>
<script>
import limsTable from "@/components/Table/lims-table.vue";
import { fileList, delFile } from "@/api/structural/workshop.js"
import filePreview from "@/components/Preview/filePreview.vue";
export default {
  components: {
    limsTable,
    filePreview,
  },
  props: ['currentId'],
  computed: {
@@ -75,11 +81,21 @@
                this.delete(row);
              }
            },
            {
              name: '预览',
              type: 'text',
              clickFun: (row) => {
                this.currentInfo = row
                this.lookDialogVisible = true
              }
            },
          ]
        }
      ],
      tableDataFile: [],
      tableLoadingFile: false,
      lookDialogVisible: false,
      currentInfo: {},
    }
  },
  mounted() {
@@ -119,13 +135,7 @@
    },
    // 下载附件的文件
    handleDown(row) {
      downFile({
        id: row.id,
      }).then(res => {
        this.$download.saveAs(res.data.fileUrl, row.fileName);
      }).catch(error => {
      })
      this.$download.saveAs(row.fileUrl, row.fileName);
    },
    // 删除附件文件
    delete(row) {
src/views/structural/capabilityAndLaboratory/workshop/index.vue
@@ -2,7 +2,7 @@
  <div class="workshop">
    <div class="search">
      <div class="search_thing">
        <div class="search_label">名称:</div>
        <div class="search_label">车间名称:</div>
        <div class="search_input">
          <el-input size="small" placeholder="请输入" clearable v-model="queryParams.name"
            @keyup.enter.native="refreshTable()"></el-input>
@@ -32,7 +32,7 @@
      </span>
    </el-dialog>
    <el-dialog :visible.sync="filesDialogVisible" title="附件查看" width="80%">
      <fileList :currentId="id" />
      <fileList :currentId="id" v-if="filesDialogVisible" />
    </el-dialog>
  </div>
</template>
@@ -223,7 +223,7 @@
}
.search_label {
  width: 70px;
  width: 90px;
  font-size: 14px;
  text-align: right;
}