value
2024-06-07 66d0950a8238fd6d571fdf8f808fc4b7351ed404
Merge remote-tracking branch 'origin/master'

# Conflicts:
# src/components/do/b1-ins-order/add.vue
# src/components/do/b1-inspect-order-plan/Inspection.vue
已修改3个文件
已添加1个文件
822 ■■■■■ 文件已修改
src/components/do/b1-ins-order/add.vue 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-ins-order/equip-config.vue 550 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/Inspection.vue 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-ins-order/add.vue
@@ -100,7 +100,7 @@
<template>
  <div class="ins_order_add">
    <div v-show="!configShow">
    <div v-show="!configShow&&!equipConfigShow">
      <el-row class="title">
        <el-col :span="6" style="padding-left: 20px;">委托单信息&nbsp;&nbsp;&nbsp;总价:<span
            style="color: #3A7BFA">ï¿¥{{total}}</span></el-col>
@@ -116,8 +116,10 @@
          <el-button size="medium" @click="templateDia=true" v-show="active==1">
            <span style="color: #3A7BFA;">保存模板</span>
          </el-button>
          <el-button size="medium" type="primary" @click="openEquipConfig"
            v-if="PROJECT==='装备电缆'">电缆配置</el-button>
          <el-button size="medium" type="primary" @click="openConfig"
            v-if="this.addObj.sampleType==='光缆'">光纤配置</el-button>
            v-if="addObj.sampleType==='光缆'">光纤配置</el-button>
          <el-button size="medium" type="primary" @click="save" :loading="saveLoad" v-show="active==1">提交</el-button>
          <!-- å®¡æ ¸ -->
          <el-button size="medium" @click="upInsOrderOfState(2)" :loading="saveLoad" v-show="active==3"
@@ -130,7 +132,7 @@
        </el-col>
      </el-row>
    </div>
    <div class="search" v-show="!configShow">
    <div class="search" v-show="!configShow&&!equipConfigShow">
      <el-row>
        <el-col class="search_thing" :span="6">
          <div class="search_label">委托编号:</div>
@@ -298,7 +300,7 @@
        </el-col>
      </el-row>
    </div>
    <div v-show="!configShow">
    <div v-show="!configShow&&!equipConfigShow">
      <el-table class="el-table sampleTable" ref="sampleTable" :data="sampleList" height="250px" tooltip-effect="dark"
        border @selection-change="selectSample" highlight-current-row @row-click="rowClick" style="margin-top: 10px;">
        <el-table-column type="selection" width="60" :selectable="selectable" v-if="active==1"></el-table-column>
@@ -482,9 +484,12 @@
        </el-row>
      </span>
    </el-dialog>
    <fiberOpticConfig :currentId="currentId" @saveFiberopticConfig="getTotal()" v-if="configShow" :active="active" />
    <el-dialog title="检测到特殊项,请作出以下选择" :visible.sync="bsm1Dia" width="500px" :show-close="false"
      :before-close="beforeClose">
    <fiberOpticConfig :currentId="currentId"
    @saveFiberopticConfig="getTotal()"
     v-if="configShow" :active="active" />
     <equipConfig :currentId="currentId"
     v-if="equipConfigShow" :active="active"/>
    <el-dialog title="检测到特殊项,请作出以下选择" :visible.sync="bsm1Dia" width="500px" :show-close="false" :before-close="beforeClose">
      <div class="body" style="max-height: 60vh;">
        <el-row v-if="bsm1">
          <el-col class="search_thing" :span="22">
@@ -528,13 +533,14 @@
</template>
<script>
  import { Main } from 'element-ui'
import ValueTable from '../../tool/value-table.vue'
  import ValueTable from '../../tool/value-table.vue'
  import fiberOpticConfig from './fiberoptic-config.vue'
  import equipConfig from './equip-config.vue'
  export default {
    components: {
      ValueTable,
      fiberOpticConfig
      fiberOpticConfig,
      equipConfig
    },
    props: {
      active: {
@@ -663,6 +669,7 @@
        bsm1: false,
        bsm1Val: null,
        bsm1Dia: false,
        equipConfigShow: false,
        bsm2: false,
        bsm2Val: null,
        bsm2Dia: false,
@@ -820,53 +827,61 @@
          this.$message.error('请输入样品型号')
        } else if (!this.sampleList.every(m => m.standardMethodListId)) {
          this.$message.error('请选择检验标准')
        } else if (this.totalArr.find(a => a.ask!=null&&a.ask.includes('RTS')) && !this.RTS) {
        } else if (this.totalArr.find(a => a.ask!=null&&a.ask.includes('RTS')&&a.state==1) && !this.RTS) {
          this.$message.error('请输入RTS')
        } else {
          let sampleList = this.HaveJson(this.sampleList)
          let isRTS = this.totalArr.find(a => a.ask!=null&&a.ask.includes('RTS'))
          if (isRTS) {
            sampleList.forEach(item => {
              if (item.insProduct && item.insProduct.length > 0) {
                item.insProduct.forEach(a => {
                  let ask = this.handleAsk(a.ask)
                  if (ask) {
                    a.ask = ask
          let isRTS = this.totalArr.find(a=>a.ask!=null&&a.ask.includes('RTS')&&a.state==1)
          if(isRTS){
            sampleList.forEach(item=>{
              if(item.insProduct&&item.insProduct.length>0){
                item.insProduct.forEach(a=>{
                  if(a.state==1){
                    let ask = this.handleAsk(a.ask)
                    if(ask&&a.state==1){
                      a.ask = ask
                    }
                  }
                })
              }
              // å…‰çº¤å¸¦é¡¹ç›®
              if (item.bushing && item.bushing.length > 0) {
                item.bushing.forEach(a => {
                  if (a.fiber && a.fiber.length > 0) {
                    a.fiber.forEach(b => {
                      if (b.productList && b.productList.length > 0) {
                        b.productList.forEach(c => {
                          let ask = this.handleAsk(c.ask)
                          if (ask) {
                            c.ask = ask
              if(item.bushing&&item.bushing.length>0){
                item.bushing.forEach(a=>{
                  if(a.fiber&&a.fiber.length>0){
                    a.fiber.forEach(b=>{
                      if(b.productList&&b.productList.length>0){
                        b.productList.forEach(c=>{
                          if(c.state==1){
                            let ask = this.handleAsk(c.ask)
                            if(ask&&c.state==1){
                              c.ask = ask
                            }
                          }
                        })
                      }
                    })
                  }
                  if (a.fibers && a.fibers.length > 0) {
                    a.fibers.forEach(b => {
                      if (b.productList && b.productList.length > 0) {
                        b.productList.forEach(c => {
                          let ask = this.handleAsk(c.ask)
                          if (ask) {
                            c.ask = ask
                  if(a.fibers&&a.fibers.length>0){
                    a.fibers.forEach(b=>{
                      if(b.productList&&b.productList.length>0){
                        b.productList.forEach(c=>{
                          if(c.state==1){
                            let ask = this.handleAsk(c.ask)
                            if(ask&&c.state==1){
                              c.ask = ask
                            }
                          }
                        })
                      }
                      if (b.fiber && b.fiber.length > 0) {
                        b.fiber.forEach(c => {
                          if (c.productList && c.productList.length > 0) {
                            c.productList.forEach(d => {
                              let ask = this.handleAsk(d.ask)
                              if (ask) {
                                d.ask = ask
                      if(b.fiber&&b.fiber.length>0){
                        b.fiber.forEach(c=>{
                          if(c.productList&&c.productList.length>0){
                            c.productList.forEach(d=>{
                              if(d.state==1){
                                let ask = this.handleAsk(d.ask)
                                if(ask){
                                  d.ask = ask
                                }
                              }
                            })
                          }
@@ -1498,6 +1513,35 @@
          })
        }
      },
      openEquipConfig(){
        if (this.active === 1) {
          if (this.sampleIds.length === 0) {
            this.$message.error("未选择样品")
            return
          }
          this.equipConfigShow = true
        } else {
          if (this.sampleId === null) {
            this.$message.error('未选中样品')
            return
          }
          // this.$axios.post(this.$api.insBushing.selectBushingBySampleId, {
          //   sampleId: this.sampleId
          // }).then(res => {
          //   if (res.data.length === 0) {
          //     this.$message.error('该样品没有配置光纤')
          //     return
          //   }
          //   for (var i in this.sampleList) {
          //     if (this.sampleList[i].id = this.sampleId) {
          //       this.sampleList[i].bushing = res.data
          //       break
          //     }
          //   }
          //   this.configShow = true
          // })
        }
      },
      upBsm1(val) {
        let sections = JSON.parse(this.bsmRow.section);
        let asks = JSON.parse(this.bsmRow.ask);
src/components/do/b1-ins-order/equip-config.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,550 @@
<template>
  <div class="ins_order_config">
    <div>
      <el-row class="title">
        <el-col :span="6" style="padding-left: 20px;">电缆配置</el-col>
        <el-col :span="18" style="text-align: right;">
          <el-button size="medium" type="primary" @click="addChild" v-if="active==1">添加子样品</el-button>
          <el-button size="medium" type="primary" @click="save" :loading="saveLoad" v-if="active==1">保 å­˜</el-button>
          <el-button size="medium" @click="outConfig">
            <span style="color: #3A7BFA;">返 å›ž</span>
          </el-button>
        </el-col>
      </el-row>
    </div>
    <div class="center">
      <el-table class="el-table sampleTable" ref="sampleTable" :data="sampleList" height="50%" tooltip-effect="dark"
        border  highlight-current-row @row-click="rowClick" style="margin-top: 10px;"
        @current-change="selectSample">
        <!-- <el-table-column type="selection" width="60" :selectable="selectable" v-if="active==1"></el-table-column> -->
        <el-table-column type="index" label="序号" width="65" align="center"></el-table-column>
        <el-table-column prop="sample" label="样品名称" align="center" min-width="100">
          <template slot-scope="scope">
            <el-input size="small" v-model="scope.row.sample" clearable :readonly="active>1"></el-input>
          </template>
        </el-table-column>
        <el-table-column prop="sampleCode" label="样品编号" min-width="140" align="center">
          <template slot-scope="scope">
            <el-input size="small" v-model="scope.row.sampleCode" clearable placeholder="不填写则系统自动生成"
              :readonly="active>1"></el-input>
          </template>
        </el-table-column>
        <el-table-column prop="model" label="样品型号" align="center" min-width="100">
          <template slot-scope="scope">
            <el-select v-model="scope.row.model" filterable allow-create default-first-option placeholder="样品型号"
              size="small" @change="handleChangeModel" :disabled="active>1" style="width: 100%;">
              <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 prop="modelNum" label="型号参数" width="130" align="center" v-if="!(active>1)">
          <template slot-scope="scope">
            <el-input size="small" v-model="scope.row.modelNum" clearable placeholder="非必填"
              @keyup.enter.native="methodChange(scope.row.standardMethodListId, scope.row)"
              @clear="methodChange(scope.row.standardMethodListId, scope.row)"></el-input>
          </template>
        </el-table-column>
        <el-table-column prop="standardMethodListId" label="检验标准" align="center" min-width="100">
          <template slot-scope="scope">
            <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model==null||active>1"
              placeholder="检验标准" size="small" :loading="methodLoad" @change="(value)=>methodChange(value, scope.row)"
              @focus="methodFocus" :readonly="active>1" style="width: 100%;">
              <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 prop="joinName" label="配套样品名称" width="140" align="center">
          <template slot-scope="scope">
            <el-input size="small" type="textarea" :autosize="{ minRows: 1, maxRows: 1}"
              v-model="scope.row.joinName" :disabled="active!=1"></el-input>
          </template>
        </el-table-column>
        <el-table-column prop="joinModel" label="配套样品型号" width="140" align="center">
          <template slot-scope="scope">
            <el-input size="small" type="textarea" :autosize="{ minRows: 1, maxRows: 1}"
              v-model="scope.row.joinModel" :disabled="active!=1"></el-input>
          </template>
        </el-table-column>
        <el-table-column prop="joinNum" label="配套样品数量" width="140" align="center">
          <template slot-scope="scope">
            <el-input-number size="small" v-model="scope.row.joinNum" :min="1" :max="100" :precision="0"
              :controls="false" style="width: 80%;" :disabled="active!=1"></el-input-number>
          </template>
        </el-table-column>
      </el-table>
      <el-table class="el-table" ref="productTable" :data="productList" height="50%" tooltip-effect="dark" border
        @selection-change="selectProduct" style="margin-bottom: 10px;" @select="upProductSelect"
        :row-class-name="tableRowClassName" v-loading="getProductLoad" @select-all="handleAll">
        <el-table-column type="selection" width="65" :selectable="selectable" v-if="active==1"></el-table-column>
        <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip></el-table-column>
        <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140"
          show-overflow-tooltip></el-table-column>
        <el-table-column prop="sonLaboratory" label="子实验室" min-width="130" show-overflow-tooltip :filters="filters"
          :filter-method="filterHandler"></el-table-column>
        <el-table-column prop="methodS" label="试验方法" min-width="120" show-overflow-tooltip>
        </el-table-column>
        <el-table-column prop="unit" label="计量单位" width="100" show-overflow-tooltip></el-table-column>
        <el-table-column prop="price" label="单价" width="100" show-overflow-tooltip></el-table-column>
        <el-table-column prop="section" label="区间" min-width="120" show-overflow-tooltip></el-table-column>
        <el-table-column prop="ask" label="要求值" min-width="220px">
          <template slot-scope="scope">
            <el-input size="small" placeholder="要求值" v-model="scope.row.ask" clearable type="textarea"
              :autosize="{ minRows: 1, maxRows: 3}" @change="e=>requestChange(e,scope.row)"
              v-if="active==1&&isAskOnlyRead"></el-input>
            <span v-else>{{ scope.row.ask }}</span>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <el-dialog title="选择子样品" :visible.sync="selectStandardTree" width="400px">
      <div class="body" style="height: 60vh;overflow-y: auto;user-select: none;" v-if="selectStandardTree">
        <el-row style="margin-bottom: 10px;">
          <el-col :span="24">
            <label>样品数量:</label>
            <el-input-number v-model="addObj.sampleNum" :min="1" label="请输入数量" size="small"></el-input-number>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="24">
            <el-input placeholder="输入关键字进行搜索" suffix-icon="el-icon-search" v-model="search" size="small"
              style="margin-bottom: 5px;" clearable @blur="searchFilter" @clear="searchFilter"
              @keyup.enter.native="searchFilter"></el-input>
          </el-col>
        </el-row>
        <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'label' }" node-key="label"
          :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen"
          @node-collapse="nodeClose" :default-expanded-keys="expandedKeys" @dblclick.native="activeStandardTree">
          <div class="custom-tree-node" slot-scope="{ node, data }">
            <el-row>
              <el-col :span="24">
                <span><i
                    :class="`node_i ${data.children != undefined ? (data.code==='[1]'?'el-icon-folder-opened':'el-icon-folder') : 'el-icon-tickets'}`"></i>
                  {{ data.code }} {{ data.label }}</span>
              </el-col>
            </el-row>
          </div>
        </el-tree>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="selectStandardTree = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="activeStandardTree">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <el-dialog title="检测到特殊项,请作出以下选择" :visible.sync="bsm1Dia" width="500px" :show-close="false" :before-close="beforeClose">
      <div class="body" style="max-height: 60vh;">
        <el-row v-if="bsm1">
          <el-col class="search_thing" :span="22">
            <div class="search_label"><span class="required-span">* </span>护套密度:</div>
            <div class="search_input">
              <el-radio-group v-model="bsm1Val" @input="upBsm1">
                <el-radio v-for="(a, ai) in JSON.parse(bsmRow.section)" :key="ai" :label="a"></el-radio>
              </el-radio-group>
            </div>
          </el-col>
          <el-col class="search_thing" :span="22">
            <div class="search_label">要求值:</div>
            <div class="search_input" v-show="bsm1Val!==null&&bsm1Val!==''">
              <el-radio-group v-model="bsm1Val" @input="upBsm1">
                <el-radio v-for="(a, ai) in JSON.parse(bsmRow.section)" :key="ai" :label="a">{{JSON.parse(bsmRow.ask)[ai]}}</el-radio>
              </el-radio-group>
            </div>
          </el-col>
        </el-row>
      </div>
    </el-dialog>
  </div>
</template>
<script>
  export default {
    props: {
      active: {
        type: Number,
        default: () => 0
      },
    },
    data(){
      return {
        saveLoad:false,
        sampleList:[],
        productList:[],
        getProductLoad:false,
        filters:[],
        sampleIds:[],
        isAskOnlyRead: false,
        selectStandardTree: false,
        search:'',
        expandedKeys:[],
        addObj:{
          sampleNum:1,
        },
        selectTree:null,
        models:[],
        sample: {
          sampleCode: null,
          laboratory: null,
          factory: null,
          sampleType: null,
          sample: null,
          model: null,
          modelNum: null,
          sampleNum: 1,
          isLeave: 0,
          unit: null
        },
        currentMethod:null,
        methods:[],
        methodLoad: false,
        sampleId:null,
        bsmRow: null,
        bsm1: false,
        bsm1Val:null,
        bsm1Dia:false,
        list:[]
      }
    },
    methods:{
      save(){},
      outConfig(){
        this.$parent.equipConfigShow = false
      },
      addChild(){
        this.selectStandardTree = true
      },
      selectSample(val){
        this.sampleIds = [val.id]
      },
      rowClick(row, column, event){
        this.currentMethod = row
        let obj = this.methods.find(a => a.id == this.currentMethod.standardMethodListId)
        if (obj && obj.code == '委托要求') {
          this.isAskOnlyRead = true
        } else {
          this.isAskOnlyRead = false
        }
        this.sampleId = row.id
        if (this.active !== 1) {
          this.sampleIds = []
          this.sampleIds.push(row.id)
        }
        this.productList = row.insProduct
        setTimeout(() => {
          this.productList.forEach(a => {
            if (a.state == 1) this.toggleSelection(a)
          })
        }, 200)
      },
      toggleSelection(row) {
        this.$refs.productTable.toggleRowSelection(row, true);
      },
      selectable() {
        if (this.active > 1) {
          return false
        } else {
          return true
        }
      },
      handleChangeModel(e){
        let num = this.selectTree.split('-').length;
        if (num == 4) {
          this.selectTree = this.selectTree + ' - ' + e
        } else {
          let arr = this.selectTree.split('-')
          let arr0 = arr.slice(0, arr.length - 1)
          this.selectTree = arr0.join('-') + '- ' + e
        }
      },
      methodChange(val, row){
        if (val === null || val === '') return
        this.currentMethod = row
        let obj = this.methods.find(a => a.id == this.currentMethod.standardMethodListId)
        if (obj && obj.code == '委托要求') {
          this.isAskOnlyRead = true
        } else {
          this.isAskOnlyRead = false
        }
        this.getProductLoad = true
        this.$axios.post(this.$api.standardTree.selectStandardProductList, {
          model: row.model + '-' + row.modelNum,
          standardMethodListId: val,
          factory: this.selectTree,
        }, {
          headers: {
            'Content-Type': 'application/json'
          }
        }).then(res => {
          res.data.forEach(a => {
            a.state = 0
          })
          row.insProduct = this.HaveJson(res.data)
          this.getProductLoad = false
          this.productList = row.insProduct
          this.$refs.sampleTable.setCurrentRow(row)
          setTimeout(() => {
            this.productList.forEach(a => {
              if (a.state == 1) this.toggleSelection(a)
            })
          }, 200)
        })
      },
      methodFocus() {
        this.selectsStandardMethodByFLSSM()
      },
      selectsStandardMethodByFLSSM(){
        this.methodLoad = true
        this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, {
          tree: this.selectTree
        }).then(res => {
          this.methodLoad = false
          try {
            if (res.data.standardMethodList.length == 0 && this.selectTree.split('-').length == 5) {
              let arr = this.selectTree.split('-')
              let arr0 = arr.slice(0, arr.length - 1)
              let selectTree = arr0.join('-').substring(0, arr0.join('-').length - 1)
              this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, {
                tree: selectTree
              }).then(ress => {
                this.methods = ress.data.standardMethodList
              })
            } else {
              this.methods = res.data.standardMethodList
            }
          } catch (e) {}
        })
      },
      selectProduct(val){
        this.productIds = []
        val.forEach(a => {
          this.productIds.push(a.id)
        })
      },
      upProductSelect(selection, row){
        row.state = row.state == 1 ? 0 : 1
        if (row.bsm === '1' && row.section !== '' && row.section !== null && row.state === 1) {
          if(row.section.indexOf('[') > -1){
            this.bsmRow = this.HaveJson(row)
          }
          this.bsm1 = true
          this.bsm1Dia = true
        } else if (row.bsm === '1' && row.section !== '' && row.section !== null && row.state === 0) {
          this.bsm1 = false
        }
        this.sampleList.map(item => {
          if (this.sampleIds.indexOf(item.id) > -1) {
            item.insProduct.map(m => {
              if (m.id == row.id) {
                m.state = row.state;
              }
              return m;
            })
          }
          return item
        })
      },
      tableRowClassName({
        row,
        rowIndex
      }) {
        if (row.state === 0) {
          return 'warning-row';
        }
        return '';
      },
      handleAll(){
        if (e.length > 0) {
          this.productList.map(m => {
            m.state = 1
            return m
          })
        } else {
          this.productList.map(m => {
            m.state = 0
            return m
          })
        }
        this.productList.forEach(p=>{
          if (p.bsm === '1' && p.section !== '' && p.section !== null && p.state === 1) {
            if(p.section.indexOf('[') > -1){
              this.bsmRow = this.HaveJson(p)
            }
            this.bsm1 = true
            this.bsm1Dia = true
          } else if (p.bsm === '1' && p.section !== '' && p.section !== null && p.state === 0) {
            this.bsm1 = false
          }
        })
        if (e.length > 0) {
          this.sampleList.map(item => {
            if (this.sampleIds.indexOf(item.id) > -1) {
              item.insProduct.map(m => {
                m.state = 1
                return m;
              })
            }
            return item
          })
        } else {
          this.sampleList.map(item => {
            if (this.sampleIds.indexOf(item.id) > -1) {
              item.insProduct.map(m => {
                m.state = 0
                return m;
              })
            }
            return item
          })
        }
        this.$nextTick(() => {
          this.$refs.productTable.doLayout()
        })
      },
      filterHandler(value, row, column) {
        const property = column['property'];
        return row[property] === value;
      },
      requestChange(e, row) {
        this.sampleList.map(item => {
          if (this.sampleIds.indexOf(item.id) > -1) {
            item.insProduct.map(m => {
              if (m.id == row.id) {
                m.ask = e;
              }
              return m;
            })
          }
          return item
        })
      },
      activeStandardTree() {
        let trees = this.selectTree.split(" - ")
        if (trees.length < 4) {
          this.$message.error('未选择子产品')
          return
        }
        this.addObj.factory = trees[0]
        this.addObj.laboratory = trees[1]
        this.addObj.sampleType = trees[2]
        this.addObj.sample = trees[3]
        this.addObj.model = (trees[4] == undefined ? null : trees[4])
        this.selectStandardTree = false
        this.sampleList = []
        for (var i = 0; i < this.addObj.sampleNum; i++) {
          this.sample.joinName = null
          this.sample.joinModel = null
          this.sample.joinNum = 1
          this.sample.sample = this.addObj.sample
          this.sample.model = this.addObj.model
          this.sample.unit = this.addObj.unit
          this.sample.standardMethodListId = null
          this.sample.insProduct = []
          this.sample.id = this.count
          this.sampleList.push(this.HaveJson(this.sample))
          this.count++
        }
        this.$refs.sampleTable.doLayout()
      },
      searchFilter() {
        this.$refs.tree.filter(this.search)
      },
      filterNode(value, data) {
        if (!value) return true;
        return data.label.indexOf(value) !== -1;
      },
      handleNodeClick(val, node, el){
        this.selectTree = ''
        this.models = val.children
        this.getNodeParent(node)
        this.selectTree = this.selectTree.replace(' - ', '')
        let data = this.selectTree.split(' - ')
        let data2 = ''
        for (let index = data.length - 1; index >= 0; index--) {
          data2 += " - " + data[index]
        }
        this.selectTree = data2.replace(' - ', '')
      },
      getNodeParent(val) {
        if (val.parent != null) {
          this.selectTree += ' - ' + val.label
          this.getNodeParent(val.parent)
        }
      },
      nodeOpen(data, node, el) {
        $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened')
      },
      nodeClose(data, node, el) {
        $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder')
      },
      beforeClose(done){
        if(this.bsm1){
          if(this.bsm1Val===null || this.bsm1Val === ''){
            this.$message.error('特殊项目必须处理')
            return
          }
        }
        done()
      },
      upBsm1(val) {
        let sections = JSON.parse(this.bsmRow.section);
        let asks = JSON.parse(this.bsmRow.ask);
        let tells = JSON.parse(this.bsmRow.tell);
        let manHours = JSON.parse(this.bsmRow.manHour);
        let prices = JSON.parse(this.bsmRow.price);
        for (var a in sections) {
          if(val === sections[a]){
            this.productList.forEach(p=>{
              if(p.id === this.bsmRow.id){
                p.section = sections[a]
                p.ask = asks[a]
                p.tell = tells[a]
                p.manHour = manHours[a]
                p.price = prices[a]
              }
            })
            break
          }
        }
      },
    }
  }
</script>
<style scoped>
  .ins_order_config {
    width: 100%;
    height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
  }
  .ins_order_config::-webkit-scrollbar {
    width: 0;
  }
  .title {
    height: 60px;
    line-height: 60px;
  }
  .center {
    width: 100%;
    height: calc(100% - 70px);
  }
  >>>.all-disabled .el-checkbox__input .el-checkbox__inner {
    background-color: #edf2fc;
    border-color: #dcdfe6;
    cursor: not-allowed;
  }
  .node_i {
    color: orange;
    font-size: 18px;
  }
  .el-select-dropdown__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
</style>
src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -191,7 +191,11 @@
<template>
  <div v-loading="loading" class="inspection">
    <el-row class="title">
      <el-col :span="12" style="padding-left: 20px;">检验单详情</el-col>
      <el-col :span="12" style="padding-left: 20px;">检验单详情
        <span style="color: #3A7BFA;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;样品</span>
        <span v-if="currentFiberOpticTape" style="color: #3A7BFA;"> - å…‰çº¤å¸¦</span>
        <span v-if="currentFiberOptic" style="color: #3A7BFA;"> - å…‰çº¤</span>
      </el-col>
      <el-col :span="12" style="text-align: right;">
        <el-button size="small" type="primary" @click="fiberOpticVisible=true" v-if="fiberOptic.length>0">光纤切换</el-button>
        <el-button size="small" type="primary" @click="fiberOpticTapeVisible=true" v-if="fiberOpticTape.length>0">光纤带切换</el-button>
@@ -251,7 +255,7 @@
                :rowspan="n.v.mc&&n.v.mc.rs?n.v.mc.rs:1"
                :style="`background:${n.v.bg};color:${n.v.fc};font-size:${n.v.fs}px;width:${handleWidth(n)}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`">
                <div class="content" :class="`content-h-${n.v.ht} content-v-${n.v.vt}`"
                  :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]}px;`">
                  :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]}px;background:${n.v.bg};`">
                  <template v-if="n.v.ps!=undefined && n.v.ps.value==='检验值' && state==1">
                    <el-input v-if="getInspectionValueType(n.i) == 1" class="table_input" v-model="n.v.v"
                      :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')"
@@ -305,13 +309,41 @@
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='样品编号'">
                    <div style="display: flex;flex-wrap: nowrap;align-items: center;width: 100%" :title="currentSample.sampleCode">
                      <i class="el-icon-caret-left table_caret" style="width: 16px;" @click="caretSample(-1)"></i>
                      <i class="el-icon-caret-left table_caret" style="width: 16px;" @click="caretSample(-1)" v-if="!currentFiberOpticTape&&!currentFiberOptic"></i>
                      <div :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`">{{currentSample.sampleCode}}</div>
                      <i class="el-icon-caret-right table_caret" style="width: 16px;" @click="caretSample(1)"></i>
                      <i class="el-icon-caret-right table_caret" style="width: 16px;"
                      v-if="!currentFiberOpticTape&&!currentFiberOptic"@click="caretSample(1)"></i>
                    </div>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='样品型号'">
                    <div :style="`font-family:${n.v.ff} !important;`" v-if="currentSample.model!==undefined&&currentSample.model!==null">{{currentSample.model}}</div>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='套管'">
                    <div style="display: flex;flex-wrap: nowrap;align-items: center;">
                      <!-- <i class="el-icon-caret-left table_caret" @click="caretBushing(-1)"></i> -->
                      <div :style="`font-family:${n.v.ff} !important;`">{{currentBushing?currentBushing.color:''}}</div>
                      <!-- <i class="el-icon-caret-right table_caret" @click="caretBushing(1)"></i> -->
                    </div>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='光纤带'">
                    <div style="display: flex;flex-wrap: nowrap;align-items: center;">
                      <i class="el-icon-caret-left table_caret" @click="caretTape(-1)
                      " v-if="currentFiberOpticTape"></i>
                      <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOpticTape?currentFiberOpticTape.code:''}}</div>
                      <i class="el-icon-caret-right table_caret"
                      v-if="currentFiberOpticTape"
                      @click="caretTape(1)"></i>
                    </div>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='光纤'">
                    <div style="display: flex;flex-wrap: nowrap;align-items: center;">
                      <i class="el-icon-caret-left table_caret" @click="caretOptic(-1)"
                      v-if="currentFiberOptic"></i>
                      <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOptic?currentFiberOptic.color:''}}
                      </div>
                      <i
                      v-if="currentFiberOptic" class="el-icon-caret-right table_caret" @click="caretOptic(1)"></i>
                    </div>
                  </template>
                  <span v-else :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span>
                </div>
@@ -328,7 +360,7 @@
      :on-success="handleSuccessUp" :show-file-list="false"
        accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' :headers="headers" :on-change="beforeUpload"
        :on-error="onError" ref='upload'>
        <el-button size="small" type="primary" :loading="upLoading">附件上传</el-button></el-upload>
        <el-button size="small" type="primary">附件上传</el-button></el-upload>
      <ValueTable class="value-table" ref="fileList" :url="$api.insOrderPlan.getFileList"
        :componentData="componentData0"
        :delUrl="$api.insOrderPlan.delfile"
@@ -337,7 +369,7 @@
    <el-drawer title="光纤切换" :visible.sync="fiberOpticVisible" :size="500">
      <el-table class="el-table" ref="fiberOpticTable" :data="fiberOptic" height="100%" tooltip-effect="dark" border
        highlight-current-row @row-click="handleChangeOptic" :row-class-name="tableRowClassName"
        :current-row-key="currentKey" :row-key="record=>record.index" v-if="fiberOpticVisible">
        :current-row-key="currentKey2" :row-key="record=>record.index" v-if="fiberOpticVisible">
        <el-table-column type="index" align="center" label="序号" width="70px" :key="Math.random()">
        </el-table-column>
        <el-table-column prop="bushColor" label="管套色标" min-width="100px" show-overflow-tooltip></el-table-column>
@@ -350,7 +382,7 @@
    <el-drawer title="光纤带切换" :visible.sync="fiberOpticTapeVisible" :size="500">
      <el-table class="el-table" ref="fiberOpticTapeTable" :data="fiberOpticTape" height="100%" tooltip-effect="dark" border
        highlight-current-row @row-click="handleChangeTape" :row-class-name="tableRowClassName"
        :current-row-key="currentKey" :row-key="record=>record.index" v-if="fiberOpticTapeVisible">
        :current-row-key="currentKey1" :row-key="record=>record.index" v-if="fiberOpticTapeVisible">
        <el-table-column type="index" align="center" label="序号" width="70px" :key="Math.random()">
        </el-table-column>
        <el-table-column prop="code" label="光纤带编号" min-width="110px" show-overflow-tooltip></el-table-column>
@@ -363,7 +395,7 @@
    <el-drawer title="套管切换" :visible.sync="bushingVisible" :size="500">
      <el-table class="el-table" ref="bushingTable" :data="bushing" height="100%" tooltip-effect="dark" border
        highlight-current-row @row-click="handleChangeBushing" :row-class-name="tableRowClassName"
        :current-row-key="currentKey" :row-key="record=>record.index" v-if="bushingVisible">
        :current-row-key="currentKey0" :row-key="record=>record.index" v-if="bushingVisible">
        <el-table-column type="index" align="center" label="序号" width="70px" :key="Math.random()">
        </el-table-column>
        <el-table-column prop="color" label="管色标" min-width="100px" show-overflow-tooltip></el-table-column>
@@ -484,7 +516,6 @@
          isIndex: true,
          showSelect: false,
          select: false,
          selectMethod: '',
          sort: false,
          init:false,
          do: [
@@ -535,6 +566,9 @@
        ps: {},
        param: {},
        currentKey: 1,
        currentKey0: 1,
        currentKey1: 1,
        currentKey2: 1,
        comparisonList: [],
        excelMethodList: [],
        equipOptions: [],
@@ -667,6 +701,7 @@
          this.fiberOpticTape = row.fibers;
        }
        this.bushingVisible = false;
        this.currentKey0 = row.index
      },
      async handleChangeOptic(row, column, event){
        this.currentFiberOptic = row;
@@ -683,7 +718,7 @@
        this.fiberOpticVisible = false;
        let list = await this.getCurrentProduct(row.id,2)
        this.getTableLists0(list)
        this.currentKey = row.index
        this.currentKey2 = row.index
      },
      async handleChangeTape(row, column, event){
        this.currentFiberOpticTape = row;
@@ -707,7 +742,7 @@
          // é…ç½®å…‰çº¤
          this.fiberOptic = row.fiber;
        }
        this.currentKey = row.index
        this.currentKey1 = row.index
      },
      async handleChangeSample(row, column, event) {
        this.param = {}
@@ -1637,6 +1672,85 @@
        })
        this.getTableLists()
      },
      caretBushing(num){
        let index = this.currentKey0 + num
        if(index < 1){
          this.$message.error('当前是第一个套管')
          return
        } else if(index > this.bushing.length){
          this.$message.error('当前是最后一个套管')
          return
        }
        this.currentKey0 = index
        this.currentBushing = this.HaveJson(this.bushing[index - 1])
        this.fiberOpticTape = []
        this.currentFiberOpticTape = null;
        this.fiberOptic = []
        this.currentFiberOptic = null;
        if( this.currentBushing.fiber&& this.currentBushing.fiber.length>0){
          // ç›´æŽ¥é…ç½®å…‰çº¤
          this.fiberOptic =  this.currentBushing.fiber;
        }else if( this.currentBushing.fibers&& this.currentBushing.fibers.length>0){
          // é…ç½®å…‰çº¤å¸¦åŽï¼Œå†é…ç½®å…‰çº¤
          this.fiberOpticTape =  this.currentBushing.fibers;
        }
      },
      async caretTape(num){
        let index = this.currentKey1 + num
        if(index < 1){
          this.$message.error('当前是第一个光纤带')
          return
        } else if(index > this.fiberOpticTape.length){
          this.$message.error('当前是最后一个光纤带')
          return
        }
        this.currentKey1 = index
        this.currentFiberOpticTape = this.HaveJson(this.fiberOpticTape[index - 1])
        this.param = {}
        this.fiberOptic = []
        this.currentFiberOptic = null;
        this.currentFiberOpticTape.productList.forEach(a => {
          this.param[a.id] = {
            insValue: [],
            comValue: [],
            resValue: null,
            equipValue: [],
            equipName: [],
            insResult: null
          }
        })
        this.fiberOpticTapeVisible = false;
        let list = await this.getCurrentProduct(this.currentFiberOpticTape.id,1)
        this.getTableLists0(list)
        if(this.currentFiberOpticTape.fiber&&this.currentFiberOpticTape.fiber.length>0){
          // é…ç½®å…‰çº¤
          this.fiberOptic = this.currentFiberOpticTape.fiber;
        }
      },
      async caretOptic(num){
        let index = this.currentKey2 + num
        if(index < 1){
          this.$message.error('当前是第一个光纤')
          return
        } else if(index > this.fiberOptic.length){
          this.$message.error('当前是最后一个光纤')
          return
        }
        this.currentKey2 = index
        this.currentFiberOptic = this.HaveJson(this.fiberOptic[index - 1])
        this.currentFiberOptic.productList.forEach(a => {
          this.param[a.id] = {
            insValue: [],
            comValue: [],
            resValue: null,
            equipValue: [],
            equipName: [],
            insResult: null
          }
        })
        let list = await this.getCurrentProduct(this.currentFiberOptic.id,2)
        this.getTableLists0(list)
      },
      handleSuccessUp(response, ) {
        this.upLoading = false;
                if (response.code == 200) {
@@ -1665,10 +1779,10 @@
          if (res.code === 200) {
            let url = '';
            if(res.data.type==1){
              url = this.javaApi+'/img/'+res.data.url
              url = this.javaApi+'/img/'+res.data.fileUrl
              file.downloadIamge(url,row.fileName)
            }else{
              url = this.javaApi+'/word/'+res.data.url
              url = this.javaApi+'/word/'+res.data.fileUrl
              const link = document.createElement('a');
              link.href = url;
              link.download = row.fileName;
src/main.js
@@ -11,10 +11,12 @@
import api from './assets/api/controller.js'
import swal from 'sweetalert'
// é¡¹ç›®åˆ‡æ¢
Vue.prototype.PROJECT = '检测中心' //项目名称:检测中心、装备电缆
//本地
Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80";
const javaApi = 'http://192.168.11.200:8001';//李
// const javaApi = 'http://192.168.11.249:8001';//å¼ 
// const javaApi = 'http://192.168.144.249:8001';//å¼ 
// const javaApi = 'http://172.20.10.3:8001';//姜
// const javaApi = 'http://192.168.11.2:8001';//柴
//  const javaApi = 'http://127.0.0.1:8001';//晏