1.外购下单:标签打印功能调整
2.人员:培训计划导入导出添加【培训大类】字段
3.业务管理:报检新增【物料属性】字段选择,其余页面添加【物料属性】查询条件以及数据回显
4.标准库:布局优化,左侧选择树支持横向拖拽动态调整宽度
已修改13个文件
1194 ■■■■■ 文件已修改
src/api/business/productOrder.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/personnel/personnelInfo/tabs/personnelTraining.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionReview/index.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionTask/index.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/index.vue 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/outsourcingFinishProduct/components/printDialog.vue 320 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/outsourcingFinishProduct/index.vue 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productOrder/components/auxiliaryWireCore.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/rawMaterialInspection/index.vue 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/reportPreparation/index.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/performance/manHour/workTimeManagement.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/standard/standardLibrary/index.vue 509 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/productOrder.js
@@ -98,6 +98,14 @@
    params: query
  })
}
//  外购下单成品标签打印信息
export function labelOutsideOrderPrinting(query) {
  return request({
    url: '/insOrder/labelOutsideOrderPrinting',
    method: 'post',
    data: query
  })
}
// 查询成品标签打印信息
export function labelOrderPrinting(query) {
  return request({
src/main.js
@@ -65,7 +65,8 @@
Vue.prototype.HaveJson = (val) => {
  return JSON.parse(JSON.stringify(val));
};
Vue.prototype.javaApi = "http://192.168.21.53:8001/lims";
// Vue.prototype.javaApi = "http://192.168.21.53:8001/lims";
Vue.prototype.javaApi = "http://127.0.0.1:8001";
Vue.prototype.checkPermi = checkPermi;
Vue.prototype.uploadHeader = {
  Authorization: "Bearer " + getToken(),
src/views/CNAS/personnel/personnelInfo/tabs/personnelTraining.vue
@@ -313,6 +313,10 @@
      inDetailPlanTableData: [], // 年度计划明细表表数据
      inDetailPlanColumn: [
        {
          label: '培训大类',
          prop: 'trainingCategory',
          width: '100px',
        },{
          label: '培训目标',
          prop: 'trainingObjectives',
          width: '100px',
src/views/business/inspectionReview/index.vue
@@ -11,6 +11,13 @@
            <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="物料属性" prop="materialProp">
          <el-select clearable size="small" v-model="entity.materialProp" style="width: 100%">
            <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label"
                       :value="dict.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" size="mini" @click="refreshTable">查询</el-button>
          <el-button size="mini" @click="refresh">重置</el-button>
@@ -61,7 +68,7 @@
    onlyoffice,
    limsTable,
  },
  dicts: ["urgency_level", "inspection_task_state"],
  dicts: ["urgency_level", "inspection_task_state","material_prop_type"],
  computed: {
    ...mapGetters(["nickName", "userId"]),
  },
@@ -90,6 +97,21 @@
        },
        { label: "样品名称", prop: "sample", width: "160px" },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          label: "下单类别",
          prop: "typeSource",
          width: "100px",
src/views/business/inspectionTask/index.vue
@@ -13,6 +13,13 @@
                         :value="a.value"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="物料属性" prop="materialProp">
            <el-select clearable size="small" v-model="queryParams.materialProp" style="width: 100%">
              <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label"
                         :value="dict.value">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item>
            <el-button size="mini" type="primary" @click="refreshTable()">查询</el-button>
            <el-button size="mini" @click="refresh()">重置</el-button>
@@ -251,7 +258,7 @@
    viewManHourDia,
    UnPassRetestResult
  },
  dicts: ["urgency_level", "inspection_task_state"],
  dicts: ["urgency_level", "inspection_task_state","material_prop_type"],
  computed: {
    ...mapGetters(["nickName", "userId"]),
  },
@@ -353,6 +360,21 @@
        },
        { label: "样品名称", prop: "sample", width: "160px" },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          label: "下单类别",
          prop: "typeSource",
          width: "100px",
src/views/business/materialOrder/index.vue
@@ -23,35 +23,42 @@
              @keyup.enter.native="goSearch">
            </el-input>
          </el-form-item>
          <el-form-item>
            <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 4"
              :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text"
              @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button>
            <el-button size="mini" type="primary" @click="goSearch">查询</el-button>
            <el-button size="mini" @click="refresh()">重置</el-button>
          </el-form-item>
          <el-form-item label="供应商名称" prop="supplierName"
            v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
                        v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
            <el-input v-model="entity.supplierName" clearable placeholder="请输入" size="small"
              @keyup.enter.native="goSearch">
                      @keyup.enter.native="goSearch">
            </el-input>
          </el-form-item>
          <el-form-item label="物料属性" prop="materialProp">
            <el-select clearable size="small" v-model="entity.materialProp" style="width: 100%">
              <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label"
                         :value="dict.value">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="样品型号" prop="sampleModel"
            v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
                        v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
            <el-input v-model="entity.sampleModel" clearable placeholder="请输入" size="small"
              @keyup.enter.native="goSearch">
                      @keyup.enter.native="goSearch">
            </el-input>
          </el-form-item>
          <el-form-item label="检验状态" prop="inspectStatus"
            v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
                        v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
            <el-select v-model="entity.inspectStatus" clearable size="small" @change="goSearch">
              <el-option v-for="(a, i) in inspectStatusList" :key="i" :label="a.label" :value="a.value"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="报检时间" prop="date" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
            <el-date-picker v-model="entity.date" end-placeholder="结束日期" format="yyyy-MM-dd" placeholder="选择日期" @change="goSearch"
              range-separator="至" size="small" start-placeholder="开始日期" type="daterange" value-format="yyyy-MM-dd">
                            range-separator="至" size="small" start-placeholder="开始日期" type="daterange" value-format="yyyy-MM-dd">
            </el-date-picker>
          </el-form-item>
          <el-form-item>
            <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 4"
              :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text"
              @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button>
            <el-button size="mini" type="primary" @click="goSearch">查询</el-button>
            <el-button size="mini" @click="refresh()">重置</el-button>
          </el-form-item>
        </el-form>
      </div>
@@ -212,15 +219,32 @@
  name: "MaterialOrder",
  // import 引入的组件需要注入到对象中才能使用
  components: { limsTable, DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog },
  dicts: ['material_prop_type'],
  data() {
    // 这里存放数据
    return {
      materialProps: [],
      tableData: [],
      tableLoading: false,
      column: [
        { label: '批号', prop: 'updateBatchNo' },
        { label: '零件号', prop: 'partNo' },
        { label: '零件描述', prop: 'partDesc' },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          dataType: 'tag',
          label: '物料类型',
@@ -301,6 +325,21 @@
        { label: '样品型号', prop: 'sampleModel' },
        { label: '检验人', prop: 'userName' },
        { label: '下发时间', prop: 'sendTime' },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          dataType: 'tag',
          label: '物料类型',
@@ -440,6 +479,21 @@
        },
        { label: '样品型号', prop: 'sampleModel' },
        { label: '检验人', prop: 'userName' },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          dataType: 'tag',
          label: '物料类型',
@@ -627,6 +681,21 @@
        { label: '样品型号', prop: 'sampleModel' },
        { label: '检验人', prop: 'userName' },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          dataType: 'tag',
          label: '物料类型',
          prop: 'isExpire',
@@ -751,6 +820,21 @@
        { label: '样品型号', prop: 'sampleModel' },
        { label: '检验人', prop: 'userName' },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          dataType: 'tag',
          label: '物料类型',
          prop: 'isExpire',
@@ -827,6 +911,7 @@
        date: null,
        beginDeclareDate: null,
        endDeclareDate: null,
        materialProp: null,
      },
      tabList: [
        {
src/views/business/outsourcingFinishProduct/components/printDialog.vue
@@ -1,60 +1,67 @@
<template>
  <div>
    <el-dialog :visible.sync="isShow" title="标签打印" top="5vh" width="600px" @close="$emit('closePrintDialog')">
    <el-dialog title="标签打印" :visible.sync="isShow" width="600px" top="5vh" @close="$emit('closePrintDialog')">
      <div style="width:100%;height: 400px;overflow-y: auto;text-align: left">
        <div class="dia_body">
          <el-checkbox
            v-model="checkAll"
            :indeterminate="isIndeterminate"
            style="margin: 10px 5px;"
            @change="handleCheckAllChange">全选</el-checkbox>
          <el-checkbox-group v-model="checkIndexList" @change="changePrintCode()">
            <el-card v-for="(item, i) in barcodeData" :key="i" class="box-card" style="margin-bottom: 15px; font-size: 16px !important;">
              <el-checkbox :key="i" :label="i" style="position: relative;top:0;left:10px"><br></el-checkbox>
          <el-checkbox style="margin: 10px 5px;" :indeterminate="isIndeterminate" v-model="checkAll"
                       @change="handleCheckAllChange">全选</el-checkbox>
          <el-checkbox-group @change="changePrintCode()" v-model="checkIndexList">
            <el-card class="box-card" v-for="(item, i) in barcodeData" :key="i"
                     style="margin-bottom: 15px; font-size: 16px !important;">
              <el-checkbox :label="i" :key="i" style="position: relative;top:0;left:10px"><br></el-checkbox>
              <div>
                <div class="titleH1" style="text-align: center; margin-bottom: 2px;font-size: 16px">检测中心样品标识卡</div>
                <div style="text-align: center;">
                  <barcode :displayValue="false" :height="34" :value="item.barcode" :width="2"></barcode>
                </div>
                <div style="margin-left: 20px;text-align: left">
                  <div class="item">
                    <span class="full-title">样品名称</span>:
                    <span class="info">{{ item.sampleView }}</span>
                <div style="text-align: center; margin-bottom: 2px;font-size: 22px;font-weight: bold;">成品检测</div>
                <div style="text-align: center; margin-bottom: 2px;font-size: 16px;font-weight: bold;">{{ item.partDesc
                  }}</div>
                <div style="display: flex; align-items: center;">
                  <div style="flex: 0 0 45%; text-align: center;">
                    <vueQr :text="getQrCodeText(item)" :size="160" :margin="2"></vueQr>
                    <div style="margin-top: 5px; font-size: 14px;">
                      <span class="print-person-label">打印人</span>
                      <span style="margin-left: 20px; font-weight: bold;">{{ nickName }}</span>
                    </div>
                  </div>
                  <div class="item">
                    <span class="full-title">生产单位</span>:
                    <span class="info">{{ item.production }}</span>
                  </div>
                  <div class="item2">
                    <span class="full-title">规格型号</span>:
                    <span class="info">{{ item.sampleModel }}</span>
                  </div>
                  <div class="item">
                    <span class="full-title">委托日期</span>:
                    <span class="info">{{ item.sendTime }}</span>
                  </div>
                  <div class="item">
                    <span class="full-title">委托人</span>:
                    <span class="info2">{{ item.prepareUser }}</span>
                    <span class="full-title">检测编号</span>:
                    <span class="info">{{ item.entrustCode }}</span>
                  </div>
                  <div class="item">
                    <span class="full-title">样品数量</span>:
                    <span class="info2">{{ item.testQuantity }}</span>
                  </div>
                  <div style="font-weight: bold;display: flex;align-items: center;">
                    <span class="full-title">样品状态</span>:
                    <el-radio-group v-model="item.insState" v-removeAriaHidden style="margin-top: 7px;margin-left: 4px;">
                      <el-radio :label="0" style="font-weight: bold;margin-right: 7px;">待检</el-radio>
                      <el-radio :label="1" style="font-weight: bold;margin-right: 7px;">在检</el-radio>
                      <el-radio :label="2" style="font-weight: bold;margin-right: 7px;">已检</el-radio>
                    </el-radio-group>
                    <span>
                      <el-radio v-model="item.isLeave"
                                :label="true"
                                size="small" style="margin-left: 14px;margin-top: 3px;" @click.native.prevent="changeIsLeave(item)">留样</el-radio>
                    </span>
                  <div style="flex: 1; margin-left: 10px;text-align: left">
                    <div class="item">
                      <span class="full-title">SN号</span>
                      <span class="info">{{ item.lotBatchNo }}</span>
                    </div>
                    <div class="item">
                      <span class="full-title">绝缘颜色</span>
                      <span class="info">{{ item.insulationColor }}</span>
                    </div>
                    <div class="item2">
                      <span class="full-title">护套颜色</span>
                      <span class="info">{{ item.outerColor }}</span>
                    </div>
                    <div class="item">
                      <span class="full-title">载具编号</span>
                      <span class="info">{{ item.drumNo }}</span>
                    </div>
                    <div class="item">
                      <span class="full-title">起止米标</span>
                      <span class="info">{{ item.startMeterMark }} - {{ item.endMeterMark }}</span>
                    </div>
                    <div class="item">
                      <span class="full-title">长度(km)</span>
                      <span class="info">{{ calcInbondLength(item.startMeterMark, item.endMeterMark) }}</span>
                    </div>
                    <div class="item">
                      <span class="full-title">检测人员</span>
                      <span class="info">{{ item.inspectorName }}</span>
                    </div>
                    <div class="item">
                      <span class="full-title">检测结论</span>
                      <span class="info">{{ formatData(item.insState) }}</span>
                    </div>
                    <div class="item">
                      <span class="full-title">入库时间</span>
                      <span class="info">{{ item.updateTime }}</span>
                    </div>
                    <div class="item">
                      <span class="full-title">零件号</span>
                      <span class="info">{{ item.partNo }}</span>
                    </div>
                  </div>
                </div>
              </div>
@@ -69,49 +76,63 @@
        </el-row>
      </span>
    </el-dialog>
    <div class="el-dialog-body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 20px;right: 10px;z-index: 99999;">
      <div id="printOrder" ref="printOrder" class="printOrder">
        <el-card v-for="(item, i) in checkDataList" :key="i" class="box-card" style="font-size: 0.29cm !important;font-weight: 700;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;">
    <div class="el-dialog-body"
         style="overflow-y: auto;margin-top: 0;position: fixed;top: 20px;right: 10px;z-index: 99999;width: 500px;">
      <div id="printOrder" class="printOrder" ref="printOrder">
        <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i"
                 style="font-size: 0.29cm !important;font-weight: 700;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;">
          <div>
            <div class="titleH1" style="text-align: center;margin-bottom: 1px">检测中心样品标识卡</div>
            <div style="text-align: center;">
              <barcode :displayValue="false" :height="22" :value="item.barcode" :width="1.6"></barcode>
            </div>
            <div style="margin-left: 12px;text-align: left">
              <div class="item">
                <span class="full-title4">样品名称:</span>
                <span class="info4">{{ item.sampleView }}</span>
            <div class="titleH1" style="text-align: center;margin-bottom: 1px">成品检测</div>
            <div class="titleH1" style="text-align: center;margin-bottom: 1px">{{ item.partDesc }}</div>
            <div style="display: flex; align-items: center;">
              <div style="flex: 0 0 45%; text-align: center;">
                <vueQr :text="getQrCodeText(item)" :size="160" :margin="2"></vueQr>
                <div style="margin-top: 5px;">
                  <span class="print-person-label">打印人</span>
                  <span style="margin-left: 20px; font-weight: bold;">{{ nickName }}</span>
                </div>
              </div>
              <div class="item">
                <span class="full-title2">生产单位</span>:
                <span class="info">{{ item.production }}</span>
              </div>
              <div class="item2">
                <span class="full-title4">规格型号:</span>
                <span class="info4">{{ item.sampleModel }}</span>
              </div>
              <div class="item">
                <span class="full-title2">委托日期</span>:
                <span class="info">{{ item.sendTime }}</span>
              </div>
              <div class="item">
                <span class="full-title2">委托人</span>:
                <span class="info3">{{ item.prepareUser }}</span>
                <span class="full-title2">检测编号</span>:
                <span class="info">{{ item.entrustCode }}</span>
              </div>
              <div class="item">
                <span class="full-title2">样品数量</span>:
                <span class="info3">{{ item.testQuantity }}</span>
              </div>
              <div>
                <span class="full-title2">样品状态</span>:
                <span style="white-space: nowrap;margin-left: 2px">
                  待检<span v-if="item.insState!==0" class="scor"></span><span v-if="item.insState===0" class="checked">√</span>
                  在检<span v-if="item.insState!==1" class="scor"></span><span v-if="item.insState===1" class="checked">√</span>
                  已检<span v-if="item.insState!==2" class="scor"></span><span v-if="item.insState===2" class="checked">√</span>
                  留样<span v-if="!item.isLeave" class="scor"></span><span v-if="item.isLeave" class="checked">√</span>
                </span>
              <div style="flex: 1; margin-left: 5px;text-align: left">
                <div class="item">
                  <span class="full-title">SN号</span>
                  <span class="info">{{ item.lotBatchNo }}</span>
                </div>
                <div class="item">
                  <span class="full-title">绝缘颜色</span>
                  <span class="info">{{ item.insulationColor }}</span>
                </div>
                <div class="item2">
                  <span class="full-title">护套颜色</span>
                  <span class="info">{{ item.outerColor }}</span>
                </div>
                <div class="item">
                  <span class="full-title">载具编号</span>
                  <span class="info">{{ item.drumNo }}</span>
                </div>
                <div class="item">
                  <span class="full-title">起止米标</span>
                  <span class="info">{{ item.startMeterMark }} - {{ item.endMeterMark }}</span>
                </div>
                <div class="item">
                  <span class="full-title">长度(km)</span>
                  <span class="info">{{ calcInbondLength(item.startMeterMark, item.endMeterMark) }}</span>
                </div>
                <div class="item">
                  <span class="full-title">检测人员</span>
                  <span class="info">{{ item.inspectorName }}</span>
                </div>
                <div class="item">
                  <span class="full-title">检测结论</span>
                  <span class="info">{{ formatData(item.insState) }}</span>
                </div>
                <div class="item">
                  <span class="full-title">入库时间</span>
                  <span class="info">{{ item.updateTime }}</span>
                </div>
                <div class="item">
                  <span class="full-title">零件号</span>
                  <span class="info">{{ item.partNo }}</span>
                </div>
              </div>
            </div>
          </div>
@@ -123,17 +144,25 @@
<script>
import PrintJS from "print-js";
import {labelOrderPrinting} from "@/api/business/productOrder";
import vueQr from "vue-qr";
import { labelOutsideOrderPrinting } from "@/api/business/productOrder";
import { mapGetters } from "vuex";
export default {
  name: "printDialog",
  // import 引入的组件需要注入到对象中才能使用
  components: {},
  // 2. 在这里注册组件
  components: {
    vueQr
  },
  props: {
    printDialog: {
      type: Boolean,
      default: () => false
    },
  },
  computed: {
    ...mapGetters(["nickName"]),
  },
  data() {
    // 这里存放数据
@@ -158,17 +187,17 @@
        selection.map(m => {
          ids.push(m.id)
        })
        labelOrderPrinting({
          ids: ids
        }).then(res => {
        labelOutsideOrderPrinting({ ids: ids }).then(res => {
          if (res.code === 200 && res.data.length > 0) {
            res.data.forEach(item => {
              console.log('item---', item)
              item.sendTime = item.sendTime && item.sendTime.substring(0, 10)
              item.sampleNumber = item.qtyArrived + item.buyUnitMeas
              this.$set(item, 'barcode', item.entrustCode)
              this.$set(item, 'isLeave', item.insState === '2')
              this.$set(item, 'isLeave', item.labelStatus === '2')
            })
            this.barcodeData = res.data
            console.log('barcodeData---', this.barcodeData)
          }
        })
      } catch (e) {
@@ -176,10 +205,27 @@
      }
    },
    changeIsLeave(item) {
      const index = this.barcodeData.findIndex(val => val.entrustCode === item.entrustCode)
      if (index > -1) {
        this.barcodeData[index].isLeave = !this.barcodeData[index].isLeave
    calcInbondLength(startMeterMark, endMeterMark) {
      let inboundLength = null;
      if ((startMeterMark != null && startMeterMark !== '') && (endMeterMark != null && endMeterMark !== '')) {
        let minus = this.$Big(endMeterMark).minus(this.$Big(startMeterMark));
        inboundLength = Math.abs(minus)
      }
      return inboundLength;
    },
    formatData(params) {
      if (params == 0) {
        return '检验中'
      } else if (params == 1) {
        return '合格'
      } else if (params == 2) {
        return '不合格'
      } else if (params == 3) {
        return '未下单'
      } else if (params == 4) {
        return '让步放行'
      } else {
        return null
      }
    },
    // 全选多选框回调
@@ -197,6 +243,17 @@
    },
    changeType(type) {
      type = type === '1' ? '0' : '1'
    },
    // 生成二维码内容
    getQrCodeText(item) {
      const data = {
        sn_no: item.lotBatchNo,
        vehicle_no: item.drumNo,
        qty_arrived: this.calcInbondLength(item.startMeterMark, item.endMeterMark),
        lot_batch_no: item.lotBatchNo,
        part_no: item.partNo,
      };
      return JSON.stringify(data, null, 2);
    },
    //选择要打印的二维码
    changePrintCode() {
@@ -238,7 +295,7 @@
          }
          @media print{
            width: 400px;
            height: 75px;
            height: 800px;
            margin:0;
          }`,
        onPrintDialogClose: this.erexcel = false,
@@ -261,56 +318,70 @@
<style scoped>
.item {
  margin-bottom: 4px;
  margin-bottom: 2px;
  line-height: 1.2;
}
.item2 {
  margin-bottom: 8px;
  margin-bottom: 2px;
  vertical-align: top;
  line-height: 1.2;
}
.full-title {
  display: inline-block;
  width: 80px;
  width: 70px;
  text-align-last: justify;
  text-align: justify;
  font-weight: bold;
}
/* For the print section which might use smaller font */
.full-title2 {
  display: inline-block;
  width: 50px;
  width: 60px;
  text-align-last: justify;
  text-align: justify;
  font-weight: bold;
}
.full-title4 {
  display: inline-block;
  width: 53px;
  width: 60px;
  text-align-last: justify;
  text-align: justify;
  vertical-align: top;
  font-weight: bold;
}
.info {
  margin-left: 2px;
  margin-left: 15px;
  font-weight: bold;
}
.info2 {
  margin-left: 2px;
  margin-right: 30px;
  width: 80px;
  margin-left: 15px;
  margin-right: 10px;
  width: auto;
  display: inline-block;
  font-weight: bold;
}
.info3 {
  margin-left: 2px;
  margin-right: 8px;
  width: 44px;
  margin-left: 15px;
  margin-right: 10px;
  width: auto;
  display: inline-block;
  font-weight: bold;
}
.info4 {
  display: inline-block;
  margin-left: 2px;
  margin-left: 15px;
  white-space: normal;
  width: 260px;
  width: 200px;
  font-weight: bold;
  vertical-align: top;
}
.checkboxInfo {
@@ -331,17 +402,26 @@
.checked {
  margin-right: 14px;
  margin-left: 4px;
  font-weight: bold;
}
>>> .el-checkbox {
.print-person-label {
  display: inline-block;
  width: 50px;
  text-align-last: justify;
  text-align: justify;
  font-weight: bold;
}
>>>.el-checkbox {
  margin-right: 10px;
}
>>> .el-card {
>>>.el-card {
  border: none;
}
>>> .el-card__body {
>>>.el-card__body {
  padding: 4px 2px 6px 14px;
}
</style>
src/views/business/outsourcingFinishProduct/index.vue
@@ -23,19 +23,18 @@
                      @keyup.enter.native="goSearch">
            </el-input>
          </el-form-item>
          <el-form-item label="物料属性" prop="materialProp">
            <el-select clearable size="small" v-model="entity.materialProp" style="width: 100%">
              <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label"
                         :value="dict.value">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="供应商名称" prop="supplierName" >
            <el-input v-model="entity.supplierName" clearable placeholder="请输入" size="small"
                      @keyup.enter.native="goSearch">
            </el-input>
          </el-form-item>
          <el-form-item>
            <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 4"
                       :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text"
                       @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button>
            <el-button size="mini" type="primary" @click="goSearch">查询</el-button>
            <el-button size="mini" @click="refresh()">重置</el-button>
          </el-form-item>
          <el-form-item label="样品型号" prop="sampleModel"
                        v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
            <el-input v-model="entity.sampleModel" clearable placeholder="请输入" size="small"
@@ -52,6 +51,13 @@
            <el-date-picker v-model="entity.date" end-placeholder="结束日期" format="yyyy-MM-dd" placeholder="选择日期" @change="goSearch"
                            range-separator="至" size="small" start-placeholder="开始日期" type="daterange" value-format="yyyy-MM-dd">
            </el-date-picker>
          </el-form-item>
          <el-form-item>
            <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 4"
                       :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text"
                       @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button>
            <el-button size="mini" type="primary" @click="goSearch">查询</el-button>
            <el-button size="mini" @click="refresh()">重置</el-button>
          </el-form-item>
        </el-form>
      </div>
@@ -176,7 +182,7 @@
</template>
<script>
import PrintDialog from "@/views/business/materialOrderComponents/materialOrder/printDialog.vue";
import PrintDialog from "@/views/business/outsourcingFinishProduct/components/printDialog.vue";
import ShowInfo from "@/views/business/materialOrderComponents/materialOrder/showInfo.vue";
import DataLookVisible from "@/views/business/materialOrderComponents/materialOrder/dataLookVisible.vue";
import FilesLookVisible from "@/views/business/materialOrderComponents/materialOrder/filesLookVisible.vue";
@@ -197,6 +203,7 @@
export default {
  name: "MaterialOrder",
  dicts: ['material_prop_type'],
  // import 引入的组件需要注入到对象中才能使用
  components: { limsTable, DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog },
  data() {
@@ -208,6 +215,21 @@
        { label: '批号', prop: 'updateBatchNo' },
        { label: '零件号', prop: 'partNo' },
        { label: '零件描述', prop: 'partDesc' },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          dataType: 'tag',
          label: '物料类型',
@@ -288,6 +310,21 @@
        { label: '样品型号', prop: 'sampleModel' },
        { label: '检验人', prop: 'userName' },
        { label: '下发时间', prop: 'sendTime' },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          dataType: 'tag',
          label: '物料类型',
@@ -427,6 +464,21 @@
        },
        { label: '样品型号', prop: 'sampleModel' },
        { label: '检验人', prop: 'userName' },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          dataType: 'tag',
          label: '物料类型',
@@ -599,6 +651,21 @@
        { label: '样品型号', prop: 'sampleModel' },
        { label: '检验人', prop: 'userName' },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          dataType: 'tag',
          label: '物料类型',
          prop: 'isExpire',
@@ -658,6 +725,7 @@
        date: null,
        beginDeclareDate: null,
        endDeclareDate: null,
        materialProp: null
      },
      tabList: [
        {
src/views/business/productOrder/components/auxiliaryWireCore.vue
@@ -16,6 +16,10 @@
              <el-option v-for="item in quantityList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="型号参数" prop="modelNum">
            <el-input v-model="auxiliaryWireCore.modelNum" placeholder="非必填" size="small"
                      @input="methodChange(auxiliaryWireCore.standardMethodListId)"></el-input>
          </el-form-item>
          <el-form-item label="检验标准" prop="standardMethodListId">
            <el-select v-model="auxiliaryWireCore.standardMethodListId" disabled placeholder="请选择检验标准"
                       size="small"
@@ -308,7 +312,8 @@
      const cores = this.sampleSelectionList[0].cores
      const conductorMaterial = this.sampleSelectionList[0].conductorMaterial
      const conductorType = this.sampleSelectionList[0].conductorType
      const modelNum = this.sampleSelectionList[0].modelNum
      // const modelNum = this.sampleSelectionList[0].modelNum
      const modelNum = this.auxiliaryWireCore.modelNum
      selectStandardProductList({
        model: this.$parent.addObj.model ? this.$parent.addObj.model : model,
        modelNum: modelNum,
src/views/business/rawMaterialInspection/index.vue
@@ -97,6 +97,11 @@
            <el-option v-for="(item,index) in orderTypeList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item class="declareObj-form-item" label="物料属性:" prop="materialProp">
          <el-select v-model="declareBatchObj.materialProp" clearable size="small">
            <el-option v-for="(item,index) in materialPropList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-row>
@@ -157,6 +162,11 @@
        <el-form-item class="declareObj-form-item" label="销售订单分类:" prop="orderType">
          <el-select v-model="declareObj.orderType" clearable size="small">
            <el-option v-for="(item,index) in orderTypeList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item class="declareObj-form-item" label="物料属性:" prop="materialProp">
          <el-select v-model="declareObj.materialProp" clearable size="small">
            <el-option v-for="(item,index) in materialPropList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
          </el-select>
        </el-form-item>
      </el-form>
@@ -264,9 +274,20 @@
        </el-table>
      </div>
      <span slot="footer" class="dialog-footer">
    <el-button @click="resetOrderSplitData()" :disabled="confirmSplitOrderLoading">取 消</el-button>
    <el-button type="primary" @click="confirmSplitOrder()" :loading="confirmSplitOrderLoading">确 定</el-button>
  </span>
        <el-button @click="resetOrderSplitData()" :disabled="confirmSplitOrderLoading">取 消</el-button>
        <el-button type="primary" @click="beforeConfirmSplitOrder()" :loading="confirmSplitOrderLoading">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog
      title="选择物料属性"
      :visible.sync="materialPropVisible"
      width="15%">
      <el-select placeholder="请选择物料属性" v-model="declareObj.materialProp" clearable size="small">
        <el-option v-for="(item,index) in materialPropList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
      </el-select>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="confirmSplitOrder">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
@@ -301,12 +322,17 @@
  data() {
    // 这里存放数据
    return {
      materialPropVisible:false,
      declareBatchObj:{
        orderType:''
        orderType:'',
        materialProp:''
      },
      declareObjBatchRules:{
        orderType: [
          { required: true, message: '请选择销售订单分类', trigger: 'change' }
        ],
        materialProp: [
          { required: true, message: '请选择物料属性', trigger: 'change' }
        ],
      },
      confirmSplitOrderLoading: false,
@@ -580,6 +606,7 @@
        buyUnitMeas: '', // 单位
        isExpire: '', // 单位
        orderType: null, // 销售订单分类
        materialProp: null, // 物料属性
      },
      componentData: { // 表格数据
        updateBatchNo: null,
@@ -629,6 +656,9 @@
        orderType: [
          { required: true, message: '请选择销售订单分类', trigger: 'change' }
        ],
        materialProp: [
          { required: true, message: '请选择物料属性', trigger: 'change' }
        ],
      },
      tabList: [
        {
@@ -664,11 +694,13 @@
      outLoading: false,
      upLoading: false,
      orderTypeList: [],
      materialPropList: [],
    }
  },
  mounted() {
    this.refreshTable()
    this.getOrderTypeList()
    this.getMaterialPropList()
  },
  // 方法集合
  methods: {
@@ -676,6 +708,16 @@
      getDicts('inspection_type').then(res=>{
        if(res.code === 200){
          this.orderTypeList = res.data
        }
      }).catch(error=>{
        console.error(error)
      })
    },
    //获取物料属性字典项
    getMaterialPropList(){
      getDicts('material_prop_type').then(res=>{
        if(res.code === 200){
          this.materialPropList = res.data
        }
      }).catch(error=>{
        console.error(error)
@@ -691,16 +733,31 @@
        this.refreshTable()
      })
    },
    //确认拆分订单前,选择订单的物料属性
    beforeConfirmSplitOrder(){
      console.log(this.declareObj.materialProp)
      if(!this.declareObj.materialProp){
        this.materialPropVisible = true
      }else{
        this.confirmSplitOrder()
      }
    },
    confirmSplitOrder(){
      if(this.orderSplitDetailData.length===0){
        this.$message.error('请先导入拆分数据')
        return
      }
      if(!this.declareObj.materialProp){
        this.$message.warning("请选择物料属性")
        return
      }
      this.materialPropVisible = false
      this.confirmSplitOrderLoading = true
      let requestData = {
        ifsId: this.declareObj.id,
        splitDetailList: this.orderSplitDetailData,
        pushToMes: this.pushToMes
        pushToMes: this.pushToMes,
        materialProp: this.declareObj.materialProp
      }
      confirmSplitOrder(requestData).then(res=>{
        if(res.code===200 && res.data){
@@ -945,7 +1002,8 @@
          this.declareDialogSVisible = true
          inspectionReport({
            ids: ids,
            orderType: this.declareBatchObj.orderType
            orderType: this.declareBatchObj.orderType,
            materialProp: this.declareBatchObj.materialProp
          }).then(res => {
            if (res.code === 200) {
              this.declareDialogSVisible = false
@@ -1004,7 +1062,8 @@
            inspectionReportOne({
              id: this.declareObj.id,
              updateBatchNo: this.declareObj.updateBatchNo,
              orderType: this.declareObj.orderType
              orderType: this.declareObj.orderType,
              materialProp: this.declareObj.materialProp
            }).then(res => {
              if (res.code === 200) {
                this.declareDialogVisible = false
src/views/business/reportPreparation/index.vue
@@ -16,6 +16,13 @@
            <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="物料属性" prop="materialProp">
          <el-select clearable size="small" v-model="entity.materialProp" style="width: 100%">
            <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label"
                       :value="dict.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="检验类别" prop="orderType">
          <el-select v-model="entity.orderType" clearable size="small" @change="refreshTable()">
            <el-option v-for="(a, i) in orderTypeList" :key="i" :label="a.label" :value="a.value"></el-option>
@@ -213,6 +220,7 @@
export default {
  name: 'ReportPreparation',
  components: { limsTable, onlyoffice },
  dicts: ['material_prop_type'],
  data() {
    return {
      entity: {
@@ -220,6 +228,7 @@
        code: null,
        typeSource: null,
        orderType: null,
        materialProp: null
      },
      page: {
        current: 1,
@@ -363,6 +372,21 @@
          },
        },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          label: "检验类型",
          prop: "orderType",
          width: "100px",
src/views/performance/manHour/workTimeManagement.vue
@@ -681,6 +681,7 @@
          this.formData.approvedWorkingHour = "";
          this.formData.nonproductiveTime = "";
          this.formData.auxiliaryProject = "";
          this.addVisible = false;
          this.refreshTable("page");
          // this.collectWorkingHours();
        });
src/views/standard/standardLibrary/index.vue
@@ -1,27 +1,28 @@
<template>
  <div class="standard">
    <div class="left">
      <el-row>
        <el-col :span="20">
          <el-input v-model="search" clearable placeholder="输入关键字进行搜索" size="small" style="margin-bottom: 5px"
            suffix-icon="el-icon-search" @blur="searchFilter" @clear="searchFilter"></el-input>
        </el-col>
        <el-col v-if="checkPermi(['standard:standardLibrary:add'])" :span="4"
          style="text-align: center; line-height: 30px">
          <el-button circle icon="el-icon-plus" size="mini" type="primary" @click="addDia = true"></el-button>
        </el-col>
      </el-row>
      <el-tree ref="tree" v-loading="treeLoad" :allow-drop="allowDrop" :data="list"
        :default-expanded-keys="expandedKeys" :draggable="true" :filter-node-method="filterNode"
        :props="{ children: 'children', label: 'label' }" highlight-current node-key="label" style="
          height: calc(100% - 30px);
          overflow-y: scroll;
          scrollbar-width: none;
        " @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">
  <div class="app-container">
    <el-row :gutter="20">
      <splitpanes :horizontal="this.$store.getters.device === 'mobile'" class="default-theme">
        <!--部门数据-->
        <pane size="12">
          <el-col>
            <div class="head-container addButton">
              <el-input v-model="search" clearable placeholder="输入关键字进行搜索" size="small" style="margin-bottom: 5px"
                        suffix-icon="el-icon-search" @keydown.enter.native="searchFilter" @blur="searchFilter" @clear="searchFilter"></el-input>
              <el-button circle icon="el-icon-plus" size="mini" type="primary" @click="addDia = true"></el-button>
            </div>
            <div class="head-container">
              <el-tree ref="tree" v-loading="treeLoad" :allow-drop="allowDrop" :data="list"
                       :default-expanded-keys="expandedKeys" :draggable="true" :filter-node-method="filterNode"
                       :props="{ children: 'children', label: 'label' }" highlight-current node-key="label"
                       style="
                        height: calc(100vh - 173px);
                        overflow-y: scroll;
                        scrollbar-width: none;"
                       @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">
              <span>
                <i :class="`node_i ${data.children != undefined
                  ? data.code === '[1]'
@@ -31,162 +32,169 @@
                  }`"></i>
                {{ data.label }}
              </span>
            </el-col>
            <el-col v-if="
                    </el-col>
                    <el-col v-if="
              checkPermi(['standard:standardLibrary:delStandardTree']) &&
              (node.data.children === null ||
                node.data.children === undefined)
            " :span="2" style="text-align: right">
              <el-button size="mini" type="text" @click.stop="editTreeName(node.data)">
                <i class="el-icon-edit"></i>
              </el-button>
            </el-col>
            <el-col v-if="
                      <el-button size="mini" type="text" @click.stop="editTreeName(node.data)">
                        <i class="el-icon-edit"></i>
                      </el-button>
                    </el-col>
                    <el-col v-if="
              checkPermi(['standard:standardLibrary:delStandardTree']) &&
              (node.data.children === null ||
                node.data.children === undefined)
            " :span="2" style="text-align: right">
              <el-button size="mini" type="text" @click.stop="remove(node, data)">
                <i class="el-icon-delete"></i>
              </el-button>
            </el-col>
          </el-row>
        </div>
      </el-tree>
    </div>
    <div class="right">
      <el-row class="title" style="width: 100%">
        <el-col :span="20" style="font-size: 14px; color: #999">{{
          selectTree
        }}</el-col>
        <el-col :span="4">
          <el-button v-if="isShowCopy" size="small" style="position: absolute; right: 20px; top: 1px" type="primary"
            @click="openCopyDia">批量复制</el-button>
        </el-col>
      </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">
          <el-table-column label="标准编号" prop="code" show-overflow-tooltip width="200">
            <template slot-scope="scope">
                      <el-button size="mini" type="text" @click.stop="remove(node, data)">
                        <i class="el-icon-delete"></i>
                      </el-button>
                    </el-col>
                  </el-row>
                </div>
              </el-tree>
            </div>
          </el-col>
        </pane>
        <!--用户数据-->
        <pane size="88">
          <div class="search_form">
            <div style="height:37px">
              <p style="font-size: 14px; color: #999;margin-left: 10px">{{ selectTree }}</p>
            </div>
            <div class="options_button">
              <el-button v-if="isShowCopy" size="small" style="position: absolute; right: 20px; top: 1px" type="primary"
                         @click="openCopyDia">批量复制</el-button>
            </div>
          </div>
          <el-col>
            <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">
                <el-table-column label="标准编号" prop="code" show-overflow-tooltip width="200">
                  <template slot-scope="scope">
              <span style="color: red; font-size: 14px">{{
                scope.row["code"]
              }}</span>
            </template>
          </el-table-column>
          <el-table-column label="标准名称" prop="name" show-overflow-tooltip></el-table-column>
          <el-table-column label="备注" prop="remark" show-overflow-tooltip></el-table-column>
        </el-table>
      </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">
          <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>
          <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass"
            show-overflow-tooltip></el-table-column>
          <el-table-column label="检验项" min-width="140" prop="inspectionItem" show-overflow-tooltip></el-table-column>
          <el-table-column label="检验项子项" min-width="140" prop="inspectionItemSubclass"
            show-overflow-tooltip></el-table-column>
          <el-table-column label="子实验室" prop="sonLaboratory" show-overflow-tooltip width="130"></el-table-column>
          <el-table-column label="要求值" min-width="200px" prop="ask">
            <template slot-scope="scope">
              <el-input v-if="
                  scope.row["code"]
                }}</span>
                  </template>
                </el-table-column>
                <el-table-column label="标准名称" prop="name" show-overflow-tooltip></el-table-column>
                <el-table-column label="备注" prop="remark" show-overflow-tooltip></el-table-column>
              </el-table>
            </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%;height:calc(100% - 220px)"
                        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>
                <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass"
                                 show-overflow-tooltip></el-table-column>
                <el-table-column label="检验项" min-width="140" prop="inspectionItem" show-overflow-tooltip></el-table-column>
                <el-table-column label="检验项子项" min-width="140" prop="inspectionItemSubclass"
                                 show-overflow-tooltip></el-table-column>
                <el-table-column label="子实验室" prop="sonLaboratory" show-overflow-tooltip width="130"></el-table-column>
                <el-table-column label="要求值" min-width="200px" prop="ask">
                  <template slot-scope="scope">
                    <el-input v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求值" size="small"
                type="textarea" @change="(value) => upStandardProductList(value, scope.row.id)"></el-input>
              <span v-else>{{ scope.row.ask }}</span>
            </template>
          </el-table-column>
          <el-table-column label="要求描述" min-width="220px" prop="tell">
            <template slot-scope="scope">
              <el-input v-if="
                              type="textarea" @change="(value) => upStandardProductList(value, scope.row.id)"></el-input>
                    <span v-else>{{ scope.row.ask }}</span>
                  </template>
                </el-table-column>
                <el-table-column label="要求描述" min-width="220px" prop="tell">
                  <template slot-scope="scope">
                    <el-input v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求描述"
                size="small" type="textarea" @change="(value) => upStandardProductListOfTell(value, scope.row.id)
                              size="small" type="textarea" @change="(value) => upStandardProductListOfTell(value, scope.row.id)
                  "></el-input>
              <span v-else>{{ scope.row.ask }}</span>
            </template>
          </el-table-column>
          <el-table-column label="试验方法" prop="method" width="200">
            <template slot-scope="scope">
              <el-select v-if="
                    <span v-else>{{ scope.row.ask }}</span>
                  </template>
                </el-table-column>
                <el-table-column label="试验方法" prop="method" width="200">
                  <template slot-scope="scope">
                    <el-select v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.methodS" clearable placeholder="试验方法" size="small" @change="(value) => upStandardProductListOfMethodS(value, scope.row.id)
                ">
                <el-option v-for="(a, i) in scope.row.method &&
                      <el-option v-for="(a, i) in scope.row.method &&
                  JSON.parse(scope.row.method)" :key="i" :label="a" :value="a"></el-option>
              </el-select>
              <span v-else>{{ scope.row.methodS }}</span>
            </template>
          </el-table-column>
          <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-select v-if="
                    </el-select>
                    <span v-else>{{ scope.row.methodS }}</span>
                  </template>
                </el-table-column>
                <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip>
                  <template slot-scope="scope">
                    <el-select v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.radius" clearable placeholder="条件" size="small" @change="(value) => upStandardProductListOfRadius(value, scope.row.id)
                ">
                <el-option v-for="(a, i) in scope.row.radiusList &&
                      <el-option v-for="(a, i) in scope.row.radiusList &&
                  JSON.parse(scope.row.radiusList)" :key="i" :label="a" :value="a"></el-option>
              </el-select>
              <span v-else>{{ scope.row.radius }}</span>
            </template>
          </el-table-column>
          <el-table-column label="计量单位" prop="unit" show-overflow-tooltip width="100"></el-table-column>
          <el-table-column label="单价(元)" prop="price" width="120">
            <template slot-scope="scope">
              <el-input v-if="
                    </el-select>
                    <span v-else>{{ scope.row.radius }}</span>
                  </template>
                </el-table-column>
                <el-table-column label="计量单位" prop="unit" show-overflow-tooltip width="100"></el-table-column>
                <el-table-column label="单价(元)" prop="price" width="120">
                  <template slot-scope="scope">
                    <el-input v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.price" placeholder="单价(元)" size="small" @change="(value) => upStandardProductListOfPrice(value, scope.row.id)
                ">
              </el-input>
              <span v-else>{{ scope.row.price }}</span>
            </template>
          </el-table-column>
          <el-table-column label="工时系数" prop="manHour" width="120">
            <template slot-scope="scope">
              <el-input v-if="
                    </el-input>
                    <span v-else>{{ scope.row.price }}</span>
                  </template>
                </el-table-column>
                <el-table-column label="工时系数" prop="manHour" width="120">
                  <template slot-scope="scope">
                    <el-input v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.manHour" placeholder="单价(元)" size="small" @change="(value) => upStandardProductListOfManHour(value, scope.row.id)
                ">
              </el-input>
              <span v-else>{{ scope.row.manHour }}</span>
            </template>
          </el-table-column>
          <el-table-column label="工时分组" prop="manHourGroup" show-overflow-tooltip width="100"></el-table-column>
          <el-table-column label="模板" prop="templateId" width="200">
            <template slot-scope="scope">
              <el-select v-model="scope.row.templateId" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct'])
                    </el-input>
                    <span v-else>{{ scope.row.manHour }}</span>
                  </template>
                </el-table-column>
                <el-table-column label="工时分组" prop="manHourGroup" show-overflow-tooltip width="100"></el-table-column>
                <el-table-column label="模板" prop="templateId" width="200">
                  <template slot-scope="scope">
                    <el-select v-model="scope.row.templateId" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct'])
                " filterable size="small" @change="(value) =>
                  upStandardProductListOfTemplate(value, scope.row.id)
                  ">
                <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option>
              </el-select>
            </template>
          </el-table-column>
          <el-table-column label="区间" prop="section" show-overflow-tooltip width="120"></el-table-column>
          <el-table-column label="操作" prop="section" width="160">
            <template slot-scope="scope">
              <el-button type="text" @click="sectionUp(scope.row)" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct'])
                      <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option>
                    </el-select>
                  </template>
                </el-table-column>
                <el-table-column label="区间" prop="section" show-overflow-tooltip width="120"></el-table-column>
                <el-table-column label="操作" prop="section" width="160">
                  <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'])
                    <el-button type="text" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct'])
                " @click="bindSupplierDensitySecond(scope.row)">绑定厂家</el-button>
            </template>
          </el-table-column>
        </el-table>
        <!-- <el-pagination :current-page="currentPage" :page-size="300" :total="total" layout="total"
          style="position: absolute; right: 16px; bottom: 1px" @current-change="handleCurrentChange">
        </el-pagination> -->
        <p style="text-align: right;margin-right: 20px;color: #333;">共{{ total }}条</p>
      </el-row>
    </div>
                  </template>
                </el-table-column>
              </el-table>
              <!-- <el-pagination :current-page="currentPage" :page-size="300" :total="total" layout="total"
                style="position: absolute; right: 16px; bottom: 1px" @current-change="handleCurrentChange">
              </el-pagination> -->
              <p style="text-align: right;margin-right: 20px;color: #333;">共{{ total }}条</p>
            </el-row>
          </el-col>
        </pane>
      </splitpanes>
    </el-row>
    <el-dialog :visible.sync="addDia" title="分类添加" width="400px">
      <div class="body">
@@ -196,7 +204,7 @@
          </el-col>
          <el-col :offset="1" :span="16">
            <el-input v-model="addOb.model" clearable placeholder="请输入型号" size="small"
              @keyup.enter.native="addStandardTree"></el-input>
                      @keyup.enter.native="addStandardTree"></el-input>
          </el-col>
        </el-row>
      </div>
@@ -213,7 +221,7 @@
          </el-col>
          <el-col :offset="1" :span="16">
            <el-input v-model="addOb.model" clearable placeholder="请输入型号" size="small"
              @keyup.enter.native="updateStandardTree"></el-input>
                      @keyup.enter.native="updateStandardTree"></el-input>
          </el-col>
        </el-row>
      </div>
@@ -246,7 +254,7 @@
          <el-table-column align="center" label="要求描述">
            <template slot-scope="scope">
              <el-input v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 2 }" clearable placeholder="要求描述"
                size="small" type="textarea"></el-input>
                        size="small" type="textarea"></el-input>
            </template>
          </el-table-column>
          <el-table-column align="center" label="导体材质">
@@ -272,7 +280,7 @@
          <el-table-column align="center" label="操作" width="70">
            <template slot-scope="scope">
              <el-button circle icon="el-icon-minus" size="mini" type="danger"
                @click="sectionList.splice(scope.$index, 1)"></el-button>
                         @click="sectionList.splice(scope.$index, 1)"></el-button>
            </template>
          </el-table-column>
        </el-table>
@@ -284,11 +292,11 @@
      </span>
    </el-dialog>
    <bindSupplierDensityDialogAsk v-if="bindSupplierDensityDialog"
      :bindSupplierDensityDialog="bindSupplierDensityDialog" :currentRow="currentSupplierDensityRow"
      @closeBindPartDialog="closeBindSupplierDensityDialog">
                                  :bindSupplierDensityDialog="bindSupplierDensityDialog" :currentRow="currentSupplierDensityRow"
                                  @closeBindPartDialog="closeBindSupplierDensityDialog">
    </bindSupplierDensityDialogAsk>
    <BatchCopy v-if="batchCopyDia" ref="BatchCopy" :selectTree1="selectTree" :standardId="standardId"
      @refreshList="refreshList"></BatchCopy>
               @refreshList="refreshList"></BatchCopy>
  </div>
</template>
@@ -316,12 +324,17 @@
} from "@/api/standard/standardLibrary";
import bindSupplierDensityDialogAsk from "./components/bindSupplierDensityDialogAsk.vue";
import BatchCopy from "./components/BatchCopy.vue";
import { Splitpanes, Pane } from "splitpanes";
import "splitpanes/dist/splitpanes.css";
export default {
  name: 'StandardLibrary',
  components: {
    BatchCopy,
    bindSupplierDensityDialogAsk,
    draggable,
    Splitpanes,
    Pane
  },
  dicts: ["sys_factory", "sys_sub_lab", "sys_samp_type"],
  data() {
@@ -502,9 +515,10 @@
      if (!value) {    //如果数据为空,则返回true,显示所有的数据项
        return true
      }
      return data.label.indexOf(value) !== -1;
      // 查询列表是否有匹配数据,将值小写,匹配英文数据
      let val = value.toLowerCase()
      return this.chooseNode(val, data, node) // 调用过滤二层方法
      // let val = value.toLowerCase()
      // return this.chooseNode(val, data, node) // 调用过滤二层方法
    },
    // 过滤父节点 / 子节点 (如果输入的参数是父节点且能匹配,则返回该节点以及其下的所有子节点;如果参数是子节点,则返回该节点的父节点。name是中文字符,enName是英文字符.
    chooseNode (value, data, node) {
@@ -700,10 +714,10 @@
            .children.find((a) => a.label == this.addOb.sampleType)
            .children.find((a) => a.label == this.addOb.sample)
            .children.push({
              code: "[5]",
              label: this.addOb.model,
              value: this.addOb.model,
            });
            code: "[5]",
            label: this.addOb.model,
            value: this.addOb.model,
          });
          this.addLoad = false;
        })
        .catch((e) => {
@@ -1207,25 +1221,52 @@
  },
};
</script>
<style scoped>
.standard {
  padding-top: 10px;
<style scoped lang="scss">
.search_form {
  display: flex;
  height: calc(100vh - 90px);
  justify-content: space-between;
  .options_button {
    margin-top: 3px;
  }
}
.left {
  width: 330px;
  height: calc(100% - 40px - 10px);
  background-color: white;
  padding: 15px;
.avatar-uploader ::v-deep .el-upload {
  border: 1px dashed #666666;
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
}
.avatar-uploader ::v-deep .el-upload:hover {
  border-color: #409EFF;
}
.avatar-uploader-icon {
  font-size: 20px;
  color: #8c939d;
  width: 90px;
  height: 90px;
  line-height: 90px;
  text-align: center;
}
.avatar {
  width: 90px;
  height: 90px;
  display: block;
}
.addButton {
  display: flex;
  align-items: flex-start;
}
.custom-tree-node {
  width: 100%;
  line-height: 32px;
}
.custom-tree-node .el-icon-delete {
  color: #3a7bfa;
  opacity: 0;
@@ -1250,28 +1291,9 @@
  color: orange;
  font-size: 18px;
}
.right {
  margin-left: 5px;
  width: calc(100% - 350px);
  height: calc(100% - 40px);
}
.right .title {
  height: 34px;
  line-height: 34px;
  padding: 0 10px;
  background-color: white;
}
.standard_table {
  border-top: 1px solid #ebeef5;
  background-color: white;
}
.product_table {
  border-top: 1px solid #ebeef5;
  height: calc(100% - 235px);
  height: calc(100vh - 398px);
  margin-top: 5px;
  background-color: white;
  user-select: none;
@@ -1279,114 +1301,5 @@
.product_table .el-table {
  height: calc(100% - 35px) !important;
}
.sort {
  width: 80% !important;
  overflow: hidden;
}
>>>.el-table__body-wrapper {
  height: calc(100% - 46px) !important;
}
>>>.header-class {
  height: 40px !important;
}
>>>.header-class th.el-table__cell>.cell {
  line-height: 20px !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
>>>.el-table__row {
  height: 35px !important;
}
.search {
  border-bottom: 1px solid #ebeef5;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  box-sizing: border-box;
  padding-bottom: 10px;
}
.search-item {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}
.search-item .el-row {
  display: flex;
  align-items: center;
}
.search-item .el-col {
  margin-left: 0;
}
.more-edit .dialog-footer {
  position: absolute;
  top: 15px;
  right: 70px;
}
>>>.is-disabled .el-textarea__inner {
  background: rgba(0, 0, 0, 0.05) !important;
}
</style>
<style scoped>
.standard .el-tree-node__content {
  height: 32px;
  font-size: 14px;
  border-radius: 2px;
}
.standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
  color: #3a7bfa;
}
.standard .has-gutter .el-table__cell .cell {
  line-height: 34px;
  background-color: #f8f8f8;
}
.standard .has-gutter .el-table__cell {
  background-color: #fafafa !important;
}
.standard .standard_table .el-table__row .cell {
  font-size: 14px;
}
.standard .el-table .warning-row .cell {
  color: #bababa;
}
.standard .el-table-filter__list {
  max-height: 400px;
  overflow-y: auto;
}
.standard .el-upload {
  width: 100%;
}
.standard .el-upload-dragger {
  width: 100%;
}
.standard .handleBtn.is-disabled .el-upload:focus {
  color: #c0c4cc !important;
}
.standard .avatar-uploader .el-upload {
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
}
</style>