licp
2024-12-20 d975fc4756806f5b51f006c19c33571b9b8c0b3b
src/components/view/b2-standard.vue
@@ -5,7 +5,7 @@
  }
  .left {
    width: 270px;
    width: 330px;
    height: calc(100% - 40px - 10px);
    background-color: white;
    padding: 15px;
@@ -33,7 +33,7 @@
  .right {
    margin-left: 5px;
    width: calc(100% - 305px);
    width: calc(100% - 365px);
    height: calc(100% - 40px);
  }
@@ -190,7 +190,7 @@
        style="height:calc(100% - 30px);overflow-y: scroll;scrollbar-width: none;">
        <div class="custom-tree-node" slot-scope="{ node, data }">
          <el-row style="width: 100%;">
            <el-col :span="21" :class="{sort:node.level>3}" :title="data.label">
            <el-col :span="21" :class="{sort:node.level>3}" :title="data.label" style="text-align: left;">
              <span>
                <i :class="`node_i ${data.children != undefined ? (data.code==='[1]'?'el-icon-folder-opened':'el-icon-folder') : 'el-icon-tickets'}`"></i>
                {{ data.label }}
@@ -208,6 +208,7 @@
    <div class="right">
      <el-row class="title" style="width: 100%;">
        <el-col :span="20" style="font-size: 14px;color: #999;">{{selectTree}}</el-col>
        <el-button size="small" type="primary" style="position: absolute;right: 170px;top: 1px;" @click="handleDown" v-if="inExcelOfTreePower" :loading="outLoading">导出</el-button>
        <el-button size="small" type="primary" style="position: absolute;right: 100px;top: 1px;" @click="uploadDia = true" v-if="inExcelOfTreePower">导入</el-button>
        <el-button size="small" type="primary" @click="handleMore" style="position: absolute;right: 5px;top: 1px;"
          v-if="upStandardProduct">批量编辑</el-button>
@@ -231,7 +232,10 @@
          @select="upProductSelect" @select-all="handleAll" class="productTable" header-row-class-name="header-class">
          <el-table-column type="selection" width="50">
          </el-table-column>
          <el-table-column prop="sample" label="产品" min-width="100" show-overflow-tooltip></el-table-column>
          <el-table-column prop="model" label="型号" min-width="100" show-overflow-tooltip></el-table-column>
          <el-table-column prop="inspectionItemClass" v-if="PROJECT === '装备电缆'" label="检验项分类" min-width="140" show-overflow-tooltip></el-table-column>
          <el-table-column prop="inspectionItemClassEn" v-if="PROJECT === '装备电缆'" label="检验项分类(EN)" min-width="140" show-overflow-tooltip></el-table-column>
          <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip></el-table-column>
          <!-- <el-table-column prop="inspectionItemClassify" label="检验项类型" width="120" show-overflow-tooltip></el-table-column> -->
          <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140"
@@ -428,6 +432,7 @@
            header-row-class-name="header-class" :row-key="row=>row.id" @filter-change="filterHandler" highlight-current-row>
            <el-table-column type="selection" width="50">
            </el-table-column>
            <el-table-column prop="sample" label="产品" min-width="100" show-overflow-tooltip></el-table-column>
            <el-table-column prop="model" label="型号" min-width="100" show-overflow-tooltip></el-table-column>
            <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip :filters="filters0"
              :filter-multiple="false" column-key="inspectionItem" filter-placement="bottom-start"></el-table-column>
@@ -456,7 +461,7 @@
        </div>
      </div>
    </el-dialog>
    <el-dialog title="区间设置" :visible.sync="sectionUpDia" width="70%">
    <el-dialog title="区间设置" :visible.sync="sectionUpDia" width="70%" :close-on-click-modal="false">
      <div class="body" style="padding: 5px 0;">
        <el-table :data="sectionList" border style="width: 100%" height="350px">
          <el-table-column type="index" label="序号" width="70" align="center">
@@ -498,12 +503,12 @@
      <span slot="footer" class="dialog-footer">
        <el-button @click="sectionUpDia = false">取 消</el-button>
        <el-button type="primary" @click="sectionLoadAdd" :loading="sectionLoad">保 存</el-button>
        <el-button type="primary" @click="sectionList.push({thing: ''})" icon="el-icon-plus"></el-button>
        <el-button type="primary" @click="sectionList.push({thing: '',price: sectionRow.price,manHour: sectionRow.manHour})" icon="el-icon-plus"></el-button>
      </span>
    </el-dialog>
    <el-dialog title="数据导入" :visible.sync="uploadDia" width="500px">
      <div style="margin: 0 auto;">
        <el-upload ref="upload" drag :action="javaApi + $api.standardTree.inExcelOfTree" :headers="token" :file-list="fileList" name="file"
        <el-upload ref="upload" drag :action="javaApi + $api.standardTree.inExcelOfTree + '/' + isEquipment" :headers="token" :file-list="fileList" name="file"
          :auto-upload="false" accept=".xlsx" :limit="1" :on-change="beforeUpload" :on-success="onSuccess"
          :on-error="onError">
          <i class="el-icon-upload"></i>
@@ -630,6 +635,8 @@
        fileList: [],
        inExcelOfTreePower: false,
        uploading: false,
        isEquipment: false,
        outLoading:false
      }
    },
    watch: {
@@ -655,7 +662,6 @@
      this.selectEnumByCategoryForFactory()
      this.selectStandardTreeList()
      this.obtainItemParameterList()
      // this.selectEnumByCategoryForsampleType()
      this.selectTestObjectByName()
      this.selectStandardMethods()
      this.selectEnumByCategoryForDevice()
@@ -668,7 +674,8 @@
      this.selectStandardMethods()
      this.token = {
        'token': sessionStorage.getItem('token')
      }
      },
      this.isEquipment = this.PROJECT === '装备电缆' ? true : false
    },
    methods: {
      filterNode(value, data) {
@@ -703,7 +710,7 @@
      getNodeParent(val) {
        if (val.parent != null) {
          if(val.data.children === null){
            this.selectTree += ' - ' + val.label + ' - ' + ''
            this.selectTree += ' - ' + val.label + ' - ' + 'null'
          }else{
            this.selectTree += ' - ' + val.label
          }
@@ -771,13 +778,6 @@
              value: a.value
            })
          })
        })
      },
      selectEnumByCategoryForsampleType() {
        this.$axios.post(this.$api.enums.selectEnumByCategory, {
          category: "样品大类"
        }).then(res => {
          this.sampleType = res.data
        })
      },
      selectEnumByCategoryForDevice() {
@@ -1218,6 +1218,7 @@
          }
          this.sectionRow = {}
          this.sectionUpDia = true
          this.sectionList = []
        } else {
          // 值是一个对象
          this.sectionRow = row
@@ -1286,7 +1287,7 @@
          })
        } else {
          this.$axios.post(this.$api.standardTree.upStandardProducts, {
            ids: this.moreSelects.map(a => a.id),
            ids: JSON.stringify(this.moreSelects.map(a => a.id)),
            standardProductList: {
              section: this.sectionRow.section,
              ask: this.sectionRow.ask,
@@ -1445,7 +1446,8 @@
      getItemEnum() {
        this.$axios.post(this.$api.standardTree.selectStandardProductEnumByMethodId, {
          id: this.standardId,
          tree: this.selectTree
          tree: this.selectTree,
          item:this.inspectionItem
        }).then(res => {
          this.filters0 = []
          this.filters1 = []
@@ -1536,6 +1538,20 @@
            })
          }
        }).catch(() => {})
      },
      handleDown(){
        this.outLoading = true
        this.$axios.get(this.$api.standardTree.exportStandTree,{responseType: 'blob'}).then(res => {
          this.outLoading = false
          this.$message.success('导出成功')
          const blob = new Blob([res],{ type: 'application/force-download' });
          const url = URL.createObjectURL(blob);
          const link = document.createElement('a');
          link.href = url;
          link.download = '检验标准.xlsx';
          link.click();
          document.body.removeChild(link)
        })
      }
    }
  }