licp
2024-06-14 23052b941c61d99716d6ac1e693ab2bfce66b878
Merge branch 'master' of http://114.132.189.42:9002/r/center-lims-before into master
已修改6个文件
382 ■■■■ 文件已修改
src/assets/api/controller.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-ins-order/add.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-ins-order/cable-config.vue 255 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/a5-capacity-scope.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b2-standard.vue 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -209,6 +209,7 @@
  upStandardProducts: "/standardTree/upStandardProducts", //获取产品架构
  selectStandardProductEnumByMethodId: "/standardTree/selectStandardProductEnumByMethodId", //批量编辑查询所有检验项目和检验子项枚举
  getStandTreeBySampleType: "/standardTree/getStandTreeBySampleType", //仅获取光纤的型号
  inExcelOfTree: "/standardTree/inExcelOfTree", //导入标准库
}
const standardMethod = {
src/components/do/b1-ins-order/add.vue
@@ -997,7 +997,7 @@
              return a
            })),
            pairing: JSON.stringify(this.bsm2Val2)
          })
            })
          }).then(res => {
            this.saveLoad = false
            if (res.code == 201) return
@@ -1159,6 +1159,8 @@
          this.sample.insProduct = []
          this.sample.id = this.count
          this.sample.childSampleList = []
          this.sample.insulating = null
          this.sample.sheath = null
          this.sampleList.push(this.HaveJson(this.sample))
          this.count++
        }
src/components/do/b1-ins-order/cable-config.vue
@@ -7,47 +7,67 @@
          <el-button size="medium" @click="outConfig">
            <span style="color: #3A7BFA;">返 回</span>
          </el-button>
          <el-button size="medium" type="primary" @click="save">保 存</el-button>
        </el-col>
      </el-row>
    </div>
    <div class="search">
      <el-radio-group v-model="currentTab" size="small" style="margin-left: 20px;">
      <el-radio-group v-model="currentTab" size="small" style="margin-left: 20px;" @input="changeTab">
        <el-radio-button label="绝缘">绝 缘</el-radio-button>
        <el-radio-button label="护套">护 套</el-radio-button>
      </el-radio-group>
      <div class="search_thing" v-if="currentTab=='绝缘'">
        <div class="search_label">芯数:</div>
        <el-input size="small" placeholder="请输入" clearable
                        v-model="vaule0"></el-input>
                        v-model="insulating.num"></el-input>
      </div>
      <el-button size="small" type="primary"@click="openAdd" style="margin-left: 20px;margin-right: 20px;" v-if="currentTab=='绝缘'">
        确 定</el-button>
      <div class="search_thing">
      <div class="search_thing" v-if="currentTab=='绝缘'">
        <div class="search_label">检验标准:</div>
        <el-select v-model="vaule0" placeholder="请选择检验标准" size="small"
        clearable>
          <el-option v-for="item in standardList" :key="item.value" :label="item.label" :value="item.value">
        <el-select v-model="insulating.standardMethodListId" placeholder="请选择检验标准" size="small"
        @change="(value)=>methodChange(value)">
          <el-option v-for="item in standards" :key="item.id" :label="item.code" :value="item.id">
          </el-option>
        </el-select>
      </div>
      <div class="search_thing" style="padding-left: 30px;">
        <el-button size="small" type="primary"@click="openAdd">保 存</el-button>
      <div class="search_thing" v-if="currentTab=='护套'">
        <div class="search_label">检验标准:</div>
        <el-select v-model="sheath.standardMethodListId" placeholder="请选择检验标准" size="small"
        @change="(value)=>methodChange(value)">
          <el-option v-for="item in standards" :key="item.id" :label="item.code" :value="item.id">
          </el-option>
        </el-select>
      </div>
    </div>
    <div class="table">
      <ValueTable ref="ValueTable"
                :url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours"
                :componentData="componentData" :key="upIndex" />
      <el-table class="el-table" ref="productTable" :data="productList" height="100%" tooltip-effect="dark" border
        @selection-change="selectProduct" style="margin-bottom: 10px;" @select="upProductSelect"
        :row-class-name="tableRowClassName" @select-all="handleAll">
        <el-table-column type="selection" width="65" :selectable="selectable"></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></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>
  </div>
</template>
<script>
import ValueTable from '../../tool/value-table.vue'
import { Tree } from 'element-ui'
export default {
  components: {
    ValueTable
  },
  props: {
    active: {
      type: Number,
@@ -59,42 +79,167 @@
        standardList:[],
        vaule0:'',
        currentTab:'绝缘',
        componentData: {
                    entity: {
                        number: null,
                        department: null,
                        laboratory: null,
                        orderBy: {
                            field: 'id',
                            order: 'desc'
                        }
                    },
                    isIndex: true,
                    showSelect: true,
                    select: true,
                    do: [],
                    tagField: {},
                    linkEvent: {
                    },
                    selectField: {
                        laboratory: {
                            select: []
                        },
                        unit: {
                            select: []
                        },
                    },
                    requiredAdd: [],
                    requiredUp: []
              },
        upIndex:0,
        productList: [],
        productIds: [],
        sample: [],
        tree: '',
        standards: [],
        insulating: {
          standardMethodListId: null,
          insProduct: [],
          num: 1
        },
        sheath: {
          standardMethodListId: null,
          insProduct: []
        },
        isAskOnlyRead: false
      }
  },
  mounted() {
    this.$parent.sampleIds.forEach(a => {
      for (var i = 0; i < this.$parent.sampleList.length; i++) {
        if (this.$parent.sampleList[i].id == a) {
          this.sample.push(this.$parent.sampleList[i])
          if(this.$parent.sampleList[i].insulating !== undefined && this.$parent.sampleList[i].insulating !== null){
            this.insulating = this.$parent.sampleList[i].insulating
          }
          if(this.$parent.sampleList[i].sheath !== undefined && this.$parent.sampleList[i].sheath !== null){
            this.sheath = this.$parent.sampleList[i].sheath
          }
          break
        }
      }
    })
    let obj = this.$parent.addObj
    this.tree = obj.factory + ' - ' + obj.laboratory + ' - ' + obj.sampleType + ' - ' + obj.sample
    this.selectsStandardMethodByFLSSM2()
    this.productList = this.insulating.insProduct
    setTimeout(() => {
      this.productList.forEach(a => {
        if (a.state == 1) this.toggleSelection(a)
      })
    }, 200)
  },
  methods: {
    outConfig() {
      this.$parent.cableConfigShow = false
    },
    selectProduct(val) {
      this.productIds = []
      val.forEach(a => {
        this.productIds.push(a.id)
      })
    },
    upProductSelect(selection, row) {
      row.state = row.state == 1 ? 0 : 1
    },
    handleAll(e) {
      if (e.length > 0) {
        this.productList.map(m => {
          m.state = 1
          return m
        })
      } else {
        this.productList.map(m => {
          m.state = 0
          return m
        })
      }
      this.$nextTick(() => {
        this.$refs.productTable.doLayout()
      })
    },
    tableRowClassName({
      row,
      rowIndex
    }) {
      if (row.state === 0) {
        return 'warning-row';
      }
      return '';
    },
    selectable() {
      if (this.active > 1) {
        return false
      } else {
        return true
      }
    },
    selectsStandardMethodByFLSSM2() {
      this.standards = []
      this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, {
        tree: this.tree
      }).then(res => {
        this.standards = res.data.standardMethodList
      })
    },
    methodChange(val) {
      if (val === null || val === '') return
      let standard = this.standards.find(a => a.id === val)
      if(standard!=null && standard.code==='委托要求'){
        this.isAskOnlyRead = true
      }else{
        this.isAskOnlyRead = false
      }
      this.$axios.post(this.$api.standardTree.selectStandardProductList, {
        model: this.$parent.addObj.model,
        standardMethodListId: val,
        factory: this.tree + ' - '
      }, {
        headers: {
          'Content-Type': 'application/json'
        }
      }).then(res => {
        res.data.forEach(a => {
          a.state = 0
        })
        if(this.currentTab==='绝缘'){
          this.insulating.insProduct = res.data
        }else if(this.currentTab==='护套'){
          this.sheath.insProduct = res.data
        }
        this.productList = res.data
        setTimeout(() => {
          this.productList.forEach(a => {
            if (a.state == 1) this.toggleSelection(a)
          })
        }, 200)
      })
    },
    toggleSelection(row) {
      this.$refs.productTable.toggleRowSelection(row, true);
    },
    save(){
      if(this.insulating.insProduct.length === 0 && this.sheath.insProduct.length === 0){
        this.$message.error('缺少配置无法保存')
        return
      }
      if(this.insulating.insProduct.length !== 0){
        if(this.insulating.num === null || this.insulating.num === '' || this.insulating.num <= 0){
          this.$message.error('缺少芯数无法保存')
          return
        }
      }
      this.sample.forEach(a=>{
        a.insulating = this.insulating
        a.sheath = this.sheath
      })
      this.$message.success('已保存')
    },
    changeTab(val){
      if(val==='绝缘'){
        this.productList = this.insulating.insProduct
      }else if(val==='护套'){
        this.productList = this.sheath.insProduct
      }
      setTimeout(() => {
        this.productList.forEach(a => {
          if (a.state == 1) this.toggleSelection(a)
        })
      }, 200)
    }
  }
}
</script>
@@ -146,3 +291,21 @@
        padding: 20px;
    }
</style>
<style>
  .ins_order_config .has-gutter .el-table__cell .cell {
    line-height: 30px;
    background-color: #fafafa;
  }
  .ins_order_config .has-gutter .el-table__cell {
    background-color: #fafafa !important;
  }
  .ins_order_config .el-table__row .cell {
    font-size: 12px;
  }
  .ins_order_config .el-table .warning-row .cell {
    color: #bababa;
  }
</style>
src/components/view/a5-capacity-scope.vue
@@ -516,7 +516,7 @@
          if (power[i].menuMethod == 'selectTestObjectList') {
            select += 2
          }
          if (this.radio === '0') {
          if (radio === '0') {
            if (power[i].menuMethod == 'upItemParameter') {
              up = true
            }
@@ -526,7 +526,9 @@
            if (power[i].menuMethod == 'addItemParameter') {
              add = true
            }
            if (power[i].menuMethod == 'importData') {
              inPower = true
            }
          } else {
            if (power[i].menuMethod == 'upTestObject') {
              up = true
@@ -540,12 +542,9 @@
            if (power[i].menuMethod == 'selectProductListByObjectId') {
              product = true
            }
            if (power[i].menuMethod == 'importData') {
              inPower = true
            }
          }
        }
        if (this.radio === '0') {
        if (radio === '0') {
          if (!del) {
            this.itemParameterData.do.splice(1, 1)
          }
src/components/view/b2-standard.vue
@@ -147,9 +147,28 @@
    color: #bababa;
  }
  .el-table-filter__list {
  .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>
@@ -189,7 +208,8 @@
    <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" @click="handleMore" style="position: absolute;right: 0px;top: 1px;"
        <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>
      </el-row>
      <el-row class="standard_table" v-loading="tableLoad">
@@ -475,6 +495,20 @@
        <el-button type="primary" @click="sectionList.push({thing: ''})" 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"
          :auto-upload="false" accept=".xlsx" :limit="1" :on-change="beforeUpload" :on-success="onSuccess"
          :on-error="onError">
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
        </el-upload>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="uploadDia = false">取 消</el-button>
        <el-button type="primary" @click="submitUpload()" :loading="uploading">上 传</el-button>
      </span>
    </el-dialog>
  </div>
</template>
@@ -583,7 +617,12 @@
        pages: 1,
        inspectionItem: null,
        inspectionItemSubclass: null,
        sonLaboratory: null
        sonLaboratory: null,
        uploadDia: false,
        token: null,
        fileList: [],
        inExcelOfTreePower: false,
        uploading: false
      }
    },
    watch: {
@@ -620,6 +659,9 @@
      this.selectEnumByCategoryForSonLaboratory()
      this.getStandardTemplate()
      this.selectStandardMethods()
      this.token = {
        'token': sessionStorage.getItem('token')
      }
    },
    methods: {
      filterNode(value, data) {
@@ -885,6 +927,7 @@
        let delStandardProduct = false
        let addStandardProduct = false
        let delStandardTree = false
        let inExcelOfTreePower = false
        for (var i = 0; i < power.length; i++) {
          if (power[i].menuMethod == 'addStandardTree') {
            add = true
@@ -907,6 +950,9 @@
          if (power[i].menuMethod == 'delStandardTree') {
            delStandardTree = true
          }
          if (power[i].menuMethod == 'inExcelOfTree') {
            inExcelOfTreePower = true
          }
        }
        this.addPower = add
        this.addStandardMethod = addStandardMethod
@@ -915,6 +961,7 @@
        this.delStandardProduct = delStandardProduct
        this.addStandardProduct = addStandardProduct
        this.delStandardTree = delStandardTree
        this.inExcelOfTreePower = inExcelOfTreePower
      },
      upStandardProductList(value, index) {
        this.$axios.post(this.$api.standardTree.upStandardProductList, {
@@ -1406,7 +1453,38 @@
            }
          })
        })
      }
      },
      beforeUpload(file, fileList) {
        if (file.raw.type != 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
          this.$message.error('上传文件格式不正确');
          this.$refs.upload.clearFiles()
          return false;
        }
      },
      submitUpload() {
        if (this.$refs.upload.uploadFiles.length == 0) {
          this.$message.error('未选择文件')
          return
        }
        this.uploading = true
        this.$refs.upload.submit();
      },
      onSuccess(response, file, fileList) {
        this.$refs.upload.clearFiles()
        this.uploadDia = false
        this.uploading = false
        if (response.code == 201) {
          this.$message.error(response.message)
          return
        }
        this.$message.success('上传成功')
        this.refresh()
      },
      onError(err, file, fileList) {
        this.$message.error('上传失败')
        this.$refs.upload.clearFiles()
        this.uploading = false
      },
    }
  }
</script>
src/main.js
@@ -12,18 +12,23 @@
import swal from 'sweetalert'
// 项目切换
Vue.prototype.PROJECT = '检测中心' //项目名称:检测中心、装备电缆
Vue.prototype.PROJECT = '检测中心'
// Vue.prototype.PROJECT = '装备电缆'
//本地
Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80";
// const javaApi = 'http://192.168.144.200:8001';//李
// const javaApi = 'http://192.168.11.249:8001';//张
// const javaApi = 'http://192.168.11.2:8001';//柴
//  const javaApi = 'http://127.0.0.1:8001';//晏
const javaApi = 'http://114.132.189.42:1234';//测试服
//胜云服务器
// Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn";
// const javaApi = 'http://122.114.52.69:8001';
// const javaApi = 'http://10.1.200.86:8001';//正式服
const javaApi = 'http://127.0.0.1:8001';
//云
// Vue.prototype.LOCATIONVUE = "http://114.132.189.42:8080";
// const javaApi = 'http://114.132.189.42:1234';
//检测中心正式库
// Vue.prototype.LOCATIONVUE = "http://10.1.200.86:8080";
// const javaApi = 'http://10.1.200.86:8001';
//装备电缆测试库
// Vue.prototype.LOCATIONVUE = "http://10.16.173.59";
// const javaApi = 'http://10.16.173.59:8001';
Vue.prototype.HaveJson = (val) => {
    return JSON.parse(JSON.stringify(val))